|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Действие при нажатии боковых клавиш мыши
Здравствуйте. Как реализовать действие (например нажатие кнопки Пробел) при клике на БОКОВЫЕ кнопки мыши? Это те, что по умолчанию вперед и назад в браузере делают. ПКМ, СКМ, ЛКП - знаю, а вот на боковые ничего не нашел. :-(
Помогите, будьте любезны. |
#2
|
|||
|
|||
Смотри тут: https://stackoverflow.com/questions/...lick-in-delphi
Там простой пример через ApplicationEvent (только там нет такого понятия как Click, его в винде нет. Есть нажатие и отпускание (down and up). |
#3
|
|||
|
|||
Цитата:
Ну, можно простенький вариант на таймере... кидаешь таймер на форму, выставляешь интервал какой нужен, к примеру 50. Пишешь глобальную переменную Flag. она нужна для того, что бы пробел не нажимался бесконечно, пока зажата боковая кнопка. Flag: boolean; В таймере код: Код:
if GetAsyncKeyState(VK_XBUTTON1) <> 0 then // если боковая кнопка зажата begin if Flag = False then begin Flag := True; // ставим флаг сразу в тру, что бы пробел не нажимался много раз. // тут пишем код, эмулируем нажатие и отжатие пробела. keybd_event(VK_SPACE, 0, 0, 0); keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0); end; END else // если боковая кнопка не зажата begin Flag := False; end; Если ты хочешь отправлять нажатие пробела в окно, ну скажем в игру, например cs16... То эмуляция нажатия кнопок будет другая. глоб. переменная Код:
CSwin: hwnd; в том же таймере или в formcreate Код:
CsWin := FindWindow(nil, 'Counter-Strike'); Код:
keybd_event(VK_SPACE, 0, 0, 0); keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0); Код:
SendMessage(CsWin,WM_KEYDOWN ,VK_SPACE, MakeLong(0, MapVirtualKey(VK_SPACE, 0))); // зажать space sleep(10) ; SendMessage(CsWin,WM_KEYUP ,VK_SPACE, MakeLong(0, MapVirtualKey(VK_SPACE, 0))); // отпустить space Последний раз редактировалось Gareth, 09.03.2020 в 19:28. |