8

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

DirectX で簡単にできることはわかっているのですが、Java でできるのだろうか...?

下の図のように.. DirectX は、ハードウェアに統合された GPU アダプターと、サポートされている解像度のリストを検出します。

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

ここに画像の説明を入力

ありがとうございました。

4

2 に答える 2

9

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

}

生成されたファイルは次のようになります。

ここに画像の説明を入力

出力は次のようになります。

-- dxdiag コマンドの実行 --
-- ./foo.txt 情報の出力 --
カード名: Intel(R) HD Graphics Family
現在のモード: 1366 x 768 (32 ビット) (60Hz)

于 2013-08-22T12:51:53.003 に答える