当我看到pythonwin中的COM浏览器时,我正在寻找一个python Zune(windows媒体的东西)api。我找到了一个叫ZuneWmdu Type Library(1.0)的东西。我在这个库上使用了makepy,它生成了一个文件
9FE20C05-81CE-46D7-9C56-FD97A865BBB8x0x1x0.py
python 2.7.3Libsite-packageswin32comgen_py
我不知道该传入什么
win32com.client.gencache.EnsureDispatch('???')
I tried calling
win32com.client.gencache.EnsureDispatch('9FE20C0581CE46D79C56FD97A865BBB8')
导致异常(pywintypes.com_error)
(.py文件的x0x1x0部分似乎无关)
win32com.client.gencache.GetModuleForCLSID('9FE20C05-81CE-46D7-9C56-FD97A865BBB8')
and
win32com.client.gencache.GetModuleForProgID('9FE20C0581CE46D79C56FD97A865BBB8')
都返回None。我被困在这里了,我需要找到库的名称(对于itunes,你可以调用:
)win32com.client.gencache.EnsureDispatch('iTunes Application')
例如)或者如何用GUID
调用模块或者甚至有人告诉我,我做错了什么。
CoClass的名称可以在生成文件的注释中找到(它们基于来自pythoncom.ProgIDFromCLSID
的信息)。
我没有Zune,但是,如果,例如,我运行
win32com.client.gencache.EnsureModule('{420B2830-E718-11CF-893D-00A0C9054228}', 0, 1, 0)
这将生成一个名为420B2830-E718-11CF-893D-00A0C9054228x0x1x0.py
的文件,我可以从中找出相关的名称:
C:UsersusernameAppDataLocalTempgen_py3.6>grep 'known by' *.py
420B2830-E718-11CF-893D-00A0C9054228x0x1x0.py:# This CoClass is known by the name 'Scripting.Dictionary'
420B2830-E718-11CF-893D-00A0C9054228x0x1x0.py:# This CoClass is known by the name 'Scripting.Encoder'
420B2830-E718-11CF-893D-00A0C9054228x0x1x0.py:# This CoClass is known by the name 'Scripting.FileSystemObject'