繁体   English   中英

激活热键组合后如何正确模拟键盘事件

[英]how to properly simulate keyboard events once a hotkey combination is activated

我有一个注册用于激活的特定热键组合的程序。 就此问题而言,假设此热键为Ctrl + Alt +D。一旦按下组合键,我的程序便会使用SendInput将其他一些键盘事件模拟到活动窗口,例如,它可以模拟Ctrl +A。我的问题是Ctrl + A的模拟无法正常工作,因为(我认为)仍然从热键组合中按下了Ctrl键。 我想做的解决方案之一是为我的热键组合中的每个键发送Key Up事件,然后模拟Ctrl + A,但是我想检查这是否是正确的处理方法?

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

如果要使用类似Windows的消息,请学习使用Spy ++。 如果您不知道这是什么,请花一点时间来熟悉VS Tools菜单中提供的工具。

一个可能更简单,更有效和更可靠的解决方案通常是使用WM_GETTEXT和WM_SETTEXT消息。 并预见将来的问题,若要在另一个应用程序中按一个按钮,则向该按钮的父级发送BN_CLICKED通知。 您可以使用Spy ++获得更多有关消息问题的答案。

使用SendInput可能是最适合您的解决方案,但是没有足够的需求可以肯定地说。 我认为,SendInput应该是最后的选择,并且仅在其他可能性不可行时才使用。 请花一些时间阅读大量与该问题相关的文章和先前的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM