好外挂网
RSS
当前位置 :| 网盟首页>网吧程序>

DELPHI 中获取机器名和MAC 地址

来源:baidu 作者:网吧联盟 时间:2008-08-08 Tag:Delphi   机器名    

    

unit MACDlg;
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.

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名
注册