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

Ваш аккаунт

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

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

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

Как ловить комбинацию из трех клавиш?

2.0K
07 сентября 2003 года
q23r
10 / / 25.10.2002
При нажатии средней кнопке мыши надо сказать винде, что на самом деле это Ctrl+c+c.
4.5K
11 сентября 2003 года
Kasper1985
18 / / 06.09.2003
Цитата:
Originally posted by q23r
При нажатии средней кнопке мыши надо сказать винде, что на самом деле это Ctrl+c+c.



Через ClassWizard создай функцию PreTranslateMessage, в которой перехватывай сообщения посланые проге, а потом обрабатывай их по своему.

401
12 сентября 2003 года
Br@in RIPper
289 / / 15.02.2003
Цитата:
Originally posted by q23r
При нажатии средней кнопке мыши надо сказать винде, что на самом деле это Ctrl+c+c.



можно сделать при помощи SetWindowsHookEx.
я так делал, только у меня средняя кнопка заменялась на double click левой кнопки

2.0K
14 сентября 2003 года
q23r
10 / / 25.10.2002
можно сделать при помощи SetWindowsHookEx.

А исходник ламеру не скинешь?)
И еще какая разница, что использовать
WH_MOUSE или WH_MOUSE_LL???

wParam
WM_LBUTTONDOWN,WM_LBUTTONUP,WM_MOUSEMOVE,WM_MOUSEWHEEL,WM_RBUTTONDOWN, or WM_RBUTTONUP.

А нажатие средней кнопки?
401
15 сентября 2003 года
Br@in RIPper
289 / / 15.02.2003
Цитата:
Originally posted by q23r
можно сделать при помощи SetWindowsHookEx.

А исходник ламеру не скинешь?)
И еще какая разница, что использовать
WH_MOUSE или WH_MOUSE_LL???

wParam
WM_LBUTTONDOWN,WM_LBUTTONUP,WM_MOUSEMOVE,WM_MOUSEWHEEL,WM_RBUTTONDOWN, or WM_RBUTTONUP.

А нажатие средней кнопки?



На сколько я понял, главным отличием WH_MOUSE_LL от WH_MOUSE является то, что в первом случае callback функция вызывается перед тем, как событие мыши отправляется в очередь сообщений, а во втором, когда отслеживаемой прогой вызывается ф-ция GetMessage и в очереди есть мышиные события. Да, и самое главное: WH_MOUSE_LL существует только в семействе Win NT (2000, XP)

исходника с сейчас с собой нету, могу объяснить примерный алгоритм. В обработчике MouseProc ловим среднюю кнопку мыши. Как реакцию на это сообщение программно нажимаем сочетание трех клавиш - примерно так (virtual key of 'c'=0x43):

keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(0x43, 0, 0, 0);
keybd_event(0x43, 0, KEYEVENTF_KEYUP, 0);
keybd_event(0x43, 0, 0, 0);
keybd_event(0x43, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);

чтобы виндой не обрабатывалась сама средняя кнопка мыши нужно удалить это сообщение. Я точно не помню, как я это делал, но можно попробовать не вызывать в конце ф-цию CallNextHookEx (хотя это не приветствуется). Я, по-моему, использовал не WH_MOUSE, а WH_MSGFILTER. Там в структуре MSG, на которую указывает lParam, достаточно присвоить элементу message значение WM_NULL.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог