Показать сообщение отдельно
  #1  
Старый 12.04.2024, 09:47
T232006 T232006 вне форума
Прохожий
 
Регистрация: 17.11.2022
Сообщения: 49
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию Отловить событие получения фокуса стороннего окна

Здравствуйте! Есть задача передать сообщение чужому окну. Для этого соорудил ловушку.
Код:
library WinFocus;
 
{$R *.res}
uses
  windows,
  Messages;
 
var SysHook: hHook = 0;
    WindowHandle: HWnd;
 
function GetWinHandle:Hwnd export; stdcall;
begin
  result:=WindowHandle;
end;
 
function CBTProc(Code: Integer; wParam: WParam; LParam: LParam):integer;
begin
   WindowHandle:=GetForegroundWindow;
   result:=CallNexthookEx(SysHook, code, Wparam, LParam);
end;
 
procedure RunHook(wnd:Hwnd) export; stdcall;
begin
    SysHook := SetWindowsHookEx(HCBT_SETFOCUS, @CBTProc, hInstance, 0);
end;
 
procedure StopHook export; stdcall;
begin
  UnhookWindowsHookEx(SysHook);
  SysHook:=0;
end;
 
exports StopHook, RunHook, GetWinHandle;
end.
Но эта ловушка ловит почему-то только мое окно и не реагирует на остальные. Что я делаю не так?
Ответить с цитированием