OCX 路径查找

ocx在本机注册的本质,是将ocx的一些信息写到注册表指定项下,这样系统就可以根据这些配置找到ocx,并将其载入到内容中使用,路径大概是:

HKEY_CLASSES_ROOT\CLSID\{CD0A43F4-C9C5-423B-9D67-944A0E9F7460}




因此如果我们想得到已注册控件的路径,直接到指定注册表项下查找即可,如下C++方式:


LPTSTR GetOcxPathFromCLSID(LPTSTR classId,LPTSTR sPath,size_t nSize)
{
CString strPath;
HKEY hKey = 0;
CString strSubKey;
DWORD dwType = 0;
LPBYTE lpData = NULL;
DWORD cbData = 0;


strSubKey.Empty();


strSubKey.Format(_T("CLSID\\{%s}\\InprocServer32"),classId);
if(ERROR_SUCCESS != RegOpenKeyEx(HKEY_CLASSES_ROOT,strSubKey,0,KEY_READ,&hKey))
{
RegCloseKey(hKey);
hKey = NULL;
return "";
}

dwType = REG_SZ;
lpData = new BYTE[1024];
cbData = 1024;
if(ERROR_SUCCESS != RegQueryValueEx(hKey,_T(""),NULL,&dwType,lpData,&cbData))
{
RegCloseKey(hKey);
hKey = NULL;


delete []lpData;
lpData = NULL;
return "";
}


RegCloseKey(hKey);
hKey = NULL;


lpData[cbData] = '\0';

strPath.Empty();
strPath.Format(_T("%s"),lpData);


delete[] lpData;
lpData = NULL;


if(nSize > strPath.GetLength()-1)
{
sprintf(sPath,"%s",(LPTSTR)(LPCTSTR)strPath);
}
else
return "";

return sPath;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值