只拿到一个com组件,有什么办法可以获得com组件中的对象、函数,并调用?该怎么处理

只拿到一个com组件,有什么办法可以获得com组件中的对象、函数,并调用?
Hi,

 如果我们只拿到一个com组件,没有任何的.C、.h文件,

有什么办法可以获得com组件中的对象、函数,并调用它么?

------解决方案--------------------
#import "com.dll" 
自动生成类型包装信息
------解决方案--------------------
以上两种方式皆可,推荐第一种,插入COM组件,自动生成类。
------解决方案--------------------
没有必要那么麻烦,为什么要去生成文件呢?
给你我我是ADO组件的范例:
1、在stdafx.h投机添加:

#import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF","adoEOF")
注意:路径要指定正确,尤其是相对路径的化!

2、在代码中使用组件:
C/C++ code

STDMETHODIMP CCompensateManager::GetCompensate(long id, ICompensate **pCompensate)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState())

    // TODO: Add your implementation code here
    _ConnectionPtr    adoConn;
    _RecordsetPtr    m_rec;
    _variant_t        val;    //列值
    CString            sql;
    DataCmn::ICompensatePtr pTempCompensate;
    HRESULT hr;

    try
    {
        hr = adoConn.CreateInstance(__uuidof(Connection));
        hr = m_rec.CreateInstance(__uuidof(Recordset));
        hr = adoConn->Open((BSTR)m_ConnectionString, L"", L"", adCmdUnspecified);
        pTempCompensate.CreateInstance(__uuidof(User));

        sql.Format(_T("select * from VIEW_Compensate where ID=%d "),id);
        hr=m_rec->Open((LPCTSTR)sql, (IDispatch*)adoConn, adOpenUnspecified,
            adLockUnspecified, adCmdUnspecified);

               。。。。
    }
    catch(_com_error e)
    {
        if(e.Description().length()>0)
            return AtlReportError(__uuidof(CompensateManager), (BSTR)e.Description(), IID_ICompensateManager, e.Error());
        else
            return AtlReportError(__uuidof(CompensateManager), e.ErrorMessage(), IID_ICompensateManager, e.Error());
    }

    return S_OK;
}

------解决方案--------------------
如果有个COM组件的名称是Test,输出接口是ITest。你可以在用到该com组件的头文件内编写import "Test.dll" no_namespace将com组件导入,然后再写以下代码:
ITestPtr m_TestPtr;
HRESULT hr = m_TestPtr.CreateInstance(__uuid(Test));
if(SUCCEEDED(hr)
{
hr = m_TestPtr.需要调用的函数名;
}
------解决方案--------------------
这个COM组件要是实现了IDispatch接口。。那就什么都好说,要是没实现就白扯了吧