MFC调用外部EXE文件
在开发MFC应用程序的时候,如果要实现一个特定的功能,当然一般的做法就是添加一个处理这个功能的对话框,给对话框加上类,需要调用功能的时候就直接把对话框掉出来就行了。但是,如果那个功能在一个外部exe实现,而有没有那个exe文件的实现代码,怎么办?直接调用外部的那个exe文件就行了。。
方法一、(进程方式)
STARTUPINFO  si;
PROCESS_INFORMATION  pi;
ZeroMemory(&si,sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi,sizeof(pi));
if(!CreateProcess(NULL, "E;\ ",NULL,NULL,FALSE,CREATE_NO_WINDOW,NULL,NULL,&si,&pi))  胶带和卫生纸能怎么惩罚自己
{
MessageBox( "出错 ", "提示 ",MB_OK|MB_ICONINFORMATION);
}
WaitForSingleObject(pi.hProcess,INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
方法二、(线程方式)
WinExec( "Test.Exe ",SW_HIDE);
Q: 如何打开一个应用程序?
ShellExecute(this->m_hWnd,"open","","","", SW_SHOW );
ShellExecute(this->m_hWnd,"open","",
"c:\\MyLog.log","",SW_SHOW );
As you can see, I haven't passed the full path of the programs.
Q: 如何打开一个同系统程序相关连的文档?
ShellExecute(this->m_hWnd,"open",
"c:\\","","",SW_SHOW );
Q: 如何打开一个网页?
ShellExecute(this->m_hWnd,"open",
"hi.baidu/%C0%D6%B5%C4%E3%B0%E2%EA/home","","", SW_SHOW );
Q: 如何激活相关程序,发送EMAIL?
ShellExecute(this->m_hWnd,"open",
"mailto:gongziya@gmail","","", SW_SHOW );
Q: 如何用系统打印机打印文档?
ShellExecute(this->m_hWnd,"print",
"c:\\","","", SW_HIDE);
精彩广告词Q: 如何用系统查功能来查指定文件?
ShellExecute(m_hWnd,"find","d:\\nish",
科目二怎样倒车入库NULL,NULL,SW_SHOW);
******************************************************************************
上面的两种方法是我贴的网易博客《MFC 调用EXE》
******************************************************************************
现在写一个作为测试,源代码:
#include<iostream>
using namespace std;
int main()
{
cout<<"\nHello World"<<endl;
return 0;
}
测试程序:
#include <iostream>
#include <windows.h>
卡塔尔面积和人口using namespace std;祝母亲节祝福
int main()
{
WinExec( "test.Exe ",  SW_HIDE);
return 0;
}
会发现调用确实起到了效果。
现在有一个EXE游戏(推箱子游戏),放在E盘的BOX文件夹下。然后新建MFC基于对话框应用程序,双击确定按钮,进入消息处理函数OnOK,编辑代码如下:
void CCREATE_PROCESS_DEMODlg::OnOK()
{
STARTUPINFO si; 
PROCESS_INFORMATION pi; 
ZeroMemory( &si, sizeof(si) ); 
si.cb = sizeof(si); 
ZeroMemory( &pi, sizeof(pi) );     
if(!CreateProcess(TEXT("E:\\BOX\\"), NULL, NULL, NULL,FALSE,0, NULL,  NULL, &si,  &pi)) 
MessageBox("没有到","Title",MB_OK);
WaitForSingleObject( pi.hProcess, INFINITE );   
妹妹你听我说CloseHandle( pi.hProcess ); 
CloseHandle( pi.hThread ); 
::MessageBox(NULL,"回到了主程序","正常返回",MB_OK);
CDialog::OnOK();
}
打开外部得exe程序,退出后又回到了主程序继续执行。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。