一旦激活热键组合,如何正确模拟键盘事件



我有一个程序,可以注册某些热键组合以进行激活。出于这个问题的目的,假设此热键是Ctrl Alt D.组合一旦按下组合,我的程序将使用SendInput模拟其他键盘事件,例如,它可以模拟Ctrl A。我的问题是,CTRL A的仿真无法正常工作,因为(我认为)CTRL键仍来自Hotkey组合。我想做的解决方案之一是为我的热键组合中的每个密钥发送密钥事件,然后模拟CTRL A,但是我想检查这是否是处理它的正确方法?

首先,要经常询问如何发送键盘消息的问题。我认为您没有花很多时间寻找以前的答案。其次,了解初学者经常会错误地认为发送键盘消息是最简单,最有效的解决方案。事实是,它通常不是最简单的,也不是最有效的,也不是最可靠的。

如果您要处理这样的Windows消息,请学习使用SPY 。如果您不知道那是什么,请通过熟悉VS工具菜单中可用的工具来投入一分钟。

可能更容易,更有效和可靠的解决方案通常是使用WM_GetText和WM_SetText消息。并预计将来的问题,以按下另一个应用程序中的按钮向按钮的 parent 发送了一个BN_CLICKECTICCENIFFICATION。您可以使用间谍 获得有关消息问题的更多答案。

使用sendInput可能是您的最佳解决方案,但是您的要求肯定不足。我认为,SendInput应该是最后的手段,并且仅在其他可能性不可能的情况下才使用。请花一些时间阅读与问题相关的众多文章和以前的答案。

最新更新