如何通过注册表的CLSID加载ITypeInfo
前言
本人最近做了一个自动化网页填充的软件,对网页的操作比较频繁,并发现有些网页会调用三方库的API,而我做的软件(其实就是个浏览器)则把方法过滤了导致调用失败。经过一番艰苦的查找后发现需要调用DispGetIDsOfNames方法,而这个方法的第一个参数需要用到ITypeInfo这个接口,最后发现可以使用LoadRegTypeLib 以及 GetTypeInfoOfGuid 从注册表的CLSID中加载对应的插件。
正文
用户注册的Com组件一般存放在注册表的CLSID中,可以通过查找注册表Com组件名称获取该插件的CLSID以及TypeLibID
通过这两个GUID 我们就可以使用LoadRegTypeLib 以及 GetTypeInfoOfGuid 获取ITypeInfo接口了
HRESULT GetDLLTypeInfo(CDuiString strClsid,CDuiString strTypeID , CDuiString strName, ITypeInfo** MyTypeInfo){HRESULT hr;LPTYPELIB pTypeLib;CLSID libClid;IID typID;DUI__Trace(_T("开始转换CLSID"));hr = CLSIDFromString(strClsid.GetData(), &libClid);if (FAILED(hr)){DUI__Trace(_T("CLSID 转换失败:%s"), strClsid.GetData());return hr;}DUI__Trace(_T("开始转换IID"));hr = IIDFromString(strTypeID, &typID);if (FAILED(hr)){DUI__Trace(_T("IID 转换失败:%s"), strTypeID.GetData());return hr;}DUI__Trace(_T("加载RegType Lib :%s"), strClsid.GetData());hr = LoadRegTypeLib(libClid, 1, 0, 0, &pTypeLib); if (FAILED(hr)){DUI__Trace(_T("加载RegType Failt:0x%X"), hr);return hr;}hr = pTypeLib->GetTypeInfoOfGuid(typID, MyTypeInfo);if (!FAILED(hr)){DUI__Trace(_T("加载RegType Info 成功!"));}else{DUI__Trace(_T("加载RegType Info 失败:0x%X"), hr);}pTypeLib->Release();return(hr);}
需要注意的是:Clsid传 TypeInfo里面的GUID,而TypeID 要传 CLSID底下的那个GUID
如何通过注册表的CLSID加载ITypeInfo相关推荐
- ie加载项存在残留是什么_注册表删除IE加载项
注册表这个地址: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions ,发现其下面的项都跟"IE工具- ...
- 64位 regsrv win10_Win10手动注册注册表提示regsvr32加载控件失败解决方案
regsvr32加载控件失败怎么办?当我们在使用计算机时,有时候会发现有些注册表没有注册,需要手动进行注册,但是在cmd命令中,输入命令regsvr32 xx.dll,运行提示模块数据加载失败,这怎么 ...
- 如何在 InfoPath 2003 表单中动态加载数据
转自微软:http://support.microsoft.com/kb/896451/zh-cn 概要 简介 更多信息 创建新的虚拟目录 设计 Microsoft Office InfoPath 2 ...
- navicat查看一张表显示正在加载中
navicat查看一张表显示正在加载中 https://blog.csdn.net/longe20111104/article/details/107572537 引用该博客内容 原因 我用navic ...
- Mybatis处理表关联(懒加载)
1.关系型数据库? 数据库中的表对象之间是有关系的. 一对一,一对多,多对多. ORM映射.数据库表映射到实体对象. 实体与实体之间是有关系的. 一对多的关系. 比如商品分类表与商品表之间的关系,就是 ...
- spl_autoload_register 注册自己的自动加载函数(__autoload())
说明: PHP实例化没有加载的类的,会自动调用__autoload();函数加载,可以通过__autolaod()函数来require类,解决很多类,多次require的问题, 可以通过spl的标准P ...
- 95-134-112-源码-维表-全量加载MySQL
1 .世界 2.概述 在维表关联中定时全量加载是针对维表数据量较少并且业务对维表数据变化的敏感程度较低的情况下可采取的一种策略,对于这种方案使用有几点需要注意: 全量加载有可能会比较耗时,所以必须是一 ...
- Hive建表与数据加载
建表 CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.] table_name[(col_name data_type [CO ...
- 【电商数仓】数仓搭建之明细数据(data warehouse detail -- DWD)层(用户行为数据之曝光、错误日志表、数据加载脚本,业务数据之评价、订单事实表)
文章目录 一 曝光日志表 1 思路解析 2 建表语句 3 数据导入 4 查看数据 二 错误日志表 1 思路解析 2 建表语句 3 数据导入 4 查看数据 三 DWD层用户行为数据加载脚本 四 DWD层 ...
最新文章
- WorkFlow入门Step.4—Adding Procedural Elements-For-WF4.0-(续)
- android5.0(Lollipop) BLE Peripheral深入理解系统篇之提高篇
- 利用计算机进行信息加工正确的说法,信息技术习题1(1-50)
- ZYNQ7000-AXI GPIO详解
- 修改cockpit端口
- C#读书雷达 | TW洞见
- MySQL数据库“局部”乱码
- 介绍10款常用的JAVA测试工具
- 内蒙古自治区阿拉善盟谷歌高清卫星地图下载
- Tomcat 下载、安装、配置图文教程
- Hi3519A 接入 BT1120或BT656视频
- 安装MapGIS IGServer遇到的问题
- nRF24L01模块——基于Arduino
- 机器学习项目的实例分析设计(附源码)
- NCCN指南下载以后无法复制,粘贴原因及PDF密码破解
- Windows设置自动开关机
- 嵌入式音视频解决方案 Webrtc vs MetaRTC
- 国外漂亮html5网页设,高端大气上档次!10个精美的国外HTML5网站欣赏_html/css_WEB-ITnose...
- GKFX捷凯金融外汇官网:gkfx-cn com 投资之父的15条投资法则
- 无锡技师学院计算机教师,无锡技师学院5位老师国赛战绩耀眼