Ricky的开发手记

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
经过一番研究,终于找到了有没有Word实例运行的情况下都能实现上一篇文章中的要求的方法,代码如下:
            string tempPath = System.Environment.GetEnvironmentVariable("TEMP");
            
string fileName = Path.Combine ( tempPath, "推理01.doc");
            
string winwordPath = "";

            
// 判断系统中是否已经有 Word 实例在运行。
            Process[] wordProcesses = Process.GetProcessesByName("winword");
            
foreach ( Process process in wordProcesses)
            
{
                Debug.WriteLine( process.MainWindowTitle );
                winwordPath 
= process.MainModule.FileName;        // 如果有的话获得 Winword.exe 的完全限定名称。
                break;
            }


            Process wordProcess 
= new Process();

            
if ( winwordPath.Length > 0 )    // 如果有 Word 实例在运行,使用 /w 参数来强制启动新实例,并将文件名作为参数传递。
            {
                wordProcess.StartInfo.FileName 
= winwordPath;
                wordProcess.StartInfo.UseShellExecute 
= false;
                wordProcess.StartInfo.Arguments 
= fileName + " /w";
            }

            
else                            // 如果没有 Word 实例在运行,还是
            {
                wordProcess.StartInfo.FileName 
= fileName;
                wordProcess.StartInfo.UseShellExecute 
= true;
            }


            wordProcess.Start();
            wordProcess.WaitForExit();        
// 当前进程一直在等待,直到该 Word 实例退出。
            wordProcess.Close();
posted on 2006-04-07 18:04  Ricky  阅读(1650)  评论(1编辑  收藏  举报