Win32KeyboardDevice.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / Input / Win32KeyboardDevice.cs / 1 / Win32KeyboardDevice.cs

                            using System.Collections; 
using System.Windows;
using System.Security;
using System.Security.Permissions;
using MS.Internal; 
using MS.Internal.PresentationCore;                        // SecurityHelper
using System.Windows.Media; 
using MS.Win32; // VK translation. 

using System; 

using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
 
namespace System.Windows.Input
{ 
    ///  
    ///     The Win32KeyboardDevice class implements the platform specific
    ///     KeyboardDevice features for the Win32 platform 
    /// 
    internal sealed class Win32KeyboardDevice : KeyboardDevice
    {
        ///  
        ///
        ///  
        ///  
        /// 
        ///  
        ///     Critical: This code creates critical data(_tsfManager,_textcompositionManager) and stores critical data (inputManager)
        ///     TreatAsSafe: Although it creates critical data there are demand on the critical data and the constructor is safe
        /// 
        [SecurityCritical,SecurityTreatAsSafe] 
        internal Win32KeyboardDevice(InputManager inputManager)
            : base(inputManager) 
        { 
        }
 
        /// 
        ///     Gets the current state of the specified key from the device from the underlying system
        /// 
        ///  
        ///     Key to get the state of
        ///  
        ///  
        ///     The state of the specified key
        ///  
        /// 
        ///     Critical: Makes calls to UnsafeNativeMethods (GetKeyState)
        ///     TreatAsSafe: Only returns the current state of a specified key
        ///  
        [SecurityCritical, SecurityTreatAsSafe]
        protected override KeyStates GetKeyStatesFromSystem(Key key) 
        { 
            KeyStates keyStates = KeyStates.None;
 
            // Security Mitigation: do not give out input state if the device is not active.
            if(IsActive)
            {
                int virtualKeyCode = KeyInterop.VirtualKeyFromKey(key); 
                int nativeKeyState;
 
                nativeKeyState = UnsafeNativeMethods.GetKeyState(virtualKeyCode); 

                if( (nativeKeyState & 0x00008000) == 0x00008000 ) 
                    keyStates |= KeyStates.Down;

                if( (nativeKeyState & 0x00000001) == 0x00000001 )
                    keyStates |= KeyStates.Toggled; 
            }
 
            return keyStates; 
        }
    } 
}


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK