Dzień dobry, chciałem założyć Hook wykrywający pojawianie
się nowych okien w systemie. Postępowałem według wskazówek
w WinSDK. CBTProc ma zwracać zero żeby zezwalać na wykonanie
tych akcji, no i jak w funkcji CBTProc mam samo Result := 0
to jest OK a jak dodaję jakiś warunek, np. taki jak poniżej
to dzieją się dziwne rzeczy, przede wszystkim żadne okno się
już nie pojawia oprócz tych które widać a przy okazji czasami
zamyka się explorer.exe i wyskakują błędy o nieprawidłowym
dojściu okna. Co robię źle ?
var
Hook: Integer;
function CBTProc(Code: integer;
wParam, lParam: Longint): Longint; stdcall;
begin
Result := 0;
if Code = HCBT_CREATEWND then
Form1.Caption := 'Pojawiło się nowe okno';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Hook := SetWindowsHookEx(WH_CBT, CBTProc, HInstance, 0);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnHookWindowsHookEx(Hook);
end;