매크로

이것저것 소스조금씩 보면서 많이 배우고 있는 초보입니다. 전에 알수없는 이유로인해 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
분류 제목 글쓴이 최근변경 추천
질문 혹시 오토핫키얘기는 아니지만 가상머신에 대해 아시는... 바남 2018.10.21 0/0
질문 혹시 온라인 게임 메크로 제작문의도 받으시나요.. 8 큰일났숑 2017.01.08 0/0
질문 혹시 움직이는 대상 이미지서치를 쉽게 하는방법있을까요 1 쿠쿠다스4 2018.11.15 0/0
질문 혹시 이미지인식이 옛날 온라인게임도 가능할까요? 노가다게임 2023.02.24 0/0
질문 혹시 이브온라인 게임하시는분있나요?? 아이응 2018.03.10 0/0
자유 혹시 이오류아시는분계시나용.. 1 sk브로드반드 2018.04.12 0/0
질문 혹시 제작의뢰 받아주시는분있을까요 엄청간단한겁니다 1 운월임 2018.07.13 0/0
질문 혹시 지니모션 이나 블루스택 용 매크로 스크립트 공유... 5 소문난힌켈 2015.01.07 0/0
질문 혹시 컬러 설정 어떻게 하는지 아시는분...! 1 빵빵또앙 2020.02.24 0/0
질문 혹시 쿠키런 매크로 만드시는분있나요? 벋시s 2014.11.03 0/0
자유 혹시 특정 윈도우창의 볼륨만 컨트롤 할 수 있을까요? 1 sica 2015.11.02 0/0
질문 혹시 퓨처파이트 하시는분? 2 dkdh2 2016.12.07 0/0
질문 혹시 플래시위에 매크로를 입력하는 방법이 있을까요? 1 준기네필름 2018.01.17 0/0
질문 혹시 피시마다 이미지 색상이 달라서 인식 안되는 경우... 3 hiki 2017.10.26 0/0
질문 혹시 피파온라인3 오토핫키 스크립트 갖고 계신분있나... 앗뵤 2015.09.22 0/0
질문 혹시 핫키 눌러서 수행중에 다른핫키도 먹히게 하는게 ... 3 으뜸어린이 2014.11.15 0/0
질문 혹시 핫키 하나로 on,off 기능 수행할수 있나요? 10 으뜸어린이 2014.11.10 0/0
질문 혹시 항상 창을 활성화시킬수는 없을까요? 4 투혼레몬 2015.07.07 0/0
질문 혹시... 같은모양 찾는방법이있나요? 11 제발등업좀2 2022.12.14 0/0
질문 혹시... 드래곤플라이트나 포코팡같은 게임도 오핫키로... 5 flem 2015.05.21 0/0
Board Pagination Prev 1 ... 201202203204205206207208 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글