gpt4 book ai didi

c# - WM_KEYDOWN : how to use it?

转载 作者:太空狗 更新时间:2023-10-29 19:42:50 24 4
gpt4 key购买 nike

我正在尝试通过 PostMessage 向一个应用程序发送击键。我正在使用 Spy++ 来尝试了解如何发送消息,因为我不完全了解其内部工作原理。

alt text

在这张图片中,第一个项目(选中的项目)是用我自己实际击键制作的。周围有红色椭圆的那个(下图)是用以下代码制作的:

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关于键盘状态/异步状态:

The SendInput function does not resetthe keyboard's current state.Therefore, if the user has any keyspressed when you call this function,they might interfere with the eventsthat this function generates. If youare concerned about possibleinterference, check the keyboard'sstate with the GetAsyncKeyStatefunction and correct as necessary.


WM_KEYDOWN Notification 的 lParam根据字段的位指定:

  • 前16位为重复次数
  • 接下来的8位是扫描码
  • 下一位为 1 为扩展 key ,否则为 0
  • 后4位保留,必须为0
  • 下一位始终为 0(对于 WM_KEYDOWN)
  • 下一位是之前的按键状态
  • 最后一位始终为 0(对于 WM_KEYDOWN)

警告:您基于 PostMessage 构建的任何解决方案都将非常脆弱。

关于c# - WM_KEYDOWN : how to use it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1169732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com