我试图通过python以编程方式控制我的设备管理器(即禁用和重新启用设备)。但是,我在弄清楚“win32com.client.Dispatch(” Shell.Application“)” namespace 中的属性时遇到了麻烦。我所知道的唯一方法是获取名称并打印出来。我通过代码进行了调试,但是找不到任何有用的东西。
这是我到目前为止所拥有的
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
最佳答案
检查COM对象中属性的一种方法是使用python site-packages文件夹中combrowse.py
上的win32com\client
只需运行脚本(双击或在命令行/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中并不真正可用。关于python - 如何从win32com.client.dispatch获取属性("Shell.Application"),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9081928/