zoukankan      html  css  js  c++  java
  • VS2010 集成标准com组件

    #include <Windows.h>
    #include <stdio.h>
    
    // import后,会提示找不到对应的SignCtrl.tlh文件,只需要对项目重新编译一下,在项目的Debug目录下,就会有SignCtrl.tlh文件
    #import "C:/Users/Administrator/Desktop/jzbank/CallComSln/CallCom/CallCom/SignCtrl.ocx" no_namespace
    
    extern "C"
    {
        typedef HRESULT (__stdcall *pFunc)(REFCLSID rclsid,REFIID riid,LPVOID * ppv);
    }    
    
    void main(){
    
         //谨记谨记,必须先调用 CoInitialize(NULL);
        if (!SUCCEEDED(CoInitialize(NULL)))  
        { 
            return;
        }
    
        HINSTANCE hdllInst = LoadLibrary("SignCtrl.ocx");  
    
        pFunc func=(pFunc)GetProcAddress(hdllInst,"DllGetClassObject");  
        
        if (func != NULL)  
        {  
            
            CLSID CLSID_SignCtrl_ocx;  
            HRESULT hr = CLSIDFromString(L"{7CDD83B9-75FA-4C7A-89A6-1ABC55126D57}", &CLSID_SignCtrl_ocx);
            if (!SUCCEEDED(hr))
            {
                return;
            }
    
            IClassFactory* pcf = NULL; 
            hr = func(CLSID_SignCtrl_ocx, IID_IClassFactory,(void**)&pcf);  
    
            if (SUCCEEDED(hr) && (pcf != NULL))  
            {  
                // 创建 IID
                IID CLSID_DSignCtrl;
    
                //_DSignCtrl的标识{05c0ba8b-20f1-40ee-ae8c-cb78d9809203} 在tlh文件里
                CLSID_DSignCtrl.Data1=0x05c0ba8b;  
                CLSID_DSignCtrl.Data2=0X20f1;   
                CLSID_DSignCtrl.Data3=0X40ee;  
    
                CLSID_DSignCtrl.Data4[0]=0Xae;  
                CLSID_DSignCtrl.Data4[1]=0X8c;  
                CLSID_DSignCtrl.Data4[2]=0Xcb;  
                CLSID_DSignCtrl.Data4[3]=0X78;  
                CLSID_DSignCtrl.Data4[4]=0Xd9;  
                CLSID_DSignCtrl.Data4[5]=0X80;  
                CLSID_DSignCtrl.Data4[6]=0X92;  
                CLSID_DSignCtrl.Data4[7]=0X03;  
                    
                // SignCtrl.ocx向外暴露的
                _DSignCtrl* pCall = NULL;
    
                // 拿到实例
                hr = pcf->CreateInstance(NULL, CLSID_DSignCtrl, (void**)&pCall);  
    
                if (SUCCEEDED(hr)   && (pCall != NULL))  
                {
                    pCall->AboutBox();
                }
    
                pcf->Release();
    
            } else{
                printf("false");
                
            }
        }   
    
        FreeLibrary(hdllInst);
    
        // 谨记谨记, 调用 CoInitialize(NULL);后要销毁
        CoUninitialize(); 
    
        getchar();
    }
  • 相关阅读:
    使用工具进行计算机取证
    SpringBoot整合Swagger2
    Filebeat安装部署
    Mac OS X上使用Wireshark抓包
    maven集成命令-U -B -P -e -X
    轻量级Mysql Sharding中间件——Shark
    Spring MVC的WebMvcConfigurerAdapter用法收集(零配置,无XML配置)
    Unity2D音游案例-节奏大师教程+源码+素材
    4款五星级的3D模型资源包
    CandyCrush 糖果传奇源码+素材+教程
  • 原文地址:https://www.cnblogs.com/cnblogszs/p/8568131.html
Copyright © 2011-2022 走看看