Trabalhar com Processos do Windows

Estou precisando desenvolver um aplicativo desktop que verifique se um determinado processo está ativo em um computador, se não eu inicio esse processo manualmente. Alguem pode me ajudar a analizar esses processos?

Qual sistema operacional você tá usando?

Acho que a principal questão aqui é pegar o pid do processo e verificar se ele está executando. Pelo que eu me lembre, cada processo do SO tem um pid único e aleatório. Então você teria que pegar pelo nome. Isso é fácil de fazer de forma bem ineficiente (usando String), se você está usando Windows:

Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("cmd /c tasklist");

BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));

StringBuilder processesStr = new StringBuilder();
String line;

while ((line = reader.readLine()) != null) {
	processesStr.append(line);
	processesStr.append("\n");
}

Scanner scanner = new Scanner(System.in);

System.out.print("Process name: ");
String option = scanner.nextLine();

System.out.print("Process " + option);
if (processesStr.toString().contains(option)) {
	System.out.println(" already running.");
} else {
	System.out.println(" is not running.");
}

Eu digo ineficiente porque acho que podem exisitr maneiras melhores de fazer isso (usando ProcessBuilder, Process e Runtime ou coisa do tipo).

Valeu Andre pela ajuda, eu vou usar o Windows mesmo, mas eu preciso de algo mais especifico tipo controlar mesmo os processos, por exemplo, se eu precisar dar um kill em um processo ou algo assim. Será que tem como?

Para fazer isso você terá que desenvolver uma biblioteca em c e mapear com java. Java só possui acesso na sua máquina virtual.

É… acho que o Java só consegue dar kill num processo que foi criado por ele (por exemplo, uma aplicação abre o firefox e mantém uma referência praquele processo. Se der um process.destroy(), vai fechar o navegador). Não tenho certeza disso, então fica a dica pra dar uma pesquisada.

Valeu pela ajuda pessoal, vou dar mais uma pesquisada.