Avec le développement rapide d'Internet, la programmation nécessite désormais souvent une mise en réseau directe dans le programme pour gérer certaines questions, telles que l'inscription en ligne et l'aide en ligne, ce qui nous oblige à établir certaines connexions dans le programme. De nombreux logiciels démarrent le navigateur pour rechercher l'URL sans savoir si l'utilisateur est connecté à Internet. Après beaucoup d'efforts, ils ne trouvent qu'une page d'erreur (bien sûr, il n'y a pas de bon résultat). Si nous pouvons déterminer automatiquement si l'utilisateur est connecté à Internet lors de l'écriture du programme, et si c'est le cas, ouvrir la connexion, et sinon, démarrer la connexion commutée par défaut, cela donnera-t-il aux gens le sentiment que votre logiciel est meilleur que les autres ? Déterminer si vous êtes connecté à Internet est présenté à de nombreux endroits. Ici, nous présentons uniquement comment démarrer la connexion commutée par défaut.
----Avant l'introduction, voyons d'abord comment ouvrir un réseau commuté. Étant donné que l'accès réseau à distance n'est pas un fichier exécutable, il ne peut pas être ouvert à l'aide de la méthode « Fichier exécutable Shell ». Pour démarrer l'accès réseau à distance, vous devez utiliser l'Explorateur. La méthode est la suivante :
Shell"Explorateur : :{20D04FE0-3AEA-1069-A2D8-08002B30309D}/"&": :{992CFFA0-F557-101A-88EC-00DD010CCC48}",vbNormalFocus
----Mais si vous souhaitez démarrer une connexion sur le réseau commuté, vous devez utiliser rundll.exe et rnaui.dll pour la démarrer. La méthode est la suivante (en supposant que le nom de connexion est 163) :
Shell "rundllrnaui.dll, RnaDial163", vbNormalFocus
----Remarque : dans la description ci-dessus, n'insérez pas d'espaces supplémentaires dans la partie ",RnaDial163" et ne modifiez pas la casse arbitrairement.
----Ce qui précède suppose uniquement le nom de la connexion, mais dans la programmation réelle, nous ne connaissons pas son nom. Comment obtenir le nom de connexion par défaut et la démarrer ? Ici, nous pouvons utiliser le registre pour atteindre notre objectif. La procédure complète est la suivante :
----Placez un bouton de commande (nommé cmdCallConnect) sur le formulaire. Voici la partie code :
OptionExplicite
'Déclaration API concernant l'enregistrement
PRivateDeclareFunctionRegOpenKeyExLib"advapi32"Alias"RegOpenKeyExA"(ByValhKeyAsLong,ByVallpSubKeyAsString,ByValulOptionsAsLong,ByValsamDesiredAsLong,phkResultAsLong)AsLong
PrivateDeclareFunctionRegQueryValueExLib"advapi32"Alias"RegQueryValueExA"(ByValhKeyAsLong,ByVallpValueNameAsString,ByVallpReservedAsLong,ByReflpTypeAsLong,ByValszDataAsString,ByReflpcbDataAsLong)AsLong
PrivateDeclareFunctionRegCloseKeyLib"advapi32"(ByValhKeyAsLong)AsLong
'constante
ConstHKEY_CURRENT_USER=&H80000001
ConstERROR_SUCCESS=0&
PrivateSubcmdCallConnect_Click()
'Démarrer la connexion commutée par défaut
Shell "rundllrnaui.dll, RnaDial" GetConnect, vbNormalFocus
FinSub
PublicFunctionGetConnect()AsString
DimhKeyAsLong
DimSubKeyAsString
hKey=Clé primaire de HKEY_CURRENT_USER
SubKey="Sous-clé d'accès à distance"
'Obtenir le nom de connexion par défaut
GetConnect=GetRegValue(hKey,SubKey,"Par défaut")
FinFonction
PublicFunctionGetRegValue(hKeyAsLong,lpszSubKeyAsString,szKeyAsString)AsVariant
OnErrorGoToErrorRoutineErr :
DimphkResultAsLong
DimlResultAsLong
DimszBufferAsString
DimlBuffSizeAsLong
'Créer un tampon
szBuffer=Espace(255)
lBuffSize=Len(szBuffer)
'Ouvrez la clé d'enregistrement
RegOpenKeyExhKey, lpszSubKey, 0,1, phkResult
'Résultats de la requête
lResult=RegQueryValueEx(phkResult,szKey,0,0,szBuffer,lBuffSize)
'Fermer la clé d'enregistrement
RegCloseKeyphkResult
'retourner le résultat
IflResult=ERROR_SUCCESSAlors
GetRegValue=Gauche(szBuffer,lBuffSize-1)
Autre
ObtenirRegValue=""
FinSi
Fonction de sortie
ErreurRoutineErr :
GetRegValue=""
FinFonction
Le programme ci-dessus a été débogué sous WIN98 et VB6.0. ->