directx – 检测全屏Direct3D应用程序

有没有办法检测 – 通过Direct3D API – 以全屏模式运行的Direct3D应用程序?

SHQueryUserNotificationState这样的应用程序只能在Vista及更高版本上支持SHQueryUserNotificationState.它也仅在Explorer shell运行时有效.

最佳答案 我发现了如何检测全屏Direct3D和OpenGL(例如Minecraft)应用程序.

调用IDirectDraw7::TestCooperativeLevel().如果活动的全屏Direct3D应用程序正在运行或用户会话未激活(Win L,Alt Ctrl Del,快速用户切换等),则此函数返回DDERR_EXCLUSIVEMODEALREADYSET.

注意:使用DDCREATE_EMULATIONONLY调用DirectDrawCreateEx.这大大减少了IDirectDraw7的资源使用.

我仅在Windows 7 SP1 x64中使用1显示测试了此方法.

对于全屏游戏,BTW SHQueryUserNotificationState()返回QUNS_BUSY而不是QUNS_RUNNING_D3D_FULL_SCREEN.奇怪…

点赞