读书人

怎么在窗体里等待控制台程序执行完且获

发布时间: 2012-05-01 12:48:58 作者: rapoo

如何在窗体里等待控制台程序执行完且获得返回码?
如: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 返回的值???


[解决办法]

C/C++ code
#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("创建进程失败")); 

读书人网 >VC/MFC

热点推荐