Цитата:
Сообщение от Dreammaster
Здравствуйте. Как реализовать действие (например нажатие кнопки Пробел) при клике на БОКОВЫЕ кнопки мыши? Это те, что по умолчанию вперед и назад в браузере делают. ПКМ, СКМ, ЛКП - знаю, а вот на боковые ничего не нашел. :-(
Помогите, будьте любезны. 
|
Это икс батоны)
Ну, можно простенький вариант на таймере...
кидаешь таймер на форму, выставляешь интервал какой нужен, к примеру 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;
VK_XBUTTON1 и VK_XBUTTON2 это те самые боковые кнопки.
Если ты хочешь отправлять нажатие пробела в окно, ну скажем в игру, например cs16... То эмуляция нажатия кнопок будет другая.
глоб. переменная
в том же таймере или в 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