VB6动态添加Winsock控件

时间:2011-06-27 16:19:43

标签: dynamic vb6 controls winsock add

我正在使用以下代码动态创建WinSock控件,并使用它连接到服务器:

Licenses.Add "MSWinsock.WinSock.1"
Controls.Add "MSWinsock.WinSock.1", "s1"

s1.RemoteHost = "irc.netsplit.de"
s1.RemotePort = "6667"
s1.Connect

但是我得到“错误424:需要对象。”,突出显示“s1.RemoteHost ...”,我该如何解决这个问题?应该从之前的行添加控件吗?

感谢。

3 个答案:

答案 0 :(得分:2)

最简单的方法是将套接字控件转储到表单中,以消除导入许可证的需要。得到严格的打字,然后;

Controls.Add "MSWinsock.WinSock.1", "s1"

Dim s1 As Winsock: Set s1 = Controls("s1")
s1.RemoteHost = "irc.netsplit.de"

或许array of sockets可能是您的追随者?

答案 1 :(得分:1)

抱歉我的英语不好......

您可以创建一系列WinSock控件。为此,您需要添加一个控件来形成并将其index属性赋值为0.然后您可以使用如下语句:

Load WinSock1(5)

其中WinSock1是控件的名称(之前添加到表单中),5是新控件的数组中的索引(它可以是变量)。这意味着您拥有相同控件的多个“副本”,您可以单独操作每个“副本”。之后,您可以使用此控件进行操作:

WinSock1(5).LocalPort = 80
Winsock1(5).Listen

并回复此类事件:

Private Sub WinSock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
 WinSock1(Index).Close
 WinSock1(Index).Accept(requestID)
End Sub

在这种情况下,索引是数组中控件的索引,因此您不需要自己跟踪控件。

希望这会有所帮助......玩得开心! :)

答案 2 :(得分:0)

您没有声明s1的变量。您只是将控件添加到具有该名称的表单中。您可以使用以下方法检索它:

Dim s1 As Object
s1 = Controls("s1")

我的VB6很生疏,所以我不确定,这是Object,你可以有意义地使用它。