Форум: "Базы";
Поиск по всему сайту: 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.73 MB
Время: 0.017 c
1-8923            Valdemar              2002-01-16 12:36  2002.02.04  
Как оставить приложение без окна выполнятся до окончания работы Windows?


4-9042            Leviathan             2001-12-06 23:36  2002.02.04  
ScreenShot


3-8785            Niky                  2002-01-05 09:01  2002.02.04  
excel


4-9046            Coolguy               2001-12-06 18:40  2002.02.04  
Получение выделенного текста из edit box а другой аппликации


1-8935            СергейКнязев          2002-01-17 17:00  2002.02.04  
Повторяю, СРОЧНО!!!!!!. Загрузка из Excel