Dlaczego nie działa globalny hook na WM_MOUSE w Internet Explorerze?

0

Witajcie,

Mam taki sobie prosty kod w mojej DLL:

function HookProc(nCode: Integer; MsgID: WParam; Data: LParam): LResult; stdcall;
var
  mousePoint: TPoint;
begin
  mousePoint := PMouseHookStruct(Data)^.pt;

  if MsgID = WM_LBUTTONDOWN then
  begin
    PostMessage(FindWindow('TMainHookTestForm', nil),
                MouseHookMessage, Integer(mousePoint.X), Integer(mousePoint.Y));
  end;

  Result := CallNextHookEx(Hook,nCode,MsgID,Data);
end;

procedure HookMouse; stdcall;
begin
  if Hook = 0 then Hook:=SetWindowsHookEx(WH_MOUSE,@HookProc,HInstance,0);
end;

procedure UnHookMouse; stdcall;
begin
  UnhookWindowsHookEx(Hook);
  Hook:=0;
end;

Kod działa bezproblemowo na pulpicie, innych aplikacjach itd. Nawet na moim laptopie działa bezproblemowo również w IE. A na tablecie z Win8 gdzie nie ma myszki tylko ekran dotykowy WM_LBUTTONDOWN działa WSZĘDZIE prócz IE. Czy ktoś wie dlaczego?

0

Nie mam pojęcia. Ale tak to już jest z Windows 8. Tam nigdy nic nie wiadomo. I prawidłowy kod WinAPI, który działał wszędzie ok, to tam są "cyrki". Być może okno IE jest traktowane jakoś inaczej. Jako jakiś - nie wiem - widget czy coś podobnego. Jeżeli nie ma żadnych adnotacji na MSDNie co do nietypowych zachowań, to ciężko coś mi jest wymyśleć. Może ktoś jeszcze tutaj, kto się z tym spotkał będzie umiał coś Ci doradzić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1