无窗体的DLL使用Winsock控件 怎么才能使用Winsock 的事件??

china_boys 2005-11-29 09:58:06
我用
Set Winsock1 = CreateObject("MSWinsock.Winsock")
创建 成功 可是使用 Winsock 发网络信息,但没有事件触发
因为我想 读取Winsock1_DataArrival 事件里的信息.


在有FROM 窗体的情况下可以使用事件接受到.但现在我是无窗体的.

我用 Private WithEvents Winsock1 As Winsock 这句倒是可以加入事件,
可不知道后面怎么用,死活就是不触发Winsock1_DataArrival

哪位 有好的方法 获得事件啊?
...全文
409 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
china_boys 2005-12-07
  • 打赏
  • 举报
回复
因为无窗体无法停留 等待,所以 用循环DoEvents
的方式,实现不终止.可以接受到事件.


Do
DoEvents
If QEvents = True Then Exit Do
Loop Until False

可问题又出现了 CPU 持续 50% 太高了,

循环里面如果放SLEEP 就收不到事件了.

5555555555555555555555555 怎么办啊 ??
china_boys 2005-12-05
  • 打赏
  • 举报
回复
up
china_boys 2005-12-02
  • 打赏
  • 举报
回复
我能创建对象,也能发送数据到 目标地址,就是不触发事件,

我要接受数据的,,急死我啦~~~~~~~~~~~~~~~~~ 我的计算机上已经装了VB6 SP5 mswinsck这个控件 在窗体里 也有事件返回,就是在无窗体的时候 不能触发 Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) 等事件,, 急死我啦~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~55555555555555555555
zou19820704 2005-12-02
  • 打赏
  • 举报
回复
安装上bttp://activex.microsoft.com/controls/vb6/mswinsck.cab
这个文件,就可以reateobject了
不过ProgID我忘记了。你查一下注册表就知道了
china_boys 2005-12-02
  • 打赏
  • 举报
回复
the correct way to use the Winsock control in a class module is as follows:

go to project -> REFERENCES and then click 'Browse' - search for and double-click on your Winsock ocx file. so we are actually setting a reference to the control rather than just adding it through project -> components.

now in your class you can do something like this:

Private WithEvents wSock As Winsock

Private Sub Class_Initialize()
Set wSock = New Winsock
End Sub

Private Sub Class_Terminate()
Set wSock = Nothing
End Sub

我用这个方法 事件就是不触发 为什么呀 谁能帮帮我啊 5555555555555555555555555555555555555
china_boys 2005-12-01
  • 打赏
  • 举报
回复
up
aijie099 2005-11-30
  • 打赏
  • 举报
回复
如果用VB写的dll就没有必要,因为并不能达到多线程.还不如写到窗体里.
VB写的dll它也是在同一个进程里,所以窗体共享进程里的.
china_boys 2005-11-30
  • 打赏
  • 举报
回复
zou19820704(国际海员)

Set Winsock1 = Me.Controls.Add("VB.Winsock", "Winsock1")
这句 出错.
Invalid class string.
Looking for object with ProgID: VB.Winsock
=====================
我的是COM+程序 需要订阅,并且是无状态的程序. 不能用窗体.
zou19820704 2005-11-30
  • 打赏
  • 举报
回复
下面操作就看你自己的了!!呵呵
zou19820704 2005-11-30
  • 打赏
  • 举报
回复
Private WithEvents Winsock1 As Winsock
Set Winsock1 = Me.Controls.Add("VB.Winsock", "Winsock1")
Winsock1.LocalPort = 100
WM_JAWIN 2005-11-30
  • 打赏
  • 举报
回复
还要这句呢
set Winsock1= 新建对象
Dickson 2005-11-30
  • 打赏
  • 举报
回复
同意楼上。
如果你害怕窗体被看到,app.taskVisible=False
northwolves 2005-11-29
  • 打赏
  • 举报
回复
maybe the following will help you.

http://www.vbip.com/winsock-api/csocket-class/CSocket-1.0.12.zip
daisy8675 2005-11-29
  • 打赏
  • 举报
回复
你为什么不加入一个应藏的窗体呢?

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧