2017-06-08 4 views
1

Ich habe eine .exe-Datei. Ich möchte die .exe-Datei mit Befehl ausführen. Die .exe-Datei erzeugt zwei Dateien, wenn sie ausgeführt wird, ist .xls-Datei und eine andere ist .htm-Datei. Wenn ich die EXE-Datei über .NET-Code ausführe, werden die zwei Dateien, die produziert werden sollen, nicht erstellt. Unten ist mein Code:process.start() Methode erzeugt keine Dateien

static void Main(string[] args) 
    { 
     Process.Start(@"C:\Test\test.exe"); 
} 

Ich bin nicht sicher, ob der Prozess ausgeführt wird immer, aber ich habe keine Fehler sehen. Außerdem sehe ich keine produzierten Dateien. Wenn ich den Prozess manuell ausführe, kann ich die zwei Dateien sehen, die in demselben Ordner erzeugt wurden, in dem sich die .exe-Datei befindet.

Jede Hilfe wird geschätzt.

+0

Können Sie die Linie mit Try-Catch-wickeln und sehen, ob eine Ausnahme geschieht? –

+1

Wenn Sie einfach auf die EXE im Windows Explorer doppelklicken, was passiert? Generiert es Ihre Dateien? Wenn nicht, würde ich nicht erwarten, Process.Start anders zu nennen. – mason

+0

* "Ich kann die beiden Dateien sehen, die in demselben Ordner erstellt wurden, in dem sich die .exe-Datei befindet." Wie ermittelt Test.exe, wo die Dateien erstellt werden? Wenn es auf einem aktuellen Verzeichnis basiert, ist es möglich, dass sie in Ihrem bin-Ordner erstellt werden und nicht dort, wo sich die ausführbare Datei befindet. –

Antwort

0

Versuchen Sie warten auf den Prozess beenden zu:

Process.Start(@"C:\Test\test.exe").WaitForExit(); 

besser für die Fehlersuche:

Process process = Process.Start(@"C:\Test\test.exe"); 
int id = process.Id; 
Process runningProc = Process.GetProcessById(id); 
runningProc.WaitForExit(); 
+0

Warum machen Sie den zusätzlichen Schritt 'Process.GetProcessById (id);', warum nicht einfach 'process.WaitForExit()'? –

+1

'Process.GetProcessById (id);' führt eine Ausnahme durch, wenn die ID nicht gefunden wird. Dadurch können Sie überprüfen, ob der Prozess tatsächlich ausgeführt wird. – RoJaIt

+1

Wenn Sie eine ID über 'process.Id 'hatten, bedeutet das, dass sie irgendwann ausgeführt wurde. Sie erhalten keine ID, wenn das Programm nicht ausgeführt wird. –

Verwandte Themen