Senhores!
Estou desenvolvendo uma aplicação que tem por objetivo monitorar uma determinada tarefa (processo) do Windows e caso este processo feche o programa deverá para um determinado serviço.
Para isso estou usando a classe Runntime com o seguinte código para monitorar o processo:
public class ListProcess {
public static void main(String[] args) throws IOException {
SystemRun cmd = new WindowsCmd ();
while (!(cmd.justTaskList("Calc.exe").isEmpty())){
try {
Thread.sleep(2000);
} catch (InterruptedException ex) {
Logger.getLogger(ListProcess.class.getName()).log(Level.SEVERE, null, ex);
}
}
System.out.println("O processo parou");
}
Com a classe que executa os metodos:
public class WindowsCmd implements SystemRun{
public List taskList () throws IOException{
Runtime runtime = Runtime.getRuntime();
String cmds[] = {"cmd", "/c", "tasklist"};
Process proc = runtime.exec(cmds);
InputStream inputstream = proc.getInputStream();
InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
String line ;
List <String> tsk = new ArrayList();
while ((line = bufferedreader.readLine())!= null){
tsk.add(line);
}
return tsk;
}
A duvida é quando eu vou parar o serviço, qual metodo eu devo utilizar? será isso:
public void stopService (String service) throws IOException{
Runtime runtime = Runtime.getRuntime();
String cmds[] = {"cmd", "/c", "net stop" + service};
Process proc = runtime.exec(cmds);
proc.getOutputStream();
}
No aguardo,
Maurijava.