Capturar os programas abertos?

Gostaria da ajuda de vocês para buscar a lista de programas abertos no MAC ou Windows. No trecho abaixo eu consegui buscar todos os processos abertos no macOS. Mas o que eu preciso é apenas dos programas que o command+tab ou alt+tab mostra.
Obrigado!

try {
        String line;
        String[] cmd = {"/bin/sh", "-c", "ps -ef | grep .app | awk '{print $2}'"};
        Process p = Runtime.getRuntime().exec(cmd);

        BufferedReader input = new BufferedReader(
                            new InputStreamReader(p.getInputStream()));
        while ((line = input.readLine()) != null) {
            list.add(line);
        }
        input.close();
} catch (Exception err) {
     err.printStackTrace();
}

no Windows:
http://stackoverflow.com/questions/54686/how-to-get-a-list-of-current-open-windows-process-with-java#

blady2015 obrigado pela dica.
Eu testei a solução abaixo que foi mencionada no link que vc sugeriu. Porém esse código pega todos os process abertos no SO. Eu preciso apenas dos programas que o alt+tab ou command+tab mostra.

List processesList = JProcesses.getProcessList();

for (final ProcessesInfo processInfo : processesList) {
System.out.println("Process PID: " + processInfo.getPid());
System.out.println(“Process Name: " + processInfo.getName());
System.out.println(“Process Used Time: " + processInfo.getTime());
System.out.println(”------------------”);
}