是的,可以使用 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);
谢谢大家的帮助。