通过 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 blogs 的 PersistentZoneIdentifier
。 class,如 HKEY_CLASSES_ROOT\CLSID\{0968e258-16c7-4dba-aa86-462dd61e31a3}
处的注册表所示,没有对应的 ProgID
.
我看到有一个基础 pythoncom.CoCreateInstance
函数接受一个 CLSID
来实例化和一个 IID
从它显然查询。
但这很不方便,因为我必须使用难以理解的 GUID 而不是人类可读的名称。
问题是:
pywin32
/底层 WinAPI 中是否有一种常用方法可以按名称查找上述 GUID? (不建议手动搜索注册表)
- 或者用其他方法实例化带有名称的对象?
我尝试过但失败了:win32com.client.IDispatch(<class/interface name>)
、pythoncom.IID(<class/interface name>)
。当然,还浏览了 Net、MSDN 和 PyWin32 文档。
没有,也不可能有任何 "stock mechanism" 来实例化一个 class/query 接口的名称,因为它们的名称不能保证是唯一的,这与 GUID 不同。
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 blogs 的 PersistentZoneIdentifier
。 class,如 HKEY_CLASSES_ROOT\CLSID\{0968e258-16c7-4dba-aa86-462dd61e31a3}
处的注册表所示,没有对应的 ProgID
.
我看到有一个基础 pythoncom.CoCreateInstance
函数接受一个 CLSID
来实例化和一个 IID
从它显然查询。
但这很不方便,因为我必须使用难以理解的 GUID 而不是人类可读的名称。
问题是:
pywin32
/底层 WinAPI 中是否有一种常用方法可以按名称查找上述 GUID? (不建议手动搜索注册表)- 或者用其他方法实例化带有名称的对象?
我尝试过但失败了:win32com.client.IDispatch(<class/interface name>)
、pythoncom.IID(<class/interface name>)
。当然,还浏览了 Net、MSDN 和 PyWin32 文档。
没有,也不可能有任何 "stock mechanism" 来实例化一个 class/query 接口的名称,因为它们的名称不能保证是唯一的,这与 GUID 不同。