Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как кликнуть по кнопке ToolStripButton

Ответить
Настройки темы
[решено] Как кликнуть по кнопке ToolStripButton

Новый участник


Сообщения: 25
Благодарности: 0

Профиль | Отправить PM | Цитировать


есть приложение, у которого есть есть несколько кнопок класса ToolStripButton. Приложение написано на С#. Как можно кликать по этим кнопкам?

Отправлено: 18:20, 13-03-2009

 

Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Цитата alexey_a:
ToolStripButton »
а кнопки не на tool bar-е? а то можно попытаться:

Код: Выделить весь код
#Include <GuiToolBar.au3>

Local $hToolbar = ControlGetHandle('[CLASS:SciTEWindow]', '', '[CLASS:ToolbarWindow32; INSTANCE:1]')
_GUICtrlToolbar_ClickIndex($hToolbar, 16)
и ClassnameNN у них одинаковый?

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 20:53, 13-03-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата alexey_a:
Как можно кликать по этим кнопкам? »
Примерно так:
Код: Выделить весь код
ControlClick("Title", "", "[CLASS:ToolStripButton]")

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 22:58, 13-03-2009 | #3


Новый участник


Сообщения: 25
Благодарности: 0

Профиль | Отправить PM | Цитировать


Кнопка находится на панели 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 и потом уже с помощью методов этого объекта нажимать на кнопки. Проблема в том, что я не знаю как это сделать и можно ли вообще это сделать.
Ни один из предложенных вариантов не работает.

Отправлено: 14:49, 16-03-2009 | #4


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


вот так можно получить хендл панели на которой распологаются кнопки...
$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
если прям на них, думаю тогда и непосредственный хэндл кнопки можно вытащить...

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 18:38, 16-03-2009 | #5


Новый участник


Сообщения: 25
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата proxy:
вот так можно получить хендл панели на которой распологаются кнопки...
$hHwd = ControlGetHandle('[CLASS:WindowsForms10.Window.8.app.0.218f99c]', '', '[CLASS:WindowsForms10.Window.8.app.0.218f99c; INSTANCE:29]')
так пробовал, с примером выше? уже есть хэндл на эту панель, далее искать метод как тыкнуть на нужную кнопку... »
Пробовал - не получается.

Цитата proxy:
а этот текст прям на кнопках:
toolStrip1
toolStrip2
toolStrip3
toolStrip4
toolStrip5
...
ToolStrip
ToolStrip
ToolStrip
ToolStrip
ToolStrip
если прям на них, думаю тогда и непосредственный хэндл кнопки можно вытащить... »
Этот текст находится не на кнопках. Просто на основном окне находится 5 панелей типа ToolStrip. а н акнопках находятся картинки.

Отправлено: 11:27, 17-03-2009 | #6


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


проще говоря есть 5 штук toolStrip панелей на которых есть кнопочки.
т.е. toolStrip панели - очень похожи на toolBar, так?
тогда стоит искать решение через win api.

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 15:24, 17-03-2009 | #7


Новый участник


Сообщения: 25
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата proxy:
тогда стоит искать решение через win api. »
А можно чуть подробнее, как примено с помощью Win API функций можно это сделать?

Отправлено: 11:06, 18-03-2009 | #8


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


это только возможно ))
но если нет возможности получить Hadle кнопки, а только целой панели...
тут есть такая хитрость - к примеру как это делает _GUICtrlToolbar_ClickButton:

Код: Выделить весь код
Func _GUICtrlToolbar_ClickButton($hWnd, $iCommandID, $sButton = "left", $fMove = False, $iClicks = 1, $iSpeed = 1)
    If $Debug_TB Then _GUICtrlToolbar_ValidateClassName($hWnd)
    Local $tPoint, $tRect, $iX, $iY, $iMode, $aPos

    $tRect = _GUICtrlToolbar_GetButtonRectEx($hWnd, $iCommandID)
    $tPoint = _WinAPI_PointFromRect($tRect)
    $tPoint = _WinAPI_ClientToScreen($hWnd, $tPoint)
    _WinAPI_GetXYFromPoint($tPoint, $iX, $iY)
    $iMode = Opt("MouseCoordMode", 1)
    If Not $fMove Then
        $aPos = MouseGetPos()
        _WinAPI_ShowCursor(False)
        MouseClick($sButton, $iX, $iY, $iClicks, $iSpeed)
        MouseMove($aPos[0], $aPos[1], 0)
        _WinAPI_ShowCursor(True)
    Else
        MouseClick($sButton, $iX, $iY, $iClicks, $iSpeed)
    EndIf
    Opt("MouseCoordMode", $iMode)
EndFunc   ;==>_GUICtrlToolbar_ClickButton
т.е. может попробовать получить X и Y положение панели и потом незаметно сдвинуть курсор
на нужно колличество пиксилей по X и Y, выслать MouseClick, вернуть курсор на место
и снова отобразить его..

хм...

Цитата alexey_a:
Win API »
до этого думал, что _GUICtrlToolbar_ClickButton
как то поумномы вытаскивает Handle кнопки на панели,
потому и предложил......а окозалось все так тривиально )))))

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 11:35, 18-03-2009 | #9


Новый участник


Сообщения: 25
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата proxy:
т.е. может попробовать получить X и Y положение панели и потом незаметно сдвинуть курсор
на нужно колличество пиксилей по X и Y, выслать MouseClick, вернуть курсор на место
и снова отобразить его.. »
работать с координатами мне не подходит, так разрешение экрана может быть разным да и нет гарантии что девелоперы не поменяют расположение кнопки. Плюс есть одно "но", хоть в МСДН ничег оне сказано про то, что с помощью sendmessage можно управлять контролом ToolStripButton.

Отправлено: 18:30, 18-03-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как кликнуть по кнопке ToolStripButton

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Как посмотреть html код, если нельзя кликнуть правой кнопкой мыши? Третий Хочу все знать 3 03-10-2009 20:30
<INPUT TYPE=FILE>: Как сменить надпись и шрифт на самой кнопке? BacuJIuu KypraHoB Вебмастеру 10 05-05-2009 15:46
[решено] Как кликнуть на кнопку в IE r35TnX AutoIt 2 10-03-2009 20:23
.NET - [решено] Задание картинки в ToolStripButton Delirium Программирование и базы данных 7 03-12-2008 16:10
Delphi - Delphi. Как кликнуть из программы по ссылке в открытом IE? IkaMazini Программирование и базы данных 2 07-10-2004 12:53




 
Переход