想到的方法不知道合不合适:
1.创建一个批处理文件,用于打开doc文件,然后没过30秒去判定一下这个文件是否关闭了,关闭了则退出,无法打开文件也退出。
2.process中执行这个批处理文件,然后WaitForExit();
3.通过判定process的ExitCode来判定是否执行成功。
代码如下:
批处理
@echo off
setlocal ENABLEEXTENSIONS
start "" "%~f1" /wait
if not %errorlevel%==0 exit
:start
ping 127.0.0.1 /w 30000 >nul
rename "%~f1" "%~nx1"
if errorlevel 1 goto start
if errorlevel 0 exit
C#测试代码
class Program
{
static void Main(string[] args)
{
string batchPath = "\"G:\\1 3\\1.bat\"";
string docPath = "\"G:\\1 3\\2.doc\"";
ProcessStartInfo startInfo = new ProcessStartInfo(batchPath);
startInfo.Arguments = docPath;
startInfo.CreateNoWindow = false;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
Process process = Process.Start(startInfo);
process.WaitForExit();
if (process.ExitCode != 0)
{
Console.WriteLine("文件打开存在错误");
}
Console.WriteLine(process.ExitCode);
Console.ReadLine();
}
}
在闯入路径增加了引号,批处理中增加了启用命令行扩展
确实存在你所说的问题,WINWORD 进程在打开多个文件只会创建一次,而且要等到所有文件关闭后才退出。
请问 WaitForExit 后执行什么操作,或许有 Process 外的其它方式可以解决你的问题。