![]() |
Titelleiste eines fremden fensters auslesen
hallo, ist es möglich, die titelleiste eines fremden fensters auszulesen?
z.b. die des Browsers (nicht IE)? |
Re: Titelleiste eines fremden fensters auslesen
mit
![]() |
Re: Titelleiste eines fremden fensters auslesen
ich verwende folgenden Code
Delphi-Quellcode:
er werden zwar alle titel der programme angezeigt, jedoch nur teilweise.
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; 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. |
Re: Titelleiste eines fremden fensters auslesen
hat niemand eine idee, gibt es noch eine andere funktion um dies auszulesen ?
|
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 ![]() ![]() Die Funktionen GetWindowText usw. funktionieren prozessübergreifend nicht zwingend richtig. Im Thread "Window Handle" in der Sparte "Windows-API" wirst Du auch fündig. |
Re: Titelleiste eines fremden fensters auslesen
danke für den tipp
habe folgendes versucht:
Delphi-Quellcode:
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 ?
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; |
Re: Titelleiste eines fremden fensters auslesen
Moin Van HelF,
probier's mal so:
Delphi-Quellcode:
Ich hatte schon einmal den Fall wo @...[1] als PChar-Ersatz nicht funktioniert hat.
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; |
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 ![]() ![]() |
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. |
Re: Titelleiste eines fremden fensters auslesen
Wie sieht dein EnumWindows aus?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz