so bekommst du die Liste der Lan Adapter, Form mit Button und Memo und fertig:
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, Windows, SysUtils, Forms, Controls, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
btnShowInfo: TButton;
memInfo: TMemo;
procedure btnShowInfoClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
const
MAX_ADAPTER_DESCRIPTION_LENGTH = 128;
MAX_ADAPTER_NAME_LENGTH = 256;
MAX_ADAPTER_ADDRESS_LENGTH = 8;
type
PIP_ADDRESS_STRING = ^IP_ADDRESS_STRING;
IP_ADDRESS_STRING = packed record
acString: array [1..16] of Char;
end;
IP_MASK_STRING = IP_ADDRESS_STRING;
PIP_ADDR_STRING = ^IP_ADDR_STRING;
IP_ADDR_STRING = packed record
Next: PIP_ADDR_STRING;
IpAddress: IP_ADDRESS_STRING;
IpMask: IP_MASK_STRING;
Context: DWORD;
end;
time_t = comp;
PIP_ADAPTER_INFO = ^IP_ADAPTER_INFO;
IP_ADAPTER_INFO = packed record
Next: PIP_ADAPTER_INFO;
ComboIndex: DWORD;
AdapterName: array [1..MAX_ADAPTER_NAME_LENGTH+4] of Char ;
Description: array [1..MAX_ADAPTER_DESCRIPTION_LENGTH+4] of Char;
AddressLength: UINT;
Address: array [1..MAX_ADAPTER_ADDRESS_LENGTH] of Byte;
Index: DWORD;
dwType: UINT;
DhcpEnabled: UINT;
CurrentIpAddress: PIP_ADDR_STRING;
IpAddressList: IP_ADDR_STRING;
GatewayList: IP_ADDR_STRING;
DhcpServer: IP_ADDR_STRING;
HaveWins: Boolean;
PrimaryWinsServer: IP_ADDR_STRING;
SecondaryWinsServer: IP_ADDR_STRING;
LeaseObtained: time_t;
LeaseExpires: time_t;
end;
PIP_PER_ADAPTER_INFO = ^IP_PER_ADAPTER_INFO;
IP_PER_ADAPTER_INFO = packed record
AutoConfigEnabled: UINT;
AutoConfigActive: UINT;
CurrentDnsServer: PIP_ADDR_STRING;
DnsServerList: IP_ADDR_STRING;
end;
function GetAdaptersInfo(const pAdapterInfo: PIP_ADAPTER_INFO; const pOutBufLen: PULONG): DWORD; stdcall; external 'iphlpapi.dll';
function GetPerAdapterInfo(const pIfIndex: ULONG; const pAdapterInfo: PIP_PER_ADAPTER_INFO; const pOutBufLen: PULONG): DWORD; stdcall; external 'iphlpapi.dll';
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.btnShowInfoClick(Sender: TObject);
var
pAdapterList: PIP_ADAPTER_INFO;
dwLenAdapter: DWORD;
aaiAdapters: array of PIP_ADAPTER_INFO;
dwResult: DWORD;
iIndexAdapter: integer;
iasWork: IP_ADDR_STRING;
paiWork: PIP_PER_ADAPTER_INFO;
dwLenAdapterInfo: DWORD;
begin
pAdapterList := nil;
dwLenAdapter := 0;
if GetAdaptersInfo(pAdapterList, @dwLenAdapter) <> ERROR_BUFFER_OVERFLOW then exit;
pAdapterList := AllocMem(dwLenAdapter);
try
if GetAdaptersInfo(pAdapterList,@dwLenAdapter) <> ERROR_SUCCESS then exit;
SetLength(aaiAdapters,1);
aaiAdapters[0] := pAdapterList;
while aaiAdapters[High(aaiAdapters)]^.Next <> nil do
begin
SetLength(aaiAdapters,Length(aaiAdapters)+1);
aaiAdapters[High(aaiAdapters)] := aaiAdapters[High(aaiAdapters)-1]^.Next;
end;
for iIndexAdapter := 0 to high(aaiAdapters) do
begin
memInfo.Lines.Add(trim(aaiAdapters[iIndexAdapter]^.Description)+'/'+trim(aaiAdapters[iIndexAdapter]^.AdapterName));
{<--- hier kannst Du natürlich weitere Eigenschaften von IP_ADAPTER_INFO ausgeben }
paiWork := nil;
dwLenAdapterInfo := 0;
dwResult := GetPerAdapterInfo(aaiAdapters[iIndexAdapter]^.Index,paiWork,@dwLenAdapterInfo);
if dwResult <> ERROR_BUFFER_OVERFLOW then
begin
memInfo.Lines.Add('***** (1) Fehler beim Auslesen der Adapterdaten: '+IntToStr(dwResult));
end
else
begin
paiWork := AllocMem(dwLenAdapterInfo);
try
dwResult := GetPerAdapterInfo(aaiAdapters[iIndexAdapter]^.Index,paiWork,@dwLenAdapterInfo);
if dwResult <> ERROR_SUCCESS then
begin
memInfo.Lines.Add('***** (2) Fehler beim Auslesen der Adapterdaten: '+IntToStr(dwResult));
end
else
begin
iasWork := paiWork^.DnsServerList;
while iasWork.Next <> nil do
begin
memInfo.Lines.Add('DNS: '+trim(iasWork.IpAddress.acString));
iasWork := iasWork.Next^;
end;
memInfo.Lines.Add('DNS:'+trim(iasWork.IpAddress.acString));
end;
finally
FreeMem(paiWork,dwLenAdapterInfo);
end;
end;
end;
finally
FreeMem(pAdapterList,dwLenAdapter);
end;
end;
end.
Ausgabe:
Microsoft Virtual WiFi Miniport Adapter/{556FF41D-562A-4D14-AECC-468D20721780}
DNS:
Atheros AR8151 PCI-E Gigabit Ethernet Controller (NDIS 6.20)/{55BC1B37-AC4A-4D57-ADB7-A6B328705704}
DNS:
Realtek RTL8188CE 802.11b/g/n WiFi Adapter/{331EC24C-9A60-49F1-B827-DAA343E3991F}
DNS:192.168.178.1