سؤال

أحاول التعامل مع Winsock_Connect الحدث (في الواقع أنا في حاجة إليها في Excel macro) باستخدام التعليمات البرمجية التالية:

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_Connect فرعي على الرغم من Winsock1.الدولة "متصل".أريد أن استخدام معيار MS مكتبة لأنني لم يكن لديك حقوق إدارية على جهاز الكمبيوتر الخاص بي وأنا لست قادرة على تسجيل بعض مكتبات مخصصة.أي شخص يمكن أن يقول لي أين أنا على خطأ ؟

هل كانت مفيدة؟

المحلول

هل أنت عالق باستخدام MSWinsock?
هنا هو الموقع/البرنامج التعليمي باستخدام مخصص winsock الكائن.

أيضا...تحتاج إلى تعلن Winsock1 WithEvents داخل "الطبقة" الوحدة النمطية:

Private WithEvents Winsock1 As Winsock

وأخيرا تأكد من إشارة winsock ocx التحكم.
أدوات -> المراجع -> تصفح -> %النظام لتشديد أنسجة الجلد%\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
...
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top