На первый взгляд я думал всё будет очень легко, но оказалось что нет ( Мне всего то нужно что бы при появлении пикселя на экране, определённого цвета само собой, скрипт делал один клик левой кнопкой мыши, но что то пошло не так. Скрипт делал какую то дичь, нажимал когда не надо или вообще не нажимал. Короче при появлении пикселя на координатах X560, Y360, (437b1b цвета), нажимался лмк. Вот скрипт, кто шарит скажите, что не так и как это исправить что бы оно работало.
*~$XButton1::
while GetKeyState("XButton1", "P")
{
PixelSearch, Px, Py, 560, 560, 360, 360, 0x437b1b, 3, Fast
mouseclick, left,,, 1
}
return
Заранее благодарю.
Другие языки программирования и технологии
Эксперты по ахк, помогите, пожалуйста
PixelSearch возвращает значение его и проверяй
while GetKeyState("XButton1", "P") это же условие не поиска пикселя
Используй ErrorLevel
А так вот мой скрипт
Работает очень просто зажимаешь Xb1 - Выделяешь область поиска
Xb2 - Выбираешь цвет на экране
F3 - Запускает
F4 - Break
Скрипт
Msgbox,,Инструкция, Xbutton1 - GetColor`nXbutton2 - SelectPos`n F3 - start`n F4 - Стоп
#SingleInstance Force
#NoEnv
#WinactivateForce
SetWorkingDir %A_ScriptDir%
SetBatchLines -1
Gui +AlwaysOnTop +OwnDialogs -Theme -Caption
Gui Color, 0xFF8000
Gui Show, w0 h0, Select
Winset,Transparent,50,Select
Return
xbutton1::
sleep 5
MouseGetpos x7,y7,id,control
Wingettitle,title,ahk_id %id%
winactivate,%title%
Loop
{
GetKeyState,xb,xbutton1,P
if xb = U
Break
MouseGetpos x1,y1
CoordMode,Pixel,Relative
PixelGetColor,color,x1,y1,RGB
Tooltip,Color = %color%`
sleep 33
}
color1 = %color%
Tooltip
return
xbutton2::
sleep 5
CoorDmode,Mouse,Screen
MouseGetpos x,y,id,control
Wingettitle,title,ahk_id %id%
winactivate,%title%
Loop
{
GetKeyState xb2,xbutton2,P
if xb2 = U
Break
CoorDmode,Mouse,Screen
MouseGetpos x3,y3
Tooltip,% abs(x-x3) "x" abs(y-y3)
Winmove,Select,,% x, y, abs(x-x3) , abs(y-y3)
}
Tooltip
x = %x%
y = %y%
x3 = %x3%
y3 = %y3%
WinMove,Select,,0,0,0,0
return
f3::
state:=1
MouseGetpos x6,y7,id,control
Wingettitle,title,ahk_id %id%
winactivate,%title%
CoordMOde,Mouse,Relative
Loop
{
if (state = 1)
{
CoordMOde,Mouse,Relative
PixelSearch, Px, Py, %x%, %y%, %x3%, %y3%, %color1%, 3,Fast RGB
if (ErrorLevel = 0)
{
Tooltip, Цвет найден по координатам %Px% %Py%
CoordMOde,Mouse,Relative
MouseMove,%Px%,%Py%,0
}
else if (ErrorLevel = 1)
{
Tooltip,Такого цвета не найденно
}
}
else if (state = 2)
{
Break
}
}
Tooltip,
return
f4::
state:=2
return
GuiEscape:
GuiClose:
ExitApp
А так вот мой скрипт
Работает очень просто зажимаешь Xb1 - Выделяешь область поиска
Xb2 - Выбираешь цвет на экране
F3 - Запускает
F4 - Break
Скрипт
Msgbox,,Инструкция, Xbutton1 - GetColor`nXbutton2 - SelectPos`n F3 - start`n F4 - Стоп
#SingleInstance Force
#NoEnv
#WinactivateForce
SetWorkingDir %A_ScriptDir%
SetBatchLines -1
Gui +AlwaysOnTop +OwnDialogs -Theme -Caption
Gui Color, 0xFF8000
Gui Show, w0 h0, Select
Winset,Transparent,50,Select
Return
xbutton1::
sleep 5
MouseGetpos x7,y7,id,control
Wingettitle,title,ahk_id %id%
winactivate,%title%
Loop
{
GetKeyState,xb,xbutton1,P
if xb = U
Break
MouseGetpos x1,y1
CoordMode,Pixel,Relative
PixelGetColor,color,x1,y1,RGB
Tooltip,Color = %color%`
sleep 33
}
color1 = %color%
Tooltip
return
xbutton2::
sleep 5
CoorDmode,Mouse,Screen
MouseGetpos x,y,id,control
Wingettitle,title,ahk_id %id%
winactivate,%title%
Loop
{
GetKeyState xb2,xbutton2,P
if xb2 = U
Break
CoorDmode,Mouse,Screen
MouseGetpos x3,y3
Tooltip,% abs(x-x3) "x" abs(y-y3)
Winmove,Select,,% x, y, abs(x-x3) , abs(y-y3)
}
Tooltip
x = %x%
y = %y%
x3 = %x3%
y3 = %y3%
WinMove,Select,,0,0,0,0
return
f3::
state:=1
MouseGetpos x6,y7,id,control
Wingettitle,title,ahk_id %id%
winactivate,%title%
CoordMOde,Mouse,Relative
Loop
{
if (state = 1)
{
CoordMOde,Mouse,Relative
PixelSearch, Px, Py, %x%, %y%, %x3%, %y3%, %color1%, 3,Fast RGB
if (ErrorLevel = 0)
{
Tooltip, Цвет найден по координатам %Px% %Py%
CoordMOde,Mouse,Relative
MouseMove,%Px%,%Py%,0
}
else if (ErrorLevel = 1)
{
Tooltip,Такого цвета не найденно
}
}
else if (state = 2)
{
Break
}
}
Tooltip,
return
f4::
state:=2
return
GuiEscape:
GuiClose:
ExitApp
Andrei Chebodaev
А можно как-то в вашем коде увеличить область поиска? Я запустил ахк с этим кодом, и поиск проходит в 10-30 пикселях от курсора во все сторона.
Serge Zybin
Здравствуйте , а как в вашем коде изменить так , что бы при найденном пикселе прожималась клавиша к примеру "E" ?
Похожие вопросы
- Эксперты по ахк, помогите, пожалуйста
- Помогите пожалуйста разобраться с вопросами по информатике и программированию
- Помогите Пожалуйста....не могу настроить сеть между 2-я компютерами... очень прошу кто шарит загляньте...
- Эксперты по С++. Помогите изменить код.
- Помогите пожалуйста!!!
- Помогите пожалуйста избавиться от "синего экрана смерти"! кто поможет, тому +10 баллов гарантирую!
- добрый вечер!помогите пожалуйста решить задание
- Вопрос по delphi, помогите пожалуйста.
- Помогите пожалуйста найти ошибку, с++
- народ помогите пожалуйста) надо сделать прогу на pascal)
{
mouseclick, left,,, 1
}
if ErrorLevel
Не найден пиксель
else
найден
CoordMode, Pixel, Relative
CoordMode, Mouse, Relative
*~$XButton1::
Loop {
PixelSearch, PX, PY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, 0x00FF00, 0, fast
if(ErrorLevel=0)
{
MouseClick, left, %PX%, %PY%
}
else {
PixelSearch, PX, PY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, 0x00FF00, 0, fast
}
}
return
End::ExitApp
PixelSearch, Px, Py, 560, 570, 360, 370, 0x437b1b, 3, Fast ???
или что, мне нужно что бы приблизительно в том месте искал