标题:
C#启动和关闭外部进程的方法
[打印本页]
作者:
emtronix20105
时间:
2010-10-11 10:28
标题:
C#启动和关闭外部进程的方法
本帖最后由 yumuzi 于 2010-10-11 13:51 编辑
许多用户在程序开发过程中需要使用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进程
作者:
venus8654
时间:
2010-10-13 09:50
C#应该跟JAVA差不多啊
Ndamukong Suh Jersey
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0