Gestion des événements MSWinsock.Winsock dans VisualBasic
Question
J'essaie de gérer l'événement Winsock_Connect (en fait, j'en ai besoin dans une macro Excel) à l'aide du code suivant:
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
Mais cela ne se fait jamais dans le sous-programme Winsock1_Connect bien que Winsock1.State soit "connecté". Je souhaite utiliser une bibliothèque MS standard car je ne dispose pas de droits d'administration sur mon PC et je ne parviens pas à enregistrer certaines bibliothèques personnalisées. Quelqu'un peut-il me dire où je me trompe?
La solution
Êtes-vous coincé sous MSWinsock?
Voici un site / didacticiel utilisant un objet winsock personnalisé.
Aussi ... Vous devez déclarer Winsock1 WithEvents dans une "Classe". module:
Private WithEvents Winsock1 As Winsock
Enfin, assurez-vous de référencer le contrôle winsock ocx.
Outils - > Références - > Parcourir - > % SYSEM% \ MSWINSCK.OCX
Autres conseils
Documentation sur le contrôle Winsock :
http://msdn.microsoft.com/en -us / bibliothèque / aa228119% 28v = vs.60% 29.aspx
Exemple ici:
http://support.microsoft.com/kb/163999/en-us
Mon bref exemple de gestion d'événements dans 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
La sortie sera:
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
...