Что нового

Как задать диапазон координат (см. рисунок)

agikon

Знающий
Сообщения
789
Репутация
17
Вот как например задать условие с таким диапазоном координат, то есть чтобы всё что входит в координаты внуть этого синего прясоугольника?

Вот собственно рисунок.
http://postimage.org/image/veyulwjo/
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Что именно нужно чтобы скрипт сделал?
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
что делал не знаю, я ещё не придумал что ему делать. можете сами чтото придумать для ясности, мне только это на плюс будет, ясней будет.

но тут главное понять как такое условие записать.
от смотрите например
Код:
if  (координаты диапазона)
; действие
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Вариантов можно придумать кучу, важно только что ты от них хочешь получить, если ты сам не знаешь что ты хочешь, откуда тогда мы узнаем?! :smile:


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

Ты хочешь узнать как задать в условии If...Else...EndIf проверку сразу 2х параметров? Если да то вот пример.

Код:
Global $hWidth 
Global $hHeight 

$hForm = GUICreate("", 500, 400)
GUISetState()

$hPos = WinGetPos($hForm)
$hWidth  = $hPos[2]
$hHeight = $hPos[3]

If ($hWidth >= 700) Or ($hHeight >= 460) Then
	MsgBox(0, "Size", "Big")
Else
	MsgBox(0, "Size", "Small")
EndIf

While 1
	Switch GUIGetMsg()
		Case -3
			Exit
	EndSwitch
Wend
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Вспомнил свой давний скрипт.
Переделал.
Получилось это:
Код:
#Include <Misc.au3>
While 1
Sleep (50)  
$pos = MouseGetPos() ; получить текущие координыты указателя мыши
ToolTip("Легальное перемещение: "& $pos[0] & "," & $pos[1], 0, 0) ; вывести визуально эти координаты
If $pos[0] < 700 Or $pos[0] > 800 Or $pos[1] < 300 Or $pos[1] > 600 Then ; если запретная зона координат, тогда>>>
	ToolTip("Нарушение границы!!!: "& $pos[0] & "," & $pos[1], 0, 0) ; >>> вывести визуально эти координаты
EndIf
WEnd
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
agikon,
ИМХО, так проще всего:
Код:
#include <GUIConstantsEx.au3>

GUICreate('Test', 250, 190)
$nLabelBlue = GUICtrlCreateLabel('', 100, 10, 50, 50)
GUICtrlSetBkColor(-1, 0x0000FF)
$nLabelRed = GUICtrlCreateLabel('', 100, 70, 50, 50)
GUICtrlSetBkColor(-1, 0xFF0000)
$nLabelYellow = GUICtrlCreateLabel('', 100, 130, 50, 50)
GUICtrlSetBkColor(-1, 0xFFFF00)
GUISetState()

While 1
	$aCursor = GUIGetCursorInfo()
	If Not @error Then
		Switch $aCursor[4]
			Case $nLabelBlue
				ToolTip('Курсор в синем квадрате' & @LF & $aCursor[0] & 'x' & $aCursor[1], 0, 0)
			Case $nLabelRed
				ToolTip('Курсор в красном квадрате' & @LF & $aCursor[0] & 'x' & $aCursor[1], 0, 0)
			Case $nLabelYellow
				ToolTip('Курсор в желтом квадрате' & @LF & $aCursor[0] & 'x' & $aCursor[1], 0, 0)
			Case Else
				ToolTip('')
		EndSwitch
	EndIf
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
Спасибо много интересных примеров.
Но видать я не правильно обписал. Я имел ввиду делать проверку не внутри окна скрипта, а вообще на экране монитора.
Пример Юрия наверно более подходит.

ъВот с самого начала я наверно преследовал чтото на подобии воо такого полушпионского скрипта.скркрипта.
Чтобы если в двух диапазонов координат совпадает цвет на экране монитора, то делать скриншот.
вот ввылаживаю пример того где надо проводить проверку на цвет в двух диапазонов.

http://postimage.org/image/1ygzjil38/

тут вопрос в том что именно диапазон с цветом возможно указать? Потому что можно задать на проверку на один пиксель, но вот интересует именно диапазон пикселей с нужным цветом.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
agikon,
Можно так попробовать:
Код:
Opt('PixelCoordMode', 2)
Opt('MouseCoordMode', 2)

;англ.справка:
Global $sTitle = '[Title:AutoIt Help; Class:HH Parent]', $iChecksum, $hWin, $iCount, _
		$iLeft = 100, $iTop = 100, $iRight = 200, $iBottom = 200

HotKeySet('{Esc}', '_Exit')

If WinExists($sTitle) Then
	$hWin = WinGetHandle($sTitle)
	If Not WinActive($hWin) Then
		WinActivate($hWin)
		WinWaitActive($hWin)
	EndIf
	ToolTip('Контролируем изменение цвета здесь:', 0, 0)
	$aMousePos = MouseGetPos()
	MouseMove($iLeft, $iTop, 0)
	MouseMove($iRight, $iTop)
	MouseMove($iRight, $iBottom)
	MouseMove($iLeft, $iBottom)
	MouseMove($iLeft, $iTop)
	MouseMove($aMousePos[0], $aMousePos[1], 0)
	ToolTip('')
	AdlibRegister('_My_PixelChecksum', 500)
Else
	MsgBox(16, 'Error', 'Нет окна')
	Exit
EndIf

While 1
	Sleep(50)
WEnd

Func _My_PixelChecksum()
	Local $i_Checksum_New
	If WinExists($hWin) And WinActive($hWin) Then
		If Not $iChecksum Then
			$iChecksum = PixelChecksum($iLeft, $iTop, $iRight, $iBottom, 1, $hWin)
		EndIf
		$i_Checksum_New = PixelChecksum($iLeft, $iTop, $iRight, $iBottom, 1, $hWin)
		If $iChecksum <> $i_Checksum_New Then
			$iCount += 1
			ToolTip('Цвет изменился ' & $iCount, 0, 0);Или делайте то, что Вам надо.
			$iChecksum = $i_Checksum_New
		EndIf
	EndIf
EndFunc   ;==>_My_PixelChecksum

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
Спасибо буду разбираться.
 
Верх