سؤال

لدينا تطبيق يحتاج إلى استخدام Direct3D.وعلى وجه التحديد، فإنه يحتاج على الأقل إلى الإصدار 4.09.0000.0904 من DirectX 9.0c.على الرغم من أن هذا يجب أن يكون موجودًا على جميع أجهزة XP الأحدث، إلا أنه قد لا يتم تثبيته على أجهزة XP الأقدم.كيف يمكنني برمجياً (باستخدام C++) تحديد ما إذا كان مثبتًا؟أريد أن أكون قادرًا على تقديم رسالة معلومات للمستخدم مفادها أن Direct3D لن يكون متاحًا.

هل كانت مفيدة؟

المحلول

استدعاء DirectXSetupGetVersion: http://msdn.microsoft.com/en-us/library/microsoft.directx_sdk.directsetup.directxsetupgetversion

ستحتاج إلى تضمين dsetup.h

إليك نموذج التعليمات البرمجية من الموقع:

DWORD dwVersion;
DWORD dwRevision;
if (DirectXSetupGetVersion(&dwVersion, &dwRevision))
{
    printf("DirectX version is %d.%d.%d.%d\n",
           HIWORD(dwVersion), LOWORD(dwVersion),
           HIWORD(dwRevision), LOWORD(dwRevision));
}

نصائح أخرى

وفقًا لوثائق DirectX 9.0 SDK (صيف 2004)، راجع نموذج GetDXVer SDK على \Samples\Multimedia\DXMisc\GetDXVer.

يظهر بحث سريع على Google هذا المقال الذي يحدد موقع رقم الإصدار في السجل ثم يقدم بيان حالة يقوم بتعيين رقم الإصدار الداخلي إلى رقم الإصدار الذي نعرفه أكثر.

يظهر بحث سريع آخر على Google مثالاً في لغة C++ لـ القراءة من التسجيل.

يتمتع...

نعم، استخدم الآلية الموضحة في نموذج تثبيت DirectX في DirectX SDK لشهر مارس 2009.(انظر ضمن فئة "النظام" في نموذج المتصفح.)

لا تستخدم التسجيل!هذه الأشياء غير موثقة وغير مضمونة للعمل.

الطريقة الوحيدة المدعومة هي استخدام DirectSetup API، الذي يظهر في نموذج تثبيت DirectX.لقد قمت أيضًا بتغطية هذه الأشياء في الفصل 24.التثبيت والإعداد في كتابي خط أنابيب الرسومات Direct3D.يمكنك تنزيل هذا الفصل مجانًا على عنوان URL أعلاه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top