我想从我的MFCgbak.exe
应用程序运行文件来备份firebird DB,我使用这个命令但它没有用:
shellexecute(hwnd,"open","gbak.exe"," -user HAMED -password 1234 DB2.FDB b.fbk","",SW_SHOW);
我的问题是关于 gbak 和 firebird。
每个人都可以帮助我吗?谢谢
我想从我的MFCgbak.exe
应用程序运行文件来备份firebird DB,我使用这个命令但它没有用:
shellexecute(hwnd,"open","gbak.exe"," -user HAMED -password 1234 DB2.FDB b.fbk","",SW_SHOW);
我的问题是关于 gbak 和 firebird。
每个人都可以帮助我吗?谢谢
程序应断开与数据库的连接,然后放弃备份。
更改“gbk.exe”,使其成为完整路径。就像是:
c:\Program Files\thunderbird\gbak.exe"
另外,你拼错gbak.exe
了gbk.exe
所在的目录gbak.exe
是否位于您的系统路径中?如果没有,请将其放入您的系统%PATH%
变量中,或者在调用shellexecute
或时指定一个完全限定的路径名createprocess
。
尝试改用 CreateProcess,如下所示:
STARTUPINFO si = { 0 };
PROCESS_INFORMATION pi = { 0 };
si.cb = sizeof(si);
std::string sCommand = "gbak.exe -user HAMED -password 1234 DB2.FDB b.fbk"
BOOL bStart = ::CreateProcess(NULL,(LPSTR) sCommand.c_str(),NULL,NULL,FALSE,CREATE_NEW_CONSOLE | CREATE_DEFAULT_ERROR_MODE,NULL,NULL,&si,&pi);
if (bStart)
{
// Wait 2 minutes or something for the process to complete
::WaitForSingleObject(pi.hProcess,1000*(2*60));
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}else
{
DWORD dwLast = GetLastError();
printf("Error %d",dwLast);
}