我在DLL中调用Microsoft internet Transfer Control6.0(sp4)控件, 此控件有一个StateChanged(ByVal State As Integer)事件, 在DLL中怎么才能调用!

解决方案 »

  1.   

    解决方案如下:
    1.在Dll工程的Component中添加Microsoft internet Transfer Control6.0(sp4)控件。
    2.在类模块中如下申明变量
       dim WithEvents XInet as Inet
    3.在General下拉框中选择XInet。
    现在你可以看到
      Private Sub XInet_StateChanged(ByVal State As Integer)  End Sub
    这就是你处理该事件的地方。
    谢谢。
      

  2.   

    如楼上所说,使用带withEvents的DIM,有时定义些东东会有些很好玩 的东东发现的/:D
      

  3.   

    谢谢hiker_lx() 但我照你的做,但还是不行,我把代码贴出来吧Dim inetObj As New Inet
    Private myState As VariantDim WithEvents XInet As Inet
    Public Event onStateChanged()
    Public Sub uploadFile(dataStr As Variant)
     inetObj.URL = "http://10.17.45.148:8080/acxml.jsp?guid=123456"
     inetObj.Execute , , dataStrEnd Sub
    Public Property Get State() As Variant
     State = myState
    End Property
    Private Sub XInet_StateChanged(ByVal State As Integer)
       myState = State
       Debug.Print State
    End Sub
      

  4.   

    谢谢hiker_lx()  
    我终于解决了
    下面我把代码贴出来Private myState As Variant
    Dim WithEvents XInet As InetPublic Sub uploadFile(dataStr As Variant)
     Set XInet = New Inet
     XInet.URL = "http://10.17.45.148:8080/acxml.jsp?guid=123456"
     XInet.Execute , , dataStr
     
    End SubPublic Property Get State() As Variant
     State = myState
    End Property
    Private Sub XInet_StateChanged(ByVal State As Integer)
       myState = State
       Debug.Print State
    End Sub
      

  5.   

    你申明了两个XInet,InetObj,其中只有一个XInet可以处理事件。从你的程序看,你好象不需要InetObj。原则是:申明处理事件的那个实例,才能处理事件。为了简单做法:
    1.dim WithEvents InetObj as Inet(不使用New操作符)
    2.在程序开始的地方  Set InetObj=new Inet
    3.象处理XInet_StateChanged一样处理InetObj_StateChanged。
    3.删除所有XInet。