Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Classname-Nr. umwandlen (https://www.delphipraxis.net/29928-classname-nr-umwandlen.html)

Ultimator 16. Sep 2004 20:06


Classname-Nr. umwandlen
 
Hallo, ich hab wieder mal ne Frage. :-)

Und zwar hab ich per Handle den Windows-Klassennamen eines Controls erhalten; dieser ist jedoch bekanntermaßen eine Zahl.
So, meine Frage ist nun: Wie kann ich von dieser Zahl auf den echten Namen des Controls schließen, etwa "Button" oder so?

Ich hoffe, ihr könnt mir,(wie schon so oft *schleim* :mrgreen: ) helfen. :thuimb:

Ultimator 19. Sep 2004 11:31

Re: Classname-Nr. umwandlen
 
Ich hab bis jetzt leider keine Lösung gefunden :roll:

Christian Seehase 19. Sep 2004 11:32

Re: Classname-Nr. umwandlen
 
Moin Ultimator,

ich für meinen Teil versteh' nicht ganz, was Du da gemacht hast.
Könntest Du es bitte mal mit einem Codebeispiel verdeutlichen?

Ultimator 19. Sep 2004 12:16

Re: Classname-Nr. umwandlen
 
Kein Problem, hier: ;-)
Delphi-Quellcode:
var Buffer: array[1..1000] of char;
GetClassName(Application.Handle,@Buffer,SizeOf(Buffer));
Mit der Funktion bekomm ich dann einen Integer raus, ich möchte aber, dass ich das als lesbare Klasse bekomme, z.B. Button oder so...

Ich hab den Buffer erstmal reichlich dimensioniert, kann ich ja evtl. später immer noch ändern.
GetClassname ist eine Funktion, die ich im WinAPI-SDK gefunden hab.
(nachzulesen hier ;-) )

SirThornberry 19. Sep 2004 12:38

Re: Classname-Nr. umwandlen
 
Du bekommst eine Zahl weil du die Funktion falsch aufrufst. Richtig ist es so:
Delphi-Quellcode:
var Classenname: Array[0..255] of Char;
begin
  GetClassName(Application.Handle, Classenname, 255);
end;
GetClassName besorgt sich selbst die Adresse der Variablen, also brauchst du nicht den pointer übergeben, ist klar das es sonst schief geht.

Ultimator 19. Sep 2004 12:45

Re: Classname-Nr. umwandlen
 
Oh, danke. :oops: :)

Aber deswegen bekomm ich trotzdem eine Zahl raus... :pale:

SirThornberry 19. Sep 2004 12:46

Re: Classname-Nr. umwandlen
 
hätte ich die Hilfe gelesen, hätte ich vermutlich auch einen pointer übergeben

Sprint 19. Sep 2004 13:05

Re: Classname-Nr. umwandlen
 
Zitat:

Zitat von Ultimator
Aber deswegen bekomm ich trotzdem eine Zahl raus... :pale:

Delphi-Quellcode:
function GetClassName(Handle: HWND): String;
begin

  SetLength(Result, 260);
  SetLength(Result, Windows.GetClassName(Handle, PChar(Result), Length(Result)));

end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin

  ShowMessage(GetClassName(Application.Handle));

end;

Dax 19. Sep 2004 13:07

Re: Classname-Nr. umwandlen
 
Sags doch einfach so:

GetClassName liefert die Anzahl der Zeichen des Namens zurück!

Ultimator 19. Sep 2004 13:46

Re: Classname-Nr. umwandlen
 
Hey Sprint, danke :firejump:

@Dax: Irgendwie ist das aber ziemlich unsinnig, nicht? ;-)


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