如何在窗体里等待控制台程序执行完且获得返回码?
如:mysql 控制台下的备份程序
mysqldump -h 192.168.0.222 -uroot -proot wangyi > wangyi.sql
在窗体内
CString str="cmd.exe /c ";
CString CSconect = str + "mysqldump -h 192.168.0.222 -uroot -proot wangyi > wangyi.sql";
int ret=WinExec(CSconect,0);
err = GetLastError();
是能正常运行,但运行后,没有办法等待"mysqldump -h 192.168.0.222 -uroot -proot wangyi > wangyi.sql"执行完毕,
更不能获得 mysqldump 返回的值???
[解决办法]
#define MyAppName _T("cmd.exe")#define MyAppCmd _T("/c mysqldump -h 192.168.0.222 -uroot -proot wangyi > wangyi.sql") STARTUPINFO si={0}; PROCESS_INFORMATION pi={0}; si.cb = sizeof(si); if(CreateProcess(MyAppName,MyAppCmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { CloseHandle(pi.hThread); WaitForSingleObject(pi.hProcess,INFINITE); DWORD dwExitCode; GetExitCodeProcess(pi.hProcess,&dwExitCode); CloseHandle(pi.hProcess); CString str; str.Format(_T("%d"),dwExitCode); AfxMessageBox(str); } else AfxMessageBox(_T("创建进程失败"));