AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: Sonstiges Delphi Logo des angemeldeten Benutzers auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Logo des angemeldeten Benutzers auslesen

Ein Thema von Matze · begonnen am 25. Aug 2006
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

Logo des angemeldeten Benutzers auslesen

  Alt 25. Aug 2006, 10:10
turboPASCALverdeutlich mit diesem Code, wie einfach es ist, das Benutzeraccount-Symbol des aktuell angemeldeten Benutzers in Windows XP auszulesen.

Die Symbole der Benutzer werden alle im Ordner \Dokumente und Einstellungen\All Users\Anwendungsdaten\Microsoft\User Account Pictures abgelegt. Der Dateiname des Bildes ist immer so aufgebaut: <Benutzernme>.bmp

Da Windows nicht immer auf der Partition C liegen muss, wird das Anwendungsdaten-Verzteichnis mit folgender Funktion ermittelt:

Delphi-Quellcode:
uses
  ShlObj;

function TForm1.CommonDataPath: string;
const
  CSIDL_COMMON_APPDATA = $0023; // All Users\Application Data
var
  Path: array [0..1024] of char;
begin
  if SHGetSpecialFolderPath(Handle, Path, CSIDL_COMMON_APPDATA, TRUE) then
    Result := String(Path)
  else
    Result := '';
end;
Nun haben wir das Verzeichnis, es fehlt also noch der Dateiname, den wir über den Namen des angemeldeten Benutzers erhalten, den wir wie folgt auslesen können:

Delphi-Quellcode:
function GetCurrentUserName: String;
var
  pcUserName : pChar; // temporary storage
  dwMaxChars : dWord; // length parameter
const
  MAXCHARS = 255; // max length
begin
  dwMaxChars := MAXCHARS;
  GetMem(pcUserName, MAXCHARS + 1);

  if GetUserName(pcUserName, dwMaxChars) then
    Result := String(pcUserName)
  else
    Result := '';

  FreeMem(pcUserName);
end;
Nun muss nur noch der komplette Pfad zum Symbol zusammengesetzt werden:

Delphi-Quellcode:
UserAccPicPath := CommonDataPath + '\Microsoft\User Account Pictures\' +
  GetCurrentUserName + '.bmp'
Hier ein Beispiel, das zeigt, wie man dieses Symbol in einem TImage anzeigen lassen kann. Den Benutzernamen könnt ihr natürlich auch ausgeben lassen, da diesen die Funktion GetCurrentUserName zurück gibt.

Delphi-Quellcode:
var
  LgPath: string;
  UserName: string;
begin
  UserName := GetCurrentUserName;
  LgPath := CommonDataPath + '\Microsoft\User Account Pictures\' +
            UserName + '.bmp';

  if FileExists(LgPath) then
  begin
    Image1.Picture.Bitmap.Handle :=
      LoadImage(0, PChar(LgPath), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
  end else
    ShowMessage(format('%s'#13#10'"%s"', ['Datei nicht gefunden:', LgPath]));
end;
Anmerkung:
Wer die Jedi VCL installiert hat, kann auch die Komponente TJvComputerInfoEx dafür nutzen.

[edit=Luckie]Dreckfuhler korrigiert. Mfg, Luckie[/edit]
[edit=Matze]Anmerkung eingefügt. MfG, Matze[/edit]
  Mit Zitat antworten Zitat
Antwort Antwort

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 17:01 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