Com o rápido desenvolvimento da Internet, a programação agora muitas vezes requer rede direta no programa para lidar com alguns assuntos, como registro on-line e ajuda on-line, o que exige que estabeleçamos certas conexões no programa. Muitos softwares iniciam o navegador para procurar a URL sem saber se o usuário está conectado à Internet. Depois de muito esforço, eles só conseguem encontrar uma página de erro (claro, não há um bom resultado). Se pudermos determinar automaticamente se o usuário está conectado à Internet ao escrever o programa e, em caso afirmativo, abrir a conexão e, se não, iniciar a conexão dial-up padrão, isso fará com que as pessoas sintam que seu software é melhor que outros ? Determinar se você está conectado à Internet é apresentado em muitos lugares. Aqui apresentamos apenas como iniciar a conexão dial-up padrão.
----Antes da introdução, vamos primeiro dar uma olhada em como abrir a rede dial-up. Como a rede dial-up não é um arquivo executável, ela não pode ser aberta usando o método "Arquivo executável do Shell". Para iniciar a rede dial-up, você precisa usar o Explorer. O método é o seguinte:
Shell"Explorador::{20D04FE0-3AEA-1069-A2D8-08002B30309D}/"&"::{992CFFA0-F557-101A-88EC-00DD010CCC48}",vbNormalFocus
----Mas se você deseja iniciar uma conexão na rede dial-up, você precisa usar rundll.exe e rnaui.dll para iniciá-la. O método é o seguinte (assumindo que o nome da conexão seja 163):
Shell"rundllrnaui.dll,RnaDial163",vbNormalFocus
----Nota: Na descrição acima, não insira espaços extras na parte ",RnaDial163" e não altere o caso arbitrariamente.
----O acima assume apenas o nome da conexão, mas na programação real não sabemos seu nome. Como obter o nome da conexão padrão e iniciá-la? Aqui podemos usar o registro para atingir nosso objetivo. O procedimento completo é o seguinte:
----Coloque um botão de comando (chamado cmdCallConnect) no formulário A seguir está a parte do código:
OpçãoExplícita
'Declaração da API sobre 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&
PrivateSubcmdCallConnect_Click()
'Iniciar a conexão dial-up padrão
Shell "rundllrnaui.dll, RnaDial" GetConnect, vbNormalFocus
Fim Sub
PublicFunctionGetConnect()AsString
DimhKeyAsLong
DimSubKeyAsString
hKey=HKEY_CURRENT_USER'chave primária
SubKey="Acesso remoto"'subchave
'Obtém o nome da conexão padrão
GetConnect=GetRegValue(hKey,SubKey,"Padrão")
Função Final
PublicFunctionGetRegValue(hKeyAsLong,lpszSubKeyAsString,szKeyAsString)AsVariant
OnErrorGoToErrorRoutineErr:
DimphkResultAsLong
DimlResultAsLong
DimszBufferAsString
DimlBuffSizeAsLong
'Criar buffer
szBuffer=Espaço(255)
lBuffSize=Len(szBuffer)
'Abre a chave de registro
RegOpenKeyExhKey,lpszSubKey,0,1,phkResult
'Resultados da consulta
lResult=RegQueryValueEx(phkResult,szKey,0,0,szBuffer,lBuffSize)
'Fecha chave de registro
RegCloseKeyphkResult
'resultado de retorno
IflResult=ERROR_SUCCESSEntão
GetRegValue=Left(szBuffer,lBuffSize-1)
Outro
GetRegValue=""
FimSe
Função de saída
ErroRoutineErr:
GetRegValue=""
Função Final
O programa acima foi depurado em WIN98 e VB6.0. ->