如何从win32com.client.dispatch获取属性(“Shell.Application”)

时间:2012-01-31 15:14:16

标签: python windows-7 win32com

我试图通过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 个答案:

答案 0 :(得分:6)

检查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中并不真正可用。