Detecting full-screen Direct3D applications

后端 未结 2 685
不思量自难忘°
不思量自难忘° 2021-02-10 14:04

Is there any way to detect - through the Direct3D API - Direct3D applications running in full-screen mode?

SHQueryUserNotificationState, which can indicate such applicat

2条回答
  •  醉话见心
    2021-02-10 14:55

    I found how to detect full-screen Direct3D and OpenGL (for example Minecraft) applications.

    Call IDirectDraw7::TestCooperativeLevel(). This function returns DDERR_EXCLUSIVEMODEALREADYSET if active full-screen Direct3D application is running or if user session is not active (Win+L, Alt+Ctrl+Del, Fast User Switching, etc).

    Note: Call DirectDrawCreateEx with DDCREATE_EMULATIONONLY. This dramatically reduces resources usage by IDirectDraw7.

    I have tested this method only in Windows 7 SP1 x64 with 1 display.


    BTW SHQueryUserNotificationState() returns QUNS_BUSY instead of QUNS_RUNNING_D3D_FULL_SCREEN for full-screen games. Strange...

提交回复
热议问题