有没有可能使用 Java API 检索我的显卡适配器信息的方法?
我知道 DirectX 可以很容易地做到这一点,但是,我只是想知道 Java 是否可以做到这一点......?
如下图所示。DirectX 找到集成到我的硬件的 GPU 适配器,以及它的支持分辨率列表。
我的问题是,有没有一个 API 可以让 Java 做这种事情?我真的想知道 Java 是否能够获取有关视频卡的信息。
谢谢你。
正如@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) HD Graphics Family
Current Mode:1366 x 768 (32 bit) (60Hz)
在 Java 中有几种方法可以做到这一点。但他们最终都使用 DirectX/OpenGL/C++/WinAPI/whatever 作为他们的后端。
您需要为此 API 中的任何一个进行 Java 绑定。或者您可以用 C/C++ 编写代码并通过 JNI 使用它。