gpt4 book ai didi

delphi - 如何获取当前登录的用户名?

转载 作者:行者123 更新时间:2023-12-03 14:37:21 25 4
gpt4 key购买 nike

如何在 Firemonkey Delphi 项目中获取当前登录的用户名?我的目标是 Windows 和 Mac。

我有 XE2,但我认为任何版本的解决方案都可以,因为如果需要我会升级。

最佳答案

对于 Windows,您可以使用 GetUserName WinAPi 函数,对于 OSX,您可以使用 NSUserName 和/或 NSFullUserName 方法。

在 OSX 上尝试此示例

{$APPTYPE CONSOLE}

{$R *.res}

uses
Macapi.CoreFoundation,
Macapi.Foundation,
System.SysUtils;

function NSUserName: Pointer; cdecl; external '/System/Library/Frameworks/Foundation.framework/Foundation' name _PU +'NSUserName';
function NSFullUserName: Pointer; cdecl; external '/System/Library/Frameworks/Foundation.framework/Foundation' name _PU + 'NSFullUserName';

begin
try
Writeln(Format('User Name %s',[TNSString.Wrap(NSUserName).UTF8String]));
Writeln(Format('Full User Name %s',[TNSString.Wrap(NSFullUserName).UTF8String]))
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.

对于 Windows

{$APPTYPE CONSOLE}


uses
Windows,
SysUtils;

function WUserName: String;
var
nSize: DWord;
begin
nSize := 1024;
SetLength(Result, nSize);
if GetUserName(PChar(Result), nSize) then
SetLength(Result, nSize-1)
else
RaiseLastOSError;
end;


begin
try
Writeln(WUserName);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
readln;
end.

编译成一个单元:

uses
{$IFDEF MACOS}
MacApi.CoreFoundation, MacApi.Foundation,
{$ENDIF}
{$IFDEF MSWINDOWS}
Windows,
{$ENDIF}
System.SysUtils;

{$IFDEF MACOS}
function NSUserName: Pointer; cdecl; external '/System/Library/Frameworks/Foundation.framework/Foundation' name '_NSUserName';
{$ENDIF}

function GetUserName: String;
{$IFDEF MSWINDOWS}
var
nSize: DWord;
{$ENDIF}
begin
{$IFDEF MACOS}
Result := TNSString.Wrap(NSUserName).UTF8String;
{$ENDIF}
{$IFDEF MSWINDOWS}
nSize := 1024;
SetLength(Result, nSize);
if Windows.GetUserName(PChar(Result), nSize) then
begin
SetLength(Result, nSize - 1)
end
else
begin
RaiseLastOSError;
end
{$ENDIF}
end;

关于delphi - 如何获取当前登录的用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17599086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com