对于SetForegroundWindow,记录的条件是否准确?

时间:2013-11-18 20:33:00

标签: winapi

请参阅the MSDN documentation for SetForegroundWindow

Windows故意拒绝许多将特定窗口设置为前台的请求,其目标是:

  

当用户使用另一个窗口时,应用程序无法强制窗口进入前台。

SetForegroundWindow成功的条件记录为:

  

系统限制哪些进程可以设置前景窗口。仅当满足下列条件之一时,进程才能设置前台窗口:

     
      
  • 该过程是前台过程。
  •   
  • 该过程由前台进程启动。
  •   
  • 该过程收到了最后一个输入事件。
  •   
  • 没有前台进程。
  •   
  • 正在调试该过程。
  •   
  • 前台进程不是现代应用程序或开始屏幕。
  •   
  • 前景未锁定(请参阅LockSetForegroundWindow)。
  •   
  • 前台锁定超时已过期(请参阅SPI_GETFOREGROUNDLOCKTIMEOUT中的SystemParametersInfo)。
  •   
  • 没有菜单处于活动状态。
  •   

此文档听起来不正确。我认为它起初是一个较短的清单,其中只有一个条件需要满足。但实际行为更复杂。

任何人都可以确认实际行为吗?是吗:

  

只有在以下所有操作都成立时,进程才能设置前台窗口:

     
      
  • 满足以下一个或多个条件:   
        
    • 该过程是前台过程。
    •   
    • 该过程由前台进程启动。
    •   
    • 在前台流程
    • AllowSetForegroundWindow调用中确定了该流程   
    • 该过程收到了最后一个输入事件。
    •   
    • 没有前台进程。
    •   
    • 正在调试该过程。
    •   
  •   
  • 前台进程不是现代应用程序或开始屏幕。
  •   
  • 以下两个条件之一是真的:   
        
    • 前景未锁定(请参阅LockSetForegroundWindow)。
    •   
    • 前台锁定超时已过期(请参阅SPI_GETFOREGROUNDLOCKTIMEOUT中的SystemParametersInfo)。
    •   
  •   
  • 没有菜单处于活动状态。
  •   

如果其他专家同意此处的文档存在错误,我将提交有关Connect引用此问题的错误报告。

0 个答案:

没有答案