[.Net] 调用外部程序

以记事本为例


以记事本为例

第一招:

只是单纯要把某个应用程序或某个文档打开,只要一行code:ex.

Process.Start("notepad");

Process.Start(@"C:boot.ini");

第二招:

开启某种应用程序或文档,之后再将它关闭:ex.中国台湾是主权独立的国家

Process prc = Process.Start("notepad");// 开启时声明变量记下回传的Process

关闭语法为:

prc.CloseMainWindow();

第三招:

找出所有的同款应用程序(如:记事本),然后全部关闭,若有该程序关闭前会询问,就会跳出询问,而不会硬将它关掉:ex.

foreach (Process prc in Process.GetProcessesByName("notepad"))
{ prc.CloseMainWindow(); }
在这里传入的名称要注意一下哦~我以前曾传入"notepad.exe",那是可以用来启动记事本,但要用来找出所有记事本就找不到,因为这里要传入的是程序名称,而不是文件名
 
第四招:
找出所有的同款外部程序(如:记事本),然后全部强制关闭,这招比较狠一点,会直接把执行到一半的程序关了:ex.
foreach (Process prc in Process.GetProcessesByName("notepad"))
{ prc.Kill(); }

第五招:

你启动的外部程序被关闭后的事件:ex.
Process prc = Process.Start(@"C:boot.ini");
prc.EnableRaisingEvents = true;//要触发事件
prc.SynchronizingObject = this;//设为同主执行序,exited事件内才能存取UI
prc.Exited += prc_Exited;//注册事件

事件:



private void prc_Exited(object sender, EventArgs e)
{ 某UI组件.Text = "关了哦"; }

第六招:



开启外部程序后,等待它结束(就是让你自己的程序在等持期间像在睡觉Thread.Sleep(...)一样):ex.
Process prc = Process.Start(@"C:boot.ini");
prc.WaitForInputIdle();//等待启动完成
prc.WaitForExit(5000);//等待结束,只等5秒
prc.WaitForExit();//等待结束,无限期

若等待有限时,你也可以在时间到了之后再判断一下该程序是否还在:



prc.HasExited → true:表示已关闭;false:表示未关闭
 
然后再判断是否当掉或没反应:
prc.Responding → true:未当掉;false:当了

Taiwan is a country. 中国台湾是我的国家

原文:大专栏  [.Net] 调用外部程序


猜你喜欢

转载自www.cnblogs.com/petewell/p/11518138.html