매크로

픽셀서치는 활성창에서만 활용가능해서 화면이 가려있거나 최소화가 되어있으면 픽셀서치를 할 수 없습니다. 오핫포럼을 보니까 함수를 이용해서 비활성과 비슷하게 픽셀서치와 같은 기능이 구현 가능하더군요. 저도 정확히 이해를 하진 못 했지만 고수님들의 조언을 통해 활용이 가능할것같아 퍼왔습니다 핵심은 화면좌표의 색값을 변수로 저장하여 if문을 통해서 픽셀서치와 같은 기능을 비활성으로 구현하는겁니다. 고수님들의 많은 해석부탁드리며 다같이 공부해봅시다. 화이팅!


gui,color,red
gui,show,w200 h200,hello
return

F6::
WinGet,ID,ID,hello
x=100
y=100
result:=PixelColor(x,y,ID)
msgbox,%result%
return


PixelColor(pc_x, pc_y, pc_wID)
{
If pc_wID
{
pc_hDC := DllCall("GetDC", "UInt", pc_wID)
WinGetPos, , , pc_w, pc_h, ahk_id %pc_wID%
pc_hCDC := CreateCompatibleDC(pc_hDC)
pc_hBmp := CreateCompatibleBitmap(pc_hDC, pc_w, pc_h)
pc_hObj := SelectObject(pc_hCDC, pc_hBmp)

pc_hmCDC := CreateCompatibleDC(pc_hDC)
pc_hmBmp := CreateCompatibleBitmap(pc_hDC, 1, 1)
pc_hmObj := SelectObject(pc_hmCDC, pc_hmBmp)

DllCall("PrintWindow", "UInt", pc_wID, "UInt", pc_hCDC, "UInt", 0)
DllCall("BitBlt" , "UInt", pc_hmCDC, "Int", 0, "Int", 0, "Int", 1, "Int", 1, "UInt", pc_hCDC, "Int", pc_x, "Int", pc_y, "UInt", 0xCC0020)
pc_fmtI := A_FormatInteger
SetFormat, Integer, Hex
DllCall("GetBitmapBits", "UInt", pc_hmBmp, "UInt", VarSetCapacity(pc_bits, 4, 0), "UInt", &pc_bits)
pc_c := NumGet(pc_bits, 0)
SetFormat, Integer, %pc_fmtI%

DeleteObject(pc_hBmp), DeleteObject(pc_hmBmp)
DeleteDC(pc_hCDC), DeleteDC(pc_hmCDC)
DllCall("ReleaseDC", "UInt", pc_wID, "UInt", pc_hDC)
Return pc_c
}
}


CreateCompatibleDC(hdc=0) {
return DllCall("CreateCompatibleDC", "UInt", hdc)
}

CreateCompatibleBitmap(hdc, w, h) {
return DllCall("CreateCompatibleBitmap", UInt, hdc, Int, w, Int, w)
}

SelectObject(hdc, hgdiobj) {
return DllCall("SelectObject", "UInt", hdc, "UInt", hgdiobj)
}

DeleteObject(hObject) {
Return, DllCall("DeleteObject", "UInt", hObject)
}

DeleteDC(hdc) {
Return, DllCall("DeleteDC", "UInt", hdc)
}

  • 리체 2014.09.30 18:57

    위의 예제를 토대로 타이틀명과 ID를 지니모션을 인식하게 하고?색을 찾으니 0x0 으로 나오네요.

    지니모션을 대상으로 할 경우,?추가해줘야 할것이 있는가요?

  • 앙꼬호빵 2014.10.01 07:55
    저도 지니모션에서 확인해봤는데 색값반환이 제대로 안되더라구요. 몬가 지니모션은 막아놓은듯하네요. 아직은 자료를 더 찾고 있습니다
  • Vermee 2014.12.06 01:15

    색값도 색값이지만... 좌표 값이 다른게 아닐까요?

  • 로우얄 2014.12.12 15:30

    지니모션에선 안되는군요..

    이게 안되면 비활성 이미지서치도 불가능하죠..

  • mecroman 2018.06.09 14:46

    녹스 잘 되네요 

    WinGet, Title, ID, NoxPlayer

    result:=PixelColor(x,y,Title) 


    ID값에 윈겟으로 얻은 아이디 넣어줬구요 

    Gdip 랑 같이 사용할때는 PixelColor 함수 이외 함수는 필요없습니다 전부다 Gdip 파일에 있어서 충돌나더라구요 


  • 양파형 2019.05.26 18:52

    정말 죄송하지만 녹스로 비활성 픽셀에서요
    PixelSearch, X좌표, Y좌표, %pos_x%, %pos_y%, %x_right%, %y_bottom%, 0x8F6A40 , ,FAST RGB
    if(ErrorLevel=0)
    {
    비활성왼쪽클릭(x좌표, y좌표)
    }
    0x8F6A40 <<이색을 찾고싶으면 어떤 함수를 따로 넣어줘야하나요 ㅠ 초보라서요 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
자유 #던파#한국에서 대리육성합니다 한국육성팀 2019.04.04 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
자유 (개초보) 이번에는 함수를 이용해서 세나 매크로 만들... 3 앞프론뒷태 2015.02.04 0/0
자유 (세븐나이츠) 뿌듯부듯.. 11 swksd 2015.11.14 1/0
자유 (세븐나이츠)쌩초보가 만든 매크로 공유합니다.(이미지... 12 swksd 2015.04.24 2/0
질문 (쌩초보) 단순 이미지서치에서 일정구간 n회 반복하는 ... 1 잘해보자잉 2017.08.17 0/0
정보 (안내) 글내용확인하시고 자삭하세요 27 snf 2015.02.23 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
정보 (펌)픽셀서치를 대체할 수 있는 비활성픽셀칼라 활용 ... 6 앙꼬호빵 2019.05.26 0/0
Board Pagination Prev 1 2345678910 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글