오토핫키 커뮤니티

조회 수 2076 추천 0 댓글 7

일단 별되를 접고나서 만들던 메크로도 버리고(?) 한동안 뜸했었지만..


실상은 사무실에서 사용하는 프로그램과, 다른 게임 메크로로 오핫키를 즐겨 사용하고는 있었어요..


일단 각설하고.. 블루스택 구버전은 GDIP가 작동합니다.

기반 자체가 요즘나오는 앱플레이어와는 다르게 생겨먹어서요..


그래서 오늘은 gdip를 이용한 메크로 제작에 도움이 될만한 소스를 투척합니다.

당연히 비활성 이미지서칭입니다.


작성하는데 시간좀 걸리겠지만.. 또 한동안 잠수타면 되겠죠 ㅠ


일단 필요한 스크립트가 있죠..


Gdip.ahk

Gdip_imagesearch.ahk

이 두녀석이고요..


인터넷 검색만 해보셔도 금방 구할수 있습니다.


사무실컴터라... -_- 업로드가 안되요; 여기저기 다 안됩니다. ㅠ 양해를..;;


일단 두 파일을 받으시고


#Include bin\Gdip.ahk

#Include bin\Gdip_imagesearch.ahk


사용하실 스크립트에 넣어주시고요

시작해보죠..

기본적으로 블루스택을 기준으로 작성합니다.

기타에뮬에서는 작동자체가 안되니.. 참고바랍니다.


제일 우선적으로 


Winget,title,id,BlueStacks~~~


명령어로 title 에 디바이스 id를 넣어주고 시작합니다.


;이미지서치 함수

/*

SearchImg(ByRef clickX, ByRef clickY, Filename, AreaX1="0", AreaY1="0", AreaX2="0", AreaY2="0", Variation="120")

ByRef clickX : 검색성공했을경우 이미지 좌표 X

ByRef clickY : 색성공했을경우 이미지 좌표 Y

Filename : 찾을 이미지 파일명

AreaX1="0", AreaY1="0", AreaX2="0", AreaY2="0" : 창내부에서 검색할 범위지정 생략시 전체이미지 검색

Variation="120" : 오차율지정 - 생략시 120 자동지정

*/

SearchImg(ByRef clickX, ByRef clickY, Filename, AreaX1="0", AreaY1="0", AreaX2="0", AreaY2="0", Variation="120")

{

global title

gdipToken := Gdip_Startup()

bmpHaystack := Gdip_BitmapFromHwnd(title)

bmpNeedle := Gdip_CreateBitmapFromFile(Filename)

RET := Gdip_ImageSearch(bmpHaystack,bmpNeedle,LIST,AreaX1,AreaY1,AreaX2,AreaY2,Variation,"",1,1)

Gdip_DisposeImage(bmpHaystack)

Gdip_DisposeImage(bmpNeedle)

Gdip_Shutdown(gdipToken)


if (LIST != "") ; 이미지를 찾았다면

{

StringGetPos, CommaW, LIST,`,

StringLeft,clickX,LIST,%CommaW% ; imgX 좌표 리턴

CommaW++

StringTrimLeft,clickY,LIST, %CommaW% ; imgY 좌표 리턴

return 0

}

else

{

clickX := 0

clickY := 0

return 1

}

} ; End


끝.


추가 비활성클릭


Click(x, y) ; Click 함수

{   

global title

ControlClick,x%x% y%y%,ahk_id %title%

sleep, 50 ; 50ms 대기 (0.05초))

return

}


사용예시1

검색성공하면 해당 이미지클릭


    if ( SearchImg(eventX,eventY,"Main_Even.bmp",0,0,0,150) = 0 )

    {

        Click(eventX,eventY)

        Sleep, 200

    }


사용예시2

    SearchImg(accX,accY,"main_acc100.bmp",260,420) ; 범위지정 예시

    SearchImg(EggX,EggY,"main_egg.bmp",,,,,80) ; 오차율 지정 예시


솔직히 구버전 블루스택에서 앱이 구동되고 단일창만 사용하신다면 메크로는 블루스택이 '갑'입니다.

최소화는 안되지만

화면밖으로 보내버리면 아주 잘돌아가거든요..


그럼 수고하세요 ^^


  • 박지민 2016.02.26 10:02
    if ( SearchImg(eventX,eventY,"Main_Even.bmp",0,0,0,150,50) = 0 )

    이렇게되면 범위: 0,0 / 0,150 오차범위: 50

    맞나요?
  • walter 2016.02.28 17:38

    팁 감사합니다.  정말 잘보고 갑니다!!!

    참고하고갑니다. 빨리 한번 해보고싶네요.   지금 밖이라 아쉽게 못해보지만 ㅠ 

  • 혜띠뿌뿌 2016.03.24 01:26
    #Include Gdip.ahk
    #Include Gdip_imagesearch.ahk


    Winget,title,id,계산기

    F1::

        if ( SearchImg(eventX,eventY,"1.bmp",0,0,0,150) = 0 )
        {
            msgbox,찾음
            Sleep, 200
        }
        if ( SearchImg(eventX,eventY,"1.bmp",0,0,0,150) = 1 )
        {
            msgbox,못찾음
            Sleep, 200
        }
    return



    /*
    SearchImg(ByRef clickX, ByRef clickY, Filename, AreaX1="0", AreaY1="0", AreaX2="0", AreaY2="0", Variation="120")
    ByRef clickX : 검색성공했을경우 이미지 좌표 X
    ByRef clickY : 색성공했을경우 이미지 좌표 Y
    Filename : 찾을 이미지 파일명
    AreaX1="0", AreaY1="0", AreaX2="0", AreaY2="0" : 창내부에서 검색할 범위지정 생략시 전체이미지 검색
    Variation="120" : 오차율지정 - 생략시 120 자동지정
    */
    SearchImg(ByRef clickX, ByRef clickY, Filename, AreaX1="0", AreaY1="0", AreaX2="0", AreaY2="0", Variation="120")
    {
    global title
    gdipToken := Gdip_Startup()
    bmpHaystack := Gdip_BitmapFromHwnd(title)
    bmpNeedle := Gdip_CreateBitmapFromFile(Filename)
    RET := Gdip_ImageSearch(bmpHaystack,bmpNeedle,LIST,AreaX1,AreaY1,AreaX2,AreaY2,Variation,"",1,1)
    Gdip_DisposeImage(bmpHaystack)
    Gdip_DisposeImage(bmpNeedle)
    Gdip_Shutdown(gdipToken)

    if (LIST != "") ; 이미지를 찾았다면
    {
    StringGetPos, CommaW, LIST,`,
    StringLeft,clickX,LIST,%CommaW% ; imgX 좌표 리턴
    CommaW++
    StringTrimLeft,clickY,LIST, %CommaW% ; imgY 좌표 리턴
    return 0
    }
    else
    {
    clickX := 0
    clickY := 0
    return 1
    }


    이렇게쓰는게맞나요?ㅠ.ㅠ


        if ( SearchImg(eventX,eventY,"1.bmp",0,0,0,150) = 0 )
        {
            msgbox,찾음
            Sleep, 200
        }
        if ( SearchImg(eventX,eventY,"1.bmp",0,0,0,150) = 1 )
        {
            msgbox,못찾음
            Sleep, 200
        }
    여기서 eventX,eventY 를그대로쓰는건가요?
    아니면 clickX,clickY ...?
    아는게없어서너무어렵네요ㅠ.ㅠ
    @로뎀나무
  • 영창이염 2016.05.29 12:17

    트랜스기능은 사용할수없나요 ?

  • 파르페틱 2016.06.21 11:07

    eventX 랑 eventY는 제가 찾아서 넣어줘야 하는 값인가요?

  • 갈형 2016.09.06 01:38
    내일 사무실 출근하면 이글을 보며 시도해버려 합니다. 녹스에서도 작동이 될까요...?
  • 삐루 2019.07.30 10:14

    잘쓰겠습니다!!감사합니다


List of Articles
분류 제목 글쓴이 최근변경 추천
질문 블루스택에서는 gdip로 이미지서치가 가능한가요? 4 walter 2016.02.28 0/0
질문 pBitmapHaystack 과 pBitmapNeedle에 대해질문드립니다. 5 walter 2016.02.29 0/0
질문 이미지 서치 관련 질문 드려요. 4 뎅뎅 2016.02.24 0/0
정보 오랫만에 들러서 하나 투척하고 가요 ^^ 7 로뎀나무 2019.07.30 0/0
질문 이미지 서치 랜덤위치 때문에 질문드립니다. 4 뎅뎅 2016.02.26 0/0
질문 scite4autohotkey 기능 질문드려요 쵸쵸 2016.02.25 0/0
질문 ini파일에 저장이 정상적으로 이루어 졌는지 확인하는... 1 퉁군 2016.03.04 0/0
질문 이런 채팅 매크로 오토핫키(혹은 다른 매크로)로 만들 ... 드링크 2016.02.26 0/0
질문 스크립트 실행시 중복으로 실행못하게 하는 명령어가 뭐죠 1 지니블렉션 2016.02.27 0/0
질문 윈도우 or 구이 비활성화 질문... 4 화프 2016.02.28 0/0
질문 오토핫키파일우클릭 - 속성 - 자세히 여기에 나오는거 ... cjh71 2016.02.28 0/0
질문 핫키 고수님들 ㅠ 변수비교하는데 비교가안되서 도움요... 2 개멍멍멍 2016.03.01 0/0
질문 듀얼모니터 이미지서치 방법좀요 1 사군자vv 2016.03.04 0/0
질문 OCR 과 이미지서치 문제가 안풀립니다.. 6 뎅뎅 2016.03.06 0/0
질문 특정위치 클릭 방법 질문 드리겠습니다. 5 까스배달소년 2016.03.29 0/0
질문 블루스택에서 ESC키 입력하는 법 질문드립니다. 2 amoure 2016.03.04 0/0
질문 gdip 범위지정서치 질문합니다. 8 N4N2 2017.09.07 0/0
질문 메이플매크로/인식이안되도 스크립이 진행되는문제 2 세나블텍 2016.03.04 0/0
질문 원클릭 블루스택 해상도 설정 방법 4 파랑상 2016.03.12 0/0
질문 gui 드롭다운리스트 질문드려요 6 쵸쵸 2016.03.05 0/0
Board Pagination Prev 1 ... 707172737475767778 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글