Khi @Sergey K. nói trong câu trả lời của mình, có một số cách để thực hiện việc này. Một trong số đó là sử dụng công cụ dxdiag
(rõ ràng nó sẽ chỉ hoạt động trên Windows), đặc biệt là dxdiag /t
biến thể sẽ chuyển hướng đầu ra đến một tệp nhất định. Sau đó, bạn có thể xử lý tập tin đó để có được thông tin cần thiế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();
}
}
tập tin được tạo ra sẽ trông như thế này:
Và đầu ra sẽ trông như thế này:
- Thi lệnh dxdiag -
- In ./foo.txt info -
Tên thẻ: Intel (R) HD G raphics Gia đình
Chế độ hiện tại: 1366 x 768 (32 bit) (60Hz)