我想了解进程在什么条件下可以使用 Win32 函数设置前台窗口SetForegroundWindow。我尝试阅读它的文档,它在“备注”下说:
仅当满足以下条件之一时,进程才能设置前台窗口:
- 该进程是前台进程。
- 该进程是由前台进程启动的。
- 该进程接收到最后一个输入事件。
- 没有前台进程。
- 进程正在调试中。
- 前台进程不是现代应用程序或开始屏幕。
- 前景未锁定(请参阅
LockSetForegroundWindow)。- 前台锁定超时已过期(请参见
SPI_GETFOREGROUNDLOCKTIMEOUT)SystemParametersInfo。- 没有菜单处于活动状态。
在我看来,这不可能准确,因为这意味着所有这些项目符号都必须为假才能限制设置前景窗口,但最后四个似乎通常是正确的(取决于您对“现代”应用程序的使用) )。正如所写的,设置前景窗口几乎永远不会受到限制。然而从实验来看,在另一个进程的窗口中激活菜单似乎足以阻止设置前台窗口,即使例如前台进程不是现代应用程序(条件 6 为真)。
当进程可以根据列出的条件设置前台窗口时,更准确的表达方式是什么?
winapi ×1