2013-08-22 10 views
6

जावा एपीआई का उपयोग कर अपने ग्राफिक कार्ड एडाप्टर की जानकारी पुनर्प्राप्त करने का कोई संभावित तरीका है?जावा पर ग्राफिक कार्ड जानकारी कैसे प्राप्त करें?

मुझे पता है कि डायरेक्टएक्स आसानी से ऐसा कर सकता है, हालांकि, मुझे आश्चर्य है कि जावा ऐसा कर सकता है ...?

नीचे दी गई तस्वीर की तरह .. डायरेक्टएक्स को मेरे हार्डवेयर में एकीकृत GPU एडाप्टर और इसके सहायक समाधानों की एक सूची मिलती है।

मेरी समस्या यह है कि क्या कोई एपीआई है कि जावा इस तरह की चीज करेगा? मुझे सच में आश्चर्य है कि जावा वीडियो कार्ड से संबंधित जानकारी प्राप्त करने में सक्षम है या नहीं।

enter image description here

धन्यवाद।

उत्तर

8

जैसा कि @ सर्गी के। ने अपने उत्तर में कहा कि ऐसा करने के कई तरीके हैं। इनमें से एक dxdiag उपकरण का उपयोग कर रहा है (जाहिर है यह केवल विंडोज़ पर काम करेगा) विशेष रूप से dxdiag /t संस्करण जो आउटपुट को किसी दिए गए फ़ाइल पर रीडायरेक्ट करेगा।

public static void main(String[] args) {   
    try { 

     String filePath = "./foo.txt"; 
     // Use "dxdiag /t" variant to redirect output to a given file 
     ProcessBuilder pb = new ProcessBuilder("cmd.exe","/c","dxdiag","/t",filePath); 
     System.out.println("-- Executing dxdiag command --"); 
     Process p = pb.start(); 
     p.waitFor(); 

     BufferedReader br = new BufferedReader(new FileReader(filePath)); 
     String line; 
     System.out.println(String.format("-- Printing %1$1s info --",filePath)); 
     while((line = br.readLine()) != null){ 
      if(line.trim().startsWith("Card name:") || line.trim().startsWith("Current Mode:")){ 
       System.out.println(line.trim()); 
      } 
     } 
    } catch (IOException | InterruptedException ex) { 
     ex.printStackTrace(); 
    } 

} 

जनरेट किया गया फ़ाइल इस तरह दिखेगा:

enter image description here

और उत्पादन इस तरह दिखेगा: तो फिर आप आवश्यक जानकारी प्राप्त करने के उस फ़ाइल को संसाधित कर सकते हैं

- निष्पादित dxdiag कमांड -
- प्रिंटिंग ./foo.txt जानकारी -
कार्ड का नाम: इंटेल (आर) एचडी जी रैफिक्स परिवार
वर्तमान मोड: 1366 x 768 (32 बिट) (60 हर्ट्ज)

3

जावा में ऐसा करने के कई तरीके हैं। लेकिन उनमें से सभी डायरेक्टएक्स/ओपनजीएल/सी ++/विनैपी/जो भी उनके बैक-एंड के रूप में उपयोग करते हैं।

आपको इस एपीआई में से किसी के लिए जावा बाइंडिंग की आवश्यकता होगी। या आप अपना कोड सी/सी ++ में लिख सकते हैं और जेएनआई के माध्यम से इसका इस्तेमाल कर सकते हैं।

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