Как получить информацию о графической карте на Java?

Есть ли какой-нибудь возможный способ получить информацию о моем адаптере графической карты, используя Java API?

Я знаю, что DirectX может легко это сделать, однако мне просто интересно, может ли Java сделать это …?

Как на картинке ниже. DirectX обнаруживает адаптер графического процессора, интегрированный в мое оборудование, и список поддерживаемых разрешений.

Моя проблема в том, есть ли API, который Java будет делать такого рода вещи?
Мне действительно интересно, может ли Java получить информацию относительно видеокарты.

введите описание изображения здесь

Спасибо.

7

Решение

Как сказал @Sergey K. в своем ответе, есть несколько способов сделать это. Один из них использует 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 Graphics
Текущий режим: 1366 x 768 (32 бита) (60 Гц)

10

Другие решения

Есть несколько способов сделать это в Java. Но все они в конечном итоге используют DirectX / OpenGL / C ++ / WinAPI / независимо от того, как их серверная часть.

Вам понадобятся привязки Java для любого из этих API. Или вы можете написать свой код на C / C ++ и использовать его через JNI.

3

По вопросам рекламы [email protected]