Delphi中取本机的计算机名、IP地址、MAC地址、Windows登录的用户名
---------------------------------------------------------------usesWindows,WinSock;{ComputerLocalIP}//取本机的IP地址
functionComputerLocalIP:string;var
ch:array[1..32]ofchar;wsData:TWSAData;myHost:PHostEnt;i:integer;begin
Result:='';
ifWSAstartup(2,wsData)<>0thenExit;//can’tstartwinsocktry
ifGetHostName(@ch[1],32)<>0thenExit;//getHostNamefailedexcept
Exit;end;
myHost:=GetHostByName(@ch[1]);//GetHostNameerrorifmyHost=nilthenexit;fori:=1to4dobegin
Result:=Result+IntToStr(Ord(myHost.h_addr^[i-1]));ifi<4then
Result:=Result+'.';
end;end;
//获取本机IP的MAC地址
FunctionGetMacAddress:string;var
Lib:Cardinal;
Func:function(GUID:PGUID):Longint;stdcall;GUID1,GUID2:TGUID;begin
ResultLib:=ifLibbegin
if
:='';
LoadLibrary('rpcrt4.dll');<>0then
Win32Platform<>VER_PLATFORM_WIN32_NTthen@Func:=GetProcAddress(Lib,'UuidCreate')
else@Func:=GetProcAddress(Lib,'UuidCreateSequential');ifAssigned(Func)thenbegin
if(Func(@GUID1)=0)and
(Func(@GUID2)=0)and
(GUID1.D4[2]=GUID2.D4[2])and(GUID1.D4[3]=GUID2.D4[3])and(GUID1.D4[4]=GUID2.D4[4])and(GUID1.D4[5]=GUID2.D4[5])and(GUID1.D4[6]=GUID2.D4[6])and(GUID1.D4[7]=GUID2.D4[7])thenbegin
Result:=
IntToHex(GUID1.D4[2],2)+'-'+IntToHex(GUID1.D4[3],2)+'-'+IntToHex(GUID1.D4[4],2)+'-'+IntToHex(GUID1.D4[5],2)+'-'+IntToHex(GUID1.D4[6],2)+'-'+IntToHex(GUID1.D4[7],2);end;end;
FreeLibrary(Lib);
end;end;
//取本机的计算机名{ComputerName}
functionComputerName:string;var
FStr:PChar;FSize:Cardinal;begin
FSize:=255;
GetMem(FStr,FSize);
Windows.GetComputerName(FStr,FSize);Result:=FStr;
FreeMem(FStr);end;
//取Windows登录用户名{WinUserName}
functionWinUserName:string;var
FStr:PChar;FSize:Cardinal;begin
FSize:=255;
GetMem(FStr,FSize);
GetUserName(FStr,FSize);Result:=FStr;FreeMem(FStr);end;