AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

GetUserNameEx

Ein Thema von Luckie · begonnen am 29. Mär 2006 · letzter Beitrag vom 7. Mär 2010
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
Benutzerbild von napstar
napstar

Registriert seit: 22. Mär 2007
Ort: München
133 Beiträge
 
Delphi 2007 Architect
 
#41

Re: GetUserNameEx

  Alt 9. Feb 2010, 14:07
Zitat von DeddyH:
Geht es so?
if GetUserNameEx(fFormat, @Buffer[0], Size) then
so lässt sichs zwar compilieren.. aber ich bekomme nur fehlermeldungen ausgegeben ^^..

@p80286: was meinst du mit reste?


//edit: es geht um delphi 2010
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#42

Re: GetUserNameEx

  Alt 9. Feb 2010, 14:13
Eventuell solltest du dann die Unicode-Version probieren:

Delphi-Quellcode:
function GetUserNameExW(NameFormat: DWORD;
  lpNameBuffer: LPCWSTR; var nSize: DWORD):Boolean; stdcall;
  external 'secur32.dllName 'GetUserNameExW';
Mal so in Blaue geschossen...
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von napstar
napstar

Registriert seit: 22. Mär 2007
Ort: München
133 Beiträge
 
Delphi 2007 Architect
 
#43

Re: GetUserNameEx

  Alt 9. Feb 2010, 14:16
funktioniert.. aaaber die ausgabe ist

http://www.imagebanana.com/img/d5nud06k/Unbenannt.jpg
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#44

Re: GetUserNameEx

  Alt 9. Feb 2010, 14:18
Dann versuch mal die "einfache" Variante (keine Garantie, nur schnell heruntergetippt):
Delphi-Quellcode:
function CurrentUser: string;
var iLen: DWORD;
begin
  iLen := 1024;
  SetLength(Result,iLen);
  if Windows.GetUserName(PChar(Result),iLen) then
    SetLength(Result,StrLen(PChar(Result)))
  else
    SetLength(Result,0);
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#45

Re: GetUserNameEx

  Alt 9. Feb 2010, 14:18
Was hast du erwartet wie sie denn aussieht?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
moonwalk55

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

Re: GetUserNameEx

  Alt 3. Mär 2010, 17: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
ele

Registriert seit: 18. Feb 2009
129 Beiträge
 
Delphi 2010 Professional
 
#47

Re: GetUserNameEx

  Alt 3. Mär 2010, 18:21
Ich krieg Schmerzanfälle wenn ich sowas sehe...

Man sollte NIE eine System-Unit ändern. Das Problem ist nicht, dass man das nicht tun kann, sondern dass man das nicht tun sollte. Erstens funktioniert dann dein Programm nicht wenn jemand anderes das Programm kompiliert, der die Windows Unit nicht frisiert hat. Zweitens muss mann die Änderungen bei Updates der jeweiligen Unit nachführen. Und eine Ausrede wie: Damit ich eine Unit weniger einbinden muss, lass ich nicht gelten. Faule Programmierer sollten sich eines merken: Eines Tages wird sich das rächen und man wird sich wünschen man hätte es damals schon richtig gemacht.

Trotzdem, wilkommen in der DP.
  Mit Zitat antworten Zitat
moonwalk55

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

Re: GetUserNameEx

  Alt 3. Mär 2010, 22:34
Hallo ele,

danke für die Antwort. Das mit dem Einfügen in die "windows.pas" oder einer Extra Unit habe ich mir auch schon überlegt. Nun habe ich aber der Ergänzung den Vorzug gegeben, weil es sich nur um eine zusätzliche Funktion handelt, die eigentlich zu den anderen Funktionen gehört und wahrscheinlich vergessen worden ist.

Nun gut, ich werde sie wohl in meine eigene Utils-Sammlung aufnehmen.

Was mir aber überhaupt nicht gefällt, sind überhebliche Bemerkungen und ein arroganter Ton. Niemand ist allwissend. Wahre Größe zeigt sich dann, wenn man Fehler zugeben kann und daraus lernt. Dieses Forum ist für viele eine Anlaufstelle zur Problemlösung und zur Suche von Anregungen.

Beiträge sollten meiner Meinung nach sachlich im Ton sein, so dass niemand abgeschreckt oder beleidigt wird. Das Lernen sollte immer im Vordergrund stehen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#49

Re: GetUserNameEx

  Alt 3. Mär 2010, 23:07
Wo war sein Beitrag jetzt überheblich, arrogant oder unsachlich?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
ele

Registriert seit: 18. Feb 2009
129 Beiträge
 
Delphi 2010 Professional
 
#50

Re: GetUserNameEx

  Alt 4. Mär 2010, 11:23
Entschuldigung, falls das irgendwie Arrogant gewirkt hat, das war bestimmt nicht die Absicht. Dabei habe ich doch absichtlich Versucht Begriffe wie z.B "auspeitschen" zu vermeiden...

Du musst es nicht persönlich nehmen wenn ich über faule Programmierer schreibe, ich meine damit mich eingeschlossen. Auch ich bin manchmal faul, doch dass rächt sich dann in der Regel und endet in Mehrarbeit. Ist nur so ein Tipp aus meiner persönlichen Erfahrungskiste, niemand muss sich gezwungen fühlen irgendwas von dem zu tun was ich vorschlage.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      


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 16:52 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