![]() |
SetupDiClassNameFromGuid auf deutsch
Hallo,
mit SetupDiClassNameFromGuid kriege ich ja die Namen der Gerätetypen wie im Gerätemanager. Nur: auf englisch. Wie kriege ich diese Namen nun auf deutsch? (Wobei ich das Problem auch allgemein habe. Ich kriege nach irgendeiner MS-Function etwas auf englisch zurück. Das System zeigt diese Dinge aber auf deutsch an. Wie wird das gemacht?) Gruß Mattze |
AW: SetupDiClassNameFromGuid auf deutsch
In dem Fall evtl. die Klassenbeschreibung holen:
Delphi-Quellcode:
function SetupDiClassNameFromGuid(ClassGuid: PGUID; ClassName: PChar;ClassNameSize: DWORD; RequiredSize: PDWORD): BOOL; stdcall;external 'Setupapi.dll' name 'SetupDiClassNameFromGuidW';
function SetupDiGetClassDescription(ClassGuid: PGUID; ClassName: PChar;ClassNameSize: DWORD; RequiredSize: PDWORD): BOOL; stdcall;external 'Setupapi.dll' name 'SetupDiGetClassDescriptionW'; function GetLocName : string; const // Maus AGUID : TGUID = '{4d36e96f-e325-11ce-bfc1-08002be10318}'; var LSize : DWORD; LClassname : PChar; begin LSize := 0; GetMem(LClassname, 0); SetupDiClassNameFromGuid(@AGUID, LClassname, LSize, @LSize); GetMem(LClassname, LSize); SetupDiClassNameFromGuid(@AGUID, LClassname, LSize, @LSize); Result := LClassname; FreeMem(LClassname); LSize := 0; GetMem(LClassname, 0); SetupDiGetClassDescription(@AGUID, LClassname, LSize, @LSize); GetMem(LClassname, LSize); SetupDiGetClassDescription(@AGUID, LClassname, LSize, @LSize); Result := Result + ' - ' +LClassname; FreeMem(LClassname); end; |
AW: SetupDiClassNameFromGuid auf deutsch
Hallo,
vielen Dank! Genau das war es. Ich wäre sicher nicht so bald darauf gekommen, mal bei SetupDiGetClassDescription nachzuschauen. Scheinbar gibt es da wirklich keine allgemeine Regel. Ich würde mir eine allgemeine Funktion GetLocalName wünschen. (Allerdings ist das wegen der verschiedenen Eingabeparameter bestimmt nicht so möglich. Schade!) Apropos Maus: Ich hatte das gleiche Problem mit den Cursornamen. Bsp: Crosshair, auf deutsch: Präzisionsauswahl. Gelöst bekam ich das nur mit einer eigenen "Übersetzungstabelle" für Cursornamen. Aber das halte ich nicht für eine gute Lösung!!! Na ja... Gruß Mattze |
AW: SetupDiClassNameFromGuid auf deutsch
Gerade bei den Positionsanzeigern ist das auch schwierig, denn die können ja u.A. aus *.cur, *.ani, HINSTANCE etc. geladen werden. Diese Daten haben keine Struktur, welche die Speicherung von Namen zuläßt, geschweige denn mehrsprachig wie z.b. bei FileVersionInfo.
[Edit] Du findest die Bezeichnungen in separaten Resourcen, für die Positionsanzeiger in %systemroot%\system32\<Locale>\main.cpl.mui <Locale> ist dann z.b. für Deutschland de-DE:
Code:
Leider gibt das nur die Liste, die Zuordnung der Resourcen-IDs erfolgt ja in der main.cpl
STRINGTABLE
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN { 208, "Ausgelastet\000" 209, "Hintergrundaktivität\000" 210, "Nicht verfügbar\000" 211, "Textauswahl\000" 212, "Präzisionsauswahl\000" 213, "Vertikale Größenänderung\000" 214, "Horizontale Größenänderung\000" 215, "Diagonale Größenänderung 1\000" 216, "Diagonale Größenänderung 2\000" 217, "Verschieben\000" 218, "Hilfeauswahl\000" 219, "Handschrift\000" 220, "Alternative Auswahl\000" 221, "(Kein)\000" 222, " (Systemschema)\000" 223, "Schema ersetzen?\000" } |
AW: SetupDiClassNameFromGuid auf deutsch
Hallo,
und nochmals viiielen Dank! Du weißt gar nicht, wie sehr Du mir da geholfen hast. Z. Bsp. steht beim Cursorschema "Magnified" in der Registry als letztes im String "...main.cpl, -1007" Ich wusste zwar, dass das ein String aus einer String-Ressource ist, aber nicht, wie man da ran kommt. Einfach deshalb nicht, weil ich die "mui-Regel" (hier: main.cpl.mui) nicht kannte. Toll!!! Gruß Mattze |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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