.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)

时间:2022-08-29 14:50:00
经过一番研究,终于找到了有没有Word实例运行的情况下都能实现上一篇文章中的要求的方法,代码如下:
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)             string  tempPath  =  System.Environment.GetEnvironmentVariable( " TEMP " );
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)            
string  fileName  =  Path.Combine ( tempPath,  " 推理01.doc " );
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)            
string  winwordPath  =   "" ;
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)            
//  判断系统中是否已经有 Word 实例在运行。
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)
            Process[] wordProcesses  =  Process.GetProcessesByName( " winword " );
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)            
foreach  ( Process process  in  wordProcesses)
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续).NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)            
{
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)                Debug.WriteLine( process.MainWindowTitle );
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)                winwordPath 
= process.MainModule.FileName;        // 如果有的话获得 Winword.exe 的完全限定名称。
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)
                break;
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)            }

.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)            Process wordProcess 
=   new  Process();
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)            
if  ( winwordPath.Length  >   0  )     //  如果有 Word 实例在运行,使用 /w 参数来强制启动新实例,并将文件名作为参数传递。
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续).NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)
             {
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)                wordProcess.StartInfo.FileName 
= winwordPath;
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)                wordProcess.StartInfo.UseShellExecute 
= false;
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)                wordProcess.StartInfo.Arguments 
= fileName + " /w";
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)            }

.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)            
else                              //  如果没有 Word 实例在运行,还是
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续).NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)
             {
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)                wordProcess.StartInfo.FileName 
= fileName;
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)                wordProcess.StartInfo.UseShellExecute 
= true;
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)            }

.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)            wordProcess.Start();
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)            wordProcess.WaitForExit();        
//  当前进程一直在等待,直到该 Word 实例退出。
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)
            wordProcess.Close();
.NET 中 System.Diagnostics.Process 类应用中碰到的问题(续)