4

Direct3D API を使用して、フルスクリーン モードで実行されている Direct3D アプリケーションを検出する方法はありますか?

このようなアプリケーションを示すことができるSHQueryUserNotificationStateは、 Vista 以降でのみサポートされます。また、Explorer シェルが実行されている場合にのみ機能します。

4

2 に答える 2

2

フルスクリーンの Direct3D および OpenGL (Minecraft など) アプリケーションを検出する方法を見つけました。

IDirectDraw7::TestCooperativeLevel() を呼び出します。この関数はDDERR_EXCLUSIVEMODEALREADYSET、アクティブなフルスクリーン Direct3D アプリケーションが実行されている場合、またはユーザー セッションがアクティブでない場合 (Win+L、Alt+Ctrl+Del、ユーザーの簡易切り替えなど) に戻ります。

注:DirectDrawCreateExで呼び出しDDCREATE_EMULATIONONLYます。これにより、IDirectDraw7 によるリソースの使用量が大幅に削減されます。

この方法は、1 ディスプレイの Windows 7 SP1 x64 でのみテストしました。


ところで、フルスクリーン ゲームの代わりにSHQueryUserNotificationState()戻ります。変...QUNS_BUSYQUNS_RUNNING_D3D_FULL_SCREEN

于 2013-08-03T19:23:04.720 に答える
0

「IDirect3DDevice9::GetDisplayMode」を試してください:

http://msdn.microsoft.com/en-us/library/bb174387%28VS.85%29.aspx

HRESULT GetDisplayMode(
  UINT  iSwapChain,
  D3DDISPLAYMODE * pMode
);

パラメーター:

iスワップチェーン[に]

An unsigned integer specifying the swap chain. 

pMode[out]

Pointer to a D3DDISPLAYMODE structure containing data about the

アダプターの表示モード。デバイスが全画面表示モードを所有していない場合はアクティブにならない可能性がある、デバイスの表示モードとは対照的です。

于 2009-08-03T12:45:21.147 に答える