Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Titelleiste eines fremden fensters auslesen (https://www.delphipraxis.net/72141-titelleiste-eines-fremden-fensters-auslesen.html)

Van HelF 26. Jun 2006 10:56


Titelleiste eines fremden fensters auslesen
 
hallo, ist es möglich, die titelleiste eines fremden fensters auszulesen?
z.b. die des Browsers (nicht IE)?

SirThornberry 26. Jun 2006 11:02

Re: Titelleiste eines fremden fensters auslesen
 
mit MSDN-Library durchsuchenGetWindowText ist dies möglich.

Van HelF 26. Jun 2006 11:10

Re: Titelleiste eines fremden fensters auslesen
 
ich verwende folgenden Code
Delphi-Quellcode:
function EnumWinProc(Wnd: THandle; LParam: LongInt): Boolean; stdcall;
var
 WinCaption : string;
 Len: integer;
begin
 Result := True;
 Len := GetWindowTextLength(Wnd);
 SetLength(WinCaption, Len);
 GetWindowText(Wnd, PChar(WinCaption), Len+1);
 if Trim(WinCaption) <> '' then
   Form1.Listbox1.Items.Add(Format('%.6x : %s', [Wnd, WinCaption]));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(@EnumWinProc, 0);
end;
er werden zwar alle titel der programme angezeigt, jedoch nur teilweise.
ich möchte aus der titelleiste von z.b. opera auslesen, welche seite geöffnet ist, jedoch wird mit dieser funktion lediglich "Opera" zurückgeliefert, und nicht der text, der wirklich in der tittelleiste steht.

Van HelF 26. Jun 2006 19:20

Re: Titelleiste eines fremden fensters auslesen
 
hat niemand eine idee, gibt es noch eine andere funktion um dies auszulesen ?

Christian Seehase 26. Jun 2006 19:39

Re: Titelleiste eines fremden fensters auslesen
 
Moin Van HelF,

Glück gehabt, dass ich zufällig gerade eine Antwort weiss.
Pushen von Threads ist nämlich erst nach 24 Stunden erlaubt. Nicht nach 8 :!:


Such' hier mal nach Hier im Forum suchenWM_GETTEXT / Hier im Forum suchenWM_GETTEXTLENGTH
Die Funktionen GetWindowText usw. funktionieren prozessübergreifend nicht zwingend richtig.

Im Thread "Window Handle" in der Sparte "Windows-API" wirst Du auch fündig.

Van HelF 26. Jun 2006 21:55

Re: Titelleiste eines fremden fensters auslesen
 
danke für den tipp
habe folgendes versucht:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  Buf : string;
  wnd : HWND;
begin
  wnd:=FindWindow(nil, PChar('Opera'));
  SetLength(Buf,SendMessage(wnd,WM_GETTEXTLENGTH,0,0)+1);
  SendMessage(wnd,WM_GETTEXT,length(Buf),Integer(@buf[1]));
  ShowMessage(buf);
end;
jedoch wird der titel immer noch unvollständig ausgegeben, in diesem falle erscheint nur "Opera" statt z.b. "Opera - Delphi Praxis", woran könnte dies liegen ?

Christian Seehase 26. Jun 2006 22:05

Re: Titelleiste eines fremden fensters auslesen
 
Moin Van HelF,

probier's mal so:

Delphi-Quellcode:
var
  Buf : PChar;
  wnd : HWND;
  iLen : integer;

begin
  wnd:=FindWindow(nil, PChar('Opera'));
  if wnd <> 0 then begin
    iLen := SendMessage(wnd,WM_GETTEXTLENGTH,0,0)+1;
    Buf := AllocMem(iLen);
    try
      SendMessage(wnd,WM_GETTEXT,iLen,lParam(Buf));
      ShowMessage(buf);
    finally
      FreeMem(Buf,iLen);
    end;
  end;
end;
Ich hatte schon einmal den Fall wo @...[1] als PChar-Ersatz nicht funktioniert hat.

Luckie 26. Jun 2006 22:07

Re: Titelleiste eines fremden fensters auslesen
 
Wie willst du das Fenster mit dem Titel "Opera - Delphipraxis" finden, wenn du nur nach "Opera" suchst? Dass da "Opera" ausgegeben wird, ist wohl purer Zufall, weil das dort gerade im Speicher steht.

Nutze MSDN-Library durchsuchenEnumWindows und gucke, ob du mit Delphi-Referenz durchsuchenpos den teilstring Opera findest. Alternativ benutze bei FindWindow die Fensterklasse anstatt den Titel.

Van HelF 26. Jun 2006 22:26

Re: Titelleiste eines fremden fensters auslesen
 
habe ich ,
ich lasse mit mit der funktion EnumWindows alle fenster ausgeben, und da steht nur "Opera",sonst nichts.

Luckie 26. Jun 2006 22:37

Re: Titelleiste eines fremden fensters auslesen
 
Wie sieht dein EnumWindows aus?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:42 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz