매크로

질문
2016.05.30 23:28

Gdip 서치 질문이요 ㅠㅠ

조회 수 598 추천 0 댓글 2
#Include Gdip.ahk

global bmpneedle
global bmphaystack
global RET
global Gdip_SaveBitmapToFile

global gdipToken := Gdip_Startup()
global Image

global ImageSaved

global speed
global mdefault
global safe
global Time_Setting

global 모드


Gdip_서치클릭(Image2)
{
    WinGet, Title , ID, BlueStacks App Player
    Image = %a_scriptdir%\image\%image2%.bmp

    Gdip_ImageSearchWithHwnd(Title,Image, X, Y)
    Guicontrol,,로그, ▶▶%Image2%.bmp◀◀ = X좌표 : %X% Y좌표 : %Y%||
    Click(x,y)
}

Gdip_서치ESC(Image2)
{
    WinGet, Title , ID, BlueStacks App Player
    Image = %a_scriptdir%\image\%image2%.bmp

    Gdip_ImageSearchWithHwnd(Title,Image, X, Y)
    Guicontrol,,로그, ▶▶%Image2%.bmp◀◀ = X좌표 : %X% Y좌표 : %Y%||

    Postmessage, 0x100, 0x1B, 0x10001, , BlueStacks App Player
    Postmessage, 0x101, 0x1B, 0xC0010001, , BlueStacks App Player
    Sleep, %Time_Setting%
}

속도조절함수()
{
    if Speed = 1
    {
        Time_Setting := 200
        모드 := 고속
    }
    
    else if mDefault = 1
    {
        Time_Setting := 500
        모드 := 표준
    }
    
    else Safe = 1
    {
        Time_Setting := 1000
        모드 := 안전
    }
}
return


Gdip_ImageSearchWithHwnd(Hwnd,Image,Byref X,Byref Y,Variation=0, sX = 0, sY = 0, eX = 0, eY = 0, Trans="")     
{
    
    WinGet, ActiveID, ID, BlueStacks App Player
    Gui,submit,nohide
    formattime , nowtime,,yyyy-MM-dd HH:mm:ss
    Guicontrol,,로그, %nowtime% 이미지 저장 및 비교서치 시작||
    Sleep, %Time_Setting%
    
    gdipToken := Gdip_Startup()
    bmpHaystack := Gdip_BitmapFromHwnd(Hwnd)
 
    ;-------------------------------------
    ;비활성 캡춰가 제대로 되는지 확인하기 위해 이미지파일로 저장하는 테스트 구문
    static imageSaved
    if !imageSaved and imageSaved := true
    Gdip_SaveBitmapToFile(bmpHaystack, "테스트.bmp")
    Guicontrol,,로그, ▶이미지 저장값 = %bmpHaystack%◀||
    ;-------------------------------------
 
    bmpNeedle := Gdip_CreateBitmapFromFile(Image)
    Guicontrol,,로그, ▶이미지 비교값 = %bmpNeedle%◀||
    Sleep, %Time_Setting%
    RET := Gdip_ImageSearch(bmpHaystack,bmpNeedle,LIST,sX,sY,eX,eY,Variation,Trans,1,1)
    
    Guicontrol,,로그, ▶ RET값 = %RET% (1이면 찾음 0이면 없음)◀||
    colorID := Gdip_GetPixel(bmpHaystack, 101,111)
    colors := DEC2HEX(colorID)
    Gdip_DisposeImage(bmpHaystack)
    Gdip_DisposeImage(bmpNeedle)
    Gdip_Shutdown(gdipToken)
    StringSplit, LISTArray, LIST, `,
    X := LISTArray1
    Y := LISTArray2
}

DEC2HEX(DEC, RARGB="false") 
{
SetFormat, IntegerFast, hex
HEX += DEC ;Converts the decimal to hexidecimal
return HEX
}




F2::

Gui,submit,nohide
formattime , nowtime,,yyyy-MM-dd HH:mm:ss

속도조절함수()

loop
{
    ifWinnotExist, BlueStacks App Player 
    {
        run, "C:\Program Files (x86)\BlueStacks\HD-StartLauncher.exe"
        Guicontrol,,로그, ※블루스택튕김, 재실행※||
        Winwait, BlueStacks App Player
        WinMove, 30, 30
        WinSet, AlwaysOnTop, On, BlueStacks App Player
    }

    Gdip_서치클릭("디소체")
    Sleep, %Time_Setting%
    Guicontrol,,로그, ▶%모드%모드_대기시간 : %Time_Setting% ◀||

    Gdip_서치클릭("공지x")
    Sleep, %Time_Setting%
    Guicontrol,,로그, ▶%모드%모드_대기시간 : %Time_Setting% ◀||

    Gdip_서치ESC("공지x2")
    Sleep, %Time_Setting%
    Guicontrol,,로그, ▶%모드%모드_대기시간 : %Time_Setting% ◀||
    
}
}
return


Click(x, y)
{
Coor := x | y<<16
WinGet, ActiveID, ID, BlueStacks App Player

Loop
{
PostMessage, 0x201, 0, %Coor%,, ahk_id %ActiveID%
PostMessage, 0x202, 0, %Coor%,, ahk_id %ActiveID%
Guicontrol,,로그, ♥ 클릭완료 = X좌표 : %X% Y좌표 : %Y% ♥ ||
break
}
sleep, 100
}




-------------------------------------------

와이로님과 슉슉이님 덧글보고 도움을 얻어 만들어봤는데요....

F2 번을 누르면

처음 서치는 bmpHaystack 숫자나오고, bmpneedle 숫자나오고, RED는 1 나오면서 잘작동하는것같은데

두번째서치 부터는 bmpHaystack, bmpneedle 둘다 0x숫자 이런식으로 나와요 (공지x.bmp 랑 공지x2.bmp 부분...)

왜 이런지 모르겠습니다 ㅜㅜ



그리고 Gdip을 활용한 이미지서치는 루프를 할 필요가없나요?? 제가 이해가 잘안되서

지금 블루스택 화면 이랑 컴퓨터에 저장된 image 파일이랑 비교하는거면.... 루프가없어도 될까해서... 아닌가;

으으 하루종일 생각하다보니 머리가 복잡해져서 지금 아무것도 생각이 안나네요 ㅜㅜ


로그창은 이래요▼

https://i.imgur.com/PImS4zM.gif




  • 제발등업좀2 2016.05.30 23:48
    gdip라이브러리 내부에서 정수출력 포맷이 hex 타입으로 설정되 있어서 그럴거에요.
    SetFormat, integer, hex
    a := 1
    MsgBox % a

    ;아래처럼 데시멀 포맷으로 바꿔주면 제대로 나올겁니다.
    SetFormat, integer, d
    b := 1
    MsgBox % b

    ;설정되 있는 정수형 출력포맷은 A_FormatInteger 로 확인 가능합니다.
    MsgBox % A_FormatInteger
    와이로님 답변 입니다.
  • profile
    셋쇼마루 2016.05.31 06:11
    감사합니다!!

List of Articles
분류 제목 글쓴이 최근변경 추천
질문 블루스택 감지 관련 문제 해결좀 부탁드려요 ㅠ 2 247천사잉 2016.06.02 0/0
질문 이게 무슨 오류인가요? 5 셋쇼마루 2016.05.31 0/0
질문 GDIP 튜토리얼 해보신분 있나요? 프리 2016.05.31 0/0
질문 GUI 에서 입력받은 문자열 출력 질문입니다. 4 우리강아지 2016.06.03 0/0
질문 이미지서치후에 2 셋쇼마루 2016.05.31 0/0
질문 스샷과 adb관련 밑에 글 보고 질문드립니다. 1 우리강아지 2016.06.01 0/0
질문 블루스택을 인식을 못하는건지 ㅠㅠ 도와주세요 12 247천사잉 2016.05.31 0/0
질문 Gdip 서치 질문이요 ㅠㅠ 2 셋쇼마루 2016.05.31 0/0
질문 구글번역Api 이것 되시는분 2 우후훅 2016.06.14 0/0
질문 구이 창 질문합니다 4 셋쇼마루 2016.05.30 0/0
자유 GUI 꾸미기 7 이무 2016.05.30 0/0
질문 함수 winmove 질문드립니다 4 PlusK 2016.05.29 0/0
질문 매크로짠걸로 친구컴에다 실행하니 이미지를 못찾습니다 5 welchs 2016.08.09 0/0
질문 변수를 직접 실행 할수 있나요? 2 MC하얀늑대 2016.05.29 0/0
질문 녹스 비활성 키보드입력 3 그랑데이션 2016.05.28 0/0
질문 모바게님의함수 질문드려요.. 7 혜띠뿌뿌 2016.05.27 0/0
질문 비활성 문의드려요. 2 길이기리 2016.05.27 0/0
질문 비활성 픽셀서치 어떤 명령어 쓰면되나요? 7 신령공주 2016.05.27 0/0
자유 비활성이미지서치 + 클릭 7 셋쇼마루 2017.01.17 2/0
질문 오토핫키 비활성에서 꾹 누르고 있는건 어떻게 해야하... 1 Inpro 2016.05.29 0/0
Board Pagination Prev 1 ... 117118119120121122123124125 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글