Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.04;
Скачать: CL | DM;

Вниз

Вызов 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
1-8937
Bob_
2002-01-18 10:24
2002.02.04
3D


7-9008
Vitaliy Jungle
2001-10-13 05:42
2002.02.04
Гребаный MSDOS


14-9001
Awex
2001-12-10 16:07
2002.02.04
Какое пиво лучше ?


4-9028
fag2000@ok.ru
2001-12-07 12:44
2002.02.04
Как удалить OLE объект во время выполнения его метода


7-9018
Spiritbad
2001-10-25 12:47
2002.02.04
Про порты.