Einzelnen Beitrag anzeigen

Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Alle Handles eines Classname auflisten

  Alt 22. Jan 2008, 22:22
Ändere es mal so ab:
function {TMainForm.}GetWindows(const hWnd : Longword; Param: PMyEnumParam): LongBool; stdcall; Also TMainForm. rausnehmen.

Zitat von Innos:
@bitsetter jo mit GetWindowText() komm ich klar^^ nur ich will ALLE WIndowNames die es zu einer bestimmten klasse gibt
Warum alle, würde doch IMHO ausreichen die Fenster von deiner Zielanwendung durchzugehen.
Naja wird schon seinen Grund haben.

EDIT: Code ein bisschen umgebaut, die Namen der Fenster die mit dem Klassennamen übereinstimmen, werden in eine Listbox hinzugefügt.
Delphi-Quellcode:
function EnumClassName(hWnd: THandle; Lbx: TListbox): Boolean; stdcall;
var
  Len : Longint;
  S : AnsiString;
  ClName: array[0..60]of char;
begin
  Result := True;
  if IsWindowVisible(hWnd) then
  begin
    windows.GetClassName(hWnd, ClName, SizeOf(ClName));
    if ClName = '#32770then
    begin
      Len := SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0);
      if Len > 0 then
      begin
        SetLength(S, Len);
        SendMessage(hWnd, WM_GETTEXT, Len + 1, DWord(Pchar(S)));
        Lbx.Items.Add(S);
      end;
    end;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  EnumWindows(@EnumClassName, DWord(ListBox1));
end;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat