매크로

조회 수 1319 추천 2 댓글 3

예전에 펑션으로 이미지 서치 후 비활성 클릭에 대해 글을 쓴 적이 있었습니다.?근데 괜찮겠지 하고 빼먹은 펑션이 하나 더 있더군요. 실제 작업 영역을 구하는 것입니다.

전에 올린 코드는 실제 작업 영역을 구하지 않은 코드입니다.?따라서 그 글의 코드로 비활성 클릭을 하면 좌표에 오차가 있습니다.?PostMessage는 실제 작업 영역의 좌표를 통해 작업이 이루어지기 때문입니다.


http://w3tech.tistory.com/212

위 주소에 가면 실제 작업 영역을 구하는 방법에 대한 설명이 자세히 나와 있습니다.

밑의 소스는 실제 작업 영역을 구하는 펑션을 추가 한 코드입니다.

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

RealwinSize(ByRef posX,ByRef posY,ByRef width,ByRef height){
WinGetPos,x,y,w,h,BlueStacks App Player
SysGet,wFrame,7 ; 현재 시스템의 Border값 (창 테두리 두께)
SysGet,wCaption,4 ; 현재 시스템의 Caption값 (제목 표시줄 높이)
posX:=x+wFrame
posY:=y+wFrame+wCaption
width:=w-wFrame*2
height:=h-wCaption-wFrame*2
return
}

imageSearcher(ByRef imgX, ByRef imgY, posX, poxY,?edgeX,?edgeY, img){
ImageSearch, oX, oY, posX, posY,?edgeX,?edgeY, *50 %img%
if(ErrorLevel = 0){
imgX := oX +10
imgY := oY +10
return true
}?else if (ErrorLevel = 1){
return false
}
}

imageClick(posX, posY, imgX, imgY){
x:=imgX-posX
y:=imgY-posY
N:=x|y<<16
PostMessage, 0x201, 1, %N%, , BlueStacks App Player
PostMessage, 0x202, 0, %N%, , BlueStacks App Player
sleep, 500
}

F1::
RealwinSize(posX, posY, width, height)
CoordMode, Pixel, Screen

edgeX = posX+width
edgeY = posY+height

result := imageSearcher(imgX, imgY, posX, posY,?edgeX,?edgeY,?"example.png")

if(result=true){
imageClick(posX, posY, imgX, imgY)
}

return

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

RealwinSize 펑션에서 주의하실 점은?SysGet 입니다.?제가 위에 적은 사이트에서는 Border 값을 구하기 위해

SysGet,wFrame,32

라는 코드를 썻는데, 문제는 마지막 숫자 입니다.?이 숫자는 윈도우(운영체제가 아닌 프로그램 틀)의 설정에 따라 다릅니다.?제 코드에서는 7을 넣어줬는데 마우스로 끌어서 사이즈 변경이 불가능한 창의?Border 값은 7 또는 8 이였기에 이 값을 넣어줬습니다. 위에 알려드린 사이트에서도?오토핫키 도움말에서?알 수 있다고 명시되어 있습니다.?도움말에서 찾아 보시고 자신의 환경에 맞는 값을 넣어주시기 바랍니다.

  • theruin 2014.11.20 05:39

    쓰는 방법은 뭐 저도 비슷하네요. 클릭함수의 경우 저는 posX,posY 함수내 global 설정해줘서 파라미터 값을 클릭할값 두개만 넘긴다는게 조금 다를 뿐이네요.?

    if?imageSearcher(imgX, imgY, posX, posY,?edgeX,?edgeY,?"example.png")?

    이렇게 쓰시면 result 값을 구지 쓰실필요 없을실 겂니다.

  • lidmt 2014.11.20 05:48
    자바스크립트에서 변수와 펑션이 자바에서의 작동과 달라 골치를 앓았는데

    오토핫키도 스크립트 언어라 또 발목을 잡힐 줄이야... 무튼 조언 감사합니다.

    덕분에 코드를 좀 더 줄일 수 있게 되었네요
  • 검정다람쥐 2016.04.07 10:12
    theruin님, lidmt님 죄송한데.. 이 댓글 한분이라도 보시는 분.. 저위에 소스 원본좀 온전히 보고싶은데 도와주세요. ㅠㅠ 부탁드립니다. 크롬으로봐도 익스로 봐도.. 저에겐 여기 소스가 온통 중간중간 물음표가 떠서 보기가 힘듭니다. 왜 저만그런지 모르겟어여. 몇몇분들도 그런거같은데 다들 아무 언급이 없네요;;; 킁;
    [email protected] 텍스트파일로 보내주세요. ㅠ 부탁좀

List of Articles
분류 제목 글쓴이 최근변경 추천
자유 오토핫키 ...질문 및 요청좀 ㅠ.ㅠ 17 강남몬드 2015.07.08 0/0
질문 [질문]듀얼모니터 가상 화면으로 보내기 + 위치고정 춥다람쥐 2015.07.05 0/0
질문 DLL관련 변수선언, Guicontrol관련 질문. 2 아잉뿌잉 2015.07.06 0/0
질문 getkeystate 정지 시키는방법도 잇나요? 2 바유무 2015.07.04 0/0
질문 오토핫키를 통해서 블로그 관리도 가능한가요? 5 궁극의 2015.07.07 0/0
질문 아두이노 연동을 통한 확장이 될가요? 6 궁극의 2015.07.04 0/0
질문 Postmessage wparam, lparam 질문입니다. 5 레이븐 2015.07.04 0/0
질문 외치기님이 작성하신 비활성 이미지 함수를 이용중 오... 10 찬늘 2015.11.26 0/0
질문 (GUI) edit에 입력받은 변수로 대기시간을 설정하는 스... 6 잠튕이 2015.07.02 0/0
질문 구이 에 인터넷 창 띄우기 2 제발등업좀2 2015.07.02 0/0
질문 edit에 대해서 간단한거 하나만 질문합니다. 4 치즈치즈해 2015.07.02 0/0
질문 이미지서치 질문있습니다. 4 법돌 2015.07.02 0/0
질문 winmove 질문좀 드리겠습니다. 7 우앙쿵쾅 2015.08.04 0/0
질문 PostMessage 질문좀요 1 허밍의지 2015.07.12 0/0
질문 winhide로 숨긴 창에 postmessage 쏠 수 없나요? 2 인형 2015.07.05 0/0
질문 리스트박스에서 더블클릭하면 복사되게하는 법 질문죰 2 오호라욧 2015.07.03 0/0
질문 주어진 시간만큼 쉬고, 클릭을 하게 만들고 싶은데.. 2 헐키 2015.06.30 0/0
정보 이미지 서치시 범위찾는 스크립트입니다 beat 2015.06.30 0/0
정보 블루스택 PostMessage 사용법 4 천례향 2016.03.21 0/0
질문 맵대조 하는 법을 몰라서.. 그냥 억지로 짜내네요.ㅠ.ㅠ. 5 헐키 2015.06.30 0/0
Board Pagination Prev 1 ... 161162163164165166167168169 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글