0

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

4

1 回答 1

1

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

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

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

使用 SendInput 可能是您的最佳解决方案,但您的要求还不足以确定。在我看来,SendInput 应该是最后的手段,只有在其他可能性不可行时才使用。请花一些时间阅读与该问题相关的众多文章和以前的答案。

于 2012-11-06T00:58:50.633 回答