Что нового

Как встроить в тело скрипта, выполнение другого - по системному времени ?

dwm18

Новичок
Сообщения
27
Репутация
0
Можно ли, в скрипт встроить, что бы в заданное ( определенное ) время по системным часам, выполнил действия ( нажатие мышкой по координатам ), и продолжил работу по поиску цвета. Ожидание заданного времени не мешало бы - поиску цвета....

Т.е. запустили - он ищет, ищет - цвет пикселя, время подошло, сделал несколько действий и дальше мониторит - ждет цвет пикселя.

Код:
$PixelExist = False
While 1
    $coord = PixelSearch(2211, 111, 2211, 603, 0x008000, 50, 3) ; координаты области, цвет, допущение оттенка, шаг поиска
    If Not @error Then
        $Color = PixelGetColor($coord[0], $coord[1])
        $PixelExist = True
        For $i = 0 To 3 ;Количество циклов, за которое точка не должна потухнуть
            $hTimer = TimerInit() ; Запускает таймер и хранит дескриптор в переменной
            If $Color <> PixelGetColor($coord[0], $coord[1]) Then
                $PixelExist = False
                ExitLoop
            EndIf
            Sleep(100) ;Небольшая пауза
            $iDiff = TimerDiff($hTimer) ; Возвращает разницу во времени, от предыдущего запуска TimerInit, дескриптор которого указан в переменной
            ConsoleWrite($iDiff & @CR) ;Покажет время выполнения одного прохода цикла в консоли
        Next
        If $PixelExist Then
            SoundPlay("C:\0\zvuk.mp3", 0)
            MouseClick("left", 1675, 445, 1, 0)
            $PixelExist = False
            Sleep(300000)
        EndIf
    EndIf
Sleep(100); Пауза между попытками поиска пикселя нужного цвета
WEnd
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Есть масса вариантов, как это можно сделать , например :
Код:
#include <AutoItConstants.au3>

$PixelExist = False
$MyClick = False
; Время выполнения дополнительных кликов
$Hour = 16
$Min = 30
While 1

	$coord = PixelSearch(2211, 111, 2211, 603, 0x008000, 50, 3) ; координаты области, цвет, допущение оттенка, шаг поиска
	If Not @error Then
		$Color = PixelGetColor($coord[0], $coord[1])
		$PixelExist = True
		For $i = 0 To 3 ;Количество циклов, за которое точка не должна потухнуть
			$hTimer = TimerInit() ; Запускает таймер и хранит дескриптор в переменной
			If $Color <> PixelGetColor($coord[0], $coord[1]) Then
				$PixelExist = False
				ExitLoop
			EndIf
			Sleep(100) ;Небольшая пауза
			$iDiff = TimerDiff($hTimer) ; Возвращает разницу во времени, от предыдущего запуска TimerInit, дескриптор которого указан в переменной
			ConsoleWrite($iDiff & @CR) ;Покажет время выполнения одного прохода цикла в консоли
		Next
		If $PixelExist Then
			SoundPlay("C:\0\zvuk.mp3", 0)
			MouseClick("left", 1675, 445, 1, 0)
			$PixelExist = False
			;Sleep(300000) Эту дикую паузу нужно убрать !
		EndIf
	EndIf
	Sleep(100)
	If @HOUR = $Hour And @MIN = $Min And Not $MyClick Then
		;Устанавливаем флаг срабатывания по времени , что-бы исключить повторное срабатывание кликов несколько раз за минуту
		$MyClick = True
		;Дальше перечисляете - куда кликать хотите
		MouseClick($MOUSE_CLICK_LEFT, 100, 500) ;Например клик левой кнопки мышки по координатам х=100, у=500


		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	EndIf
	;Возвращаем флаг срабатывания по времени 
	If @HOUR <> $Hour And @MIN <> $Min Then $MyClick = False
WEnd
OffTopic:
С тегами уже лучше, но всё равно не то :smile: смотрите, левее от тега , что Вы использовали "Вставить спойлер" есть кнопка с изображением логотипа AutoIt - "Код AutoIt" , вот именно в него и всталяйте код, а потрм уже всё это можно и в "Вставить спойлер" заключить .
 
Автор
dwm18

dwm18

Новичок
Сообщения
27
Репутация
0
ra4o сказал(а):
Есть масса вариантов, как это можно сделать , например :
Код:
#include <AutoItConstants.au3>

$PixelExist = False
$MyClick = False
; Время выполнения дополнительных кликов
$Hour = 16
$Min = 30
While 1

	$coord = PixelSearch(2211, 111, 2211, 603, 0x008000, 50, 3) ; координаты области, цвет, допущение оттенка, шаг поиска
	If Not @error Then
		$Color = PixelGetColor($coord[0], $coord[1])
		$PixelExist = True
		For $i = 0 To 3 ;Количество циклов, за которое точка не должна потухнуть
			$hTimer = TimerInit() ; Запускает таймер и хранит дескриптор в переменной
			If $Color <> PixelGetColor($coord[0], $coord[1]) Then
				$PixelExist = False
				ExitLoop
			EndIf
			Sleep(100) ;Небольшая пауза
			$iDiff = TimerDiff($hTimer) ; Возвращает разницу во времени, от предыдущего запуска TimerInit, дескриптор которого указан в переменной
			ConsoleWrite($iDiff & @CR) ;Покажет время выполнения одного прохода цикла в консоли
		Next
		If $PixelExist Then
			SoundPlay("C:\0\zvuk.mp3", 0)
			MouseClick("left", 1675, 445, 1, 0)
			$PixelExist = False
			Sleep(300000) Эту дикую паузу нужно убрать !
		EndIf
	EndIf
	Sleep(100)
	If @HOUR = $Hour And @MIN = $Min And Not $MyClick Then
		;Устанавливаем флаг срабатывания по времени , что-бы исключить повторное срабатывание кликов несколько раз за минуту
		$MyClick = True
		;Дальше перечисляете - куда кликать хотите
		MouseClick($MOUSE_CLICK_LEFT, 100, 500) ;Например клик левой кнопки мышки по координатам х=100, у=500


		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	EndIf
	;Возвращаем флаг срабатывания по времени 
	If @HOUR <> $Hour And @MIN <> $Min Then $MyClick = False
WEnd
OffTopic:
С тегами уже лучше, но всё равно не то :smile: смотрите, левее от тега , что Вы использовали "Вставить спойлер" есть кнопка с изображением логотипа AutoIt - "Код AutoIt" , вот именно в него и всталяйте код, а потрм уже всё это можно и в "Вставить спойлер" заключить .

Эта дикая пауза 5 минут нужна, что бы не срабатывал на пиксель пока он появился.

Эти строки можно убрать - я посмотрел, что время прохождения цикла от 0,35 - 0,4 сек.

$hTimer = TimerInit() ; Запускает таймер и хранит дескриптор в переменной
$iDiff = TimerDiff($hTimer) ; Возвращает разницу во времени, от предыдущего запуска TimerInit, дескриптор которого указан в переменной
ConsoleWrite($iDiff & @CR) ;Покажет время выполнения одного прохода цикла в консоли

Получается вот так :

Код:
$PixelExist = False
$MyClick = False
; Время выполнения дополнительных кликов
$Hour = 16
$Min = 30
While 1

	$coord = PixelSearch(2211, 111, 2211, 603, 0x008000, 50, 3) ; координаты области, цвет, допущение оттенка, шаг поиска
	If Not @error Then
		$Color = PixelGetColor($coord[0], $coord[1])
		$PixelExist = True
		For $i = 0 To 3 ;Количество циклов, за которое точка не должна потухнуть
			If $Color <> PixelGetColor($coord[0], $coord[1]) Then
				$PixelExist = False
				ExitLoop
			EndIf
			Sleep(100) ;Небольшая пауза
	Next
		If $PixelExist Then
			SoundPlay("C:\0\zvuk.mp3", 0)
			MouseClick("left", 1675, 445, 1, 0)
			$PixelExist = False
			Sleep(300000) ; Эта дикая пауза 5 минут нужна, что бы не срабатывал на пиксель пока он появился.
		EndIf
	EndIf
	Sleep(100)
	If @HOUR = $Hour And @MIN = $Min And Not $MyClick Then
		;Устанавливаем флаг срабатывания по времени , что-бы исключить повторное срабатывание кликов несколько раз за минуту
		$MyClick = True
		;Дальше перечисляете - куда кликать хотите
		MouseClick($MOUSE_CLICK_LEFT, 100, 500) ;Например клик левой кнопки мышки по координатам х=100, у=500


		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	EndIf
	;Возвращаем флаг срабатывания по времени 
	If @HOUR <> $Hour And @MIN <> $Min Then $MyClick = False
WEnd

Ошибка при выполнении скрипта :
 

Вложения

  • Ошибка выполнения по времени.jpg
    Ошибка выполнения по времени.jpg
    40.1 КБ · Просмотры: 8

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Ошибка при выполнении скрипта :
Не докопировали самую верхнюю строку скрипта , а именно :
Код:
#include <AutoItConstants.au3>

Или измените функцию "MouseClick" , как Вы делали выше.
Эта дикая пауза 5 минут нужна, что бы не срабатывал на пиксель пока он появился.
В это время скрипт ничего делать не будет, в том числе, если придёт время сработки по времени - он её не выполнит.
Блокировку повторных срабатываний в течении нужного времени нужно делать иначе, не останавливая работу скрипта.
В примере , если пиксель не будет гаснуть - повторного срабатывания не будет, для этого введён флаг "$PixelExist" .
 
Автор
dwm18

dwm18

Новичок
Сообщения
27
Репутация
0
ra4o сказал(а):
Ошибка при выполнении скрипта :
Не докопировали самую верхнюю строку скрипта , а именно :
Код:
#include <AutoItConstants.au3>

Или измените функцию "MouseClick" , как Вы делали выше.
Эта дикая пауза 5 минут нужна, что бы не срабатывал на пиксель пока он появился.
В это время скрипт ничего делать не будет, в том числе, если придёт время сработки по времени - он её не выполнит.
Блокировку повторных срабатываний в течении нужного времени нужно делать иначе, не останавливая работу скрипта.
В примере , если пиксель не будет гаснуть - повторного срабатывания не будет, для этого введён флаг "$PixelExist" .

Понял - попробую потестить....


Добавлено:
Сообщение автоматически объединено:

Работает - однако, первые тесты прошел ( пока.....) - время покажет.... Вам :thanks: :IL_AutoIt_1: :beer:


Добавлено:
Сообщение автоматически объединено:

ra4o сказал(а):
Ошибка при выполнении скрипта :
Не докопировали самую верхнюю строку скрипта , а именно :
Код:
#include <AutoItConstants.au3>

Или измените функцию "MouseClick" , как Вы делали выше.
Эта дикая пауза 5 минут нужна, что бы не срабатывал на пиксель пока он появился.
В это время скрипт ничего делать не будет, в том числе, если придёт время сработки по времени - он её не выполнит.
Блокировку повторных срабатываний в течении нужного времени нужно делать иначе, не останавливая работу скрипта.
В примере , если пиксель не будет гаснуть - повторного срабатывания не будет, для этого введён флаг "$PixelExist" .

Убираю эту паузу - и он срабатывает постоянно ??? Флаг $PixelExist = False - говорите, когда горит пиксель не дает срабатывать, а он срабатывает.... на True может где поставить ? - пробовал менять - всё равно срабатывает быстро.... сигнал идет практически непрерывно.....
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
сигнал идет практически непрерывно.....
Да , добавил ещё один флаг для звука и чуть изменил скрипт, пробуйте , так должно работать, как нужно:

Код:
#include <AutoItConstants.au3>

$PixelExist = False
$MyClick = False
$SoundPlay = False
; Время выполнения дополнительных кликов
$Hour = 16
$Min = 30
While 1
	$coord = PixelSearch(2211, 111, 2211, 603, 0x008000, 50, 3) ; координаты области, цвет, допущение оттенка, шаг поиска
	If Not @error And Not $PixelExist Then
		$Color = PixelGetColor($coord[0], $coord[1])
		$PixelExist = True
		$SoundPlay = True
		For $i = 0 To 3 ;Количество циклов, за которое точка не должна потухнуть
			If $Color <> PixelGetColor($coord[0], $coord[1]) Then
				$PixelExist = False
				$SoundPlay = False
				ExitLoop
			EndIf
			Sleep(100) ;Небольшая пауза
		Next
		If $PixelExist And $SoundPlay Then
			$SoundPlay = False
			SoundPlay("C:\0\zvuk.mp3", 0)
			MouseClick("left", 1675, 445, 1, 0)
		EndIf
	Else
		$PixelExist = False
	EndIf
	Sleep(100)
	If @HOUR = $Hour And @MIN = $Min And Not $MyClick Then
		;Устанавливаем флаг срабатывания по времени , что-бы исключить повторное срабатывание кликов несколько раз за минуту
		$MyClick = True
		;Дальше перечисляете - куда кликать хотите
		MouseClick($MOUSE_CLICK_LEFT, 100, 500) ;Например клик левой кнопки мышки по координатам х=100, у=500


		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	EndIf
	;Возвращаем флаг срабатывания по времени
	If @HOUR <> $Hour And @MIN <> $Min Then $MyClick = False
WEnd
 
Автор
dwm18

dwm18

Новичок
Сообщения
27
Репутация
0
ra4o сказал(а):
сигнал идет практически непрерывно.....
Да , добавил ещё один флаг для звука и чуть изменил скрипт, пробуйте , так должно работать, как нужно:

Код:
#include <AutoItConstants.au3>

$PixelExist = False
$MyClick = False
$SoundPlay = False
; Время выполнения дополнительных кликов
$Hour = 16
$Min = 30
While 1
	$coord = PixelSearch(2211, 111, 2211, 603, 0x008000, 50, 3) ; координаты области, цвет, допущение оттенка, шаг поиска
	If Not @error And Not $PixelExist Then
		$Color = PixelGetColor($coord[0], $coord[1])
		$PixelExist = True
		$SoundPlay = True
		For $i = 0 To 3 ;Количество циклов, за которое точка не должна потухнуть
			If $Color <> PixelGetColor($coord[0], $coord[1]) Then
				$PixelExist = False
				$SoundPlay = False
				ExitLoop
			EndIf
			Sleep(100) ;Небольшая пауза
		Next
		If $PixelExist And $SoundPlay Then
			$SoundPlay = False
			SoundPlay("C:\0\zvuk.mp3", 0)
			MouseClick("left", 1675, 445, 1, 0)
		EndIf
	Else
		$PixelExist = False
	EndIf
	Sleep(100)
	If @HOUR = $Hour And @MIN = $Min And Not $MyClick Then
		;Устанавливаем флаг срабатывания по времени , что-бы исключить повторное срабатывание кликов несколько раз за минуту
		$MyClick = True
		;Дальше перечисляете - куда кликать хотите
		MouseClick($MOUSE_CLICK_LEFT, 100, 500) ;Например клик левой кнопки мышки по координатам х=100, у=500


		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	EndIf
	;Возвращаем флаг срабатывания по времени
	If @HOUR <> $Hour And @MIN <> $Min Then $MyClick = False
WEnd

Опять так же, сигнал срабатывает - бесконечно быстро
( Это не новая тема !!! была пауза - ужасная , он её выдерживал - ЭТО для МОДЕРАТОРОВ ) - а то скажут , что другой вопрос ......

Не тормозит скрипт когда пиксель висит на координатах - X, Y, а бесконечно срабатывает сигнал ! ???
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Да , всё верно - набросал по быстрому не проверил , теперь уж точно исправил :-[
Код:
#include <AutoItConstants.au3>

$PixelExist = False
$MyClick = False
$SoundPlay = True
; Время выполнения дополнительных кликов
$Hour = 16
$Min = 30
While 1
	$coord = PixelSearch(2211, 111, 2211, 603, 0x008000, 50, 3) ; координаты области, цвет, допущение оттенка, шаг поиска
	If Not @error Then
		$Color = PixelGetColor($coord[0], $coord[1])
		$PixelExist = True
		For $i = 0 To 3 ;Количество циклов, за которое точка не должна потухнуть
			If $Color <> PixelGetColor($coord[0], $coord[1]) Then
				$PixelExist = False
				$SoundPlay = True
				ExitLoop
			EndIf
			Sleep(100) ;Небольшая пауза
		Next
		If $PixelExist And $SoundPlay Then
			$SoundPlay = False
			SoundPlay("C:\0\zvuk.mp3", 0)
			MouseClick("left", 1675, 445, 1, 0)
		EndIf
	Else
		$SoundPlay = True
		$PixelExist = False
	EndIf
	Sleep(100)
	If @HOUR = $Hour And @MIN = $Min And Not $MyClick Then
		;Устанавливаем флаг срабатывания по времени , что-бы исключить повторное срабатывание кликов несколько раз за минуту
		$MyClick = True
		;Дальше перечисляете - куда кликать хотите
		MouseClick($MOUSE_CLICK_LEFT, 100, 500) ;Например клик левой кнопки мышки по координатам х=100, у=500


		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	EndIf
	;Возвращаем флаг срабатывания по времени
	If @HOUR <> $Hour And @MIN <> $Min Then $MyClick = False
WEnd
 
Автор
dwm18

dwm18

Новичок
Сообщения
27
Репутация
0
ra4o сказал(а):
Да , всё верно - набросал по быстрому не проверил , теперь уж точно исправил :-[
Код:
#include <AutoItConstants.au3>

$PixelExist = False
$MyClick = False
$SoundPlay = True
; Время выполнения дополнительных кликов
$Hour = 16
$Min = 30
While 1
	$coord = PixelSearch(2211, 111, 2211, 603, 0x008000, 50, 3) ; координаты области, цвет, допущение оттенка, шаг поиска
	If Not @error Then
		$Color = PixelGetColor($coord[0], $coord[1])
		$PixelExist = True
		For $i = 0 To 3 ;Количество циклов, за которое точка не должна потухнуть
			If $Color <> PixelGetColor($coord[0], $coord[1]) Then
				$PixelExist = False
				$SoundPlay = True
				ExitLoop
			EndIf
			Sleep(100) ;Небольшая пауза
		Next
		If $PixelExist And $SoundPlay Then
			$SoundPlay = False
			SoundPlay("C:\0\zvuk.mp3", 0)
			MouseClick("left", 1675, 445, 1, 0)
		EndIf
	Else
		$SoundPlay = True
		$PixelExist = False
	EndIf
	Sleep(100)
	If @HOUR = $Hour And @MIN = $Min And Not $MyClick Then
		;Устанавливаем флаг срабатывания по времени , что-бы исключить повторное срабатывание кликов несколько раз за минуту
		$MyClick = True
		;Дальше перечисляете - куда кликать хотите
		MouseClick($MOUSE_CLICK_LEFT, 100, 500) ;Например клик левой кнопки мышки по координатам х=100, у=500


		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	EndIf
	;Возвращаем флаг срабатывания по времени
	If @HOUR <> $Hour And @MIN <> $Min Then $MyClick = False
WEnd

Вот сейчас работает :beer: :ok: :IL_AutoIt_1:

Спасибо огромное, за помощь :thanks:
 
Автор
dwm18

dwm18

Новичок
Сообщения
27
Репутация
0
ra4o сказал(а):
Да , всё верно - набросал по быстрому не проверил , теперь уж точно исправил :-[
Код:
#include <AutoItConstants.au3>

$PixelExist = False
$MyClick = False
$SoundPlay = True
; Время выполнения дополнительных кликов
$Hour = 16
$Min = 30
While 1
	$coord = PixelSearch(2211, 111, 2211, 603, 0x008000, 50, 3) ; координаты области, цвет, допущение оттенка, шаг поиска
	If Not @error Then
		$Color = PixelGetColor($coord[0], $coord[1])
		$PixelExist = True
		For $i = 0 To 3 ;Количество циклов, за которое точка не должна потухнуть
			If $Color <> PixelGetColor($coord[0], $coord[1]) Then
				$PixelExist = False
				$SoundPlay = True
				ExitLoop
			EndIf
			Sleep(100) ;Небольшая пауза
		Next
		If $PixelExist And $SoundPlay Then
			$SoundPlay = False
			SoundPlay("C:\0\zvuk.mp3", 0)
			MouseClick("left", 1675, 445, 1, 0)
		EndIf
	Else
		$SoundPlay = True
		$PixelExist = False
	EndIf
	Sleep(100)
	If @HOUR = $Hour And @MIN = $Min And Not $MyClick Then
		;Устанавливаем флаг срабатывания по времени , что-бы исключить повторное срабатывание кликов несколько раз за минуту
		$MyClick = True
		;Дальше перечисляете - куда кликать хотите
		MouseClick($MOUSE_CLICK_LEFT, 100, 500) ;Например клик левой кнопки мышки по координатам х=100, у=500


		;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	EndIf
	;Возвращаем флаг срабатывания по времени
	If @HOUR <> $Hour And @MIN <> $Min Then $MyClick = False
WEnd

Нужно еще одно срабатывание по времени встроить - пробую - не получается :

Код:
#include <AutoItConstants.au3>

$PixelExist = False
$MyClick = False
$MyClick2 = False
$SoundPlay = True
; Время выполнения дополнительных кликов
$Hour = 15
$Hour2 = 13
$Min = 11
$Min2 = 15
While 1
    $coord = PixelSearch(2211, 111, 2211, 603, 0xFF0000, 50, 3) ; координаты области, цвет, допущение оттенка, шаг поиска
    If Not @error Then
        $Color = PixelGetColor($coord[0], $coord[1])
        $PixelExist = True
        For $i = 0 To 7 ;Количество циклов, за которое точка не должна потухнуть
            If $Color <> PixelGetColor($coord[0], $coord[1]) Then
                $PixelExist = False
                $SoundPlay = True
                ExitLoop
            EndIf
            Sleep(100) ;Небольшая пауза
        Next
        If $PixelExist And $SoundPlay Then
            $SoundPlay = False
	    Sleep(1500)
            SoundPlay("C:\0\zvuk.mp3", 0)
	    Sleep(3000)
        EndIf
    Else
        $SoundPlay = True
        $PixelExist = False
    EndIf
    Sleep(100)
    If @HOUR = $Hour And @MIN = $Min And Not $MyClick Then
        ;Устанавливаем флаг срабатывания по времени , что-бы исключить повторное срабатывание кликов несколько раз за минуту
        $MyClick = True
        ;Дальше перечисляете - куда кликать хотите
        MouseClick($MOUSE_CLICK_LEFT, 100, 500) ;Например клик левой кнопки мышки по координатам х=100, у=500
		Sleep(100)
   EndIf
    If @HOUR = $Hour2 And @MIN = $Min2 And Not $MyClick2 Then
        ;Устанавливаем флаг срабатывания по времени , что-бы исключить повторное срабатывание кликов несколько раз за минуту
        $MyClick2 = True
        ;Дальше перечисляете - куда кликать хотите
        MouseClick($MOUSE_CLICK_LEFT, 50, 500) ;Например клик левой кнопки мышки по координатам х=100, у=500
   EndIf
    ;Возвращаем флаг срабатывания по времени
    If @HOUR <> $Hour And @MIN <> $Min Then $MyClick = False
    ;Возвращаем флаг срабатывания по времени
    If @HOUR2 <> $Hour2 And @MIN2 <> $Min2 Then $MyClick2 = False
	EndIf
	EndIf
WEnd
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Так он вообще работать не будет, ведь ошибку выдаст.Уберите нижние два "EndIf"
Код:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   EndIf;Убрать
   EndIf;Убрать
WEnd

OffTopic:
Вы уж постарайтесь найти нужный тег для кода AutoIt, а то что бы просмотреть Ваш скрипт приходится совершать лишние действия
 
Автор
dwm18

dwm18

Новичок
Сообщения
27
Репутация
0
ra4o сказал(а):
Так он вообще работать не будет, ведь ошибку выдаст.Уберите нижние два "EndIf"
Код:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   EndIf;Убрать
   EndIf;Убрать
WEnd

OffTopic:
Вы уж постарайтесь найти нужный тег для кода AutoIt, а то что бы просмотреть Ваш скрипт приходится совершать лишние действия

Убрал - теперь другая ошибка
 

Вложения

  • Ошибка выполнения по времени.jpg
    Ошибка выполнения по времени.jpg
    34 КБ · Просмотры: 12

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
макрос неправильный
 
Автор
dwm18

dwm18

Новичок
Сообщения
27
Репутация
0
joiner сказал(а):
макрос неправильный

плохой макрос ??? - да Вы что ??? - он только с ошибкой, - классный макрос !!!
уберу второе время - работает как часики :smile: :ok:

Задача встроить второе выполнение по времени - пытался сам - да не шарю... ( начинающий )
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
плохой макрос ??? - да Вы что...
Вы думаете Вас обманывают ? Не существует макроса "@HOUR2" есть только "@HOUR" , который возвращает системное значение часов и так со всеми макросами в этом условии !Почитай , очень пригодится https://autoit-script.ru/autoit3_docs/macros.htm
 
Автор
dwm18

dwm18

Новичок
Сообщения
27
Репутация
0
ra4o сказал(а):
плохой макрос ??? - да Вы что...
Вы думаете Вас обманывают ? Не существует макроса "@HOUR2" есть только "@HOUR" , который возвращает системное значение часов и так со всеми макросами в этом условии !Почитай , очень пригодится https://autoit-script.ru/autoit3_docs/macros.htm

А как тогда ? встроить второе выполнение по времени ( я думал это тоже переменная, а это макрос - учусь, спасибо ) ?

Вот скрипт с одной задачей по времени :

Вторую задачу по времени, можно встроить в скрипт (добавить) ? подскажите, где искать ?

Код:
#include <AutoItConstants.au3>

$PixelExist = False
$MyClick = False
$SoundPlay = True
; Время выполнения дополнительных кликов
$Hour = 13
$Min = 16
While 1
    $coord = PixelSearch(2211, 111, 2211, 603, 0xFF0000, 50, 3) ; координаты области, цвет, допущение оттенка, шаг поиска
    If Not @error Then
        $Color = PixelGetColor($coord[0], $coord[1])
        $PixelExist = True
        For $i = 0 To 7 ;Количество циклов, за которое точка не должна потухнуть
            If $Color <> PixelGetColor($coord[0], $coord[1]) Then
                $PixelExist = False
                $SoundPlay = True
                ExitLoop
            EndIf
            Sleep(100) ;Небольшая пауза
        Next
        If $PixelExist And $SoundPlay Then
            $SoundPlay = False
	    Sleep(1500)
            SoundPlay("C:\0\zvuk.mp3", 0)
	    Sleep(3000)
        EndIf
    Else
        $SoundPlay = True
        $PixelExist = False
    EndIf
    Sleep(100)
    If @HOUR = $Hour And @MIN = $Min And Not $MyClick Then
        ;Устанавливаем флаг срабатывания по времени , что-бы исключить повторное срабатывание кликов несколько раз за минуту
        $MyClick = True
        ;Дальше перечисляете - куда кликать хотите
        MouseClick($MOUSE_CLICK_LEFT, 100, 500) ;Например клик левой кнопки мышки по координатам х=100, у=500
   EndIf
    ;Возвращаем флаг срабатывания по времени
    If @HOUR <> $Hour And @MIN <> $Min Then $MyClick = False
WEnd
 
Автор
dwm18

dwm18

Новичок
Сообщения
27
Репутация
0
Alofa сказал(а):
dwm18 сказал(а):
...подскажите, где искать ?
1) Правила
2) Раздел справки Описание языка
И тогда вам начнут помогать.

Здравствуйте - поправил, мануал изучаю по возможности... у ВСЕХ - времени не хватает. Крутимся - как угарелые .....
Ценю Ваше время - спасибо за всё.


Добавлено:
Сообщение автоматически объединено:

Alofa сказал(а):
dwm18 сказал(а):
...подскажите, где искать ?
1) Правила
2) Раздел справки Описание языка
И тогда вам начнут помогать.


Вроде решил задачу - работает по двум часовым параметрам :
:IL_AutoIt_1:
Код:
#include <AutoItConstants.au3>

$PixelExist = False
$MyClick = False
$SoundPlay = True
$MyClick2 = False
; Время выполнения дополнительных кликов
$Hour = 07
$Hour2 = 07
$Min = 28
$Min2 = 29
While 1
    $coord = PixelSearch(2211, 111, 2211, 603, 0xFF0000, 50, 3) ; координаты области, цвет, допущение оттенка, шаг поиска
    If Not @error Then
        $Color = PixelGetColor($coord[0], $coord[1])
        $PixelExist = True
        For $i = 0 To 7 ;Количество циклов, за которое точка не должна потухнуть
            If $Color <> PixelGetColor($coord[0], $coord[1]) Then
                $PixelExist = False
                $SoundPlay = True
                ExitLoop
            EndIf
            Sleep(100) ;Небольшая пауза
        Next
        If $PixelExist And $SoundPlay Then
            $SoundPlay = False
	    Sleep(1500)
            SoundPlay("C:\0\zvuk.mp3", 0)
			Sleep(3000)
        EndIf
    Else
        $SoundPlay = True
        $PixelExist = False
    EndIf
    Sleep(100)
    If @HOUR = $Hour And @MIN = $Min And Not $MyClick Then
        ;Устанавливаем флаг срабатывания по времени , что-бы исключить повторное срабатывание кликов несколько раз за минуту
        $MyClick = True
        ;Дальше перечисляете - куда кликать хотите
        MouseClick($MOUSE_CLICK_LEFT, 100, 500) ;Например клик левой кнопки мышки по координатам х=100, у=500
		Sleep(100)
   EndIf
    If @HOUR = $Hour2 And @MIN = $Min2 And Not $MyClick2 Then
        ;Устанавливаем флаг срабатывания по времени , что-бы исключить повторное срабатывание кликов несколько раз за минуту
        $MyClick2 = True
        ;Дальше перечисляете - куда кликать хотите
        MouseClick($MOUSE_CLICK_LEFT, 50, 500) ;Например клик левой кнопки мышки по координатам х=100, у=500
   EndIf
    ;Возвращаем флаг срабатывания по времени
    If @HOUR <> $Hour And @MIN <> $Min Then $MyClick = False
    ;Возвращаем флаг срабатывания по времени
    If @HOUR <> $Hour2 And @MIN <> $Min2 Then $MyClick2 = False
WEnd
 
Верх