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

Вниз

Процессы   Найти похожие ветки 

 
Nekto   (2004-03-21 23:19) [0]

Как закрыть процесс: Есть две проги. Одна типа ключа. Вторая - рабочая. Ключ висит в процессах. По завершению второй надо убить первую!


 
Defunct ©   (2004-03-22 02:02) [1]

По завершении второй:

API - TerminateProcess
или
SendMessage(FindWindow("TForm1","Form1"),WM_CLOSE,0,0);

Где
TForm1 - класс главной формы первой программы
Form1  - имя экземпляра главной формы первой программы.


 
Alexander666 ©   (2004-03-22 02:34) [2]


> Как закрыть процесс: Есть две проги. Одна типа ключа. Вторая
> - рабочая. Ключ висит в процессах. По завершению второй
> надо убить первую!

Интересный вопрос...


 
Юрий Зотов ©   (2004-03-22 06:57) [3]

Если вторая запускается из первой, то достаточно в первой просто использовать WaitForSingleObject. Если нет - см. [1] (но лучше все же обойтись без TerminateProcess).


 
Sphinx ©   (2004-03-22 07:53) [4]

> API - TerminateProcess
И "слишком умная" WinXP (2k, Me) тут же попросит написать отчетик об ошибках и отправить их Майкрософту.


 
Cobalt ©   (2004-03-22 09:03) [5]

Halt(0) достаточно, по-моему.


 
Nekto   (2004-03-22 22:53) [6]

2: Defunct
  SendMessage(FindWindow("TForm1","Form1"),WM_CLOSE,0,0);
А если запущены 10 прог с Form1: TForm1, хотя интересно попробую.

2: всем
  Ось "Неизвестная", вернее сказать любая, но скорее NT

2: Юрий Зотов
  Прога 1 запускается отдельно (или не запускается вообще)

2: Cobalt
  Halt(0) Это к чему???


 
Cobalt ©   (2004-03-22 23:24) [7]

>  Halt(0) Это к чему???
Это было к Sphinx © [4]

> Прога 1 запускается отдельно (или не запускается вообще)
Если планируется только в однопользовательскоми режиме на компе (т.е. один сеанс пользователя - в ХР их может быть несколько, там уже другие прибамбасы), то, по-моему, будет достаточно именованного объекта ядра (события, или мьютекса, не уверен), которое будет удерживаться прогой1, и состояние которого изменится при закрытии её.

В проге2 проверять состояние этого именованного объекта, и  закрываться при соответсвующем состоянии.

А вообще-то, очень много зависит от тех ньюансов, о которых вы умолчали
- взаимодействие проги1 и проги2?
- количество проги2?
- количество проги1 (на одном компе - ограничения функциональные/лицензионные/прочие)?


 
Nekto   (2004-03-23 08:36) [8]

Взаимодействия между прогами прямого нет. Если описать грубо: Первыя проверяет наличие опред. файла и если его нет, то создает его. Вторая проверяет ентот же файл и если его нет, то она не работает. По завершению своей работы, она убивает и тот файл и прамму - ключ (последнее пока не работает). Ключ запускается только один раз (пока тоже не работает, но сделаю), прогу можно запустить много раз, хотя смысла в этом нету. Про XP: зачем проверять ключ с другого сеанса? Не будем загонятся если не нужно. Хотя если ключ висит => генерирует файл => программа доступна, но это не важно. Смысл - убить ненужный уже процесс по завершению программы.


 
Романов Р.В. ©   (2004-03-23 09:14) [9]

Программы при запуске регистрируют сообщение см. RegisterWindowMessage и при закрытии посылается сообщение SendMessage всем окнам HWND_BROADCAST. При получении сообщения процесс завершает работу.


 
Fredericco ©   (2004-03-23 12:25) [10]

Романов Р.В. ©   (23.03.04 09:14) [9]
Согласен.

Если первый процесс написан тобой то я бы сделал так:

Первая прога:

 ...
 Procedure DefaultHandler(Var Message);override;
 ...
 CardinalVar:Cardinal;
 ...
 CardinalVar:=RegisterWindowMessage("HelloFromSecondProcess");
 ...
 procedure TForm1.DefaultHandler(var Message);
 var
   i:integer;
   g,c:string;
   Client:PHSClient;
 begin
   with TMessage(Message) do  begin
      if Msg = CardinalVar then begin
          Form1.Close;  
      end Else Inherited DefaultHandler(Message);
   end;
end;


А во второй проге следующее:

 ...
 CardinalVar:Cardinal;
 ...
 CardinalVar:=RegisterWindowMessage("HelloFromSecondProcess");
 ...
 SendMessage(HWND_BROADCAST,CardinalVar,0,0);



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

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

Наверх




Память: 0.49 MB
Время: 0.03 c
14-1079688206
Ihor Osov'yak
2004-03-19 12:23
2004.04.11
NAT + personal firewall = trounle


1-1082707383
BJValentine
2004-04-23 12:03
2004.04.11
Динамический массив


11-1068482799
=Sniper=
2003-11-10 19:46
2004.04.11
Динамическое создание ЭЛЕМЕНТОВ в MainMenu


14-1079620833
Nikolay M.
2004-03-18 17:40
2004.04.11
Кто сексуальнее, финансист или программист?


14-1079082188
PaRL
2004-03-12 12:03
2004.04.11
Djvu