Criar lista de programas [RESOLVIDO]

4 respostas
L

Ola pessoal, estou precisando de ajuda. Preciso criar um programa que lista cada aplicativo ou pasta aberto pelo usuário para criar uma espécie de log. Consigo listar os programas em execução no momento sem problemas, mas gostaria de incrementar minha rotina de modo que em intervalos de tempo (10min por exemplo) o programa acrescentasse a lista apenas os programas que ainda não foram listados.
Se alguem puder ajudar, fico muito agradecido. Abaixo segue o código que estou utilizando hoje.

String usuario = System.getProperty("user.name");
DateFormat dataFormatada = new SimpleDateFormat("dd-MM-yyyy");
String data = dataFormatada.format(new Date());	
FileWriter writer = new FileWriter(new File("saida"+data+".txt"),true);
PrintWriter printer = new PrintWriter(writer, true);
printer.println(usuario+" - "+data);
	try{
	        Runtime runtime = Runtime.getRuntime();
		String cmds[] = {"cmd", "/c", "tasklist"};
		Process proc = runtime.exec(cmds);
			
		InputStream input= proc.getInputStream();
		InputStreamReader inputReader = new InputStreamReader(input);		
					
		BufferedReader reader = new BufferedReader(inputReader);
		String line;
			
		while((line = reader.readLine()) != null){			
			printer.println(line);			
		}
		
		}catch(Exception ex){
		ex.printStackTrace();
		}
	}

Forte abraço a todos.

4 Respostas

T

Limpe a lista e a recrie. É que você não sabe se um programa “morreu” e foi “ressuscitado” nesse meio tempo (mesmo que o nome e o PID batam, mesmo assim não se pode garantir que é o mesmo programa.)

L

thingol, obrigado pela resposta. O problema é que se eu fizer isto e um programa foi encerrado, eu perco a referência. Por exemplo, se o Word estava sendo executado e eu limpo a lista, caso o Word tenha sido fechado eu não tenho como saber entende? Dai vai ficar inconsistente. Por isso eu precisava que fosse acrescentado o programa no momento que ele for aberto, caso contrario, terei que acumular varios “instantes de tempo” da minha tasklist. Se houver outra alternativa me avisa por favor? Grato.

maior_abandonado

você pode guardar uma lista antiga e ao ler os programas denovo, jogar em uma lista recente, depois para saber se um programa foi fechado, verificar se ele existe na lista antiga, caso não sinal que ele foi fechado…

como o tingol disse, caso ele esteja aberto ele pode muito bem ter sido fechado e reaberto, porém assim tem como saber com certeza se ele foi fechado caso ele não apareça mais…

a e quando for postar código, coloque entre as tags code, use o botão em cima escrido “Code”…

L

Obrigado pelas dicas amigo, não notei a tag Code na barra de ferramentas. E creio que da forma que você sugeriu resolva meu problema, de fato não havia pensado em comparar as listas.
Vou implementar a mudança e marcar o topico como resolvido. E aproveitar para tentar retribuir a ajuda a alguem que esteja precisando. Forte abraço e bom carnaval!

Criado 10 de fevereiro de 2010
Ultima resposta 11 de fev. de 2010
Respostas 4
Participantes 3