DLL 中实现 dataArrival
看了很久相关的帖子,才决定发帖,请教一下,有的似乎问题和我的一样。问题如下:
我建立 active dll工程,在窗体中使用了winsock的控件。
但由于窗体无法在内存中停留。于是,DLL中控件始终无法触发WinsockClient1_DataArrival
我只能通过延时才能达到获取返回命令的目的。
所有的代码如下:
一:类中代码为:
Public Function get_data()
get_data = telnet_try.ask_data()
'返回接收到的数据,ask_data()是From中的函数
End Function
二:窗口代码为
Private Sub WinsockClient_Close()
With WinsockClient
.Close ' Clear any errors...
.RemotePort = 0
.LocalPort = 0
End With
End Sub
Public Sub WinsockClient_Connect()
Dim ConnectString As String
'connect 时间发生在连接完成后,立刻触发该事件
WinsockClient.SendData "xxx"
Connected = True
'MsgBox "Connected = True"
End Sub
Private Sub WinsockClient_DataArrival(ByVal bytesTotal As Long)
'数据到达触发
'MsgBox "i am WinsockClient_DataArrival"
Dim strData As String
WinsockClient.GetData strData
Open "c:/1.txt" For Append As #1
Print #1, strData
Close #1
End Sub
Public Function ask_data()
With WinsockClient
'检查状态,如果不是关闭,则执行关闭
If .State <> 0 Then
.Close
.RemotePort = 0
.LocalPort = 0
Do
Loop Until .State = 0
End If
.RemoteHost = xxx;
.RemotePort = xxx;
.Connect ' Attempt new connection
Do
DoEvents
Loop Until WinsockClient.State = sckConnected
End With
Sleep 15000
'MsgBox "here"
End Function
三:VBS中的代码:
略去,就是调用了get_data
只有,我执行sleep。文件中才能得到我要的数据。
如何,才能让,我加载dll后,可以如控件一样,等待触发。
也就是,不用窗体去驻留在内存中(或者有更科学的办法将窗体驻留),仍然可以收到服务器的程序?
非常感谢。
--------------------编程问答-------------------- 不懂,帮顶 --------------------编程问答-------------------- 不懂,帮顶 --------------------编程问答-------------------- 看来人气不够啊。自己顶一下了~~ --------------------编程问答-------------------- 为什么窗体不能在内存中驻留啊? --------------------编程问答-------------------- 用show vbmodel不行?一直等待,返回条件为:接收到正确数据 or 超时
补充:VB , 网络编程