Что нового

Прочитать ToolTips всех программ в трее

Suppir

Продвинутый
Сообщения
967
Репутация
62
Добрый день!

У меня есть программка Google Drive в трее. Эта программа периодически заедает. При этом в трее меняется подсказка tooltip "Нет соединения". Я хочу перезапускать программу, когда такая подсказка появляется.

Подскажите, как получить подсказки (tooltip) всех приложений, которые находятся в трее?


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

Все, вопрос снят.

Код:
$hTray = ControlGetHandle('[Class:Shell_TrayWnd]', '', '[Class:ToolbarWindow32;Instance:1]')
	$iconCount = _GUICtrlToolbar_ButtonCount($hTray)
		For $i = 0 To $iconCount - 1
		$text = _GUICtrlToolbar_GetButtonText($hTray, $i)
		ConsoleWrite($text & @LF)
	Next


Как же быстро все решается с помощью AutoIt :smile:
 

AlexWolf

Новичок
Сообщения
8
Репутация
0
[Автоматизация] Re: Прочитать ToolTips всех программ в трее

У меня есть Амикон в трее. Эта программа находится в двух состояниях – есть соединение и нет соединения. Эти состояния отражаются в tooltip «Амикон..Есть соединение».. или "Нет соединения". Если нет соединения – я ручками правой кнопкой мыши открываю Контекстное меню Амикона, в котором в этом случае первая строка «Соединиться» активна и кликом организуется соединение..
Задача – ткнуть в контекстном меню Амикона Соединиться , когда эта строка меню активна. И, соответственно, ткнуть в Разъединиться – когда обратная ситуация..

Вычислил, что в трее номер тулбара Амикон 0.. Научился с помощью форума формировать Сообщения.. "Соединение установлено" и наоборот..
Код:
$hTray = ControlGetHandle('[Class:Shell_TrayWnd]', '', '[Class:ToolbarWindow32;Instance:1]')
	$text = _GUICtrlToolbar_GetButtonText($hTray, 0)	; Toolsbar = 0 для Амикона
	$len = StringLen($text)			; len=63 if is connect / ip-addres/
	If $len = 63 Then	MsgBox(0, "Амикон", "Соединение установлено")
	If $len = 48 Then	MsgBox(0, "Амикон", "Соединение отсутствует")



Вот «летопись» неравной схватки начинающего бойца..
Код:
MouseClick("right", 110, 10)
  ;ControlClick('[Class:Shell_TrayWnd]', '',"right", ) ; правой кнопкой контекстное меню
  ;Send("{RIGHT}")
  ;ControlClick('[CLASS:SciCalc]', '', '[CLASS:Button; INSTANCE:54]', "main", 4)



И сломал мозг.. В AutoIt я совсем недавно.. Как решить задачу - подскажите?.. Спасибо..
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
AlexWolf

Для примеров кодов Autoit используй специальный тэг - здесь с этим строго

Так можно кликнуть по иконке:
Код:
#NoTrayIcon
#include <GuiToolBar.au3>

$sToolTipString = 'Нет соединения'
$hTray = ControlGetHandle('[Class:Shell_TrayWnd]', '', '[Class:ToolbarWindow32;Instance:1]')

$iconCount = _GUICtrlToolbar_ButtonCount($hTray)

For $i = 0 To $iconCount - 1
	$text = _GUICtrlToolbar_GetButtonText($hTray, $i)
	If StringInStr($text, $sToolTipString) Then
		$aRect = _GUICtrlToolbar_GetButtonRect($hTray, $i)
		ControlClick($hTray, '', '', 'right', 1, $aRect[0], $aRect[1])
	EndIf
Next
 

AlexWolf

Новичок
Сообщения
8
Репутация
0
[Автоматизация] Re: Прочитать ToolTips всех программ в трее

Не работает.. По логике скрипта должно открыться контекстное меню Амикона..
Поставил Msg, чтобы посмотреть работу ф-ии с координатами и вот что она выдаёт
$aRect[0]=74, $aRect[1]=0 .. Вроде верно.. Я смотрел вьюером..
Попробовал заменить ф-ю на _GUICtrlToolbar_GetButtonRectEx - не даётся Даниле каменный цветок..
 
Верх