当前位置:编程学习 > VB >>

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 ,  网络编程
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,