Автор Тема: Следим за изменениями в определенном окне приложения  (Прочитано 4218 раз)

0 Пользователей и 1 Гость просматривают эту тему.

at

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

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

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

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

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

« Последнее редактирование: Сентябрь 04, 2011, 17:52:05 от at »

Русское сообщество AutoIt


Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
at,
Попробуйте так:
Код: AutoIt [Выделить]
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

« Последнее редактирование: Август 21, 2011, 00:25:10 от madmasles »

Помечен как лучший ответ пользователем Отправлен Сегодня в 13:33:14

at

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

Оффлайн Kaster [?]

  • Бритва, Бритва Оккама
  • Глобальный модератор
  • *
  • Сообщений: 4020
  • Репутация: 622
  • Пол: Мужской
  • Мой Аватар, он лучший самый
    • Награды
  • Версия AutoIt: 3.3.14.0
at
название переменных внутри функций роли не играют. главное при вызове функции ей передать нужный параметр.
Конференция посвященная AutoIt на jabber.ru - [email protected]
Как попасть на конференцию читаем тут


Русское сообщество AutoIt

Re: Следим за изменениями в определенном окне приложения
« Ответ #3 Отправлен: Август 21, 2011, 00:21:31 »

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 4003
  • Репутация: 960
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
at  [?]
Цитировать
почему переменная $sTitle далее в тексте скрипта идет $s_Title.
Это для удобочитаемости. Я тоже предпочитаю переменные, которые используются внутри функций обозначать с подчёркиванием.

Скорблю и помню.




Русское сообщество AutoIt

Re: Следим за изменениями в определенном окне приложения
« Ответ #4 Отправлен: Август 21, 2011, 00:56:41 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
6 Ответов
3782 Просмотров
Последний ответ Февраль 27, 2012, 10:31:14
от AZJIO
12 Ответов
9119 Просмотров
Последний ответ Декабрь 15, 2012, 13:05:21
от joiner
6 Ответов
4597 Просмотров
Последний ответ Январь 12, 2013, 03:26:39
от BrainOff
1 Ответов
1524 Просмотров
Последний ответ Январь 25, 2013, 06:11:29
от madmasles
0 Ответов
1274 Просмотров
Последний ответ Январь 25, 2013, 06:11:49
от madmasles
4 Ответов
5819 Просмотров
Последний ответ Октябрь 09, 2013, 23:27:12
от nightfmare
4 Ответов
1267 Просмотров
Последний ответ Март 27, 2015, 15:10:37
от samaelgelb
0 Ответов
481 Просмотров
Последний ответ Март 27, 2015, 14:25:48
от madmasles
3 Ответов
1061 Просмотров
Последний ответ Март 01, 2017, 07:39:13
от reset86
0 Ответов
72 Просмотров
Последний ответ Апрель 22, 2018, 15:19:03
от Dima1337