我有一个在客户端信息亭计算机 (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/