-
大小: 24KB文件类型: .zip金币: 2下载: 0 次发布日期: 2021-05-29
- 语言: C/C++
- 标签: C++ COM 组件 CoInitialize
资源简介
实现一个最简单的COM组件,麻雀虽小,五脏俱全,使用完全C++和COM库实现,可以看到整个COM组件的组成脉络。

代码片段和文件信息
#include “stdafx.h“
#include “PeopleInterfaces.h“
#include “PeopleFactory.h“
BOOL APIENTRY DllMain( HMODULE hModule
DWORD ul_reason_for_call
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
g_hModule = hModule;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
/************************************************************************/
/* DLL 应用程序的导出函数。 */
/************************************************************************/
//组件注册函数
STDAPI DllRegisterServer(void)
{
TCHAR szModule[MAX_PATH];
DWORD dwResult = ::GetModuleFileName(g_hModule szModule MAX_PATH);
if (0 == dwResult)
{
return SELFREG_E_CLASS;
}
return CToolHelper::RegisterServer( CLSID_EasyComPeople
TEXT(“EasyCom.object“)
szModule
TEXT(“EasyCom Component Description“))
? S_OK : SELFREG_E_CLASS;
}
//组件取消注册函数
STDAPI DllUnregisterServer(void)
{
return CToolHelper::UnRegisterServer(CLSID_EasyComPeople TEXT(“EasyCom.object“))
? S_OK : SELFREG_E_CLASS;
}
//组件信息函数
STDAPI DllGetClassobject(__in REFCLSID rclsid __in REFIID riid LPVOID FAR* ppv)
{
if (rclsid == CLSID_EasyComPeople)
{
CPeopleFactory *pFactory = new CPeopleFactory;
if (NULL == pFactory)
{
return E_FAIL;
}
HRESULT hr = pFactory->QueryInterface(riid ppv);
return hr;
}
else
{
return CLASS_E_CLASSNOTAVAILABLE;
}
}
//组件卸载函数
STDAPI DllCanUnloadNow(void)
{
if(g_LockNumber == 0 && g_EasyComNumber==0)
{
return S_OK;
}
else
{
return S_FALSE;
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-06-16 19:40 最简单的COM实现\
目录 0 2016-06-16 19:40 最简单的COM实现\EasyCom\
文件 1790 2016-06-10 20:51 最简单的COM实现\EasyCom\dllmain.cpp
文件 155 2016-06-10 21:04 最简单的COM实现\EasyCom\EasyCom.def
文件 5140 2016-06-10 21:04 最简单的COM实现\EasyCom\EasyCom.vcproj
文件 1401 2016-06-16 19:39 最简单的COM实现\EasyCom\EasyCom.vcproj.QIHUQIH-I5QE4NK.Administrator.user
文件 1673 2016-06-16 19:26 最简单的COM实现\EasyCom\People.cpp
文件 460 2016-06-10 20:39 最简单的COM实现\EasyCom\People.h
文件 1402 2016-06-16 19:20 最简单的COM实现\EasyCom\PeopleFactory.cpp
文件 528 2016-06-10 20:25 最简单的COM实现\EasyCom\PeopleFactory.h
文件 774 2016-06-10 20:34 最简单的COM实现\EasyCom\PeopleInterfaces.h
文件 1161 2016-06-10 18:26 最简单的COM实现\EasyCom\ReadMe.txt
文件 213 2016-06-10 20:37 最简单的COM实现\EasyCom\stdafx.cpp
文件 546 2016-06-10 20:43 最简单的COM实现\EasyCom\stdafx.h
文件 3224 2016-06-10 20:37 最简单的COM实现\EasyCom\ToolHelper.cpp
文件 446 2016-06-10 20:06 最简单的COM实现\EasyCom\ToolHelper.h
目录 0 2016-06-16 19:40 最简单的COM实现\TestCom\
文件 774 2016-06-10 20:34 最简单的COM实现\TestCom\PeopleInterfaces.h
文件 1183 2016-06-10 20:53 最简单的COM实现\TestCom\ReadMe.txt
文件 212 2016-06-10 20:53 最简单的COM实现\TestCom\stdafx.cpp
文件 362 2016-06-10 20:53 最简单的COM实现\TestCom\stdafx.h
文件 1026 2016-06-10 20:53 最简单的COM实现\TestCom\targetver.h
文件 1341 2016-06-16 19:39 最简单的COM实现\TestCom\TestCom.cpp
文件 4602 2016-06-10 21:00 最简单的COM实现\TestCom\TestCom.vcproj
文件 1427 2016-06-16 19:39 最简单的COM实现\TestCom\TestCom.vcproj.QIHUQIH-I5QE4NK.Administrator.user
文件 1346 2016-06-10 21:00 最简单的COM实现\最简单的COM实现.sln
文件 41984 2016-06-16 19:39 最简单的COM实现\最简单的COM实现.suo
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- com组件(共907页)
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
评论
共有 条评论