![]() |
|
|
#1
|
||||
|
||||
|
Есть DLL в которой пытаюсь реализовать перехватчик нажатия средней кнопки мыши
Код:
function MyHook(Code:integer; wParam, lParam: DWord): DWord; stdcall;
var
HMenu: TPopupMenu;
begin
if (wParam=WM_MBUTTONDOWN) then
begin
ShowMessage('Заработало!');
end;
result:=CallNextHookEx(ourHook ,Code, wParam, lParam);
end;
procedure SetHook; stdcall; export;
begin
if ourHook = 0 then
ourHook:=SetWindowsHookEx(WH_MOUSE, @MyHook, HInstance, 0);
end;
procedure UnHook; stdcall; export;
begin
if ourHook <> 0 then
UnHookWindowsHookEx(ourHook);
ourHook := 0;
end;Все нормально работает, при нажатии на среднюю кнопку мыши показывается сообщение и дальше никаких проблем... Но мне вместо сообщения надо показывать popup меню, вот тут и начинается самое интересное... Если заменить Код:
ShowMessage('Заработало!');Код:
HMenu := TPopupMenu.Create(nil); Код:
function MyHook(Code:integer; wParam, lParam: DWord): DWord; stdcall;
var
HMenu: TPopupMenu;
begin
if (wParam=WM_MBUTTONDOWN) then
begin
HMenu := TPopupMenu.Create(nil);
end;
result:=CallNextHookEx(ourHook ,Code, wParam, lParam);
end;, то... Запускаю свою программу с хуком, щелкаю средней кнопкой мыши в каком-нибудь приложении (например, Mozila Firefox), затем закрываю свою программу и приложение (Mozila) падает с ошибкой. Кто-ть подскажите, с чем это связано и как это побороть?! |