매크로

이것저것 소스조금씩 보면서 많이 배우고 있는 초보입니다. 전에 알수없는 이유로인해 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
분류 제목 글쓴이 최근변경 추천
질문 흑백화를 시킨 후 이미지를 저장 하였습니다. 이후 이... 1 haegu 2018.09.11 0/0
질문 흑백화 이미지서치 참고할만한 글 있나요?? 3 급홍어감별사 2018.07.02 0/0
질문 흑백 비활성 이미지 검색 구현하신 분 계세요? 4 프리 2019.05.23 0/0
질문 후 문의 2번째.. 드립니다......... 4 문의드립니다 2015.06.10 0/0
질문 활성화된 프로세스 죽이는법 kill 3 리엔니케니스타 2017.03.29 0/0
질문 활성과 비활성의 차이가 무엇인가요~? 1 배고파3000 2018.09.04 0/0
질문 활성 ? 비활성 질문.. 2 아카드 2014.11.04 0/0
질문 확장모니터에서 controlclick질문드립니다 레나류륜 2016.10.27 0/0
질문 확율을 결과물로 출력중입니다. 특수문자 출력을 못해요 3 가족오락관 2016.11.08 0/0
질문 화상키보드도 오토핫키로 클릭할수 있나요? 1 김꼬뚜레 2018.08.15 0/0
질문 화면에 웹브라우져 여러개 띄우고 각각 다른 프록시를 ... 1 오켕 2016.03.29 0/0
질문 화면 해상도 4 나는황제다 2015.04.23 0/0
질문 화면 인식 자동 클릭식 메크로를 해보고싶은데 2 와사비 2022.12.14 0/0
질문 화면 자체를 고정시킬수는 없을까요? mad1 2017.04.23 0/0
질문 혹시... 드래곤플라이트나 포코팡같은 게임도 오핫키로... 5 flem 2015.05.21 0/0
질문 혹시... 같은모양 찾는방법이있나요? 11 제발등업좀2 2022.12.14 0/0
질문 혹시 항상 창을 활성화시킬수는 없을까요? 4 투혼레몬 2015.07.07 0/0
질문 혹시 핫키 하나로 on,off 기능 수행할수 있나요? 10 으뜸어린이 2014.11.10 0/0
질문 혹시 핫키 눌러서 수행중에 다른핫키도 먹히게 하는게 ... 3 으뜸어린이 2014.11.15 0/0
질문 혹시 피파온라인3 오토핫키 스크립트 갖고 계신분있나... 앗뵤 2015.09.22 0/0
Board Pagination Prev 1 2345678910 ... 173 Next
/ 173

전체 최신 인기글

전체 주간 인기글