interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TMACForm = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure GetAdapterInformation;
public
{ Public declarations }
end;
var
MACForm: TMACForm;
implementation
{$R *.dfm}
const
MAX_HOSTNAME_LEN = 128; { from IPTYPES.H }
MAX_DOMAIN_NAME_LEN = 128;
MAX_SCOPE_ID_LEN = 256;
MAX_ADAPTER_NAME_LENGTH = 256;
采本站,必打击者
MAX_ADAPTER_DESCRIPTION_LENGTH = 128;
MAX_ADAPTER_ADDRESS_LENGTH = 8;
type
TIPAddressString = array[0..4*4-1] of Char;
PIPAddrString = ^TIPAddrString;
TIPAddrString = record
Next : PIPAddrString;
IPAddress: TIPAddressString;
IPMask : TIPAddressString;
Context : Integer;
end;
PFixedInfo = ^TFixedInfo;
TFixedInfo = record { FIXED_INFO }
采本站者,必打击者
HostName : array[0..MAX_HOSTNAME_LEN+3] of Char;
DomainName : array[0..MAX_DOMAIN_NAME_LEN+3] of Char;
CurrentDNSServer: PIPAddrString;
DNSServerList : TIPAddrString;
NodeType : Integer;
ScopeId : array[0..MAX_SCOPE_ID_LEN+3] of Char;
EnableRouting : Integer;
网吧58UN
EnableProxy : Integer;
EnableDNS : Integer;
end;
PIPAdapterInfo = ^TIPAdapterInfo;
TIPAdapterInfo = record { IP_ADAPTER_INFO }
Next : PIPAdapterInfo;
ComboIndex : Integer;
AdapterName : array[0..MAX_ADAPTER_NAME_LENGTH+3] of Char; 网吧联盟 www.58un.com.cn
Description : array[0..MAX_ADAPTER_DESCRIPTION_LENGTH+3] of Char;
AddressLength : Integer;
Address : array[1..MAX_ADAPTER_ADDRESS_LENGTH] of Byte;
Index : Integer;
_Type : Integer;
后果很严重
DHCPEnabled : Integer;
CurrentIPAddress : PIPAddrString;
IPAddressList : TIPAddrString;
GatewayList : TIPAddrString;
DHCPServer : TIPAddrString;
HaveWINS : Bool;
后果很严重
PrimaryWINSServer : TIPAddrString;
SecondaryWINSServer: TIPAddrString;
LeaseObtained : Integer;
LeaseExpires : Integer;
end;
function GetNetworkParams(FI: PFixedInfo; var BufLen: Integer): Integer;
stdcall; external 'iphlpapi.dll' Name 'GetNetworkParams';
function GetAdaptersInfo(AI: PIPAdapterInfo; var BufLen: Integer): Integer; 永叔的站你也敢采,
stdcall; external 'iphlpapi.dll' Name 'GetAdaptersInfo';
function GetNetworkParameters: string;
//得到机器的名称
var
FI: PFixedInfo;
Size: Integer;
Res: Integer;
begin
Size := 1024;
GetMem(FI,Size);
Res := GetNetworkParams(FI,Size);
if (Res <> ERROR_SUCCESS) then
begin
SetLastError(Res);
RaiseLastOSError;
end;
result := FI^.HostName;
FreeMem(FI);
end;
function MACToStr(ByteArr: PByte; Len: Integer): string;
//把MAC转换为字符串
begin
Result := '';
while (Len > 0) do
begin
Result := Result+IntToHex(ByteArr^,2)+'-';
ByteArr := Pointer(Integer(ByteArr)+SizeOf(Byte));
Dec(Len);
end;
SetLength(Result,Length(Result)-1); { remove last dash }
后果很严重
end;
procedure TMACForm.GetAdapterInformation;
//将MAC码写到文本框中
var
AI, Work: PIPAdapterInfo;
Size: Integer;
Res: Integer;
I: Integer;
begin
Size := 5120;
GetMem(AI, Size);
Res := GetAdaptersInfo(AI, Size);
if (Res <> ERROR_SUCCESS) then
begin
SetLastError(Res);
RaiseLastOSError;
end;
with Memo1.Lines do
begin
Work := AI; //适配器信息
I := 1;
repeat
Add('');
Add('适配器 '+IntToStr(I)); //适配器编号
Add(' 适配器MAC: '+MACToStr(@Work^.Address,Work^.AddressLength)); //MAC
Inc(I);
Work := Work^.Next;
网吧联盟 www.58un.com.cn
until (Work = nil);
end;
FreeMem(AI);
end;
procedure TMACForm.Button1Click(Sender: TObject);
begin
Memo1.Lines.Clear;
Memo1.Lines.Add('主机名称:' + GetNetworkParameters);
GetAdapterInformation;
end;
end.


