通过 class/interface 名称实例化没有 ProgID 的 COM 对象

Instantiate COM object that doesn't have ProgID by class/interface name

pywin32 客户端 COM 文档显示了实例化 COM 对象的基本方法:

obj = win32com.client.Dispatch("<ProgID>")

我正在尝试使用类似于 Manipulating the zone identifier to specify where a file was download from – The Old New Thing - MSDN blogsPersistentZoneIdentifier。 class,如 HKEY_CLASSES_ROOT\CLSID\{0968e258-16c7-4dba-aa86-462dd61e31a3} 处的注册表所示,没有对应的 ProgID.

我看到有一个基础 pythoncom.CoCreateInstance 函数接受一个 CLSID 来实例化和一个 IID 从它显然查询。

但这很不方便,因为我必须使用难以理解的 GUID 而不是人类可读的名称。


问题是:


我尝试过但失败了:win32com.client.IDispatch(<class/interface name>)pythoncom.IID(<class/interface name>)。当然,还浏览了 Net、MSDN 和 PyWin32 文档。

没有,也不可能有任何 "stock mechanism" 来实例化一个 class/query 接口的名称,因为它们的名称不能保证是唯一的,这与 GUID 不同。