2013-08-22 15 views
6

Java APIを使用してグラフィックカードアダプタの情報を取得する方法はありますか?Javaでグラフィックカードの情報を取得する方法は?

私はDirectXが簡単にそれを行うことができますが、私はJavaがこれを行うことができるのかどうか疑問に思っています...?

DirectXは、ハードウェアに統合されたGPUアダプタと、そのサポートされている解像度の一覧を見つけます。

私の問題は、Javaがこの種のことをするAPIがあるかどうかです。 Javaがビデオカードに関する情報を取得できるかどうかは本当に不思議です。

enter image description here

ありがとうございます。

答えて

8

@Sergey K.は答えとして、これを行う方法がいくつかあります。これらのうちの1つはdxdiagツールを使用しています(明らかにWindows上でのみ動作します)。具体的には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 info -
カード名:Intel(R)HD G raphicsファミリー
現在のモード:1366 x 768(32ビット)(60Hz)

3

Javaでこれを行うにはいくつかの方法があります。しかし、それらのすべては、バックエンドとしてDirectX/OpenGL/C++/WinAPI /を使用して終了します。

このAPIのいずれかにJavaバインディングが必要です。または、C/C++でコードを記述し、JNI経由で使用することもできます。

関連する問題