|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Выполнение функции после определения цвета |
|
[решено] Выполнение функции после определения цвета
|
Новый участник Сообщения: 8 |
Профиль | Отправить PM | Цитировать
Доброго времени суток всем гуру! Вот в чем вопрос, в одном из активных приложений на одном и том же месте есть цветовой датчик, в нем используются 3 цвета красный, зеленый, и черный. каким образом можно сделать так чтобы на красный и зеленый скрипт выполнял одну функцию, а на черный другую.
ранее использовал $p = PixelGetColor(380,100) if $p>13000000 and $p< 15000000 но, как показала практика работает это только с одним цветом - красным. заранее спасибо! |
|
Отправлено: 17:31, 21-07-2010 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Во-первых, что такое «фенуции»?
А во-вторых нужен полный пример, показывающий что оно действительно работаеттолько с красным. Вот пример показывающий что функция успешно работает со всеми цветами: #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Opt("PixelCoordMode", 2) Dim $aColors[3] = [0xFF0000, 0x00FF00, 0x0000FF] Dim $aCoords[2] = [20, 40] $hGUI = GUICreate("Test Script", 300, 200) GUISetState(@SW_SHOW, $hGUI) For $i = 1 To 3 GUICtrlCreateLabel("", $aCoords[0], $aCoords[1], 150, 20) GUICtrlSetBkColor(-1, $aColors[$i-1]) $nColor = PixelGetColor($aCoords[0], $aCoords[1], $hGUI) ConsoleWrite("Color for Label #" & $i & ": 0x" & Hex($nColor, 6) & @LF) $aCoords[1] += 30 Next While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd |
------- Последний раз редактировалось Creat0R, 21-07-2010 в 22:08. Отправлено: 21:57, 21-07-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Фенуции - это я так опечатался грамотно, прошу прощения.
сейчас у меня вот так: но я пытаюсь сделать вот что, если красный или зеленый, то этот бесконечный цикл работает, если черный, то прекращается, если снова будет красный или зеленый, то снова начинает работать. |
Отправлено: 22:54, 21-07-2010 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата AutoITAdepT:
|
|
------- Отправлено: 23:16, 21-07-2010 | #4 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать PixelGetColor вытаскивает цвета именно в таком формате, в данном случае зеленый это примерно 4300000 а красный 15500000, черный ниже 4000000, примерно 3900000.
У меня проблема в том что я не знаю как вытащить цвета в формате 0х******, и как потом остановить бесконечный цикл если цвет черный, а если зеленый и красный запустить снова. |
|
Отправлено: 11:34, 22-07-2010 | #5 |
Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 12:41, 22-07-2010 | #6 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать Цитата AutoITAdepT:
#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Opt("PixelCoordMode", 2) Dim $aColors[3] = [0xFF0000, 0x00FF00, 0x000000] Global $Paused, $i = 0 $hGUI = GUICreate("Test Script", 300, 200) $hLabel = GUICtrlCreateLabel("", 20, 40, 150, 20) GUISetState(@SW_SHOW, $hGUI) $timer = TimerInit() While 1 If TimerDiff($timer) > 5000 Then $timer = TimerInit() GUICtrlSetBkColor($hLabel, $aColors[$i]) $i += 1 If $i = 3 Then $i = 0 $nColor = PixelGetColor(20, 40, $hGUI) Select Case $nColor > 16000000 And $nColor < 17000000 ToolTip('Red: 0x' & Hex($nColor, 6)) SomeFunc() Case $nColor > 50000 And $nColor < 100000 ToolTip('Green: 0x' & Hex($nColor, 6)) SomeFunc() Case $nColor = 0 And $nColor < 1000 ToolTip('Black: 0x' & Hex($nColor, 6)) _Pause() EndSelect EndIf Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func _Pause() TrayTip("Pause", "Ничего не делаем.", 5, 17) EndFunc ;==>_Pause Func SomeFunc() TrayTip("SomeFunc", "Что-то делаем.", 5, 17) EndFunc ;==>SomeFunc |
|
Отправлено: 12:57, 22-07-2010 | #7 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата AutoITAdepT:
|
|
------- Отправлено: 15:12, 22-07-2010 | #8 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Огромное спасибо! будете в Барнауле, звоните, с меня пиво!
|
Отправлено: 19:10, 22-07-2010 | #9 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Если тема решена, то её нужно помечать таковой.
|
------- Отправлено: 23:42, 22-07-2010 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Зависает компьютер после определения HDD | Intergo | Непонятные проблемы с Железом | 10 | 20-09-2009 20:23 | |
Драйвер - Сбиваются настройки цвета после выхода с любой игры. | Dosmod | Microsoft Windows 2000/XP | 6 | 21-06-2009 18:57 | |
После 5-10 минут игры в КСС, цвета РЕЗКО меняются на противоположные.... | Trinitronik | Видеокарты | 5 | 16-06-2009 04:12 | |
[решено] выполнение нужных файлов ПОСЛЕ установки. как? | Vizit0r | Автоматическая установка Windows 2000/XP/2003 | 23 | 20-06-2008 17:03 | |
Определения номера звонящего | Vlad Drakula | Мобильные ОС, смартфоны и планшеты | 1 | 09-06-2003 22:46 |
|