Fechar um processo

Pessoal…
Existe como fechar um processo via Java?
No caso, preciso encerrar uma sessão do Internet Explorer usando Java.
Alguém pode me ajudar?

Valeu

[quote=sst22]Pessoal…
Existe como fechar um processo via Java?
No caso, preciso encerrar uma sessão do Internet Explorer usando Java.
Alguém pode me ajudar?

Valeu[/quote]

a) Se você está em um applet e quer fechar a sessão onde está o próprio applet, assine o applet e chame System.exit(0). Fácil e bobo (exceto pela parte da assinatura, que é um “porre”.)
O problema é que pode haver vários processos IEXPLORE.EXE rodando, e provavelmente não é o que você quer.

b) Se você está usando uma aplicação, você pode usar algum aplicativo (tipo kill.exe, que você pode baixar não sei de onde), ou então se você encara um desafio, pode escrever uma rotininha em C (JNI) que usa a toolhelp32.dll para enumerar os processos da máquina, e a API TerminateProcess para matar o processo. (Existe a “CloseWindow” que é um pouco mais “gentil” mas nem sempre funciona.)

Estou usando JSP.
O problema é que não quero fazê-lo usando javascript.

Se você quer fechar a janela do browser (lado “client”) e está escrevendo um programa que roda no “server”, então
a) você usa Javascript mesmo, ou então
b) você baixa um applet assinado que faz o “System.exit(0)”. Esse applet assinado é muito “escandaloso” (ele requer que você aceite o applet ao ser baixado - não é uma operação “silenciosa”).
c) O Flash faz tantas coisas diferentes, ele também não faz isso? Não sei se dá para fazer isso com Flash.

Não posso usar JavaScript.

Existe alguma API que feche uma aplicação?
Ou, existe algum componente pronto para realizar essa função?

Valeu

Slash,

Como o thingol falou, você precisa atuar do lado do cliente. Javascript e Applets fazem isso (ActiveX tb).

O que você está querendo é uma página com recursos dinâmica, fica difícil voce ter dinamismo sem estes recursos, porque HTML por natureza é estático.

Não sei qual a sua restrição para usar Javascript, ams existem códigos que funcionam em grande parte dos navegadores do mercado.

[]s

import java.applet.*;

public class Test189 extends Applet {
	public void start() {
		System.exit(0);
	}
}
  • Compile o código acima
  • Crie um .jar
    jar cvf Test189.jar Test189.class
  • Assine o .jar (para assinar um applet, por favor procure no site da Sun, as instruções são muito detalhadas e dependem da versão do JDK)
  • Crie uma página HTML com o seguinte conteúdo:
<applet archive="Test189.jar" code="Test189" height="1" width="1">
</applet>
  • Carregue a página. Você vai ver que ao aceitar o applet, o IE ou Netscape ou Mozilla irão ser encerrados. Se houver vários IEXPLORE.EXE ou NETSCAPE.EXE ou MOZILLA.EXE no ar, apenas o que contém o applet será finalizado.

No caso da JVM da Microsoft, você precisa assinar um .CAB, e você não pode chamar System.exit() diretamente no método start. É necessário criar uma thread para fazer isso:

import java.applet.*;

public class Test189 extends Applet {
	public void start() {
		(new Thread() {
			public void run() {
				System.exit(0);
			}
		}).start();
	}
}

e como isso cria uma classe anônima, é preciso alterar um pouco o comando jar:

jar cvf Test189.jar Test189*.class

Cara…

Tenho uma aplicação J2EE, onde existe uma página JSP que precisa ter um botão “sair”, que encerre a aplicação. Poderia fazê-lo simplesmente usando JavaScript (window.close() por exemplo). O problema é que essa página deve rodar em um PocketPC ( Com Windows Mobile 2003 ) e através desse comando de JS, não funciona no Pocket. O que ele faz na verdade é voltar para a última página visitada. Por isso preciso de outra forma para resolver esse problema.
Estou aprimorando em JAVA e a dica que vc me deu sobre o APPLET, preciso saber como posso implementá-la em minha aplicação.

Valeu

Fiz um applet como o indicado, criei o html tb, mas não funcionou.
Acho que o comando System.exit(0) não fecha o IE e sim se ele fosse uma janela própria do aplicativo.
Existe alguma API que o faça?

Mais uma, obrigado…