使用PostMessage向右发送ALT + C.

时间:2012-07-08 16:17:05

标签: c# postmessage alt

我尝试发送我的申请 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);

但它没有正确。我该怎么用呢?

3 个答案:

答案 0 :(得分:2)

交错他们,就像

一样
alt down
c down
delay
c up
alt up

答案 1 :(得分:2)

尝试发送WM_SYSKEYDOWNWM_SYSKEYUP消息。当按下并释放F10或ALT + some键时会生成它们。

答案 2 :(得分:2)

是的,可以使用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,我注意到了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);

感谢您的帮助。