2016-11-04 29 views
0

pywin32文档进行客户端COM显示实例化COM对象这一基本方法实例化COM对象Manipulating the zone identifier to specify where a file was download from – The Old New Thing - MSDN blogs。该类,如HKEY_CLASSES_ROOT\CLSID\{0968e258-16c7-4dba-aa86-462dd61e31a3}所示,注册表没有相应的ProgID不具有由类/接口名PROGID

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

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


的问题是:

  • 有没有股票方式pywin32 /基础WinAPI的通过名称来查找上述的GUID? (不建议手动搜索注册表)
  • 或者也许有其他方式来实例化名称的对象?

我尝试和失败:win32com.client.IDispatch(<class/interface name>)pythoncom.IID(<class/interface name>)。当然,也可以通过Net,MSDN和PyWin32文档查看。

+0

将不知所云的GUID分配给一个很好命名的变量,这基本上是ProgID为您做的。 –

+0

@MarkTolonen这实际上是一个有趣的问题:ProgIDs是否像GIUDs一样独特?如果是,那么这是如何促进的?毕竟,他们的“代”背后没有“实用的唯一性”算法。 –

+1

[编程标识符(ProgID)是一个可以与CLSID关联的注册表项。像CLSID一样,ProgID标识一个类,但精度较低,因为它不保证是全局唯一的。](https://msdn.microsoft.com/en-us/library/windows/desktop/dd542719(v = vs 0.85)的.aspx) –

回答

0

没有,也不可能是任何“股票机制”实例化一个类/查询一个接口的名称,因为他们的名字不保证是唯一的,不像GUID。