您的位置:首页 > 其它

CreateProcess()函数用法一个应用程序中调用另一个应用程序的.exe

2016-02-01 13:45 393 查看
1、点击按钮后此应用程序调用另一个应用程序的.exe程序

void CMFCDYDlg::OnBnClickedButton1()

{
// TODO:  在此添加控件通知处理程序代码
//调用.exe的方法一
//WinExec("G:\\程序练习\\MFC本程序调用另一个程序的实例\\MFCTest\\Debug\\MFCTest.exe", SW_SHOW);

//调用.exe方法二
//ShellExecute(NULL, _T("open"), _T("G:\\程序练习\\MFC本程序调用另一个程序的实例\\MFCTest\\Debug\\MFCTest.exe"), _T(""), _T(""), 0);

//调用.exe方法三
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&pi, sizeof(pi));
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);

TCHAR cmd[256] = _T("G:\\程序练习\\MFC本程序调用另一个程序的实例\\MFCTest\\Debug\\MFCTest.exe");  //设置外部程序名
BOOL working = ::CreateProcess(NULL, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
if (working)
{
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
else
{
AfxMessageBox(_T("创建失败!"));
HANDLE hProcess = GetCurrentProcess();//get current process
TerminateProcess(hProcess, 0);         //close process
}
}

2、char[]转化为CString实现函数

wchar_t *CMFCDYDlg:: ANSIToUnicode(const char* str)

{
int textlen;
wchar_t * result;
textlen = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
result = (wchar_t *)malloc((textlen + 1)*sizeof(wchar_t));
memset(result, 0, (textlen + 1)*sizeof(wchar_t));
MultiByteToWideChar(CP_ACP, 0, str, -1, (LPWSTR)result, textlen);
return result;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息