VB6.0을 사용하여 전화 걸기 구현
이
5는 TEXT1 TEXT2 TIMER1 TIMER2 COMMAND1을 제어합니다.
타이머1 간격=1000 설정
타이머2 간격=500
text1.text=1
text2.text=설정하려는 값은 초입니다.
Private Sub Command1_Click()
if text1>text2 then 당신이 원하는 것은 연결을 끊거나 컴퓨터를 종료하는 것입니다.
End Sub
Private Sub Timer1_Timer()
Text1 = Text1 + 1 p>
p>
구독 종료
비공개 구독 타이머2_Timer()
Command1_Click
구독 종료
또는. ..
JETCAR(현재 FLASHGET), GO! ZILLA 등은 모두 전화 접속 인터넷 기능을 갖추고 있습니다. 그렇다면 자신의 애플리케이션에서 위의 기능을 어떻게 구현합니까? 이 기사에서는 RAS 호출을 사용하여 직접 작성한 응용 프로그램에서 전화 접속 인터넷 액세스를 구현하는 방법을 소개합니다.
1. 전화 접속 네트워크와 관련된 구조 및 기능
1. RASDIALPARAMS95 구조는 다음과 같습니다.
Public Type RASDIALPARAMS95
긴 dwSize
szEntryName(RAS95_MaxEntryName) 바이트
szPhoneNumber(RAS95_MaxPhoneNumber) 바이트
szCallbackNumber(RAS95_MaxCallbackNumber) 바이트
szUserName(UNLEN) 바이트
szPassword(PWLEN) 바이트
szDomain(DNLEN) 바이트
종료 유형
그 중 dwSize는 구조체의 크기를 바이트 단위로 나타냅니다. szEntryName은 WINDOWS의 전화 접속 네트워크에 있는 연결 아이콘의 작은 텍스트인 원격 액세스 항목 이름을 나타냅니다. szEntryName 매개 변수는 원격 연결을 설정하기 위해 첫 번째 유효한 모뎀만 설정되었음을 나타내는 빈 문자열입니다. szPhoneNumber는 전화할 번호를 나타냅니다. szEntryName이 비어 있으면 zPhoneNumber는 비어 있을 수 없습니다. szCallbackNumber는 일반적으로 비어 있는 콜백 번호를 나타냅니다. szUserName은 원격 액세스를 설정하는 데 사용되는 사용자 이름입니다. szPassword는 원격 액세스를 설정하기 위한 비밀번호입니다. szDomain은 원격 액세스 사용자 이름 및 비밀번호 인증을 위한 도메인 이름입니다. szDomain을 공백으로 설정하여 원격 액세스 서버도 이 도메인 이름의 구성원임을 나타냅니다.
2. RASDIAL 함수의 API 선언은 다음과 같습니다.
공개 선언 함수 RasDial Lib "RasApi32.DLL" 별칭 "RasDialA" (lpRasDialExtensions As Any, ByVal lpszPhonebook As String, lprasdialparams As Any, ByVal dwNotifierType As Long, lpvNotifier As Long, lphRasConn As Long
RASDIAL 함수는 RAS 클라이언트와 RAS 서버 간의 연결을 설정하는 데 사용됩니다.
각 매개변수에 대한 설명은 다음과 같습니다.
WINDOWS95/98에서는 lpRasDialExtensions 매개변수가 무시됩니다.
lpszPhonebook 매개변수는 WINDOWS95/98에서도 무시됩니다.
lprasdialparams 매개변수는 RAS 연결 매개변수 값을 포함하는 RASDIALPARAMS 구조 변수를 가리킵니다.
dwNotifierType 매개변수는 lpvNotifier 매개변수의 특성을 나타내는 데 사용됩니다. lpvNotifier가 NULL이면 dwNotifierType의 값은 무시됩니다. lpvNotifier가 NULL이 아니면 dwNotifierType은 다음 값 중 하나여야 합니다.
(1).0XFFFFFFFF------lpvNotifier가 매개변수는 프로세스 알림 메시지를 수신하기 위한 창 핸들입니다.
(2).0----------------lpvNotifier가 RASDIALFUNC 콜백 함수를 가리킨다는 것을 나타냅니다. /p>
(3).1----------------lpvNotifier가 다음 RASDIALFUNC1 콜백 함수를 가리킨다는 점을 지적합니다.
lpvNotifier 매개변수는 RASDIAL 이벤트 알림을 수신하는 창이나 콜백 함수를 가리키는 데 사용됩니다. 해당 특성은 dwNotifierType 매개변수에 의해 결정됩니다.
(1) NULL은 비동기 통신을 의미합니다. 즉, RASDIAL은 각 이벤트에 대해 창 메시지를 보내거나 콜백 함수를 호출합니다. RASDIAL 함수는 즉시 윈도우를 통해 연결을 설정하거나 콜백 함수를 호출하여 프로세스와 통신합니다.
(2) lpvNotifier가 NULL이면 동기 통신을 의미합니다. 즉, RASDIAL 함수는 연결 설정이 완료되거나 실패한 후에만 반환됩니다.
lphRasConn 매개변수는 HRASCONN 변수를 가리키며 RASDIAL 함수를 호출하기 전에 lphRasConn을 NULL로 설정해야 합니다. RASDIAL 함수 호출이 성공하면 lphRasconn은 RAS 연결 핸들을 배치합니다.
3. RASHANGUP 함수의 API 선언은 다음과 같습니다.
공개 선언 함수 RasHangUp Lib "RasApi32.DLL" 별칭 "RasHangUpA"(ByVal hRasConn As Long)
p>
RASHANGUP 함수는 RAS 연결을 끊는 데 사용됩니다. 해당 매개변수 hRasConn은 RAS 연결을 가리키는 핸들입니다.
2. VB6.0을 사용하여 RAS 전화 접속 인터넷 액세스 프로세스를 실현합니다.
새 프로젝트를 만들고 이름을 RasDial로 지정한 후 프로젝트에 다음 항목을 추가합니다.
1. 새 양식 Form1을 만든 후 다음 구성 요소를 양식에 추가합니다.
("연결" 버튼 이름은 Ras_Dial, "전화 끊기" 버튼 이름은 Ras_HangUp, "종료" 버튼 이름은 "취소"입니다.
텍스트 3개 상자 이름은 PhoneNumber, UserName, PassWord입니다.)
2. 연결 버튼을 두 번 클릭하고 다음 코드를 추가합니다:
Private Sub Ras_Dial_Click()
온도를 길게 설정하세요
If PhoneNumber.Text = "" Or UserName.Text = "" Or PassWord.Text = "" Then
temp = MsgBox("당신은 하지 않았습니다 유효한 다이얼 번호를 입력하십시오. 네트워크 매개변수.
", vbOKOnly, "오류")
Sub 종료
End If
temp = AddConnection("", PhoneNumber.Text, "", UserName.Text , PassWord.Text, "")
케이스 임시 선택
케이스 ERROR_PORT_ALREADY_OPEN: temp = MsgBox("오류, 포트가 이미 열려 있습니다!", vbOKOnly, "오류")
사례 ERROR_UNKNOWN: temp = MsgBox("알 수 없는 오류!", vbOKOnly, "오류")
사례 ERROR_REQUEST_TIMEOUT: temp = MsgBox("오류, 요청 시간이 초과되었습니다!", vbOKOnly, "오류")
케이스 ERROR_PASSWD_EXPIRED: temp = MsgBox("오류, 비밀번호를 입력하지 않았습니다!", vbOKOnly, "오류")
케이스 ERROR_NO_DIALIN_PERMISSION: temp = MsgBox( "오류, 발신음 없음!", vbOKOnly, "오류")
사례 ERROR_SERVER_NOT_RESPONDING: temp = MsgBox("오류, 전화 접속한 원격 컴퓨터가 응답하지 않았습니다!", vbOKOnly, "오류")
케이스 ERROR_UNRECOGNIZED_RESPONSE: temp = MsgBox("오류, 알 수 없는 응답!", vbOKOnly, "오류")
케이스 ERROR_NO_RESPONSES: temp = MsgBox("오류, 응답이 없습니다!", vbOKOnly, "오류" )
케이스 ERROR_DEVICE_NOT_READY: temp = MsgBox("오류, 장치가 준비되지 않았습니다!", vbOKOnly, "오류")
케이스 ERROR_LINE_BUSY: temp = MsgBox ("오류, 통화 중입니다!" ", vbOKOnly, "오류")
케이스 ERROR_NO_ANSWER: temp = MsgBox("오류, 응답 신호가 없습니다! ", vbOKOnly, "오류")
케이스 ERROR_NO_CARRIER: temp = MsgBox("오류, 캐리어 신호가 없습니다!", vbOKOnly, "오류")
케이스 ERROR_NO_DIALTONE: temp = MsgBox ("오류, 발신음 없음!", vbOKOnly, "오류")
사례 ERROR_AUTHENTICATION_FAILURE: temp = MsgBox("사용자 이름과 비밀번호에 오류가 있습니다!", vbOKOnly, "오류")
Case ERROR_PPP_TIMEOUT: temp = MsgBox("PPP 액세스 시간이 초과되었습니다.
", vbOKOnly, "Error")
선택 종료
Sub 종료
3. 끊기 버튼을 두 번 클릭하고 다음 코드를 추가합니다. p>
개인 서브 Ras_HangUp_Click()
긴 온도의 희미한 온도
temp = RasHangUp(hRasConn)
Sub 끝
4. 종료 버튼을 두 번 클릭하고 다음 코드를 추가합니다:
Private Sub Cancel_Click()
Unload Me
End Sub
5. 마지막으로 Ras_Dial이라는 새 모듈을 만들고 다음 코드를 추가합니다:
Option Explicit
Public hRasConn As Long 'RAS 호출을 가리키는 전역 핸들 정의
Public Const APINULL = 0&
Public Const UNLEN = 256
Public Const DNLEN = 15
Public Const PWLEN = 256
Public Const RAS95_MaxPhoneNumber = 128
Public Const RAS95_MaxEntryName = 256
Public Const RAS95_MaxCallbackNumber = RAS95_MaxPhoneNumber
Public Type RASDIALPARAMS95
dwSize As 긴
szEntryName(RAS95_MaxEntryName) 바이트
szPhoneNumber(RAS95_MaxPhoneNumber) 바이트
szCallbackNumber(RAS95_MaxCallbackNumber) 바이트
szUserName(UNLEN ) 바이트로
szPassword(PWLEN) 바이트로
szDomain(DNLEN) 바이트로
종료 유형
'**** ******** **********************
'* RAS 호출 오류 코드*
'******** ****************************
공공 구성 NOT_SUPPORTED = 120& p>
공공 구성 RASBASEERROR = 600&
공공 구성 SUCCESS = 0&
공공 구성 ERROR_PORT_ALREADY_OPEN = (RASBASEERROR + 2)
공공 구성 ERROR_UNKNOWN = ( RASBASEERROR + 35)
공공 구성 ERROR_REQUEST_TIMEOUT = (RASBASEERROR + 38)
공공 구성 ERROR_PASSWD_EXPIRED = (RASBASEERROR + 48)
공공 구성 ERROR_NO_DIALIN_PERMISSION = (RA
SBASEERROR + 49)
공공 구성 ERROR_SERVER_NOT_RESPONDING = (RASBASEERROR + 50)
공공 구성 ERROR_UNRECOGNIZED_RESPONSE = (RASBASEERROR + 52)
공공 구성 ERROR_NO_RESPONSES = (RASBASEERROR + 60)
공공 구성 ERROR_DEVICE_NOT_READY = (RASBASEERROR + 66)
공공 구성 ERROR_LINE_BUSY = (RASBASEERROR + 76)
공공 구성 ERROR_NO_ANSWER = (RASBASEERROR + 78)
공공 구성 ERROR_NO_CARRIER = (RASBASEERROR + 79)
공공 구성 ERROR_NO_DIALTONE = (RASBASEERROR + 80)
공공 구성 ERROR_AUTHENTICATION_FAILURE = (RASBASEERROR + 91)
p>p>
공용 상수 ERROR_PPP_TIMEOUT = (RASBASEERROR + 118)
'************************ ******* ******
'* RAS API 명령문*
'**************** ************** ***********
공개 선언 함수 lstrcpy Lib "kernel32" 별칭 "lstrcpyA" (lpString1 As Any , ByVal lpString2 As String) 공개 선언 함수 RasDial Lib "RasApi32.DLL" 별칭 "RasDialA" (lpRasDialExtensions As Any, ByVal lpszPhonebook As String, lprasdialparams As Any, ByVal dwNotifierType As Long, lpvNotifier As Long, lphRasConn As Long
공개 선언 함수 RasHangUp Lib "RasApi32.DLL" 별칭 "RasHangUpA"(ByVal hRasConn As Long)
공개 함수 AddConnection(strNewEntryName을 문자열로, strNewPhoneNumber를 문자열로, strNewCallbackNumber를 문자열로, strNewUsername을 문자열로, strNewPassword를 문자열로, strNewDomain을 문자열로) 정수로
긴 lngRetCode를 길게
긴 lngRetLstrcpy를 길게
흐릿하다
lngRetHangUp As Long
Dim lprasdialparams As RASDIALPARAMS95
lprasdialparams.dwSize = 1052 'WINDOWS95/98에서는 dwSize를 1052로 설정해야 합니다
'lstrcpy 함수를 사용하세요 문자열을 BYTE 배열에 복사하려면
lngRetLstrcpy = lstrcpy(lprasdialparams.szEntryName(0), strNewEntryName)
lngRetLstrcpy = lstrcpy(lprasdialparams.szPhoneNumber(0), strNewPhoneNumber)
p>lngRetLstrcpy = lstrcpy(lprasdialparams.szCallbackNumber(0), strNewCallbackNumber)
lngRetLstrcpy = lstrcpy(lprasdialparams.szUserName(0), strNewUsername)
lngRetLstrcpy = lstrcpy(lprasdialparams .szPassword (0), strNewPassword)
lngRetLstrcpy = lstrcpy(lprasdialparams.szDomain(0), strNewDomain)
'동기 통신을 사용합니다
Screen.MousePointer = vbHourglass
hRasConn = 0 '
lngRetCode = RasDial(ByVal APINULL, vbNullString, lprasdialparams, APINULL, ByVal APINULL, hRasConn)
Screen.MousePointer = vbDefault
p>
'오류가 있는지 테스트
If lngRetCode Then
lngRetHangUp = RasHangUp(hRasConn)
End If
AddConnection = lngRetCode
함수 종료
Public Sub RemoveConnection(H_RasConn As Long)
RasHangUp(hRasConn) 호출
End Sub
6. 마지막으로 애플리케이션을 컴파일하고 생성하면 자체 애플리케이션에서 전화 접속 인터넷 액세스를 실현하게 됩니다. 이 프로그램은 PWIN98, VB6.0 환경에서 컴파일되어 전달됩니다.