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

    1. 定义导出函数指针

         

    //定义函数指针  
    typedef   HRESULT    (_stdcall *Func) (REFCLSID , REFIID , LPVOID*);  
    Func   g_DllGetClassObject=NULL;  

    2.导出COM组件这个DLL 的 DllGetClassObject函数

    if (g_DllGetClassObject==NULL)  
        {  
            CString strParam =  theApp.strRootDirectory + TEXT("//MMGifCtrl.dll");  
            HMODULE  module=LoadLibrary(strParam.GetBuffer(0));  
      
            if (module!=NULL)  
            {  
                g_DllGetClassObject=  (Func) GetProcAddress(module,"DllGetClassObject");  
            }  
        }  
     

     3.通过 DllGetClassObject 获得COM的类厂  ,然后通过类厂获得所要的接口

      

    IMMGifCtrl *    pShowGif     = NULL;  
    CComQIPtr<IClassFactory>  pGifFactory;  
    HRESULT         hr;  
      
      
      
    //如果 g_DllGetClassObject不为空  
    if (g_DllGetClassObject)  
    {  
    hr=   g_DllGetClassObject(__uuidof(CMMGifCtrl), IID_IClassFactory,(LPVOID*)&pGifFactory);  
      
       if (hr  ==S_OK)  
       {  
        pGifFactory->CreateInstance(NULL,__uuidof(IMMGifCtrl),(LPVOID*)&pShowGif);  
      
        if (pShowGif)  
        {  
              //成功获得COM接口  
            }  
       }  
  • 相关阅读:
    低功耗蓝牙(BLE)——概念
    低功耗蓝牙(BLE)——概述
    190923——我目前的居所
    190922——真随笔
    行业——5G
    190901——无题
    190831——关于坚持
    190828-对话体
    190827——两种人
    190826-快乐
  • 原文地址:https://www.cnblogs.com/xietianjiao/p/14512460.html
Copyright © 2011-2022 走看看