我做了一个ActiveX(类似播放器),用来播放一种自定义的压缩过的文件,就象用Flash player播放Flash一样。在ActiveX中需要指定所要播放的文件的路径。当打开网页,系统会调用播放器播放网页中的压缩文件。但是我无法取得文件名和路径啊!怎么办?

解决方案 »

  1.   

    但是在网页中放置Flash时并不用把文件路径(或URL)作为参数传递给ActiveX啊,
      

  2.   

    假设你的ActiveX控件progid是'YourLib.ABC',然后你让它实现IPersistFile,设它支持的文件名是abc1,abc2,abc3,在注册表表中增加几项:
    HKCR
    {
    .abc1 = s 'YourLib.ABC'
    .abc2 = s 'YourLib.ABC'
    .abc3 = s 'YourLib.ABC'
    }
    然后,<OBJECT ...><PARAM NAME=movie VALUE='your url'></PARAM></OBJECT>就可以访问了。缓存是IE自动做的,如flash一样。
    这就是所谓的文件Moniker.
      

  3.   

    搞错,IPersistFile是通过文件名初始化对象实例。
    网页上的<PARAM>应该是通过实现IPersistPropertyBag做到。
    相关信息查看MSDN中的Persist以及Monikers部分.