Rya*_*vis 5 python com comtypes win32com
我试图从python中调用WindowsInstaller.Installer.ProductsEx,并且无法弄清楚如何使其工作.
这是我想从python调用的vbscript版本:
dim msi, products
set msi = CreateObject("WindowsInstaller.Installer")
set products = msi.ProductsEx("", "s-1-1-0", 7)
Run Code Online (Sandbox Code Playgroud)
我认为我的问题是ProductsEx一个带有3个参数的只读get属性,我不知道如何说服win32com或comtypes以这种方式调用它.
我试过了:
>>> import win32com.client
>>> msi = win32com.client.Dispatch('WindowsInstaller.Installer')
>>> products = msi.ProductsEx('', 's-1-1-0', 7)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<COMObject WindowsInstaller.Installer>", line 2, in ProductsEx
pywintypes.com_error: (-2147352573, 'Member not found.', None, None)
Run Code Online (Sandbox Code Playgroud)
和类似的使用comtypes:
>>> import comtypes.client
>>> msi = comtypes.client.CreateObject('WindowsInstaller.Installer')
>>> products = msi.ProductsEx['', 's-1-1-0', 7]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\comtypes\client\dynamic.py", line 46, in __getitem__
**dict(_invkind=comtypes.automation.DISPATCH_PROPERTYGET))
File "C:\Python27\lib\site-packages\comtypes\automation.py", line 768, in Invoke
args))
_ctypes.COMError: (-2147352571, 'Type mismatch.', ('TypeError: Parameter 1', (('', 's-1-1-0', 7),)))
Run Code Online (Sandbox Code Playgroud)
我想我接近了,comtypes因为DISPATCH_PROPERTYGET我想做什么.在两个库中,我尝试了我能想到的每种语法:
msi.ProductsEx(['', 's-1-1-0', 7])msi.ProductsEx[['', 's-1-1-0', 7]]msi.ProductsEx['']['s-1-1-0'][7]None 代替 ''如何使用python中的多个参数调用COM"get"属性?
| 归档时间: |
|
| 查看次数: |
466 次 |
| 最近记录: |