두겹 따옴표 (")는 표현식 안에서만 특별한 의미가 있습니다. 다른 곳에서는 문자 그대로 마치 정상 문자처럼 취급됩니다. 그렇지만, 스크립트가 프로그램을 기동시키거나 문서를 열때, 운영 체제는 보통 겹따옴표가 명령어-줄 매개변수에 둘러져 있기를 요구합니다. 다음 예제처럼, 안에 공백이 있으면 말입니다: Run, Notepad.exe "C:\My Documents\Address List.txt"
.
변수 이름은 언제나 퍼센트 기호로 둘러쌉니다. 단, 아래의 볼드체로 보여준 것은 제외합니다:
StringLen, OutputVar, InputVar
Var = 123abc
If Var1 < %Var2%
If (Var1 <> Var2) Var1 := Var2 + 100
For further explanation of how percent signs are used, see Legacy Syntax and Dynamic Variables. Percent signs can also have other meanings:
`%
) and percent signs in quoted literal strings have no special meaning (they are interpreted as literal percent signs).문자 그대로의 퍼센트 기호는 반드시 피신시켜야 합니다. 앞에다 액센트/백틱을 붙이면 됩니다. 예를 들어: MsgBox 현재 백분률은 25`% 입니다.
문자 그대로의 쉼표도 반드시 피신시켜야 합니다 (`,
). 단, MsgBox 또는 명령어의 마지막 매개변수로 사용될 때는 제외합니다 (이 경우 액센트는 허용되지만 필수는 아닙니다).
쉼표나 퍼센트 기호가 표현식 안에서 따옴표로 둘러 싸이면, 액센트는 허용되지만 필수는 아닙니다. 예를 들어: Var := "15%"
.
7-zip Error: Use 7-zip or a compatible program to extract the setup files from the installer EXE, then run setup.exe or Installer.ahk (drag and drop Installer.ahk onto AutoHotkeyU32.exe).
AutoHotkey's installer comes packaged as a 7-zip self-extracting archive which attempts to extract to the user's Temp directory and execute a compiled script. Sometimes system policies or other factors prevent the files from being extracted or executed. Usually in such cases the message "7-zip Error" is displayed. Manually extracting the files to a different directory may help.
Setup hangs: If the setup window comes up blank or not at all, try one or both of the following:
setup.exe /S
or AutoHotkeyU32.exe Installer.ahk /S
.Other: The suggestions above cover the most common problems. For further assistance, post on the forums.
Normally if AutoHotkey is installed, right-clicking an AutoHotkey script (.ahk) file should give the following options:
Sometimes these options are overridden by settings in the current user's profile, such as if Open With has been used to change the default program for opening .ahk files. This can be fixed by deleting the following registry key:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ahk\UserChoice
This can be done by applying this registry patch.
It may also be necessary to repair the default registry values, either by reinstalling AutoHotkey or by running AutoHotkey Setup (from the Start menu) and selecting apply near the top of the window.
어떤 줄이든 즉시 실행하고 싶다면 스크립트가 실행될 때 상단에 있어야 합니다. 그 다음에 핫키, 핫스트링, 또는 Return이 나와야 합니다. 더 자세한 것은 자동-실행 섹션을 참조하십시오.
또한, 한 줄 이상 실행하는 핫키는 그의 첫 번째 줄이 핫키 바로 아래에 나타나야 합니다. 같은 줄이 아닙니다. 예를 들어:
#space:: ; Win+Spacebar Run Notepad WinWaitActive Untitled - Notepad WinMaximize return
There are many variations of this problem, such as:
If you've switched operating systems, it is likely that something else has also changed and may be affecting your script. For instance, if you've got a new computer, it might have different drivers or other software installed. 또 새로운 버전의 오토핫키로 업그레이드했다면, 예전에는 어떤 버전이었는지 알아보고 변경 기록과 호환성 노트를 점검해 보십시오.
SoundGet, SoundSet, SoundGetWaveVolume 그리고 SoundSetWaveVolume는 비스타 이전 이후 버전에 따라 다르게 행동합니다. 특히, 장치 번호가 다르고 어떤 컴포넌트는 사용할 수조차 없습니다. 행위는 오디오 드라이버에 따라 다릅니다. XP에 사용되는 드라이버라면 당연히 다를 겁니다. 사운드 카드 분석 스크립트를 사용하면 올바른 장치 번호를 찾을 수 있습니다.
Also refer to the following question:
By default, User Account Control (UAC) protects "elevated" programs (that is, programs which are running as admin) from being automated by non-elevated programs, since that would allow them to bypass security restrictions. Hotkeys are also blocked, so for instance, a non-elevated program cannot spy on input intended for an elevated program.
UAC may also prevent SendPlay and BlockInput from working.
Common workarounds are as follows:
"AutoHotkeyU32_UIA.exe" "Your script.ahk"
(but include full paths).스크립트의 에러를 먼저 수정할 필요가 있습니다. 그 다음에 트레이 아이콘을 다시 얻을 수 있습니다. 그러나 먼저, 해당 스크립트 파일을 찾을 필요가 있습니다.
다음 디렉토리에서 AutoHotkey.ahk를 찾습니다:
또다른 오토핫키 실행파일을 직접적으로 실행하고 있다면, 그 스크립트의 이름은 실행파일에 따라 다릅니다. 예를 들어, AutoHotkeyU32.exe를 실행하고 있다면, AutoHotkeyU32.ahk를 찾습니다. 여러분의 시스템에 따라 ".ahk" 부분이 감추어져 있을 수 있지만, 그 파일은 분명히 와 같은 아이콘이 있습니다
보통 스크립트 파일에 우클릭해서 Edit Script를 선택하면 편집할 수 있습니다. 그렇지 않다면, 파일을 노트패드나 기타 다른 편집기로 열 수 있습니다.
AutoHotkey를 시작 메뉴로부터 기동했거나 또는 직접 AutoHotkey.exe를 (명령어 줄 매개변수 없이) 실행했다면, 위에 보여준 위치 중 하나에서 스크립트를 찾습니다. 다른 방법으로 아무데나 원하는 곳에 스크립트 파일을 만들어서 (something.ahk), 오토핫키를 실행하는 대신에 그 스크립트 파일을 실행할 수 있습니다.
또 명령어 줄 매개변수 "스크립트 파일이름" 그리고 AutoHotkey.exe의 이식성을 참조하십시오.
간단한 스크립트라면 스크립트 디버깅하기를 참조합니다. 변수의 내용을 보여주려면, MsgBox 또는 ToolTip을 사용합니다. 복잡한 스크립트라면 상호대화 디버깅을 참조합니다.
어떤 프로그램은 자신만의 디렉토리에서 시작할 필요가 있습니다 (잘 모르겠다면, 보통 그렇게 하는 것이 가장 좋습니다). 예를 들어:
Run, %A_ProgramFiles%\Some Application\App.exe, %A_ProgramFiles%\Some Application
If the program you are trying to start is in %A_WinDir%\System32
and you are using AutoHotkey 32-bit on a 64-bit system, the File System Redirector may be interfering. To work around this, use %A_WinDir%\SysNative
instead; this is a virtual directory only visible to 32-bit programs running on 64-bit systems.
Short answer: Save the script as UTF-8 with BOM.
Although AutoHotkey supports Unicode text, it is optimized for backward-compatibility, which means defaulting to the ANSI encoding rather than the more internationally recommended UTF-8. AutoHotkey will not automatically recognize a UTF-8 file unless it begins with a byte order mark.
In other words, UTF-8 files which lack a byte order mark are misinterpreted, causing non-ASCII characters to be decoded incorrectly. To resolve this, save the file as UTF-8 with BOM or add the /CP65001 command line switch.
To save as UTF-8 with BOM in Notepad, select UTF-8 from the Encoding drop-down in the Save As dialog.
To read other UTF-8 files which lack a byte order mark, use FileEncoding UTF-8-RAW
, the *P65001
option with FileRead, or "UTF-8-RAW"
for the third parameter of FileOpen(). The -RAW
suffix can be omitted, but in that case any newly created files will have a byte order mark.
Note that INI files accessed with the standard INI commands do not support UTF-8; they must be saved as ANSI or UTF-16.
모든 게임이 AHK가 전송하는 키와 클릭 또는 픽셀 컬러를 허용하는 것은 아닙니다.
그러나 대안이 있습니다. 아래에 언급한 모든 해결책들을 시도해 보십시오. 모든 것이 실패하면, 아마도 AHK로는 게임을 작동시킬 수 없을 것입니다. 종종 게임이 GameGuard나 Hackshield 같은 핵과 치트 방지 수단을 갖추고 있는 경우가 있습니다. 그렇다면, 그 게임에는 오토핫키가 작동하지 않을 가능성이 아주 높습니다.
SendPlay 명령어, SendMode Play 그리고/또는 핫스트링 옵션 SP를 시도합니다.
SendPlay, abc
SendMode, Play Send, abc
:SP:btw::by the way ; 또는 #Hotstring SP ::btw::by the way
주의: SendPlay는 Windows Vista 이후에 사용자 계정 제어가 켜져 있으면 전혀 효과가 없습니다. 스크립트가 관리자 권한으로 실행되더라도 마찬가지입니다.
SetKeyDelay를 증가시켜 봅니다. 예를 들어:
SetKeyDelay, 0, 50 SetKeyDelay, 0, 50, Play
ControlSend를 시도합니다. 다른 Send 모드가 실패할 경우 성공할 가능성이 있습니다:
ControlSend,, abc, game_title
다양한 전송 방법으로 한 키의 이벤트를 누르고 떼고 시도해 봅니다:
Send {KEY down}{KEY up}
한 키의 이벤트를 누르고 떼며, 그 사이에 Sleep을 넣고 시험해 봅니다:
Send {KEY down} Sleep 10 ; 여러가지 밀리초를 시험해 보십시오 Send {KEY up}
스크립트의 핫키, 클릭, 또는 전송이 보통 때보다 현저하게 느리다면, CPU가 엄청난 부담을 지고 있어서 그렇다면, 스크립트의 처리-우선순위를 높이면 도움이 될 수 있습니다. 이렇게 하려면, 다음 줄을 스크립트 상단 근처에 포함합니다:
Process, Priority, , High
Although it is certainly possible that the file has been infected, most often these alerts are false positives, meaning that the antivirus program is mistaken. One common suggestion is to upload the file to an online service such as virustotal or Jotti and see what other antivirus programs have to say. If in doubt, you could send the file to the vendor of your antivirus software for confirmation. This might also help us and other AutoHotkey users, as the vendor may confirm it is a false positive and fix their product to play nice with AutoHotkey.
False positives might be more common for compiled scripts which have been compressed, such as with UPX (default for AutoHotkey 1.0 but not 1.1) or MPRESS (optional for AutoHotkey 1.1). As the default AutoHotkey installation does not include a compressor, compiled scripts are not compressed by default.
오토핫키 내려받기 페이지를 참조합니다.
AutoHotkey.exe의 이식성을 참조하십시오.
Note that when you compile a script that uses auto-included function libraries, AutoHotkey.exe and the Lib folder must be up one level from Ahk2Exe.exe (e.g. \AutoHotkey.exe vs \Compiler\Ahk2Exe.exe). 또 Ahk2Exe는 설정을 다음 레지스트리 키에 저장한다는 것에도 주목하십시오: HKCU\Software\AutoHotkey\Ahk2Exe
. The compiler itself (Ahk2Exe) is not needed to run scripts.
테스트에 의하면 파일 캐슁 때문에, 임시 파일은 상대적으로 작은 출력에 아주 빠를 수 있습니다. 사실, 그 파일이 사용된 후 곧바로 삭제된다면, 실제로 디스크에 씌여지지 조차 않는 경우가 종종 있습니다. 예를 들어:
RunWait %ComSpec% /c dir > C:\My Temp File.txt FileRead, VarToContainContents, C:\My Temp File.txt FileDelete, C:\My Temp File.txt
임시 파일의 사용을 피하려면 (특히 출력이 클 때), Run 명령어에 예제에 보여준 바와 같이 Shell.Exec() 메쏘드의 사용을 고려해 보십시오.
먼저, 다음은 또다른 스크립트를 닫는 예입니다:
DetectHiddenWindows On ; 스크립트의 숨겨진 메인 창을 탐지되도록 허용합니다. SetTitleMatchMode 2 ; 아래 파일의 전체 경로를 지정할 필요를 회피합니다. WinClose ScriptFileName.ahk - AutoHotkey ; 이것을 갱신하여 스크립트의 이름을 반영합니다 (대소문자 구분).
To suspend, pause or reload another script, replace the last line above with one of these:
PostMessage, 0x0111, 65305,,, ScriptFileName.ahk - AutoHotkey ; Suspend. PostMessage, 0x0111, 65306,,, ScriptFileName.ahk - AutoHotkey ; Pause. PostMessage, 0x0111, 65303,,, ScriptFileName.ahk - AutoHotkey ; Reload.
전체 스크립트를 키가 눌릴 때 정지하거나 재개하려면, 핫키를 Pause 명령어에 할당합니다. 다음 예제와 같이:
^!p::Pause ; Ctrl+Alt+P를 눌러 정지합니다. 다시 누르면 재개합니다.
회돌이 안에서 반복되는 행위를 멈추려면, 다음의 작동하는 예제를 연구해 보십시오. 핫키 하나로 반복 행위를 시작하고 멈춥니다. 다른 말로 하면, 핫키를 한번 누르면 회돌이를 시작합니다. 그 핫키를 다시 누르면 회돌이를 멈춥니다.
#MaxThreadsPerHotkey 3 #z:: ; Win+Z 핫키 (이 핫키를 여러분의 기호에 맞게 변경합니다). #MaxThreadsPerHotkey 1 if KeepWinZRunning ; 이것은 아래의 쓰레드가 이미 아래의 회돌이를 실행중이라는 뜻입니다. { KeepWinZRunning := false ; 쓰레드의 회돌이를 멈추게 하는 신호입니다. return ; 이 쓰레드를 끝냅니다. 이 아래의 코드가 실행을 재개합니다. 위의 줄에서 바뀐 곳에 주목하십시오. } ; 그렇지 않으면: KeepWinZRunning := true Loop { ; 다음 네 줄은 반복하고 싶은 행위입니다 (여러분의 기호에 맞게 바꿉니다): ToolTip, Win-Z를 다시 눌러 이것이 떨리는 것을 멈춥니다. Sleep 1000 ToolTip Sleep 1000 ; 그러나 아래의 나머지는 그대로 둡니다. if not KeepWinZRunning ; 사용자가 Win-Z를 다시 눌러 회돌이를 멈추라고 신호를 보냈습니다. break ; 이 회돌이를 빠져 나갑니다. } KeepWinZRunning := false ; 이 핫키가 다음에 눌릴 때를 대비하여 재설정합니다. return
라젯(Rajat) 씨가 다음 스크립트를 만들었습니다.
인터넷 익스플로러라면, 아마도 가장 믿을만한 방법은 DllCall()과 COM을 www.autohotkey.com/forum/topic19256.html에 시연하는 것처럼 사용하는 것입니다. 관련해서 한가지 덧붙이면, 주소 바와 상태 바의 내용은 www.autohotkey.com/forum/topic19255.html에 보여주는 것처럼 열람할 수 있습니다.
예전의, 신뢰가 덜한 방법: 다음 예제에서의 테크닉은 대부분의 페이지에 대하여 MS 인터넷 익스플로러에 작동할 것입니다. 비슷한 테크닉을 다른 브라우저에서도 사용할 수 있습니다:
Run, www.yahoo.com MouseMove, 0, 0 ; 상태 바에 마우스를 올리면 링크를 보여주지 못하게 막습니다. 대신 "Done"이 보입니다. WinWait, Yahoo! - WinActivate StatusBarWait, Done, 30 if ErrorLevel MsgBox 대기 시간이 끝났거나 창이 닫혔습니다. else MsgBox 페이지가 적재를 마쳤습니다.
EnvAdd 명령어는 날짜, 시간, 분, 초를 더하고 빼서 시간-문자열로 만들 수 있습니다. 형식은 YYYYMMDDHH24MISS입니다. 다음 예제는 지정된 시간에서 7일을 뺍니다: EnvAdd, VarContainingTimestamp, -7, days
.
두 날짜나 시간 사이의 양을 결정하려면 EnvSub를 참조하십시오. 안에 예제가 있습니다. 또한, 내장 변수 A_Now에는 현재의 지역 시간이 담겨 있습니다. 마지막으로, 여러 내장 날짜/시간 변수가 있습니다. 뿐만 아니라 FormatTime 명령어로 맞춤 날짜/시간 문자열을 만들 수 있습니다.
FormatTime 또는 날짜와 시간을 위한 내장 변수들을 사용하십시오.
ControlSend를 사용하십시오.
Winamp 자동화하기를 참조하십시오.
다음 예제를 참조하십시오.
편집기 예제 섹션에서 기본 편집기를 바꾸는 스크립트를 보실 수 있습니다.
Gui Submit을 사용합니다. 예를 들어:
Gui, Add, Text,, 텍스트를 입력하고 Submit을 누릅니다: Gui, Add, Edit, vAssociatedVar Gui, Add, Button,, Submit Gui, Show Return ButtonSubmit: Gui, Submit, NoHide MsgBox, 편집 콘트롤의 내용: %AssociatedVar% Return
틱(tic)이 집필한 GDI+ 표준 라이브러리를 참조하십시오. Gui를 사용하여 기본적인 메쏘드들을 사용할 수 있지만, 제한적입니다.
WinWait, WinWaitClose 또는 WinWait[Not]Active를 사용합니다.
There are also user-created solutions such as OnWin.ahk and [How to] Hook on to Shell to receive its messages.
There are several ways to make a script (or any program) launch automatically every time you start your PC. The easiest is to place a shortcut to the script in the Startup folder:
shell:startup
and click OK or Enter. This will open the Startup folder for the current user. To instead open the folder for all users, enter shell:common startup
(however, in that case you must be an administrator to proceed).왼쪽 오른쪽 마우스 버튼은 보통 할당이 가능합니다 (예를 들어, #LButton::
는 Win+LeftButton 핫키입니다). 비슷하게, 가운데 버튼과 마우스 휠의 회전은 보통 할당이 가능합니다. 단, 마우스 드라이버가 버튼을 직접적으로 제어하는 경우는 제외합니다.
네 번째 버튼 (XButton1)과 다섯 번째 버튼(XButton2)은 마우스 드라이버가 클릭을 시스템에 보이도록 허용하면 할당이 가능할 수도 있습니다. 보이지 않거나 -- 또는 마우스가 버튼이 다섯개가 넘어가면 -- 마우스에 함께 따라온 소프트웨어를 조정해서 (보통 제어판이나 시작 메뉴로 접근할 수 있을 것입니다) 이런 버튼을 누를 때마다 키누름을 전송하도록 시도해 보아야 합니다. 그런 키눌림은 스크립트에서 핫키로 정의할 수 있습니다. 예를 들어, 네 번째 버튼이 Ctrl+F1를 전송하도록 구성했다면, ^F1::
를 사용하여 스크립트에 간접적으로 그 버튼을 핫키로 구성할 수 있습니다.
다섯 버튼 마우스를 가지고 있는데 네 번째 버튼과 다섯 번째 버튼은 보이지 않는다면, 마우스 드라이버를 운영체제에 포함된 기본 드라이버로 바꾸어 볼 수 있습니다. 이것은 여러분의 특별한 마우스를 위한 전용 드라이버가 있고 거기에서 제공되는 특별한 특징이 없어도 살수 있다고 가정합니다.
문자가 아니라 키의 이름을 사용하십시오 (Tab 그리고 Space). 예를 들어, #Space
는 Win+Space이고 ^!Tab
은 Ctrl+Alt+Tab입니다.
이 주제는 리맵핑 페이지에 기술되어 있습니다.
다음과 같이 핫키에 내장 변수를 사용하십시오:
~Ctrl:: if (A_ThisHotkey = A_PriorHotkey && A_TimeSincePriorHotkey < 200) MsgBox 두번-눌렀습니다 return
선호되는 방법은 #IfWinActive입니다. 예를 들어:
#IfWinActive, ahk_class Notepad ^a::MsgBox 노트패드가 활성화되어 있는 동안 Control-A를 눌렀습니다.
다음 예제를 연구해 보십시오. Numpad0를 접두 키로 만듭니다:
Numpad0 & Numpad1::MsgBox, Numpad0을 누르고 있는 동안 Numpad1을 눌렀습니다.
이제, 위와 같이 핫키를 기동하는데 사용되지 않을 경우 Numpad0가 실제 Numpad0 키눌림을 전송하도록 만들려면, 다음 핫키를 추가합니다:
$Numpad0::Send, {Numpad0}
$ 접두사는 무한 회돌이를 경고하는 대화상자가 나타나는 것을 막기 위해 필요합니다 (핫키가 "자기 자신을 전송"하기 때문입니다). 게다가, 위의 행위는 키에서 손을 뗄 때 일어납니다.
다음은 예제들을 참조하십시오.
폴리테네(polyethene)가 작성한 스크립트를 사용하십시오 (예제들이 포함되어 있습니다).
특수 키들을 참조하십시오.
그렇습니다. 다음 예제 스크립트는 000를 등호 키로 바꿉니다. Send, =
줄을 원하는 대로 바꾸어서 행위를 바꿀 수 있습니다.