怎么获取本机网卡号

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
MAX_ADAPTER_NAME_LENGTH = 256;
MAX_ADAPTER_DESCRIPTION_LENGTH = 128;
MAX_ADAPTER_ADDRESS_LENGTH = 8;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Type
TIPAddressString = Array[0…4*4-1] of Char;

PIPAddrString = ^TIPAddrString;
TIPAddrString = Record
Next      : PIPAddrString;
IPAddress : TIPAddressString;
IPMask    : TIPAddressString;
Context   : Integer;

End;

PIPAdapterInfo = ^TIPAdapterInfo;
TIPAdapterInfo = Record { IP_ADAPTER_INFO }
Next                : PIPAdapterInfo;
ComboIndex          : Integer;
AdapterName         : Array[0..MAX_ADAPTER_NAME_LENGTH+3] of Char;
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;

End;

var
Form1: TForm1;
gatewaystr:string;
strlen:integer;
implementation

{$R *.dfm}
Function GetAdaptersInfo(AI : PIPAdapterInfo; Var BufLen : Integer) : Integer;
StdCall; External ‘iphlpapi.dll’ Name ‘GetAdaptersInfo’;

Function MACToStr(ByteArr : PByte; Len : Integer) : String;
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;

Function GetAddrString(Addr : PIPAddrString) : String;
Begin
Result := ‘’;
While (Addr <> nil) do Begin
Result := Result+'A: ‘+Addr^.IPAddress+’ M: '+Addr^.IPMask+#13;
Addr := Addr^.Next;
End;
End;

procedure TForm1.Button1Click(Sender: TObject);
var
AI,Work : PIPAdapterInfo;
Size : Integer;
Res : Integer;
begin
Size := 5120;
GetMem(AI,Size);
work:=ai;
Res := GetAdaptersInfo(AI,Size);
If (Res <> ERROR_SUCCESS) Then Begin
SetLastError(Res);
End;
//网卡地址:
memo1.Lines.Add ('Adapter address: '+MACToStr(@Work.Address,Work.AddressLength));
repeat
//本机IP地址:
memo1.Lines.add('IP addresses: '+GetAddrString(@Work^.IPAddressList));
//网关地址:
gatewaystr:=work^.GatewayList.IPAddress;
memo1.Lines.Add(‘gateway address:’+gatewaystr);
work:=work^.Next ;
until (work=nil);

end;

end.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ysgs129

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值