如何将使用完后的进程内COM的DLL文件从内存中安全卸载???? 我使用CoFreeUnusedLibraries,它却把系统的组件也释放了。怎么办 (100分

  • 主题发起人 主题发起人 roshui
  • 开始时间 开始时间
R

roshui

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将使用完后的进程内COM的DLL文件从内存中安全卸载???? 我使用CoFreeUnusedLibraries,它却把系统的组件也释放了。怎么办 (100分)<br />1、如何通过COM组件的实例或者COM组件实现的接口取得一个COM组件的ProgID?
2、Delphi 中,如何实现进程内COM组件的单实例(Singleton)模式?
 
1.好象没有办法,没听说有ProgID这种运行时信息。
2.类厂以ciSingleInstance方式创建COM组件就可以了.
 
谢谢xeen!
我还想问一下,如何在使用完一个COM组件及时卸载掉它?
我用引用计数好像不行,用turbopower memory sleuth 3 监测是发现,只有在我退出引用程序时,
我的COM组件的dll才被卸载掉。
 
呵呵,你可以强制使该COM对象被关闭,比如interpaceI:=nil;
 
to 张无际
你的办法不行。
 
第一个问题还有别的办法吗?
 
读注册表.
COM在最开始的时候有IUnkown接口有4个函数,最后一个就是楼主要的,后来为了
精简,出掉了这个函数。
 
你的意思是我去遍历注册表中的com组件的注册信息,不要吧?
 
我回去看看 ,应该有这个类的函数,
 
我还想问一下,如何在使用完一个COM组件及时卸载掉它?
我用引用计数好像不行,用turbopower memory sleuth 3 监测是发现,只有在我退出引用程序时,
我的COM组件的dll才被卸载掉。
 
后退
顶部