반응형

🎯 이 글에서 배우는 것: 복사해서 바로 쓸 수 있는 실용적인 스크립트 10가지
🎁 들어가며
지금까지 배운 것들을 총동원해서 실제로 유용한 스크립트들을 만들어봅시다. 모든 코드는 복사해서 바로 사용할 수 있습니다!
💡 각 스크립트 앞에
#Requires AutoHotkey v2.0과#SingleInstance Force를 추가하세요!
1️⃣ 클립보드 히스토리 (최근 복사 10개 저장)
복사한 텍스트를 10개까지 저장하고, 단축키로 선택해서 붙여넣기!
#Requires AutoHotkey v2.0
#SingleInstance Force
; 클립보드 히스토리 저장 배열
global clipHistory := []
global maxHistory := 10
; 클립보드 변경 감지
OnClipboardChange(ClipChanged)
ClipChanged(dataType) {
if (dataType = 1) { ; 텍스트
text := A_Clipboard
if (text != "" && (clipHistory.Length = 0 || clipHistory[1] != text)) {
clipHistory.InsertAt(1, text)
if (clipHistory.Length > maxHistory)
clipHistory.Pop()
}
}
}
; Win+V: 클립보드 히스토리 보기
#v::{
if (clipHistory.Length = 0) {
MsgBox("클립보드 히스토리가 비어있습니다")
return
}
menuText := ""
for i, item in clipHistory {
preview := SubStr(item, 1, 50)
preview := StrReplace(preview, "`n", " ")
menuText .= i ". " preview "`n"
}
result := InputBox(menuText, "클립보드 히스토리 (번호 입력)", "w400 h300")
if (result.Result = "OK" && result.Value != "") {
num := Integer(result.Value)
if (num >= 1 && num <= clipHistory.Length) {
A_Clipboard := clipHistory[num]
Send("^v")
}
}
}
2️⃣ 자동 백업 스크립트
작업 중인 폴더를 매시간 자동 백업!
#Requires AutoHotkey v2.0
#SingleInstance Force
#Persistent
; 설정
sourceFolder := "C:\MyWork"
backupFolder := "D:\Backup"
backupInterval := 3600000 ; 1시간 (밀리초)
; 타이머 시작
SetTimer(DoBackup, backupInterval)
MsgBox("자동 백업 시작! 1시간마다 백업됩니다.")
DoBackup() {
timestamp := FormatTime(, "yyyyMMdd_HHmmss")
backupPath := backupFolder "\" timestamp
try {
DirCopy(sourceFolder, backupPath)
TrayTip("백업 완료", "백업 위치: " backupPath, 1)
} catch as e {
TrayTip("백업 실패", e.Message, 3)
}
}
; Ctrl+Alt+B: 수동 백업
^!b::DoBackup()
3️⃣ 빠른 구글 검색
선택한 텍스트를 바로 구글에서 검색!
#Requires AutoHotkey v2.0
#SingleInstance Force
; Ctrl+Shift+G: 선택한 텍스트 구글 검색
^+g::{
old := A_Clipboard
A_Clipboard := ""
Send("^c")
if !ClipWait(1) {
MsgBox("텍스트를 선택해주세요")
return
}
query := A_Clipboard
A_Clipboard := old
; URL 인코딩 (간단 버전)
query := StrReplace(query, " ", "+")
Run("https://www.google.com/search?q=" query)
}
; Ctrl+Shift+Y: 유튜브 검색
^+y::{
old := A_Clipboard
A_Clipboard := ""
Send("^c")
if !ClipWait(1)
return
query := StrReplace(A_Clipboard, " ", "+")
A_Clipboard := old
Run("https://www.youtube.com/results?search_query=" query)
}
; Ctrl+Shift+N: 네이버 검색
^+n::{
old := A_Clipboard
A_Clipboard := ""
Send("^c")
if !ClipWait(1)
return
query := A_Clipboard
A_Clipboard := old
Run("https://search.naver.com/search.naver?query=" query)
}
4️⃣ 창 항상 위에 고정 토글
원하는 창을 항상 맨 위에!
#Requires AutoHotkey v2.0
#SingleInstance Force
; Win+T: 현재 창 항상 위에 토글
#t::{
hwnd := WinGetID("A")
exStyle := WinGetExStyle(hwnd)
if (exStyle & 0x8) { ; WS_EX_TOPMOST
WinSetAlwaysOnTop(0, hwnd)
TrayTip("항상 위에", "해제됨", 1)
} else {
WinSetAlwaysOnTop(1, hwnd)
TrayTip("항상 위에", "설정됨", 1)
}
}
5️⃣ 빠른 이모지 입력기
자주 쓰는 이모지를 단축키로!
#Requires AutoHotkey v2.0
#SingleInstance Force
; 핫스트링으로 이모지 입력
:*:;thumbsup::👍
:*:;thumbsdown::👎
:*:;heart::❤️
:*:;smile::😊
:*:;laugh::😂
:*:;think::🤔
:*:;fire::🔥
:*:;check::✅
:*:;x::❌
:*:;star::⭐
:*:;rocket::🚀
:*:;clap::👏
:*:;eyes::👀
:*:;pray::🙏
:*:;100::💯
; Win+.; 이모지 패널 열기 (Windows 10/11 기본 기능)
; 이미 Windows에 있지만, 없는 경우를 위해
#+.::Send("{LWin down}.{LWin up}")
6️⃣ 스크린샷 + 자동 저장
Print Screen으로 스크린샷 찍고 자동으로 파일 저장!
#Requires AutoHotkey v2.0
#SingleInstance Force
screenshotFolder := A_Desktop "\Screenshots"
; 폴더 없으면 생성
if !DirExist(screenshotFolder)
DirCreate(screenshotFolder)
; PrintScreen: 전체 화면 캡처 후 저장
PrintScreen::{
Send("{PrintScreen}")
Sleep(100)
timestamp := FormatTime(, "yyyyMMdd_HHmmss")
filename := screenshotFolder "\screenshot_" timestamp ".png"
; 클립보드 이미지를 파일로 저장 (PowerShell 이용)
psScript := "
(
Add-Type -AssemblyName System.Windows.Forms
$img = [System.Windows.Forms.Clipboard]::GetImage()
if ($img) { $img.Save('" filename "') }
)"
RunWait('powershell -command "' psScript '"',, "Hide")
if FileExist(filename)
TrayTip("스크린샷 저장됨", filename, 1)
}
; Alt+PrintScreen: 활성 창만 캡처
!PrintScreen::{
Send("!{PrintScreen}")
Sleep(100)
timestamp := FormatTime(, "yyyyMMdd_HHmmss")
filename := screenshotFolder "\window_" timestamp ".png"
psScript := "
(
Add-Type -AssemblyName System.Windows.Forms
$img = [System.Windows.Forms.Clipboard]::GetImage()
if ($img) { $img.Save('" filename "') }
)"
RunWait('powershell -command "' psScript '"',, "Hide")
if FileExist(filename)
TrayTip("스크린샷 저장됨", filename, 1)
}
7️⃣ 자동 타이핑 (반복 입력)
같은 텍스트를 여러 번 입력해야 할 때!
#Requires AutoHotkey v2.0
#SingleInstance Force
; Ctrl+Shift+R: 반복 입력 설정
^+r::{
textResult := InputBox("반복할 텍스트를 입력하세요", "자동 타이핑")
if (textResult.Result != "OK")
return
countResult := InputBox("반복 횟수를 입력하세요", "자동 타이핑")
if (countResult.Result != "OK")
return
delayResult := InputBox("입력 간격(ms)을 입력하세요`n(기본: 100)", "자동 타이핑")
delay := (delayResult.Result = "OK" && delayResult.Value != "") ? Integer(delayResult.Value) : 100
MsgBox("3초 후 시작합니다. 입력할 곳을 클릭하세요!")
Sleep(3000)
count := Integer(countResult.Value)
Loop count {
SendText(textResult.Value)
Send("{Enter}")
Sleep(delay)
}
TrayTip("완료", count "회 입력 완료", 1)
}
8️⃣ 마우스 좌표 복사기 (스크립트 개발용)
마우스 위치를 쉽게 알아내서 코드에 활용!
#Requires AutoHotkey v2.0
#SingleInstance Force
; F2: 현재 마우스 좌표 복사
F2::{
MouseGetPos(&x, &y)
coord := "Click(" x ", " y ")"
A_Clipboard := coord
TrayTip("좌표 복사됨", coord, 1)
}
; Shift+F2: 좌표 + 색상 정보
+F2::{
MouseGetPos(&x, &y)
color := PixelGetColor(x, y)
info := "X: " x ", Y: " y "`nColor: " color
A_Clipboard := "Click(" x ", " y ")"
MsgBox(info, "마우스 정보")
}
; Ctrl+F2: 창 기준 상대 좌표
^F2::{
MouseGetPos(&x, &y, &hwnd)
WinGetPos(&winX, &winY,,, hwnd)
relX := x - winX
relY := y - winY
coord := "Click(" relX ", " relY ") ; 창 기준"
A_Clipboard := coord
TrayTip("상대 좌표 복사됨", coord, 1)
}
9️⃣ 빠른 메모장 (플로팅 노트)
떠다니는 작은 메모장!
#Requires AutoHotkey v2.0
#SingleInstance Force
; Win+M: 플로팅 메모장 토글
#m::{
static noteGui := 0
static noteEdit := 0
if (noteGui && WinExist("ahk_id " noteGui.Hwnd)) {
noteGui.Destroy()
noteGui := 0
return
}
noteGui := Gui("+AlwaysOnTop +Resize", "Quick Note")
noteGui.SetFont("s10", "맑은 고딕")
noteEdit := noteGui.AddEdit("w300 h200 vNoteText Multi WantReturn")
; 저장된 내용 불러오기
noteFile := A_ScriptDir "\quicknote.txt"
if FileExist(noteFile)
noteEdit.Value := FileRead(noteFile)
noteGui.OnEvent("Close", SaveAndClose)
noteGui.OnEvent("Size", GuiResize)
noteGui.Show()
SaveAndClose(*) {
try FileDelete(noteFile)
FileAppend(noteEdit.Value, noteFile)
noteGui.Destroy()
noteGui := 0
}
GuiResize(thisGui, MinMax, Width, Height) {
if (MinMax != -1)
noteEdit.Move(,, Width - 20, Height - 20)
}
}
🔟 업무 자동화 종합 스크립트
실제 업무에서 바로 쓸 수 있는 종합 스크립트!
#Requires AutoHotkey v2.0
#SingleInstance Force
; ============================================
; 자주 쓰는 상용구
; ============================================
:*:;email::myemail@company.com
:*:;phone::010-1234-5678
:*:;addr::서울시 강남구 테헤란로 123
:*:;sign::
(
감사합니다.
홍길동 드림
010-1234-5678
myemail@company.com
)
; 현재 날짜/시간
:*:;date::{
SendText(FormatTime(, "yyyy-MM-dd"))
}
:*:;time::{
SendText(FormatTime(, "HH:mm:ss"))
}
:*:;now::{
SendText(FormatTime(, "yyyy-MM-dd HH:mm"))
}
; ============================================
; 자주 쓰는 프로그램 실행
; ============================================
#n::Run("notepad")
#c::Run("calc")
#e::Run("explorer " A_MyDocuments)
; ============================================
; 창 관리
; ============================================
; Win+↑: 창 최대화
#Up::WinMaximize("A")
; Win+↓: 창 최소화
#Down::WinMinimize("A")
; Win+Shift+C: 창 중앙 정렬
#+c::{
WinGetPos(,, &w, &h, "A")
screenW := A_ScreenWidth
screenH := A_ScreenHeight
newX := (screenW - w) / 2
newY := (screenH - h) / 2
WinMove(newX, newY,,, "A")
}
; ============================================
; 텍스트 처리
; ============================================
; Ctrl+Shift+U: 대문자 변환
^+u::{
old := A_Clipboard
A_Clipboard := ""
Send("^c")
if ClipWait(1) {
A_Clipboard := StrUpper(A_Clipboard)
Send("^v")
}
Sleep(100)
A_Clipboard := old
}
; Ctrl+Shift+L: 소문자 변환
^+l::{
old := A_Clipboard
A_Clipboard := ""
Send("^c")
if ClipWait(1) {
A_Clipboard := StrLower(A_Clipboard)
Send("^v")
}
Sleep(100)
A_Clipboard := old
}
; ============================================
; 유틸리티
; ============================================
^!r::Reload ; Ctrl+Alt+R: 새로고침
^!p::Suspend ; Ctrl+Alt+P: 일시정지
^!x::ExitApp ; Ctrl+Alt+X: 종료
📋 스크립트 모음 다운로드 팁
이 스크립트들을 하나로 합쳐서 사용하거나, 용도별로 분리해서 사용하세요:
📁 MyScripts/
├── main.ahk ; 메인 스크립트 (시작 시 자동 실행)
├── clipboard.ahk ; 클립보드 관련
├── search.ahk ; 검색 관련
├── window.ahk ; 창 관리
└── text.ahk ; 텍스트 처리
여러 스크립트를 하나로 합치려면:
; main.ahk
#Include "clipboard.ahk"
#Include "search.ahk"
#Include "window.ahk"
🎯 다음 시간 예고
마지막 글에서는 디버깅과 팁을 다룹니다:
- 문제 해결 방법
- 성능 최적화
- 고급 팁과 트릭
시리즈의 대미를 장식합니다! 🏁
이전 글: [#13 문자열 처리]
다음 글: [#15 디버깅과 팁 - 문제 해결의 기술]
반응형
'🔬 과학·테크 > 🔥 AutoHotkey v2 입문 가이드' 카테고리의 다른 글
| AutoHotkey v2 입문 가이드 #15: 디버깅과 팁 - 문제 해결의 기술 (0) | 2025.12.18 |
|---|---|
| AutoHotkey v2 입문 가이드 #13: 문자열 처리 - 텍스트 다루기의 기술 (0) | 2025.12.16 |
| AutoHotkey v2 입문 가이드 #12: 파일 다루기 - 읽고, 쓰고, 관리하기 (0) | 2025.12.15 |
| AutoHotkey v2 입문 가이드 #11: GUI 기초 - 나만의 창 만들기 (0) | 2025.12.14 |
| AutoHotkey v2 입문 가이드 #10: 키 리매핑 - 키보드 재창조하기 (0) | 2025.12.13 |