MFC 罗列所有已注册的ActiveX控件

//Initialise COM libraries
CoInitialize (NULL);
 
//The Component Category Manager implemented by System implements 
//this interface
ICatInformation *pCatInfo=NULL;
 
//Create an instance of standard Component Category Manager
HRESULT hr=CoCreateInstance (CLSID_StdComponentCategoriesMgr ,
                             NULL,
                             CLSCTX_INPROC_SERVER,
                             IID_ICatInformation ,
                             (void **)&pCatInfo);
 
//Increase ref count on interface
pCatInfo->AddRef();
 
//IEnumGUID interface provides enumerator for enumerating through 
//the collection of COM objects
IEnumGUID *pEnumGUID=NULL;
 
//We are intersted in finding out only controls so put CATID_Control 
//in the array
CATID pcatidImpl[1];
CATID pcatidReqd[1];
pcatidImpl[0]=CATID_Control;
 
//Now enumerate the classes i.e. COM objects of this type.
pCatInfo->EnumClassesOfCategories(1, pcatidImpl, 0, pcatidReqd , &pEnumGUID);
 
//Enumerate as long as you get S_OK
CLSID clsid;
 
while( (hr= pEnumGUID->Next( 1, &clsid, NULL ))==S_OK )
{
 BSTR bstrClassName;   //Get the information of class
 
 //This is what MSDN says about the parameters
 /*-----------------------------------------------
 USERCLASSTYPE_FULL     The full type name of the class. 
 USERCLASSTYPE_SHORT    A short name (maximum of 15 characters) that 
                        is used for popup menus and the Links dialog box. 
 USERCLASSTYPE_APPNAME  The name of the application servicing the class 
                        and is used in the Result text in dialog boxes. 
 -----------------------------------------------*/
 OleRegGetUserType (clsid,USERCLASSTYPE_FULL,&bstrClassName);
 CString strControlName(bstrClassName);
 //Add string in our listbox
 m_list1.AddString (strControlName);
}          
 
//we are done so now release the interface ptr
pCatInfo->Release();
 
CoUninitialize();

 

转载于:https://my.oschina.net/shou1156226/blog/485565

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值