我做了一个播放器小程序,比如:我调用的是QVOD的部件,我的系统已经安全QVOD了,程序能正常运行,如果没有安装QVOD的电脑,我的程序就无法远行,错误,系统不存在XXX.dll没有注册。已经知道控件的clsid: F3D0D36F-23F8-4682-A195-74C92B03D4AF 如何在程序运行时,判断用户已经安装了播放器,如果没有安装给个提示或退出软件我还有个想法就是,在窗体中调用了这个组件dll.窗体运行时不加载这个部件,当点击一个按钮后,窗体才调用这个组件就更好了。。请高手们指点一下谢谢!

解决方案 »

  1.   

    我还有个想法就是,在窗体中调用了这个组件dll.窗体运行时不加载这个部件,当点击一个按钮后,窗体才调用这个组件就更好了。。就是这样:
    可以用CreateObject尝试创建一个对象,用On Error捕捉。
      

  2.   

    程序从sub main启动,在sub main中注册所有你需要的组件,不管它之前是否已经注册过。
    注册可以使用简单的shell "regsvr32 / xxx.dll"语句进行。
      

  3.   

    shell "regsvr32 /s xxx.dll"
      

  4.   

    Option ExplicitPrivate Sub Command1_Click()
        On Error Resume Next '很重要啊
        Dim obj As Object
        Set obj = CreateObject("QvodInsert.ClassName") 'QvodInsert:dll名称,ClassName组件的一个类名
        If Err.Number <> 0 Then
            MsgBox "没有找到QVOD组件!", vbCritical, App.Title
            Exit Sub
        End If
        '继续您的操作
    End Sub
      

  5.   


    谢谢你的方法,成功了,现请教一下,现在我把部件拉到窗体中了,运行后直接也运行了这个部件,
    QvodCtrl.如何在上面的判断下面,加个没有这个组件的时候,窗体不调用QvodCtrl可以结帖了,麻烦大哥回答一下,谢谢
      

  6.   

    没太明白你的意思。是不是没有注册这个组件时程序执行别的代码呢?如果这样的话可以再If Err.Number <> 0 then后把错误提示改为您要执行未注册组件的操作,在else中进行已经注册的操作。