如何要求正在运行的进程打开文件?

时间:2011-04-13 09:05:20

标签: c# .net file process

我知道如何在C#中的新进程中启动文件(例如,在新的Word进程窗口中打开.doc文件)。

但是,如何在“运行”过程中打开文件?例如,我已经有一个正在运行的Word进程,如何要求它从C#程序打开一个文件?

我在互联网上搜索并且不知道。 :(

4 个答案:

答案 0 :(得分:5)

您可以使用GetActiveObject类中的Marshal方法获取有效/现有单词实例。

Word.Application wordApp = (Word.Application)Marshal.GetActiveObject("Word.Application");

其他所有内容都与创建新单词实例时相同。

修改

Word.Application是“Microsoft.Office.Interop.Word.dll”的一部分,因此您需要将此引用添加到您的项目中。

如果您不想使用早期绑定(添加引用),则可以通过Late binding执行此操作。您可以查看以下示例:Binding for Office automation servers with Visual C# .NET

答案 1 :(得分:3)

没有可以为您执行此操作的通用技术。某些应用程序可能允许您从命令行指定额外参数或在某处设置选项。

如果您需要针对特定​​应用程序使用此功能,我建议您查找该应用程序的API。 Word本身有一个托管包装器,它的COM API。

答案 2 :(得分:0)

ShellExecute equivalent in .NET

ShellExecute就是你想要的。

ShellExecute是具有所需行为的Win32 API。它只是隐藏在.NET的ProcessStartInfo.UseShellExecute后面。

或者在SO之外:

http://www.vbforums.com/archive/index.php/t-257526.html

答案 3 :(得分:0)

如果您使用Process.Start(“mydoc.doc”),那么如果存在现有的Word进程,它将被重用。 根据{{​​3}}:

  

如果进程已在运行,则不会启动其他进程。相反,重用现有流程资源,不会创建新的流程组件