Thema: Delphi IP Adresse ändern

Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: IP Adresse ändern

  Alt 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.
  Mit Zitat antworten Zitat