- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
C#?调用外部exe的三种方式
目录方式一:直接调用Process类来实现:方式二:利用shell32.dll,调用ShellExecute方法方式三:kernel32.dll,调用WinExec方法C#调用可执行exe文件几种方法小结1.利用进程池方式启动2.遮蔽CLI启动窗口3.异步启动方式参考资料:当我们用C#来开发客户端程序的时候,总会不可避免的需要调用外部程序或者访问网站
方式一:直接调用Process类来实现:
usingSystem.Diagnostics;
Processp=Process.Start(program.exe);
p.WaitForExit();//本行代码不是必须,但是很关键,限制等待外部程序退出后才能往下执行
当exe程序需要传递参数时:
usingSystem.Diagnostics;
Processp=Process.Start(program.exe参数);
p.WaitForExit();//本行代码不是必须,但是很关键,限制等待外部程序退出后才能往下执行
方式二:利用shell32.dll,调用ShellExecute方法
ShellExecute方法可以打开一个已注册的文件、打开一个目录、打印一个文件等等,可以根据返回值判断是否调用成功。函数如下:
IntPtrShellExecute(IntPtrhwnd,stringlpOperation,stringlpFile,stringlpParameters,stringlpDirectory,ShowCommandsnShowCmd);
其中,各参数信息如下:
hwnd:指定父窗口句柄,未指定时可以为null或者为0lpOperation:指定操作,值可以为【open】、【print】、【explore】。open:执行由lpFile参数指定的程序,或打开由lpFile参数指定的文件或文件夹;print:打印由lpFile参数指定的文件;explore:浏览由lpFile参数指定的文件夹。当参数设为null时,默认为open。lpFile:指定要打开的文件或程序lpParameters:给要打开的程序指定参数;如果打开的是文件,值为nulllpDirectory:默认目录nShowCmd:打开设置项,具体意义如下:
SW_HIDE=0;//隐藏
SW_SHOWNORMAL=1;//用最近的大小和位置显示,激活
SW_NORMAL=1;//同SW_SHOWNORMAL
SW_SHOWMINIMIZED=2;//最小化,激活
SW_SHOWMAXIMIZED=3;//最大化,激活
SW_MAXIMIZE=3;//同SW_SHOWMAXIMIZED
SW_SHOWNOACTIVATE=4;//用最近的大小和位置显示,不激活
SW_SHOW=5;//同SW_SHOWNORMAL
SW_MINIMIZE=6;//最小化,不激活
SW_SHOWMINNOACTIVE=7;//同SW_MINIMIZE
SW_SHOWNA=8;//同SW_SHOWNOACTIVATE
SW_RESTORE=9;//同SW_SHOWNORMAL
SW_SHOWDEFAULT=10;//同SW_SHOWNORMAL
SW_MAX=10;//同SW_SHOWNORMAL
返回值说明:返回值大于32时,即执行成功。执行失败的返回值具体意义如下:
0=0//内存不足
ERROR_FILE_NOT_FOUND=2;//文件名错误
ERROR_PATH_NOT_FOUND=3;//路径名错误
ERROR_BAD_FORMAT=11;//EXE文件无效
SE_ERR_SHARE=26;//发生共享错误
SE_ERR_ASSOCINCOMPLETE=27;//文件名不完全或无效
SE_ERR_DDETIMEOUT=28;//超时
SE_ERR_DDEFAIL=29;//DDE事务失败
SE_ERR_DDEBUSY=30;//正在处理其他DDE事务而不能完成该DDE事务
SE_ERR_NOASSOC=31;//没有相关联的应用程序
代码实现如下:
//引入库
[DllImport(shell32.dll)]
staticexternIntPtrShellExecute(IntPtrhwnd,stringlpOperation,
您可能关注的文档
最近下载
- 京瓷哲学手册.pdf VIP
- 体例格式12:工学一体化课程《小型网络安装与调试》任务4教学单元3教学单元活动方案.docx VIP
- 体例格式12:工学一体化课程《小型网络安装与调试》任务4教学单元5教学单元实施计划.docx VIP
- 体例格式12:工学一体化课程《小型网络安装与调试》任务4教学单元6教学单元活动方案.docx VIP
- 小学教师的专业能力与成长.pptx VIP
- 体例格式12:工学一体化课程《小型网络安装与调试》任务4教学单元7教学单元活动方案.docx VIP
- T_CECS 1280-2023 机电工程装配式支吊架安装及验收规程.docx
- 胸痛中心应知应会试题试题(附答案).docx VIP
- 热带雨林·生态环境课件.ppt VIP
- 炎症因子和原发性痛经相关性的研究进展_谢丹.pdf VIP
文档评论(0)