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 オブジェクトの属性を確認する 1 つの方法は、Python の site-packages フォルダーでcombrowse.py利用可能な を使用することです。win32com\client

スクリプトを実行するだけで (ダブルクリックまたはコマンド ライン/python から)、使用可能なすべての 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.pyPython 内で実際に使用できないことです。

于 2013-09-30T14:57:17.563 に答える