Доступ к кнопке панели задач Window (т.е. запуск приложений) с помощью pywinauto - PullRequest
0 голосов
/ 07 октября 2018

Я хотел бы получить доступ к кнопкам, которые находятся на панели задач окна (например, IE, Explorer, ...).Мне нужен идентификатор автоматизации какой-то кнопки.

Если я использовал инструмент автоматизации Visual UI, я вижу, что кнопки находятся на панели инструментов «Запуск приложений» (класс MSTaskListWClass).

(Извините, я не могу опубликовать фотографию, потому что это мой первый пост)

Я пытаюсь:

>>> taskbar.RunningApplications
<pywinauto.application.WindowSpecification object at 0x02F5C830>
>>> taskbar.RunningApplications.children()
[]

=> Я не понимаю, потому чтопанель задач запущенных приложений не пустая (по крайней мере, текущее приложение cmd)

Я также пытаюсь:

from pywinauto.application import Application
from pywinauto import Desktop
import pywinauto 
import re as regex

def dump(o):
    s = ("name %s ClassName %s Hdler %s" % (o.name.encode('utf-8'),o.class_name.encode('utf-8'),hex(o.handle)))
    return s 

# Point d'entree l 1
l1 = pywinauto.findwindows.find_elements(class_name_re = 'Shell_TrayWnd')
print("Lg %d - %s" % (len(l1),dump(l1[0])))   

l2 = pywinauto.findwindows.find_elements(class_name_re = 'ReBarWindow32')
print l2    

shell_TrayWnd = l1[0]
l3 =  shell_TrayWnd.children()  
for i in range(len(l3)): 
   if regex.search('MSTaskSwWClass',l3[i].class_name):
      print ("Fuundl3[%2d] %s" % (i, dump(l3[i]))) 
      listButton = l3[i].children()[0]

print("listButton  %s" % (dump(listButton))) 
print listButton.children()

Это примерная проблема: список запущенных приложений кажется пустым.

Итак, мои вопросы:

  • Неправильное использование pywauto?
  • Являются ли кнопки дочерними по отношению к элементу GUI MSTaskListWClass?Инструмент Visual UI Automation предоставляет 0x00 в качестве обработчика для каждой кнопки.Это странно
  • Ошибка в pywinauto?Кажется, проблема в pywinauto 0.61 или 0.65
  • Это невозможно с pywinauto?
  • Если мне удастся получить доступ к кнопке запущенного приложения, можно ли прочитать поле AutomationId?

Спасибо за идеи или любые указатели, PHLinux

1 Ответ

0 голосов
/ 08 октября 2018

find_elements - это функция низкого уровня, не рекомендуемая для прямого использования (я не упоминаю ее в Руководстве по началу работы ).Этот код работает для меня:

from pywinauto import Application

app = Application(backend="uia").connect(title='Taskbar') # backend is important!!!
#app.Taskbar.dump_tree() # was needed for next step, just copied child_window spec from here

running_apps = app.Taskbar.child_window(title="Running applications", control_type="ToolBar")
print([w.window_text() for w in running_apps.children()])
# running_apps.dump_tree() # another debug print for auto_id properties advice
...