|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
31.01.2007, 21:51 | #1 |
Пользователь
Регистрация: 01.11.2006
Сообщений: 63
|
function WinExecAndWait
нашел функцию которая ждет пока работа программы не закончится. Только вод код компилироваться не хочет...
*********************************** ********************** function WinExecAndWait(Path: PChar; Visibility: Word): Word; var InstanceID: THandle; Msg: TMsg; begin InstanceID := WinExec(Path, Visibility); if InstanceID < 32 then //çíà÷åíèå ìåíüøå ÷åì 32 óêàçûâàåò íà îøèáêó WinExecAndWait := InstanceID else repeat while PeekMessage(Msg, 0, 0, 0, pm_Remove) do begin if Msg.Message = wm_Quit then Halt(Msg.WParam); TranslateMessage(Msg); DispatchMessage(Msg); end; until GetModuleUsage(InstanceID) = 0; // Undeclared identifier 'GetModuleUsage' WinExecAndWait := 0; end; *********************************** *********************************** ********************** В чем тут дело, понять не могу..... Помогите |
31.01.2007, 22:17 | #2 |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
Естественно: процедура написана, но нигде не объявлена. Советую поискать исполнение самой процедуры GetModuleUsage, т.к. в стандартном наборе описанных процедур Windows (это - WinAPI процедура) ее нет.
Познавая других, мы познаем себя.
С'est la vie... |
04.02.2007, 20:36 | #3 |
Пользователь
Регистрация: 01.11.2006
Сообщений: 63
|
нашел нормальный код.....
*********************************** **************** Код HTML:
Function WinExecAndWait(FileName:string; Visibility : integer):integer; 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 { ôëàã ñîçäàíèÿ } NORMAL_PRIORITY_CLASS, nil, { óêàçàòåëü íà íîâóþ ñðåäó ïðîöåññà } nil, { óêàçàòåëü íà èìÿ òåêóùåé äèðåêòîðèè } StartupInfo, { óêàçàòåëü íà STARTUPINFO } ProcessInfo) Then Result := -1 { óêàçàòåëü íà PROCESS_INF } Else Begin // WaitforSingleObject(ProcessInfo.hProcess,INFINITE); While WaitforSingleObject(ProcessInfo.hProcess,200)=WAIT_TIMEOUT do Form1.Repaint; // GetExitCodeProcess(ProcessInfo.hProcess,Result); // GetExitCodeProcess(ProcessInfo.hProcess,Mresult); // ???????????? End; End; |
05.02.2007, 12:19 | #4 |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
Visibility... Даже логичеки поразмыслив, можно догадаться, что Данный параметр отвечает за видимость данного окна. Вот пример применения класса StartupInfo (взят из SDK справки Delphi), описан на C, но смысл должен быть ясен любому паскальщику:
Код:
Код:
Познавая других, мы познаем себя.
С'est la vie... |
05.02.2007, 19:00 | #5 |
Пользователь
Регистрация: 01.11.2006
Сообщений: 63
|
Век живи, век учись.... спасибо!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
function.file-put-contents | DJ_MILK | PHP | 3 | 23.07.2008 05:48 |
function ajaxSend ( action ) | mager | JavaScript, Ajax | 2 | 15.05.2008 16:31 |
InttoiHex function | GAGARIN-NEW | Компоненты Delphi | 4 | 27.03.2008 20:21 |
function procedure | Toxa | Microsoft Office Access | 1 | 28.11.2007 18:32 |