我试图通过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/

10-11 22:45
查看更多