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?

War es hilfreich?

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
...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top