@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)