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

はシステム パスにあるディレクトリgbak.exeですか? そうでない場合は、システム変数に入れるか、または%PATH%を呼び出すときに完全修飾パス名を指定します。shellexecutecreateprocess

于 2010-11-01T12:24:21.977 に答える
0

「gbk.exe」をフルパスに変更します。何かのようなもの:

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

また、次のようにスペルを間違えgbak.exeましたgbk.exe

于 2010-11-01T12:26:21.607 に答える
0

プログラムはデータベースから切断してから、元に戻す必要があります。

于 2010-11-02T09:18:07.207 に答える
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 に答える