Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Computername abhängig von der Sprache (https://www.delphipraxis.net/192728-computername-abhaengig-von-der-sprache.html)

EWeiss 15. Mai 2017 07:18

Computername abhängig von der Sprache
 
Ich lese den Namen des Computer auf diese weise aus.

Delphi-Quellcode:
if Lnk = ShortCutDisplayName(CSIDL_DRIVES) then
Delphi-Quellcode:
function TShortCut.ShortCutDisplayName(CSIDL: Integer): string;
var
  pidl: PItemIDList;
  sfi: TSHFileInfo;
  Allocator: IMalloc;
begin

  if SHGetSpecialFolderLocation(0, CSIDL, pidl) = S_OK then
    if SHGetFileInfo(PWideChar(pidl), 0, sfi, sizeof(sfi), SHGFI_PIDL or SHGFI_DISPLAYNAME)
      <> 0 then
      Result := sfi.szDisplayName;

  if Succeeded(SHGetMalloc(Allocator)) then
    Allocator.Free(pidl);
end;
Ich möchte abhängig vom übergebenen Link ein Default Icon übergeben.
Sagen wir mal ich erstelle eine Verknüpfung vom Computer dann ist der Name im Link logischerweise "Computer". (Deutsch halt)
Wenn ich den jedoch mit meiner Funktion ShortCutDisplayName gegenprüfe bekomme ich nicht Computer sondern My Computer.

Das hat dann zur folge das ich das vordefinierte Icon nicht laden kann.
Wie komme ich denn jetzt an den Realen Namen wie er in der verwendeten Sprache auch benutzt wird?

gruss

himitsu 15. Mai 2017 08:19

AW: Computername abhängig von der Sprache
 
Die Lokalisierung steht in der Desktop.ini im jeweiligen Verzeichnis.

hoika 15. Mai 2017 08:23

AW: Computername abhängig von der Sprache
 
Hallo,
und was ist mit
GetComputerName?

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

EWeiss 15. Mai 2017 08:23

AW: Computername abhängig von der Sprache
 
Zitat:

Zitat von himitsu (Beitrag 1371422)
Die Lokalisierung steht in der Desktop.ini im jeweiligen Verzeichnis.

OK danke muss ich mir mal anschauen.

gruss

EWeiss 15. Mai 2017 08:26

AW: Computername abhängig von der Sprache
 
Zitat:

Zitat von hoika (Beitrag 1371424)
Hallo,
und was ist mit
GetComputerName?

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Es geht ja nicht nur darum ;)

MyComputer = Computer
MyDocuments = Dokumente
MyMusic = Musik
MyVideo = Video
NetworkNeighborhood = Netzwerk

usw.. Die gängigen Dinge halt.
Ich habe eigentlich angenommen das man hier die korrekten Namen erhält
wenn man eine Verknüpfung davon erstellt und diese gegen prüft.

Wenn man eine Verknüpfung erstellt dann heißt die ja auch nicht MyComputer sondern korrekt in Deutscher Sprache Computer.


gruss

himitsu 15. Mai 2017 08:31

AW: Computername abhängig von der Sprache
 
Zitat:

Zitat von EWeiss (Beitrag 1371428)
Ich habe eigentlich angenommen das man hier die korrekten Namen erhält
wenn man eine Verknüpfung davon erstellt und diese gegen prüft.

Nein. Programme bekommen immer erstmal nur die "realen" Namen, denn dass ist es ja, was einen beim Zugriff auf Dateien/Verzeichnisse wirklich interessiert.

Wie wäre SHGetFileInfo von dem Zielverzeichnis, anstatt von der Verlinkung?

EWeiss 15. Mai 2017 08:39

AW: Computername abhängig von der Sprache
 
Zitat:

Wie wäre SHGetFileInfo von dem Zielverzeichnis, anstatt von der Verlinkung?
Hmmm ich wüsste jetzt nicht wie ich von der Verknüpfung Netzwerk ein Zielverzeichnis ermitteln sollte.

Bei mir steht dann in der Config.
Zitat:

"explorer.exe, Netzwerk, @PATH@UserIcon\48x48\network.png, @PATH@, /N;::{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}, 1'"
Das ist Bedingung bei System.lnk Dateien denn sonst lassen sich die Verknüpfungen nicht starten.
Die Verknüpfung hat den Namen Netzwerk und die lese ich mit der vergebenen CSID aus die da wäre CSIDL_NETWORK.
Nur was bringt das wenn ich da NetworkNeighborhood zurück geliefert bekomme.

Ich benötige den Sprachabhängigen Namen um das Parsen/Vergleichen zu können.

gruss


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