![]() |
"Arbeitsplatz" in der Sprache des installierten Wi
Um die Beschriftung vom "Arbeitsplatz" in der jeweils gültigen Sprache zu bekommen habe ich mir die folgende Funktion geschrieben. Der optionale Parameter "Default" wird nur dann verwendet, wenn das Auslesen einmal nicht funktionieren sollte.
Delphi-Quellcode:
function GetMyComputerName(Default: string = ''): string;
function ExpandEnvStr(const szInput: string): string; begin SetLength(Result, ExpandEnvironmentStrings(pChar(szInput), nil, 0)); ExpandEnvironmentStrings(pChar(szInput), @Result[1], Length(Result)); Result := StrPas(@Result[1]); end; var Buffer: array[0..MAX_PATH] of char; h: hwnd; SrcFile: string; Index: int64; RDF: TRegistry; const CLSID_MYCOMPUTER = '{20D04FE0-3AEA-1069-A2D8-08002B30309D}'; begin Result := ''; RDF := TRegistry.Create; try RDF.RootKey := HKEY_CLASSES_ROOT; RDF.OpenKey('CLSID\' + CLSID_MYCOMPUTER, false); if (RDF.ValueExists('LocalizedString') = True) and (RDF.ReadString('LocalizedString') <> '') then begin SrcFile := copy(RDF.ReadString('LocalizedString'), 2, MAX_PATH); Index := StrToIntDef(Copy(SrcFile, Pos(',', SrcFile) + 1, Length(SrcFile)), 0); if Index < 0 then Index := Index - (2 * Index); SrcFile := Copy(SrcFile, 1, Pos(',', SrcFile) - 1); SrcFile := ExpandEnvStr(SrcFile); if (FileExists(SrcFile) = True) and (Index <> 0) then begin h := loadlibrary(PAnsiChar(SrcFile)); try if h <> 0 then begin if Loadstring(h, Index, @Buffer, MAX_PATH) > 0 then begin Result := StrPas(buffer); end else Result := Default; end else Result := Default; finally freelibrary(h) end; end; end; if (Result = Default) and (RDF.ValueExists('') = True) and (RDF.ReadString('') <> '') then Result := RDF.ReadString(''); finally RDF.Free; end; end; |
Re: "Arbeitsplatz" in der Sprache des installierte
Für die Benutzer älterer Delphi Versionen (ich glaub' unterhalb 5) solltest Du erwähnen, das das
Delphi-Quellcode:
so sein muss:
function GetMyComputerName(Default: string = ''): string;
Delphi-Quellcode:
mit dem Aufruf:
function GetMyComputerName(Default: string): string;
Delphi-Quellcode:
Warum heißt das GetMyComputerName? :gruebel:
GetMyComputerName('');
Edit: Unter Win95 funkts nicht. |
Re: "Arbeitsplatz" in der Sprache des installierte
Zitat:
|
Re: "Arbeitsplatz" in der Sprache des installierte
Zitat:
Microsoft verwendet bei den Referenzen in den Resourcen der Shell32.dll auch *_MYCOMPUTER ;) |
Re: "Arbeitsplatz" in der Sprache des installierte
Nun Gut, das muss einer Wissen ^^
Funkt nicht mit Win98 Edit: Funkt aber mit WinME :zwinker: |
Re: "Arbeitsplatz" in der Sprache des installierte
Aber eine andere Frage, warum das ganze so extra umständlich? :gruebel:
Darf ich das etwas viel einfacher raus bringen? Edit: Sorry, ![]() |
Re: "Arbeitsplatz" in der Sprache des installierte
Zitat:
|
Re: "Arbeitsplatz" in der Sprache des installierte
Siehe:
Zitat:
|
Re: "Arbeitsplatz" in der Sprache des installierte
Machs doch einfach und frag nicht tausend Mal nach. :roll:
@FriFra: Dein Code liest bei mir aber nicht den aktuellen Namen des Arbeitsplatzes aus. Ich habe die Verknüpfung auf die auf dem Desktop liegt in "Computer" umbenannt, rufe ich ihn auf steht oben in der Titelleiste auch korrekt "Computer". Diesen Namen liest deine Funktion aber nicht aus, ich erhalte den Standard-Bezeichner zurück. :gruebel: |
Re: "Arbeitsplatz" in der Sprache des installierte
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 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