인터넷의 급속한 발전으로 이제 프로그래밍에서는 온라인 등록 및 온라인 도움말과 같은 일부 문제를 처리하기 위해 프로그램에서 특정 연결을 설정해야 하는 직접적인 네트워킹이 필요한 경우가 많습니다. 많은 소프트웨어는 사용자가 인터넷에 연결되어 있는지 여부를 알지 못한 채 브라우저를 시작하여 많은 노력을 기울인 후에도 오류 페이지만 찾을 수 있습니다(물론 좋은 결과는 없습니다). 프로그램을 작성할 때 사용자가 인터넷에 연결되어 있는지 자동으로 확인하고 연결되어 있으면 연결을 열고 그렇지 않은 경우 기본 전화 접속 연결을 시작하면 사람들이 귀하의 소프트웨어가 다른 소프트웨어보다 낫다고 느끼게 될까요? ? 인터넷에 연결되어 있는지 확인하는 방법은 여러 곳에서 소개됩니다. 여기서는 기본 전화 접속 연결을 시작하는 방법만 소개합니다.
----소개에 앞서 먼저 전화 접속 네트워킹을 여는 방법을 살펴보겠습니다. 전화 접속 네트워킹은 실행 파일이 아니기 때문에 "셸 실행 파일" 방법을 사용하여 열 수 없습니다. 전화 접속 네트워킹을 시작하려면 탐색기를 사용해야 합니다. 방법은 다음과 같습니다.
쉘"탐색기::{20D04FE0-3AEA-1069-A2D8-08002B30309D}/"&"::{992CFFA0-F557-101A-88EC-00DD010CCC48}",vbNormalFocus
----그러나 전화 접속 네트워크에서 연결을 시작하려면 rundll.exe 및 rnaui.dll을 사용하여 시작해야 합니다(연결 이름이 163이라고 가정).
쉘"rundllrnaui.dll,RnaDial163",vbNormalFocus
----참고: 위 설명에서 ",RnaDial163" 부분에 공백을 넣거나, 대소문자를 임의로 변경하지 마세요.
----위에서는 연결 이름만 가정하지만 실제 프로그래밍에서는 기본 연결 이름을 얻고 시작하는 방법을 모릅니다. 여기서 우리는 목표를 달성하기 위해 레지스트리를 사용할 수 있습니다. 전체 절차는 다음과 같습니다.
----폼에 명령 단추(cmdCallConnect)를 배치합니다. 다음은 코드 부분입니다.
OptionExplicit
'등록에 관한 API 설명
PRivateDeclareFunctionRegOpenKeyExLib"advapi32"별칭"RegOpenKeyExA"(ByValhKeyAsLong,ByVallpSubKeyAsString,ByValulOptionsAsLong,ByValsamDesiredAsLong,phkResultAsLong)AsLong
PrivateDeclareFunctionRegQueryValueExLib"advapi32"별칭"RegQueryValueExA"(ByValhKeyAsLong,ByVallpValueNameAsString,ByVallpReservedAsLong,ByReflpTypeAsLong,ByValszDataAsString,ByReflpcbDataAsLong)AsLong
PrivateDeclareFunctionRegCloseKeyLib"advapi32"(ByValhKeyAsLong)AsLong
'끊임없는
ConstHKEY_CURRENT_USER=&H80000001
ConstERROR_SUCCESS=0&
PrivateSubcmdCallConnect_Click()
'기본 전화 접속 연결을 시작합니다
쉘"rundllrnaui.dll,RnaDial" GetConnect,vbNormalFocus
EndSub
PublicFunctionGetConnect()AsString
DimhKeyAsLong
DimSubKeyAsString
hKey=HKEY_CURRENT_USER'기본 키
SubKey="원격 액세스"'하위 키
'기본 연결 이름을 가져옵니다
GetConnect=GetRegValue(hKey,SubKey,"기본값")
EndFunction
PublicFunctionGetRegValue(hKeyAsLong,lpszSubKeyAsString,szKeyAsString)AsVariant
OnErrorGoToErrorRoutineErr:
DimphkResultAsLong
DimlResultAsLong
DimszBufferAsString
DimlBuffSizeAsLong
'버퍼 생성
szBuffer=공간(255)
lBuffSize=길이(szBuffer)
'등록키를 열어주세요
RegOpenKeyExhKey,lpszSubKey,0,1,phkResult
'쿼리 결과
lResult=RegQueryValueEx(phkResult,szKey,0,0,szBuffer,lBuffSize)
'등록키 닫기
RegCloseKeyphk결과
'결과 반환
IflResult=ERROR_SUCCESS그러면
GetRegValue=왼쪽(szBuffer,lBuffSize-1)
또 다른
GetReg값=""
종료
종료 기능
오류루틴오류:
GetReg값=""
EndFunction
위 프로그램은 WIN98 및 VB6.0에서 디버깅되었습니다. ->