com组件

用MFC写一个COM组件

↘锁芯ラ 提交于 2019-12-07 04:36:37
一:新建组件工程 工程名称COM 二:选择 动态链接库使用共享MFC DLL 和自动复选框 三:直接确定 四:查看自动生成代码信息 一个CCOMApp类,有成员函数CCOMApp和InitInstance函数 全局函数DllCanUnloadNow、DllGetClassObject、DllRegisterServer和全局变量theApp. 此处可能是没有实现DllUnregisterServer的原因,在注册组件后使用Regsvr32 -u com.dll卸载 组件时会失败。 五:添加COM对象类 添加一个新类CMyFirstComObj,从CCmdTarget继承,步骤如图 六:定义接口 七:接口文件为interface.h 八:接口代码如图: 两个方法 九:实现接口 添加代码如下图 定义一个接口,代码如下: MFC的COM使用的内部类的方法实现接口。 代码添加完成后编译生成DLL文件为COM.dll 十:转到COM.dll文件目录注册COM组件 十一:提示注册成功 十二:查看注册表添加信息 十三:客户端使用组件代码: 十四:运行测试程序 效果如下 使用MFC编写组件和调用的过程大致如上。以后继续学习。。。。。。。。。。。。。。。 来源: CSDN 作者: 俩蛋之父 链接: https://blog.csdn.net/fin86889003/article/details

C# vs2017创建Com组件,并注册

北慕城南 提交于 2019-12-05 22:13:58
1.创建一个普通类库dll项目,如:MyCom. 2.导出接口,添加Guid,Guid为全局唯一标识,可以用VS2017自带工具获取.获取Guid的方法,如图: (1)打开自带Guid工具. (2)首先选择Guid格式,一般选择格式为5,然后点击“新建GUID”,再点击复制,即可获取Guid [DispId(1)]为函数的标识。如果有多个函数可相应的在函数前面加[DispId(2)], [DispId(3)]… 来源: https://www.cnblogs.com/Wonderful-Life/p/10490070.html

用MinGW的gcc编译com组件

匿名 (未验证) 提交于 2019-12-03 00:22:01
因为特殊原因需要用gcc编译com组件还不是vc 首先代码得写纯C++的,不用借用ATL和MFC,这个网上蛮多的 我们用到的是需要idl文件的,借用VC的MIDL得到XX_i.c XX_p.c XX.h文件还有tlb文件 主要是tlb文件,没有tlb文件编译出来的com找到COM方法 把tlb加到XX.rc资源文件里,用MinGW下的windres把资源编入XX.o文件 windres resource . rc res . o 编主程序的时候需要把它加入进去,还有.def文件 g ++ - Wall - static - shared XX . cpp Exports . def res . o - o XX . dll - lOle32 - lstdc ++ - lntdll - lkernel32 - luuid - lodbc32 - lodbccp32 - loleaut32 - ladvapi32 - mwindows 然后注册下就可以用了 转载请标明出处: 用MinGW的gcc编译com组件 文章来源: 用MinGW的gcc编译com组件

C# _调用TRIO控制器_com组件教程

老子叫甜甜 提交于 2019-12-02 22:28:24
最近项目由于用到上位机与TRIO交互,为了使交互编程方便,使用了TRIO的COM组件。记录一下为方便以后自己使用,同时也方便大家做参考! 组件下载地址(百度云盘): https://pan.baidu.com/s/15Txpl-4MNxjJRlwIsamkuw 1、下载后解压文件,TrioPCMotion_2_19_0(x86)_Setup 按照提示安装即可! 2、打开vs2015(或其他版本),创建C#窗体应用 创建C#窗体参考链接: https://jingyan.baidu.com/article/fb48e8bee59cbf6e622e14f2.html 3、在菜单栏中点击【视图】中的【工具箱】 或 快捷键:Ctrl + Alt + X。 4、选择其中的一个选项,然后点击:鼠标右键,选择:【选择项】弹出选择工具箱,选择点击【COM组件】,下拉找到 "TrioPC Control" 组件勾选,【确定】即可 。 5、点击【常规】,里面加载有 " TrioPC Control " , 点击拖动至 “ Form1 ” 即可! 6、简单测试,连接TRIO,更据TRIO控件文档撸代码即可! TRIO控件文档地址: https://wenku.baidu.com/view/489a1a2b11a6f524ccbff121dd36a32d7375c7f2.html 7、用控制器MC4N链接

NET com组件注册

时光总嘲笑我的痴心妄想 提交于 2019-12-02 14:22:30
1、签名 右击项目->属性->[签名]标签, 选中[为程序集签名]–>[选择强名称密钥文件]–>[新建],输入你的密钥名称,去掉[使用密码保护密钥文件] 最重要的签名,并且注册脚本中要有参数/codebase 可使用绝对路径进行签名 C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe "E:\MeProject\HisWeiXin\PB\Com.NET\Com.NET\bin\Debug\Com.NET.dll" /codebase pause 2、注册 64的window系统注册和32系统注册32位Com组件的区别 在64位系统下注册com组件会有两个regsvr32.exe注册执行文件 The 64-bit version is %systemroot%\System32\regsvr32.exe The 32-bit version is %systemroot%\SysWoW64\regsvr32.exe 用C#编写的类库,采用regsvr32的方法注册时,会弹出 找不到入口点 的 提示 regasm 用C#编写的类库,注册用regasm工具,C++编写的类库,用regsvr32注册。 部分引用 :https://blog.csdn.net/phker/article/details/84140691 来源:

新建com组件项目步骤

痞子三分冷 提交于 2019-12-02 03:14:09
一、菜单栏 新建->项目->ATL->ATL项目->动态链接库 后续默认完成 二、菜单栏 项目->添加类->ATL控件->“写入类的命名如:CeshiMain”下一步-> 1、如果需要连接点事件,勾选连接点 2、如果需要对话框资源的话 “控件类型”选择“复合控件”,如果不需要选择“标准控件” 其他的默认就好,然后选择“完成” 三、在CeshiMain.h文件中找到类继承 public IPersistPropertyBagImpl<CeshiMain>//不然属性函数无法调用 1、在 BEGIN_COM_MAP(CeshiMain) COM_INTERFACE_ENTRY(IPersistPropertyBag)//在BEGIN_COM_MAP之间加上这句话,不然属性函数无法调用 END_COM_MAP() 2、//加上脚本安全属性,不然网页加载的时候无法加载 BEGIN_CATEGORY_MAP(CeshiMain) IMPLEMENTED_CATEGORY(CATID_SafeForScripting) IMPLEMENTED_CATEGORY(CATID_SafeForInitializing) END_CATEGORY_MAP() CeshiMain::CeshiMain() { m_bWindowOnly = TRUE;//在类初始化函数中添加,这句话很重要

仿百度文库解决方案(二)——利用Jacob调用MS Office转换文档为PDF

浪子不回头ぞ 提交于 2019-12-01 18:34:05
目录 仿百度文库解决方案(一)—— 总体思路 仿百度文库解决方案(二)—— 利用Jacob调用MS Office转换文档为PDF 仿百度文库解决方案(三)—— 利用JCom调用MS Office或者Acrobat API转换文档为PDF 仿百度文库解决方案(四)—— 利用JODConverter调用OpenOffice.org服务转换文档为PDF 仿百度文库解决方案(五)—— 利用SWFTools转换PDF文档为SWF 仿百度文库解决方案(六)—— 利用FlexPaper显示Flash(SWF) Jacob简介   Jacob是Java与COM组件桥接的缩写,即JAVA-COM Bridge。通过使用Jacob类库,我们可以很方便地在Java程序中调用COM自动化组件。Jacob最初是由美国人Dan Alder在Inventure公司担任CTO时编写的,目的是为了方便众多的程序员在Java2虚拟机上,调用Win32平台上COM自动化服务器中的组件。当Jacob项目以开源的方式在网络上公布以后,越来越多的人开始参与项目的研发与改进中去。   Jacob类库中只有两个包:com.jacob.activex和com.jacob.com。com.jacob.activex包建立在com.jacob.com基础之上,主要包含了ActiveXComponent类。com.jacob

STL,ATL,WTL之间的联系和区别

旧街凉风 提交于 2019-11-28 23:15:07
STL即 Standard Template Library (标准模板库) STL是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。 STL的代码从广义上讲分为三类: algorithm(算法)、container(容器)和iterator(迭代器), 几乎所有的代码都采用了模板类和模版函数的方式 ,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。 从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。 这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。 STL的目的是标准化组件,这样你就不用重新开发它们了。你可以仅仅使用这些现成的组件。STL现在是C++的一部分,因此不用额外安装什麽。 它被内建在 你的编译器之内。因为STL的list是一个简单的容器,所以我打算从它开始介绍STL如何使用。如果你懂得了这个概念,其他的就都没有问题了。另外,list容器是相当简单的,我们会看到这一点。 这篇文章中我们将会看到如何定义和初始化一个list,计算它的元素的数量,从一个list里查找元素,删除元素

不注册COM组件直接调用接口

℡╲_俬逩灬. 提交于 2019-11-28 22:14:11
本文以COM组件AppTest.dll为例,AppTest.dll中提供了ITest接口,在不使用regsvr32命令向系统注册的情况下创建ITest接口并调用。 一、导入组件或类型库; 在C++中使用COM组件,组件需要带有类型库,以公开接口和方法。类型库文件类型为tlb文件,直接#import导入即可。类型库也可以以资源形式编译进COM组件Dll内部,资源类型为TYPELIB,资源号为1即可。如果Dll中已包含类型库,只需#import导入COM组件Dll文件即可。代码如下: #import "AppTest.dll" 二、动态载入COM组件并创建接口。 ITestPtr pTest = NULL; IClassFactoryPtr pClassFactory = NULL; HMODULE hMudule = ::LoadLibrary(_T("AppTest.dll")); if (hModule) { pfnDllGetClassObject pDllGetClassObject = (pfnDllGetClassObject)::GetProcAddress(hMudule, "DllGetClassObject"); if (pDllGetClassObject) { HRESULT hr = pDllGetClassObject(__uuidof(AppTest:

Delphi COM对象

老子叫甜甜 提交于 2019-11-28 04:56:39
作者:巴哈姆特 http://www.cnpack.org(转载请注明出处并保持完整)  如果没有接触过COM对象的话,你会觉得接口真的很麻烦,也许会有:“还不如直接定义一个类更方便”的想法。 的确,没有经过COM封装的接口确实比较麻烦。在我看来,没有经过COM封装的接口似乎没有存在的意义。那么,什么是COM对象呢?它有什么优点呢?接下来开始对COM对象进行一个简单的介绍: COM是个二进制规范,它与实现的语言无关。这样,即使COM对象由不同的编程语言创建,运行在不同的进程空间和不同的操作系统平台,这些对象也能相互通信。COM既是规范,也是实现,它以COM库的形式提供了访问COM对象核心功能的标准接口以及一组API函数,这些API函数用于创建和管理COM对象。COM本质上仍然是客户服务器模式。客户(通常是应用程序)请求创建COM对象并通过COM对象的接口操纵COM对象。服务器根据客户的请求创建并管理COM对象。当然,客户和服务器这两种角色并不是绝对的。 记得我在刚刚接触COM对象的时候,我师傅曾经给我说过:“COM不是Dll,虽然它可能会以后缀名为dll文件呈现在你面前,但是它绝对不是我们传统意义上所说的dll(动态链接库)”。 其实在我看来,进程内的COM对象应该是一个以dll为载体而提供一些特殊服务的特殊的动态链接库。当然,也有进程外的COM。 现在