2016-12-23 6 views
-3

の作業を知りたい:MSDNのWebサイトからキーボードのLEDをオン/オフするためのC#コードがあります。私は、これは私が精通したいコードのコード

public partial class Form1 : Form 
{ 

    [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; 
    const int CAPSLOCK = 0x14; 
    const int NUMLOCK = 0x90; 
    const int SCROLLLOCK = 0x91; 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     keybd_event(CAPSLOCK, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0); 
     keybd_event(CAPSLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, (UIntPtr)0); 
    } 
} 
+0

このコードには何も分かりません。これは、[keybd_event](http://www.pinvoke.net/default.aspx/user32.keybd_event)を呼び出して、capslockキーイベントをシミュレートします。 – Pikoh

+0

あなたが意味することはかなり不明です。あなたの問題はどこでコードを正確に理解していますか?あなたは 'const'が何であるか知っていますか?あなたはexternを知らないのですか? ... – HimBromBeere

+0

私はこの機能がどのように機能しているのか知りません。私は0x1、0x2などの値を意味します。UIntPtrの目的は何ですか?ゲートが働いている。 –

答えて

0

keybd_event関数は、キーストロークを合成します。システムは、そのような を合成キーストロークを使用してWM_KEYUPまたはWM_KEYDOWNメッセージを生成することができる。 キーボードドライバの割り込みハンドラは、keybd_event 関数を呼び出します。

  1. bVk - 仮想キーコード。コードは、1〜 254の範囲の値でなければなりません。
  2. bScan - キーのハードウェアスキャンコード。
  3. dwFlags - 関数の操作のさまざまな側面を制御します。

あなたはこの機能について知る必要があるすべてがここにある:https://msdn.microsoft.com/pl-pl/library/windows/desktop/ms646304(v=vs.85).aspx

あなたはおそらく、あなたのKEYEVENTF_EXTENDEDKEYKEYEVENTF_KEYUPがフラグであることがわかります。 flag1 | flag2 | flag3を使用すると、複数のフラグを渡すことができます。

はまた、おそらく最も重要な部分はこれです:

(注)この機能は廃止されました。代わりにSendInputを使用してください。

関連する問題