Главная страница
    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.48 MB
Время: 0.046 c
14-1080679041
real_dimedrol
2004-03-31 00:37
2004.04.25
Транслятор интерпретатор


8-1074444671
Хой
2004-01-18 19:51
2004.04.25
Рендеринг на рабочем столе (OpenGL)


9-1066403812
Gigabyte
2003-10-17 19:16
2004.04.25
Direct3D


7-1077927199
BBCHa
2004-02-28 03:13
2004.04.25
Словить Ctrl+Enter


7-1077960096
DuhcmanSoft
2004-02-28 12:21
2004.04.25
StayOnTop для компонентов требуется помощь.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский