Что нового

Как узнать состояние кнопки в чужом приложении.

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
В МТСовские 3g модемы вшита небольшая тулза позволяющая управлять подключением, смотреть статистику потребления трафика, силы сигнала и тд и тп. Все бы ничего, но эти черти не догодались сделать так, чтобы текущее состояние сигнала отображалось на значке в трее, в место этого там красуется самодовольное яйцо. Мой вопрос заключается в следующем:

Мы имеем программу, в окне которой отображается состояние сигнала, элемент его отображающий по неизвестным мне причинам имеет класс Button, там в зависимости от сигнала рисуется от 0 до 5 полосок, независимо сколько полосок там отображается в любой момент времени, Au3Info всегда выводит нам следующие данные по контролу:
>>>> Control <<<<
Class: Button
Instance: 37
ClassnameNN: Button37
Name:
Advanced (Class): [CLASS:Button; INSTANCE:37]
ID:
Text:
Position: 5, 409
Size: 22, 21
ControlClick Coords: 11, 15
Style: 0x5000000B
ExStyle: 0x00000000
Handle: 0x00060366

Рисунок элемента приложен ниже
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Чет, скока не глядел, а после фразы
Belfigor [?]
Мой вопрос заключается в следующем:
так вопроса и не увидел. надо вытащить инфу с контрола?
у меня нет ни модема, ни инета и ни тулзы от мтс, посему проверить не могу. но могу порекомендовать использовать одну из след. функций
Код:
_GUICtrlButton_GetImage 
_GUICtrlButton_GetText

в зависимости от того, как конкретно передается состояние об уровне сигнала контролу
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
А эта ToolTip появляется когда наводишь курсор на иконку в трее?
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
В том то и проблема что текста контрол не несет, а вот картинку выдернуть попробую, спасибо за совет,

Нет, тултип появляется когда навожу на сам контрол в открытом окне программы.


Добавлено:
Сообщение автоматически объединено:

Я так понял
Код:
_GUICtrlButton_GetImage($btn)

работает только когда я заранее в своей программе задам эту кнопку
Код:
$btn = GUICtrlCreateButton()

Потому что я с помощью Au3Info узнаю хендл кнопки, вставляю его в код и получаю при возврате 0
Код:
#Include <GuiButton.au3>
MsgBox(0,'',_GUICtrlButton_GetImage(0x00060366))




Добавлено:
Сообщение автоматически объединено:

Так тоже не работает :(
Код:
#Include <GuiButton.au3>
$handle = ControlGetHandle("МТС Коннект", "", "Button37")
MsgBox(0,'',_GUICtrlButton_GetImage($handle))
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
я тут подумал, может это и не батон вовсе? вдруг это хитрый маневр неприятеля, чтобы запутать бедного нашего брата? ;D уж очень он больше на разноцветный Label похож
 

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
А можно все данные из Au3Info, может там где в других местах промелькнет этот сигнал, не обязательно в кнопке.
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Вот суммари при наведении на значек сигнала.
>>>> Window <<<<
Title: МТС Коннект
Class: #32770
Position: 406, 152
Size: 840, 500
Style: 0x94CF0A4C
ExStyle: 0x00010100
Handle: 0x000F05D6

>>>> Control <<<<
Class: Button
Instance: 7
ClassnameNN: Button7
Name:
Advanced (Class): [CLASS:Button; INSTANCE:7]
ID:
Text:
Position: 5, 409
Size: 22, 21
ControlClick Coords: 11, 10
Style: 0x5000000B
ExStyle: 0x00000000
Handle: 0x003B0716

>>>> Mouse <<<<
Position: 425, 628
Cursor ID: 0
Color: 0xFFFFFF

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<
Имя профиля:
МТС ДНС
&Отключить
EDGE
MTS RUS
0.00 кбит/с
0.00 кбит/с


>>>> Hidden Text <<<<
&Функции...
Время подключения:
Выгруженные/загруженные данные:
01:44:13
1,937,550 Bytes
NDIS
NDIS:
WLAN:
Подключить
ADSL:
Dialog
-
1
2
3
Call
ring off
4
5
6
7
8
9
*
0
#
PhoneBook
C
+
Forward
本机号码:123456
紧急呼叫提示
系统时间 00:00:00

2006年01月01日 星期日
calling
talking
holding
+
Speaker
MIC
VideoCall
请输入
Входящие
Счетчик текстовых сообщений:25
iSAPUSplitterCtrl
 

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
Если же вопрос стоит в получении уровня сигнала, то считывая цвет пикселей можно таким корявым способом получить число палок.
А по кнопке я бы еще прошелся другими программами(WinSpy,inspect32) бывало показывали интересные вещи не доступные Au3Info.
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Считывать цвет пикселей - оно не вопрос, но как это прочитать в свернутом в трей окне? :smile:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Belfigor сказал(а):
Считывать цвет пикселей - оно не вопрос, но как это прочитать в свернутом в трей окне? :smile:
Вот в этой теме было что-то похожее. Правда, там нужно было найти пиксель в неактивном оке.
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
У меня МТС Коннект.
Мне эта прога сразу как то не очень понравлась и я пользуюсь стандартным подключением.
А статистику скорости и трафика мне программа DUTraffic показывает (без уровня сигнала правда).
Вот так показывает (картинка DuTraff.jpg)
На диске от МТС есть папка Manual.
В ней User Manual.pdf
Там раздел есть "Создание стандартного удаленного подключения Windows"
Там все пошагово написано. Надо создать его.
Теперь можно пользоваться этим подключением, а не программой Easy Wireless Net
Запуск в AutoIt этого подключения у меня так:
Run(@ComSpec & " /c " & 'start rasdial ums mobile internet', "", @SW_MINIMIZE)
где ums - имя подключения
mobile - логин
internet - пароль
Отключение:
Run(@ComSpec & " /c " & 'rasdial ums /disconnect', "", @SW_MINIMIZE)
Попробую, кончно, с программой Easy Wireless Net разобраться
(как ты спрашивал), если удасться и знаний хватит.
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Для подключения я пользуюсь программой MDMA,но мне кретично чтобы в трее или внешнем маленьком окошке отображался сигнал и при том не занимал много места на экране.
 
Верх