Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2012, 06:02   #1
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,265
По умолчанию Перехват боковых кнопок мыши (Delphi)

Делаю глобальных перехват кнопок мыши, вот код длл
Цитата:
library hooklib;

uses
windows, sysutils, messages;

var
H, wh, cw : THandle;

function hook(code, w, l : integer): Lresult; stdcall;
var
str:string;
begin
str:=IntToStr(LoWord(w))+'_'+IntToS tr(HiWord(w));
if w <> 512 then SendMessage(Cw,WM_SETTEXT,0,lParam( str));
result := CallNextHookEx(H, code, w, l);
End;


procedure sethook;
begin
H:= SetWindowsHookEx(14, @hook, hInstance, 0);
wh:=FindWindow(nil,PChar('Form1'));
Cw:=FindWindowEx(Wh,0,PChar('TMemo' ),nil);
if H = 0 then
messagebox(0,'AAAAAA!!! ERORR!!!','ERROR',mb_iconhand);
end;

procedure removehook;
begin
UnhookWindowsHookEx(H);
end;

exports
sethook index 1 name 'sethook',
removehook index 2 name 'removehook';
end.
По идее LoWord(w) передает код события (нажатия отпускания кнопки), а HiWord(w) должен передавать как раз "модификаторы", чтобы различать боковые кнопки мыши, но почему то там ничего не передается. А при нажатии на боковые кнопки в LoWord идут одни и те-же значения. Как правильно считать какая из боковых (дополнительных) кнопок у мыши нажата?
Simply-Art вне форума Ответить с цитированием
Старый 23.08.2012, 08:01   #2
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,265
По умолчанию

Блин пока дождешься ответа, сам решишь задачу
Надо использовать еще L параметр, который указывает на структуру, там то и есть модификаторы.
Код:
function hook(code, w, l : integer): Lresult; stdcall;
var
  str:string;
  ll:tagMSLLHOOKSTRUCT;
begin
ll := PtagMSLLHOOKSTRUCT(l)^;
str:=IntToStr(HiWord(ll.mouseData));
// меняется 1 или 2 в зависимости от нажатой боковой кнопки
Оставлю, может кому пригодится.
Simply-Art вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ловля боковых кнопок Мыши по всему экрану Spawn.Ivan Общие вопросы Delphi 9 22.09.2015 15:25
Перехват нажатия кнопок мыши DarkEvil Win Api 7 15.06.2009 22:38
Узнать состояние кнопок мыши Cold_Night Общие вопросы Delphi 3 07.06.2009 21:36
Нажатие кнопок мыши zzzzz Win Api 7 02.12.2007 12:33