Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 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]

кстати, а что-за программу-то пишешь?




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.037 c
7-9002            Dmitry V. Averuanov   2001-10-22 11:16  2002.02.04  
Нужно определить уровень сигнала на входе звуковой карты


1-8862            Eraser                2002-01-21 12:34  2002.02.04  
Процедура Delay


6-8969            Hawk                  2001-11-11 20:20  2002.02.04  
Разрыв связи между TServerSocket и TClienSocket


3-8752            VA                    2001-12-31 01:52  2002.02.04  
ADO


1-8872            IronHawk              2002-01-15 18:30  2002.02.04  
ОКРУГЛЕНИЕ ! ! ! . . .