如何在 Java 上检索显卡信息?

Posted

技术标签:

【中文标题】如何在 Java 上检索显卡信息?【英文标题】:How to retrieve graphic card information on Java? 【发布时间】:2013-08-22 11:26:43 【问题描述】:

有没有可能使用 Java API 检索我的显卡适配器信息的方法?

我知道 DirectX 可以轻松做到这一点,但是我只是想知道 Java 是否可以做到这一点......?

如下图所示。DirectX 找到集成到我的硬件的 GPU 适配器,以及它的支持分辨率列表。

我的问题是,有没有一个 API 可以让 Java 做这种事情? 我真的很想知道 Java 是否能够获取有关视频卡的信息。

谢谢。

【问题讨论】:

【参考方案1】:

正如@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 当前模式:1366 x 768(32 位)(60Hz)

【讨论】:

【参考方案2】:

在 Java 中有几种方法可以做到这一点。但他们最终都使用 DirectX/OpenGL/C++/WinAPI/whatever 作为他们的后端。

您需要为此 API 中的任何一个进行 Java 绑定。或者您可以使用 C/C++ 编写代码并通过 JNI 使用它。

【讨论】:

以上是关于如何在 Java 上检索显卡信息?的主要内容,如果未能解决你的问题,请参考以下文章

win11如何查看显卡信息?

如何在安装驱动程序之前在 C++ 中获取 GPU 信息

Linux下如何查看NVIDIA显卡信息

如何在 C# 中检索磁盘信息?

如何查询自己电脑显卡?

如何无显卡运行linux