[컴][툴] autohokey 예시들

 유용한 매크로 / macro / exmples / dictionary / dict /dic

autohokey 예시들

; from : https://www.autohotkey.com/docs/commands/KeyWait.htm#ExDouble
; 마우스왼쪽버튼(Lbutton) 을 누르면, 매크로가 시작된다.
; 이전에 눌렸던 키가 Lbutton 이면서 400초 이내에 눌렀으면
; MsgBox 를 보여준다.
; 그렇지 않은 경우에는 그냥 Lbutton 이 눌렸다는 event 를 보내준다.

Lbutton::
if (A_PriorHotkey != "Lbutton" or A_TimeSincePriorHotkey > 400)
{
    ; 그냥 Lbutton 전송
    mouseclick, left
    return
}
; 더블클릭 인식
Send !tab
return
; 마우스 가운데 버튼을 누르면 현재 텍스트를 복사하고, firefox 로 붙여넣기 한다.

SendKey2FF(key)
{

    If WinActive("ahk_class MozillaWindowClass")
    {
        Send %key%
        return true
    }
    return false
}

Mbutton::
Send ^c  ; ctrl+c
Send !{Tab}
Sleep, 500
ret := SendKey2FF("^v{enter}")  ;key 를 보내고, 사용
Send !{Tab}
return
; ref: https://autohotkey.com/board/topic/75360-how-to-know-the-x-y-coordinate-of-my-screen/
; 함수를 사용
; 계속 떠 있으면서, 1초마다 현재 내 좌표를 툴팁(tooltip)으로 알려준다.

#singleinstance force
#Persistent

SeeCursorCoord()
{
    MouseGetPos, xpos, ypos 
    ToolTip, xpos: %xpos%`nypos: %ypos%
}

SetTimer, SeeCursorCoord, 1000
; text 를 선택하고, 마우스 가운데 버튼을 누르면, 
; alt+tab 을 하고 '붙여넣기' 를 하고, 다시 alt+tab 을 한다.
; First macro

SendKey2FF(key)
{

    If WinActive("ahk_class MozillaWindowClass")
    {
        Send %key%
        return true
    }
    return false
}

Test(a)
{
    return "test"
}


Mbutton::
Send ^c  ; ctrl+c
Send !{Tab}
Sleep, 500
ret := SendKey2FF("^v{enter}")  ;key 를 보내고, 사용
Send !{Tab}
return
#Requires AutoHotkey v2
#SingleInstance Force


;================================================================================
; ★★★ 필수 설정 값 (사용자 환경에 맞게 반드시 수정해야 합니다!) ★★★
; Window Spy로 전달 팝업의 크기 및 '보내기' 버튼의 상대 위치를 확인하세요.
;--------------------------------------------------------------------------------
POPUP_W := 365      ; 전달 팝업 창의 예상 너비 (픽셀)
POPUP_H := 590      ; 전달 팝업 창의 예상 높이 (픽셀)

SEND_REL_X := 300   ; 팝업 창의 왼쪽 상단(0,0) 기준 '보내기' 버튼의 상대 X 좌표
SEND_REL_Y := 570   ; 팝업 창의 왼쪽 상단(0,0) 기준 '보내기' 버튼의 상대 Y 좌표

; SEND_REL_X := 714  ; '보내기' 버튼의 상대 X 좌표 (예시 값)
; SEND_REL_Y := 831   ; '보내기' 버튼의 상대 Y 좌표 (예시 값)
;================================================================================

SearchTarget := "저장한 메시지"

F1::
{
    ; 1. 메시지를 클릭하여 '전달' 팝업을 띄웁니다.
    Click 
    Sleep 500
    
    ; 2. 팝업 창에서 '투노'를 입력하고 엔터를 누릅니다.

    Send SearchTarget "{Enter}"
    Sleep 500
    
    ; --- 상대 좌표 설정 및 클릭 시작 ---
    
    ; 텔레그램 전달 팝업 창의 제목 또는 Class를 확인하여 변수에 저장합니다.
    ; (대부분의 텔레그램 팝업은 메인 창과 동일한 Class를 사용합니다.)
    ; 텔레그램 창 활성화 및 확인
    TelegramWindow := "ahk_exe Telegram.exe"

    WinActivate TelegramWindow
    if !WinExist(TelegramWindow) {
        ToolTip "오류: 텔레그램 창을 찾을 수 없습니다."
        Sleep 1500
        ToolTip
        return
    }

    ; 2. 텔레그램 메인 창의 위치와 크기를 가져옵니다.
    ; Main_X, Main_Y: 메인 창의 절대 시작 좌표
    WinGetPos &Main_X, &Main_Y, &Main_W, &Main_H, TelegramWindow
    
    ; 3. 팝업 창의 절대 시작 좌표를 계산합니다. (메인 윈도우 중앙 정렬)
    ; 팝업 시작 X = 메인 시작 X + (메인 너비 / 2) - (팝업 너비 / 2)
    Popup_Abs_X := Floor(Main_W / 2) - Floor(POPUP_W / 2)
    ; 팝업 시작 Y = 메인 시작 Y + (메인 높이 / 2) - (팝업 높이 / 2)
    Popup_Abs_Y := Floor(Main_H / 2) - Floor(POPUP_H / 2)
    
    ; 5. '보내기' 버튼의 최종 절대 좌표를 계산합니다.
    ; 버튼 절대 X = 팝업 시작 절대 X + 팝업 내 버튼 상대 X
    Send_Abs_X := Popup_Abs_X + SEND_REL_X
    ; 버튼 절대 Y = 팝업 시작 절대 Y + 팝업 내 버튼 상대 Y
    Send_Abs_Y := Popup_Abs_Y + SEND_REL_Y
    
    ; Debug
    ; 마우스를 계산된 좌표로 이동시킵니다.
    ; MouseMove Send_Abs_X, Send_Abs_Y
    ; 2초 동안 마우스를 멈춰서 사용자가 위치를 확인하게 합니다.
    ; Sleep 2000
    

    ; 6. 계산된 최종 절대 좌표를 클릭합니다.
    Click Send_Abs_X, Send_Abs_Y
    
    ; --- 상대 좌표 설정 복원 (선택 사항) ---
    ; 다음 스크립트 실행에 영향을 주지 않도록 원래 모드로 되돌립니다.
    CoordMode "Mouse", "Screen"
    
    ; 작업 완료 메시지
    ToolTip "전달 자동화 완료 (F1) - 상대 좌표 사용"
    
    Sleep 1500
    ToolTip 
}
return

Reference

  1. Functions - Definition & Usage | AutoHotkey

댓글 없음:

댓글 쓰기