2016-06-29 5 views
1

私が持っている問題は、pywinautoからthe GetItem()メソッドに関連しています。私はwindow.TreeView.GetItem('\\Desktop').Click()コマンドをWindows 7と10両方で32ビットで実行することができましたが、例外をスローし、Windows 10 64ビットのpythonコマンドラインから呼び出しても実行されません。pywinautoを使用してTreeViewから子を選択

これは私が使用して私の完全なコードです:

import pywinauto 

pwa_app = pywinauto.application.Application() 

w_handle = pywinauto.findwindows.find_windows(title=u'Browse For Folder', class_name='#32770')[0] 

window = pwa_app.window_(handle=w_handle) 

window.TreeView.GetItem('\\Desktop').Click() 

これらは私が受け取るエラーです:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 

    File "C:\Python27\lib\site-packages\pywinauto\controls\common_controls.py", line 1374, in GetItem 
    texts = [r.Text() for r in roots] 

    File "C:\Python27\lib\site-packages\pywinauto\controls\common_controls.py", line 872, in Text 
    return self._readitem() 

    File "C:\Python27\lib\site-packages\pywinauto\controls\common_controls.py", line 1263, in _readitem 
    raise ctypes.WinError() 

WindowsError: [Error 0] The operation completed successfully. 

Folder Dialog content

私は私ができることを言及する必要がツリービューのルートにアクセスするのはwindow.TreeView.GetItem([0]).Click()

+0

32ビットアプリケーションで64ビットPythonを使用していますか? –

+0

はい、Pythonは64ビットであり、アプリケーションは32ビットです。ありがとう –

+0

pywinautoのUIAブランチを試してみるか、pywinuto 0.5.4で32ビットPythonを使用してください。 –

答えて

1

WindowsメッセージのWin32 API構造体サイズが32ビットと64ビットのアプリケーションで異なるために発生します。 UIA支店で修正されました(今夏に予定されている0.6.0を待つことができます)。

もう一つの方法は、64ビットPythonに加えて32ビットPython(およびpywinauto)を設定することです(フルパスをpython.exeにするだけです)。

関連する問題