3

アプリケーションRIGHT ALT +を送信しようとしていますC

私は次のようにしてみました:

PostMessage(hWindow, WM_KEYDOWN, (IntPtr)0x0043, (IntPtr)0x0012);
Delay(1000);
PostMessage(hWindow, WM_KEYUP, (IntPtr)0x0043, (IntPtr)0x0012);

PostMessage(hWindow, WM_KEYDOWN, (IntPtr)0x0043, (IntPtr)0x0001);
Delay(1000);
PostMessage(hWindow, WM_KEYUP, (IntPtr)0x0043, (IntPtr)0x0001);

しかし、それは正しくありません。どのように使用すればよいですか?

4

3 に答える 3

3

はい、PostMessage を使用して可能です。プログラム Spy++ を使用しました (Visual Studio 内にあるか、ダウンロードできますhttp://mdb-blog.blogspot.com/2010/11/microsoft-spy-or-spyxx-for-download.html ) notepad.exe を実行し、 Spy++ を作成し、関数 FindWindow を使用してこのメ​​モ帳を処理しました。次に、Spy->LogMessages を使用し、Tab Messages ですべてをクリアしてチェックボックスをキーボードのままにし、出力で Raw Message Parameters をチェックしました。

次に、メモ帳で alt+1 を押して、ウィンドウ メッセージの値を書き留めました。私は今、WM_KEYDOWN、WM_KEYUP、WM_SYSKEYUPなどを使用し、lParam、wParamの値を使用していることを知っています。

私の機能:

    public void PressKeyWithAlt(uint key, uint lParamDown, uint lParamUp)
    {
        PostMessage(hWindow, WM_KEYDOWN, VK_CONTROL, 0x001D0001);
        PostMessage(hWindow, WM_KEYDOWN, VK_MENU, 0x21380001);
        PostMessage(hWindow, WM_KEYDOWN, key, lParamDown);
        Delay(1000);
        PostMessage(hWindow, WM_KEYUP, key, lParamUp);
        PostMessage(hWindow, WM_SYSKEYUP, VK_CONTROL, 0xE01D0001);
        PostMessage(hWindow, WM_KEYUP, VK_MENU, 0xC1380001);
    }

たとえば、alt+1 の場合

PressKeyWithAlt(VK_1, 0x20020001, 0xE0020001);

助けてくれてありがとう。

于 2012-07-11T18:26:21.050 に答える
2

代わりに、 WM_SYSKEYDOWNおよびWM_SYSKEYUPメッセージを送信してみてください。これらは、F10 または ALT + 何かキーを押して離したときに生成されます。

于 2012-07-08T17:56:53.367 に答える
0

のように、それらをインターリーブします。

alt down
c down
delay
c up
alt up
于 2012-07-08T16:19:46.363 に答える