使用PostMessage向右发送ALT + C.

我试图在我的应用程序中发送正确的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); 

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

交错他们,就像

 alt down c down delay c up alt up 

是的,可以使用PostMessage。 我使用程序Spy ++(它在Visual Studio中,或者你可以下载它http://mdb-blog.blogspot.com/2010/11/microsoft-spy-or-spyxx-for-download.html )我破坏了notepad.exe和间谍++,并使用函数FindWindow来处理这个记事本。 然后我使用Spy-> LogMessages,在Tab消息中我清除所有并保持复选框键盘并在输出中我检查了原始消息参数。

然后在记事本中我按了alt + 1,我注意到了Window Messages中的值。 我现在知道,使用WM_KEYDOWN,WM_KEYUP,WM_SYSKEYUP等,并且值为lParam,wParam。

我的function:

  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); 

谢谢你的帮助。

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