AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi SetupDiClassNameFromGuid auf deutsch

SetupDiClassNameFromGuid auf deutsch

Ein Thema von Mattze · begonnen am 10. Jul 2015 · letzter Beitrag vom 10. Jul 2015
Antwort Antwort
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#1

SetupDiClassNameFromGuid auf deutsch

  Alt 10. Jul 2015, 12:10
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
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.423 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: SetupDiClassNameFromGuid auf deutsch

  Alt 10. Jul 2015, 13:40
In dem Fall evtl. die Klassenbeschreibung holen:

Delphi-Quellcode:
function SetupDiClassNameFromGuid(ClassGuid: PGUID; ClassName: PChar;ClassNameSize: DWORD; RequiredSize: PDWORD): BOOL; stdcall;external 'Setupapi.dllname 'SetupDiClassNameFromGuidW';
function SetupDiGetClassDescription(ClassGuid: PGUID; ClassName: PChar;ClassNameSize: DWORD; RequiredSize: PDWORD): BOOL; stdcall;external 'Setupapi.dllname '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;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#3

AW: SetupDiClassNameFromGuid auf deutsch

  Alt 10. Jul 2015, 14:44
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
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.423 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: SetupDiClassNameFromGuid auf deutsch

  Alt 10. Jul 2015, 15:39
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:
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"
}
Leider gibt das nur die Liste, die Zuordnung der Resourcen-IDs erfolgt ja in der main.cpl
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all

Geändert von Union (10. Jul 2015 um 15:49 Uhr)
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#5

AW: SetupDiClassNameFromGuid auf deutsch

  Alt 10. Jul 2015, 18:22
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
  Mit Zitat antworten Zitat
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 18:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf