许多用户在程序开发过程中需要使用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进程
}
移动广告平台 Mintegra通过美国权威开源安全机构WhiteSource的安全审计
苹果或打破先前iPhone销售记录
关于电机性能提升的控制如何直接影响效率和收益
SK海力士在CES 2024展示未来AI基础设施关键技术
电机控制器的组成 电动汽车驱动电机控制器的基本结构
英创信息技术C#启动和关闭外部进程的方法介绍
什么是感抗,感抗是什么意思
LED显示屏目前主要存在的技术问题
本润谐波桂新飞以“国内外谐波减速器性能差异探讨”为主题的演讲
技术资讯 | 什么是 4 针 PWM 接头,其工作原理是什么?
Vishay推出获AEC-Q100认证的超小型、高集成度、高灵敏度环境光传感器
雷卯车载信息娱乐系统保护器件和方案
行易道交通毫米波雷达解决方案满足不同场景下的应用需求
aidc是什么意思_aidc的简介
希荻微推出USB Type-C模拟音频开关芯片HL5281
韩法院禁止三星前员工跳槽中国公司,尖端产业人才跳槽京东方
台积电将在南科六厂旁新建一座8寸厂 用于客户特殊制程要求
Docker Linux 容器的一些实际用例
量子计算机走出“象牙塔” 中国已经落后
软件模拟器PICSIM调试开发