Con el rápido desarrollo de Internet, la programación ahora a menudo requiere una conexión directa en el programa para manejar algunos asuntos, como el registro en línea y la ayuda en línea, lo que requiere que establezcamos ciertas conexiones en el programa. Muchos software inician el navegador para buscar la URL sin saber si el usuario está conectado a Internet. Después de mucho esfuerzo, sólo pueden encontrar una página de error (por supuesto, no hay buenos resultados). Si podemos determinar automáticamente si el usuario está conectado a Internet al escribir el programa y, de ser así, abrir la conexión y, de lo contrario, iniciar la conexión de acceso telefónico predeterminada, ¿esto hará que la gente sienta que su software es mejor que otros? ? La determinación de si está conectado a Internet se presenta en muchos lugares. Aquí solo presentamos cómo iniciar la conexión de acceso telefónico predeterminada.
----Antes de la introducción, primero echemos un vistazo a cómo abrir una red de acceso telefónico. Dado que Acceso telefónico a redes no es un archivo ejecutable, no se puede abrir utilizando el método "Archivo ejecutable de Shell". Para iniciar el acceso telefónico a redes, debe utilizar Explorer. El método es el siguiente:
Shell"Explorador::{20D04FE0-3AEA-1069-A2D8-08002B30309D}/"&"::{992CFFA0-F557-101A-88EC-00DD010CCC48}",vbNormalFocus
----Pero si desea iniciar una conexión en la red de acceso telefónico, debe usar rundll.exe y rnaui.dll para iniciarla. El método es el siguiente (suponiendo que el nombre de la conexión sea 163):
Shell "rundllrnaui.dll, RnaDial163", vbNormalFocus
----Nota: En la descripción anterior, no inserte espacios adicionales en la parte ", RnaDial163" y no cambie el caso arbitrariamente.
----Lo anterior solo asume el nombre de la conexión, pero en la programación real no sabemos su nombre. ¿Cómo obtener el nombre de la conexión predeterminada e iniciarla? Aquí podemos utilizar el registro para lograr nuestro objetivo. El procedimiento completo es el siguiente:
----Coloque un botón de comando (llamado cmdCallConnect) en el formulario. La siguiente es la parte del código:
OpciónExplícito
'Declaración API sobre el registro
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&
PrivadoSubcmdCallConnect_Click()
'Iniciar la conexión de acceso telefónico predeterminada
Shell"rundllrnaui.dll,RnaDial" GetConnect,vbNormalFocus
FinSub
PublicFunctionGetConnect()AsString
DimhKeyAsLong
DimSubKeyAsString
hKey=HKEY_CURRENT_USER'clave principal
Subclave="acceso remoto"'subclave
'Obtener el nombre de conexión predeterminado
GetConnect=GetRegValue(hKey,SubKey,"Predeterminado")
Función final
PublicFunctionGetRegValue(hKeyAsLong,lpszSubKeyAsString,szKeyAsString)AsVariant
OnErrorGoToErrorRoutineErr:
DimphkResultAsLong
DimlResultAsLong
DimszBufferAsString
DimlBuffSizeAsLong
'Crear buffer
szBuffer=Espacio(255)
lBuffSize=Len(szBuffer)
'Abre la clave de registro
RegOpenKeyExhKey,lpszSubKey,0,1,phkResult
'Resultados de la consulta
lResultado=RegQueryValueEx(phkResult,szKey,0,0,szBuffer,lBuffSize)
'Cerrar clave de registro
RegCloseKeyphkResult
'resultado devuelto
IflResult=ERROR_SUCCESSEntonces
GetRegValue=Izquierda(szBuffer,lBuffSize-1)
Demás
ObtenerRegValue=""
Fin si
Función de salida
ErrorRutinaErr:
ObtenerRegValue=""
Función final
El programa anterior ha sido depurado en WIN98 y VB6.0. ->