2016-06-29 3 views
1

Вопрос, который у меня есть, связан с the GetItem() методом от pywinauto. Я смог запустить команду window.TreeView.GetItem('\\Desktop').Click() в Windows 7 и 10 и 32 бита, но он выдает exeption и не запускается при вызове из командной строки python для Windows 10 64 бит.Выбор детей из TreeView с использованием pywinauto

Это мой полный код я использую:

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

Вы используете 64-битный Python с 32-разрядным приложением? –

+0

Да, Python находится на 64 бит и приложение находится на 32 бит. Спасибо –

+0

Вы можете попробовать ветку пианино UIA или использовать 32-битный Python с pywinauto 0.5.4. –

ответ

1

Это происходит потому, что размеры структуры API Win32 для сообщений Windows различны для 32-разрядных и 64-разрядных приложений. Это зафиксировано в филиале МАУ (вы можете подождать 0.6.0, запланированного этим летом).

Еще один способ - это настроить 32-разрядный Python (и pywinauto) в дополнение к вашему 64-битовому Python (вам просто нужно заботиться о полном пути к python.exe).

Смежные вопросы