0

Wasn't able to find an easy answer to this one... Anyway I've seen some WIN32OLE code like this:

WIN32OLE.new("MSVidCtl.MSVidWebDVD.1")

Which works. My question is, how is it possible (in any programming language) to have figured that string out? Like enumerating all the available servers or what not? My google fu failed me here.

Thanks. -r

More resources (some of which answer my question, I believe--not sure why I didn't see these before)

How to list all ActiveX controls? axhelper looks nice, as it shows the product name as well, which is what VB shows as its component name.

Realize that apparently something being listed as a "component" in axhelper does not mean you can't use it in your VBscript (ex: if you insert an "MS TV Video component" in VB, you can do an Imports MSVidCtlLib then suddenly other things like MSVidWebDVD are accessible).

How to enumerate all ActiveX elements with WMI?

How to list all installed ActiveX controls? though the C code in there doesn't seem to enumerate all of them...

Community
  • 1
  • 1
rogerdpack
  • 62,887
  • 36
  • 269
  • 388
  • Eugene's answer below is correct. But can I ask why you want to do this? Because the number of ProgIds in the system can be huge. Theoretically, the same as the number of classes in all the software on the system. There must be a better way, no? – thehouse Feb 04 '11 at 15:17
  • added some links in my question to clarify hopefully...I don't think there is a best way – rogerdpack Mar 30 '11 at 16:35

1 Answers1

0

as I understand you need to find all registered COM servers? If so you can enumerate registry keys: HKLM/Software/Classes/CLSID/{class_id}/ProgId.

Also you can try to use axscan utility from AxMan. It is open source so you can modify it for your own purposes.

rogerdpack
  • 62,887
  • 36
  • 269
  • 388
Eugene
  • 3,335
  • 3
  • 36
  • 44