[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]

    function FindMatchingWindows(SearchFor: string; AtBeginning: boolean; var FoundWindows: TStringList): longint;

    {Search window list for all Windows where the title contains or begins
     with (AtBeginning) SearchFor. Returns a TStringList with the title of the
     found windows as string and the window-Handle as Object.
     It is up to you to create and free the TStringList}

    var
      hWndFirst, hWndCurWin, hWndDesk: HWnd;
      szWinText: pChar;
      WinText: string;
      foundAt: byte;
    begin
      hWndDesk:= GetDesktopWindow;
      {This ist the parent of alle top-level windows}
      if hWndDesk <> 0 then
            hWndCurWin := GetWindow(hWndDesk,GW_CHILD)
      else
            {place error handling here}
            exit;
      if not assigned(FoundWindows) then
            {you have to create Stringlist before passing the
             variable to this function}
            exit;
      getMem(szWinText,256);
      hWndFirst:= hWndCurWin;
      while (hWndCurWin <> 0) do
      begin
        GetWindowText(hWndCurWin, szWinText,255);
        WinText:= strpas(szWinText);
        if SearchFor = '' then
        begin
            if WinText = '' then Wintext := format ('Fenster Nr. %d (Ohne Titel)',[hWndCurWin]);
            FoundWindows.addObject(WinText,TObject(hWndCurWin))
        end
        else
        begin
          foundAt:= pos(SearchFor, WinText);
          if (not atBeginning and (foundAt > 0)) or (foundAt = 1) then
          begin
            FoundWindows.addObject(WinText,TObject(hWndCurWin));
          end;
        end;
        hWndCurWin := GetWindow(hWndCurWin,GW_HWNDNEXT);
      end;
      freeMem(szWinText,256);
      result := FoundWindows.count;
    end;

[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]