Что нового

[Мышь, клавиатура] Клик мышкой по определенной области с выводом сообщения

kamaz_masters

Новичок
Сообщения
8
Репутация
1
доброго времени суток. Не знаю как реализовать такую ситуацию - Программа рисует 2 геометрические фигуры в Painte. После этого идут рандомные клики мышкой и при попадание в определенную область (их 2) выводится сообщение. при попадании в другую область (не заданную) другое сообщение. Как это реализовать к сожалению не знаю, надеюсь на вашу помощь.

Код:
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)

$sPath = 'C:\Windows\System32\mspaint.exe'


$answer = MsgBox(4, "Лабораторная работа №1", "Запустить программу?")

If $answer = 7 Then
    MsgBox(0, "Лабороторная работа №1", "До свидания!")
    Exit
EndIf

HotKeySet("{PGDN}","_exit")
HotKeySet("{HOME}","_Pause")
HotKeySet("{INSERT}","_Run")
While True
Sleep (100)
WEnd

Func _exit()
While True
  Sleep(1000)
  MouseClick("left", 552, 61)
  MouseClick("left", 552, 61)
  Sleep(1000)
  MouseClickDrag( "left" ,54,185,229,316)
  Sleep(1000)
  MouseClick("left", 613, 63)
  Sleep(1000)
  MouseClickDrag( "left" ,495,390,674,559)
  Sleep(1000)
  MouseClick("left", 380, 68)
  MouseClick("left", 380, 68)
  Sleep(1000)
  MouseClick("left", 138, 252)
  Sleep(1000)
  MouseClick( "left" ,577, 495)
  Sleep(1000)
  ExitLoop [1] 
  WEnd
EndFunc

Func _Pause()
While True
Sleep (100)
WEnd
EndFunc

Func _Run()
While True
Sleep (100)
WEnd
EndFunc
 

aleratorio

Осваивающий
Сообщения
85
Репутация
42
блин, даже боюсь запускать....
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
kamaz_masters
{CodeWarn}
 

aleratorio

Осваивающий
Сообщения
85
Репутация
42
OffTopic:

kamaz_masters , извини, вчера просто уже больше суток не спал, посмотрел на эти циклы, просто убило меня сразу...


А теперь можно поподробнее, что должен этот скрипт делать? При нажатии {HOME} или {INSERT} просто запускаются бесконечные циклы. При нажатии {PGDN} вызывается _exit() в которой мышь просто бегает и кликает по экрану, тоже в бесконечном цикле, хотя в соответствии со здравым смыслом должен быть выход из программы.

mspaint.exe так нигде и не вызывается.

Не ясно зачем в 42-й строке нужен ExitLoop[1], и [1] - вообще ошибка синтаксиса...
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
А интересная картинка получается (Windows XP): ;D
Код:
Opt('MouseCoordMode', 2)
Opt('PixelCoordMode', 2)

Run(@SystemDir & '\mspaint.exe')
$hWin = WinWait('[Class:MSPaintApp]', '', 3)
If Not $hWin Then
	MsgBox(16, 'Error', 'Error')
	Exit
EndIf
WinSetState($hWin, '', @SW_MAXIMIZE)
$aPos = ControlGetPos($hWin, '', '[CLASS:AfxWnd42u; INSTANCE:1]')

$aClick = PixelSearch($aPos[0], $aPos[1], $aPos[0] + $aPos[2], $aPos[1] + $aPos[3], 0xFF0000, 1, 1, $hWin)
If Not @error Then
	MouseClick('left', $aClick[0], $aClick[1], 1, 0)
Else
	MsgBox(16, 'Error', 'Error')
	Exit
EndIf

$aArea = ControlGetPos($hWin, '', '[CLASS:Afx:1000000:8; INSTANCE:1]')
MouseMove(Random($aArea[0] + 50, $aArea[0] + $aArea[2] - 100, 1), Random($aArea[1] + 50, $aArea[1] + $aArea[3] - 100, 1), 10)
MouseDown('left')

For $i = 1 To 1000
	MouseMove(Random($aArea[0] + 50, $aArea[0] + $aArea[2] - 50, 1), Random($aArea[1] + 50, $aArea[1] + $aArea[3] - 50, 1), 0)
Next
MouseUp('left')
$aClick = PixelSearch($aPos[0], $aPos[1], $aPos[0] + $aPos[2], $aPos[1] + $aPos[3], 0x0000FF, 1, 1, $hWin)
If Not @error Then
	MouseClick('left', $aClick[0], $aClick[1], 1, 0)
Else
	MsgBox(16, 'Error', 'Error')
	Exit
EndIf
MouseMove(Random($aArea[0] + 50, $aArea[0] + $aArea[2] - 100, 1), Random($aArea[1] + 50, $aArea[1] + $aArea[3] - 100, 1), 10)
MouseDown('left')
For $i = 1 To 1000
	MouseMove(Random($aArea[0] + 50, $aArea[0] + $aArea[2] - 50, 1), Random($aArea[1] + 50, $aArea[1] + $aArea[3] - 50, 1), 0)
Next
MouseUp('left')
 

aleratorio

Осваивающий
Сообщения
85
Репутация
42
madmasles сказал(а):
А интересная картинка получается:
Не понял, а что скрипт делать должен? У меня просто mspaint открывается и скрипт завершает работу. Никаких ошибок не выводится... (Win 7)
 

Arei

Скриптер
Сообщения
938
Репутация
115
у меня то же не работает, Xp SP 3
 

Arei

Скриптер
Сообщения
938
Репутация
115
поторопился,вот что у меня получилось.
 

Arei

Скриптер
Сообщения
938
Репутация
115
Не знаю, т.к не я её создал
 
Автор
K

kamaz_masters

Новичок
Сообщения
8
Репутация
1
aleratorio сказал(а):
madmasles сказал(а):
А интересная картинка получается:
Не понял, а что скрипт делать должен? У меня просто mspaint открывается и скрипт завершает работу. Никаких ошибок не выводится... (Win 7)
скрипт не обязательно должен открывать paint. достаточно чтобы он в нем работал (активное окно). В левом верхнем углу рисует прямоугольник, в правом нижнем треугольник. Потом заливает эти две фигуры. Далее идут проверки по попадании в область закрашенных фигур - если попал в фигуру то одно сообщение. если вне зоны фигур то другое.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
kamaz_masters
как быть с предупреждением?
 
Автор
K

kamaz_masters

Новичок
Сообщения
8
Репутация
1
madmasles сказал(а):
А интересная картинка получается (Windows XP): ;D
Код:
Opt('MouseCoordMode', 2)
Opt('PixelCoordMode', 2)

Run(@SystemDir & '\mspaint.exe')
$hWin = WinWait('[Class:MSPaintApp]', '', 3)
If Not $hWin Then
	MsgBox(16, 'Error', 'Error')
	Exit
EndIf
WinSetState($hWin, '', @SW_MAXIMIZE)
$aPos = ControlGetPos($hWin, '', '[CLASS:AfxWnd42u; INSTANCE:1]')

$aClick = PixelSearch($aPos[0], $aPos[1], $aPos[0] + $aPos[2], $aPos[1] + $aPos[3], 0xFF0000, 1, 1, $hWin)
If Not @error Then
	MouseClick('left', $aClick[0], $aClick[1], 1, 0)
Else
	MsgBox(16, 'Error', 'Error')
	Exit
EndIf

$aArea = ControlGetPos($hWin, '', '[CLASS:Afx:1000000:8; INSTANCE:1]')
MouseMove(Random($aArea[0] + 50, $aArea[0] + $aArea[2] - 100, 1), Random($aArea[1] + 50, $aArea[1] + $aArea[3] - 100, 1), 10)
MouseDown('left')

For $i = 1 To 1000
	MouseMove(Random($aArea[0] + 50, $aArea[0] + $aArea[2] - 50, 1), Random($aArea[1] + 50, $aArea[1] + $aArea[3] - 50, 1), 0)
Next
MouseUp('left')
$aClick = PixelSearch($aPos[0], $aPos[1], $aPos[0] + $aPos[2], $aPos[1] + $aPos[3], 0x0000FF, 1, 1, $hWin)
If Not @error Then
	MouseClick('left', $aClick[0], $aClick[1], 1, 0)
Else
	MsgBox(16, 'Error', 'Error')
	Exit
EndIf
MouseMove(Random($aArea[0] + 50, $aArea[0] + $aArea[2] - 100, 1), Random($aArea[1] + 50, $aArea[1] + $aArea[3] - 100, 1), 10)
MouseDown('left')
For $i = 1 To 1000
	MouseMove(Random($aArea[0] + 50, $aArea[0] + $aArea[2] - 50, 1), Random($aArea[1] + 50, $aArea[1] + $aArea[3] - 50, 1), 0)
Next
MouseUp('left')
у меня к сожалению error
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Re: [Мышь, клавиатура] Клик мышкой по области

kamaz_masters
предупреждение не о том, название как раз таки (было) норм. обрами код тэгами. как? смотри в теле предупреждения
 
Верх