Detecting full-screen Direct3D applications

后端 未结 2 1857
天涯浪人
天涯浪人 2021-02-10 14:17

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:59

    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...

提交回复
热议问题