Как кликнуть по кнопке ToolStripButton
есть приложение, у которого есть есть несколько кнопок класса ToolStripButton. Приложение написано на С#. Как можно кликать по этим кнопкам?
|
Цитата:
Код:
#Include <GuiToolBar.au3> |
Цитата:
Код:
ControlClick("Title", "", "[CLASS:ToolStripButton]") |
Кнопка находится на панели ToolStrip. AutoIt window Info тул выдает следующую инфу для этой панели:
>>>> Window <<<< Title: Intel® GPA System Analyzer Class: WindowsForms10.Window.8.app.0.218f99c Position: 176, 232 Size: 1100, 905 Style: 0x16CF0000 ExStyle: 0x00050100 Handle: 0x01C8073E >>>> Control <<<< Class: WindowsForms10.Window.8.app.0.218f99c Instance: 29 ClassnameNN: WindowsForms10.Window.8.app.0.218f99c29 Advanced (Class): [CLASS:WindowsForms10.Window.8.app.0.218f99c; INSTANCE:29] ID: 461078 Text: toolStrip1 Position: 232, 4 Size: 856, 27 ControlClick Coords: 675, 10 Style: 0x56000000 ExStyle: 0x00010000 Handle: 0x00070916 >>>> Mouse <<<< Position: 1087, 276 Cursor ID: 0 Color: 0xECE9D8 >>>> StatusBar <<<< >>>> Visible Text <<<< 082 : 32 : 00 : 00 Current FPS Target FPS 30 16 State Overrides Disable all overrides toolStrip1 toolStrip2 toolStrip3 toolStrip4 toolStrip5 Find: toolStrip1 Zoom - low System Overview ToolStrip ToolStrip ToolStrip ToolStrip ToolStrip chartDundas1 >>>> Hidden Text <<<< Этот же тул не распознает отдельно кнопки типа ToolStripButton. Проблема в том, что AutoIt напрямую не может работать с панелей класса ToolStrip. Проблема может быть решена следующим образом (как мне кажется): приаттачится в процессу, получить ссылку на объект класса ToolStrip и потом уже с помощью методов этого объекта нажимать на кнопки. Проблема в том, что я не знаю как это сделать и можно ли вообще это сделать. Ни один из предложенных вариантов не работает. |
вот так можно получить хендл панели на которой распологаются кнопки...
$hHwd = ControlGetHandle('[CLASS:WindowsForms10.Window.8.app.0.218f99c]', '', '[CLASS:WindowsForms10.Window.8.app.0.218f99c; INSTANCE:29]') так пробовал, с примером выше? уже есть хэндл на эту панель, далее искать метод как тыкнуть на нужную кнопку... а этот текст прям на кнопках: toolStrip1 toolStrip2 toolStrip3 toolStrip4 toolStrip5 ... ToolStrip ToolStrip ToolStrip ToolStrip ToolStrip если прям на них, думаю тогда и непосредственный хэндл кнопки можно вытащить... |
Цитата:
Цитата:
|
проще говоря есть 5 штук toolStrip панелей на которых есть кнопочки.
т.е. toolStrip панели - очень похожи на toolBar, так? тогда стоит искать решение через win api. |
Цитата:
|
это только возможно ))
но если нет возможности получить Hadle кнопки, а только целой панели... тут есть такая хитрость - к примеру как это делает _GUICtrlToolbar_ClickButton: Код:
Func _GUICtrlToolbar_ClickButton($hWnd, $iCommandID, $sButton = "left", $fMove = False, $iClicks = 1, $iSpeed = 1) на нужно колличество пиксилей по X и Y, выслать MouseClick, вернуть курсор на место и снова отобразить его.. хм... Цитата:
как то поумномы вытаскивает Handle кнопки на панели, потому и предложил......а окозалось все так тривиально ))))) |
Цитата:
|
Так дело в том, что бы у панели - на которой кнопки всегда был один и тот же класс.
Тогда по классу - можно будет найти положение этой панели и уже отталкиваясь от положения панели вычислить положение кнопки. Разрешение экрана тут не влияет. Цитата:
или высть необходимость мега универсальной утилиты на века? :) Посмотрите код выше - там все доходчиво.......помойму ))) |
такое решение я бы назвал workaround и оно уже реализовано. но хочется чтобы я точно знал, что нажимаю конкретную кнопку, а не просто тыкаю мышкой по координатам. Спасибо за предложенный вариант!!!
|
Нашел решение: попросил девелоперов разместить каждый ToolStripButton на отдельной ToolStrip панели.
|
Цитата:
|
Время: 13:35. |
Время: 13:35.
© OSzone.net 2001-