Thema: GetUserNameEx

Einzelnen Beitrag anzeigen

moonwalk55

Registriert seit: 29. Sep 2007
12 Beiträge
 
Delphi XE2 Professional
 
#46

Re: GetUserNameEx

  Alt 3. Mär 2010, 16:40
Hallo Zusammen,

damit ich nicht immer eine extra Unit verwenden muss, habe ich den Funktionsaufruf von GetUserNameEx in der "windows.pas" ergänzt.

Ich verwende Delphi 2010. In der "windows.pas" war schon die Deklaration von GetComputerNameEx enthalten. Also habe ich die Aufrufe von GetUserNameEx entsprechend angelegt. Komischerweise ist die Erklärung der Funktion in der Online-Hilfe von Delphi enthalten.

Folgende Eintragungen habe ich in der "windows.pas" unterhalb von GetUserName vorgenommen:

INTERFACE - Teil

Delphi-Quellcode:
type
  _EXTENDED_NAME_FORMAT = (NameUnknown,
    NameFullyQualifiedDN, NameSamCompatible, NameDisplay,
    NameEmpty1, NameEmpty2,
    NameUniqueId, NameCanonical, NameUserPrincipal,
    NameCanonicalEx, NameServicePrincipal,
    NameEmpty3, NameDnsDomain);
 {$EXTERNALSYM _EXTENDED_NAME_FORMAT}
 TExtendedNameFormat = _EXTENDED_NAME_FORMAT;
 EXTENDED_NAME_FORMAT = _EXTENDED_NAME_FORMAT;
 {$EXTERNALSYM EXTENDED_NAME_FORMAT}

function GetUserNameEx(NameFormat: TExtendedNameFormat; lpBuffer: PWideChar; var nSize: DWORD): BOOL; stdcall;
{$EXTERNALSYM GetUserNameEx}
function GetUserNameExA(NameFormat: TExtendedNameFormat; lpBuffer: PAnsiChar; var nSize: DWORD): BOOL; stdcall;
{$EXTERNALSYM GetUserNameExA}
function GetUserNameExW(NameFormat: TExtendedNameFormat; lpBuffer: PWideChar; var nSize: DWORD): BOOL; stdcall;
{$EXTERNALSYM GetUserNameExW}
IMPLEMENTATION - Teil

Delphi-Quellcode:
function GetUserNameEx; external 'Secur32.dllname 'GetUserNameExW';
function GetUserNameExA; external 'Secur32.dllname 'GetUserNameExA';
function GetUserNameExW; external 'Secur32.dllname 'GetUserNameExW';

Der Aufruf innerhalb des Programms erfolgt dann einfach über folgende Funktion:

Delphi-Quellcode:
function GetAUserNameEx(ANameFormat: TExtendedNameFormat): String;
var ABuf: array[0..1023] of Char;
    Size: DWord;

begin
 Result:= '';
 Size:= 1024;
 if GetUserNameEx(ANameFormat, @ABuf, Size) then
  Result:= ABuf;
end;
Das hat die ganze Sache schon recht vereinfacht und funktioniert prima.
  Mit Zitat antworten Zitat