【发布时间】:2016-10-15 13:26:17
【问题描述】:
Windows 是否提供某种机制来检测以全屏模式运行的应用(例如游戏、媒体播放器等)何时退出全屏模式,返回到窗口模式或退出其进程?
【问题讨论】:
Windows 是否提供某种机制来检测以全屏模式运行的应用(例如游戏、媒体播放器等)何时退出全屏模式,返回到窗口模式或退出其进程?
【问题讨论】:
就操作系统而言,没有“全屏模式”或“窗口模式”之类的东西。窗口只是具有尺寸,可能恰好与屏幕尺寸相同或不同。拥有窗口的应用程序控制该行为,而不是操作系统,因此只有应用程序知道它何时以“全屏”或“窗口”模式显示窗口。
话虽如此,当更改模式时,应用程序可以选择使用CDS_FULLSCREEN 或CDS_RESET 标志调用ChangeDisplaySettings/Ex()。这将向所有顶级窗口发送WM_DISPLAYCHANGE 通知,但不会告诉他们是否正在显示全屏窗口。
关于检测进程终止,WMI 有一个事件。见Receiving Event Notifications Through WMI。
【讨论】:
一种简单的方法,我决定采用的方法是在创建的进程上使用RegisterWaitForSingleObject,如下所述:https://stackoverflow.com/a/22418949/1019385
我发现它比 WMI 解决方案更平易近人。
【讨论】: