Ich versuche eine App zu erstellen, die Aktionen zu bestimmten Zeiten ausführt (ähnlich wie der Windows Taskplaner). Ich verwende derzeit Process.Start (), um die von der Aufgabe benötigte Datei (oder Exe) zu starten.
Ich starte einen Prozess, indem ich eine Datei (eine .mp3) aufruft und der Prozess startet WMP (da es die Standardanwendung ist). So weit, ist es gut. Jetzt möchte ich diesen Prozess beenden. Ich weiß, dass es für das Process.Start (string, string) normales Verhalten ist, in diesem Fall nichts zurückzugeben (null in C #).
Also frage ich, wie kann ich WMP schließen, wenn ich es über Process.Start (string, string) ??
aufgerufen habeBearbeiten:
Bitte beachten Sie, dass ich WMP nicht direkt mit Process.Start () öffne, und dies ist die Zeile, mit der ich den Prozess führe:
VB: Me._proc.s.Add (Prozess.Start (Me._procInfo))C #: this._procs.Add (Prozess.Start (this._procInfo))
_procInfo ist eine ProcessStartInfo-Instanz. _procInfo.FileName ist "C: \ route \ myFile.mp3". Deshalb öffnet WMP. In jedem Fall geben alle Start () -Methoden, mit Ausnahme der Instanz, die einen booleschen Wert zurückgibt, nichts zurück (null in C #), da WMP nicht der Prozess ist, der direkt erstellt wurde (beachten Sie, dass WMP ausgeführt wird und der Lied spielt).
Tu es nicht so.
Es ist nicht klar, ob die Intention Ihres Programms "Immer mit Windows Media Player starten" oder "Mit dem registrierten MP3-Player starten" starten soll, was z. B. iTunes sein könnte.
Wenn Sie WMP benötigen, verwenden Sie Process.Start mit dem vollständigen Pfad zu Windows Media Player.
Wenn Sie den registrierten MP3-Player benötigen, können Sie die korrekte exe mit der hier gezeigte Code . Starten Sie den Prozess erneut mit diesem exe-Pfad und übergeben Sie die MP3-Datei als Parameter.
Process.Start (Zeichenfolge, Zeichenfolge) gibt Ihnen eine Prozessressource zurück, mit der Sie den neuen Prozess weiter steuern können.
%Vor% Dieselbe Struktur funktioniert, wenn Sie Process.Start(string)
oder eine andere statische Process.Start-Überladung verwenden.
Process.Start()
ist eine Member-Funktion und ordnet eine neue oder wiederverwendete Process
der von diesem identifizierten Process
-Komponente zu. Das Verhalten dieser Methode hängt von den Eigenschaften des durch this
identifizierten Prozesses ab.
Wenn Sie das registrierte Windows-Programm zum Öffnen der Datei zulassen, anstatt das gewünschte Programm auszuwählen. Dann rate ich dir, den Prozess nicht zu töten.
Der Grund dafür ist, dass Ihr Programm die Standardanwendung verwendet, diese Anwendung jedoch bereits verwendet wird und nicht gespeicherte Daten enthält. Ein Benutzer würde nicht glücklich sein, dass Ihr Programm die Anwendung mit der neuen Datei überholt und dann den Prozess beendet, der bereits vom Benutzer für einen anderen Zweck verwendet wurde. Sicher, es wird möglicherweise nicht verwendet, aber Sie müssen den schlimmsten Fall berücksichtigen.
Daher empfehle ich, was vorgeschlagen wurde. Verwenden Sie Process.Start () mit dem vollständigen Pfad zum zu verwendenden Programm und der zu öffnenden Datei.
Ich habe versucht, .txt-Datei zu öffnen, und der Prozess meines Texteditors wurde zurückgegeben, auch versuchte ich. mp3 von WMP und es gab null zurück. Es kommt also auf die Anwendung an. Musst du mp3 nur mit WMP laufen? Wenn nicht, können Sie definitiv die Anwendung erstellen, die das Process-Objekt zurückgibt.
proc = Process.Start(filename)
sollte funktionieren, aber wie Sie sagen, gibt es null statt eines Prozesses zurück.
Das scheint Windows Media Player zu sein. Andere Anwendungen geben den Prozess zurück. Sie können den Windows Media Player-Prozess abrufen, indem Sie die Anwendung in der Startmethode angeben.
%Vor%Dann können Sie es normalerweise töten.
%Vor%Sie müssen wahrscheinlich den Speicherort der mit .mp3-Dateien verbundenen Anwendung aus der Registrierung abrufen.