Главная страница
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.041 c
7-1077525696
AlexPiv
2004-02-23 11:41
2004.04.25
Как в Delphi написать программу которая отловит процесс открытия


6-1077882018
sucer
2004-02-27 14:40
2004.04.25
Как проверить подключен ли сейчас к сети комп c ip 192.168.x.y?


1-1081241753
Openfire
2004-04-06 12:55
2004.04.25
Вопрос про экспорт данных в MSWord


14-1080757008
gn
2004-03-31 22:16
2004.04.25
хочу похвастатся моя любимая написала первую программу


1-1081263465
}|{yk
2004-04-06 18:57
2004.04.25
Потоки - где ошибка?