AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Glob. Hook für WM_WINDOWPOSCHANGED bzw WM_WINDOWPOSCHANGING
Thema durchsuchen
Ansicht
Themen-Optionen

Glob. Hook für WM_WINDOWPOSCHANGED bzw WM_WINDOWPOSCHANGING

Ein Thema von s.h.a.r.k · begonnen am 18. Mai 2010 · letzter Beitrag vom 19. Mai 2010
 
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

Glob. Hook für WM_WINDOWPOSCHANGED bzw WM_WINDOWPOSCHANGING

  Alt 18. Mai 2010, 01:01
Hallo zusammen,

und zwar versuche ich schon seit geraumer Zeit einen Anwendungs-globalen Hook für die Windows-Botschaften WM_WINDOWPOSCHANGING oder WM_WINDOWPOSCHANGED zu implementieren. Ziel ist es, die Bewegung eines beliebigen anderen Fenster festzustellen und darauf zu reagieren. Ich habe mich ein wenig eingelesen, da ich nicht all zu viel Ahnung von Hooks hatte, bis ich nun alles zum Laufen gebracht habe Folgenden Code habe ich im Moment:

Delphi-Quellcode:
// Hook registrieren, aber welche WH_xxx soll ich nehmen?
FHookHandle := SetWindowsHookEx(WH_MAX, FHookMethodPointer, 0, GetCurrentThreadId());

{ ... }

function TMyClass.HookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LResult; stdcall;
var
  P: PEventMsg;
begin
  case nCode < HC_ACTION of
    True:
      Result := CallNextHookEx(FHookHandle, nCode, wParam, lParam);
  else
    if (lParam <> 0) then
    begin
      //
      // Diesen Code habe ich wo gefunden, er funktioniert aber nicht wirklich,
      // da nie was ins Memo geschrieben wird. :-/
      //
      P := PEventMsg(lParam);
      if (P.message = WM_WINDOWPOSCHANGED) or (P.message = WM_WINDOWPOSCHANGING) then
        Memo1.Lines.Add('blub');
    end;

    Result := CallNextHookEx(FHookHandle, nCode, wParam, lParam);
  end;
end;
Ich habe die interessanten Stellen im Code markiert. Zum einen handelt es sich um den Aufruf von SetWindowsHookEx, bei dem ich nicht genau weiß, mit welchem ersten Parameter ich diesen nutzen soll. Ich will eben nur die oben genannten Messages abfangen.

Des weiteren will ich in der Hook-Nachrichtenschleife genau diese Messages abfangen und komme aber nicht wirklich zum Ziel. Ich hoffe, ihr könnt mir hier weiterhelfen!
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz