AHK_L 예제소스
■ 표준입출력
; ---- stdout.ahk ----
stdout := FileOpen(DllCall("GetStdHandle", "int", -11, "ptr"), "h `n")
Loop, 10
stdout.WriteLine(A_Index . "항목")
; ---- stdin.ahk ----
stdin := FileOpen(DllCall("GetStdHandle", "int", -10, "ptr"), "h `n")
While !stdin.AtEOF()
q .= stdin.ReadLine()
MsgBox, % q
사용예) 스크립트가 위치한 디렉토리에서 cmd로 다음과 같이 실행
> set ahk="C:\Program Files\AutoHotkey\AutoHotkey.exe"
> %ahk% stdout.ahk | %ahk% stdin.ahk
■ 메뉴에 아이콘 표시
Loop, 3 {
Menu, M1, Add, 항목%A_Index%, Dummy
Menu, M1, Icon, 항목%A_Index%, %A_WinDir%\Explorer.exe, %A_Index% ; , 32|64
}
Menu, M1, Show
Dummy:
Return
※ 주석을 제거하고 32나 64를 지정하면 큰 아이콘도 표시 가능
■ 탐색기에서 선택중인 파일의 풀패스를 복사
COM을 사용하므로 특수 폴더가 있어도 가능
SetTitleMatchMode, RegEx
#IfWinActive, ahk_class CabinetWClass|ExploreWClass
#c::
FileList:=
For window in ComObjCreate("Shell.Application").Windows
If (window.hwnd == WinExist()) {
For item in window.document.SelectedItems
FileList .= item.path "`n"
Break
}
Clipboard:=FileList, window:=item:=
Return
■ 활성화된 어플리케이션의 실행파일이 위치한 폴더를 열기
#z:: ; Win + z
WinGet, pid, PID, A
For process in ComObjGet("winmgmts:").ExecQuery("SELECT * FROM Win32_Process WHERE ProcessId='" pid "'")
Run, % "explorer.exe /select`,""" . (process.ExecutablePath) . """"
process :=
Return
■ IE 자동화
ie := ComObjCreate("InternetExplorer.Application")
ie.Visible := True
ie.Navigate("http://www.google.co.kr/")
While ie.Busy()
Sleep, 50
MsgBox, 로드 완료`n`n폼에 문자를 입력합니다.
form := ie.document.GetElementsByTagName("FORM")[0]
form.q.value := "AutoHotkey"
MsgBox, 폼 송신 완료
form.submit()
While ie.Busy()
Sleep, 50
MsgBox, 검색결과가 표시되었습니다.`n`n종료합니다.
form:=""
ie.Quit() ; 종료시키지 않으면 iexplore.exe 프로세스가 남으므로 주의
■ AutoHotkey.dll을 이용한 멀티스레드
미리 AutoHotkey.dll를 다운로드하여, 모듈등록을 할 필요가 있음
(DLL이 있는 디렉토리에서 "regsvr32.exe AutoHotkey.dll"을 실행)
code := "#NoTrayIcon`nMsgBox, Thread #"
Loop, 10 {
ComObjCreate("AutoHotkey.Script").AhkTextDll(code . A_Index)
Sleep, 100
}