Вопросик о функциях завершения работы программ

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Corvex
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 23.05.2003 (Пт) 5:30

Вопросик о функциях завершения работы программ

Сообщение Corvex » 23.05.2003 (Пт) 7:34

Как можно прервать или перехватить функцию PostMessage hW, WM_QUIT, 0, 0 и не дать ей завершить работу запушеных мною программ.

SergeySV
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 124
Зарегистрирован: 17.04.2003 (Чт) 14:39
Откуда: Россия, Москва

Re: Вопросик о функциях завершения работы программ

Сообщение SergeySV » 23.05.2003 (Пт) 11:02

Corvex писал(а):Как можно прервать или перехватить функцию PostMessage hW, WM_QUIT, 0, 0 и не дать ей завершить работу запушеных мною программ.


Можно перехватить любое сообщение для любой программы в Windows, почти.... :-) - для этого надо использовать Hook.

Установка Hook довольна нетривиальная задача и прежде чем его использовать надо все хорошо себе уяснить и представлять как Windows работает с памятью.

Там есть один запорный момент, который заключается в том, что какая программа последняя поставила hook, та и получит сообщение первая и после его обработки она должна передать его дальше (тут главная закавыка, очень не просто корректно передать код сообщения дальше, а во многих статьях на эту тему про этого ничего не говорят). Можно конечно не передавать сообщение дальше и тогда все последующие проги обламаются.

Вообще существует неколько видов hook для разных задач. Их используют в обучающих программах, клавиатурных шпионах, которые перехватывают все нажатия клавиш и т.д. Статей на эту тему в инете достаточно много. Причем для общего ознакомления читать можно статьи вообще для других языков, принципы общие, а некоторые техн. детали для VBA можно уточнить уже на сайтах VB.
Вот хорошая статья на эту тему: http://www.delphimaster.ru/articles/hooks/index.html
или
http://www.rsdn.ru/article/printv.asp?b ... nhooks.xml
Главное двигаться не быстрее, чем думает твоя голова.

Александр Андреев
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 145
Зарегистрирован: 09.04.2003 (Ср) 16:43
Откуда: Н.Новгород

Сообщение Александр Андреев » 23.05.2003 (Пт) 11:30

А что, нельзя в обработчике сообщений программы поставить игнор на WM_QUIT? Вроде бы должно получиться. И хуки юзать не придется...

Как делать свой обработчик в VB см. на http://bbs.vbstreets.ru/viewtopic.php?t=686&highlight=

SergeySV
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 124
Зарегистрирован: 17.04.2003 (Чт) 14:39
Откуда: Россия, Москва

Сообщение SergeySV » 23.05.2003 (Пт) 13:09

Александр Андреев писал(а):А что, нельзя в обработчике сообщений программы поставить игнор на WM_QUIT? Вроде бы должно получиться. И хуки юзать не придется...

Как делать свой обработчик в VB см. на [url]


Да, абсолютно правильно, если програ твоя, то делать с ней можно что угодно :).
Это называется созданием подкласса окна, здесь тоже хорошие примеры: http://www.vbnet.ru/article/showarticle.asp?id=76 или еще вот: http://www.vbnet.ru/article/showarticle.asp?id=18
Главное двигаться не быстрее, чем думает твоя голова.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 94

    TopList