MSWinsock.Winsock Ereignis in VisualBasic- Handhabung
Frage
Ich versuche Winsock_Connect Ereignis zu behandeln (Eigentlich muss ich es in Excel-Makro) mit dem folgenden Code:
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
Aber es geht nie Unterprogramm zu Winsock1_Connect obwohl Winsock1.State wird „Verbunden“. Ich möchte Standard-MS-Bibliothek verwenden, weil ich nicht über Administratorrechte auf meinem PC tun, und ich bin nicht in der Lage, einige benutzerdefinierten Bibliotheken zu registrieren. Kann jemand mir sagen, wo ich falsch?
Lösung
Sind Sie mit MSWinsock stecken?
Hier ist eine Website / tutorial einen benutzerdefinierten Winsock-Objekt.
Auch ... Sie müssen Winsock1 Withevents innerhalb eines "Class" Modul deklarieren:
Private WithEvents Winsock1 As Winsock
Und schließlich, stellen Sie sicher, dass Sie die Winsock ocx Steuerung verweisen.
Extras -> Referenzen -> Katalog ->% SYSEM% \ MSWINSCK.OCX
Andere Tipps
Dokumentation über Winsock Control :
http://msdn.microsoft.com/en -US / library / aa228119% 28v = vs.60% 29.aspx
Beispiel hier:
http://support.microsoft.com/kb/163999/en-us
Mein kurzes Beispiel mit Ereignisse in VBscript Handhabung:
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
Ausgabe wird sein:
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
...