매크로

이것저것 소스조금씩 보면서 많이 배우고 있는 초보입니다. 전에 알수없는 이유로인해 Gdip이미지서치가 안되어

비활성 이미지서치를 손놓고 비활성 입력으로만 매크로를 만들어서 사용했는데...어제부로 오토핫키32비트로

설치하니 정상적으로 이미지 서치가 되더군요(기존64비트설치)

전에 셋쇼마루님이 주신 소스를 이용해서 서치해봤는데 정확히 좌표까지 넘어와 이미지가 서치되는 것을 확인 했습니다.

뭐가 뭔지 모르고 그냥 따라하다 보니 응용이 안되네요 콘소스통으로 올려놓은거 봐도 소스가 길어서 초보가 보기엔 좀 이해가 힘들었습니다. 고수님들은 하찮은것일 수도 있지만 주석좀 적어서 주시면 감사할게요

필요한거는 지역이미지서치, trans가능한 함수 이 두가지 입니다. 블루스택1을 사용중입니다.

좋은 예제가 있으면 좋을 것 같습니다. 감사합니다.

 

#Singleinstance Force
#Include Gdip.ahk
SetBatchLines, -1
SetWorkingDir, %A_WorkingDir%

ImageSearch_uka(Title, ImgFileName, ByRef Pos_X, ByRef Pos_Y, DebugMode=false)
{
 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)
 Pos_X := X, Pos_Y := Y
 if (DebugMode = true)
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")
}

;;;;;;;;;;Gdip 이미지서치 함수▲

Click(x, y)
{
Ukano := x | y<<16
WinGet, ActiveID, ID, BlueStacks App Player
PostMessage, 0x201, 0, %Ukano%,, ahk_id %ActiveID%
PostMessage, 0x202, 0, %Ukano%,, ahk_id %ActiveID%
}

;;;;;;;;;; 비활성클릭 함수 ▲

F1::

ImageSearch_uka("BlueStacks App Player","1.png", x, y)
MsgBox %x%/%y%
Click(x,y)
return

 

 

 


  • 크루세이덩 2016.07.31 12:25

    블루스택1이시면 아래 함수가 간단하고 좋습니다.


    winget,title,ID,BlueStacks App Player

    if (gdip_imagesearchwithhwnd(title,a.png,x,y,trans="색상코드"))


    Gdip_ImageSearchWithHwnd(Hwnd,Image,Byref X,Byref Y,Variation=0, sX = 0, sY = 0, eX = 0, eY = 0, Trans="")

    {

    gdipToken := Gdip_Startup()

    bmpHaystack := Gdip_BitmapFromHwnd(Hwnd)

    bmpNeedle := Gdip_CreateBitmapFromFile(Image)

    RET := Gdip_ImageSearch(bmpHaystack,bmpNeedle,LIST,sX,sY,eX,eY,Variation,Trans,1,1)

    Gdip_DisposeImage(bmpHaystack)

    Gdip_DisposeImage(bmpNeedle)

    Gdip_Shutdown(gdipToken)

    StringSplit, LISTArray, LIST, `,

    X := LISTArray1

    Y := LISTArray2

    return RET

    }

  • 가족오락관 2016.07.31 16:05

    >"C:\Program Files\AutoHotkey\AutoHotkeyA32.exe" /ErrorStdOut "C:\Users\Administrator\Desktop\gdip연습\test2.ahk"   
    C:\Users\Administrator\Desktop\gdip연습\test2.ahk (19) : ==> Call to nonexistent function.
         Specifically: Gdip_ImageSearch(bmpHaystack,bmpNeedle,LIST,sX,sY,eX,eY,Variation,Trans,1,1)
    >Exit code: 2    Time: 0.1434

    라고 에러가 뜨는건...gdip.ahk파일에 문제가 있는건가요?

  • 크루세이덩 2016.07.31 19:17
    gdip_imagesearch.ahk 파일도 인크루드 시키셔야 합니다.
  • 가족오락관 2016.07.31 22:36
    해결되었습니다. 감사합니다. 이미지도 잘 찾고 비활성 클릭도 잘 되는군요
    Gdip만 인클루드 하는줄 알았네요

List of Articles
분류 제목 글쓴이 최근변경 추천
자유 숨어야산다 님의 블레이드 메크로... 5 손맹 2015.01.16 0/0
질문 오토핫키로 엘가드 메크로 가능한가요?? 2 미쓰광 2014.10.16 0/0
질문 비활성공부하려면.. 4 은가람 2018.12.17 0/0
질문 질문 드립니다. 고수분 답변 부탁 드려요 3 빈대왕 2014.10.10 0/0
자유 몬길 무한실행반복 쓰던건데... 4 오라컴퓨터 2015.09.07 0/0
자유 몬스터 길들이기 모험 매크로를 만들어보았습니다. 4 페르니코 2014.10.14 0/0
정보 지니모션 postmessage 미작동 관련 3 무사시무 2014.10.11 0/0
질문 오토핫키 정규표현식에 대해서 질문드려요! 1 주부9단 2015.01.02 0/0
질문 andy에뮬에서 오토핫키를 이용한 이미지서치시에 마우... 2 하나비 2014.10.04 0/0
질문 픽셀서치 활용한 오버워치 에임고정 질문 2 이쿠센 2018.02.03 0/0
질문 1004매크로 다운받는곳좀 ,, 6 앙탈소녀 2014.10.14 0/0
질문 매크로 만드시는분들 이미지 서치 위주로 하시나요? 5 너울 2014.11.11 0/0
질문 오토핫키 스마트 구이 Edit 적은시간 적용하기 7 품격의상징 2014.09.30 0/0
질문 Genymotion에서 PostMessage를 이용하기 에러 질문 6 무림공작 2015.09.07 0/0
질문 postmessage명령어와 이미지서치 명령어 사용에 관해 ... 3 앙꼬호빵 2014.09.28 0/0
질문 비활성 이미지서치 trans기능 함수 소스좀 얻을수 있을... 4 가족오락관 2016.07.31 0/0
질문 지금 블레이드에서 오토핫키 비활성 명령어 되나요? 4 앙꼬호빵 2014.09.27 0/0
질문 사인코드 우회할 수 있는 방법이 있나요? 1 사용메뉴얼 2016.08.21 0/0
질문 혹시 지니모션 이나 블루스택 용 매크로 스크립트 공유... 5 소문난힌켈 2015.01.07 0/0
자유 추억의 오토핫키네요 7 뻬아 2014.10.08 0/0
Board Pagination Prev 1 ... 201202203204205206207208 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글