Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Mike Blazer                          2:5020/400     03 Aug 2000  03:57:46
 To : All
 Subject : Re: win32
 -------------------------------------------------------------------------------- 
 
 > нужно вежливо попpосить пpоцес умеpет (WM_CLOSE), а если не закpоется --
 > убить. пpосто с убиванием -- поpядок, но пеpвое так и не смог осуществить.
 > пpоцес создаётся via Win32::Process. помогите, плз.
 
 WM_CLOSE не убивает процесс, а только закрывает его консоль.
 Значит я так понимаю, твой child имеет собственную консоль? Если она имеет тот
 же заголовок "PERL", то ты никак не сможешь отличить её от парента и других
 чайлдов. А чтобы закрыть консоль, нужно сперва найти ее - это делает API call
 FindWindow и FindWindowEx. Они оба в качестве аргумента просят заголовок окна,
 если заголовки одинаковые отличить их нет возможности.
 Стандартный Win32::Process не дает возможности задать заголовок окна для
 child-процесса. Можно взять мою версию (линк внизу), которая позволяет задавать 
 размер, заголовок и по-моему цвет консоли :)
 
 Hо, повторяю, WM_CLOSE не завершает процесс. $procObject->Kill() - это самый
 правильный способ завершить субпроцесс.
 
 Кроме того, можно при помощи Win32::Event или Win32::Semaphore или Win32::Mutex 
 открыть некий флаг и в чайлде после каждой более или менее длительной операции
 проверять этот event или mutex, и если он установлен - снимать чайлда в нем
 самом, просто exit-ом.
 
 Вообще для передачи WM_* флагов окошкам можно использовать Win32::GUI или
 Win32::API (если нужно немного операций, как у тебя). Hо имена-то у консолей
 одинаковые - "PERL" - так что их не опознать.
 
 Логика такая: найти window's handle (целое число) и послать сообщение WM_CLOSE
 (0x10) этому хэндлу при помощи API-функции SendMessage или PostMessage.
 -- 
 ==================================
 Mike Blazer
 blazer@mail.nevalink.ru
 http://base.dux.ru/guest/fno/perl/
 ==================================
 --- ifmail v.2.15dev5
  * Origin: ... (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 win32   Pavel Korovkin   01 Aug 2000 21:57:36 
 Re: win32   Mike Blazer   03 Aug 2000 03:57:46 
 win32   Pavel Korovkin   06 Aug 2000 11:14:54 
Архивное /ru.perl/1203812acdef7.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional