AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Gateway IP über eine API auslesen?
Thema durchsuchen
Ansicht
Themen-Optionen

Gateway IP über eine API auslesen?

Ein Thema von Thurgen · begonnen am 11. Sep 2002 · letzter Beitrag vom 16. Jul 2008
Antwort Antwort
Seite 3 von 3     123   
Tod787

Registriert seit: 19. Mai 2008
99 Beiträge
 
#21

Re: Gateway IP über eine API auslesen?

  Alt 10. Jul 2008, 12:57
Also ich würde den Code auch gerne mal ausprobieren nur bekomme ich beim Compilieren die Meldung:

Zitat:
[Pascal Fehler] Unit1.pas(34): E2086 Typ 'PIP_MASK_STRING' ist nicht vollständig definiert
Habe das Formular der Einfachheit TForm1 gnannt und die Combobox auch wieder Combobox1. Aber auch mit den ursprünglichen Bezeichnungen kommt der Fehler. Muss ich evtl noch was einbinden?

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

  const
  MAX_ADAPTER_DESCRIPTION_LENGTH = 128; // arb.
  MAX_ADAPTER_NAME_LENGTH = 256; // arb.
  MAX_ADAPTER_ADDRESS_LENGTH = 8; // arb.

type
  PIP_ADDRESS_STRING = ^IP_ADDRESS_STRING;
  IP_ADDRESS_STRING =
    packed record
      acString : array [1..16] of Char;
    end;

  PIP_MASK_STRING = ^PIP_MASK_STRING;
  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 = int64;

  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;

function GetAdaptersInfo(const pAdapterInfo : PIP_ADAPTER_INFO;const pOutBufLen : PULONG) : DWORD; stdcall; external 'IPHLPAPI.DLLname 'GetAdaptersInfo';
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  dwResult : DWORD;
  dwLen : DWORD;
  pAdapterWork : PIP_ADAPTER_INFO;
  pAdapterList : PIP_ADAPTER_INFO;
  iasWork : IP_ADDR_STRING;

begin
  pAdapterList := nil;
  dwLen := 0;
  dwResult := GetAdaptersInfo(pAdapterList,@dwLen);
  if dwResult = ERROR_BUFFER_OVERFLOW then
  begin
    pAdapterList := AllocMem(dwLen);
    try
      dwResult := GetAdaptersInfo(pAdapterList,@dwLen);
      if dwResult = ERROR_SUCCESS then
      begin
        pAdapterWork := pAdapterList;
        ComboBox1.Clear;
        repeat
          iasWork := pAdapterWork.GatewayList;
          while iasWork.Next <> nil do
          begin
            ComboBox1.Items.Add(trim(iasWork.IpAddress.acString));
            iasWork := iasWork.Next^;
          end;
          ComboBox1.Items.Add(trim(iasWork.IpAddress.acString));
          pAdapterWork := pAdapterWork.Next;
        until pAdapterWork = nil;
        if ComboBox1.Items.Count > 0 then
        begin
          ComboBox1.ItemIndex := 0;
        end;
      end;
    finally
      FreeMem(pAdapterList,dwLen);
    end;
  end;
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#22

Re: Gateway IP über eine API auslesen?

  Alt 10. Jul 2008, 13:10
schau dir doch mal die Zeile genau an:
PIP_MASK_STRING = ^PIP_MASK_STRING; wie kann PIP_MASK_STRING gleichzeitig ^PIP_MASK_STRING sein? Hast du dich da vielleicht vertippt?
das führende P steht übrigens für Pointertyp. Und das was da im Quelltext steht wäre die Erstellung eines Pointertypes auf einen Pointertyp. Einfach die entsprechende Zeile mal ein Weilchen anschauen und dann überlegen was daran wohl falsch ist.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Tod787

Registriert seit: 19. Mai 2008
99 Beiträge
 
#23

Re: Gateway IP über eine API auslesen?

  Alt 10. Jul 2008, 13:46
ok mit

Delphi-Quellcode:
  PIP_MASK_STRING = ^PIP_ADDRESS_STRING;
  IP_MASK_STRING = IP_ADDRESS_STRING;
geht es jetzt
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#24

Re: Gateway IP über eine API auslesen?

  Alt 11. Jul 2008, 15:39
das funktioniert wirklich? richtig ist es meiner Meinung nach so:
PIP_MASK_STRING = ^TIP_MASK_STRING; Denn das Prinzip der Benennung sieht eigentilch so aus:
PYourType = ^TYourType; Es wird also vom normalen Typen ein Pointertyp erstellt daher auch das P anstelle des T
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Tod787

Registriert seit: 19. Mai 2008
99 Beiträge
 
#25

Re: Gateway IP über eine API auslesen?

  Alt 16. Jul 2008, 09:57
Sorry für die Verspätug. Bin umgestiegen auf WMI. Fällt mir deutlich einfacher
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz