有想法的菜鸟 2021-11-22 14:10 采纳率: 100%
浏览 31
已结题

c# Precess.start()打开进程问题

        var pro = new Process();
         pro.StartInfo.Arguments = filePath;//文件路径
        pro.StartInfo.FileName = exePath;//exe路径
        pro.StartInfo.UseShellExecute = false;
        pro.StartInfo.RedirectStandardOutput = false;
        pro.StartInfo.RedirectStandardInput = true;
        pro.StartInfo.CreateNoWindow = false;
        pro.Start();

采用指定exe打开特定文件的方式。
我项目中先打开了一个ptf后打开了一个word,在进程切换时,打开ptf文件进程的MainWindowHandle可以在Process.GetProcesses()中找到。
但是打开word进程文件的MainWindowHandle就在Process.GetProcesses()中找不到了,这怎么解决?为什么会出现这个问题?
在进程启动的过程中,我也遇到了大家都遇到过的问题,那就是pro.MainWindowHandle=0,这里的采用进程睡眠的方式等待它不为零时再继续执行。

  • 写回答

1条回答 默认 最新

  • 於黾 2021-11-22 14:17
    关注

    因为你打开的不是exe,而是一个文档,只不过这个文档在windows系统下设置好了默认启动程序,你打开这个文档,系统会自动调用相应的程序去打开它。
    一个word文档当然没有对应的进程了
    如果你想监视word进程,那你应该把exe路径指向word的exe,把真正的文件路径当做参数给进去。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月11日
  • 已采纳回答 11月3日
  • 创建了问题 11月22日