MSWINSOCK.WINSOCK 이벤트 처리
문제
다음 코드를 사용하여 Winsock_connect 이벤트 (실제로 Excel 매크로에서 필요)를 처리하려고합니다.
Dim Winsock1 As Winsock 'Object type definition
Sub Init()
Set Winsock1 = CreateObject("MSWinsock.Winsock") 'Object initialization
Winsock1.RemoteHost = "MyHost"
Winsock1.RemotePort = "22"
Winsock1.Connect
Do While (Winsock1.State <> sckConnected)
Sleep 200
Loop
End Sub
'Callback handler
Private Sub Winsock1_Connect()
MsgBox "Winsock1::Connect"
End Sub
그러나 Winsock1.state는 "연결된"이지만 Winsock1_Connect 서브 루틴으로 가지 않습니다. PC에 관리 권한이없고 일부 사용자 정의 라이브러리를 등록 할 수 없기 때문에 Standard MS 라이브러리를 사용하고 싶습니다. 아무도 내가 틀린 곳을 말해 줄 수 있습니까?
해결책
mswinsock을 사용하여 붙어 있습니까?
여기 사용자 정의 Winsock 객체를 사용하는 사이트/튜토리얼입니다.
또한 ... Winsock1을 선언해야합니다 Withevents "클래스"모듈 내에서 :
Private WithEvents Winsock1 As Winsock
마지막으로 Winsock OCX 컨트롤을 참조하십시오.
도구 -> 참조 -> 찾아보기 -> %sysem % mswinsck.ocx
다른 팁
에 대한 문서 Winsock 컨트롤:
http://msdn.microsoft.com/en-us/library/aa228119%28v=vs.60%29.aspx
여기서 예 :
http://support.microsoft.com/kb/163999/en-us
vbscript에서 이벤트 처리와 함께 짧은 예 :
Dim sock
Set sock = WScript.CreateObject("MSWinsock.Winsock","sock_")
sock.RemoteHost = "www.yandex.com"
sock.RemotePort = "80"
sock.Connect
Dim received
received = 0
Sub sock_Connect()
WScript.Echo "[sock] Connection Successful!"
sock.SendData "GET / HTTP/1.1"& vbCrLf & "Host: " & sock.RemoteHost & vbCrLf & vbCrLf
End Sub
Sub sock_Close()
WScript.Echo "[sock] Connection closed!"
End Sub
Sub sock_DataArrival(Byval b)
Dim data
sock.GetData data, vbString
received = received + b
WScript.Echo "---------------------------------------"
WScript.Echo " Bytes received: " & b & " ( Total: " & received & " )"
WScript.Echo "---------------------------------------"
WScript.Echo data
End Sub
'Wait for server close connection
Do While sock.State <> 8
rem WScript.Echo sock.State
WScript.Sleep 1000
Loop
출력은 다음과 같습니다.
cscript /nologo sockhttp.vbs
[sock] Connection Successful!
-------------------------------
Bytes received: 1376 ( Total: 1376 )
-------------------------------
HTTP/1.1 200 Ok
Date: Mon, 08 Dec 2014 15:41:36 GMT
Content-Type: text/html; charset=UTF-8
Cache-Control: no-cache,no-store,max-age=0,must-revalidate
Expires: Mon, 08 Dec 2014 15:41:36 GMT
...
제휴하지 않습니다 StackOverflow