有没有办法通过Direct3D应用程序接口检测在全屏模式下运行的Direct3D应用程序?
可以indicate这类应用程序的SHQueryUserNotificationState只在Vista或更高版本上受支持。它也只有在Explorer shell运行时才起作用。
发布于 2013-08-04 03:23:05
我发现了如何检测全屏Direct3D和OpenGL (例如“我的世界”)应用程序。
给IDirectDraw7::TestCooperativeLevel()打电话。如果活动的全屏Direct3D应用程序正在运行或用户会话不活动(Win+L、Alt+Ctrl+Del、快速用户切换等),此函数将返回DDERR_EXCLUSIVEMODEALREADYSET。
注意:使用DDCREATE_EMULATIONONLY调用DirectDrawCreateEx。这极大地减少了IDirectDraw7使用的资源。
我只在一个显示屏的Windows7 SP1 x64中测试过这种方法。
顺便说一句,对于全屏游戏,SHQueryUserNotificationState()返回QUNS_BUSY而不是QUNS_RUNNING_D3D_FULL_SCREEN。奇怪的是。
发布于 2009-08-03 12:45:21
尝试'IDirect3DDevice9::GetDisplayMode':
http://msdn.microsoft.com/en-us/library/bb174387%28VS.85%29.aspx
HRESULT GetDisplayMode(
UINT iSwapChain,
D3DDISPLAYMODE * pMode
);参数:
iSwapChainin
An unsigned integer specifying the swap chain. pModeout
Pointer to a D3DDISPLAYMODE structure containing data about the适配器的
显示模式。与该设备的显示模式相反,如果该设备不具有全屏模式,则该模式可能不是活动的。
https://stackoverflow.com/questions/1219454
复制相似问题