Existe alguma maneira de verificar processos em execução no windows dentro de uma aplicação Java? Preciso de um botão que chama um segundo programa e esse programa só pode ser instanciado uma única vez.
Puramente com Java eu acho muito difícil de vc conseguir. O que vc pode fazer é entrar no site MSDN e verificar qual DLL do windows faz isso e invocá-la por JNA.
Até mais
Então ununes, não acredito que essa seja a maneira mais elegante de verificar se um processo está em execução. Pelo fato de ser um comando que só funciona no Windows, vai acabar com a portabilidade. Mas pode ser que ajude.
[code]try {
Process p = Runtime.getRuntime().exec("tasklist");
Scanner scanner = new Scanner(p.getInputStream());
while (scanner.hasNextLine()) {
String linha = scanner.nextLine();
System.out.println(linha);
}
} catch (IOException ex) {
ex.printStackTrace();
}[/code]
Flw!
Valeu, isso aí resolveu o problema. Agora só pra complementar, toda vez que clico no botão verifico se o processo já está rodando. Existe alguma forma de pegar o ID do processo e colocar a GUI na frente das aplicações que estiverem rodando se por acaso alguma aplicação estiver na frente desse processo?
Esse procedimento só irá funcionar perfeitamente se você alterar o nome do processo java. Segue um link que pode te ajudar
http://www.guj.com.br/posts/list/196354.java
Caso queira fazer de outra forma, poderias criar um arquivo de lock quando o sistema esteja rodando.
Bom cara, o seu problema parece um pouco complexo, a melhor opção vai ser usar JNI.
Qualquer dúvida é só postar! Flw?!