c# - 表单应用程序未接收鼠标或键盘事件

标签 c# windows winforms .net-2.0

我有一个在客户端信息亭计算机 (Windows XP) 上运行的 C# .NET 2.0 应用程序,它偶尔会弹出一个窗口供用户输入。其他信息亭软件似乎以某种方式干扰它,因为在它运行时,我们的窗口将不会接收鼠标或键盘事件,尽管它是顶部窗口。当其他软件未运行时,一切都会按预期进行。有人对这里可能发生的事情有任何见解吗?

谢谢

最佳答案

如果有疑问 - 使用 Visual Studio 提供的 Spy++ 查看您的窗口从系统接收到的消息。

如果其他应用程序阻止所有输入,则它不符合 Win32 API。这就是 Vista 和更新的 Win 操作系统中引入低级 Hook 超时的原因。这意味着如果进程在调用 CallNextHookEx() 之前保持钩子(Hook)时间过长并且不再接收任何低级钩子(Hook)消息,则该进程将被踢出低级钩子(Hook)链。

在 Windows XP 上,没有这样的限制。进程可以花费尽可能多的时间来处理 Hook 消息。另一个程序要么有缺陷,要么是邪恶的。如果您的应用程序必须有输入,那么只需以编程方式关闭另一个应用程序或联系它的作者并解释情况即可。

关于c# - 表单应用程序未接收鼠标或键盘事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20257411/

相关文章:

c# - MVC @Html.Partial - 两种模型

c# - Winform 数据 GridView 。如何从设计器添加自定义列?

windows - 如何防止我的应用程序被臭名昭著的 GbPlugin 关闭?

php - 在 Windows 服务器上为 php 安装 ffmpeg 模块

c# - 如何使用 C# 在标签上显示更新时间作为系统时间?

c# - 使用 Linq 解析格式错误的 XML

c# - HtmlAgilityPack 有属性吗?

c# - DryIoc 用函数解析

c# - 如何按顺序检查字符串中的单词

windows - 如何在不实际调用 LoadLibrary 的情况下找到 DLL 的完整路径?