Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Выполнение функции после определения цвета

Ответить
Настройки темы
[решено] Выполнение функции после определения цвета

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Creat0R
Дата: 22-07-2010
Доброго времени суток всем гуру! Вот в чем вопрос, в одном из активных приложений на одном и том же месте есть цветовой датчик, в нем используются 3 цвета красный, зеленый, и черный. каким образом можно сделать так чтобы на красный и зеленый скрипт выполнял одну функцию, а на черный другую.
ранее использовал
$p = PixelGetColor(380,100)
if $p>13000000 and $p< 15000000
но, как показала практика работает это только с одним цветом - красным. заранее спасибо!

Отправлено: 17:31, 21-07-2010

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить 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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Последний раз редактировалось Creat0R, 21-07-2010 в 22:08.


Отправлено: 21:57, 21-07-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Фенуции - это я так опечатался грамотно, прошу прощения.
сейчас у меня вот так:
Код: Выделить весь код
$n=1
	Do
		$p = PixelGetColor(388,100)
		if $p > 4000000 and $p < 16000000  Then
			Wrn()
		Else
			send ("9")
			sleep(17000)
		EndIf
	Until $n=2
но я пытаюсь сделать вот что, если красный или зеленый, то этот бесконечный цикл работает, если черный, то прекращается, если снова будет красный или зеленый, то снова начинает работать.

Отправлено: 22:54, 21-07-2010 | #3


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата AutoITAdepT:
if $p > 4000000 and $p < 16000000 Then »
Что это проверяет? для красного нужно проверять 0xff0000, для зелёного 0x00ff00, а для чёрного 0x000000.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 23:16, 21-07-2010 | #4


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


PixelGetColor вытаскивает цвета именно в таком формате, в данном случае зеленый это примерно 4300000 а красный 15500000, черный ниже 4000000, примерно 3900000.
У меня проблема в том что я не знаю как вытащить цвета в формате 0х******, и как потом остановить бесконечный цикл если цвет черный, а если зеленый и красный запустить снова.

Отправлено: 11:34, 22-07-2010 | #5


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
$a = 4000000
ConsoleWrite("0x" & Hex($a, 6) & @CRLF)

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:41, 22-07-2010 | #6


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить 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


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата AutoITAdepT:
PixelGetColor вытаскивает цвета именно в таком формате »
Это вы так его видите (для вывода оно преобразовывается в Dec), на самом деле это Hex число, и сравнивать его можно обычно:

Код: Выделить весь код
$p = PixelGetColor(388, 100)
If $p = 0x000000 Then MsgBox(0, '', 'Black')

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:12, 22-07-2010 | #8


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Огромное спасибо! будете в Барнауле, звоните, с меня пиво!

Отправлено: 19:10, 22-07-2010 | #9


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Если тема решена, то её нужно помечать таковой.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 23:42, 22-07-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Выполнение функции после определения цвета

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Зависает компьютер после определения 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




 
Переход