![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
走进COM殿堂
文章平均质量分 69
jameshooo
在家务农
展开
-
我是如何用 V8 脚本引擎替换JScript的 —— (一)前言
前言: 看标题很容易给人误解,V8引擎本来就是跨平台的,为何还要移植?这个标题真的很不好取名,我的本意是想表达:微软有自己的脚本引擎规范,也有自己的JavaScript引擎,我尝试的事情就是用 V8 替换掉微软自己的 Jscript。这下应该说明白了,但用这个解释来做标题的话实在太长了。由此引来一个新问题:为什么要替换?原因很简单:尝试。我想尝试什么?由于V8开源,我不能把这个东原创 2009-04-22 14:55:00 · 4117 阅读 · 2 评论 -
值得期待:REDirectUI “开源”
REDirectUI 正在筹划开源,但开源协议不同于任何一个现有的开源协议,它是弹性的,它针对有限的用户群。 一、为什么开源REDirectUI 曾经是一个个人爱好的产物,也曾经是一个目标宏大的计划,本人作为发起者,倾注了多年的精力和心血才使得它初具模样,只是它还没有发光。因个人原创 2011-07-08 16:06:38 · 5691 阅读 · 3 评论 -
宏定义的极致发挥---让你的普通C++类轻松支持IDispatch自动化接口(二)
这是上一篇博客《宏定义的极致发挥---让你的普通C++类轻松支持IDispatch自动化接口》所展示的示例代码的改进版,改进之处有: 1、如果不想直接提供成员作为属性,可以用成员函数的方式提供属性读写。 2、支持基类映射表,即如果基类也实现了映射表,派生类不用重复填表,自动合并基类表项。唯一的要求就是DISPID不要重复。 3、可以同时合并多个基类映射表。 4、添加可选参数支持,比如某个方法有5个参数,后3个为可选参数(有默认值),那么调用者可以只用2个参数来调用。原创 2011-01-13 20:44:00 · 4090 阅读 · 2 评论 -
如何获得一个COM接口的事件源的GUID
最近坛子有人问起怎样从一个HTML元素接口获取它的连接点的DIID,这个问题本来不是个问题,用OleView看看组件的类型库信息,马上就能得到它的事件接口GUID,问题在于当得到一个 IHTMLElement 指针时,它到底是那种元素类型?每种元素类型的连接点接口是不同的,所以必须要动态获取事件GUID才能挂接到组件上。 想起我正在做的界面项目,已经实现了动态获取功能,就共享一下源码吧。这段源码封装到了一个类的成员函数里面,现在原封不动地贴出来,有少量内容跟目标无关,但不影响代码的阅读和理解,关键注释已经原创 2010-12-24 23:11:00 · 4155 阅读 · 1 评论 -
宏定义的极致发挥---让你的普通C++类轻松支持IDispatch自动化接口
这篇文章其实有两个主题:一个是充分利用宏的特性把代码最大程度简化;另一个是如何在现有的项目中添加自动化支持。要我说哪一个主题更重要,对不起我也不知道,因为两个主题是紧密关联的,后面的介绍将以宏的使用为主,自动化接口只是宏的一种应用。 熟悉MFC和ATL/WTL的人一定都很熟悉它们的消息映射表,利用宏进行填表是一种非常简洁非常优雅的编码方式,通俗易懂维护方便。对于宏来说,使用越是简原创 2009-09-05 09:25:00 · 7135 阅读 · 8 评论 -
如何判断两个COM指针是同一个对象
故事起源于我移植V8到IE中的过程,在CSDN论坛上也发现不少问此问题的人,所以特地整理一篇文章来解释这个问题。 这个问题本来是一个非常简单的问题,COM指针也是指针,既然是指针,只要它们的值相同,就表示它们指向相同的COM对象,如果不同则表示不同对象。假设要写一个判断函数的情况下,表示成这样:bool is_com_equal(IUnknown* unk1, IUnknown* un原创 2009-06-02 11:38:00 · 4255 阅读 · 3 评论 -
我是如何用 V8 脚本引擎替换JScript的 —— (四)准备3
掌握V8的架构和使用过程V8内部架构相当复杂,但是使用还是很方便的,因为V8把所有功能实现封装到内部的命名空间中,只给使用者提供了相当简洁的外部封装类,这些类都在一个叫做v8的命名空间中,全局函数封装在V8命名空间中(注意大小写有别)。V8引擎使用上的便捷性体现在多个方面:l 大量采用模板类,统一了所有脚本对象的内存管理和垃圾回收。l 所有脚本对象不允许直接在堆或栈上构造,这原创 2009-04-23 11:31:00 · 5051 阅读 · 3 评论 -
我是如何用 V8 脚本引擎替换JScript的 —— (二)准备1
移植前的准备: 准备工作最起码要做三件事情:1、完全理解微软的脚本引擎规范;2、完全满足Jscript的现有功能特性;3、完全掌握V8的架构和使用过程。 理解微软的脚本引擎规范众所周知,微软产品的每个角落都充斥着COM,脚本引擎也不例外。一个合格的脚本引擎必须首先是一个COM组件,并实现下表中列出的标准接口:IActiveScript – 这个接口是必须的,所原创 2009-04-22 15:02:00 · 4027 阅读 · 0 评论 -
我是如何用 V8 脚本引擎替换JScript的 —— (三)准备2
满足Jscript的现有功能特性在脚本语法上,Jscript跟标准JavaScript的语法基本相同,没有特别需要关注的地方。在标准特性上,Jscript除了ECMA标准特性之外,扩充了许多非ECMA标准的特性,必须仔细找出V8尚未实现的部分。下面列出了一部分:VBArray对象条件编译语句Enumerator对象Error对象===和!==操作符Active原创 2009-04-22 15:18:00 · 3792 阅读 · 1 评论 -
史上最小的基于IE内核的多标签、多进程浏览器
大约在四年前,CHROME浏览器刚刚面世不久,我尝试了一下,立即被它简洁的界面所吸引。当时市面上除了它和IE8,还没有多进程浏览器出现,不像现在,各种多进程浏览器横行。正因为CHROME,才激发了我做一个基于IE内核的多进程浏览器出来。大约在3年前,该浏览器完工,并取名Raptor。想验证执行效果的童鞋,可以下载这个资源(不需要资源分);希望了解和学习源码的童鞋,下载这个资源(完整的VC工程源码,原创 2011-11-05 11:36:25 · 8945 阅读 · 32 评论