2013-08-22 37 views
6

Có cách nào có thể lấy thông tin về bộ điều hợp cạc đồ họa của tôi bằng Java API không?Làm thế nào để lấy thông tin thẻ đồ họa trên Java?

Tôi biết rằng DirectX có thể dễ dàng thực hiện điều đó, tuy nhiên, tôi tự hỏi liệu Java có thể làm điều này ...?

Giống như hình bên dưới .. DirectX tìm ra bộ điều hợp GPU tích hợp với phần cứng của tôi và danh sách các độ phân giải hỗ trợ của nó.

Vấn đề của tôi là, có một API mà Java sẽ làm điều này không? Tôi thực sự tự hỏi liệu Java có thể nhận thông tin liên quan đến Video Card hay không.

enter image description here

Cảm ơn bạn.

Trả lời

8

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:

enter image description here

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)

3

Có một số cách bạn có thể thực hiện việc này bằng Java. Nhưng tất cả chúng kết thúc bằng cách sử dụng DirectX/OpenGL/C++/WinAPI/bất cứ điều gì như back-end của họ.

Bạn sẽ cần kết nối Java cho một trong hai API này. Hoặc bạn có thể viết mã của bạn bằng C/C++ và sử dụng nó qua JNI.

Các vấn đề liên quan