发送键盘到非前景窗口

问题描述:

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

+0

这在Windows中不可行。 –

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

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

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

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

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

+0

我需要程序在后台接收keyevents,就好像它被聚焦并且用户按下了键盘上的一个键。 – Entity

我用快捷键做到这一点。我有一个应用程序,它有多个子窗口。主窗口启用子窗口的Form.KeyPreview属性,然后在该子窗口上注册适当的事件(KeyPress,KeyDown或KeyUp)。使用此设置,主窗口可以处理子窗口中的所有密钥。

我在Windows Mobile/CE上使用的技术是钩住键盘,然后只需使用PostMessage()将它们发送到目标窗口即可正常处理。这种技术也应该在桌面上运行。代码项目中有几个钩住键盘的例子 - http://www.codeproject.com/KB/system/globalsystemhook.aspx。你的问题不清楚前台窗口是否是你的应用程序的一部分。如果是这样,是不是只需从背景表单订阅前景表单键事件之一?