Category: Internet/Lan
Title: Set the home page for the Internet Explorer
Author: about.com
Date added: 15.03.2006
Hits: 1705
unit iphlp;
interface
uses Windows, System;
const
MAX_HOSTNAME_LEN = 128;
MAX_DOMAIN_NAME_LEN = 128;
MAX_SCOPE_ID_LEN = 256;
type
PIPAddressString = ^TIPAddressString;
PIPMaskString = ^TIPAddressString;
TIPAddressString = record
_String:
array[0..(4 * 4) - 1]
of Char;
end;
TIPMaskString = TIPAddressString;
PIPAddrString = ^TIPAddrString;
TIPAddrString = packed record
Next: PIPAddrString;
IpAddress: TIPAddressString;
IpMask: TIPMaskString;
Context: DWORD;
end;
PFixedInfo = ^TFixedInfo;
TFixedInfo = packed record
HostName:
array[0..MAX_HOSTNAME_LEN + 4 - 1]
of Char;
DomainName:
array[0..MAX_DOMAIN_NAME_LEN + 4 - 1]
of Char;
CurrentDnsServer: PIPAddrString;
DnsServerList: TIPAddrString;
NodeType: UINT;
ScopeId:
array[0..MAX_SCOPE_ID_LEN + 4 - 1]
of Char;
EnableRouting,
EnableProxy,
EnableDns: UINT;
end;
function GetNetworkParams(pFixedInfo: PFixedInfo; pOutBufLen: PULONG): DWORD; stdcall;
procedure GetDNSServers(AList: TStringList);
implementation
const
{$IFDEF MSWINDOWS}
iphlpapidll = 'iphlpapi.dll';
{$ENDIF}
function GetNetworkParams; external iphlpapidll Name 'GetNetworkParams';
procedure GetDNSServers(AList: TStringList);
var
pFI: PFixedInfo;
pIPAddr: PIPAddrString;
OutLen: Cardinal;
begin
AList.Clear;
OutLen := SizeOf(TFixedInfo);
GetMem(pFI, SizeOf(TFixedInfo));
try
if GetNetworkParams(pFI, @OutLen) = ERROR_BUFFER_OVERFLOW
then
begin
ReallocMem(pFI, OutLen);
if GetNetworkParams(pFI, @OutLen) <> NO_ERROR
then Exit;
end;
if pFI^.DnsServerList.IpAddress._String[0] = #0
then Exit;
AList.Add(pFI^.DnsServerList.IpAddress._String);
pIPAddr := pFI^.DnsServerList.Next;
while Assigned(pIPAddr) do
begin
AList.Add(pIPAddr^.IpAddress._String);
pIPAddr := pIPAddr^.Next;
end;
finally
FreeMem(pFI);
end;
end;
end.