发送击键到非前景窗口

本文关键字:窗口 | 更新日期: 2023-09-27 18:15:02

根据msdn上的这篇文章,可以设置一个特定的窗口作为前台窗口,然后发送击键给它…但是我需要将按键发送到后台的窗口,这样用户正在做的任何事情都可以不受干扰地继续下去。

发送击键到非前景窗口

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

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

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

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

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

我用快捷键来做这个。我有一个应用程序,有多个子窗口沿边。主窗口启用表单。KeyPreview属性,然后在该子窗口上注册适当的事件(KeyPress, KeyDown或KeyUp)。通过这种设置,主窗口可以处理来自子窗口的所有键。

我在Windows Mobile/CE上使用的技术是挂钩键盘,然后简单地使用PostMessage()将它们发送到目标窗口以正常处理。这种技术也应该适用于桌面。在Code Project中有几个连接键盘的例子- http://www.codeproject.com/KB/system/globalsystemhook.aspx。您的问题不清楚前台窗口是否是应用程序的一部分。如果是,难道你不从后台表单订阅一个前台表单键事件吗?