zoukankan      html  css  js  c++  java
  • C#怎样判断一个特定的OCX控件是否已注册 jason

    C#代码:

    方式一:

    引用命名空间:using Microsoft.Win32;

    判断指定CLASSID 的注册表键值是否存在来判断是否存在注册类。

    RegistryKey regKey = Registry.ClassesRoot.OpenSubKey("CLSID\\{00460182-9E5E-11d5-B7C8-B8269041DD57}\\");

    if (regKey != null)

    {
                            MessageBox.Show("存在指定ClassID的注册");
                        }

    方法二:

    通过包装的对象,直接建立实例,来确定对象是否注册,失败表示未注册,成功表示注册。

    方法三:

    通过ClassID建立对象。

    public object GetActiveXObject(Guid clsid)
            {
                Type t = Type.GetTypeFromCLSID(clsid);
                if (t == null)
                    return null;
                return Activator.CreateInstance(t);
            }

    以下为网络找到的C++代码:

    把下面的   CLASSID   换成你的   OCX   控件的就可以了:  
       
      BOOL   CYourApp::IsInstalled()  
      {  
      HKEY hKey;  
      BOOL bPresent;  
      TCHAR szPath[_MAX_PATH];  
      DWORD dwRegType;  
      DWORD cbData   =   sizeof   szPath   *   sizeof   TCHAR;  
       
      hKey   =   NULL;  
      bPresent   =   FALSE;  
      ::RegOpenKey(HKEY_CLASSES_ROOT,   _T("CLSID\\{D27CDB6E-AE6D-11cf-96B8-444553540000}\\InprocServer32"),   &hKey);  
      if(hKey)    
      {  
      HANDLE hfile;  
       
      szPath[0]   =   0;  
      ::RegQueryValueEx(hKey,   NULL,   NULL,   &dwRegType,   (LPBYTE)szPath,   &cbData);  
      ::RegCloseKey(hKey);  
       
      hfile   =   ::CreateFile(szPath,   0,   FILE_SHARE_READ   |   FILE_SHARE_WRITE,   NULL,   OPEN_EXISTING,   0,   NULL);  
      if(INVALID_HANDLE_VALUE   !=   hfile)  
      {  
      bPresent   =   TRUE;  
      ::CloseHandle(hfile);  
      }  
      }  
       
      return   bPresent;  
      }  

  • 相关阅读:
    pat甲级1013
    二分查找
    pat甲级1012
    win10 + Ubuntu16.04双系统安装
    win10 U盘重装
    win10蓝牙添加设备无法连接
    Android自定义控件总结
    11.粘性控件
    10.侧拉删除
    9.视差特效、回弹动画、overScrollBy
  • 原文地址:https://www.cnblogs.com/jason_chen/p/2062477.html
Copyright © 2011-2022 走看看