如何在程序中执行exe文件? 如何在程序中执行exe文件?比如说要按一个按钮就执行另一个编译完成的可执行程序? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 HINSTANCE ShellExecute( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd); 能否详细点?在MFC中有类或函数实现它吗? CreateProcess()函数。用法请查找MSDN,函数说明实在是太长了。 STARTUPINFO si;PROCESS_INFORMATION pi;memset(&si, 0, sizeof(si));memset(&pi, 0, sizeof(pi));si.cb = sizeof(si);CreateProcess(NULL, “程序及路径”, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi))凑合着用吧 SECURITY_ATTRIBUTES sa; HANDLE hRead,hWrite; CString a,b,c;a = m_ShowFWName;b = COMStr;c = BaudRateStr;char temp[1024];sprintf(temp,"%s %s %s %s","prgflash.exe",a,b,c);//AfxMessageBox(temp); sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = TRUE; if (!CreatePipe(&hRead,&hWrite,&sa,0)) { MessageBox("Error On CreatePipe()"); return; } STARTUPINFO si; PROCESS_INFORMATION pi; si.cb = sizeof(STARTUPINFO); GetStartupInfo(&si); si.hStdError = hWrite; si.hStdOutput = hWrite; si.wShowWindow = SW_HIDE; si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; if (!CreateProcess(NULL,(LPTSTR)temp, NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)) { MessageBox("Error on CreateProcess()"); return; } CloseHandle(hWrite); char buffer[4096] = {0}; DWORD bytesRead; while (true) { if (ReadFile(hRead,buffer,4095,&bytesRead,NULL) == NULL) break; m_Edit1 += buffer; //UpdateData(false); if(strstr(buffer,"CRC comparison passed")) //AfxMessageBox("PASS"); this->m_strCNResult = L"PASS"; else this->m_strCNResult = L"FAIL"; UpdateData(false); //Sleep(200); } 多字节字符集转UTF8部分文字出现“?” bitblt局部重绘的方法 如何在控制台程序中加入MFC支持 CDatabase::ExecuteSQL为啥不出异常? 如何向一个进程发送WM_QUIT消息? CDialogBar在哪个函数中初始化成员变量?(除了构造函数外)OnInitDialog()在CDialogBar中无效 关于任务栏 MFC多线程文件传输的退出 这算不算Win64的巨大bug,你们难道都没有发现吗? 求助:vc里如何改变屏幕的分辨率? 这里有bug,我的帖子不见了 有一个问题,我调试的时候F5一步一步走的,一点问题没有,为什么运行exe文件就不对了
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
在MFC中有类或函数实现它吗?
用法请查找MSDN,函数说明实在是太长了。
PROCESS_INFORMATION pi;
memset(&si, 0, sizeof(si));
memset(&pi, 0, sizeof(pi));
si.cb = sizeof(si);CreateProcess(NULL, “程序及路径”, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi))
凑合着用吧
HANDLE hRead,hWrite;
CString a,b,c;a = m_ShowFWName;
b = COMStr;
c = BaudRateStr;
char temp[1024];
sprintf(temp,"%s %s %s %s","prgflash.exe",a,b,c);
//AfxMessageBox(temp); sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hRead,&hWrite,&sa,0)) {
MessageBox("Error On CreatePipe()");
return;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWrite;
si.hStdOutput = hWrite;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
if (!CreateProcess(NULL,(LPTSTR)temp,
NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)) {
MessageBox("Error on CreateProcess()");
return;
}
CloseHandle(hWrite);
char buffer[4096] = {0};
DWORD bytesRead;
while (true) {
if (ReadFile(hRead,buffer,4095,&bytesRead,NULL) == NULL)
break;
m_Edit1 += buffer;
//UpdateData(false);
if(strstr(buffer,"CRC comparison passed"))
//AfxMessageBox("PASS");
this->m_strCNResult = L"PASS";
else
this->m_strCNResult = L"FAIL";
UpdateData(false);
//Sleep(200);
}