C++程序中调用exe文件的一种方法

        我们在开发项目时,通常需要通过一个程序调用另一个程序,在这里介绍一中在C++程序中调用exe文件的方法:使用ShellExcecuteEx函数。

      使用ShellExcecuteEx相对于其他的调用exe的方法,例如:使用system函数,使用exec或者是execv函数,使用WinExec函数,使用CreateProcess函数。前者在前台打开程序、控制权限等发面都有优势,这里首先介绍函数原型,函数原型如下:

      BOOL ShellExecuteEx(SHELLEXECUTEINFO pExecInfo),这里有必要对SHELLEXECUTEINFO 数据类型进行一下解释。SHELLEXECUTEINFO 定义如下:

typedef struct _SHELLEXECUTEINFO
{
      DWORD cbSize;//通常取值sizeof(SHELLEXECUTEINFO)
      ULONG fMask;//常见取值SEE_MASK_NOCLOSEPROCESS
      HWND hwnd;//一般为NULL
      PCTSTR lpVerb;//打开程序为_T("open")
      PCTSTR lpFile;//你要打开的EXE文件的路径。
      PCTSTR lpParameters;//可以为空
      PCTSTR lpDirectory;//一般取NULL
      int nShow;//这个取值较多,有SW_MAXIMIZE,SW_HIDE,SW_NORMAL等等,其用开控制窗口是否显示及大小
      HINSTANCE hInstApp;//一般为NULL,下面的不用赋值也行。
      PVOID lpIDList;
      PCTSTR lpClass;
      HKEY hkeyClass;
      DWORD dwHotKey;
      union
      {
            HANDLE hIcon;
            HANDLE hMonitor;
       } DUMMYUNIONNAME;

       HANDLE hProcess;
} SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO;

下面贴出我的代码,在MFC程序中使用:

CString path = "C:\\Text\\text.exe";
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; 
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = _T("open");
ShExecInfo.lpFile = _T(path);
ShExecInfo.lpParameters = _T(" "); //-a a
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_MAXIMIZE SW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值