2013-02-26 90 views
4

問題: 調用一個鍵盤按鍵被按下,由一塊的C#代碼 但這裏的捕獲:將按鍵不應該被限定於過程/應用 而是通過整個操作系統接收,從而還當該程序是在後臺和不同的形式/程序具有焦點如何以編程方式按鍵盤鍵?

目標: 使該鎖定的狀態的CapsLock的程序和數字鎖定

背景: 我有一臺筆記本電腦,而這2個鍵阻撓我去了,我要讓在後臺運行的應用程序,並且,一旦它被意外啓用禁用的CapsLock,並的NumLock永遠不會被禁用,另外,我想擴展我對編碼的知識,我試圖找到解決方案,但是他們都沒有解決(整個)問題。

回答

1
using System; 
using System.Runtime.InteropServices; 

public class CapsLockControl 
{ 

    public const byte VK_NUMLOCK = 0x90; 
    public const byte VK_CAPSLOCK = 0x14; 

    [DllImport("user32.dll")] 
     static extern void keybd_event(byte bVk, byte bScan, uint dwFlags,UIntPtr dwExtraInfo); 
    const int KEYEVENTF_EXTENDEDKEY = 0x1; 
    const int KEYEVENTF_KEYUP = 0x2; 

    public static void Main() 
    { 
     if (Control.IsKeyLocked(Keys.CapsLock)) 
     { 
      Console.WriteLine("Caps Lock key is ON. We'll turn it off"); 
      keybd_event(CapsLockControl.VK_CAPSLOCK, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr) 0); 
      keybd_event(CapsLockControl.VK_CAPSLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 
       (UIntPtr) 0); 
     } 
     else 
     { 
      Console.WriteLine("Caps Lock key is OFF"); 
     } 
    } 
} 
0

您必須使用user32.dll鉤住鍵盤。 這CodeProject上sample應該讓你開始

0

您可以嘗試模擬鍵盤和鼠標點擊一個CodePlex項目。

其稱爲Windows輸入模擬器,它可以發現Here

相關問題