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,在选项卡消息中我清除了所有并保持复选框键盘,在输出中我检查了原始消息参数。

然后在记事本中按下 alt+1 并记下 Window Messages 中的值。我现在知道,在哪里使用 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_SYSKEYDOWNWM_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 回答