Processos

5 respostas
U

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.

5 Respostas

eliangela

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

brunoccouto

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.

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

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?

Hellmanss

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.

brunoccouto

Bom cara, o seu problema parece um pouco complexo, a melhor opção vai ser usar JNI.
Qualquer dúvida é só postar! Flw?!

Criado 24 de fevereiro de 2010
Ultima resposta 8 de mar. de 2010
Respostas 5
Participantes 4