Как ловить комбинацию из трех клавиш?
При нажатии средней кнопке мыши надо сказать винде, что на самом деле это Ctrl+c+c.
Через ClassWizard создай функцию PreTranslateMessage, в которой перехватывай сообщения посланые проге, а потом обрабатывай их по своему.
При нажатии средней кнопке мыши надо сказать винде, что на самом деле это Ctrl+c+c.
можно сделать при помощи SetWindowsHookEx.
я так делал, только у меня средняя кнопка заменялась на double click левой кнопки
А исходник ламеру не скинешь?)
И еще какая разница, что использовать
WH_MOUSE или WH_MOUSE_LL???
wParam
WM_LBUTTONDOWN,WM_LBUTTONUP,WM_MOUSEMOVE,WM_MOUSEWHEEL,WM_RBUTTONDOWN, or WM_RBUTTONUP.
А нажатие средней кнопки?
можно сделать при помощи 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.