![]() |
|
|
![]()
|
|
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Нужно запретить вызов панели Пуска, пока программа запущена. Т.е. до панели добраться "вручную" невозможно, об этом я уже позаботился. Остался только один метод ее вызова - это нажатие юзером кнопки Win. Как можно и этот метод убрать?
|
|||
|
||||
| ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 10 Всего: 95 |
проблема стара, как мир... Его еще можно вызвать по Ctrl+Esc...
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
ama_kid, два вопроса.
1. При компиляции - ошибка "неизвестный символ hHook". Он и впрямь неизвестный, мы же его не объявляли? 2. Что значит "при запуске программы" ? В OnCreate формы? или как? |
|||
|
||||
| mr.Anderson |
|
||||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Сам же и отвечаю.
Ошибку hHook исправляем простым стиранием этого присваивания. То есть вместо
Пишем так:
А насчет, где это писать - да, надо писать в OnCreate формы. Лучше в самом начале этого обработчика, если у вас там еще какой-нить код есть, имхо. ama_kid, браво! Код мне не очень понятен, но у него есть три неоспоримых достоинства: 1. Безо всяких DLL. А то говорят, что без них никак. 2. Работает в любой системе (ну, в Windows, по крайней мере, точно). 3. Это превосходно и безотказно работает. Огромное вам спасибо! От меня плюс в репутацию. |
||||
|
|||||
| ama_kid |
|
||||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 10 Всего: 95 |
mr.Anderson
hHook - это значение, возвращаемое функцией SetWindowHookEx - фактически этой указатель на предыдущую функцию в цепочке хуков... Исправить удалением, конечно, в данном случае можно, но вообще правильней это значение (типа HHOOK) использовать в строке 32 моего кода
тем самым мы передаем управление другой программе в цепочке, которая, возможно, повесила хук на клавиатуру... И еще - при выходе из программы желательно делать
Этим мы снимаем с клавиатуры низкоуровневый хук, что является хорошей практикой. Здесь тоже нужен этот hHook... Вообще, для того, чтобы повесить глобальный хук в системе - это обязательно делать через Dll, но для клавиатуры был введен специальный глобальный хук WH_KEYBOARD_LL (LowLevel), который можно вешать в своем процессе. Низкоуровневые хуки можно вешать на клавиатуру и мышь (WH_MOUSE_LL). -------------------- самурай без меча подобен самураю с мечом, но только без меча |
||||
|
|||||
| MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев Репутация: 1 Всего: 4 |
#for all - Метод конечно обалденный, мне самому очень понравился, автору респект!
# for ama_kid Это сообщение отредактировал(а) MuForum - 6.9.2007, 14:35 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |