2013-06-16 8 views
5

शीर्षक के अनुसार, मैं कैसे जांच सकता हूं कि उपयोगकर्ता ने डायरेक्टएक्स के किस संस्करण को स्थापित किया है? फ़ीचरलेवल की जांच करना पर्याप्त नहीं है, क्योंकि मेरा एप्लिकेशन फीचर लेवल 10.0 पर चल सकता है, लेकिन डायरेक्टएक्स 11.1 स्थापित होना आवश्यक है।डायरेक्टएक्स का कौन सा संस्करण स्थापित है

क्यों इस एक नकली नहीं है:

  • How to code to get direct X version on my machine in C#?
    • इस प्रश्न के पहले उत्तर कहते हैं, "विंडोज 7, DirectX = 11, अगर विंडोज विस्टा, DirectX = 10"। यह गलत है, क्योंकि Vista डायरेक्टएक्स 10 और 11 दोनों का समर्थन करता है और विंडोज 7 डायरेक्टएक्स 11 और 11.1 का समर्थन करता है।
    • दूसरा उत्तर एक रजिस्ट्री कुंजी का संदर्भ देता है जो केवल डायरेक्टएक्स 9 और उससे कम पर लागू होता है। यहां तक ​​कि डायरेक्ट के साथ एक विंडोज 7 प्रणाली 11.1 स्थापित पर, इस रजिस्ट्री कुंजी एक स्थापित संस्करण से संकेत मिलता है कभी नहीं होगा एक से अधिक 9.0c
  • .NET How to detect if DirectX 10 is supported?
    • इस सवाल का जवाब एक बार फिर का संदर्भ DirectX के लिए एक ही रजिस्ट्री कुंजी 9 और केवल कम।

मैं DirectX 10 इंस्टॉल और अप पर लागू होने वाला एक जवाब की जरूरत है। इसका मतलब है कि उनका संस्करण 10, 10.1, 11 या 11.1 है या नहीं।

उत्तर

3

संपादित करें: निकाला गया रजिस्ट्री की जांच विधि है क्योंकि यह Dx के लिए ही काम करता है < = 9 (THX @Telanor)

इस विधि बहुत, बहुत धीमी है, लेकिन केवल एक मैं पता लगा कि 100% सही

है
private static int checkdxversion_dxdiag() 
{ 
    Process.Start("dxdiag", "/x dxv.xml"); 
    while (!File.Exists("dxv.xml")) 
     Thread.Sleep(1000); 
    XmlDocument doc = new XmlDocument(); 
    doc.Load("dxv.xml"); 
    XmlNode dxd = doc.SelectSingleNode("//DxDiag"); 
    XmlNode dxv = dxd.SelectSingleNode("//DirectXVersion"); 

    return Convert.ToInt32(dxv.InnerText.Split(' ')[1]); 
} 
+0

कुछ हद तक, लेकिन यह धीमा और घबराहट है। कमांड प्रॉम्प्ट में त्वरित परीक्षण से, मैं कहूंगा कि यह अस्वीकार्य रूप से धीमा है। – Telanor

+1

मुझे इसके बारे में पता है। सबसे बुरी चीज तब होती है जब कमांड प्रॉम्प्ट से 'dxdiag/x file.xml' चलाएं, मुझे अभी भी प्रक्रिया से बाहर निकलने के बाद फ़ाइल को देखने के लिए इंतजार करना होगा। आप रजिस्ट्री 'HKLM \ Software \ Microsoft \ DirectX \ Version' से संस्करण स्ट्रिंग को हमेशा पढ़ सकते हैं और इसे डीकोड कर सकते हैं। मैं अपना उत्तर –

+4

संपादित करूंगा कि रजिस्ट्री कुंजी केवल डायरेक्टएक्स 9 और कम – Telanor

संबंधित मुद्दे