如何从win32com.client.dispatch("Shell.Application")获取属性
我正在尝试通过Python来控制我的设备管理器程序(也就是禁用和重新启用设备)。不过,我在弄清楚“win32com.client.Dispatch("Shell.Application")”这个命名空间里的属性时遇到了困难。我只知道怎么获取名称并打印出来。我调试了一下代码,但没找到什么有用的信息。
这是我目前的进展:
import win32com.client
shell = win32com.client.Dispatch("Shell.Application")
control_panel = shell.Namespace(3)
for item in control_panel.Items():
if item.Name == "Device Manager":
print item
break
这也没什么用:
control_panel.GetNamespace("MAPI")
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 516, in __getattr__
raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.GetNamespace
1 个回答
9
检查COM对象属性的一种方法是使用你在python的site-packages文件夹中的win32com\client
里的combrowse.py
脚本。
你只需运行这个脚本(可以双击或者在命令行/python中运行),然后会弹出一个窗口,里面列出了所有可用的COM对象。在Registered Type Libraries
下,你应该能找到对应的库,里面有Microsoft Shell Controls And Automation
下的Shell。
你可以用下面的命令在python中检查这个:
from win32com.client import gencache
shell = gencache.EnsureDispatch('Shell.Application')
print shell
另外,使用gencache
方法时,你可以按Tab
键查看一些可用的方法,但如果想要更全面的列表,还是查看combrowse.py
比较好。唯一的问题是,combrowse.py
中列出的一些方法在python中并不一定真的可用。