Ntvdm.exe - erro ao definir o ambiente para o aplicativo

Caros,

Estou com um problema interessante.
Tenho um código que descompacta um arquivo através de um programa feito em C.
Faço a chamada desse programa da seguinte forma:

Process processo = Runtime.getRuntime().exec(comando);

Inicio o processo porque às vezes são descompactados vários arquivos e eu aguardo o término
de cada processo através do comando: processo.waitFor();

Esse código no Eclipse funciona normalmente, mas quando utilizo com o netbeans acontece o erro especificado no título.

Já tentei modificar o comando para:

Process processo = Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " + comando);

Deu certo! Porém não consigo saber quando o processo conclui, pois o rundll32 chama o programa em C e é como se o processo já tivesse sido finalizado.

Alguem já passou por algo similar?

Pela mensagem esquisita de erro esse programa é de 16 bits (Microsoft Visual C++ 1.5 ou mais antigo?)

De qualquer maneira, você pode tentar usar efetuar um “exec” de cmd.exe /c start /wait seuprogramaemC
(isso se uma tela preta for tolerável).

Caro Thingol,

Deu certo! Beleza pura mesmo.
Teria como minimizar a tela preta?

Abraços e obrigado

Albert Eije

Ora, é só pegar o help de start, que pode ser acessado no DOS por:

start /?

(só pra adiantar, acrescente a opção /min. Exemplo: cmd.exe /c start /min /wait seuprogramaemC)

Resolvido.

O start tem um parâmetro /min

Abraços

Albert Eije

Caro Thingol,

Tem noção do porque o comando inicial que eu utilizei funciona no Eclipse normalmente mas não no NetBeans?

Abraços

Albert Eije

Não tenho a menor idéia. Só sei que quando aparece “ntvdm” na jogada normalmente quer dizer “programa de 16 bits para Windows 3.1 ou MS-DOS 6.22 ou anterior”.