Что нового

Компьютерное зрение

Сообщения
2
Репутация
0
Здравствуйте!
вот наворотил академически один скрипт.
Код:
HotKeySet("{ESC}", "Terminate") ;подключение горячих клавиш в часности если ескейп то вываливаемсо)
#include <IsPressedEx_UDF.au3>  ;подключение расширения по нажатию клавиш
#include <Misc.au3>
; 
; программа используется "как есть" 
; поддержка программы отсутствует
; написано вроде на AutoIt v3.
; 
; 
;
; вроде 1280*1024
;

Global $x1=0
Global $y1=0 
Global $x2=0
Global $y2=0
Global $controlsum = 0
Global $controlsum1 = 0
Global $visota = @DesktopHeight
Global $sirina = @DesktopWidth
Global $out = ""
Global $dx = 0
Global $dy = 0
Global $i = 0
Global $j = 0
While 1


;---------------------------------------------------------------------------------------------------------------------------------------------------------
    If _IsPressed("1B") Then
        MsgBox(0,"_IsPressed", "Нажата клавиша ESC")
        ExitLoop
    EndIf
;---------------------------------------------------------------------------------------------------------------------------------------------------------
    If _IsPressed("57") Then
	
		
        	;MsgBox(0,"_IsPressed", "w")
		$pos = MouseGetPos()	
		$x1 = $pos[0]
		$y1 = $pos[1]
		Sleep (250)
		
    EndIf
;---------------------------------------------------------------------------------------------------------------------------------------------------------
    If _IsPressed("45") Then
	
		
        	;MsgBox(0,"_IsPressed", "e")
		$pos = MouseGetPos()	
		$x2 = $pos[0]
		$y2 = $pos[1]
		Sleep (250)
		$dx = $x2 - $x1
		$dy = $y2 - $y1

                $controlsum = PixelChecksum($x1,$y1, $x2,$y2)
		MsgBox(0, "", "Сообщение  " & $x1 &"-"& $y1 &" | "& $x2 &"-"& $y2 &" | "& $controlsum)
		$out = "PixelChecksum(" & $x1 &","& $y1 &", "& $x2 &","& $y2 &")  = " & $controlsum
		Run("notepad.exe")
		Sleep (250)
		WinActive("Безымянный - Блокнот")
		Sleep (250)
		;Send("{LSHIFT down}")
		;Send("{LCTRL}")
		;Send("{LSHIFT up}")
		Sleep (250)
		Send($out)

    EndIf
;---------------------------------------------------------------------------------------------------------------------------------------------------------
    If _IsPressed("52") Then
	
		
        	;MsgBox(0,"_IsPressed", "r")
		$controlsum = PixelChecksum($x1,$y1, $x2,$y2)
		For $i = 0 to $visota Step 1
		If _IsPressed("1B") Then
		 Exit   	 
		EndIf     
		  For $j = 0 to $sirina Step 1
		  If _IsPressed("1B") Then
		   Exit   	 
		  EndIf
		  $controlsum1 = PixelChecksum($j,$i, $j + $dx, $i + $dy)
		  If $controlsum = $controlsum1 Then
		  MsgBox(0,"Окно 1", " Ура нашли!!!")
		  ;MouseMove ( $j+($dx/2), $i+($dx/2), 100 )
		  ;MouseClick( "button" [[[,x ,y] ,clicks],speed] )
		  MouseClick( "left", $j+($dx/2), $i+($dy/2), 2, 100 )
		  ;MouseClick( "left", $j, $i, 2, 100 )
Exit
		  EndIf
   
		  ; MouseMove ( $j+($dx/2), $i+($dy/2), 1 ) 
		  Next
		Next
Exit

    EndIf
;--------------------------------------------------------------------------------------------------------------------------------------------------------




WEnd

exit

;функция необходимая для горячих клавишь  
Func Terminate()
    Exit 0
EndFunc
; собственно и все.
Скажите пожалуйста почему когда пометишь искомый кусок экрана в каком нибудь окне а потом окно передвинешь в момент работы скрипта то происходит ошибка... находится не то место куда передвинули?
Если не понятно:
1 запускаем скрипт
2 нажимаем клавишу w дабы пометить верхний левый угол искомой области экрана ( желательно в каком-нибудь окне)
3 нажимаем e дабы пометить нижний правый угол ... , выводится какая - то информация тушим её
4 передвигаем окно (если было шаг можно опустить)
5 нажимаем r дабы найти искомую облать ... ждем в зависимости от ... я думаю дольше 20 минут не стоит ... если не включен оператор с мышкой тогда любуемсо)
6 вопрос когда окно почему врет?


Используйте для AutoIt кода тег [autoit]
autoit.gif

madmasles.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Привяжите свой скрипт к координатам окна
Код:
Opt("MouseCoordMode", 2)
 
Верх