2013-08-22 13 views
6

Esiste un modo per recuperare le informazioni del mio adattatore per scheda grafica utilizzando l'API Java?Come recuperare le informazioni della scheda grafica su Java?

So che DirectX può facilmente farlo, tuttavia, mi chiedo solo se Java può fare questo ...?

Come l'immagine qui sotto. DirectX rileva l'adattatore GPU integrato nel mio hardware e un elenco delle sue risoluzioni di supporto.

Il mio problema è, c'è un'API che Java farebbe questo genere di cose? Mi chiedo davvero se Java sia in grado di ottenere informazioni riguardanti la scheda video.

enter image description here

Grazie.

risposta

8

Come ha detto @Sergey K. nella sua risposta ci sono diversi modi per farlo. Uno di questi utilizza lo strumento dxdiag (ovviamente funzionerà solo su Windows) in particolare la variante dxdiag /t che reindirizzerà l'output su un determinato file. Quindi è possibile elaborare il file per avere informazioni richieste:

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(); 
    } 

} 

file generato sarà simile a questa:

enter image description here

E uscita sarà simile a questa:

- Esecuzione comando dxdiag -
- Stampa ./foo.txt informazioni -
Nome scheda: Intel (R) HD G raphics Famiglia
Modalità corrente: 1366 x 768 (32 bit) (60Hz)

3

Ci sono molti modi per farlo in Java. Ma tutti finiscono per usare DirectX/OpenGL/C++/WinAPI/qualunque sia il loro back-end.

Avrete bisogno di collegamenti Java per entrambe le API. Oppure puoi scrivere il tuo codice in C/C++ e usarlo tramite JNI.

Problemi correlati