松鼠的博客

导航

C++ Builder 使用COM

COM开发环境:Visual Studio 2008

注意事件:

  1. 1.需要包含由Visual Studio 2008生成的COM头文件,类似于 MyAtl_i.c

注册COM

void __fastcall TForm1::ComBtnClick(TObject *Sender)
{    
    AnsiString dllPath 
= ExtractFilePath(Application->ExeName) + "MyAtl.dll";
    HMODULE hDLL 
= ::LoadLibrary( dllPath.c_str() );// 动态装载组件
    if(hDLL)
    
{
        FREG lpfunc 
= (FREG)::GetProcAddress( hDLL,"DllRegisterServer");    // 取得注册函数指针
        
// 如果是反注册,可以取得"DllUnregisterServer"函数指针
        if ( lpfunc )lpfunc();    // 执行注册。这里为了简单,没有判断返回值
        ::FreeLibrary(hDLL);
        ShowMessage(
"注册组件成功!");
    }

}
获取COM对象,并调用COM方法
void __fastcall TForm1::BtnShowComMsgClick(TObject *Sender)
{
    CoInitialize(NULL);
//初始化COM
    IMusic* music;
    HRESULT hr 
= CoCreateInstance(Myatllib_tlb::CLSID_Music,NULL,CLSCTX_INPROC_SERVER    ,Myatllib_tlb::IID_IMusic,(void**)&music);
    
if(SUCCEEDED(hr))
    
{
        BSTR v;
        music
->GetTitle(&v);
        
this->EditMsg->Lines->Add(AnsiString(v));
        
this->EditMsg->Lines->Add("创建COM对象成功!");
        music
->Release();
    }

    CoInitialize(NULL);
}

 

相关参考:
COM技术内幕 第七章,类厂 CoCreateInstance 函数

posted on 2008-11-17 11:29  Xproer-松鼠  阅读(870)  评论(0)    收藏  举报