매크로

조회 수 259 추천 0 댓글 12

lbuttonck(lx,ly)
{
?global act
?global x
?global y

?if (act = 1)
?{
??ux:=lx+x
??uy:=ly+y
??mouseclick, left, ux, uy
?}
?else
?{
??CoordMode, ToolTip, screen

? WinGetPos, TX, TY, TW, TH, BlueStacks App Player
??SysGet, capH, 4??? ; 캡션Height
??SysGet, bordW, 32 ; 보더Width
??SysGet, bordH, 33 ; 보더Height

??cx:=lx+x-TX-bordW
??cy:=ly+y-TY-bordH-capH

??N:=cx|cy<<16

??PostMessage, 0x201, 1, %N%,,BlueStacks App Player
??PostMessage, 0x202, 0, %N%,,BlueStacks App Player
??sleep, 100
?}
}


x와 y값은 운영체제따른 좌표 보정값입니다.

act는 1은 일반마우스클릭이고, 2는 비활성상태로 돌아가게 하려는데 잘안되네요..

실제로 클릭해보면 엉뚱한곳을 클릭합니다.

이걸 바탕으로 드래그함수를 만들었지만 역시나 드래그가 이상한데요.. 소스어디가 문제일려나요;;


모바게님의 소스를 보았지만 어디가 다른건지 모르겠네요..


  • profile
    외치기 2015.06.02 10:45

    운영체제에 따른 보정이라는게 무슨의미죠?

  • 설일야 2015.06.02 11:14
    XP, 윈8, 윈7이 헤더부분과 보더값이 달라서 쓰던부분인데 생각해보니 비활성에서는 안써도 되겠네요
    활성에서만 쓰다보니 그냥 적용시켰네요..
    저는 윈7에서만 하는데 아는 지인분들 하고만.. 매크로보내줘서 쓰도록 하고 있는데..

    보정값이 없으니 XP와 윈8에서는 픽셀서치와 클릭하는 좌표가 약간씩 상이하더군요.
  • profile
    외치기 2015.06.02 11:17
    캡션과 보더값을 시스템에서 가져오는데 별도의 보정값이 필요한가싶네요.
    윈8에서 약간에 오차가 있다는 얘기는 들었지만 테스트해보지 못해서 그부분은 답변을 못드리겠네요.
  • 설일야 2015.06.02 11:50
    음 상대좌표일때 보정값을 쓰던지라 절대좌표에서도 적용해야하는지는 잘 모르겠네요;

    아무튼 중요한건 저문제가 아니라 저는 윈7이라서 0, 0으로 하고 하는데도
    엉뚱한곳을 클릭한다는거죠

    보통 클릭하는곳이 오차범위가 있기때문에 좌표를 정중앙으로 따면 큰문제가 없는데
    제일 좌측위나 우측아래같은 곳을 클릭하게끔 하면 클릭하지 못하던데요;

    소스상의 문제가 없는지만 좀 봐주세요;
  • profile
    외치기 2015.06.02 12:41
    소스상에 문제라고는 보정치밖에 없습니다.
  • 설일야 2015.06.02 13:14

    drag(sx,sy,ex,ey)
    {
    ?global act
    ?global x
    ?global y

    ?if (act = 1)
    ?{
    ??cx:=sx+x
    ??cy:=sy+y
    ??dx:=ex+x
    ??dy:=ey+y
    ??Mousemove, cx, cy
    ??Send, {LButton Down}
    ??Mousemove, dx, dy
    ??Send, {LButton Up}
    ?}
    ?else
    ?{
    ??coordmode, mouse, screen
    ??WinGetPos, TX, TY, TW, TH, BlueStacks App Player
    ??SysGet, capH, 4 ; 캡션Height
    ??SysGet, bordW, 32 ; 보더Width
    ??SysGet, bordH, 33 ; 보더Height

    ;??cx:=sx+x-TX-(bordW/2)
    ;??cy:=sy+y-TY-(bordH/2)-capH
    ??
    ;??dx:=ex+x-TX-(bordW/2)
    ;??dy:=ey+y-TY-(bordH/2)-capH

    ??cx:=sx+x-TX-bordW
    ??cy:=sy+y-TY-bordH-capH
    ??
    ??dx:=ex+x-TX-bordW
    ??dy:=ey+y-TY-bordH-capH

    ??N:=cx|cy<<16
    ??L:=dx|dy<<16

    ??sleep, 100
    ??PostMessage, 0x201, 0, %p1%, , BlueStacks App Player
    ??PostMessage, 0x200, 0, %p2%, , BlueStacks App Player
    ??PostMessage, 0x202, 0, %p2%, , BlueStacks App Player
    ??sleep, 100
    ?}
    }


    그럼 이것도 문제가 없나요?;;


    음 집에가서 그림판에 활성상태로 삼각형을 그려보고

    동일소스로 비활성으로 바꿔서 다른색상으로 삼각형이 똑같이 그려지는지 함 테스트 해봐야겠네요;;

  • 리체 2015.06.02 14:13
    드래그는 명령어를 사용하시는게 좋을듯 하고요.
    MouseClickDrag, WhichButton, X1, Y1, X2, Y2 [, Speed, R]
    비활성의 형식은 맞으나, 빠른속도로 인해 적용 안되는 앱도 있고, 거리가 멀면 안될때도 있습니다.
    루프문을 이용하여 조금씩 이동하게 하면 잘 됩니다.
  • 리체 2015.06.02 13:25

    해당창의 캡선,보더값이 시스템상과 틀릴수가 있어요.

    카톡이나 크롬같은경우 캡션 보더값이 0입니다.

    저의 경우, 블루스택은 보더값이 3 입니다. 지니모션은 8 이고요.

    가장 정확히 판단할수 있는건

    해당창을 활성화시킨후, x,y 좌표값을 비교하는 방식입니다.

    WinActivate, WinTitle ;해당창제목

    CoordMode, mouse, windows ;or relative

    MouseGetPos, x1 ,y1

    CoordMode, mouse, client

    MouseGetPos, x2, y2
    cx:=x1-x2
    cy:=y1-y2
    msgbox, %cx%, %cy%
  • 설일야 2015.06.02 13:33
    좌표값1 과 좌표값2는 같은 수치인데 windows와 client 만 틀리게해서 수치를 알아내는건가요?
  • 리체 2015.06.02 13:57
    그리고, 해당창의 캡션, 보더값은 한번만 알아내면 되므로, 함수에 넣지 마시고 스크립트 초기에 넣어주세요.
  • 설일야 2015.06.02 13:59
    아 하긴 그렇겠네요. 비활성 도전하다가 포기해서 저쪽은 아예손 안건드려서요 ㅎㅎ;;
  • 설일야 2015.06.06 18:08
    메세지박스에 0, 0 이 나왔다는건 블래스텍에서 보더 헤더 값이 0이란 소린가요??;

List of Articles
분류 제목 글쓴이 최근변경 추천
질문 파일 가상화에 대한 질문좀 드릴게요. ㅠ 3 우후훅 2015.06.09 0/0
질문 WinGetTitle, Title, A 에서 "A"는 왜 넣는건가요? 3 법돌 2015.06.06 0/0
질문 오토핫키 이미지서치질문합니다. 1 Boom 2015.06.05 0/0
질문 오토핫키 이미지서치 질문해요. 2 Boom 2015.06.05 0/0
질문 controlclick으로 드래그 하는방법있나요? 3 칼시이나 2015.10.30 0/0
질문 레알팜 이라는 게임도 ahk로 이미지서칭해서 반복작업... 2 우유줄까 2015.06.06 0/0
질문 비활성 이미지서치 질문드립니다. 12 민서s2아빠 2015.06.08 0/0
질문 PostMessage질문있습니다. 7 법돌 2015.06.06 0/0
질문 @핸콕 님~ 9 헐키 2015.06.25 0/0
질문 지니모션이든 블루스택이든 매크로로 한영 바꿔가며 치... 4 로우얄 2015.07.22 0/0
질문 gui edit 복사 다시 질문 드립니다. 사진첨부 7 솜주먹 2015.06.04 0/0
질문 질문 드립니다. 4 이아이온 2015.06.05 0/0
질문 gui edit1에 입력된 값을 edit2에서 출력되도록 하고 ... 2 솜주먹 2015.06.04 0/0
질문 CMD내에 보여지는 글들을 GUI로 가져오는 방법이 어떤... 6 우후훅 2015.06.06 0/0
질문 이미지서치 관련 질문드립니다. 10 헐키 2015.06.04 0/0
질문 세나 매크로 2 아니마아 2015.06.07 0/0
질문 [사무업무]Postmessage혹은 Controlsend로 창2개컨트롤... 2 법돌 2015.06.04 0/0
자유 아무 지식없이 오핫한테 덤볏다가... 3 레이봉11 2015.06.07 0/0
질문 guicontrl 맵선택 , 저는 이렇게 만들어 보았습니다. 1 헐키 2015.06.03 0/0
질문 단축키? 질문좀 드릴게요 아시는분 1 쉬르릴 2015.06.02 0/0
Board Pagination Prev 1 ... 163164165166167168169170171 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글