使用C#重新开启一个WORD进程并打开WORD文件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使用C#重新开启一个WORD进程并打开WORD文件
最近在用VSTO开发WORD插件,了解过程中发现如果Word插件设置为启动时加载,那么它的说法就是启动一个Word进程的时候加载,
1.如果只是打开一个WORD文件的话那么并不会新建一个WINWORD进程,从而导致我的插件没法加载
2.如果使用MSWord.Application app = new MSWord.Application();对象去打开WORD话,在插件获取过程中有一定问题,问题就是我会用到插件Globals.ThisAddIn.Application.ActiveDocument获取文档,它会提示我文件还没有打开,在折腾至于我在网上看见了别人写的一篇文章代码如下:
/// <summary>
/// 打开Word
/// </summary>
/// <param name="WordPath"></param>
public static void OpenWord(string WordPath)
{
//string tempPath = System.Environment.GetEnvironmentVariable("TEMP");
//var filepath = bine(tempPath, WordPath);
string winwordPath = "";
Process[] wordProcesses = Process.GetProcessesByName("WINWORD");
foreach (Process process in wordProcesses)
{
// Debug.WriteLine(process.MainWindowTitle);
// 如果有的话获得 Winword.exe 的完全限定名称。

winwordPath = process.MainModule.FileName;
break;
}
Process wordProcess = new Process();
if (winwordPath.Length > 0) // 如果有 Word 实例在运行,使用 /w 参数来强制启动新实例,并将文件名作为参数传递。

{
wordProcess.StartInfo.FileName = winwordPath;
eShellExecute = false;
wordProcess.StartInfo.Arguments = WordPath + " /w";
wordProcess.StartInfo.RedirectStandardOutput = true;
}
else
{ // 如果没有 Word 实例在运行,还是
wordProcess.StartInfo.FileName = WordPath;
eShellExecute = true;
}
wordProcess.Start();
// 当前进程一直在等待,直到该 Word 实例退出。

wordProcess.WaitForExit();
wordProcess.Close();
}
但是值得注意的是:WordPath的路径不是随便都可以的,必须使用System.Environment.GetEnvironmentVariable("TEMP");的一个
路径。

实际值如下:C:\Users\ADMINI~1\AppData\Local\Temp\。

如果是自己创建的文件夹路径会打不开。

就这个要命的问题折腾了我2小时,所以写下此篇文章。

相关文档
最新文档