这是一个很现实的问题,比如对话框中所用的ActiveX控件未注册,则DoModal之后,对话框无法弹出,系统没有任何提示(实际上是因为CoCreateInstance()调用失败导致无法创建模式对话框)。所以我想在程序启动时就判断一下所用到的所有ActiveX控件是否已注册,以便给出提示信息或重新注册。

解决方案 »

  1.   

    标题应该是: 如何知道某个ActiveX控件已注册?
      

  2.   

    查找注册表上的clsid项?好像太慢了
    抛砖引玉
      

  3.   

    1.不需要去判断是否已经注册,去判断CoCreateInstance是否成功就可以了
    2.判断是否注册,那么去搜索是否有clsid的注册吧
      

  4.   


    我有个方法:
      在CMainFrame::OnCreate中加入如下代码:
       CMyCtrl ctrl;   //临时变量,OnCreate退出时自动删除
       if (!ctrl.Create(NULL,WS_CHILD,CRect(0,0,0,0),this,0))
          AfxMessageBox("控件未注册。");请大家比较一下这个方法和检查注册表CLSID的方法,哪个好?或者有更好的方法??
      

  5.   

    在Mainfrm.cpp中如何直接调用CoCreateInstance?