Ich weiß, wie man eine Datei in einem neuen Prozess in C # startet (zB öffne eine .doc-Datei in einem neuen Word-Prozessfenster).
Aber wie öffne ich eine Datei in einem "laufenden" Prozess? Zum Beispiel habe ich bereits einen laufenden Word-Prozess, wie man es fordert, um eine Datei von einem C # -Programm zu öffnen?
Ich habe das Internet durchsucht und habe keine Ahnung. : (
Mit GetActiveObject
Alles andere ist wie beim Erstellen einer neuen Wortinstanz.
BEARBEITEN:
Word.Application ist Teil von " Microsoft.Office.Interop.Word.dll "Sie müssen dies also hinzufügen Verweis auf Ihr Projekt.
Wenn Sie keine Early-Bindung verwenden möchten (um eine Referenz hinzuzufügen), können Sie dies über Late Binding tun. Sie können sich diese Beispiele ansehen: Bindung für Office-Automatisierungsserver mit Visual C # .NET
Es gibt keine generische Technik, die das für Sie tun kann. In einigen Anwendungen können Sie möglicherweise einen zusätzlichen Parameter über die Befehlszeile angeben oder eine Option festlegen.
Wenn Sie diese Funktionalität für eine bestimmte Anwendung benötigen, sollten Sie nach einer API für diese Anwendung suchen. Word selbst hat einen Managed-Wrapper um seine COM-API.
ShellExecute-Entsprechung in .NET
ShellExecute ist was Sie wollen.
ShellExecute ist die Win32-API, die das gewünschte Verhalten aufweist. Es ist nur hinter ProcessStartInfo.UseShellExecute für .NET versteckt.
Oder außerhalb SO:
Wenn Sie Process.Start ("meindoc.doc") verwenden, wird ein vorhandener Word-Prozess wiederverwendet. Laut MSDN :
Wenn der Prozess bereits läuft, wird kein zusätzlicher Prozess gestartet. Stattdessen wird die vorhandene Prozessressource wiederverwendet und keine neue Prozesskomponente erstellt.