2012-01-31 109 views
3

我試圖通過python控制我的設備管理器編程(即禁用和重新啓用設備)。但是,我無法弄清楚「win32com.client.Dispatch(」Shell.Application「)」的命名空間中的屬性是什麼。我知道該怎麼做才能得到名字並打印出來。我通過代碼做了一個調試運行,但是我找不到任何有用的東西。如何從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 

回答

5

一種方法來檢查COM對象的屬性是使用combrowse.py可在win32com\client在您的Python站點包文件夾中

只需運行該腳本(雙擊或從命令行/ python),並應顯示一個窗口h所有可用的com對象。在Registered Type Libraries你應該找到殼牌Microsoft Shell Controls And Automation
記者圖書館下你可以用下面的命令在python檢查:也

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

,使用gencache方法,你可以使用Tab檢查一些可用的方法,但爲全面清單檢查combrowse.py。唯一的問題是在combrowse.py上列出的一些方法在Python中並不真正可用。