Introduction
Autohotkey는 윈도우에서 필요한 기능을 복잡한 Visual C++을 통해 구현하지 않아도 비교적 빠르고 쉽게 구현할 수 있는 매크로 프로그램이다. Autohotkey 전용 프로그래밍 언어를 지원하는데 이를 통해 윈도우 내부의 다양한 함수들을 조작할 수 있고 생각할 수 있는 거의 모든 기능들을 간단하게 구현할 수 있다. 필자는 윈도우 11에서 사용하고 있으며 윈도우 10에서도 정상적으로 작동하는 것을 확인하였다.
필자가 현재(24.01) 사용하고 있는 Autohotkey 버전은 1.1 버전이다. Autohotkey 2.x 버전은 전용 에디터인 Scite4Autohotkey를 사용하기 어렵기 때문에 1.x 버전을 사용하고 있다. Autohotkey 프로그램은 구글링을 통해서 설치할 수 있으며 .ahk 파일 편집은 scite4autohotkey 프로그램을 통해 편집 및 컴파일 할 수 있다.
필자가 사용하고 있는 스크립트는 다음과 같다.
Ahk language
Autohotkey는 자체 .ahk 문법을 가지고 있다. 만약 F7키를 키바인딩하여 특정 동작을 수행하고 싶으면 아래와 같이 하면 된다.
F7::
Do Something
return
Ctrl 키는 '^' 이고 Alt 키는 '!' 로 키바인딩을 설정할 수 있다. 예를 들어 Ctrl + Alt + f 키로 키바인딩을 수행하면 다음과 같다.
^!f::
Do Something
return
또한 Windows 키는 'LWin' 이고 Shift 키는 'LShift' 로 사용할 수 있다. 이외에도 키보드를 통해 입력할 수 있는 모든 문자들을 사용할 수 있며 자유롭게 키바인딩을 조합하여 사용할 수 있다.
다음 섹션에는 필자가 유용하다고 생각하는 기능들을 설명한다.
Useful features
Volume control
; 볼륨을 +5만큼 높인다
^PgUp::
SoundSet, +5
SoundGet, master_volume
Notify("Volum Up " + Round(master_volume, 0), 1000)
return
; 볼륨을 -5만큼 내린다
^PgDn::
SoundSet, -5
SoundGet, master_volume
Notify("Volum Down " + Round(master_volume, 0), 1000)
return
; 음소거 모드를 토글한다
^Home::
SoundGet, isMute, MASTER, MUTE
if (isMute = "Off") {
Notify("Mute", 1000)
SoundSet, +1, MASTER, MUTE
}
else {
Notify("Unmute", 1000)
SoundSet, -1, MASTER, MUTE
}
return
Window control
; 프로그램을 항상 위에 고정시킨다
^Space::
WinSet, AlwaysonTop, Toggle, A
Notify("Always on Top", 1000)
return
; 마우스로 클릭한 창을 이동시킨다
^!LButton::
CoordMode, Mouse
MouseGetPos, EWD_MouseStartX, EWD_MouseStartY, EWD_MouseWin
WinGetPos, EWD_OriginalPosX, EWD_OriginalPosY,,, % wTitle := "ahk_id " EWD_MouseWin
mv_mode = mv
SetTimer, EWD_WatchMouse, 10
return
; 마우스로 클릭한 창의 크기를 조절한다
^!RButton::
CoordMode, Mouse
MouseGetPos, EWD_MouseStartX, EWD_MouseStartY, EWD_MouseWin
WinGetPos, ,, EWD_OriginalPosX, EWD_OriginalPosY, % wTitle := "ahk_id " EWD_MouseWin
mv_mode = sz
SetTimer, EWD_WatchMouse, 10
return
; 현재 활성화된 창을 맨 뒤로 이동시킨다
Ctrl & h::Send !{Escape}
Open program
; 계산기를 실행한다
^!c::
#SingleInstance force
if WinExist("Calculator")
WinActivate
else
Run "C:\Windows\WinSxS\wow64_microsoft-windows-calc_31bf3856ad364e35_10.0.22621.1_none_15a8774142daea37\calc.exe"
return
; 메모장을 연다
^!n::
#SingleInstance force
if WinExist("ahk_exe notepad.exe")
WinActivate
else
Run "C:\Windows\System32\notepad.exe"
return
; 화면 캡처 도구를 연다
F4::
{
SetTitleMatchMode, % (Setting_A_TitleMatchMode := A_TitleMatchMode) ? "RegEx" :
if WinExist("ahk_class Microsoft-Windows-.*SnipperToolbar")
{
WinGet, State, MinMax
if(state = -1){
WinRestore
Send, ^n
}
else if WinActive()
WinMinimize
else{
WinActivate
Send, ^n
}
}
else if WinExist("ahk_class Microsoft-Windows-.*SnipperEditor"){
WinGet, State, MinMax
if (State = -1)
WinRestore
else if WinActive()
WinMinimize
else
WinActivate
}
else{
Run, snippingtool.exe
if(SubStr(A_OSVersion,1,2)=10){
WinWait, ahk_class Microsoft-Windows-.*SnipperToolbar,,3
Send, ^n
}
}
SetTitleMatchMode, %Setting_A_TitleMatchMode%
return
}
Other controls
; 화면을 잠근다
F1::
DllCall("LockWorkStation")
return
; 현재 윈도우에 띄어져 있는 모든 창 목록을 본다
F6::
^!Tab
return
; 휴지통을 비운다
F9::
{
FileRecycleEmpty
Notify("Recycle Bin is emptified", 1500)
return
}
; 절전모드로 들어간다
Insert::
Run nircmd.exe standby
;Run rundll32.exe powrprof.dll,SetSuspendState 0,1,0
return
'Software' 카테고리의 다른 글
GPTs - alida assistant (23) | 2023.11.28 |
---|---|
WMIC 명령어를 활용한 시스템 분석 - 여러가지 명령어들 (0) | 2022.01.11 |
Powershell 명령어를 활용한 시스템 분석 - 여러가지 명령어들 (0) | 2022.01.11 |
cmd 명령어를 활용한 시스템 분석 - 여러가지 명령어들 (0) | 2022.01.11 |
Git 사용법 및 다양한 옵션 설명 (0) | 2022.01.06 |