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 に関するものです。
誰もが私を助けることができますか?ありがとう
はシステム パスにあるディレクトリgbak.exe
ですか? そうでない場合は、システム変数に入れるか、または%PATH%
を呼び出すときに完全修飾パス名を指定します。shellexecute
createprocess
「gbk.exe」をフルパスに変更します。何かのようなもの:
c:\Program Files\thunderbird\gbak.exe"
また、次のようにスペルを間違えgbak.exe
ましたgbk.exe
プログラムはデータベースから切断してから、元に戻す必要があります。
代わりに、次のように 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);
}