Boa noite, gostaria de uma ajuda, como faço para fechar um programa externo ao meu peojeto ?
Por exemplo, fechar a calculadora do windows como seria o codigo ?
Desde já obrigado…
Marciano
Boa noite, gostaria de uma ajuda, como faço para fechar um programa externo ao meu peojeto ?
Por exemplo, fechar a calculadora do windows como seria o codigo ?
Desde já obrigado…
Marciano
A resposta simples é: impossivel.
Via o Java voce nao tem acesso a isso.
Mas voce pode chamar algum código nativo que voce pode fazer em C/C++ ou usar alguma Dll.
Ou você pode usar o Runtime.exec para rodar algum comando de SO que faça isso, como o tskill, no windows, ou o kill, no Linux.
Obviamente, essa não é uma solução multiplataforma.
Eu uso isso pra efetuar backup no mysql, vc pode tentar usar a classe Runtime pra executar um arquivo.bat por exemplo, que tenha algum comando pra fechar sua aplicação externa. Isso é uma idéia que vc pode testar.
Runtime.getRuntime().exec("cmd /c mysqldump --user=root --password=senha SDO --result-file=C:/SDO-Backup/bkp_sdo_"+ano+"_"+mes+"_"+dia+".sql");
A resposta simples é: impossivel.Via o Java voce nao tem acesso a isso.
Mas voce pode chamar algum código nativo que voce pode fazer em C/C++ ou usar alguma Dll.
Oi,
Nunca fale que é impossivel…
Faz assim:
Tchauzin!
obrigado colegas, vou testar e darei retorno se der tudo certo…
Marciano
A resposta simples é: impossivel.Via o Java voce nao tem acesso a isso.
Mas voce pode chamar algum código nativo que voce pode fazer em C/C++ ou usar alguma Dll.
Oi,
Nunca fale que é impossivel…
Faz assim:
Tchauzin!
Eu digo que é impossivel fazer algo tipo:
Proccess calc = Desktop.getProccess("calc.exe");
calc.kill();
Claro que seria interessante ou ainda um WindowHandler.
Oi,
Ele conseguirá fechar o aplicativo mesmo não sendo aberto pelo java.
Essa utilização do destroy() nem sempre é uma boa saida… seria melhor utilizar exitValue();
Não esqueça do que o Vini falou! É muito importante:
Ou você pode usar o Runtime.exec para rodar algum comando de SO que faça isso, como o tskill, no windows, ou o kill, no Linux.Obviamente, essa não é uma solução multiplataforma.
Tchauzin!
não sei qual o modo mais genêrico e eficiente para finalização de tarefas pelo java em multiplataformas…
eu atraves do java eu identificaria o SO, dps trataria de finalizar com um rutime da forma correta ao SO (com a linha de comando adequada).
Me surgiu uma dúvida… tem como ao inves de criar um objeto Process em java eu capturar um processo em execução para o objeto?
Olá Lina e ViniGodoy
Consegui conforme vcs falaram ae, com o tskill pra win e kill pra linux.
Obrigado.
Marciano
não sei qual o modo mais genêrico e eficiente para finalização de tarefas pelo java em multiplataformas…eu atraves do java eu identificaria o SO, dps trataria de finalizar com um rutime da forma correta ao SO (com a linha de comando adequada).
Me surgiu uma dúvida… tem como ao inves de criar um objeto Process em java eu capturar um processo em execução para o objeto?
Oi,
Existe essa possibilidade…
Tem como utilizar o tasklist por meio do Runtime (Já irá apresentar todos os processos abertos). Nele, existem parametros a ser passado que conseguirá descobrir um processo em execução.
Tchauzin!
Olá Lina e ViniGodoyConsegui conforme vcs falaram ae, com o tskill pra win e kill pra linux.
Obrigado.
Marciano
Oi,
Muito bem!
Edit seu primeiro post e coloque a tag [RESOLVIDO], ok?
Tchauzin!
Caso o programa tenha sido executado pelo java, o próprio java é capaz de fechar o mesmo:
try {
Process calc = Runtime.getRuntime().exec("calc.exe");
Thread.sleep(1000);
calc.destroy();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) { //Somente por causa da chamada sleep de Thread
e.printStackTrace();
}
Você pode tbm criar uma biblioteca de sistema (DLL p/ windows, por exemplo) e classes que a encapsule.
Att,
Olá Lina,
Sei bem que utilizar chamadas ao SO impedem a manutenção do sistema como multiplataforma, mas as vezes é um mal necessário, especialmente quando as necessidades de negócio forçam para isso.
Inclusive há sistemas que, quando fechados encerram também o SO (trabalho num que necessita realizar isso e precisa ser multiplataforma).
Um exemplo seria um ambiente para LanHouse. Impeço o acesso ao SO e determino quais programas os clientes terão acesso e uma interface para utilizá-los.
O problema encontra-se quando o mesmo deve ser funcional em diversos SOs. Então o arquiteto/Analista deve desenhar o sistema de maneira a minimizar ao máximo as alterações na troca de SO (mesmo que cobre o mesmo que fosse feita uma nova implementação do zero).