5

我正在尝试通过 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
4

1 回答 1

9

检查 COM 对象中的属性的一种方法是使用python 站点包文件夹中的combrowse.py可用win32com\client

只需运行脚本(双击或从命令行/python),就会出现一个包含所有可用 com 对象的窗口。在Registered Type Libraries您应该在对应的库下找到 ShellMicrosoft Shell Controls And Automation
您可以在 python 中使用以下命令进行检查:

from win32com.client import gencache
shell = gencache.EnsureDispatch('Shell.Application')
print shell

此外,使用该gencache方法,您可以使用Tab来检查一些可用的方法,但要获得全面的列表,请检查combrowse.py. 唯一的问题是,其中列出的一些方法combrowse.py在 python 中并不真正可用。

于 2013-09-30T14:57:17.563 回答