我正在尝试通过 PostMessage 向一个应用程序发送击键。我也在使用 Spy++ 来尝试了解如何发送消息,因为我不完全了解其内部工作原理。
在这张图片中,第一个项目(选定项目)是用我自己的实际击键制作的。周围有一个红色椭圆的那个(下面)是用以下代码制作的:
WinApi.PostMessage(InsideLobbyHandle, WinApi.WM_KEYDOWN, (int)WinApi.VK_UP, 1);
我想它一定与最后一个 PostMessage() 参数有关,但我无法弄清楚它是如何工作的。我可以在原始击键中看到 ScanCode = 48,在我的为 0,fExtended 为 1,在我的为 0。我怎样才能让它看起来一样?
在 http://msdn.microsoft.com/en-us/library/ms646280(VS.85).aspx 中,我无法理解最后一个参数的工作原理。
最佳答案
使用 SendInput 模拟键盘输入,而不是 PostMessage。
你不能 simulate keyboard input with PostMessage 。
关于键盘状态/异步状态还有 some caveats :
WM_KEYDOWN Notification 的 lParam 是根据字段的位指定的:
警告:您基于 PostMessage 构建的任何解决方案都将非常脆弱。
关于c# - WM_KEYDOWN : how to use it?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1169732/