• 大小: 24KB
    文件类型: .zip
    金币: 1
    下载: 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

评论

共有 条评论