win32 COM组件编写
win32的com组件:
1. 编辑idl,idl文件会生成对应的com class和com interface,例如
[
object,
uuid(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx),
dual,
nonextensible,
pointer_default(unique)
]
interface Iface : IDispatch
{
[id(1)] HRESULT SetChange(DWORD arg);
};
[
uuid(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
]
coclass testClass
{
[default] interface Iface;
};
2.编辑.man文件,.man文件中会包含很多注册表相关信息,将新加入的类的注册信息写入.man文件中,COM组件在运行时,需要根据注册表中类ID找到类。
HKEY_CLASSES_ROOT\CLSID\xxxxx
HKEY_CLASSES_ROOT\Interface\xxxxx
3.编辑.rgs文件,将注册信息写入.rgs文件,以便生成注册信息。
4.编辑resource.h文件,将新加入的资源写入resource.h中,如#define IDR_TESTCLASS 112
4.编辑.rc文件,加入对应的注册表信息,如:IDR_TESTCLASS REGISTRY "TestClass.rgs"
5.编辑testClass.h和testClass.cpp文件,实现接口和类。
6.进行编译,会生成一个xxx.h文件和xxx_i.c文件,xxx.h和xxx_i.h文件包含了新的idl文件生成的类和接口的声明,给其他使用这个dll或者exe的类使用。
7.手动编辑注册表文件导入到target machine,运行程序,即可。
8.测试:
CComPtr<Iface> pComFace;
hr = CoCreateInstance(CLSID_testClass, nullptr, CLSCTX_LOCAL_SERVER, IID_PPV_ARGS(&pComFace));
根据hr的返回值判断是否成功。
win32 COM组件编写的更多相关文章
- 迷你MVVM框架 avalonjs 组件编写指南
avalon经过半年的宣传,已经有不少公司在使用avalon应用于它们内外网应用或移动项目,比较大牌的客户有百度,搜狐,金山,边缘,去哪儿--最近成为去哪儿的前端架构师后,掌握更多资源,可以随使抓个人 ...
- / fluxChatDemo / 系列 ——fluxDemoChat 组件编写
还是用各部分来表示过程吧,没文采,就先这样记着吧 嘻嘻 梳理问题: 编写es6风格的组件时,需要引入import React from ‘react’ 然后页面就华丽丽的展示出了我写的1.2两个字 在 ...
- 浅析 JavaScript 组件编写
之前因项目需要也编写过一些简单的JS组件,大多是基于JQuery库的,一直也没有过总结,导致再次写到的时候还去Google, 近日看到一个文章总结的挺好,拿过整理一下做个备忘. 此次同样是基于jque ...
- Vue组件编写
Vue无疑是近来最火的一个前端框架,它吸取了angular1.x和react的精华,性能优良,而且易于上手,本文主要是关于如何去写一个组件. 首先是项目目录 编写组件 在这里我写了一个日期控件(移动端 ...
- Win32 COM组件 x Android Service (二)
继续上一篇. 如果不使用AIDL(Android Interface Definition Language接口描述语言)编写服务接口的话,(COM组件,CORBA组件,ICE组件以及其它远程调用框架 ...
- 基于avalon1.4.x ----分页组件编写
avalon分页组件 (1.4.x版本) 随着avalon2的推出,avalon1的官网已经不再维护了,现在似乎是找不到avalon 1.4版本的官方文档了,所以本文章所有的内容均不保证正确性,只能保 ...
- echart.js组件编写
1.传参 <area-chart :chartdata='monitorTimes' :datatype='typeSelected' :dataX = '"tid"' :t ...
- JavaScript 组件编写
说明 这是一个联系人名过滤组件,还提供可选的"大小写是否敏感"选项,默认大小写不敏感. 一.HTML 结构 <ul class="contacts"> ...
- Win32 COM组件 x Android Service
有些书在介绍和讲解android的Service组件时,会使用后台服务一词,并且与运行在主线程的Activity相对.因为后台一词很容易误解,服务一直运行在后台?什么线程在运行?服务一直有条线程在运行 ...
随机推荐
- redis原理分析
基本全是参考http://blog.csdn.net/a600423444/article/details/8944601 redis的使用大家都很熟悉,可能除了watch 锁,pipelin ...
- linux命令(7):mv命令
mv命令 mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 1.命令格式: mv [选项] ...
- python积累
python积累 一.逐渐积累 python逐渐积累 http://www.cnblogs.com/lx63blog/articles/6051526.html python积累_2 http://w ...
- 【BZOJ3123】森林(主席树,启发式合并)
题意:一个带点权的森林,要求维护以下操作: 1.询问路径上的点权K大值 2.两点之间连边 n,m<=80000 思路:如果树的结构不发生变化只需要维护DFS序 现在因为树的结构发生变化,要将两棵 ...
- Grub实践
为运行于虚拟机上的CentOS 6添加一块新硬件,提供两个主分区: (1) 为硬盘新建两个主分区:并为其安装grub: (2) 为硬盘的第一个主分区提供内核和ramdisk文件: 为第二个分区提供ro ...
- iOS常用库之Masonry
简单介绍 Masonry 源码地址:https://github.com/Masonry/Masonry Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布局 简 ...
- hashMap的数据结构
HashMap底层实现还是数组,只是数组的每一项都是一条链.
- web页面全角&半角
根据Unicode编码,全角空格为12288,半角空格为32 : 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 全角-->半角函数 //半角转换 ...
- Python3利用BeautifulSoup4抓取站点小说全文的代码
再写一个用BeautifulSoup抓站的工具,体会BeautifulSoup的强大. 根据小说索引页获取小说全部章节内容并在本地整合为小说全文.不过不是智能的,不同的站点对代码需要做相应的修改. # ...
- .net学习笔记--使用抽象方法实现多态
在使用抽象方法实现多态之前,我们必须知道一些知识点: 1.抽象类不能被实例化: 2.抽象类可以包含非抽象成员,它们可以由其子类继承调用. 我们可以先创建一个Person的抽象类,代码如下: abstr ...