Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi titel eines fenster erhalten (https://www.delphipraxis.net/6921-titel-eines-fenster-erhalten.html)

Illuminator-23-5 27. Jul 2003 15:24


titel eines fenster erhalten
 
wie kann ich mit hilfe einer hwnd-variable den titel eines fensters erhalten?

CalganX 27. Jul 2003 15:39

Re: titel eines fenster erhalten
 
SendMessage und WM_GETTEXT sollten dir helfen (PSDK und/oder Online-Hilfe).

Chris

Alexander 27. Jul 2003 15:43

Re: titel eines fenster erhalten
 
und hier mal ein wenig Source:
Delphi-Quellcode:
function GetText(Wnd: HWND): string;
var
  textlength: Integer;
  Text: PChar;
begin
  textlength := SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0);
  if textlength = 0 then Result := ''
  else
  begin
    GetMem(Text, textlength + 1);
    SendMessage(Wnd, WM_GETTEXT, textlength + 1, Integer(Text));
    Result := Text;
    FreeMem(Text);
  end;
end;

Luckie 27. Jul 2003 16:16

Re: titel eines fenster erhalten
 
Delphi-Quellcode:
function GetText(Wnd: HWND): string;
var
  textlength: Integer;
  Text: PChar;
begin
  textlength := SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0);
  if textlength = 0 then Result := ''
  else
  begin
    GetMem(Text, textlength + 1);
    try
      SendMessage(Wnd, WM_GETTEXT, textlength + 1, Integer(Text));
      Result := Text;
    finally
      FreeMem(Text);
    end;
  end;
end;

Gast 27. Jul 2003 21:21

Re: titel eines fenster erhalten
 
Und zum dritten:

Delphi-Quellcode:
function GetText(Wnd: HWND): string;
var
  textlength: Integer;
  Text: PChar;
begin
  textlength := SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0);
  if textlength = 0 then Result := ''
  else
  begin
    GetMem(Text, textlength + 1);
// Änderung ->
    if Assigned(Text) then
    try
      SendMessage(Wnd, WM_GETTEXT, textlength + 1, Integer(Text));
//      Result := Text;
// Änderung ->
    SetString(Result, Text, lstrlen(Text));
    finally
      FreeMem(Text);
    end;
  end;
end;
Luckies Variante geht natürlich u.U. und das SetString ist eher kosmetischer Natur. Natürlich geht auch eine normale Zuweisung, solange die Orginal-Systemunits eingebunden sind (für die String-Compilermagic ;))

Illuminator-23-5 27. Jul 2003 21:33

Re: titel eines fenster erhalten
 
ok, die sources funzen, thx4help

negaH 28. Jul 2003 01:06

Re: titel eines fenster erhalten
 
Delphi-Quellcode:
function GetCaption(Wnd: HWnd): String;
begin
  SetLength(Result, GetWindowTextLength(Wnd));
  SetLength(Result, GetWindowText(Wnd, PChar(Result), Length(Result)));
end;
Gruß Hagen

Luckie 28. Jul 2003 03:13

Re: titel eines fenster erhalten
 
Ich darf zitieren:
Zitat:

GetWindowText cannot retrieve the text of a control in another application.
:wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:30 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