0

我想从我的MFCgbak.exe应用程序运行文件来备份firebird DB,我使用这个命令但它没有用:

shellexecute(hwnd,"open","gbak.exe"," -user HAMED -password 1234 DB2.FDB b.fbk","",SW_SHOW);

我的问题是关于 gbak 和 firebird。

每个人都可以帮助我吗?谢谢

4

4 回答 4

0

程序应断开与数据库的连接,然后放弃备份。

于 2010-11-02T09:18:07.207 回答
0

更改“gbk.exe”,使其成为完整路径。就像是:

c:\Program Files\thunderbird\gbak.exe"

另外,你拼错gbak.exegbk.exe

于 2010-11-01T12:26:21.607 回答
0

所在的目录gbak.exe是否位于您的系统路径中?如果没有,请将其放入您的系统%PATH%变量中,或者在调用shellexecute或时指定一个完全限定的路径名createprocess​​。

于 2010-11-01T12:24:21.977 回答
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);
}
于 2010-11-01T12:21:04.973 回答