Olá pessoal,
eu criei uma DLL que faz um teste de hibernação na máquina. Quando eu rodo o teste em um programinha Java simples, ele funciona normal. A máquina hiberna e volta depois de 70 segundos (eu configurei esse tempo).
Agora eu preciso rodar esse teste em um navegador. Estou usando um Applet e quando a máquina volta da hibernação o applet está travado, e eu preciso matar o processo do navegador.
Eu achei esse bug, não sei se é a mesma coisa. De qualquer forma, eles disseram que foi resolvido. E eu estou usando a versao 1.6.
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4916767
Quem puder me ajudar, eu agradeço.
Esse é meu código:
public class AppletExecutora extends Applet {
//
private String mensagem;
// conectores para uso da dll
private ConectorTesteAcpi conectorAcpi;
// botoes que acionam os testes
private Button botaoAcpi;
/**
*
*/
public void init() {
mensagem = "";
// copiar arquivos .dll para o diretorio windows.system32.
copiarBibliotecas("acpi.dll");
// inicia conector para a biblioteca .dll
conectorAcpi = new ConectorTesteAcpi();
//inicia botoes
botaoAcpi = new Button("Teste Acpi");
botaoAcpi.setVisible(true);
criarEventoTesteAcpi();
add(botaoAcpi);
}
private void criarEventoTesteAcpi() {
ActionListener tratarEvento = new ActionListener(){
public void actionPerformed(ActionEvent e) {
getAppletContext().showStatus("Testando Acpi...");
conectorAcpi.testarAcpi(70);
int resultadoTeste = conectorAcpi.getResultadoTeste();
if (resultadoTeste == ConectorTesteAcpi.FALHA){
exibirMensagem("FALHA NO TESTE DA ACPI.");
}else{
exibirMensagem("TESTE DA ACPI FINALIZADO COM SUCESSO.");
}
getAppletContext().showStatus("Concluído");
}
};
botaoAcpi.addActionListener(tratarEvento);
}
public void copiarBibliotecas(String arquivo) {
try {
InputStream sOrigem = this.getClass().getResourceAsStream("/lib/"+arquivo);
File destino = new File("/WINDOWS/System32/"+arquivo);
destino.createNewFile();
OutputStream sDestino = new FileOutputStream(destino);
byte[] buf = new byte[1024];
int len;
while ((len = sOrigem.read(buf)) > 0) {
sDestino.write(buf, 0, len);
}
sOrigem.close();
sDestino.close();
} catch (Exception except) {
exibirMensagem(except.getMessage());
}
}
/**
*
*/
public void start() {
exibirMensagem("Escolha o teste a ser realizado...");
}
/**
*
*/
public void stop() {
exibirMensagem("Interrompendo o executor do teste... ");
}
/**
*
*/
public void destroy() {
exibirMensagem("Finalizando o executor do teste...");
}
/**
*
*/
void exibirMensagem(String mensagem) {
this.mensagem = mensagem;
invalidate();
repaint();
}
/**
*
*/
public void paint(Graphics g) {
g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
g.drawString(mensagem, 5, getHeight()/2);
}
}