5

Is there a way to list/browse all ActiveX controls in the system or for particular application? Can this be done from some administration screen as well as in code?

Thx for any help.

lsalamon
  • 7,998
  • 6
  • 50
  • 63
Konrad
  • 558
  • 1
  • 5
  • 16

3 Answers3

6

I usually use OLEview to inspect COM/ActiveX objects on my pc as it also allows me to inspect the interfaces exposed by the objects.

A programmatic approach has been posted by Jeff Attwood on stackoverflow.

Community
  • 1
  • 1
Martijn Laarman
  • 13,476
  • 44
  • 63
5

TRy this ActiveXHelper

RameshVel
  • 64,778
  • 30
  • 169
  • 213
0
//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];
// Want only my Plugin Category
pcatidImpl[0]=CATID_MyPlugin;
pcatidReqd[1]=CATID_MyPlugin;

// Want all Active X Control
//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 ();
Andrew Barber
  • 39,603
  • 20
  • 94
  • 123