6

我们用上面列出的微软补丁升级了我们的机器,现在遇到了一些 winsock 控件的问题。在继续使用新的组件库时,我们面临两个问题:

  • 我们正在使用 Form.Controls.Add(...) 动态创建 Winsock 控件。使用新的 dll,它给了我们一个运行时错误 731,说明我们需要添加许可证。

此问题已通过在添加控件之前添加一行 License.Add(PrgID of the control) 得到解决。

现在的问题是,当我们尝试将此控件设置为 mWinsock 类型的对象时,我们会收到运行时错误类型不匹配。有什么想法吗?

4

4 回答 4

2

请查看“Visual Basic 6.0 Service Pack 6 运行时扩展文件的累积更新汇总说明”。

http://support.microsoft.com/kb/957924/

此 2008 年 12 月 30 日更新应删除并替换有故障的 12 月 9 日安全更新。它似乎同时处理 926857 和 957924。

958369 似乎是针对同一错误更新(12 月 9 日)的 Visual FoxPro 知识库文章。VFP 使用许多 VB 控件。

于 2009-01-19T13:48:07.780 回答
1

您可能需要将控件添加到工具箱中,以便 VB6 项目和窗体具有对其的正确引用。即使您在设计时实际上没有在表单上也需要这样做。

参考 VB 可能没有在运行时解析控件的方法和属性所需的所有信息

于 2008-12-18T18:16:22.780 回答
0

由于接口签名已更改,您必须从项目中删除组件引用,完全保存并关闭 VB6,注销旧控件,从补丁中注册新版本,重新打开项目并重新添加组件。如果您这样做你很可能会失去对没有安装补丁的机器的支持(或者你必须将它作为安装包的一部分安装)

当然,如果更容易,您始终可以将引用声明为“作为对象”,但您的性能会下降一点,并且您将失去对 WithEvents 的支持

于 2008-12-26T08:01:10.267 回答
0

在 VB6 中动态创建非内在控件时,我遇到了类似的问题。也许 Winsock 不再被认为是内在的。尝试将变量声明为 VBControlExtender 而不是 Winsock,如下所示:

Option Explicit
Dim WithEvents objExt As VBControlExtender

Private Sub LoadControl()
   Licenses.Add "MSWinsockLib.Winsock", "xydsfasfjewfe"
   Set objExt = Controls.Add("MSWinsockLib.Winsock", "myCtl")
End Sub

Private Sub extObj_ObjectEvent(Info As EventInfo)
   ' Program the events of the control using Select Case.
   Select Case Info.Name
     Case "DataArrival"
       ' Do stuff
   End Select
End Sub

有关详细信息,请参阅此 MSDN 文章

于 2009-09-02T19:58:06.683 回答