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;
}
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;
}
相关文章推荐
- 用CreateProcess创建的子进程所获得的命令行参数有以下几种情况
- 程序中通过IE或默认的浏览器打开指定的页面
- 关于字符串的内存分配问题
- java.io.IOException: Cannot run program "C:\Program": CreateProcess error=2,
- 求助(VC++) 隐藏Console窗口无效
- CreateProcess、ShellExecute和WinExec的区
- Windows创建进程winAPI-CreateProcess
- idea Cannot load supported formats: Cannot run pro
- eclipse报错:CreateProcess error=87解决办法
- 关于C++运行CMD命令net time
- cocos2dx Android工程编译出现error: CreateProcess错误
- arm-linux-androideabi-g++.exe: error: CreateProcess: No such file or directory
- Audroid-studio2.2安装1%与windows不兼容和Error occurred during initialization of VM 的问题
- Win10 Hook 进程创建的研究
- WinExec, ShellExecute,CreateProcess
- Windows进程
- Windows核心编程 第四章 进程(中)
- c++执行cmd指令、cmd隐藏进程不出现控制台、结束进程、调用exe、CreateProcess以及WinExec的使用
- windows编程之进程操作
- 设计模式:装饰模式