AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi "Arbeitsplatz" in der Sprache des installierten Windows...
Thema durchsuchen
Ansicht
Themen-Optionen

"Arbeitsplatz" in der Sprache des installierten Windows...

Ein Thema von FriFra · begonnen am 18. Nov 2006 · letzter Beitrag vom 18. Nov 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#1

"Arbeitsplatz" in der Sprache des installierten Wi

  Alt 18. Nov 2006, 18:30
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;
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#2

Re: "Arbeitsplatz" in der Sprache des installierte

  Alt 18. Nov 2006, 18:43
Für die Benutzer älterer Delphi Versionen (ich glaub' unterhalb 5) solltest Du erwähnen, das das
function GetMyComputerName(Default: string = ''): string; so sein muss:
function GetMyComputerName(Default: string): string; mit dem Aufruf:
GetMyComputerName(''); Warum heißt das GetMyComputerName?

Edit: Unter Win95 funkts nicht.
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: "Arbeitsplatz" in der Sprache des installierte

  Alt 18. Nov 2006, 18:46
Zitat von Sunlight7:
Warum heißt das GetMyComputerName?
Vielleicht weil Arbeitsplatz auf Englisch My Computer heißt?
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#4

Re: "Arbeitsplatz" in der Sprache des installierte

  Alt 18. Nov 2006, 18:47
Zitat von Sunlight7:
Warum heißt das GetMyComputerName?
Weil "Arbeitsplatz" auf einem englischen Windows "My Computer" heißt
Microsoft verwendet bei den Referenzen in den Resourcen der Shell32.dll auch *_MYCOMPUTER
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#5

Re: "Arbeitsplatz" in der Sprache des installierte

  Alt 18. Nov 2006, 19:05
Nun Gut, das muss einer Wissen ^^

Funkt nicht mit Win98

Edit: Funkt aber mit WinME
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#6

Re: "Arbeitsplatz" in der Sprache des installierte

  Alt 18. Nov 2006, 19:16
Aber eine andere Frage, warum das ganze so extra umständlich?

Darf ich das etwas viel einfacher raus bringen?

Edit: Sorry, das hab' ich erst jetzt gesehen, und dabei hab ich da alte Makros von mir herumliegen, die das können.
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#7

Re: "Arbeitsplatz" in der Sprache des installierte

  Alt 18. Nov 2006, 19:38
Zitat von Sunlight7:
Funkt nicht mit Win98
Habs gerade gesehen... unter Win98 gibt es nur den InfoTip Tesxt und sonst nix... ich suche mal was für 98
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#8

Re: "Arbeitsplatz" in der Sprache des installierte

  Alt 18. Nov 2006, 19:48
Siehe:
Zitat von Sunlight7:
Darf ich das etwas viel einfacher raus bringen?
Ich hab was, was ab Win95 funkt, darf ich?
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#9

Re: "Arbeitsplatz" in der Sprache des installierte

  Alt 18. Nov 2006, 19:58
Machs doch einfach und frag nicht tausend Mal nach.

@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.
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#10

Re: "Arbeitsplatz" in der Sprache des installierte

  Alt 18. Nov 2006, 20:05
Okay, auf Deine Verantwortung

Siehe
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:12 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