C# 调用外部exe的三种方式.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 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,

文档评论(0)

152****2468 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档