Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.027 c
3-1080716174
Просто гость
2004-03-31 10:56
2004.04.25
Сравнение Grid-ов


14-1081176452
YurikGl
2004-04-05 18:47
2004.04.25
Где найти расчет емкости


14-1080746752
AlexKniga
2004-03-31 19:25
2004.04.25
Кто-нибудь установил Win2K/XP на SATA RAID без floppy?


1-1080803645
pasha_golub
2004-04-01 11:14
2004.04.25
Реализация компонента-обертки


14-1080881680
Layner
2004-04-02 08:54
2004.04.25
мастера! помогите спасти Делфи! Пропали все "горячие клавиши"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский