P> Unter Win9x wird das Dial-up-Netzwerk installiert, und es werden zwei Bibliotheken für Dial-up-Netzwerke Rasapi32.dll und RasAPI16.DLL unter dem Systemverzeichnissystem des Windows-Systems verwendet, um die RAS-Serienfunktionen zu verwenden. Setzen Sie Informationen zum Wählen, um eine Verbindung zum Netzwerk herzustellen. Natürlich können Sie die dynamische IP-Adresse der Dial-up-Verbindung erhalten. In der Delphi -Hilfedatei gibt es spezielle Anweisungen für verwandte RAS -Funktionen. 1. Erklären Sie zunächst einige Datenkonstanten und Datenstrukturen, die verwendet werden sollen. Const
Ras_maxdevicetype = 16; // Geräte Typ Name Länge
Ras_maxEentryname = 256; // Maximale Länge des Verbindungsnamens
Ras_maxdevicename = 128; // Maximale Länge des Gerätenamens
Ras_maxipaddress = 15; // Maximale Länge der IP -Adresse
Rasp_pppip = $ 8021; // Der Protokolltyp der Dial-up-Verbindung repräsentiert dieser Wert den PPP-Verbindungstyp
Hrasconn = DWORD; // Art des Wählverbindungshandels
Rasconn = record // das Handle und das Festlegen von Informationen der aktiven DFÜ-Verbindung
DWSIZE: DWORD; // Die von dieser Struktur besetzte Speichergröße (Bytes),
Im Allgemeinen auf sizeof (rasconn) eingestellt
hrasconn: hrasconn; // das Handle der aktiven Verbindung
SzEnryname: Array [0..ras_maxEentryname] von char;
// der Name der aktiven Verbindung
szdevicetype: array [0..ras_maxdevicetype] von char;
// Die Art der Geräte, die für die aktive Verbindung verwendet wird
szdevicename: array [0..ras_maxdevicename] von char;
// Der für die aktive Verbindung verwendete Gerätename
Ende;
TRASPPPIP = Datensatz // dynamische IP-Adresse Informationen für aktive Wählverbindungen
DWSIZE: DWORD; // Die von dieser Struktur besetzte Speichergröße (Bytes),
Im Allgemeinen auf sizeof (tRASPPPIP) eingestellt
Dwerror: DWORD; // Fehlertyp -Kennung
Szipaddress: Array [0..ras_maxipaddress] von char;
// die IP-Adresse der aktiven Dial-up-Verbindung
Ende;
2. Als nächstes müssen wir die beiden RAS -Funktionen erklären, die verwendet werden sollen. // Informationen zu allen aktiven Wählverbindungen erhalten (Verbindungshandel und Einstellen von Informationen)
Funktion RasenumConnections (var lprasconn: rasconn;
// Empfangen Sie den Zeiger des Puffers der aktiven Verbindung
var lpcb: dWord; // Puffergröße
var lpcconnections: DWORD // Die tatsächliche Anzahl der aktiven Verbindungen
): DWORD;
Funktion RasenumConnections;
Name RasenumConnectionsa;
// Dynamische IP-Informationen für die angegebene aktive Dial-up-Verbindung abrufen
Funktion rasgetProjectionInfo (
Hrasconn: Hrasconn; // Geben Sie den Handle für die aktive Verbindung an
Raprojection: DWORD; // RAS -Verbindungstyp
var lpprojjized: tRASPPPIP; // Puffer zum Empfangen von dynamischen IP -Informationen
var LPCB: DWORD // Puffergröße empfangen
): DWORD; STDCALL;
ction rasgetProjectionInfo; extern
Rasapi32.dll Name RasgetProjectionInfoa;
Wenn der Rückgabewert dieser beiden Funktionen 0 beträgt, bedeutet dies, dass die Ausführung erfolgreich ist und nicht-0 den Fehlercode bedeutet. 3. In der folgenden Diskussion werden die oben genannten zwei RAS-Funktionen verwendet, um die dynamische IP-Adresse einer Dial-up-Verbindung zu erhalten. Name, Verbindungshandel, Verbindungsgeräte -Typ und Gerätename; Weitere Informationen finden Sie unter den folgenden Programmausschnitten und Kommentareninformationen. procedure tform1.button1click (Absender: tobject);
Const
MaxConnections = 10; // Angenommen, es gibt bis zu 10 aktive Wählverbindungen
var
Verbindungen: Array [0..maxConnections-1] von Rasconn;
// Verbindungsarray wählern
Langzeit: DWORD;
InaPailableConnections: DWORD;
// die tatsächliche Anzahl aktiver Dial-up-Verbindungen
Intindex: Ganzzahl;
Strtemp: String;
dwresult: dword;
DWSIZE: DWORD;
Raspppip: traspppip;
// Dynamische IP-Adresse Informationen zur aktiven Dial-up-Verbindung
Beginnen
Verbindungen [0] .DWSIZE: = sizeof (rasconn);
Langzeit: = MaxConnections * Verbindungen [0] .DWSIZE;
// Empfangen Sie die Puffergröße der aktiven Verbindung
InaPailableConnections: = 0;
// Informationen zu allen aktiven Wählverbindungen erhalten (Verbindungshandel und Einstellen von Informationen)
dwresult: = rasenumconnections (Verbindungen [0],
langsiedlung, intavailableConnections);
Wenn 0 $#60;
memo1.lines.add (Fehler: + inttostr (dwresult))
anders
Beginnen
memo1.lines.add (die vorhandene aktive Verbindung hat +
IntToStr (intAavailableConnections) +);
// Informationen zu allen aktiven Dial-up-Verbindungen anzeigen (Einstellen von Informationen und dynamische IP-Adresse)
Für Intindex: = 0 bis inaPailableConnections - 1 tun
Beginnen
// Einstellungsinformationen für eine aktive Wählverbindung anzeigen
STRTemp: = Verbindungsname:
+ Strpas (Verbindungen [intindex] .szentryname)
+, Gerätetyp:
+ Strpas (Verbindungen [intindex] .szdevicetype)
+, Gerätename:
+ Strpas (Verbindungen [intindex] .szdevicename);
memo1.lines.add (Strtemp);
// Zeigen Sie die dynamische IP-Adresse einer aktiven Dial-up-Verbindung an
dwsize: = sizeof (raspppip);
Raspppip.dwsize: = dwsize;
dwresult: = rasgetProjectionInfo
(Verbindungen [intindex] .hrasconn,
Rasp_pppip, raspppip, dwsize); // dynamische IP -Adresse abrufen
Wenn 0 $#60; $#@62;
memo1.lines.add (
Fehler: + inttostr (dwresult))
anders
memo1.lines.add (
Dynamische Adresse: + strpas (raspppip.szipaddress));
Ende;
Ende;
Ende;
Das obige Programm wurde unter pwin98+delphi3.0 debugged und bestanden.