怎样响应用CreateObject创建的对象的事件,找了好久一直未果,请高手指点,谢谢!

解决方案 »

  1.   

    在类模块或者窗体内声明:private withevents m_objThis as your_type ' 要使用的类型public sub Test()
        set m_objThis = CreateObject(progId)
    end subprivate sub m_objThis_xxx()
       ...
    end sub
      

  2.   

    之所以要用CreateObject就是想动态创建对象而不想在vb中使用引用,也就是引用your_type,有其它办法吗?
      

  3.   

    下面是代码,对象的方法和属性可以正常使用,但无法响应事件Dim mySock As ObjectPrivate Sub Form_Load()
        Set mySock = CreateObject("MSWinsock.Winsock")           'Microsoft WinSock Control, version 6.0
        mySock.Protocol = 0     'Tcp协议
    End Sub'下面的事件无法响应,定义没有问题
    Private Sub mySock_Close()
        Print "服务器已经关闭"
    End Sub
      

  4.   

    如果只是为了使用 Winsock ,大可不必这么做。能引用为何不直接引用?
      

  5.   

    一是为了在ASP中使用Winsock ,二是为了看是否有可行的办法好以后可以用在别处
      

  6.   

    ASP中能不能处理就不知道了。
      

  7.   

    这是刚搜到的一段VBS代码,可行,但不知怎样在vb中使用Set objie=WScript.CreateObject("InternetExplorer.Application","event_") objie.Visible=True MsgBox "请关闭浏览器窗口看看效果!",vbSystemModal Wscript.sleep 6000 MsgBox "现在已经正常关闭了" Sub event_onquit() MsgBox "您确定要关闭浏览器吗?",vbSystemModal End Sub 这段脚本打开了一个IE窗口,然后要求你关闭IE窗口,当你关闭窗口的时候,自动调用事件响应程序。
      

  8.   

    你要在ASP里用恐怕就不行了但如果在EXE里要这么折腾,就可以用这个方案:http://www.m5home.com/blog2/blogview.asp?logID=329&cateID=2这是使用类型库声明你的对象,这样就可以直接定义相应的接口(前期绑定)然后再对这个接口赋值为对象实例.
      

  9.   

    DuiXiang是对象,JieKou是自己定义的接口,在VB中使用
    Public objDll As ObjectPrivate Sub Form_Load()
       
        Set objDll = CreateObject("DuiXiang.JieKou")End Sub在ASP中使用可以嵌入vb代码:
    <%
    dim objDll
    set objDll=Server.CreateObject("DuiXiang.JieKou")
    %>
      

  10.   

    引用的是库里的接口呀.这样的好处是可以编写好事件处理代码,然后使用CreateObject动态建立对象.对象事先没注册也没关系,可以先处理注册之类的问题再创建对象实例.主要是用于程序的强壮性......因为有的对象可能在别人机器没有,那么程序可以给出提示,或者自己处理一下,比如释放相应组件并注册等.....
      

  11.   


    难道你在接口库中就不需要引用 Winsock 吗?
      

  12.   

    是的,不需要引用.接口库里面只是声明了一个"接口",与实际的对象接口相同即可.本来我之前是打算学习ODL语法来自己写,结果发现了EditTlb工具,于是.............PS:库里面还可以声明API,常量,类型等,并不仅仅是用于声明接口......记得那个超级winapi.tlb吧?就是声明了上千个API的库....就这样做的
      

  13.   


    难道你在TLB中就不需要知道Winsock中的接口?
      

  14.   

    需要知道,但不需要引用WINSOCK控件.接口使用EDITTLB工具保存一下即可.这样的话如果CreateObject出错,那么说明目标对象在机器上不存在或未注册,可以有选择地提示用户.
      

  15.   

    TO 阿花:看看这里,方法以及示例加工具都有,帮大家整理了一下:http://topic.csdn.net/u/20081217/00/8bd3078e-cb65-42d4-bb47-0eceb77ae1b9.html