C++/MFC如何使用进程控制外部exe程序(打开和关闭)

C++/MFC如何使用进程控制外部exe程序(打开和关闭)

打开外部exe程序:
//调用ShellExecute函数
HINSTANCE hNewExe =ShellExecute(NULL, _T(“open”), _T(“外部exe程序的路径”),
NULL, NULL, SW_SHOWNORMAL);

if ((DWORD)hNewExe <= 32)
{
	AfxMessageBox(_T("return value:%d\r\n"),(DWORD)hNewExe);
}
else
{
	AfxMessageBox(_T("successed!\r\n"));
}

使用CrearteProcess()函数会导致窗口卡死,暂未找到好方法。

关闭外部exe程序:
HANDLE hProcessHandle;
ULONG nProcessID;
HWND TheWindow;
TheWindow = ::FindWindow(NULL, _T(“exe的名称”));
::GetWindowThreadProcessId(TheWindow, &nProcessID);
hProcessHandle = ::OpenProcess(PROCESS_TERMINATE, FALSE, nProcessID);
::TerminateProcess(hProcessHandle, 4);
亲测可用。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 MFC 调用外部 exe 程序的部分功能,您可以使用 MFC 中的类 CProcess 或者 ShellExecute 函数来实现。 1. 使用 CProcess 类 CProcess 类可以启动外部 exe 程序,并且可以向其发送消息,以及接收其输出。您可以使用以下代码来启动外部 exe 程序: ``` CProcess process; process.Create("外部程序.exe", NULL, NULL, FALSE); ``` 其中,第一个参数是外部 exe 程序的路径和名称,第二个和第三个参数是命令行参数和环境变量,第四个参数表示是否显示外部程序的窗口。 您可以使用以下代码来向外部程序发送消息: ``` process.Write("消息内容", nLength); ``` 其中,第一个参数是消息内容,第二个参数是消息长度。 您可以使用以下代码来接收外部程序的输出: ``` char buffer[1024]; int nRead = process.Read(buffer, sizeof(buffer)); ``` 其中,第一个参数是输出缓冲区,第二个参数是缓冲区大小,返回值是实际读取的字节数。 2. 使用 ShellExecute 函数 ShellExecute 函数可以启动外部 exe 程序,并且可以打开其文件或者执行其命令。您可以使用以下代码来启动外部 exe 程序: ``` ShellExecute(NULL, "open", "外部程序.exe", NULL, NULL, SW_SHOWNORMAL); ``` 其中,第一个参数是父窗口句柄,第二个参数是操作类型,第三个参数是外部程序的路径和名称,第四个参数是命令行参数,第五个参数是工作目录,第六个参数是窗口显示方式。 如果您要执行外部程序的某个命令,可以使用以下代码: ``` ShellExecute(NULL, "runas", "cmd.exe", "/c 命令参数", NULL, SW_HIDE); ``` 其中,第一个参数是父窗口句柄,第二个参数是操作类型,第三个参数是命令解释器,第四个参数是命令参数,第五个参数是工作目录,第六个参数是窗口显示方式。 以上就是使用 MFC 调用外部 exe 程序的部分功能的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值