매크로

조회 수 1576 추천 0 댓글 2
여기저기 검색해서 이런 스크립트를 만들었는데 

#include Gdip.ahk
SetTitleMatchMode 2

ImageSearch_Inactive(Title, ImgFileName)
{
If !pToken := Gdip_Startup()
{
MsgBox, 48, gdiplus error!, Gdiplus failed to start. Please ensure you have gdiplus on your system
ExitApp
}
OnExit, Exit

pBitmapHayStack := Gdip_BitmapFromHWND(hwnd := WinExist(Title)) 
pBitmapNeedle := Gdip_CreateBitmapFromFile(ImgFileName)

Width1 := Gdip_GetImageWidth(pBitmapHayStack), Height1 := Gdip_GetImageHeight(pBitmapHayStack)
Width2 := Gdip_GetImageWidth(pBitmapNeedle), Height2 := Gdip_GetImageHeight(pBitmapNeedle)
E1 := Gdip_LockBits(pBitmapHayStack, 0, 0, Width1, Height1, Stride1, Scan01,BitmapData1)
E2 := Gdip_LockBits(pBitmapNeedle, 0, 0, Width2, Height2, Stride2, Scan02,BitmapData2)

MCode(Gdip_ImageSearch, "83EC148B4424309983E20303C28BC88B442434995383E2035503C2C1F80256C1F902837C24"
. "30005789442420C7442410000000000F8EBE0000008B5C24288B7C24388D048D00000000894424188B442430895C241CE"
. "B098DA424000000008BFFC74424440000000085C07E6D895C24148B6C242CC7442440000000008D6424008B4C24403B4C"
. "243C0F8D8600000033C985FF7E158BD58BF38B063B02751F4183C20483C6043BCF7CEF8B442420035C2418FF44244003C"
. "003C003E8EBC38B4C24448B5C24148B4424304183C3043BC8894C2444895C24147C978B4C24108B5C241C035C2418413B"
. "4C2434894C2410895C241C0F8C68FFFFFF8B5424488B44244C5F5E5DC702FFFFFFFFC700FFFFFFFF5B83C414C38B4C244"
. "48B5424488B44244C5F495E890A8B4C24085D89085B83C414C3")

Time1 := A_TickCount
VarSetCapacity(x, 8, 0), VarSetCapacity(y, 8, 0)
Loop, 100
DllCall(&Gdip_ImageSearch, "uint", Scan01, "uint", Scan02, "int", Width1, "int", Height1, "int", Width2, "int", Height2, "int", Stride1, "int", Stride2, "int*", x, "int*", y)
;MsgBox, % "Time for 100 searches: " A_TickCount-Time1 "ms`nx: " x "`ny: " y ;%
Gdip_UnlockBits(pBitmapHayStack,BitmapData1), Gdip_UnlockBits(pBitmapNeedle,BitmapData2)
Gdip_DisposeImage(pBitmapHayStack), Gdip_DisposeImage(pBitmapNeedle)
return [x, y, Width2, Height2]
}

MCode(ByRef code, hex)
{
VarSetCapacity(code, StrLen(hex)//2)
Loop % StrLen(hex)//2 ;%
NumPut("0x" SubStr(hex, 2*A_Index-1, 2), code, A_Index-1, "char")
}

F5::
WinGetClass, class, A
MsgBox, The active window's class is "%class%".
return





F9::
searchpos := ImageSearch_Inactive("BlueStacks","test.png")
if searchpos[1]>0 and searchpos[2]>0
x := searchpos[1] + Ceil(searchpos[3]/2) ;클릭 지점을 이미지 좌/상 에서 이미지 중간으로 보정, 중간값이 정수로 떨어지게 하기 위해 올림(ceil)사용
y := searchpos[2] + Ceil(searchpos[4]/2) 
;MsgBox, % "Time for 100 searches: " A_TickCount-Time1 "ms`nx: " x "`ny: " y ;%
;ControlClick , BlueStacksApp1, BlueStacks, _ctl.Window, L, 1, x%x% y%y% NA
;ControlClick, x%x% y%y%,BlueStacks,,,, 
x := % "" x ""
y := % "" y ""
Pos := x|y<<16
            postmessage,0x201,1,%Pos%,,BlueStacks ;title 프로그램의 pos지점을 왼클릭으로 누른다
postmessage,0x202,0,%Pos%,,BlueStacks ;왼클릭을 뗀다.
return


Exit:
Gdip_Shutdown(pToken)
ExitApp
return


f9를 누르면 블루스택에서 구동중인 앱에서 test.png 에 해당하는 그림을 비활성 상태에서 찾아서 클릭까지 하는 스크립트 입니다.

일단 비활성 상태에서 이미지 서치까지는 잘 되는데 비활성 클릭을 하려고 하니 안되는군요.

controlclick으로도 해보고 postmessage로도 해봤는데 둘 다 똑같은 증상이 나타나면서 비활성 클릭이 안됩니다.

일단 두 명령어 모두 클릭이 완전히 안되는 것은 아니고 '활성 상태에서 블루스택 윈도우 안에 마우스가 머물고 있을 때' f9를 누르면 해당 이미지 클릭이 되긴 합니다

하지만 블루스택 윈도우가 비활성 상태이거나 마우스가 블루스택 윈도우를 벗어나 있으면 클릭이 안되는군요.

비활성 상태에서 클릭이 가능하게 하는 방법이 없을까요?


List of Articles
분류 제목 글쓴이 최근변경 추천
질문 다시 질문을 드리게 되었습니다. 이번에는 확실합니다.... 생존자8 2017.06.07 0/0
질문 꼭 좀 부탁드립니다. 간단한 거지만 저한테는 절실하거... 8 생존자8 2017.06.08 0/0
질문 (초보) 이미지서치 연속사용 1 작은이득 2017.06.07 0/0
질문 오토핫키 초보 학습자 질문입니다. 생존자8 2017.06.06 0/0
질문 Gdip_ImageSearch 오류 문의합니다. 2 fnwj 2017.06.07 0/0
질문 하드인증 푸는법도 있나요? 2 유비스 2017.09.11 0/0
질문 오토핫키 2일차 이미지서치관련질문 부탁드려여 3 작은이득 2017.06.06 0/0
질문 템 파밍 후 문서로 저장도 가능한가요? 2 매우빤딱 2017.08.13 0/0
질문 제발 부탁드립니다.. 2주간 삽질헀는데.. 고수님도와주... CMD76 2017.06.02 0/0
질문 오토핫키 이미지서치 여러번 하고싶은데 도와주세요 2 오오토뉴비 2017.06.04 0/0
정보 perl을 이용한 adb capture 방법 Allyce 2017.06.02 1/0
질문 녹스는 되는데 블루스택 픽셀서치가 인식을못해요 .. 1 태풍지애 2017.05.31 0/0
질문 안녕하세요 오토핫키 질문이 있어요 2 kjk 2017.06.06 0/0
자유 메M은 오핫으로만들어야한다던데 1 용용동동 2017.05.26 0/0
질문 같은 줄의 이미지 두개 인식하려면 어찌하나요 1 zilla 2017.06.03 0/0
질문 오토핫키를 이용하여 한글 에서 수식 수정창 띄우기를 ... 1 오토핫삼 2017.06.07 0/0
질문 이미지서치 성능개선할 수 없나요 3 츠네로바 2017.05.24 0/0
질문 블루스택에서 비활성 클릭하기 2 cis105 2017.06.30 0/0
질문 이미지 서치후 그 이미지를 클릭하려면 어떻게 하나요?... 100z 2017.05.22 0/0
질문 간단한 질문입니다 구이버튼관련... 4 가족오락관 2017.05.21 0/0
Board Pagination Prev 1 ... 878889909192939495 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글