Форум: "Базы";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];
ВнизВызов gbak Найти похожие ветки
← →
Petrovich (2002-01-08 10:25) [0]Plz! HLP!
Как выполнить из моей проги gbak.exe с моими параметрами?
Через ShellExecute не получилось.
← →
Alexandr (2002-01-08 10:36) [1]как это не получилось?
← →
Petrovich (2002-01-08 10:44) [2]>Alexandr
Буквально вот так:
params:="-b -t -user SYSDBA -password masterkey base.gdb back.gdb";
fpath:=ExtractFileDir(ParamStr(0));
ShellExecute(handle, nil, PChar(fpath+"\qbak.exe"),PChar(params), nil, SW_SHOWNORMAL);
Не запускается!
← →
Alexandr (2002-01-08 11:20) [3]а чего пишет-то.
А то я так делаю.
WinExecAndWait32("C:\archive\pkunzip.exe -e -o asd.zip",SW_SHOWNORMAL);
где
function WinExecAndWait32(FileName:String; Visibility : integer):DWORD;
var
zAppName:array[0..512] of char;
zCurDir:array[0..255] of char;
WorkDir:String;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
StrPCopy(zAppName,FileName);
GetDir(0,WorkDir);
StrPCopy(zCurDir,WorkDir);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb := Sizeof(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;
if not CreateProcess(nil,
zAppName,nil,nil,false,CREATE_NEW_CONSOLE or IDLE_PRIORITY_CLASS,
nil,nil,StartupInfo,ProcessInfo) then Result := $FFFFFFFF
else begin
WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess,Result);
end;
end;
← →
Alexandr (2002-01-08 11:22) [4]это конечно не gbak,
но разницы никакой не должно быть.
← →
Petrovich (2002-01-08 12:11) [5]O"k! Все работает. Спасибо. Укажу на тебя в "Благодарностях" к программе.
← →
Alexandr (2002-01-08 12:32) [6]а что-за программа-то?
вообще-то код не мой.
Я его взял из советов от Валентина Озерова
кстати, там еще такое замечание есть
вместо
--------------------------------------------------------------------------------
WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
лучше написать:
--------------------------------------------------------------------------------
while WaitforSingleObject(ProcessInfo.hProcess,200)=WAIT_TIMEOUT do
Repaint;
Смысл замены прост: в первом варианте главное окно ждёт завершения вызванного сообщения, не обрабатывая при этом никаких событий. Вследствие этого главное окно даже не перерисовывается, что выглядит очень некрасиво. Второй вариант исправляет этот недостаток.
← →
Alexandr (2002-01-08 12:33) [7]кстати, а что-за программу-то пишешь?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c