P> Sous Win9x, si le réseau de numérotation est installé, il y aura deux bibliothèques de programmes de gouvernance de réseau Dial-up Rasapi32.dll et Rasapi16.dll sous le système du répertoire système du système Windows. et définir des informations sur la numérotation pour se connecter au réseau. Bien sûr, vous pouvez obtenir l'adresse IP dynamique de la connexion Dial-Up. Dans le fichier d'aide Delphi, il existe des instructions spécifiques pour les fonctions RAS connexes. 1. Expliquez d'abord certaines constantes de données et structures de données à utiliser. const
Ras_maxDeviceType = 16; // Longueur de nom de type de périphérique
Ras_maxentryname = 256; // la longueur maximale du nom de la connexion
Ras_maxdeviceName = 128; // la longueur maximale du nom du périphérique
Ras_maxipaddress = 15; // longueur maximale de l'adresse IP
Rasp_pppip = 8021 $; // Type de protocole de connexion Dial-up, cette valeur représente le type de connexion PPP
HRASCONC = DWORD; // Type de poignée de connexion de numérotation
Rasconn = enregistrer // la poignée et la définition des informations de la connexion en numérotation active
dwSize: dword; // la taille de la mémoire occupée par cette structure (octets),
Généralement réglé sur sizeof (rasconn)
HRASCCON: HRASCNCH; // La poignée de la connexion active
szentryname: array [0..ras_maxentryname] de char;
// le nom de la connexion active
szdeviceType: array [0..ras_maxdeviceType] de char;
// Le type d'équipement utilisé pour la connexion active
szdeviceName: array [0..ras_maxdeviceName] de char;
// le nom du périphérique utilisé pour la connexion active
fin;
Traspppip = enregistrer // les informations d'adresse IP dynamique pour les connexions de numérotation active
dwSize: dword; // la taille de la mémoire occupée par cette structure (octets),
Généralement réglé sur Sizeof (TrasppPip)
dwerror: dword; // identifiant de type d'erreur
szipaddress: array [0..ras_maxipaddress] de char;
// L'adresse IP de la connexion Dial-up active
fin;
2. Ensuite, nous devons expliquer les deux fonctions Ras à utiliser. // Obtenez des informations sur toutes les connexions de numérotation active (poignée de connexion et définition des informations)
fonction rasenumconnections (var lprasconn: rasconn;
// reçoit le pointeur du tampon de la connexion active
var lpcb: dword; // taille de tampon
var lpcconnections: dword // Le nombre réel de connexions actives
): DWORD;
fonction rasenumconnections;
Nom RasenumConnectionsa;
// Obtenir des informations IP dynamiques pour la connexion de numérotation active spécifiée
fonction rasgetProjectionInfo (
HRASCCON: HRASCNCH; // Spécifiez la poignée de la connexion active
Rasprojection: DWORD; // RAS Type de connexion
var lpprojection: traspppip; // tampon pour recevoir des informations IP dynamiques
var LPCB: DWORD // Recevoir la taille du tampon
): Dword; stdcall;
ction rasgetprojectionInfo;
Rasapi32.dll name rasgetProjectionInfoa;
Lorsque la valeur de retour de ces deux fonctions est 0, cela signifie que l'exécution est réussie et non 0 signifie le code d'erreur. 3. La discussion suivante concerne la façon d'utiliser les deux fonctions RAS ci-dessus pour obtenir l'adresse IP dynamique d'une connexion en numérotation. Nom, poignée de connexion, type de périphérique de connexion et nom de périphérique; puis utilisez la fonction RasgetProjectionInfo pour obtenir une structure TRASPPPIP correspondant à la connexion, y compris un attribut de membre Szipaddress, qui est l'adresse IP dynamique. Pour plus de détails, veuillez consulter les extraits du programme et les informations de commentaires ci-dessous. Procédure tform1.button1Click (expéditeur: tobject);
const
MaxConnections = 10; // Supposons qu'il existe jusqu'à 10 connexions de numérotation active
var
Connexions: Array [0..maxConnections-1] de Rasconn;
// Tableau de connexion par rapport
Longsize: DWORD;
IntavailableConnections: DWORD;
// le nombre réel de connexions de numérotation active
INTINDEX: INTEGER;
StrTemp: String;
dwresult: dword;
DwSize: DWORD;
RASPPPIP: TRASPPPIP;
// Informations sur l'adresse IP dynamique de la connexion en numérotation active
Commencer
connexions [0] .dwsize: = sizeof (rasconn);
longsize: = maxConnections * Connexions [0] .dwSize;
// reçoit la taille du tampon de la connexion active
intavailableConnections: = 0;
// Obtenez des informations sur toutes les connexions de numérotation active (poignée de connexion et définition des informations)
dwResult: = rasenumconnections (connexions [0],
Longsize, intavailableConnections);
Si 0 $ # @ 60; $ # @ 62;
memo1.lines.add (erreur: + inttoStr (dwresult)))
autre
Commencer
memo1.lines.add (la connexion active existante a +
IntToStr (intavailableConnections) +);
// Afficher des informations sur toutes les connexions de numérotation active (définition des informations et adresse IP dynamique)
pour inindex: = 0 à intavailableConnections - 1 do
Commencer
// Afficher les informations des paramètres pour une connexion en numérotation active
StrTemp: = Nom de la connexion:
+ Strpas (connexions [inindex] .szentryname)
+, type d'appareil:
+ Strpas (connexions [inindex] .szdeviceType)
+, nom de l'appareil:
+ Strpas (connexions [inindex] .szdeviceName);
memo1.lines.add (strTemp);
// Afficher l'adresse IP dynamique d'une connexion en numérotation active
dwSize: = sizeof (raspppip);
Raspppip.dwsize: = dwSize;
dwresult: = rasgetprojectioninfo
(Connexions [INTINDEX] .hrasonn,
Rasp_pppip, raspppip, dwSize); // obtenir une adresse IP dynamique
Si 0 $ # @ 60; $ # @ 62;
memo1.lines.add (
Erreur: + InttoStr (dwresult))
autre
memo1.lines.add (
Adresse dynamique: + strpas (raspppip.szipaddress));
fin;
fin;
fin;
Le programme ci-dessus a été débogué et adopté sous PWIN98 + Delphi3.0.