c – 反向工程全局热键块

c – 反向工程全局热键块,第1张

概述我正在尝试逆向工程(OllyDbg)一个应用程序(游戏),它禁用(捕获/拦截/阻止)所有全局热键,同时其窗口(D3D)处于活动状态(Ctrl-Alt-Del除外). 我的问题是,当它的窗口处于活动状态时,此类应用程序可以通过哪些方式捕获/禁用全局热键(包括其他应用程序中设置的winkey,CTRL Esc和全局热键)? 它似乎使用DirectInput(如果这很重要).我看到它没有设置任何低级挂钩 我正在尝试逆向工程(ollyDbg)一个应用程序(游戏),它禁用(捕获/拦截/阻止)所有全局热键,同时其窗口(D3D)处于活动状态(Ctrl-Alt-Del除外).

我的问题是,当它的窗口处于活动状态时,此类应用程序可以通过哪些方式捕获/禁用全局热键(包括其他应用程序中设置的winkey,CTRL Esc和全局热键)?

它似乎使用Directinput(如果这很重要).我看到它没有设置任何低级挂钩(SetWindowsHookEx).在其他方面可以做这样的事情吗?

观察结果:

>当应用程序暂停时(当窗口仍处于焦点时),当窗口处于焦点时,仍会禁用热键.将窗口切换为其他内容可启用它们.切换回挂起的应用程序窗口会再次禁用热键.
>如果做同样的事情但在窗口失去焦点后暂停应用程序,然后切换回暂停的窗口,热键完全正常工作.
>编辑:应用程序似乎阻止使用RegisterHotKey设置的全局热键,但不会禁用借助钩子(SetwindowsHookEx)创建的任何热键.

上面的实验似乎表明它是与窗口相关的一些设置,即使应用程序被暂停也能正常工作.它可能是某种Directinput设置吗? (我看到的唯一Dinput API函数调用是Dinput8.Directinput8Create.)

我这样做是希望改变这种行为,以便在游戏窗口集中时,使其他应用程序的热键照常工作.任何想法和提示赞赏.

解决方法 正如Hans Passant在评论中所建议的那样,由于使用IDirectinputDevice8 :: SetCooperativeLevel设置disCL_EXCLUSIVE标志,导致此行为的是Directinput. 总结

以上是内存溢出为你收集整理的c – 反向工程全局热键块全部内容,希望文章能够帮你解决c – 反向工程全局热键块所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1225853.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存