2008-09-24 25 views
5

我試圖處理Winsock_Connect事件處理(其實我需要它在Excel宏)使用下面的代碼:MSWinsock.Winsock事件的VisualBasic

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.State已連接」。 我想使用標準的MS庫,因爲我沒有我的電腦的管理權限,我無法註冊一些自定義庫。 有人可以告訴我,我錯了嗎?

回答

3

你使用MSWinsock卡住了嗎?
Here是一個使用自定義winsock對象的網站/教程。

而且......你需要一個 「類」 模塊中聲明爲Winsock1 WITHEVENTS

Private WithEvents Winsock1 As Winsock 

最後,請確保您引用winsock的ocx控件。
工具 - >引用 - >瀏覽 - >%SYSEM%\ MSWINSCK.OCX

+0

鏈接到 '網站/教程' 似乎是下降,可能爲好。 – ctbrown 2015-01-22 19:26:13

0

文檔關於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 
...