매크로

조회 수 340 추천 0 댓글 3
#include Gdip.ahk

ImageSearch_Inactive(Title, ImgFileName)
{
If !pToken := Gdip_Startup()
{
MsgBox, 48, gdiplus error!, Gdiplus failed to start. Please ensure you ha1ve 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
}

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")
}

F9::
ImageSearch_Inactive("Noxx","확인.bmp")
if errorlevel = 0
{
msgbox, 11
}
else
{
msgbox,22
}
return


------------------------------------
이미지 찾는건 잘 되는데

ImageSearch_Inactive("Noxx","확인.bmp") 여기에

ImageSearch 에 사용되는 if 문을 적용시킬순 없을까요?


  • 할거엄따구 2017.08.26 14:56

    errolevel은 오토핫키 내장명령어에 대해서만 사용가능한거고 gdip관련 함수들은 내장함수가 아니기때문에 errorlevel로 조건잡는건 안될겁니다.

    result := ImageSearch_Inactive("Noxx","확인.bmp")

    msgbox %result%

    로 이미지검색에 실패했을때 성공했을때에 대한 값을 확인하셔서 성공과 실패 둘중하나라도 일관된 값을 가져올수 있다면

    if (ImageSearch_Inactive("Noxx","확인.bmp") = ??)

    와 같은 조건문으로 설정가능합니다.

    = 와 ?? 는 값에따라 설정해주시면 됩니다.

  • 비구니 2017.08.30 02:14

    감사합니다.

    알려주신대로 연습해볼께요.

    꾸벅

  • 로즈벗 2018.05.11 02:54

    궁금하던 내용인데 덕분에 알아갑니다 ~


List of Articles
분류 제목 글쓴이 최근변경 추천
질문 녹스 비활성 PixelGetColor 어떻게 해야할까요? 16 pqpqpqq 2017.08.29 0/0
질문 Target Label does not exist 에러가 뜹니다 5 험블비 2017.08.27 0/0
질문 (초보) GDIP 이미지서치 사용방법 2 험블비 2017.08.31 0/0
질문 정말 초보적인 질문입니다만..마우스클릭의 위치를 조... 1 가느가다 2017.08.27 0/0
질문 모모 비활성 마우스클릭 도와주세요 자꾸 한곳만 클릭... 6 험블비 2018.10.17 0/0
질문 gdip 비활성 매크로에 if errorlevel 못쓰나요? 3 비구니 2018.05.11 0/0
자유 오토핫키로 세븐나이츠 비활성 매크로 공유된 자료나 ... 만렙찍자세븐 2017.08.24 0/0
질문 Window Info에 창 이름이 안뜨는건 어떻게 해야하나요? 3 ㅎㅈ2 2017.08.23 0/0
질문 Gdip 이미지 서칭시 특정 좌표에서부터 검색을 하고싶... 개발자의하루 2017.08.22 0/0
질문 길찾기 기능을 구현해볼려고 하는데요 3 곡산강씨 2017.08.31 0/0
정보 pixelGetColor 오차범위 만들기(10진수변환) 9 갈리토스 2022.07.21 0/0
질문 액셀에 사진이동후 사진속 숫자 및 글씨 엑셀로 이동하... 미쓰광 2017.08.22 0/0
질문 Pushbullet 윈도우 프로그램 비활성 클릭 질문드려요. 2 봉달이 2017.08.23 0/0
질문 어플이 간헐적으로 멈추는 변수를 어떻게 해결할까요? 3 프큼 2017.08.24 0/0
질문 오토핫키로 바람나라 하시는분 계신가요? 스피노프 2017.08.20 0/0
질문 우회하는건 게임사에서 막아놓은걸 뚫는 방법인가요? 5 woojin77 2017.08.24 0/0
질문 프메 매크로 만드려고 하는데.... 2 shhauwj 2017.09.13 0/0
질문 오토핫키에서 특정 좌표만 캡처할수 있을까요? 2 강문원 2017.08.21 0/0
질문 카톡 API라이브러리 질문입니다(KAKAO API LIBRARY) jhmun200 2017.08.19 0/0
질문 오토핫키 실행도중 다른 작업들을 무시하는 방법이 있나요 3 adde 2017.08.19 0/0
Board Pagination Prev 1 ... 798081828384858687 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글