Что нового

Следим за изменениями в определенном окне приложения

A

at

Гость
Версия AutoIt: 3.3.6.1

Описание: Здравствуйте. Прошу подсказку.
Скрипт следит за определенным окном приложения на удаленном ПК. При разрывах связи в этом окне появляется надпись «Не подключено», а при возобновлении связи, появляется цифровое значение от -10 до 10.
Задача заключается в том, чтобы при разрывах связи скрипт ждал, когда надпись «Не подключено» сменится любым цифровым значением от -10 до 10 и выводил сообщение «Сервис готов».


Примечания: Примерно, как я вижу решение.

Код:
$vTextMonitor = ControlGetText('G', '', '[CLASS:TEdit; TEXT:Не подключено; INSTANCE:20]') ;получаем текст из окна приложения

WinGetHandle('G') ;получаем хэндл текущего окна
While WinExists($vTextMonitor) ;цикл (пока сушествует окно с надписью 'Не подключено')>>
        Sleep(100) ;пауза, чтобы процессор не грузился
	WEnd ;=>конец цикла
	
MsgBox(64,'Info', 'Сервис готов') ;выводим сообщение
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
at,
Попробуйте так:
Код:
HotKeySet('^1', '_Exit')

Global $sTitle = 'G'

While 1
	_Look($sTitle)
	Sleep(1000)
WEnd

Func _Look($s_Title, $i_TimeOut = 30000)
	Local $s_TEdit = '[CLASS:TEdit; INSTANCE:20]', $s_TextControl = 'Не подключено', $i_Start
	If WinExists($s_Title) Then
		If StringInStr(ControlGetText($s_Title, '', $s_TEdit), $s_TextControl) Then
			$i_Start = TimerInit()
			ToolTip('Не подключено', 0, 0, 'Info', 2)
			While StringInStr(ControlGetText($s_Title, '', $s_TEdit), $s_TextControl)
				If TimerDiff($i_Start) > $i_TimeOut Then ExitLoop
				Sleep(500)
			WEnd
			If StringRegExpReplace(ControlGetText($s_Title, '', $s_TEdit), '[^0-9]', '') Then
				ToolTip('Сервис готов', 0, 0, 'Info', 1)
			Else
				ToolTip('Error', 0, 0, 'Error', 3)
			EndIf
		ElseIf StringRegExpReplace(ControlGetText($s_Title, '', $s_TEdit), '[^0-9]', '') Then
			ToolTip('Сервис готов', 0, 0, 'Info', 1)
		Else
			ToolTip('')
		EndIf
	Else
		ToolTip('')
	EndIf
EndFunc   ;==>_Look

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 
Автор
A

at

Гость
madmasles Объясни пожалуйста, почему переменная $sTitle далее в тексте скрипта идет $s_Title.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
622
at
название переменных внутри функций роли не играют. главное при вызове функции ей передать нужный параметр.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
at [?]
почему переменная $sTitle далее в тексте скрипта идет $s_Title.
Это для удобочитаемости. Я тоже предпочитаю переменные, которые используются внутри функций обозначать с подчёркиванием.
 
Автор темы Похожие темы Форум Ответы Дата
joiner Примеры и рабочие проекты 12
Верх