Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to retrieve graphic card information on Java?

Is there any possible way to retrieve information of my graphic card adapter using Java API?

I know that DirectX can easily do it, however, I just wonder if Java can do this...?

Like picture below.. DirectX finds out GPU adapter integrated to my hardware, and a list of its supporting resolutions.

My problem is, is there an API that Java would do this kind of thing? I really wonder if Java is able to get information regarding to Video Card.

enter image description here

Thank you.

like image 200
online.0227 Avatar asked Aug 22 '13 11:08

online.0227


1 Answers

As @Sergey K. said in his answer there are several ways to do this. One of these is using dxdiag tool (obviously it will only work on Windows) particularly dxdiag /t variant that will redirect the output to a given file. Then you can process that file to get required info:

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();
    }

}

Generated file will look like this:

enter image description here

And output will look like this:

-- Executing dxdiag command --
-- Printing ./foo.txt info --
Card name: Intel(R) HD Graphics Family
Current Mode: 1366 x 768 (32 bit) (60Hz)

like image 53
dic19 Avatar answered Sep 19 '22 05:09

dic19