Frage

Verwandte Frage [Stackoverflow] hier .

Ich versuche, die oben zu tun, aber ich mag den Prozess einen Schritt weiter gehen. Ich möchte eine beliebige Datei öffnen, den Standard-Editor für den Dateityp verwendet wird. Von diesem Punkt möchte ich meine Benutzer ermöglichen, mit der Datei zu interagieren, wie sie es normalerweise, oder weiter in meiner Anwendung arbeiten. Die Erweiterung ist das, was geschieht, wenn der Benutzer die Bearbeitung beendet ist. Gibt es eine Weise, die ich eine enge erfassen kann (und im Idealfall speichern) Ereignis aus der externen Anwendung und verwenden, die als Auslöser etwas anderes zu tun? Für meine Zwecke tun würde, das Schließen der externen Anwendung zu verfolgen.

Ich kann im konkreten Fall tun. Zum Beispiel kann ich eine Word-Instanz aus meiner Anwendung öffnen und die Ereignisse verfolgen, die meine Bewerbung interessieren. Allerdings mag ich entkoppeln meiner Anwendung von Word.I möchte meine Benutzer ermöglichen, jeden beliebigen Dokument-Editor ihrer Wahl zu verwenden, dann verwalten die Speicherung der Datei hinter den Kulissen diskret bearbeitet wird.

War es hilfreich?

Lösung

Sie können dies auf die referenzierten Frage in einer ähnlichen Art und Weise tun, aber die Syntax ist etwas anders:

System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo = 
    new System.Diagnostics.ProcessStartInfo("C:\...\...\myfile.html");
process.Start();
process.WaitForExit(); // this line is the key difference

Die WaitForExit () Anruf wird blockiert, bis die andere Anwendung geschlossen ist. Sie würden diesen Code in einem separaten Thread verwenden, so dass der Benutzer halten kann Ihre Anwendung in der Zwischenzeit verwendet wird.

Andere Tipps

Mit dem FileSystemWatcher Klasse zu sehen Änderungen an der Datei.

Bearbeiten : Sie können auch die Exited Ereignis des Process Objekt, um herauszufinden, wenn das Programm beendet wird. Beachten Sie jedoch, dass das wird Ihnen nicht sagen, von der Benutzer die Dateien schließt jedoch nicht den Prozess beenden. (Das ist besonders wahrscheinlich in Word).

Um Dateiänderung zu hören, können Sie die Filesystemwatcher und hören für eine Änderung des Datums der letzten Änderung.

Sie können auch den Prozess überwachen und überprüfen dann Datei, wenn der Prozess schließen.

Ich fand diesen nützlichen Tipp Online gerade jetzt. Es scheint zu sein, was Sie suchen. diesem Artikel (Link gebrochen) hat einige mehr Details und nützlich, um den Punkt Tipps C # -Programmierung.

string filename = "instruction.txt";
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(@filename);

System.Diagnostics.Process rfp = new System.Diagnostics.Process();
rfp = System.Diagnostics.Process.Start(psi);

rfp.WaitForExit(2000);

if (rfp.HasExited)
{
   System.IO.File.Delete(filename);
}

//execute other code after the program has closed
MessageBox.ShowDialog("The program is done.");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top