我知道如何在C#中的新进程中启动文件(例如,在新的Word进程窗口中打开.doc文件)。
但是,如何在“运行”过程中打开文件?例如,我已经有一个正在运行的Word进程,如何要求它从C#程序打开一个文件?
我在互联网上搜索并且不知道。 :(
答案 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之外:
答案 3 :(得分:0)
如果您使用Process.Start(“mydoc.doc”),那么如果存在现有的Word进程,它将被重用。 根据{{3}}:
如果进程已在运行,则不会启动其他进程。相反,重用现有流程资源,不会创建新的流程组件