C#使用WinAPI中 WinExec 调用外部exe程序

6 篇文章 0 订阅
4 篇文章 0 订阅

1、添加引用

using System.Runtime.InteropServices;//调用外部的DLL

2、定义win32API

//调用exe
[DllImport("kernel32.dll")]
public static extern int WinExec(string exeName, int operType);

//生成执行数据
private void generateExecuteData_ItemClick(object sender, ItemClickEventArgs e)
{
    WinExec(@"C:\ExecuteRecords\OrdersExecutionRecords.exe", 5);

WinExec说明
1、方法的返回值。
方法成功,返回>31的整数值;
方法失败,返回:
 

返回结果说明
0系统内存或资源不够
ERROR_BAD_FORMAT非法的exe程序
ERROR_FILE_NOT_FOUND文件未找到
ERROR_PATH_NOT_FOUND路径未找到

2、参数
方法有两个参数:第一个参数lpCmdLine为路径+程序、第二个参数nCmdShow为展示方式。

2.1lpCmdLine
搜索顺序:
1、参数指定路径
2、应用所在路径
3、当前路径
4、system路径(可调用GetSystemDirectory方法查询)
5、window路径(可调用GetWindowsDirectory方法查询)
6、环境变量中path路径
2.2uCmdShow
具体说明如下

参数说明
0窗体隐藏
1激活并展示一个窗体。不管窗体为最小化或最大化状态,系统将其恢复至原始大小及位置。当初次使用时,建议使用本值
2激活窗体,并最小化
3最大化窗体
3激活窗体,并最大化
4展示窗体的大小及位置为最常用大小及位置
5展示窗体
6最小化窗体后,激活Z轴上的上一层窗体
7展示窗体,并设为最小化
8展示窗体的大小及位置为当前大小及位置
9重新初始化窗体
10 
11最小化窗体

 

 

是一个方法,但是我测试的是打开最大化的第三方exe程序时,想让第三方程序隐藏,用了所有的参数测试,不成功,问题猜测应该是第三方程序的框架最大化时框架有特定的设计,如前端显示、最上层等。

最终测试成功主要是因为延时问题,当你打开第三方程序后,不能立即去隐藏,需要电脑能够有时间获取到第三方程序的Handle时才能去隐藏。否则一直不成功!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值