![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вызов gbak [D5, IB5.x, ]
Petrovich © (2002-01-08 10:25:00)Plz! HLP!
Как выполнить из моей проги gbak.exe с моими параметрами?
Через ShellExecute не получилось.
Alexandr (2002-01-08 12:33:00) [1]кстати, а что-за программу-то пишешь?
Alexandr (2002-01-08 12:32:00) [2]а что-за программа-то?
вообще-то код не мой.
Я его взял из советов от Валентина Озерова
кстати, там еще такое замечание есть
вместо
--------------------------------------------------------------------------------
WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
лучше написать:
--------------------------------------------------------------------------------
while WaitforSingleObject(ProcessInfo.hProcess,200)=WAIT_TIMEOUT do
Repaint;
Смысл замены прост: в первом варианте главное окно ждёт завершения вызванного сообщения, не обрабатывая при этом никаких событий. Вследствие этого главное окно даже не перерисовывается, что выглядит очень некрасиво. Второй вариант исправляет этот недостаток.
Petrovich (2002-01-08 12:11:00) [3]O"k! Все работает. Спасибо. Укажу на тебя в "Благодарностях" к программе.
Alexandr (2002-01-08 11:22:00) [4]это конечно не gbak,
но разницы никакой не должно быть.
Alexandr (2002-01-08 11:20:00) [5]а чего пишет-то.
А то я так делаю.
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;
Petrovich (2002-01-08 10:44:00) [6]>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 10:36:00) [7]как это не получилось?