AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Titelleiste eines fremden fensters auslesen

Ein Thema von Van HelF · begonnen am 26. Jun 2006 · letzter Beitrag vom 26. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2   
Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#1

Titelleiste eines fremden fensters auslesen

  Alt 26. Jun 2006, 11:56
hallo, ist es möglich, die titelleiste eines fremden fensters auszulesen?
z.b. die des Browsers (nicht IE)?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Titelleiste eines fremden fensters auslesen

  Alt 26. Jun 2006, 12:02
mit MSDN-Library durchsuchenGetWindowText ist dies möglich.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#3

Re: Titelleiste eines fremden fensters auslesen

  Alt 26. Jun 2006, 12:10
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.
  Mit Zitat antworten Zitat
Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#4

Re: Titelleiste eines fremden fensters auslesen

  Alt 26. Jun 2006, 20:20
hat niemand eine idee, gibt es noch eine andere funktion um dies auszulesen ?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Titelleiste eines fremden fensters auslesen

  Alt 26. Jun 2006, 20:39
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.
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
Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#6

Re: Titelleiste eines fremden fensters auslesen

  Alt 26. Jun 2006, 22:55
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 ?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Titelleiste eines fremden fensters auslesen

  Alt 26. Jun 2006, 23:05
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.
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
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Titelleiste eines fremden fensters auslesen

  Alt 26. Jun 2006, 23:07
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#9

Re: Titelleiste eines fremden fensters auslesen

  Alt 26. Jun 2006, 23:26
habe ich ,
ich lasse mit mit der funktion EnumWindows alle fenster ausgeben, und da steht nur "Opera",sonst nichts.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Titelleiste eines fremden fensters auslesen

  Alt 26. Jun 2006, 23:37
Wie sieht dein EnumWindows aus?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:10 Uhr.
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