Galera estou com um problema aqui.
Eu tenho um programa cliente/servidor que tem o seguinte objetivo, o cliente, manda uma msg para o servidor ( o nome de um programa, como “cmd” ),
e o Servidor apenas tem que abrir o DOS (neste caso), ta tudo feito, só falta a parte de abrir o programa. hehehe
Segui os trechos de códigos mais relevantes.
O modo como eu implementei o método “executaPrograma” funciona em parte, ou seja ele só abre alguns programas, como: notepad, calculadora, mais
ele não consegui abrir o cmd.
Outra coisa, quando eu digito um programa que está com o nome(comando) errado ele da um erro tem como tratar isso?
Obrigado
private void executaPrograma( String msg ) throws IOException
{
displayMessage("\nMétodo ExecutarPrograma");
msg = msg + ".exe";
ProcessBuilder builder = new ProcessBuilder(msg);
try {
Process process = builder.start();
try {
TimeUnit.SECONDS.sleep(10);
} catch (InterruptedException ignored) {
}
process.destroy();
} catch (IOException e) {
e.printStackTrace();
}
//Runtime.getRuntime().exec("taskkill /f /im cmd.exe");
/*Process pro = Runtime.getRuntime().exec("cmd /C C:\\cmd.exe");
try{
pro.waitFor();
}catch(InterruptedException e )
{
}*/
}
private void processConnection() throws IOException
{
String msg;
do{
msg = dis.readUTF();
displayMessage( "\nSERVER >>> " + msg);
executaPrograma(msg);
//java.awt.Desktop.getDesktop().open( new File( msg ) );
//Runtime.getRuntime().exec("taskkill /f /im cmd.exe");
}while ( !msg.equals("SERVER >>> EXIT") );
}