Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
Delphi 7 Enterprise
|
Re: IP Adresse ändern
12. Nov 2007, 15:55
Ich habe mal das hier zusammengeschrieben. Damit bekommt man zumindest alle derzeitigen Einträge. Da gibts noch die Funktionen AddIPAddress und DeleteIPAddress. Aber man kann anscheinend nur die Adressen löschen, die man auch selber erstellt hat.
Delphi-Quellcode:
uses winsock,...
type PMIB_IPADDRROW=^TMIB_IPADDRROW;
TMIB_IPADDRROW=packed record
dwAddr:DWORD;
dwIndex:DWORD;
dwMask:DWORD;
dwBCastAddr:DWORD;
dwReasmSize:DWORD;
unused1:WORD;
wType:WORD;
end;
type PMIB_IPADDRTABLE=^TMIB_IPADDRTABLE;
TMIB_IPADDRTABLE=packed record
dwNumEntries:DWORD;
MIB_IPADDRROW:array[0..0] of TMIB_IPADDRROW;
end;
const MAXLEN_PHYSADDR=8;
type PMIB_IPNETROW=^TMIB_IPNETROW;
TMIB_IPNETROW=packed record
dwIndex:DWORD;
dwPhysAddrLen:DWORD;
bPhysAddr:array [1..MAXLEN_PHYSADDR] of Byte;
dwAddr:DWORD;
dwType:DWORD;
end;
type PMIB_IPNETTABLE=^TMIB_IPNETTABLE;
TMIB_IPNETTABLE=packed record
dwNumEntries:DWORD;
table:array[0..0] of TMIB_IPNETROW;
end;
procedure TForm1.Button1Click(Sender: TObject);
var pIpaddrtable:PMIB_IPADDRTABLE;
pIPaddrRow:PMIB_IPADDRROW;
pIpnettable:PMIB_IPNETTABLE;
pIPnetRow:PMIB_IPNETROW;
i,len,j:integer;
lib:hmodule;
getipaddrTable:function(pIpAddrtable:PMIB_IPADDRTABLE;var len:integer;Order:bool):integer;stdcall;
getipnetTable:function(pIpNetTable:PMIB_IPNETTABLE;var len:integer;order:bool):integer;stdcall;
s:string;
begin
lib:=loadlibrary('Iphlpapi.dll');
getipaddrTable:=getprocaddress(lib,'GetIpAddrTable');
getipnetTable:=getprocaddress(lib,'GetIpNetTable');
len:=0;
GetIpAddrTable(pIPaddrTable,len,false);
getmem(pIPaddrTable,len);
GetIpAddrTable(pIPaddrTable,len,false);
memo1.Clear;
for i:=0 to pIPaddrTable^.dwNumEntries-1 do
begin
pIPaddrRow:=pointer(integer(@pIPaddrTable.MIB_IPADDRROW)+i*sizeof(TMIB_IPADDRROW));
memo1.lines.add(inet_ntoa(TInADDr(pIPaddrRow^.dwaddr)));
memo1.lines.add(inet_ntoa(TInADDr(pIPaddrRow^.dwMask)));
memo1.lines.add(inttostr(pIPaddrRow^.dwindex));
memo1.lines.add('---');
end;
memo1.lines.add('');
freemem(pipaddrTable);
{ len:=0;
GetIpNetTable(pIPnetTable,len,false);
getmem(pIPnetTable,len);
GetIpNetTable(pIPnetTable,len,false);
for i:=0 to pIPaddrTAble^.dwNumEntries-1 do
begin
pIPnetRow:=pointer(integer(@pIPnetTable.table)+i*sizeof(TMIB_IPnetROW));
memo1.lines.add(inttostr(pIPnetRow^.dwIndex));
s:='';
for j:=1 to pIPNetRow^.dwPhysAddrLen do s:=s+inttohex(PIPnetRow^.bPhysAddr[j],2);
memo1.lines.add(s);
memo1.lines.add(inet_ntoa(TINAddr(PIPNetRow^.dwAddr)));
memo1.lines.add(inttostr(PIPNetRow^.dwtype));
memo1.lines.add('---');
end;
freemem(PIPnetTable);}
end;
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
|
|
Zitat
|