Что нового

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

  • Автор темы at
  • Дата начала
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 319
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
Верх