我正在尝试使用jna将密钥笔划发送到java中的外部应用程序。
它发送VK_DOWN键,该应用程序也有一个ctrl + down的快捷方式,这使得一些非常不同的东西。我的应用程序发送约15个向下键,中间为1秒,如果用户在处理不同窗口时碰巧点击 CTRL ,则会中断应用程序(将其视为 ctrl < / KBD> + 向下)。
我通过Spy ++检查了键盘消息,将其与AutoIt进行了比较,它们是完全相同的消息。
ControlSend("window_title", "", "", "{DOWN}")
这个AutoIt代码工作正常,即使我在窗口处于活动或非活动状态时单击ctrl,它也不会干扰向下键。 我的代码另一方面:
User32.INSTANCE.PostMessage(handle, WM_KEYDOWN, wparam, lparamDown);
User32.INSTANCE.PostMessage(handle, WM_KEYUP, wparam, lparamUp);
具有完全相同的消息,但它不起作用。
我尝试在发送密钥之前发送控制权,但无济于事。
间谍++输出:
<14335> 00011456 P WM_KEYDOWN nVirtKey:VK_DOWN cRepeat:1 ScanCode:50 fExtended:1 fAltDown:0 fRepeat:0 fUp:0
<14336> 00011456 P WM_KEYUP nVirtKey:VK_DOWN cRepeat:1 ScanCode:50 fExtended:1 fAltDown:0 fRepeat:1 fUp:1
我的ctrl点击甚至不在目标应用程序上,所以为什么它会这样对待?我应该使用挂钩吗?