我有一个写的cab包,在ie上点击时调用cab中的一个方法,在ROT中加入一个对象,不关ie可以用GetObject(,""thtf.myRot")可以得到 ROT中放的对象,可关了ie就得不到了,ROT的对象不是跨进程的吗?需要什参数Private Const ACTIVEOBJECT_STRONG = 0
Private Const ACTIVEOBJECT_WEAK = 1
Private Declare Function CLSIDFromProgID Lib "ole32.dll" (ByVal ProgID As Long, rclsid As GUIDs) As Long
Private Declare Function CoDisconnectObject Lib "ole32.dll" (ByVal pUnk As IUnknown, pvReserved As Long) As Long
Private Declare Function RegisterActiveObject Lib "oleaut32.dll" (ByVal pUnk As IUnknown, rclsid As GUIDs, ByVal dwFlags As Long, pdwRegister As Long) As Long
Private Declare Function RevokeActiveObject Lib "oleaut32.dll" (ByVal dwRegister As Long, ByVal pvReserved As Long) As LongPublic Sub runExcel(Optional path_ As String = "")
Dim myRot_
On Error GoTo l
 Set myRot_ = GetObject(, "thtf.myRot")
GoTo l1l:
 Set myRot_ = New myRot
  Call addRot("thtf.myRot", myRot_)
l1:
'......
End SubPublic Sub addRot(strName As String, up)
  Dim mGuid As GUIDs
    Dim lp As Long
     OLEInstance = 0    lp = CLSIDFromProgID(StrPtr(strName), mGuid)
         If lp = 0 Then
        lp = RegisterActiveObject(up, mGuid, ACTIVEOBJECT_WEAK, OLEInstance)
    End If
End Sub
对象ROT

解决方案 »

  1.   

    一关IE 用IROTVIEW也找不到对象对应的SID了
      

  2.   

     myRot 的Class_Initialize也没有调用
      

  3.   

    ROT只是接口而已,实现接口的代码都不运行了,接口当然没用了。
    要在页面关闭之后继续使用对象的话,把对象移动到一个单独的进程里面去。
      

  4.   


    浏览器启动了一个Excel,要得到Excel进程的Application,现在是如果是起了多个Excel进程的话通过getObject(,"Excel.Appliction") 得到的不一定是我想用的那个Appcation,所以我想创建一个变量存放加载了插件的Application 让Excel和IE都能访问,看了些资料放在ROT中。那个对象其实在Excel进程中存在的,不知到怎么让IE访问
      

  5.   

    我二了,对象放入ROT的方法在Excel的方法里调用,关IE后对象就不会从ROT中移除了。只要不关Excel下一次IE打开还能得到对象,主要是不知道ROT只是个接口,多谢提醒