AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi InternalGetWindowText & Unicode String ---> String
Thema durchsuchen
Ansicht
Themen-Optionen

InternalGetWindowText & Unicode String ---> String

Ein Thema von toms · begonnen am 24. Jun 2002 · letzter Beitrag vom 24. Jun 2002
Antwort Antwort
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#1

InternalGetWindowText & Unicode String ---> String

  Alt 24. Jun 2002, 16:33
Hi,

Wie wandelt man am einfachsten einen Unicode String in einen String um?

lpString hat den Wert
('F', #0, 'o', #0, 'r', #0, 'm', #0, '1', #0, #0, #0, 'A', #10, #1, '&', #0, #0, ...)
Wobei dann Showmessage nur 'F' anzeigt.
(Klar, wegen den null-term. Strings)


Code:
function NT_InternalGetWindowText(Wnd: HWND): String;
type
  TInternalGetWindowText = function(Wnd: HWND;lpString: PChar;nMaxCount: Integer): Integer; stdcall;
var
  hUserDll: THandle;
  InternalGetWindowText: TInternalGetWindowText;
  lpString: array[0..MAX_PATH] of Char; //Buffer for window caption
  oemStr : PChar;
begin
  Result := '';
  hUserDll := GetModuleHandle('user32.dll');
  if (hUserDll > 0) then
  begin
    @InternalGetWindowText := GetProcAddress(hUserDll, 'InternalGetWindowText');
    if Assigned(InternalGetWindowText) then
    begin
      InternalGetWindowText(Wnd, lpString, SizeOf(lpString));
      Result := StrPas(lpString);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(NT_InternalGetWindowText(handle));
end;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2
  Alt 24. Jun 2002, 16:37
Folgende drei Zeilen müssen geändert werden.

lpString: array[0..MAX_PATH] of WideChar; //Buffer for window caption

InternalGetWindowText(Wnd, @lpString, SizeOf(lpString));
Result := AnsiString(lpString);

Das wars.
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3
  Alt 24. Jun 2002, 16:39
Danke.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#4
  Alt 24. Jun 2002, 16:42
Okay, die letzte Möglichkeit war nicht perfekt. Diese Lösung ist wohl besser.
Code:
function NT_InternalGetWindowText(Wnd: HWND): String;
type
  TInternalGetWindowText = function(Wnd: HWND;lpString: PWideChar;nMaxCount: Integer): Integer; stdcall;
var
  hUserDll: THandle;
  InternalGetWindowText: TInternalGetWindowText;
  lpString: array[0..MAX_PATH] of WideChar; //Buffer for window caption
  oemStr : PChar;
begin
  Result := '';
  hUserDll := GetModuleHandle('user32.dll');
  if (hUserDll > 0) then
  begin
    @InternalGetWindowText := GetProcAddress(hUserDll, 'InternalGetWindowText');
    if Assigned(InternalGetWindowText) then
    begin
      InternalGetWindowText(Wnd, lpString, SizeOf(lpString));
      Result := String(lpString);
    end;
  end;
end;
Änderungen zu Deiner Lösung:

TInternalGetWindowText = function(Wnd: HWND;lpString: PWideChar;nMaxCount: Integer): Integer; stdcall;

lpString: array[0..MAX_PATH] of WideChar; //Buffer for window caption

Result := String(lpString);
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:21 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