當前位置:編程學習大全網 - 編程語言 - DELPHI簡單問題

DELPHI簡單問題

參考代碼:

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

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;

type

TForm1 = class(TForm)

Memo1: TMemo;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

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);

RaiseLastWin32Error;

exit;

End;

Memo1.Lines.Add('Adapter address: ' + MACToStr(@Work^.Address,

Work^.AddressLength));

repeat

Memo1.Lines.Add(' IP addresses: ' + Work.IPAddressList.IPAddress +

' Gateway Address=' + Work.GatewayList.IPAddress);

Work := Work^.Next;

until (Work = nil);

end;

end.

  • 上一篇:電子商務專業好學嗎
  • 下一篇:電熱墊能放在氣壓式升降椅上嗎?會不會引起爆照
  • copyright 2024編程學習大全網