Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Wie erkennen, wann System-Menü eines Fensters geöffnet w

  Alt 31. Jan 2006, 21:32
um in fast alle Prozesse zu kommen brauchst du erstmal einen Hook. Dann könntest du darin dir alle Threads des Prozesses auflisten lassen und von jedem Thread die Fenster. (bzw. gleich alle Fenster auflisten und filtern welche zu diesem Prozess gehören).
Anschließend kannst du mit GetSystemMenu die Systemmenüs der Fenster ermitteln. Dann noch in diesen Systemmenüs einen Eintrag hinzufügen (weiß ich spontan nicht wie) und dann im Click des Menüeintrages mit FindWindow (oder wie auch immer) dein Fenster suchen und diesem eine Message schicken in welchem Fenster geklickt wurde.

Eventuell kannst auch auch mal schreiben was du genau vor hast, vielleicht gibt es ja einen besseren weg als in alle Systemmenüs irgendwas zu injezieren.

[Edit]
Hab mal bischen Hilfe gelesen und dabei ist folgendes raus gekommen. So erstellt man im Systemmenü 2 weitere Einträge (ein Text und 1 Seperator):
Delphi-Quellcode:
var LHandle: Cardinal;
    LInfo: TMenuItemInfo;
    LStr: String;
begin
  LStr := 'Neues Item';

  LHandle := GetSystemMenu(handle, False);
  ZeroMemory(@LInfo, SizeOf(LInfo));
  LInfo.cbSize := SizeOf(LInfo);
  LInfo.fMask := MIIM_TYPE;
  LInfo.fType := MFT_STRING;
  LInfo.fState := MFS_DEFAULT;
  LInfo.wID := 133;
  LInfo.dwTypeData := PChar(LStr);
  LInfo.cch := Length(LStr);

  InsertMenuItem(LHandle, 0, True, LInfo);
  LInfo.fType := MFT_SEPARATOR;
  InsertMenuItem(LHandle, 1, True, LInfo);
In diesem zusammenhang dürfte die Message "WM_INITMENU" für dich auch Interessant sein.
Du kannst ja ersmtal versuche ob du das alles hinbekommst solange du deine eigene Anwendung hookst, bzw. diese Message abfängst. Wenn du das geschafft hast dürfte der schritt für die Ausweitung auf andere Programme nicht all zu groß sein.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat