分享

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

 实力决定地位 2017-12-14
      最近在用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 = Path.Combine(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;
                wordProcess.StartInfo.UseShellExecute = false;
                wordProcess.StartInfo.Arguments = WordPath + " /w";
                wordProcess.StartInfo.RedirectStandardOutput = true;
            }
            else
            { // 如果没有 Word 实例在运行,还是
                wordProcess.StartInfo.FileName = WordPath;
                wordProcess.StartInfo.UseShellExecute = true;
            }

            wordProcess.Start();
            // 当前进程一直在等待,直到该 Word 实例退出。
            wordProcess.WaitForExit();      
            wordProcess.Close();
       
        }


​但是值得注意的是:WordPath的路径不是随便都可以的,必须使用System.Environment.GetEnvironmentVariable("TEMP");的一个路径。实际值如下:C:\Users\ADMINI~1\AppData\Local\Temp\。如果是自己创建的文件夹路径会打不开。就这个要命的问题折腾了我2小时,所以写下此篇文章

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多