오토핫키 커뮤니티

조회 수 3711 추천 0 댓글 10

비활성 클릭시에는 마우스 좌표를 스파이에서 가져와,

Active Window의 좌표를 클릭해주면 됩니다만..

실제 좌표와 약간의 오차가 있습니다.


그래서 보정한 함수가 아래 sendClick2 입니다.


아래 코드를 가지고, 블루스택에서 터치좌표를 표시하게끔 한뒤에 F4를 눌러 테스트해보면 알 수 있습니다.

처음 누르는 곳은 Active 윈도우의 마우스 좌표이고,

두번째 누르는 곳은 보정된 좌표입니다.


실제 사용할 때에는 스파이에 나오는 좌표를 그대로 사용하면됩니다.

제 샘플코드에서는 위쪽에 나오는 좌표입니다.

sendClick2(x, y) 이렇게 사용합니다.


https://i.imgur.com/KCTch6z.jpg

마우스에서 윈도우 내부 좌표 370, 288을 클릭하면..

보정된 좌표 366, 261을 클릭하는 것을 보여줍니다.

sendClick(370, 288) ?-> ?윈도우 내부 좌표 클릭은 366, 261



;---- 이하 코드

SendMode Input ?; Recommended for new scripts due to its superior speed and reliability.

CoordMode, Pixel, Screen


Gui, Add, Text, x10 y10 w250 h30 vAID, ActiveID

; Gui, Add, Button, x250 y10 w40 h30 vCopy1, Copy

Gui, Add, Text, x10 y40 w250 h30 vPOS,

Gui, Add, Text, x10 y100 w250 h30 vPOS2,

Gui, Show, AutoSize, SampleWindow

GuiControl, Show, Pic


Return


GuiClose:

ExitApp


F4::

WinGetActiveTitle, ActiveID ; 창이름 가져오기

GuiControl, Text, AID, %ActiveID%


MouseGetPos, x, y ; 1. 마우스 위치를 가져와서


; -- 이부분은 좌표 표시하기 위해 들어간 부분.. 필요없습니다.

WinGetPos, winX, winY, winW, winH, %ActiveID%

SysGet, capH, 4 ; 캡션Height

SysGet, bordW, 32 ; 보더Width

SysGet, bordH, 33 ; 보더Height


px2:=x-bordW/2

py2:=y-bordH/2-capH


GuiControl, Text, POS, 마우스위치 - x : %x% , y : %y%

GuiControl, Text, POS2, 보정위치 - x : %px2% , y : %py2%


p := x|y<<16

PostMessage, 0x201, 0, %p%, , %ActiveID%

PostMessage, 0x202, 0, %p%, , %ActiveID%


Sleep, 500

;-- 여기까지 필요없습니다.

sendClick2(x, y) ; 2. 보정된 좌표를 클릭합니다.

Return


;클릭

sendClick2( x, y) {

? ? global ActiveID

? ? SysGet, capH, 4 ; 캡션Height

? ? SysGet, bordW, 32 ; 보더Width

? ? SysGet, bordH, 33 ; 보더Height


? ? px:=x-bordW/2

? ? py:=y-bordH/2-capH


? ? p := px|py<<16


? ? PostMessage, 0x201, 0, %p%, , %ActiveID%

? ? PostMessage, 0x202, 0, %p%, , %ActiveID%

? ? Sleep, 200

? ? Return

}



  • profile
    외치기 2014.11.28 17:36

    CoordMode, Mouse ,Relative

    이렇게 설정하고 구했을때 나오는 마우스 좌표값이랑

    위에서 보여주는 보정된 마우스 좌표값이랑 다른가요?

  • 모바게 2014.11.28 17:56
    테스트해보니 MouseGetPos, x, y 로 가져오는 좌표는 동일한 것 같습니다.
    보정 후의 좌표는 아닙니다.

    http://www.autohotkey.com/docs/commands/MouseGetPos.htm
    에서 보면 MouseGetPos 는 기본적으로 활성 윈도우의 상대좌표를 가져온다고 하네요..
  • profile
    외치기 2014.11.28 17:57
    MouseGetPos는 보더를 포함한채로 좌표를 가져오고
    PostMessage는 보더를 제외한 좌표를 필요로해서 보정이 필요한건가요?
  • 모바게 2014.11.28 18:05
    네 제가 알고 있는 바로는 그렇습니다 ^^
    반대로 전체 윈도우에서 클릭하게끔하자면(MouseClick) 활성창의 x,y 좌표만 더해주면 될 것 같네요..
  • 모바게 2014.11.28 18:08
    보정이 필요없게 하려면 screen, relative가 아니라 client 로 사용해야 할 것 같습니다.
    http://w3tech.tistory.com/212
    이쪽 참고하세요~
  • 서시 2018.01.03 11:00
    와 모바게님 천재!
    CoordMode, Mouse ,client
    제일위에 이거 한줄 추가헀더니 보정 필요없이 잘 찾네요!
  • 캔디염 2014.12.18 13:23

    감사합니다 드디어 어떻게 하는지 알았네요 ㅠㅠ

  • 홍삼액기쓰 2015.08.28 13:13

    좋은 정보 감사합니다 ^^

  • walter 2016.01.22 08:14

    좋은  참고하고갑니다!

  • 함카리스마 2024.07.28 13:56
    /*
    MouseGetPos 함수는
    기본적으로 활성창의 좌상단을 기준으로 "상대적인 마우스 위치" 를 가져오는 것이고,
    상대적인 마우스 위치는?  특정기준점(활성창의 좌상단)을 기준으로 측정된 마우스 커서의위치 이며,
    상대적인 좌표는 이 기준점에서 얼마나 떨어져 있는지를 나타내는 것이며, "좌상단"은 해당 윈도우의 가장 왼쪽상단 모서리를 의미합니다.
    -절대 좌표: 전체화면을 기준으로한 좌표위치로, 모니터 전체화면 기준의 가장 왼쪽상단 모서리 위치가 (0, 0)이 되는 좌표를 말함.
    -상대 좌표: 특정기준점(활성창의 좌상단)을 기준으로한 좌표위치. 활성창의 좌상단을 (0, 0)으로 보는 것
    */

    ;그럼이제, 활성창의 좌상단을 기준으로 해서 좌표를 가져오는 방법을 예시로 들어보겠습다.

    F2:: ;<=== F2를 누르면,
    MouseGetPos, xpos, ypos ;현재 마우스 위치정보를 담아서
    MsgBox, 마우스 위치: X%xpos% Y%ypos% ;메시지 박스로 표시

List of Articles
분류 제목 글쓴이 최근변경 추천
자유 비활성 클릭 좌표 테스트 샘플 (아래 제가 올린함수연관) 10 모바게 2024.07.28 0/0
자유 파더님 3 외치기 2014.11.29 1/0
자유 세나 쫄작 소스공유합니다.(제약사항 많음) 19 swksd 2024.08.09 0/0
질문 질문 질문 질문 질문 질문 문질 문질 문질 10 파더 2014.11.28 0/0
질문 GUI 체크박스 모두선택한번에 하는 방법이 궁금합니다. 3 우후훅 2014.11.28 0/0
질문 쫄작하는오핫만들려는데 도와주세요 6 호시히카리 2014.11.28 0/0
정보 List에 해당하는 GUI 팁 9 외치기 2015.08.24 2/0
질문 오핫 고수님들 꼭봐주세요! 12 파더 2015.01.01 0/0
질문 매크로 실행시 gui에 ini를 어떻게 적용시키는지... 5 시에 2014.11.28 0/0
질문 ifinstring문 아시는지요. 특정단어유무검색요. 2 우후훅 2014.11.28 0/0
정보 타이머 샘플입니다. 3 모바게 2014.11.28 1/0
자유 아래 제가 올린 함수 관련 샘플하나 올립니다. 4 모바게 2014.11.27 0/0
질문 비활성 이미지서치 클릭 관련 질문좀요. 5 파더 2014.11.27 0/0
질문 run명령어로 크롬 주소오픈할때요. 12 우후훅 2014.11.27 1/0
자유 지니모션용 오토핫키 만들어 쓰려다가 6 팝스타리아 2014.11.28 0/0
질문 데스크탑과 노트북 차이점이 멀까요? 이미지 서칭이 호... 8 발자국 2014.11.26 0/0
정보 소스 여러 파일로 관리 하는 팁 7 묵치기 2015.01.20 0/0
질문 오토핫키 좋은 강좌점요 1 현이내 2014.11.24 0/0
질문 PixelGetColor 기반으로 만든 매크로 공유 힘들까요? 6 rh1406 2014.11.25 0/0
자유 난리 났네요 ㅎㅎ 여러분 백업 잘해두세요 ㅠ 14 으뜸어린이 2014.11.27 0/0
Board Pagination Prev 1 ... 197198199200201202203204205 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글