Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#13
  Alt 17. Jun 2003, 21:01
Moin Chris,

vielleicht hilft das hier ja weiter

Delphi-Quellcode:
// Diese Funktion ist selbst zu deklarieren.
// Wichtig ist die Aufrufkonvention stdcall
function EnumWindowsProc(const hWindow : DWORD;const AdwDummy : DWORD) : Longbool; stdcall;

var
  pCaption : PChar; // Die Adresse eines Buffers, der den jeweiligen Fenstertitel aufnehmen soll
  dwSize : DWORD; // Bufferlänge

begin
  Result := true; // TRUE = weitermachen

  // Nur sichtbare Fenster prüfen
  if not IsWindowVisible(hWindow) then exit;

  // Ermitteln, wie lang der Text des Fenstertitels ist
  dwSize := SendMessage(hWindow,WM_GETTEXTLENGTH,0,0);

  // Speicher für die auszulesende Caption reservieren + 1, wg. der terminierenden 0
  pCaption := AllocMem(dwSize+1);
  try

    // Fenstertitel auslesen
    // da als zweiter Parameter ein lParam erwartet wird, aber eine Adresse zu
    // übergeben ist, findet hier eine Typumwandlung statt
    SendMessage(hWindow,WM_GETTEXT,dwSize+1,lParam(pCaption));

    // Fenstertitel anzeigen
    // Hier kann dann auch die Prüfung stattfinden, ob das Handle des gesuchten Fensters
    // an diese Funktion übergeben wurde, um damit anzustellen, was auch immer
    // passieren soll.
    // War es das richtige, dann kann man Result auf FALSE setzen, um anzuzeigen,
    // das keine weiteren Fenster durchgegangen werden müssen
    ShowMessage(pCaption);
  finally
    // Speicher wieder freigeben
    FreeMem(pCaption,dwSize+1);
  end;
end;

procedure FindAllWindows;
begin
  // EnumWindows benötigt zum Aufruf nur die Adresse einer Funktion, an
  // die die Fensterhandle aller Top-Level (Haupt-) fenster der Reihe
  // nach wie Windows sie findet übergeben werden.
  EnumWindows(@EnumWindowsProc,0);
end;

procedure TfrmMAIN.Button1Click(Sender: TObject);
begin
  FindAllWindows;
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat