[.Net] 调用外部程序

Posted petewell

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[.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] 调用外部程序


以上是关于[.Net] 调用外部程序的主要内容,如果未能解决你的问题,请参考以下文章

外部 dll 调用后 log4net 写入错误的日志文件

vb.net2005中如何调用外部vbs文件

QProcess 进程类—调用外部程序

Asp.Net - 将处理卸载到外部应用程序

Java运行外部程序(Apache Commons Exec)

将外部程序集加载到新的应用程序域并调用“基类”的方法