COM实现

Excel COM加载项实现 本文介绍了使用COM技术开发Excel加载项的关键步骤:1)实现IDTExtensibility2接口的5个核心方法;2)通过C#创建COM可见类并注册;3)Excel端配置和功能集成方式;4)提供调试技巧和部署注意事项,包括32/64位系统差异。强调需正确处理COM对象释放和版本兼容性问题,并推荐参阅MSDN官方文档获取最新API参考。(150字) 阅读详情
    前些天看MFC源码时觉得MFC对COM的实现比较有意思。首先简单说说COM,它是微软组件化实现的基础,它规定了很多接口,可以认为是一些通信标准。COM是微软很多跨进程跨机器应用的基础,它为进程间或者模块间通信提供了一个接口,其中一个优秀的闪光点就是它将通信媒体虚拟化,这样进程间通信就可以通过很多方式实现,而不仅仅是共享内存了。
    MFC对COM多接口的实现是通过聚合实现的。一开始我很吃惊,实现多个接口不就应该继承这些接口,然后在类中实现他们吗,怎么还可以并且确实用聚合去实现呢?用聚合实现的优势很明显,这类似派生和组合之间的差异,而聚合就是一种强耦合关系的组合。用聚合实现自然比多继承实现要好的多,问题是这在语法上居然能实现!仔细看了COM的IUnknown接口才恍然大悟,似乎微软在设计这个基本接口时就考虑到用聚合实现多接口了,它在语法上就给了一个支持。我感觉巧妙之处就在QuaryInterface上。使用聚合实现多接口的主要问题就在怎样从多接口派生实例的一个接口类型指针转换成另一种接口类型指针。通过多继承很容易实现,先Down-Cast,再Up-Cast,水到渠成,然而通过聚合则很难实现。但是COM却很容易通过聚合实现,因为我们可以通过QuaryInterface从一个实现的接口跳到另一个接口。而且MFC在实现接口跳转时(也就是接口查询)采用了接口映射表,从而提高了接口查询速度。
    关于MFC中的技巧我想不用多说了,当然也有很多人认为MFC垃圾,我感觉这其中大多是技术难度问题吧。仔细想想多继承和聚合差别并不大,仅仅是语义上的区别而已。当然我这是从二机制角度说的,从软件工程角度说差距自然天壤之别,呵呵。
python 实现Windows下COM端口的软停用和启用 # USB\VIDxxxxxxxxxxxxx,设备管理器中--设备属性--详细信息--设备实例路径。# USB\VIDxxxxxxxxxxxxx,设备管理器中--设备属性--详细信息--设备实例路径。os.system(Dstr) # 禁用设备。 阅读详情

相关推荐

C++手动实现 com

import "oaidl.idl"; import "ocidl.idl"; [ uuid(011E50FF-873E-4FB2-86D5-296BFFCB47C4), object, dual,//这个标识说明定义的是双接口 pointer_default(unique) ] interface ISCPI : IDispatch//必须从IDispatch接口派生 { [i...

max2009verygood的专栏 375

COM编程_第一讲_深入COM框架以及实现简单的COM

一丶我们要理解COM是什么(为什么理解) 现在很多人会用com(也就是ALT)但是不知道原理,如果改一点东西,那么整体的框架重来,因为你不懂改哪里,如果懂了,那么遇到问题,那么就会知道我要怎么做,是什么问题了 二丶什么是COM COM是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组...

weixin_30651273的博客 462

通过ATL开发COM_2实现IUnknown接口

每个COM组件需要实现这三个功能1. 实现IUnknown接口 (通过 CComObjectRootEx 实现)2. 实现一个类工厂,支持组件的创建 (通过 CComCoClass 实现)3. 实现自注册 ATL是如何实现IUnknown接口的? 组件通过派生CComObjectRootEx 获得 IUnknown支持template class CComObj

hongjiqin的专栏 2594

COM实现过程

COM实现过程 原创:吴剑明(foxnt) 前言 COM已经成为一个必需的东西了。在我们周围,可以说处处充满了COM – 如果你是在使用WINDOWS,并在其下面编写程序的话。然而,无论你是用VC,还是使用DELPHI进行COM编程时,在大多数情况下,编程工具的IDE已经向你隐藏了COM的大部分实现过程,使得程序员根本不需要了解COM,只专心致志地写其所关心的逻辑代码。这就意味

§为艺术而技术§ 3459

Com多进程通信实现

Com多进程通信实现;Com连接点无法生成代码的解决方案;代理组件XXXPS.dll无法编译通过;

Think88666的博客 1498

Halcon和C#联合编程实现硬币识别(个人入门练习)

本人为机器视觉入门小白,自己突发奇想 1.图片数据来源和分析 2.HALCON实现 3.C#搭建界面框架 4.C#中嵌入HALCON代码,即联合编程 5.导出.exe文件,运行以及Debug 目标是这样的,在图片中识别出每种类型的硬币数量,然后计算出总钱数。先上结果,再细说过程。 C#界面和识别结果: 1.图片数据来源和分析 图片大小及格式均统一,拍摄的时候已经尽可能的去除了背景噪点,所以图像处理的要求并不很高(重点在于思路)。硬币区分原理本人代码采用直径范围来判断(也可以半径或区域面积,HALCON算子

Demobird的博客 3616

利用纯C++实现COM

  利用纯C++实现COM 来源:不详 (2006-07-10 17:18:47)

medvision的专栏 1402

【深度学习】基于BERT模型的情感分析(附实战完整代码+数据集)

情感分类是一个快速发展的研究领域,尽管众多模型和数据集在二分类任务中显示出很高的准确性,但细粒度的情感分类任务仍然是一个很大改进空间的领域。分析SST-5数据集,Munikar等人的先前工作表明,嵌入工具BERT允许使用简单的模型来实现最新的准确性。

aaaa_hsjsueu的博客 2万+

com实现的原理

com实现的原理

阿丹的彩蛋 1098

InsightFace(RetinaFace + ArcFace)人脸识别实战:从模型部署到Web服务构建

本文详细介绍了如何利用InsightFace框架,结合其集成的RetinaFace人脸检测与ArcFace人脸识别预训练模型,从零开始构建一个高性能的Web人脸识别服务。内容涵盖环境搭建、模型部署、核心代码解析(包括五点仿射对齐关键步骤)、FAISS向量检索集成以及基于FastAPI的Web服务开发,并提供了实战优化与常见问题排查指南,帮助开发者快速实现工业级应用。

weixin_29054245的博客 225

SAP 公司间库存调拨通过IDOC完成自动发票校验

本文仅用于SAP软件的应用与学习,不代表SAP公司。(注:文中所示截图来源SAP ERP软件,软件相应著作权归SAP所有。公司间采购时,通过SAP内部EDI 数据传输功能, 由销售方开的公司间发票自动触发采购方的发票校验。​欢迎扫码加如下微信,我会把大家拉到SAP PP学习群,随时欢迎跟我和其他SAP PP顾问一起交流和学习,如下图库存调拨订单,系统已经完成了发货方发货和收货方收货。

2402_84262664的博客 925

MFC实现COM组件

一般而言,ATL实现了对COM组件最好的支持,所以不用MFC实现COM组件。但是MFC实际上也是可以实现COM组件的。 一、MFC DLL优点: MFC com组件可以将MFC的类型作为参数进行传递,但ATL com只能用规定的COM数据类型。但实际上MFC 扩展dll也可以用MFC类型作为参数。 具体代码:https://github.com/moisiet/MFC-COM COM组件与...

jiangqin115的专栏 1198

Win11专业版破解RDP限制:实现多用户远程桌面协同办公

本文详细介绍了如何在Windows 11专业版上破解RDP限制,实现多用户远程桌面协同办公。通过使用RDPWrap工具,用户可以绕过微软的授权限制,允许多个用户同时登录同一台电脑,提高硬件利用率和团队协作效率。文章包含详细的安装配置步骤、性能优化技巧及常见问题解决方案,适用于需要远程协作的办公场景。

weixin_33806300的博客 466

在Linux下实现COM组件

好久没有写代码啦,今天翻到大学时候写的COM组件,当时那个叫崇拜COM技术啊。在工作中(windows 平台)刚好大施拳脚。这段时间,反正没事干,想想把COM组件在Linux环境下,实现一下。 COM组件是一种编程规范,它规定了软件编程的一般方法,虽然它由Microsoft公司

nokianasty的专栏 7775

危废焚烧优化控制系统设计与实现:基于数据驱动的控制参数预测

本文提出了一种基于数据驱动的危险废物焚烧过程优化控制方法。系统利用历史运行数据和实时监测数据,通过深度学习模型预测关键控制参数,实现焚烧过程的智能化控制。系统采用Python开发,结合TensorFlow/PyTorch框架,构建了完整的数据采集、预处理、特征工程、模型训练和实时预测闭环系统。该系统能够处理多变量非线性关系,适应工况变化,从历史数据中学习最优控制策略,相比传统PID控制方法具有显著优势。论文详细介绍了系统架构、算法设计和实现细节,为危废焚烧过程的优化控制提供了有效解决方案。

huanghm88的专栏 206

PCB铺铜技巧如何铺铜经验总结

铺铜是指在PCB电气层添加整块的铜皮;铺铜包括电源层铺铜,地层铺铜和信号走线层空闲区域铺铜;铺铜是PCB设计的一个重要的环节。

fydar的博客 1万+

COM设计与实现范例

COM设计与实现范例原创作者: 小王志东,王健。创作日期:2002年4月5日星期五组件对象模型是一种跨平台技术,是现代面向对象分析与设计的技术实现手段之一,就现实系统应用来看,COM技术有着很强的实用价值。OOA -> OOD -> OOP 用纯面向对象技术分析设计实现系统现就给出一个简单的范例来展示其魅力。系统描述:本系统是一个多用户登录管理系统。要求用户通过输入用户编号和密

ocsoft的专栏 1086

HLA分型

HLA分型 一、根据WES的tumor数据进行数据分型 选用hlahd 软件安装及使用 [root@18605fd8771e ~]# wget https://jaist.dl.sourceforge.net/project/bowtie-bio/bowtie2/2.4.1/bowtie2-2.4.1-linux-x86_64.zip [root@18605fd8771e ~]# unzip bowtie2-2.4.1-linux-x86_64.zip && mv bowtie2-2.4.1

qq_23435961的博客 2489

深入COM框架以及实现简单的COM

一丶我们要理解COM是什么(为什么理解) 现在很多人会用com(也就是ALT)但是不知道原理,如果改一点东西,那么整体的框架重来,因为你不懂改哪里,如果懂了,那么遇到问题,那么就会知道我要怎么做,是什么问题了 二丶什么是COM COM是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它

humor456的博客 1865

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C/C++ 实现COM转换到接口

在C++中可以使用类的方式来定义COM(Component Object Model)对象,并且一个COM对象可以实现多个接口。通过以上步骤,可以在C++中定义一个COM对象,并实现多个接口。这样,在其他应用程序中可以通过COM接口调用对象的方法,实现组件间的交互和互操作性。在COM对象的类中,实现每个接口所定义的方法。在方法的实现中,根据接口的要求提供相应的功能。为每个要实现的接口创建一个独立的COM接口。一个特殊的接口,所有COM接口都继承IUnKnown这个接口。接口,并且定义了接口所需的方法。

微软技术分享 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

COM实现过程1

原创:吴剑明(foxnt) 前言 COM已经成为一个必需的东西了。在我们周围,可以说处处充满了COM – 如果你是在使用WINDOWS,并在其下面编写程序的话。然而,无论你是用VC,还是使用DELPHI进行COM编程时,在大多数情况下,编程工具的 IDE已经向你隐藏了COM的大部分实现过程,使得程序员根本不需要了解COM,只专心致志地写其所关心的逻辑代码。这就意味着,我们很少有机会,...

162

用c++实现com组件示例

 1、 创建一个win32  dll应用类型项目工程。2、  添加ComTest.h及ComTest.cpp文件,并在ComTest.h头文件包含Unknwn.h头文件3、  用guid.exe生成一个接口IID及com对象类CLSID代码如下://ComTest.h#pragma once #include  EXTERN_C const CLSID CL

SmartWan的专栏 6740

COM - COM编程的简单实现

本文主要记录一下COM编程的简单实现。关于COM的简单介绍可以参考文章 COM的简单介绍。 1、代码的主要结构 代码结构主要分为两部分,其中ComTest为组件程序部分,ComCtrl为客户部分(即组件的使用者),具体如下所示: 2、ComTest ComTest为 VS2012所创建的 Win32项目->DLL类型的工程。可以参考以下过程进行开发。 2.1、接口类的定义 2.2、对象类的定义 2.3、对象类厂的定义 2.4、组件自注册处理 3、ComCtrl Com...

bailang_zhizun的博客 3059

在win32里实现COM

终于看到一篇关于在win32里实现COM的文章了,文章很长,写的很好。 http://www.codeproject.com/Articles/13601/COM-in-plain-C#DLL http://www.codeproject.com/Articles/3365/Embed-an-HTML-control-in-your-own-window-using-pla 1)

静以修身 800

C++ COM实现之四 添加接口

<br />COM接口必须得提供给客户程序,这样他们才能知道你的这个DLL存在什么样的函数实现什么样的功能,同时还需要一个GUID和接口ID。COM的接口你可以把它当成一个虚类处理。<br />定义接口如下:mycom.h<br /> <br />01.#pragma once 02.#include "unknwn.h" 03.// {85F5CF11-2A25-4ef9-8F7C-8C3F14A0860A} 04.static const GUID CLSID_MyCOM =

YearnWang的专栏 872
上一篇: VB时钟
下一篇: 线程池管理
Matrix_Designer
博客等级 码龄16年 58粉丝 296原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值