如何释放TWindowsMediaPlayer控件所占内存?(100分)

  • 主题发起人 主题发起人 wuyaobin
  • 开始时间 开始时间
W

wuyaobin

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用了windows media player9的一个ActiveX控件,在播放了一些文件后想释放它占用的内存,但Free不行,请问怎样才能释放它占用的内存?
 
没有办法的,这是windows系统机制决定的,free只能释放掉很小一部分
但是你下次调用会很快,我的主程序中不会放这些控件,专门做各播放器
在主程序中传递参数给它
 
free后destory
 
destory也没用的
 
release使引用计数减小,试试看...
 
会自动释放的,除非它有内存泄漏
 
activex都有引用计数,引用计数为0的时候,就自动释放
 
我试过这样,将Twindowsmediaplayer放到另一窗口,需要的时候动态创建窗体,当不需要时release这个窗体,但这样也不能释放使用WindowsMediaPlayer后所占用的内存。
但“佳禾网络电视”这个软件可以,就不知怎么释放的。
 
木子播放器也是delphi写的,也不可以
释放掉一部分而已,特别是realaudio控件,占用资源惊人
MediaPlayer还可以,释放后能占用200k左右资源
不信可以用progressView看看程序是否依然调用了相关的dll

to:爱元元的哥哥
你是老大,能不能看看你的例程,这个问题我问过张无忌他们的,也是没办法解决
 
这个应该是系统的机制在起作用,恐怕没有太简单的方法能够做到
(不知道通过手动创建 Control 是否好一些,可能也不行.
还有一种方法就是手动LoadLibrary,手动创建类 然后FreeLibrary(代替系统的工作)
不过这仅仅是想到的,具体是否合适没有考量)
 
唉,大家都没有办法吗?这样我也不好给分呀,不如回答我的另一个问题吧:编写在各个版本WMP下,都可正常运行的程序?不管是9.0,6.4....等,都可正常运行.
 
free 以后,将控件赋值nil就可以
 
后退
顶部