매크로

이것저것 소스조금씩 보면서 많이 배우고 있는 초보입니다. 전에 알수없는 이유로인해 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
분류 제목 글쓴이 최근변경 추천
질문 !(느낌표) 가 주는게 무엇을 뜻하나요? 7 디스트로이어 2022.12.14 0/0
질문 #IfWinActive 사용할 경우 Hotkey를 on/off 하는 방법... 2 Rabbit 2016.08.17 0/0
질문 #Include file "Gdip.ahk" 이거 어떻게 해결하나여? 11 으으아으아 2016.09.18 0/0
질문 %A_ScriptDir%로 쓰려면 이미지 어디에 넣어야되나요? 4 작은이득 2019.05.02 0/0
질문 (GUI) edit에 입력받은 변수로 대기시간을 설정하는 스... 6 잠튕이 2015.07.02 0/0
질문 (imagesearch 관련 질문) 고수님들의 답변을 기다리고 ... 믕이 2019.01.07 0/0
질문 (LD앱) settiemr 만 넣으면 비활성이미지 서치 못하네요. 2 현장요원 2020.04.24 0/0
질문 (간단한?)매크로하나 만들고픈데 제작의뢰가능한가요? 2 더기더기1 2018.11.21 0/0
질문 (쌩초보) 단순 이미지서치에서 일정구간 n회 반복하는 ... 1 잘해보자잉 2017.08.17 0/0
질문 (오핫) 여러 단어 변수 지정 및 랜덤 조합 출력 방법 3 우리형 2019.10.23 0/0
질문 (중복질문)블루스택3 포스트메시지 키보드입력 ESC누르... 4 가족오락관 2017.12.29 0/0
질문 (초보) GDIP 이미지서치 사용방법 2 험블비 2017.08.31 0/0
질문 (초보) 앱플레이어 이미지서치 가보려하는데 산두적 2020.07.20 0/0
질문 (초보) 이미지서치 연속사용 1 작은이득 2017.06.07 0/0
질문 (해결)블루스택 메인화면거치지않고 바로 앱 실행 3 사랑사랑 2015.07.28 0/0
질문 (허접질문)adb 리니지M 매크로 제작되나요? 2 테일하는병키 2017.09.18 0/0
질문 +Backgroundtrans의 뜻을 한글로 설명해주세요 2 GOLD 2015.03.11 0/0
질문 /IM HD-Service /T /F 이거 경로가 어떻게 되는건가요???? 2 welchs 2016.07.06 0/0
질문 1004매크로 1 dlalsrb86 2014.12.04 0/0
질문 1004매크로 다운받는곳좀 ,, 6 앙탈소녀 2014.10.14 0/0
Board Pagination Prev 1 2345678910 ... 173 Next
/ 173

전체 최신 인기글

전체 주간 인기글