Форум: "Система";
Текущий архив: 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