Process e ProcessBuilder

Olá a todos, estava procurando um jeito de descobrir se determinado programa do windows estáva rodando, e descobrir o Process e Processbuilder, para abrir o bloco de notas por exemplo, eu fiz isso:

ProcessBuilder builder = new ProcessBuilder("notepad.exe");  

try {  
    Process process =   builder.start();  
      
} catch (Exception e) {  
    // TODO: handle exception  
    e.printStackTrace();  
}  

mais agora, o que eu quero, e descobrir um jeito de ver se o bloco de notas ja esta aberto, tem como fazer isso usando process, se nao tiver, qual seria o melhor caminho para fazer isso?

Desde já agradeço a todos pela atenção.

vlw

Qual Windows?

A partir do XP vc pode usar o “comando” tasklist p/ obter a lista de processos que estão sendo executador. Acho que o Win2k tbm tem esse comando…

Vc pode chamar assim:

ProcessBuilder builder = new ProcessBuilder("tasklist.exe /fo csv /nh");   

/fo define o formato, no caso CSV (valores separados por vírgula) e /nh diz que não deve imprimir o cabeçalho das colunas.

Ai basta vc ler a saída do comando e fazer o parse do texto.

P/ informações sobre manipulação de processos externos ao Java (o tasklist vai ser um deles), recomendo o seguinte artigo: http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

[]´s

amigo, eu fiz o seguinte:

	ProcessBuilder builder = new ProcessBuilder("tasklist.exe /fo csv /nh");
		Process process;
		try {
			process = builder.start();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}

e de todas a formas que eu tento fazer o parse pra string, ele dispara exception

Crie um método com o código que estou te passando p/ vc poder reaproveitar.
LEIA o artigo que te passei o link. Vc não leu, por isso não conseguiu.

[code]import java.io.;
import java.util.
;

public class Teste {

public static void main( String[] args ) {

    // flag para indicar se encontrou o processo especificado
    boolean encontrou = false;

    // nome do processo a ser buscado
    String nomeProcesso = "notepad.exe"
    
    try {
        
        // executa o processo
        Process p = Runtime.getRuntime().exec( "tasklist /fo csv /nh" );
        
        // cria um scanner com base no InputStream do processo
        Scanner scan = new Scanner( p.getInputStream() );
    
        // enquanto tem linhas do scanner    
        while ( scan.hasNextLine() ) {
            
            // imprime a linha (pode tirar depois...)
            System.out.println( scan.nextLine() );
            
            // verifica se na linha especificada existe o nome do processo
            // e atribui a "encontrou"
            encontrou = scan.nextLine().contains( nomeProcesso );
            
            // poderia verificar se encontrou e quebrar o while,
            // mas o ideal é consumir TODA a saída do processo.
            
        }
            
    } catch ( IOException exc ) {
        exc.printStackTrace();
    }
    
    // imprime true se encontrou o processo, falso caso contrário.
    System.out.println( encontrou );
    
    
}

}[/code]

[]´s

realmente eu tinha lindo, tenho um pouco de dificuldade com ingles, muito pelo codigo que voce me passo,
e eu li o tuto que voce me passo(com a ajuda do google tradutor).

vlw msm pela ajuda amigo.