Erkennen von Vollbild-Direct3D-Anwendungen
-
10-07-2019 - |
Frage
Gibt es eine Möglichkeit zu erkennen - durch die Direct3D-API - Direct3D-Anwendungen im Vollbildmodus ausgeführt
SHQueryUserNotificationState , der < a href = "http://msdn.microsoft.com/en-us/library/bb762533%28VS.85%29.aspx" rel = "nofollow noreferrer"> solche Anwendungen anzeigen, wird nur auf Vista unterstützt und höher. Es ist auch nur funktioniert, wenn der Explorer-Shell ausgeführt wird.
Lösung
Ich fand, wie Vollbild-Direct3D und OpenGL zu erkennen (zB Minecraft) Anwendungen.
Rufen Sie IDirectDraw7 :: TestCooperativeLevel () . Diese Funktion gibt DDERR_EXCLUSIVEMODEALREADYSET
wenn aktiven Vollbild-Direct3D-Anwendung ausgeführt wird oder wenn Benutzersitzung nicht aktiv ist (Win + L, Alt + Strg + Entf, Fast User Switching, usw.).
Hinweis: Rufen Sie DirectDrawCreateEx
mit DDCREATE_EMULATIONONLY
. Dies reduziert Ressourcen-Nutzung durch IDirectDraw7.
ich diese Methode getestet habe nur in Windows 7 SP1 x64 mit 1 Display.
BTW SHQueryUserNotificationState()
Renditen für Vollbild-Spiele statt QUNS_BUSY
QUNS_RUNNING_D3D_FULL_SCREEN
. Seltsam ...
Andere Tipps
Versuchen 'IDirect3DDevice9 :: GetDisplayMode':
http://msdn.microsoft.com /en-us/library/bb174387%28VS.85%29.aspx
HRESULT GetDisplayMode(
UINT iSwapChain,
D3DDISPLAYMODE * pMode
);
Parameter:
iSwapChain [in]
An unsigned integer specifying the swap chain.
PMODE [out]
Pointer to a D3DDISPLAYMODE structure containing data about the
Anzeigemodus des Adapters. Wie in den Anzeigemodus der gegenüberliegenden Vorrichtung, die, wenn die nicht aktiv sein kann, Gerät nicht Vollbild-Modus besitzen.