C#启动和关闭外部进程的方法
2011-07-07 16:09
666 查看
C#启动和关闭外部进程的方法
2010-10-10 13:19:50| 分类: 默认分类 | 标签: |字号大中小 订阅 许多用户在程序开发过程中需要使用C#启动一个外部程序(进程),在使用完毕该外部程序后,又希望能将其关闭。我们特在此对C#启动和关闭外部进程的方法进行一个简单的介绍。C#启动外部程序(进程)有两种方法:一种是直接使用C#提供的Process类,利用类的函数操作来直接启动外部程序;另一种方法是使用传统的Win32 API函数CreateProcess来实现外部进程的启动。
使用C#提供的Process类来启动外部程序方法比较简单,例举代码如下:
using System.Diagnostics; //包含了Process类的定义
int myprocessID; //进程ID
//方法一:直接使用.Net提供的Process类来实现外部程序的启动
private void openButton_Click(object sender, EventArgs e)
{
Process myProcess = Process.Start('\\NandFlash\\SerialTST.exe', '');//启动外部进程
myprocessID = myProcess.Id; //获得该外部进程ID
}
使用传统的Win32 API函数的方法相对复杂,代码如下:
using System.Runtime.InteropServices; //使用外部Win32 API
#region Win32 API CreateProcess函数声明做函数申明。
[DllImport('coredll.Dll', EntryPoint = 'CreateProcess', SetLastError = true)]
extern static int CreateProcess(string strImageName, string strCmdLine,
IntPtr pProcessAttributes, IntPtr pThreadAttributes,
int bInheritsHandle, int dwCreationFlags,
IntPtr pEnvironment, IntPtr pCurrentDir,
IntPtr bArray, ProcessInfo oProc);
public class ProcessInfo
{
public int hProcess;
public int hThread;
public int ProcessID;
public int ThreadID;
}
#endregion
//方法二:使用Win32 API来实现外部程序的启动
private void openButton_Click(object sender, EventArgs e)
{
ProcessInfo pi = new ProcessInfo();
CreateProcess('\\NandFlash\\SerialTST.exe', '', IntPtr.Zero, IntPtr.Zero,
0, 0, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, pi);
myprocessID = pi.ProcessID; //得到该程序的ID
}
关闭外部进程的方法就是直接通过获得的该外部进程的ID来关闭它。这里只介绍使用.Net的Process类的方法:
//关闭外部进程
private void closeButton_Click(object sender, EventArgs e)
{
Process myProcessA = Process.GetProcessById(myprocessID); //通过ID关联进程
myProcessA.Kill(); //kill进程
相关文章推荐
- ubuntu12.04中OpenSSH守护进程sshd关闭和启动的方法
- C#实现启动,关闭与查找进程的方法
- 启动、关闭外部进程ShellExecute() 、CreateProcess()、TerminateProcess()、OpenProcess()==
- C#启动外部程序的几种方法以及等待外部程序关闭的方法
- 简单掌握Windows中C#启动外部程序进程的方法
- ubuntu 12.04中openssh守护进程sshd关闭和启动的方法
- Visual Studio启动、附加进程调试,多个Web Application时启动多个WebServer关闭方法
- C#启动外部程序以及等待外部程序关闭的几种方法
- C#启动外部程序的几种方法以及等待外部程序关闭的方法(转)
- jobTracker进程在启动后很快就自动关闭(前面两篇博客的方法都无法解决)
- c#关闭excel进程失败的解决方法
- 由于启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例,该连接将关闭的解决办法
- MyEclipse非法关闭后,重启MyEclipse并启动TomCat时报错解决方法
- Delphi 中关闭指定进程的方法
- Oracle cloud control 12c的启动、关闭及获取安装信息的方法
- cmd中查看端口使用并关闭端口服务的进程的方法
- Windows自动更新进程wuauclt.exe 进程服务关闭方法
- Win7系统关闭80端口占用程序进程的方法
- Form窗体点击关闭按钮并未关闭进程的解决方法
- vc 关闭程序后任务管理器进程中进程仍然存在的解决方法