将键击发送到非前景窗口

时间:2011-11-18 16:31:31

标签: c# .net keypress simulate

根据msdn上的this article,可以将特定窗口设置为前景窗口,然后向其发送击键...但是我需要将击键发送到窗口在后台,这样无论用户做什么都可以继续不间断。

4 个答案:

答案 0 :(得分:0)

也许你应该抓住前景窗口中的击键并将它们传递给后台窗口(委托)。或者,如果它们有点复杂,您可以使用全局热键。无论如何,将密钥从前景形式传递到背景形式应该是更好的解决方案。

我发现了一个很好的例子,它不是关于热键的,但这个概念也适用于你的情况。

http://www.codeproject.com/KB/cs/pass_data_between_forms.aspx

答案 1 :(得分:0)

所以基本上是按键听众? Java有一个机器人类,可以监听击键并对其进行操作(例如,我输入“Hello World”,类会自动将其写入文件或其他窗口)。

我过去曾创造过类似的东西。您可以创建一个java程序,在后台运行一个常量while循环,只需监听击键。设置程序将每个击键写入文件或特定位置。因为这是一个短暂的循环并且仅在按下某个键时作出反应,所以它几乎不占用处理能力并且不会影响前台程序的性能。

答案 2 :(得分:0)

我使用快捷键执行此操作。我有一个应用程序,侧面有多个子窗口。主窗口启用子窗口的Form.KeyPreview属性,然后在该子窗口上注册相应的事件(KeyPress,KeyDown或KeyUp)。通过此设置,主窗口可以处理子窗口中的所有键。

答案 3 :(得分:0)

我在Windows Mobile / CE上使用的技术是挂钩键盘,然后只需使用PostMessage()将它们发送到目标窗口即可正常处理。这种技术也适用于桌面。关于挂钩键盘的代码项目有几个例子 - http://www.codeproject.com/KB/system/globalsystemhook.aspx。如果前景窗口是您的应用程序的一部分,您的问题不明确。如果是,您是不是只是从背景表单订阅了一个前景形式的键事件?

相关问题