提问人:Cesar 提问时间:6/13/2022 最后编辑:Jeremy FriesnerCesar 更新时间:6/14/2022 访问量:331
禁止窗口调用 SetForegroundWindow
Disable window from calling SetForegroundWindow
问:
我的工作机器上有一个严重的问题,派对软件窗口窃取了键盘焦点,使用监视工具,我检测到每当窗口窃取焦点时,它都会首先调用 SetForegroundWindow。third
winapi
在搜索时,我找到了LockSetForegroundWindow,哇,我以为我已经解决了这个问题,但是,阻止我激活任何其他窗口。winapi
LockSetForegroundWindow
我还发现可以使用 “阻止 ”窗口调用,但我对挂钩一无所知,想问一下我是否可以尝试其他方法。SetForegroundWindow
hook
答:
1赞
xMRi
6/13/2022
#1
通常打电话还不错。从 Windows XP 开始,有一个锁,即没有允许这样做的程序不会这样做。阅读文档:https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setforegroundwindowSetForegroundWindow()
以下是例外情况:
- 该过程是前台过程。
- 该进程由前台进程启动。
- 进程接收到最后一个输入事件。
- 没有前台进程。
- 正在调试进程。
- 前台进程不是新式应用程序或“开始”屏幕。
- 前台未锁定(请参阅 LockSetForegroundWindow)。
- 前台锁定超时已过期(请参阅 SystemParametersInfo 中的SPI_GETFOREGROUNDLOCKTIMEOUT)。
- 没有菜单处于活动状态。
但是当第三方工具使用 时,它会绕过所有这些检查。AttachThreadInput()
只需删除此“坏”软件即可。请与开发人员联系。
评论
0赞
IInspectable
6/13/2022
例外清单是错误的,而且已经持续了十多年。调用不再允许非前台进程从前台线程窃取前台激活权限,从某些版本的 Windows 10(我猜是 19 岁左右?AttachThreadInput
0赞
IInspectable
6/13/2022
此外,这从来都不是安全问题。安全性通过 UIPI(和访问控制)进行处理。
0赞
xMRi
6/13/2022
该列表取自当前文档。是的,这不是安全问题,我更改了文本。
0赞
xMRi
6/13/2022
据我所知(也在我的代码中)。AttachThreadInput 到当前窗口,即地面窗口,而不是使用 SetForegroundWindow 仍然有效。
0赞
IInspectable
6/13/2022
是的,“当前文档”是错误的,而且已经存在了很长时间。
评论
SetForegroundWindow()