程序运行时创建两个临时文件,一个为temp.gif,一个为temp.mp3。temp.gif要被一个picture控件装载,temp.mp3要被MediaPlayer控件播放。某个函数需要删除这两个临时文件,并再次创建。在有些机器(多数)上能正常运行,但有些机器(少数)在再次创建temp.mp3时,会出错,“文件/路径访问出错”。
很奇怪的是,在使用fso.DeleteFile删除temp.mp3文件后,可以在资源管理器中看到该文件仍然存在,但程序并不报错。此时使用fso.FileExists判断temp.mp3是否存在时,返回的值是false。如果此时手动删除该文件,则也不能删除,说是文件写保护或在使用中。因此,当再次创建temp.mp3时,程序就出错了。当结束应用程序后,该文件也自动消失了,说明是哪个资源释放了。可我真搞不懂到底是哪个资源占用了。
如果说是代码错了,可同样的代码,为什么在有的机器上可以,在有的机器上又不行呢?我想应该是系统的问题,因为有4台使用同一个ghost恢复的机器上都不能正常运行。但我看了操作系统,行和不行的机器都是装的xp sp2。
怎么解决呀?因为该程序要做成光盘给很多客户去自行安装,所以要保证在所有的机器上都能正常运行。Help呀~~~~

解决方案 »

  1.   

    纯属应付眼前的方案
    我觉得你得mediea player占用资源并未完全释放,你在那里试验一下当程序出错的时候,你就创建temp1.mp3,依此类推。然后记得都删除一遍
      

  2.   

    肯定是medieaplayer没有写关闭的代码
      

  3.   

    如果说是medieaplayer没有释放资源,可奇怪的是,在使用vb调试的时候,我停止了调试,回到编辑状态时,那个新产生的temp.mp3依然不能被手动删除,还报是在使用。只有关掉vb编译器,也就是退出vb6,那个文件才自动消失。如果是程序中使用的对象占用了资源,应该在停止调试的时候就释放了呀,为什么要退出vb6才被释放资源呢?而且,为什么有的系统上不报错,而有的系统上又出错呢?再补充一个问题:
    使用WindowsMediaPlayer控件,运行时,控件初始状态的播放按钮是不可用的,只有给WindowsMediaPlayer1.Url的属性赋值之后才会播放媒体文件。如果我要再次将该控件设置为初始状态(也就是为了阻止用户通过点播放按钮来播放上次播放的媒体文件),该怎么设置呢?(注意不是WindowsMediaPlayer1.Enabled = False )
      

  4.   

    问题解决了,散分~
    改用WindowsMediaPlayer控件(wmp.dll)就不会出现这个问题了。不过问题又来了,因为考虑到程序要在98-Vista上都能使用,现在只是测试了在win2003和XP上能正常安装使用。但在98上不能正常使用,是由于98不支持WindowsMediaPlayer控件,怎么办呢?高手能不能告诉一下~~~
    还要找个vista系统来测试,结果还不知道如何。