Главная страница
    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.051 c
1-1081334933
cvg
2004-04-07 14:48
2004.04.25
Проблема с выводом графиков. Это баг от Borland?


1-1081268682
Grel0m
2004-04-06 20:24
2004.04.25
edit и мемо


1-1081311737
Shtukos
2004-04-07 08:22
2004.04.25
Способ сделать демо-версию


6-1074853790
jcrush
2004-01-23 13:29
2004.04.25
Тормозит прога, потоки....


3-1080380533
Dimbas
2004-03-27 12:42
2004.04.25
Как в DbGrid пронумеровать все строки?





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