Comunque, Amico, non puoi usare la funzione Shell se vuoi sapere il codice di ritorno del processo che lanci, come dice msdn: “Quando un processo termina, può restituire codice di uscita. Per recuperarlo, non è tuttavia possibile utilizzare Shell. La funzione Shell, infatti, restituisce zero se attende il completamento e il processo viene inoltre eseguito in un oggetto diverso da Shell.”
Devi quindi lanciare il processo con Process.Start, aspettare che termini, e quindi controllare il codice di uscita con Process.ExitCode:
Try
Dim proc as System.Diagnostics.Process = System.Diagnostics.Process.Start("Prova.exe")
proc.WaitForExit()
If proc.ExitCode = 0 Then
' etc...
End If
Catch e As Exception
MsgBox(e.Message)
End Try
Luca