L'accès Internet commuté via MODEM reste le moyen que la plupart des internautes choisissent pour accéder à Internet. Si nous pouvons activer les connexions commutées dans nos applications (comme la fonction de connexion automatique dans le programme de navigation IE), cela sera sans aucun doute plus pratique pour les utilisateurs de nos logiciels (pas besoin de changer d'application et d'exécuter des réseaux commutés) et améliorer la convivialité de nos logiciels, améliorant ainsi la compétitivité des logiciels.
Sous WIN9X, si l'accès réseau à distance est installé, il y aura deux bibliothèques de gestion de réseau à distance, RasApi32.DLL et RasApi16.DLL, sous le répertoire système Système du système WINDOWS. Nous pouvons utiliser les fonctions qu'elles contiennent pour créer et. modifier les connexions par ligne commutée et l'accès Internet par ligne commutée à l'aide d'une connexion par ligne commutée désignée.
1. Créez une nouvelle connexion commutée
Lorsqu'une connexion commutée a été établie dans le système WIN9X, la connexion commutée existante peut être utilisée. S'il n'y a pas de connexion par ligne commutée, vous devez créer une nouvelle connexion par ligne commutée. La fonction correspondante est fournie dans RasAPI, son nom de fonction est RasCreatePhonebookEntryA et le prototype de fonction est :
function RasCreatePhonebookEntryA( hwnd : THandle;lpszPhonebook: pchar ) : DWord;
stdcall ; { situé dans la section interface}
function RasCreatePhonebookEntryA ; externe 'Rasapi32.dll' ;{ situé dans la section d'implémentation}
paramètre:
hwnd (THandle) : le handle de la fenêtre parent de la nouvelle fenêtre de connexion à distance, qui peut être le handle de TForm ou la table NIL du bureau Windows (DeskTop) ;
lpszPhonebook (pchar) : nom du répertoire, n'a aucun effet sous Win9X, peut être défini sur une chaîne vide
Valeur de retour de la fonction :
0 indique une exécution réussie ; sinon, c'est une erreur.
Vous trouverez ci-dessous un exemple de création d'une nouvelle connexion par ligne commutée.
{Créer une nouvelle connexion par ligne commutée}
PRécédure TForm1.Button1Click(Expéditeur : TObject);
var
dwRésultat : DWORD ;
commencer
//Créer une nouvelle connexion commutée dans la fenêtre actuelle
dwResult := RasCreatePhonebookEntryA( handle, '' );
si dwResult = 0 alors
memo1.lines.add('Nouvelle connexion par ligne commutée réussie !')
autre
memo1.lines.add('Échec de la nouvelle connexion par ligne commutée !')
fin;
2. Modifiez les propriétés de la connexion commutée spécifiée
Si l'utilisateur doit modifier les attributs de la connexion commutée tels que le numéro de téléphone, l'indicatif du pays et de la région, la méthode de connexion, le type de serveur, etc., il peut utiliser la fonction RasAPI pour y parvenir. Le nom de la fonction est RasEditPhonebookEntryA et. le prototype de fonction est :
function RasEditPhonebookEntryA( hwnd : THandle; lpszPhonebook: pchar;
lpszEntryName: pchar ) : DWORD;stdcall; { situé dans la partie interface}
function RasEditPhonebookEntryA externe 'Rasapi32.dll';{ situé dans la section d'implémentation}
paramètre:
hwnd (THandle) : le handle de la fenêtre parent de la nouvelle fenêtre de connexion à distance, qui peut être le handle de TForm, exprimé comme NIL
Bureau Windows (Bureau)
lpszPhonebook (pchar) : nom du répertoire, n'a aucun effet sous Win9X, peut être défini sur une chaîne vide
lpszEntryName : (pchar) : le nom de la connexion commutée à modifier, tel que « 163 », « 169 », etc.
Valeur de retour de la fonction :
0 indique une exécution réussie ; sinon, c'est une erreur.
Voici un exemple de modification des propriétés d'une connexion d'accès à distance spécifiée.
{Modifier les propriétés de connexion à distance spécifiées}
procédure TForm1.Button2Click(Expéditeur : TObject);
var
dwRésultat : DWORD ;
strDialName : chaîne ;
commencer
strDialName := '163';//Définissez le nom de la connexion commutée sur 163
//Spécifiez et modifiez les propriétés de la connexion commutée dans la fenêtre actuelle
dwResult := RasEditPhonebookEntryA( handle, '', PChar( strDialName ) );
si dwResult = 0 alors
memo1.lines.add('Modifier la connexion à distance' + strDialName + 'Succès !')
autre
memo1.lines.add('Modifier la connexion à distance' + strDialName + 'Échec !')
fin;
3. Obtenez les noms de connexion d'accès à distance disponibles dans le système actuel
Pour que l'utilisateur puisse choisir de composer en utilisant une connexion par ligne commutée, nous devons obtenir le nom de la connexion par ligne commutée qui a été établie dans le système. Après avoir établi une connexion commutée, WIN9X écrit le nom et les attributs de la connexion commutée dans le registre. Nous pouvons obtenir les noms de connexion commutée disponibles dans le système actuel et le nom de connexion par défaut défini dans Internet Explorer à partir du registre. .
Sous HKEY_USERS.DefaultRemoteaccessAddresses dans le registre, les noms des connexions à distance qui ont été établies dans le réseau à distance et leurs paramètres d'attribut sont répertoriés. Le nom de chaque élément est le nom de la connexion à distance disponible ; de chaque élément est le nom de la connexion à distance disponible. Il suffit de lire le nom de chaque projet pour obtenir les noms de connexion commutée disponibles dans le système actuel.
Si le nom de connexion par défaut est défini dans Internet Explorer (Affichage => Options Internet => Connexion => Connexion => Paramètres => Utiliser la connexion réseau commutée suivante), alors sous HKEY_USERS.DefaultRemoteAccess dans le registre, il y a une chaîne tapez Valeur de clé, le nom de la valeur de clé est InternetProfile et sa valeur est le nom de connexion par défaut défini dans Internet Explorer.
Ce qui suit est un exemple d'obtention des noms des connexions d'accès à distance disponibles sur le système actuel.
{Notez que l'unité de registre est ajoutée aux utilisations pour faire fonctionner le registre}
{Obtenir les noms de connexion d'accès à distance disponibles dans le système actuel}
procédure TForm1.Button3Click(Expéditeur : TObject);
var
registreTemp : TRegistry;
stringsTemp : TStringlist;
intIndex : entier ;
commencer
registreTemp := TRegistry.Create;
stringsTemp := TStringlist.Create;
avec RegistryTemp faire
commencer
RootKey := HKEY_USERS;//La clé racine est définie sur HKEY_USERS
//S'il y a des sous-clés.DefaultRemoteAccessAddresses
si OpenKey('.DefaultRemoteAccessAddresses',false) alors
GetValueNames( stringsTemp );//Lire le nom de chaque élément, c'est-à-dire le nom de la connexion à distance
FermerClé ;
fin;
//Connexions commutées disponibles dans le système actuel
memo1.lines.add( '******************Il y a'+ IntToStr( stringsTemp.count ) dans le système actuel
+'Les connexions commutées disponibles sont les suivantes******************');
pour intIndex := 0 à stringsTemp.count - 1 faire
memo1.lines.add( stringsTemp.strings[ intIndex ] );
//Liste les noms de connexion par défaut définis dans Internet Explorer
si RegistryTemp.OpenKey('.DefaultRemoteAccess',false) alors
memo1.lines.add( 'Le nom de connexion par défaut défini dans Internet Explorer est' +
registreTemp.ReadString('InternetProfile') );
//libère la mémoire
registreTemp.free;
stringsTemp.free;
fin;
4. Composez en utilisant la connexion commutée spécifiée
Le but des trois tâches ci-dessus est d'obtenir un accès Internet commuté. Voyons maintenant comment utiliser une connexion commutée désignée pour accéder à Internet par ligne commutée. La meilleure façon est d'appeler le service de réseau commuté de WIN9X, qui consiste à exécuter le programme prêt à l'emploi sous WIN9X.
Dans un programme Delphi, vous pouvez utiliser le code suivant pour implémenter un accès Internet commuté :
winexec('rundll32.exe rnaui.dll,RnaDial 163',SW_SHOWNORMAL);
Le dernier paramètre « 163 » de la chaîne est le nom de la connexion d'accès à distance.
Ce qui suit est un exemple d'accès Internet par ligne commutée utilisant une connexion par ligne commutée spécifiée.
{Accès Internet par ligne commutée à l'aide de la connexion commutée spécifiée}
procédure TForm1.Button4Click(Expéditeur : TObject);
var
strDialName : chaîne ;
commencer
strDialName := '163';//Définissez le nom de la connexion commutée sur 163
memo1.lines.add( '****************Utiliser une connexion commutée' + strDialName
+'Réaliser un accès Internet commuté******************');
winexec( PChar('rundll32.exe rnaui.dll,RnaDial ' + strDialName),SW_SHOWNORMAL);
fin;
Le programme ci-dessus a été débogué et passé sous PWIN98+Delphi3.0.