1. 程式人生 > >VS2010 集成標準com組件

VS2010 集成標準com組件

VS2010 style b- ocx spa min 組件 IT stdcall

#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(); }

VS2010 集成標準com組件