Автор Тема: Мониторинг рабочего стола  (Прочитано 1137 раз)

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

Оффлайн Felix-irk [?]

  • Новичок
  • *
  • Сообщений: 6
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Версия AutoIt: 3.5.4

Описание:
Приветсвую Вас, светлые головы программирования! Сразу скажу, что с программой AutoIt знаком ровно один день, выяснил что с помощью неё можно решить мою задачу.
А задача состоит в мониторинге изменения на рабочем столе (мониторинг индикации иконок в определенной программе) с звуковом оповещением. Иными словами если в программе (на участке экрана) меняется цвет некоторых пикселей, то воспроизводится звук.

Нашел некоторые наработки
Код: AutoIt [Выделить]
<job>
 <object id="[abbr=AutoIt v3 is a freeware BASIC-like scripting language designed for automating  the Windows GUI and general scripting][abbr=AutoIt v3 is a freeware BASIC-like scripting language designed for automating  the Windows GUI and general scripting]AIt[/abbr][/abbr]"  progid="AutoItX3.Control"/>
 <object id="sapi" progid="SAPI.SpVoice"/>
 <script language="JScript">
 
 var x0=0,y0=0,x1=100,y1=100;     // фрагмент экрана от 0:0 до 100:100
 
 var crc0=[abbr=AutoIt v3 is a freeware BASIC-like scripting language designed for automating  the Windows GUI and general scripting][abbr=AutoIt v3 is a freeware BASIC-like scripting language designed for automating  the Windows GUI and general scripting]AIt[/abbr][/abbr].pixelChecksum(x0,y0,x1,y1);
 
 while(true)
 {
  WSH.sleep(500);         // проверка каждые 0.5 sec
  var crc=[abbr=AutoIt v3 is a freeware BASIC-like scripting language designed for automating  the Windows GUI and general scripting][abbr=AutoIt v3 is a freeware BASIC-like scripting language designed for automating  the Windows GUI and general scripting]AIt[/abbr][/abbr].pixelChecksum(x0,y0,x1,y1);
  if(crc!=crc0)
  {
   crc0=crc;
   sapi.speak("Alarm! Picture changed.") // орет человеческим голосом )
  }
 }
 
 </script>
</job>


 может чем то смогут помочь или направить.

Буду очень признателен за любую помощь!

Примечания:
« Последнее редактирование: Март 12, 2017, 11:19:56 от Felix-irk »

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

Мониторинг рабочего стола
« Отправлен: Март 12, 2017, 10:57:31 »

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3858
  • Репутация: 953
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Мониторинг рабочего стола
« Ответ #1, Отправлен: Март 12, 2017, 11:14:29 »
Felix-irk

ПредупреждениеЗа нарушение правил форума (пункт В.11):
Цитировать
Любые отрывки AutoIt кода необходимо заключать в тег [autoit] (подробнее), а обычный код соответственно в тег [code] (подробнее). Также большие выдержки текста помещайте под тег [spoiler] (подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.

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




Оффлайн hedji [?]

  • Новичок
  • *
  • Сообщений: 124
  • Репутация: 19
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Мониторинг рабочего стола
« Ответ #2, Отправлен: Март 12, 2017, 11:27:55 »
Код: AutoIt [Выделить]
$begin_screen = PixelChecksum(0, 0, 100, 100, 1)
While 1
    $now_screen = PixelChecksum(0, 0, 100, 100, 1)
    if $begin_screen <> $now_screen Then
        SoundPlay(@ScriptDir & "\tadam.wav", 0)
    EndIf
    Sleep(1000)
WEnd
 


Оффлайн Felix-irk [?]

  • Новичок
  • *
  • Сообщений: 6

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Мониторинг рабочего стола
« Ответ #3, Отправлен: Март 12, 2017, 11:39:13 »
Спасибо, tadam.wav класть в каталог с файлом ua3?
Разобрался ) Как оказывается все просто!

« Последнее редактирование: Март 12, 2017, 11:50:19 от Felix-irk »

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

Re: Мониторинг рабочего стола
« Ответ #3 Отправлен: Март 12, 2017, 11:39:13 »

Оффлайн hedji [?]

  • Новичок
  • *
  • Сообщений: 124
  • Репутация: 19
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Мониторинг рабочего стола
« Ответ #4, Отправлен: Март 12, 2017, 11:49:51 »
Спасибо, tadam.wav класть в каталог с файлом ua3?

да, либо поменять @ScriptDir & "\tadam.wav" на путь к нужному файлу.

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3858
  • Репутация: 953
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Мониторинг рабочего стола
« Ответ #5, Отправлен: Март 12, 2017, 11:58:28 »
Felix-irk
Код: AutoIt [Выделить]
SoundPlay(@WindowsDir &"\Media\tada.wav", 1)


Оффлайн Felix-irk [?]

  • Новичок
  • *
  • Сообщений: 6

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Мониторинг рабочего стола
« Ответ #6, Отправлен: Март 12, 2017, 12:02:14 »
Первоначальный PixelChecksum берется при старте программы? Возможно ли сделать так чтоб звук был при каждом изменении PixelChecksum и не зацикливался?

Оффлайн hedji [?]

  • Новичок
  • *
  • Сообщений: 124
  • Репутация: 19
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Мониторинг рабочего стола
« Ответ #7, Отправлен: Март 12, 2017, 12:05:50 »
Первоначальный PixelChecksum берется при старте программы? Возможно ли сделать так чтоб звук был при каждом изменении PixelChecksum и не зацикливался?
запилено:
Код: AutoIt [Выделить]
$begin_screen = PixelChecksum(0, 0, 100, 100, 1)
While 1
    $now_screen = PixelChecksum(0, 0, 100, 100, 1)
    if $begin_screen <> $now_screen Then
        $begin_screen = PixelChecksum(0, 0, 100, 100, 1)
        SoundPlay(@WindowsDir &"\Media\tada.wav", 1)       
    EndIf
    Sleep(1000)
WEnd
 

« Последнее редактирование: Март 12, 2017, 12:11:41 от hedji »

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

Re: Мониторинг рабочего стола
« Ответ #7 Отправлен: Март 12, 2017, 12:05:50 »

Оффлайн Felix-irk [?]

  • Новичок
  • *
  • Сообщений: 6

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Мониторинг рабочего стола
« Ответ #8, Отправлен: Март 12, 2017, 12:17:55 »
Данный скрипт мониторит эту часть окна? Рисунок в приложении


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться

Оффлайн hedji [?]

  • Новичок
  • *
  • Сообщений: 124
  • Репутация: 19
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Мониторинг рабочего стола
« Ответ #9, Отправлен: Март 12, 2017, 12:24:04 »
Данный скрипт мониторит эту часть окна? Рисунок в приложении

нет, координаты отсчитываются с нуля от верхнего левого края экрана.
скрипт мониторит верхний левый угол квадрат 100х100 пикселей.
для приведенного примера нужны:
Код: AutoIt [Выделить]
$begin_screen = PixelChecksum(0, @DesktopHeight-100, 100, @DesktopHeight)
$now_screen = PixelChecksum(0, @DesktopHeight-100, 100, @DesktopHeight)
 


Оффлайн Felix-irk [?]

  • Новичок
  • *
  • Сообщений: 6

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Мониторинг рабочего стола
« Ответ #10, Отправлен: Март 12, 2017, 13:29:06 »
Хеджи, ты избивал меня от огромной проблемы! Да прибудет с тобой сила!!! Задачу можно отмечать решенной!
 


Добавлено: Март 12, 2017, 13:49:41
Еще один вопросик. Как проделать тот же фокус, но при изменении цвета одного или нескольких пикселей на определенный цвет?
« Последнее редактирование: Март 12, 2017, 13:49:41 от Felix-irk, Причина: Объединение сообщений »

Оффлайн hedji [?]

  • Новичок
  • *
  • Сообщений: 124
  • Репутация: 19
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Мониторинг рабочего стола
« Ответ #11, Отправлен: Март 12, 2017, 14:12:39 »
Еще один вопросик. Как проделать тот же фокус, но при изменении цвета одного или нескольких пикселей на определенный цвет?
Использовать:
Код: AutoIt [Выделить]
PixelGetColor()
;вместо
PixelChecksum()
 

Нужный цвет определить заранее по скриншоту. Остальная логика работы скрипта не меняется.

Оффлайн Felix-irk [?]

  • Новичок
  • *
  • Сообщений: 6

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Мониторинг рабочего стола
« Ответ #12, Отправлен: Март 13, 2017, 18:07:10 »
Мне нужно написать условие 
Код: AutoIt [Выделить]
if $now_screen = (код цвета)

Так вот, как выразить код цвета в данном случае?

Оффлайн hedji [?]

  • Новичок
  • *
  • Сообщений: 124
  • Репутация: 19
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Мониторинг рабочего стола
« Ответ #13, Отправлен: Март 13, 2017, 18:39:04 »
Берете AutoIt Window Info, наводите на нужную часть экрана и смотрите координаты и цвет.
Только нужно обратить внимание, что AutoIt Window Info возвращает цвет в 16-й системе, а PixelGetColor() в десятичной, не забудьте пересчитать.


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться

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

Re: Мониторинг рабочего стола
« Ответ #13 Отправлен: Март 13, 2017, 18:39:04 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
6 Ответов
6254 Просмотров
Последний ответ Сентябрь 24, 2009, 18:48:21
от wolk88
15 Ответов
6600 Просмотров
Последний ответ Сентябрь 24, 2012, 00:02:12
от Pat4005
0 Ответов
1497 Просмотров
Последний ответ Июнь 23, 2012, 06:12:40
от madmasles
4 Ответов
2783 Просмотров
Последний ответ Сентябрь 21, 2012, 09:12:02
от evgen_vasgen
4 Ответов
2368 Просмотров
Последний ответ Октябрь 23, 2012, 10:40:26
от joiner
2 Ответов
3762 Просмотров
Последний ответ Май 08, 2013, 21:53:57
от mif_ugra
0 Ответов
658 Просмотров
Последний ответ Август 25, 2014, 15:38:35
от IIuOHeP
1 Ответов
959 Просмотров
Последний ответ Июнь 01, 2015, 10:38:14
от AlexxxMksv
5 Ответов
858 Просмотров
Последний ответ Июль 06, 2015, 13:44:41
от ZeVSalt
4 Ответов
1213 Просмотров
Последний ответ Август 01, 2015, 07:53:26
от Yashied