取自动化Com组件所有的方法、属性名称

作者因工作接触COM自动化,分享了相关代码实践。代码中包含COM初始化、创建Excel对象、获取类型信息等操作。同时作者正在学习《COM原理与应用》,并表示此文是blog一年后“我心依旧”的见证。

Author:zfive5(zhaozidong)
Email :zfive5@yahoo.com.cn

最近由于工作原因,一直在接触com自动化的东西,一个字妙不可言,在这方面的长进也是这几个月来体会到的,废话不说了,代码来也......

#include "comdef.h"
void CTest1Dlg::OnOK()
{
// TODO: Add extra validation here

::CoInitialize(NULL);
{

COleDispatchDriver app;
if(!app.CreateDispatch("Excel.Sheet"))
{
::CoUninitialize();
return;
}
ITypeInfo *pType=NULL;
UINT nCount;
app.m_lpDispatch->GetTypeInfo(0,0,&pType);

app.m_lpDispatch->GetTypeInfoCount(&nCount);
FUNCDESC *pfunc;
VARDESC *pVar;
CString str="";
CString str1="";
CEdit *pWnd1=NULL;
CEdit *pWnd2=NULL;

pWnd1=(CEdit *)GetDlgItem(IDC_EDIT1);
pWnd2=(CEdit *)GetDlgItem(IDC_EDIT2);
for(int i=0;i>=0;i++)
{
if(pType->GetFuncDesc(i,&pfunc)!=S_OK)
{
break;
}

BSTR bstrName,bstrDoc;
DWORD id;
pType->GetDocumentation(pfunc->memid,&bstrName,&bstrDoc,&id,NULL);
str=bstrName;
str+=" ";
if(pfunc->invkind==DISPATCH_METHOD)
{
char buf[20];
str+=_bstr_t(itoa(pfunc->cParams,buf,10));
pWnd1->GetWindowText(str1);
str1+=str;
str1+="/r/n";
pWnd1->SetWindowText(str1);
}
else if(pfunc->invkind==INVOKE_PROPERTYGET)
{
pWnd2->GetWindowText(str1);
str1+=str;
str1+=" ";
str1+="GET";
str1+="/r/n";
pWnd2->SetWindowText(str1);
}
else if(pfunc->invkind==INVOKE_PROPERTYPUT)
{
char buf[20];
str+=_bstr_t(itoa(pfunc->cParams,buf,10));
pWnd2->GetWindowText(str1);
str1+=str;
str1+=" ";
str1+="PUT";
str1+="/r/n";
pWnd2->SetWindowText(str1);
}
else
{
char buf[20];
str+=_bstr_t(itoa(pfunc->cParams,buf,10));
pWnd2->GetWindowText(str1);
str1+=str;
str1+=" ";
str1+="REF";
str1+="/r/n";
pWnd2->SetWindowText(str1);
}

pType->ReleaseFuncDesc(pfunc);
}
}
::CoUninitialize();

}

这几天正在饿补《com原理与应用》,4年前的书!:(


对了此文为blog一年后--“我心依旧”见证!


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值