Что нового

[Автоматизация] Нажатие определённых кнопок если в данном пикселе заданный цвет

vadiqwe

Новичок
Сообщения
15
Репутация
0
Собственно как зделать "Нажатие определённых кнопок если в данном пикселе заданный цвет"

Например:
У меня в пикселе 500,345 чёрный цвет
Как только в пикселе 500,345 синий цвет он нажимает "A"
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Примерно так:
Код:
While 1
	If '0x' & Hex(PixelGetColor(500, 345)) = '0x0000ff' Then Send('a') ;синий
	If '0x' & Hex(PixelGetColor(500, 345)) = '0x000000' Then Send('w') ;чёрный
	If '0x' & Hex(PixelGetColor(500, 345)) = '0xff0000' Then Send('s') ;красный
WEnd
 
Автор
V

vadiqwe

Новичок
Сообщения
15
Репутация
0
А если мне несколько пикселей и для каждого свой цвет и своя кнопка
Как такое реализовать?
 
Автор
V

vadiqwe

Новичок
Сообщения
15
Репутация
0
Последний вопрос чем искать цвет и пиксели

50 минут назад узнал о Autoit если что не думайте что тупой
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
vadiqwe
AutoIt Window Info (C:\Program Files\AutoIt3\AutoIt Window Info)
http://autoit-script.ru/index.php/topic,4579.0.html
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
чем искать цвет и пиксели

Вот я для тебя написал скрипт поиска (может понадобится ;)):
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

HotKeySet("{ESC}","OnExit") ;ESC для выхода

$Form1 = GUICreate("0x000000", 100, 50, 192, 124, $WS_SYSMENU, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE,$WS_EX_TOPMOST))
GUISetState(@SW_SHOW)

While 1
	if GUIGetMsg() = -3 then Exit
	WinMove($Form1,"",MouseGetPos(0) + 20,MouseGetPos(1) + 20)
	$nColor = PixelGetColor(MouseGetPos(0), MouseGetPos(1))
	WinSetTitle($Form1,"", '0x' & Hex($nColor, 6))
	GUISetBkColor("0x" & Hex($nColor, 6))
WEnd

Func OnExit()
	Exit
EndFunc
 
Автор
V

vadiqwe

Новичок
Сообщения
15
Репутация
0
Код:
While 1
If PixelGetColor(571, 708) = '0x00FF00' Then Send('a') ;зелёный
If PixelGetColor(623, 707) = '0xC1272D' Then Send('s') ;красный
If PixelGetColor(675, 707) = '0xD9E021' Then Send('d') ;жёлтый
If PixelGetColor(724, 710) = '0x0070BC' Then Send('j') ;синий
If PixelGetColor(771, 705) = '0xF7931E' Then Send('k') ;оранжевый
If PixelGetColor(826, 706) = '0x93278F' Then Send('l') ;фиолетовый
WEnd


И он будет делать это пока я не выключу?
 
Автор
V

vadiqwe

Новичок
Сообщения
15
Репутация
0
А нельзя зделать диапазон пикселей?


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

И как зделать что бы он не жал 1 раз а зажимал пока этот цвет идёт
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
А нельзя зделать диапазон пикселей?
сколько не старался, не получается :(

И как зделать что бы он не жал 1 раз а зажимал пока этот цвет идёт
попробуй так:
Код:
While 1
	If PixelGetColor(571, 708) = '0x00FF00' Then
		Do
			Send('a') ;зелёный
		Until Not PixelGetColor(571, 708) = '0x00FF00'
	EndIf
	;...
WEnd


или так:

Код:
While 1
	If '0x' & Hex(PixelGetColor(571, 708)) = '0x00FF00' Then Send('a') ;зелёный
	If '0x' & Hex(PixelGetColor(623, 707)) = '0xC1272D' Then Send('s') ;красный
	If '0x' & Hex(PixelGetColor(675, 707)) = '0xD9E021' Then Send('d') ;жёлтый
	If '0x' & Hex(PixelGetColor(724, 710)) = '0x0070BC' Then Send('j') ;синий
	If '0x' & Hex(PixelGetColor(771, 705)) = '0xF7931E' Then Send('k') ;оранжевый
	If '0x' & Hex(PixelGetColor(826, 706)) = '0x93278F' Then Send('l') ;фиолетовый
WEnd
 
Автор
V

vadiqwe

Новичок
Сообщения
15
Репутация
0
С этим вообще не работает. (не жмёт ничего)


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

Код:
While 1
    If PixelGetColor(570, 715) = '0x00FF00' Then
        Do
            Send('a') ;зелёный
        Until Not PixelGetColor(570, 715) = '0xABFF2D'
    
	PixelGetColor(621, 715) = '0xC1272D' Then
        Do
            Send('s') ;зелёный
        Until Not PixelGetColor(621, 715) = '0xFF4040'
    
    PixelGetColor(672, 715) = '0xD9E021' Then
        Do
            Send('d') ;зелёный
        Until Not PixelGetColor(672, 715) = '0xFFCC00'
	EndIf
WEnd


Нажимает только "A"
 
Автор
V

vadiqwe

Новичок
Сообщения
15
Репутация
0
Помогите
Он либо нажимает очень быстро что не реагирует либо медленно когда уже не надо либо вообще не нажемает


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

Код:
While 1
If PixelGetColor(570, 715) = '0x00FF00' Then Send('a') ;зелёный
If PixelGetColor(621, 715) = '0xC1272D' Then Send('s') ;красный
If PixelGetColor(672, 715) = '0xD9E021' Then Send('d') ;жёлтый
If PixelGetColor(724, 715) = '0x0070BC' Then Send('j') ;синий
If PixelGetColor(777, 715) = '0xF7931E' Then Send('k') ;оранжевый
If PixelGetColor(830, 715) = '0x93278F' Then Send('l') ;фиолетовый
WEnd


Вот код как зделать что бы зажимал на 0.2 сек кнопку
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
как зделать что бы зажимал на 0.2 сек кнопку
Код:
Opt('SendKeyDownDelay', 200) ;Изменяет продолжительность нажатого состояния клавиши, перед тем как отпустить (в миллисекундах).
;...
 
Автор
V

vadiqwe

Новичок
Сообщения
15
Репутация
0
Всё отлично только если 2 или 3 кнопки зажать надо он тупит и не жмёт ничего

Код:
While 1
    Opt('SendKeyDownDelay', 200)
    If PixelGetColor(570, 715) = '0x00FF00' Then Send('a') ;зелёный
    If PixelGetColor(621, 715) = '0xC1272D' Then Send('s') ;красный
    If PixelGetColor(672, 715) = '0xD9E021' Then Send('d');жёлтый
    If PixelGetColor(724, 715) = '0x0070BC' Then Send('j');синий
    If PixelGetColor(777, 715) = '0xF7931E' Then Send('k');оранжевый
    If PixelGetColor(830, 715) = '0x93278F' Then Send('l');фиолетовый
WEnd
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
vadiqwe [?]
только если 2 или 3 кнопки зажать надо он тупит и не жмёт ничего
Код:
Opt('SendKeyDownDelay', 50)

$i = 0
HotKeySet('{Esc}', '_Exit')

Run(@WindowsDir & '\notepad.exe')
$hWin = WinWaitActive('[Class:Notepad]', '', 5)

If $hWin Then
	While WinActive($hWin)
		$i += 1
		If Not Mod($i, 5) Then
			Send('{LSHIFT down}')
		Else
			Send('{LSHIFT up}')
		EndIf
		If PixelGetColor(111, 90) = 0xABBED6 Then Send('Все')
		If PixelGetColor(666, 73) = 0x184589 Then Send(' ')
		If PixelGetColor(428, 17) = 0xF1D081 Then Send('ра')
		If PixelGetColor(890, 22) = 0x015FC4 Then Send('бо')
		If PixelGetColor(17, 289) = 0x545D7E Then Send('та')
		If PixelGetColor(38, 632) = 0xF8F8F8 Then Send('ет')
		If PixelGetColor(75, 452) = 0x8C8DA9 Then Send(' ')
		If PixelGetColor(352, 16) = 0xC9E4FB Then Send('как')
		If PixelGetColor(411, 107) = 0x7583A8 Then Send(' ')
		If PixelGetColor(745, 100) = 0xF6F6F6 Then Send('надо')
		If PixelGetColor(30, 250) = 0xF6DFA1 Then Send(' без')
		If PixelGetColor(247, 113) = 0xB8B4CB Then Send(' проблем.')
		If PixelGetColor(268, 19) = 0x264B92 Then Send('{ENTER}')
	WEnd
EndIf

Func _Exit()
	Exit
EndFunc   ;==>_Exit

Свои цвета и координаты поставьте.
 
Автор
V

vadiqwe

Новичок
Сообщения
15
Репутация
0
Он же в Notepad'e открывает а мне по циклу и во всех окнах надо
 
Верх