gpt4 book ai didi

c# - Windows 8 中的某些窗口阻止我的低级键盘 Hook 工作

转载 作者:太空宇宙 更新时间:2023-11-03 15:47:49 25 4
gpt4 key购买 nike

我有一个应用程序使用低级键盘钩子(Hook)来捕获用户在全局级别选择的键盘快捷键以激活应用程序的主窗口。因为有时我想允许使用“奇怪”的快捷方式,例如 F12 或 Ctrl+Ctrl(双击),所以我使用 Hook 而不是 RegisterHotkey API 函数。在 Windows 8 之前,此功能非常有效。在 Windows 8 中,某些窗口会阻止我的应用程序接收事件,但仅限于这些窗口位于前台时。 Windows 8 任务管理器就是其中之一。

请注意,因为问题只发生在有问题的窗口在前台时,我知道我的钩子(Hook)仍在系统中注册,只是暂时没有到达我的应用程序。

当前代码库是C# Framework 4.0;但是,我测试了以前的代码库,它是非托管 C++,问题是一样的。

Windows 版本为 8.1 Pro,带有 Media Center

我还没有尝试过的一件事是将 Hook 过程移到一个单独的 DLL 中。我想我读到低级键盘 Hook 程序必须在 DLL 中,但我从未发现这是真的。在我开始尝试之前,我想问问我是否遗漏了一些更简单、更明显的东西。

最佳答案

现在我明白了。尽管我的应用程序在 Administrators 组中的 Windows 帐户下运行,但它需要以“以管理员身份运行”启动,以避免被 UIPI 阻止。 .

解决方案,至少对我来说,是要求 Windows 8 最终用户以管理员身份启动我的应用程序,如果他/她想使用像我在问题中提到的那样的“奇特”全局键盘快捷键。 (我还允许用户使用“简单”快捷方式,这些快捷方式是通过 RegisterHotkey() 而不是 WH_KEYBOARD_LL 实现的,因此不会受到 UIPI 的影响。)

关于c# - Windows 8 中的某些窗口阻止我的低级键盘 Hook 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27335011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com