MSWinsock.Winsock التعامل مع الحدث في visual basic
سؤال
أحاول التعامل مع 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
...