zoukankan      html  css  js  c++  java
  • 不注册COM组件直接调用接口

    本文以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::Test), IID_IClassFactory, (LPVOID*)&pClassFactory);
    	      if (S_OK == hr)
    	      {
    	          hr = pClassFactory->CreateInstance(NULL, __uuidof(AppTest::ITest), (LPVOID*)&pTest);
    	          if (S_OK == hr)
    	          {
    	                AfxMessageBox(_T("Succeed !"));
    	          }
    	      } 
    	}
    }
  • 相关阅读:
    JDBC
    Ajax:一种不用刷新整个页面便可与服务器通讯的办法
    Maven——自动化构建工具
    SSM整合
    MyBatis框架
    SpringMVC框架、Spring boot框架、SSM區別
    Spring开源框架
    切入点表达式
    面向切面编程之cglib代理方式
    动态JDK代理方式-实现类增强
  • 原文地址:https://www.cnblogs.com/cpper-kaixuan/p/3540446.html
Copyright © 2011-2022 走看看