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.