Pywinauto для управления медиаплеером - PullRequest
2 голосов
/ 10 февраля 2011

Я пытаюсь управлять Windows Media Player, используя Python с платформой Pywinauto. Я могу получить доступ к меню, например, с app.WindowsMediaPlayer.MenuSelect ("View-> GoTo-> Library") но когда я пытаюсь получить доступ к элементам библиотеки, используя диалоговое окно не удается сделать это. аналогично для панели задач слева нужно получить к ней доступ напрямую, без доступа к меню, нажав кнопку слева .... нужна помощь в этом ...

1 Ответ

0 голосов
/ 05 апреля 2011
>>> wmp.WindowsMediaPlayer.MenuSelect("View->Library")
>>> wmp.WindowsMediaPlayer.print_control_identifiers()
Control Identifiers:
WMPAppHost - 'WMPAppHost'   (L40, T152, R731, B648)
        'WMPAppHost' 'WMPAppHostWMPAppHost'
WMP Skin Host - ''   (L40, T188, R731, B588)
        '' '0' '1' 'WMP Skin Host'
ATL:5BB55150 - 'LibraryContainer'   (L40, T188, R731, B588)
        'ATL:5BB55150' 'LibraryContainer' 'LibraryContainerATL:5BB55150'
ATL:5BB550C0 - ''   (L190, T220, R193, B588)
        '2' 'ATL:5BB550C0'
ToolbarWindow32 - ''   (L40, T188, R40, B188)
        '3' 'Toolbar' 'Toolbar0' 'Toolbar1'
ToolbarWindow32 - 'View Toolbar'   (L416, T189, R461, B219)
        'Toolbar2' 'View Toolbar' 'View ToolbarToolbar'
ToolbarWindow32 - ''   (L705, T193, R729, B215)
        '4' 'Toolbar3'
ToolbarWindow32 - 'Command Toolbar'   (L44, T189, R414, B219)
        'Command Toolbar' 'Command ToolbarToolbar' 'Toolbar4'
Edit - 'Search'   (L465, T197, R663, B213)
        '5' 'Edit'
ToolbarWindow32 - ''   (L663, T194, R689, B214)
        '6' 'Toolbar5'
ToolbarWindow32 - ''   (L689, T194, R703, B214)
        '7' 'Toolbar6'
SysListView32 - 'PrimaryListView'   (L193, T220, R731, B588)
        'ListView' 'PrimaryListView' 'PrimaryListViewListView'
SysHeader32 - ''   (L193, T220, R716, B244)
        '8' 'Header'
SysTreeView32 - 'Library Treeview'   (L40, T220, R190, B538)
        'Library Treeview' 'Library TreeviewTreeView' 'TreeView'
ATL:5BB62F40 - 'ServiceBar'   (L40, T538, R190, B588)
        'ATL:5BB62F40' 'ServiceBar' 'ServiceBarATL:5BB62F40'
ToolbarWindow32 - 'Service Selector'   (L46, T541, R184, B585)
        'Service Selector' 'Service Selector0' 'Service Selector1' 'Service SelectorToolbar' 'Servic
e SelectorToolbar0' 'Service SelectorToolbar1' 'Toolbar7'
ToolbarWindow32 - 'Service Toolbar'   (L184, T541, R184, B585)
        'Service Toolbar' 'Service ToolbarToolbar' 'Toolbar8'
ToolbarWindow32 - 'Service Selector'   (L184, T541, R184, B585)
        'Service Selector2' 'Service SelectorToolbar2' 'Toolbar9'

PrimaryListView выглядит так, как будто это то, что нам нужно, поэтому давайте проверим, нарисовав рамку вокруг этого элемента управления.

>>> wmp.WindowsMediaPlayer.PrimaryListView.DrawOutline()
>>>

Кажется, хорошо :). Итак, давайте посмотрим, сможем ли мы получить элементы из этого списка

>>> wmp.WindowsMediaPlayer.PrimaryListView.ItemCount()
1217

пока все хорошо

>>> for item_index in range(wmp.WindowsMediaPlayer.PrimaryListView.ItemCount()):
...   print  wmp.WindowsMediaPlayer.PrimaryListView.GetItem(item_index)
...
{'text': u'', 'state': 0L, 'indent': 240, 'image': 0}
{'text': u'', 'state': 0L, 'indent': 240, 'image': 0}
{'text': u'', 'state': 0L, 'indent': 240, 'image': 0}
...

Хмм = теперь это выглядит не очень хорошо :( И там я застреваю без дополнительных исследований

...