我想从 MFC 应用程序运行gbak.exe
文件来备份 firebird DB ,
我使用这个订单,但它不起作用:
shellexecute(hwnd,"open","gbak.exe"," -user HAMED -password 1234 DB2.FDB b.fbk","",SW_SHOW);
我的问题是关于gbak和firebird。
每个人都可以帮助我吗? 感谢
答案 0 :(得分:0)
尝试使用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);
}
答案 1 :(得分:0)
系统路径中gbak.exe
所在的目录是什么?如果没有,请在调用%PATH%
或shellexecute
时将其放入系统createprocess
变量或指定完全限定的路径名。
答案 2 :(得分:0)
更改“gbk.exe”以使其成为完整路径。类似的东西:
c:\Program Files\thunderbird\gbak.exe"
另外,您将gbak.exe
拼错为gbk.exe
答案 3 :(得分:0)
程序应与数据库断开连接,然后进行备份。