الكشف عن تطبيقات Direct3D ملء الشاشة
-
10-07-2019 - |
سؤال
هل هناك أي طريقة للكشف - من خلال API Direct3D - تطبيقات Direct3D تشغيل في وضع ملء الشاشة
SHQueryUserNotificationState ، والتي يمكن < يتم اعتماد أ href = "http://msdn.microsoft.com/en-us/library/bb762533٪28VS.85٪29.aspx" يختلط = "نوفولو noreferrer"> تشير مثل هذه التطبيقات، فقط على ويندوز فيستا و اعلى. كما أنها تعمل فقط عندما يتم تشغيل مستكشف قذيفة.
المحلول
ولقد وجدت طريقة للكشف عن كامل الشاشة Direct3D و برنامج OpenGL (على سبيل المثال ماين كرافت) التطبيقات.
IDirectDraw7 :: TestCooperativeLevel () . هذه الدالة تقوم بإرجاع DDERR_EXCLUSIVEMODEALREADYSET
إذا كان التطبيق نشطة ملء الشاشة Direct3D قيد التشغيل أو إذا جلسة عمل المستخدم غير نشطة (وين + L، مفاتيح Alt + Ctrl + ديل، التبديل السريع بين المستخدمين، الخ).
ملحوظة: دعوة DirectDrawCreateEx
مع DDCREATE_EMULATIONONLY
. هذا يقلل بشكل كبير من استخدام الموارد التي IDirectDraw7.
ولقد اختبرت هذه الطريقة فقط في ويندوز 7 SP1 إلى x64 مع 1 العرض.
وراجع للشغل SHQueryUserNotificationState()
عوائد QUNS_BUSY
بدلا من QUNS_RUNNING_D3D_FULL_SCREEN
للألعاب ملء الشاشة. غريب ...
نصائح أخرى
وحاول "IDirect3DDevice9 :: GetDisplayMode ':
http://msdn.microsoft.com /en-us/library/bb174387٪28VS.85٪29.aspx
HRESULT GetDisplayMode(
UINT iSwapChain,
D3DDISPLAYMODE * pMode
);
<اقتباس فقرة>
والمعلمات:
وiSwapChain [في]
اقتباس فقرة>An unsigned integer specifying the swap chain.
<اقتباس فقرة>
وpMode [من]
اقتباس فقرة>Pointer to a D3DDISPLAYMODE structure containing data about the
<اقتباس فقرة>
ووضع العرض لمحول. مثل بدلا من وضع العرض لل الجهاز، والتي قد لا تكون نشطة إذا كان الجهاز لا تملك وضع ملء الشاشة.
اقتباس فقرة>