gpt4 book ai didi

c++ - 是否可以通过 Windows 键(可能没有钩子(Hook))捕获 Windows 开始菜单弹出窗口?

转载 作者:可可西里 更新时间:2023-11-01 10:08:40 25 4
gpt4 key购买 nike

我一直在研究输入事件系统。我映射了我自己键盘上的所有键、扫描码等,包括两个 Windows 键。当我按下它们时,程序成功地为它们接收了不同的按键事件,没有任何问题。然而,当我松开按键时,“开始”菜单会弹出,在 Windows 模式下隐藏程序,甚至在全屏模式下将其最小化。

所以我的问题在于抑制它。

Arma 2,一款军事模拟器/游戏,允许将命令毫无问题地映射到这些键上。

我必须在哪里 catch 那个事件?只要它有焦点,我可以为我自己的窗口做吗?只要它正在运行,我是否会被禁用的 win-key 卡住?还是别的?

谷歌搜索主要是没有结果,因为 Windows key 也指的是产品 key ,当我确实找到一些东西时,它通常会完全禁用整个按钮。我只想抑制弹出窗口。

编辑:我试过了

case WM_SYSCOMMAND:
switch(wParam)
{

case SC_TASKLIST:
return 0;

default:
break;
}

但这给了我非常奇怪的结果。如果我向 winkeys 发送垃圾邮件,并且只向 winkeys 发送垃圾邮件,它似乎有效,但当我这样做时移动鼠标,它没有,开始菜单会再次弹出。

编辑:我也尝试过 Hook ,但在 win7 上,如果回调花费太多时间,它们就会被删除,这可能在加载大量数据时发生,所以他们建议为它使用一个专用线程,但我认为这对于需要处理的一个键来说太过分了。

我只想知道开始菜单是从哪里调用的。我自己的程序?系统?这太他妈烦人了,我正在考虑尝试联系 Bohemia Interactive 的人,问问他们是怎么做到的。

只有这一个 key ,sheesh Microsoft...即使使用“Super key/superkey”搜索词,我通常也只能找到彻底的禁用方法,从注册表更改到第三方后台程序。

呸!

最佳答案

This artcile was relating to C# but may point you in the right direction;

来自 MSDN :

A global hook monitors messages for all threads in the same desktop as the calling thread. A thread-specific hook monitors messages for only an individual thread. A global hook procedure can be called in the context of any application in the same desktop as the calling thread, so the procedure must be in a separate DLL module. A thread-specific hook procedure is called only in the context of the associated thread.

This was the most helpful link in order to answer the question in the above article

关于c++ - 是否可以通过 Windows 键(可能没有钩子(Hook))捕获 Windows 开始菜单弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7123986/

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