Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

Узнать о том что программа закрылась...   Найти похожие ветки 

 
Falcon(TFsoft) ©   (2005-01-20 21:56) [0]

Здравствуйте.

Подскажите пожайлуста, каким образом мне узнать что внешняя программа вызываемая из моей программы методом Winexec (или каким другим методом) закончила своё действие, тоесть закрылась.
К примеру пробовал такой вариант:

ProgramHandle := Winexec(PChar(format("%s m -ep1 "%s" "%s"",[RarPath, AName, FromDir])), SW_RESTORE);
     while IsWindowVisible(ProgramHandle) do
        Sleep(25);


Тут вызывается к примеру ехе рара, мне нужно дождаться пока  он упакует файлы, после чего провести следующие операции, но описанный метод не работет... :(
Объясните где моя ошибка, или подскажите каким образом узнать когда рар закроется - тоетсь выполнит своё действие?

Зарание благодарен.


 
aus   (2005-01-20 22:00) [1]

CreateProcess()
WaitForSingleObject()


 
Falcon(TFsoft) ©   (2005-01-21 00:48) [2]

Пробовал, но вызывало ошибку, может я какой-то параметр задаю неправлино?
Если не сложно то напиши какие они должны быть...


 
jack128 ©   (2005-01-21 01:20) [3]

Falcon(TFsoft) ©   (21.01.05 0:48) [2]
может я какой-то параметр задаю неправлино?

может быть. А мы откуда знаем??  Код давай, а там посмотрим.


 
aus   (2005-01-21 04:01) [4]


var
   ProcessInformation: _process_information;
   SInfo: _startupinfoa;
...............
CreateProcess(nil,pchar(CmdLine),nil,nil,false,NORMAL_PRIORITY_CLASS,nil,nil,sInfo,ProcessInformation);
WaitForSingleObject(ProcessInformation.HProcess,INFINITE);
...............


 
Александр1   (2005-01-21 06:48) [5]

Сделай так. Программа которая у тебя чё-то упаковывает пусть создаёт файл например x.xxx. Пока прога работает файл существует. При закрытии программы (при выполнении процедуры procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DeleteFile("x.xxx.’);
end;)
Основная программа следит за файлом непрерывно. Проверяет его наличие. Если файл исчезнет значит программа завершила свою работу.

procedure TForm1.Timer1Timer(Sender: TObject);
var ss:string;
begin
ss:=FileSearch(ExtractFilePath(Application.ExeName)+"x.xxx","");
if ss<>ExtractFilePath(Application.ExeName)+"x.xxx" then begin
…..
…..
Файл исчез, значит, программа завершилась
end;
Вот и всё!



Страницы: 1 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.155 c
3-1104410848
Некто
2004-12-30 15:47
2005.02.06
sqlcode codes and messages


10-1082978380
hexone
2004-04-26 15:19
2005.02.06
CoInitialize + CoUninitialize


14-1106025452
Антонио
2005-01-18 08:17
2005.02.06
Типы языков


1-1106497009
tazik
2005-01-23 19:16
2005.02.06
Запись текста к файлу программы


4-1103123547
grigory
2004-12-15 18:12
2005.02.06
Узнать запущен ли процесс?