
COM编程
HarbinZJU
这个作者很懒,什么都没留下…
展开
-
《COM组件开发实践》系列文章
http://www.cnblogs.com/phinecos/archive/2008/08/25/1275923.html转载 2010-08-26 16:13:00 · 1115 阅读 · 0 评论 -
【VS插件开发】在Visual Studio中打开文件,并定位到代码行
下面代码实现的功能是:在VS中打开一个文件,并定位到指定的代码行。// import EnvDTE#pragma warning(disable : 4278)#pragma warning(disable : 4146)#import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("8.0") lcid("0") raw原创 2012-06-07 10:11:26 · 4707 阅读 · 2 评论 -
设置COM接口默认参数
关键是在IDL文件中如下定义:[id(1)] HRESULT TestFunc([in, defaultvalue("DefaultString")]BSTR bstrTest, [in, defaultvalue(0)]long nTest);原创 2012-02-07 15:50:34 · 2716 阅读 · 0 评论 -
通过配置manifest实现COM免注册
XP以上的操作系统支持COM免注册技术,操作系统在加载EXE时会自动扫描是否包含配套的manifest信息,若有则读取manifest内容加载组件,否则读取注册表。 manifest描述了EXE里面引用了哪个DLL库、DLL里面提供了什么接口等信息,只要给EXE、DLL加上配套manifest即可完成免注册工作。如果你无法控制exe.manifest,譬如你需要在Office Word Add原创 2012-02-03 16:21:26 · 2960 阅读 · 0 评论 -
用VC进行COM编程,必须要掌握哪些COM理论知识
我见过很多人学COM,看完一本书后觉得对COM的原理比较了解了,COM也不过如此,可是就是不知道该怎么编程序,我自己也有这种情况,我也是经历了这样的阶段走过来的。要学COM的基本原理,我推荐的书是《COM技术内幕》。但仅看这样的书是远远不够的,我们最终的目的是要学会怎么用COM去编程序,而不是拼命的研究COM本身的机制。所以我个人觉得对COM的基本原理不需要花大量的时间去追根问底,没有必要,是吃力转载 2010-08-26 15:54:00 · 1778 阅读 · 0 评论 -
COM编程入门:第二部分——深入COM服务器
本文为刚刚接触COM的程序员提供编程指南,解释COM服务器内幕以及如何用C++编写自己的接口。继上一篇COM编程入门之后,本文将讨论有关COM服务器的内容,解释编写自己的COM接口和COM服务器所需要的步骤和知识,以及详细讨论当COM库对COM服务器进行调用时,COM服务器运行的内部机制。 如果你读过上一篇文章。应该很熟悉COM客户端是怎么会事了。本文将讨论COM的另一端——COM服务器。内转载 2010-08-27 16:09:00 · 1032 阅读 · 0 评论 -
COM编程入门:第一部分——什么是COM,如何使用COM
本文的目的是为刚刚接触COM的程序员提供编程指南,并帮助他们理解COM的基本概念。内容包括COM规范简介,重要的COM术语以及如何重用现有的COM组件。本文不包括如何编写自己的COM对象和接口。 COM即组件对象模型,是Component Object Model 取前三个字母的缩写,这三个字母在当今Windows的世界中随处可见。随时涌现出来的大把大把的新技术都以COM为基础。各种文档中也转载 2010-08-27 16:07:00 · 2418 阅读 · 0 评论 -
让进程外COM实现多实例
目标就是实现每创建一个COM实例,就开启一个进程。通过调用RegisterClassObjects方法实现。ATL默认的实现中参数设置为REGCLS_MULTIPLEUSE,改为REGCLS_SINGLEUSE就可以了。HRESULT PreMessageLoop(int /*nShowCmd*/) throw(){HRESULT hr = S_OK;T* pT = stati原创 2011-12-28 13:41:55 · 2119 阅读 · 0 评论 -
如何使用BHO定制你的Internet Explorer浏览器
原文:微软公司 Dino Esposito编译:朱先中原文出处:Browser Helper Objects: The Browser the Way You Want It一、简介 有时,你可能需要一个定制版本的浏览器。在这种情况下,你可以自由地把一些新颖但又不标准的特征增加到一个浏览器上。结果,你最终有的只是一个新但不标准的浏览器。Web浏览器控件只是浏览器的分析引擎。这转载 2011-11-26 12:00:46 · 1320 阅读 · 0 评论 -
使用SiteLock模板,保护你的ActiveX控件
当我们为网站开发ActiveX控件的时候,也许会出于保密或者保护控件功能由指定网站独享的目的,希望限制使用此控件的域。SiteLock是微软提出的针对ActiveX安全的一个解决方案。可以帮助ActiveX控件只运行在指定域里面。SiteLock功能在IE浏览器未被木马攻击的情况是可以信任的。这个功能实现原理比较简单,在控件任何方法入口加上域的检查:1. 在控件内获取IE浏原创 2011-11-25 14:56:55 · 1546 阅读 · 0 评论 -
CoInitializeSecurity返回错误 0x80010119
错误 0x80010119为:RPC_E_TOO_LATE CoInitializeSecurity has already been called。说明CoInitializeSecurity 已经被调用过,这不算是错误。判断该函数执行是否成功的方法应为:HRESULT hr;hr = CoInitialzieSecurity();if (SUCCEED(hr)原创 2011-10-26 17:23:00 · 7856 阅读 · 7 评论 -
COM的错误与异常处理
<br />在组件程序中,如果遇到错误,一般有两个方式进行处理。 <br />1.简单返回HRESULT <br />对于比较简单的错误,直接返回表示错误原因的 HRESULT。 <br /><br />2.抛出COM异常---调用Error(...) <br />既然 COM 是靠各种各样的接口来提供服务的,于是很自然地就会想到,是否有一个接口能够提供更丰富的错误信息报告那?答案是:IErrorInfo(调用SetErrorInfo(0, pErrorInf转载 2011-04-02 11:03:00 · 15456 阅读 · 0 评论 -
初始化COM类,在FinalConstruct与构造函数中初始化有何区别
<br />There are advantages to performing initialization in FinalConstruct rather than the constructor of your class: <br /><br /> You cannot return a status code from a constructor, but yo转载 2011-05-17 14:03:00 · 2660 阅读 · 0 评论 -
《COM技术内幕》图摘
摘自《COM技术内幕》的一个截图,助于理解COM实现细节。原创 2011-03-22 23:06:00 · 1860 阅读 · 0 评论 -
理解 COM 套间
<br />简序<br /><br /> 大学毕业前的最后一学期,在一家公司实习,当时的工作需要用到一些操作系统提供的组件。那时候只知道COM这个名词,并不知道到底是怎么回事,只知道上网到处找别人的源码解决自己的问题;那段日子到现在回忆起来都是灰色的,每天呆坐在电脑前,一个网站一个网站的查找自己需要的源码。但并不清楚自己到底在做什么;那时候对自己能不能成为一个程序员充满了怀疑。在实习结束返校的火车上,一夜间,我把一本《COM本质论》翻看了120多页。当我和当时的女友吹嘘自己一夜可以看转载 2011-03-14 09:39:00 · 1494 阅读 · 1 评论 -
CoInitialize()、CoInitializeEx()和AfxOleInit()
<br />CoInitialize()和AfxOleInit()都是初始化COM库,不同之处在与:<br />OLE是建立在COM之上的技术,层次比COM要高。AfxOleInit()调用的是OleInitialize(),而 OleInitialize()除了调用CoInitializeEx()来初始化COM库外,还进行一些其它的操作,这些操作对OLE应用来说是必须的,这些OLE应用包括: <br /> (1)Clipboard; <br /> (2)Drag and转载 2010-12-30 11:03:00 · 2582 阅读 · 0 评论 -
免注册COM的使用方法
COM对象的传统创建方法,会依赖于注册表,所有应用程序都会依赖到同一个版本的COM。如果不同程序依赖的COM版本不同,而这个COM的版本兼容又没有做得很好的时候,就会出现DLL Hell问题。微软在多年前就提供了一个Reg-free COM的方案,现在的VS也很好的集成了这个功能。 免注册COM的实现原理是把依赖到的COM类型与接口信息存储在本地的清单文件(.manifest)中,由它原创 2012-08-20 22:36:07 · 5514 阅读 · 0 评论