VC使用Activex DLL(VB6)

第一步:

#import "XXXXX.dll" //ActivexDLL

编译一下 VS会 生成XXXXX.tlh和XXXXX.tli(使用时主要参考tlh文件)

第二步:

A 、参考tlh文件,using namespace ???

B、定义变量 _XXXXX*   m_????

第三步:

A. 记得在线程中 CoInitialize(NULL);CoUnitialize();

B. 如果DLL没有注册(需要管理员权限),则注册:

LPCTSTR pszDllName=_T("XXXXX.dll"); 
    //装载ActiveX控件 
    HINSTANCE hLib = LoadLibrary(pszDllName); 
    if (hLib < (HINSTANCE)HINSTANCE_ERROR) 
    { 
        MessageBox(_T("不能载入Dll文件!"),_T("结果"),MB_OK); 
        return    FALSE; 
    } 
    //获取注册函数DllRegisterServer地址 
    FARPROC lpDllEntryPoint; 
    lpDllEntryPoint = GetProcAddress 
        (hLib,"DllRegisterServer"); 
    //调用注册函数DllRegisterServer 
    if(lpDllEntryPoint!=NULL) 
    { 
        if(FAILED((*lpDllEntryPoint)())) 
        { 
            MessageBox(_T("调用DllRegisterServer失败!\r\n如果是在Vista中运行:\r\n请右击程序,选择“以管理员身份运行”即可"),_T("结果"),MB_OK); 
            FreeLibrary(hLib); 
            return FALSE; 
        }; 
        //MessageBox("注册成功","结果",MB_OK);         

        return TRUE;
    } 
    else 
        //MessageBox("调用DllRegisterServer失败!" ,"结果",MB_OK); 
        return FALSE;

 第四步 在适当位置初始化变量:

HRESULT hresult;
        CLSID clsid;
        //初始化COM接口
        hresult=CLSIDFromProgID(OLESTR("LeesOfficeActivex.LeesOfficeEditor"), &clsid);
        //得到组件的CLSID

        
//这就是我们在LeesWordEditor.DLL中定义的类
        hresult=CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(_LeesOfficeEditor),(LPVOID *) &mOfficeEditor_doc);
        hresult=CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(_LeesOfficeEditor),(LPVOID *) &mOfficeEditor_ppt);
        //初始化CLSADO,CoCreateInstance()的第一个参数是对象的CLSID(类代码),
        
//这个128位的编码唯一地标识了组件服务,它的路径和运行参数等信息都放在系统注册表中;
        
//第二个参数一般情况下设为NULL;
        
//第三个参数用来指明对象的运行环境,如远程或本地,此处设为CLSCTX_INPROC_SERVER,
        
//标明是服务组件是一个DLL;
        
//第四个参数指明用来与对象通信接口的ID,这也是一个128位的编码;
        
//第五个参数是用来接收对象的接口指针。
        if(FAILED(hresult))
        {        
            AfxMessageBox(_T("初始化服务组件失败"));
            return    FALSE;        
        }

 

 最后,如VC类一样使用即可。

 

 

 

 

posted @ 2012-04-25 21:47  吾非无心  阅读(3138)  评论(0)    收藏  举报