c# – 等待进程启动

发布时间:2020-01-05 发布网站:大佬教程
大佬教程收集整理的这篇文章主要介绍了c# – 等待进程启动大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我试图做的是从我的程序启动资源管理器然后在资源管理器前弹出我的应用程序或者只是在我的应用程序后面启动资源管理器…

目前我有探险家开始然后我有动作将我的应用程序带到前面但探险家可能需要几秒钟才能开始,这会弄乱我的整个事件链.

这就是我目前正在做的事情:

Process process = new Process();
 process.StartInfo.FileName = environmentVariable + "\\explorer.exe";
 process.StartInfo.Arguments = !string.IsNullOrEmpty(this.uxMainFolder.Text) ? this.uxMainFolder.Text + "\\" + path2 : Path.Combine("R:\\Project",path2);

 try
 {
      process.Start();

      this.WindowState = FormWindowState.Minimized;
      this.Show();
      this.WindowState = FormWindowState.Normal;
 }
 finally
 {
      process.Dispose();
 }

你可以解决这个问题的任何亮点将非常感激.

编辑:我正在寻找一些事件,我可以在加载资源管理器后调用TopMost或我的最小化/显示/正常方法.

该程序生成一个项目目录,其中包含每个项目类型的所有必需文档,并在资源管理器中弹出该目录.

对于想要一次创建10个或20个项目的用户来说,这意味着生活质量的改变.

解决方法

丑陋的方式

通常,在等待进程完成加载时,您可以调用

Process.WaitForInputIdle()

MSDN开始:

使用explorer.exe时,这很可能无法正常工作,因为此过程通常会生成子进程并立即死亡.

解决方法是启动进程,Sleep for say,250-500ms,然后使用一些godawful hack找到新进程,然后在该进程上调用WaitForInputIdle.

替代

如果您愿意最小化explorer.exe,可以这样做:

ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "explorer.exe";
psi.Arguments = "/separate";
psi.UseShellExecute = true;
psi.WindowStyle = ProcessWindowStyle.Minimized;
Process.Start(psi);

大佬总结

以上是大佬教程为你收集整理的c# – 等待进程启动全部内容,希望文章能够帮你解决c# – 等待进程启动所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ群:277859234,请注明来意。