As @Sergey K. said, there are several ways to do this in his answer. One of them uses the dxdiag tool (obviously, it will work only on Windows), in particular, the dxdiag /t option, which redirects the output to this file. Then you can process this file to get the necessary information:
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(); } }
The generated file will look like this:

And the result will look like this:
- Running the dxdiag command -
- Printing. /foo.txt info -
Card Name: Intel (R) HD Product Family
Current mode: 1366 x 768 (32 bit) (60 Hz)
dic19 source share