Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

хук для запрета нажатия клавиши

12K
18 июня 2007 года
dark_n
9 / / 14.02.2006
Здрасте,с хуками практического опыта не имею,скачал пример сижу разбираюсь

private static IntPtr HookCallback( int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
{
int vkCode = Marshal.ReadInt32(lParam);
Console.WriteLine((Keys)vkCode);

Собственно в консоли выводятся нажатые мною клавиши.
1)Как я определю что нажата ,например, клавиша "А"??
например
if((Keys)vkCode==Keys.A)
...
не работает
значения виртуальных клавиш как мне прочитать,так в доках написано примерно так:

LRESULT CALLBACK KeyboardProc( int code, // код hook-точки WPARAM wParam, // код виртуальной клавиши LPARAM lParam // информация о сообщении нажатой клавиши);

однако видно что инфа о клавише идет с 3 параметра функции. В переменной vkCode цифры что показывают.сравнивал по таблице виртуальных клавиш не соответствует.
2)мне нужно запретить нажатие определенной клавиши в сторонней программе .как бы перехватить это нажатие можно, а как быть с тем чтобы чужая программа не узнала что нажата эта клавиша и сооветственно не отреагировала? .Вариант с отломом этой клавиши не предлагать ! :)
18K
18 июня 2007 года
un_named
60 / / 24.04.2007
Если никакая другая программа не ловит эту клавишу, то можно хоткей повесить.
А что касается виртуального кода клавиши, то есть такая инфо:
/* VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) */
можно в принципе указать и в двоичном виде.

ЗЫ ошибки в коде не искал, напрягает чужой код разглядывать.
Советую код оформить по правилам, пока никто из модераторов не увидел. ;-)
12K
18 июня 2007 года
dark_n
9 / / 14.02.2006
слепой я что-ли , не вижу кнопки выделения исходников :(
хоткей не поможет -следить то нужно не за моей программой
18K
20 июня 2007 года
un_named
60 / / 24.04.2007
Для вставки кода используется кнопочка #
Что касается горячей клавиши, то при установке регистерхоткей, идет перехват нажатия клавиши, и ее сообщение не отправляется активному окну... Может я конечно, что-то не так делал? :)


PS
Вот программка, без использования хуков, но она не позволит нажать пробел ни в какой другой программе. Использована именно горячая клавиша - спэйс.
Программка видна в трее, для выгрузки - правый клик, в открывшемся меню - выход.
Удачи.
370
01 июля 2007 года
koval
443 / / 29.08.2005
Цитата: un_named
Для вставки кода используется кнопочка #
Что касается горячей клавиши, то при установке регистерхоткей, идет перехват нажатия клавиши, и ее сообщение не отправляется активному окну... Может я конечно, что-то не так делал? :)


PS
Вот программка, без использования хуков, но она не позволит нажать пробел ни в какой другой программе. Использована именно горячая клавиша - спэйс.
Программка видна в трее, для выгрузки - правый клик, в открывшемся меню - выход.
Удачи.



Если можно то по подробней как все-таки запретить отправку сообщений от данной кнопки системе. Хук для отлова нажатия копок написал, все работает, а вот как запретить нажатие кнопки.

18K
02 июля 2007 года
un_named
60 / / 24.04.2007
Цитата: koval
Если можно то по подробней как все-таки запретить отправку сообщений от данной кнопки системе. Хук для отлова нажатия копок написал, все работает, а вот как запретить нажатие кнопки.



Запретить нажатие кнопки не получится, а вот если при обработке сообщения WM_CREATE установить на кнопку горячую клавишу - RegisterHotKey и в дальнейшем обрабатывать сообщение WM_HOTKEY не передавая нажатие кнопки/кнопок дальше, то можно изолировать нажатие горячей клавиши от других программ.
Прикрепляю часть исходника предыдущей програмки, там более понятно.

Если хочется установить запрет для одного конкретного окна, то советую ввести проверку, того, в каком окне находится каретка.

370
03 июля 2007 года
koval
443 / / 29.08.2005
Мне интересно как запретить отправку сообщения от кнопки в Виндовс. т.е. я хочу запретить нажание кнопки ВИН. В МСДНе написано, что можно отменять отправку сообщений, но как это сделать там не сказано.
74K
16 июля 2011 года
razor_93_09
1 / / 16.07.2011
люди, как сделать хук для кнопки f2 и f3 если тут еще живо ответьте!
278
16 июля 2011 года
Alexander92
1.1K / / 04.08.2008
Угу... Как раз с 2007-го года еще тут, как раз тебя ждали...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог