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

本文关键字:进程 文件 运行 | 更新日期: 2023-09-27 17:49:50

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

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

我在网上搜索过了,不知道。(

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

您可以使用Marshal类中的GetActiveObject方法获取word的活动/现有实例。

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

其他的都和创建新的word实例一样。

编辑:

词。应用程序是"Microsoft.Office.Interop.Word.dll"的一部分,所以您需要将此引用添加到您的项目中。

如果你不想使用早期绑定(添加引用),那么你可以通过晚期绑定来实现。你可以看看下面的例子:用Visual c# .NET绑定Office自动化服务器

没有通用的技术可以为您做到这一点。有些应用程序可能允许你从命令行指定一个额外的参数,或者在某处设置一个选项。

如果你需要这个功能为一个特定的应用程序,我建议你寻找一个API为该应用程序。Word本身在其COM API周围有一个托管包装器。

ShellExecute等价于。net

ShellExecute是你想要的。

ShellExecute是具有期望行为的Win32 API。它只是隐藏在ProcessStartInfo后面。

或外部SO:

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

如果您使用process . start ("mydoc.doc"),那么如果存在现有的Word进程,它将被重用。根据MSDN:

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