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

Вниз

Я наверное тормоз. Ничего догнать не могу.   Найти похожие ветки 

 
DuhcmanSoft ©   (2004-02-26 10:42) [0]

Взял пример с FAQ вставил его в функцию работает отменно, но получается не все так как хотел бы я, запуск с ожиданием и мертвым висением моей проги.

function WinExecAndWait(Exec: PChar; cmdline: PChar; Patch: PChar): Word;
var si : STARTUPINFO;
   pi : PROCESS_INFORMATION;
begin
 ZeroMemory(@si,sizeof(si));
 si.cb:=SizeOf(si);
 if not CreateProcess(Exec, // No module name (use command line).
   cmdline,         // Command line.
   nil,             // Process handle not inheritable.
   nil,             // Thread handle not inheritable.
   False,           // Set handle inheritance to FALSE.
   0,               // No creation flags.
   nil,             // Use parent"s environment block.
   Patch,             // Use parent"s starting directory.
   si,              // Pointer to STARTUPINFO structure.
   pi )             // Pointer to PROCESS_INFORMATION structure.
 then
 begin
   ShowMessage("Запуск приложения не возможен!");
   Exit;
 end;
  WaitForSingleObject(pi.hProcess, INFINITE);
 CloseHandle( pi.hProcess );
 CloseHandle( pi.hThread );
end;


 Мне подсказывают вместо
WaitForSingleObject(pi.hProcess, INFINITE);    использовать
MsgWaitForMultipleObjects(pi.hProcess, ... , false, INFINITE, nil);
но я не могу догнать все его параметры особенно ...

 Весь вечер пытался что ли бо подобрать не выходит.
Помогите написать функцию для запуска с ожиданием и возможностью работы в программе из которой производится запуск.


 
Рамиль ©   (2004-02-26 10:48) [1]

Так и должно быть, WaitForSingleObject ждет завершения процесса. Надо запускать процесс в отдельном потоке.


 
DuhcmanSoft ©   (2004-02-26 10:51) [2]

Рамиль ©   (26.02.04 10:48) [1]
Так и должно быть, WaitForSingleObject ждет завершения процесса. Надо запускать процесс в отдельном потоке.

Скажи как только желательно с примером


 
Polevi ©   (2004-02-26 11:30) [3]

см TThread


 
DuhcmanSoft ©   (2004-02-26 11:31) [4]

Polevi ©   (26.02.04 11:30) [3]
см TThread

Ругется на procedure Execute; override; типа метод не найден в базе класса


 
Polevi ©   (2004-02-26 11:39) [5]

а какой у тебя базовый класс


 
Polevi ©   (2004-02-26 11:40) [6]

type
TMyThread=class(TThread)
public
 procedure Execute;override;
end;


 
DuhcmanSoft ©   (2004-02-26 11:40) [7]

TMyThread = class(TThread);


 
DuhcmanSoft ©   (2004-02-26 11:41) [8]

Polevi ©   (26.02.04 11:40) [6]

type
TMyThread=class(TThread)
public
procedure Execute;override;
end;

всё равно ругается


 
Polevi ©   (2004-02-26 11:41) [9]

код свой целиком приведи


 
DuhcmanSoft ©   (2004-02-26 11:42) [10]

Всей проги ?


 
Polevi ©   (2004-02-26 11:45) [11]

млин..

type
TMyThread=class(TThread)
public
 procedure Execute;override;
end;

{ TMyThread }

procedure TMyThread.Execute;
begin
 WinExecAndWait(...);
end;


 
Cobalt ©   (2004-02-26 11:46) [12]

Чё-то не пойму, в чём именно проблема?
Ты функцию вызываешь?
Прога запускается?
Пока она работает, твоя прога висит. Всё верно.
Как только она завершится, твоя прога получит управление.


 
DuhcmanSoft ©   (2004-02-26 11:46) [13]

type
  TMyThread = class(TThread)
  protected
    procedure Execute; override;
  end;

procedure TMyThread.Execute;
begin
 WinExecAndWait(EXE_, ParamEXE_,Path_);
end;


 
Polevi ©   (2004-02-26 11:48) [14]

я так понял он хочет получать уведомление о завершении работы запущенного им процесса, не останавливая при этом работы основной программы


 
DuhcmanSoft ©   (2004-02-26 11:48) [15]

Cobalt ©   (26.02.04 11:46) [12]
Чё-то не пойму, в чём именно проблема?
Ты функцию вызываешь?
Прога запускается?
Пока она работает, твоя прога висит. Всё верно.
Как только она завершится, твоя прога получит управление.

А если нужно что бы было управление до завершения и програ показывала что запущенная прога работает или нет


 
Polevi ©   (2004-02-26 11:49) [16]

не ветка а цирк какойто


 
Cobalt ©   (2004-02-26 12:08) [17]

Да, извиняюсь, невнимательно читал сообщение.

В FAQ надо добавить - что, мол, этот вариант блокирует вашу прогу. А этот вариант - нет.



Страницы: 1 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.036 c
3-1080302217
Vital28
2004-03-26 14:56
2004.04.25
Доступ к MSSQL Server


14-1079467680
kamerad
2004-03-16 23:08
2004.04.25
Судьба Раскольникова в произведении Ф.М.Достоевского...


11-1059306656
Кладов
2003-07-27 15:50
2004.04.25
глюк комбобокса?


4-1077815228
lmatveev
2004-02-26 20:07
2004.04.25
Как узнать о недоступности диска, с которого запущена программа?


11-1065452668
Fligt
2003-10-06 19:04
2004.04.25
В Delphi 7 выдает ошибку "File not found: Exptlntf.dcu "