1

我需要编写应用程序 A,它将WM_ACTIVATE消息拦截到应用程序 B 的窗口,以防止 B 成为最顶层的应用程序。

是否可以在没有DLL 注入的情况下执行此操作(在该消息上添加一个挂钩,通过一系列 WinAPI 调用处理并“中和”它)?

4

1 回答 1

2

我想这就是你所追求的:

LockSetForegroundWindow

http://msdn.microsoft.com/en-us/library/windows/desktop/ms633532(v=vs.85).aspx

备注 如果用户按下 ALT 键或采取一些导致系统本身更改前景窗口的操作(例如,单击背景窗口),系统会自动启用对 SetForegroundWindow 的调用。提供此功能是为了让应用程序可以防止其他应用程序进行可能中断其与用户交互的前台更改。

只是不要忘记解锁:)

编辑:

按照此处所述尝试 SetWinEventHook:

活动窗口上的 Windows 系统事件是否已更改?

然后,当不需要的窗口出现在前面时,您可以将其发送到后台。

于 2013-05-17T08:30:44.570 回答