유용한 매크로 / macro / exmples / dictionary / dict /dic / auto hot key / hotkey
autohotkey 예시들
always on top
; always on top 기능
; Ctrl + Shift + T 를 누르면 작동
; 휠로 투명도 조절
^+t::
{
if not A_IsAdmin
{
Run('*RunAs ""on-top-always.ahk""')
ExitApp()
}
; 현재 활성화된 창의 ID(고유값)를 가져옵니다.
activeWin := WinExist("A")
if activeWin
{
; 1. 항상 위(Always on Top) 상태를 토글(반전)합니다.
WinSetAlwaysOnTop(-1, activeWin) ; -1은 토글(Toggle)을 의미합니다.
isAlwaysOnTop := IsWinAlwaysOnTop(activeWin)
; 3. 항상 위가 ON일 때만 투명도를 세팅하고, OFF면 투명도를 끕니다.
if (isAlwaysOnTop)
{
; 투명도 : 0~255 단계, 낮을수록 투명
WinSetTransparent(230, activeWin) ; ON 일 때 투명도 100 설정
}
else
{
WinSetTransparent("Off", activeWin) ; OFF 일 때 투명도 해제
}
}
}
; ==========================================
; 2. 항상 위 창 투명도 수동 조절 (Ctrl + Shift + 마우스 휠)
; ==========================================
; [ctrl+shift+휠 업] 투명도를 높여서 더 선명하게 (최대 255)
^+WheelUp::
{
activeWin := WinExist("A")
if activeWin && IsWinAlwaysOnTop(activeWin)
{
currentTrans := WinGetTransparent(activeWin)
; 투명도 값이 없으면 기본값인 255(불투명)로 처리
if (currentTrans = "")
currentTrans := 255
; 현재 투명도에서 15만큼 증가 (최대 255까지만)
newTrans := Min(currentTrans + 15, 255)
WinSetTransparent(newTrans, activeWin)
}
}
; [ctrl+shift+휠 다운] 투명도를 낮춰서 더 투명하게 (최소 30)
^+WheelDown::
{
activeWin := WinExist("A")
if activeWin && IsWinAlwaysOnTop(activeWin)
{
currentTrans := WinGetTransparent(activeWin)
if (currentTrans = "")
currentTrans := 255
; 현재 투명도에서 15만큼 감소 (너무 투명해서 사라지지 않게 최소 30 유지)
newTrans := Max(currentTrans - 15, 30)
WinSetTransparent(newTrans, activeWin)
}
}
; ==========================================
; [도움 함수] 해당 창이 '항상 위' 상태인지 판별
; ==========================================
IsWinAlwaysOnTop(hwnd) {
; 토글 직후, 창의 확장 스타일(ExStyle)을 가져옵니다.
exStyle := WinGetExStyle(hwnd)
; 0x8은 WS_EX_TOPMOST (항상 위) 속성을 의미하는 16진수 값입니다.
; 비트 연산(&)을 통해 현재 항상 위가 'ON' 상태인지 확인합니다.
exStyle := WinGetExStyle(hwnd)
return exStyle & 0x8
}
double click 감지
; 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
1초마다 현재 좌표를 툴팁으로 알림
; 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
텔레그램에서 클릭시 특정위치로 forward
; 텔레그램에서 마우스 '휠버튼' 누르면, 특정 위치로 forward(전달) 을 함
#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
댓글 없음:
댓글 쓰기