首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-05-01 
如何在窗体里等待控制台程序执行完且获得返回码?如:mysql 控制台下的备份程序mysqldump -h 192.168.0.222

如何在窗体里等待控制台程序执行完且获得返回码?
如: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("创建进程失败")); 

热点排行