AutoHotKey(오토핫키) 설명서 MouseClickDrag

Posted by 발전소장
2014. 8. 14. 13:42 AutoHotKey/Commands

MouseClickDrag

마우스를 눌러 내리고, 그대로 이동해 떼어 놓는다(드러그&드롭을 실시한다)

MouseClickDrag, WhichButton, X1, Y1, X2, Y2 [, Speed, R]

Parameters

인수명설명
WhichButton 어느 버튼을 사용할까
LEFT
왼쪽 버튼
RIGHT
오른쪽 버튼
MIDDLE
중앙 버튼(휠)
X1
확장 버튼
X2
확장 버튼
「L」 「R」 「M」라고 하는 생략형에서도 지정 가능.
X1, Y1 드러그를 개시하는 좌표.
통상은 액티브 윈도우의 좌상으로부터의 상대 좌표이지만,CoordMode그리고 스크린 전체로의 절대 좌표로 변경할 수 있다.
X2, Y2 드러그를 종료하는 좌표.
통상은 액티브 윈도우의 좌상으로부터의 상대 좌표이지만,CoordMode그리고 스크린 전체로의 절대 좌표로 변경할 수 있다.
Speed 마우스 커서를 이동하는 속도.
「0」(즉석에서 이동)(으)로부터 「100」(천천히 이동)까지의 값을 지정.
생략시의 값은,SetDefaultMouseSpeed그리고 설정 가능.(미설 정시는 「2」)
R 「R」(을)를 지정하면,X1,Y1의 좌표가 마우스 커서가 있는 위치로부터의 상대 좌표로서 다루어진다.
또,X2,Y2도,X1,Y1(으)로부터의 상대 좌표가 된다.

Remarks

게임등에서는, 너무나 빨리 마우스 커서가 움직이면 부적당이 발생하는 경우가 있다.
Speed(을)를 변경하는 것으로, 시간을 들여 이동시킬 수 있다.
Speed(을)를0이외로 설정하고, 마우스 커서가 이동하고 있는 동안은, 새로운 스렛드가 끼어들 수 없다.

마우스 조작의 뒤에는, 다른 프로세스가 마우스 조작에 확실히 응답하기 위해서, 짧은 휴지가 삽입된다.
그 길이는,SetMouseDelay그리고 설정할 수 있다.

마우스 커서가 이동하고 있는 동안, 유저가 다른 조작을 실시할 수 없게 하려면 ,BlockInput커멘드를 사용한다.

Related

CoordMode, SetDefaultMouseSpeed, SetMouseDelay, MouseClick, MouseGetPos, MouseMove, SetKeyDelay

Example(s)

MouseClickDrag, left, 0, 200, 600, 400 


AutoHotKey(오토핫키) 설명서 MouseClick

Posted by 발전소장
2014. 8. 14. 13:42 AutoHotKey/Commands

MouseClick

마우스의 버튼을 눌러 인하/밀어 올려 하거나 클릭하거나 휠을 돌리거나 한다

MouseClick [, WhichButton , X, Y, ClickCount, Speed, D|U, R]

Parameters

인수명설명
WhichButton 어느 버튼을 조작할까
LEFT
왼쪽 버튼
RIGHT
오른쪽 버튼
MIDDLE
중앙 버튼(휠)
WheelUp
휠을 상 회전(Windows2000/XP전용)
WheelDown
휠을 하 회전(Windows2000/XP전용)
X1
확장 버튼(Windows2000/XP전용)
X2
확장 버튼(Windows2000/XP전용)
「L」 「R」 「M」 「WU」 「WD」라고 하는 생략형에서도 지정 가능.
X, Y 클릭하는 좌표.
생략시는 현재의 커서 위치
통상은 액티브 윈도우의 좌상으로부터의 상대 좌표이지만,CoordMode그리고 스크린 전체로의 절대 좌표로 변경할 수 있다.
ClickCount 클릭하는 회수.
생략시는1회.
Speed 좌표를 지정했을 경우로 이동하는 속도.
「0」(즉석에서 이동)(으)로부터 「100」(천천히 이동)까지의 값을 지정.
생략시의 값은,SetDefaultMouseSpeed그리고 설정 가능.(미설 정시는 「2」)
D|U 「D」(을)를 지정하면, 버튼을 눌러 내려 만 해 떼어 놓지 않는다.
「U」(을)를 지정하면, 눌러 내린 버튼을 떼어 놓는다.
생략시는 클릭을 실시한다.
R 「R」(을)를 지정하면, ,X(와)과Y에 의한 이동은 현재의 커서 위치로부터의 상대 좌표가 된다.

Remarks

게임등에서는, 너무나 빨리 마우스 커서가 움직이면 부적당이 발생하는 경우가 있다.
Speed(을)를 변경하는 것으로, 시간을 들여 이동시킬 수 있다.
Speed(을)를0이외로 설정하고, 마우스 커서가 이동하고 있는 동안은, 새로운 스렛드가 끼어들 수 없다.

일부의 어플리케이션에서는,WheelUp(이)나WheelDown(을)를ClickCount(와)과 함께 사용해도 여러 차례의 동작이 되지 않는 경우가 있다.
그 경우는,Loop(을)를 사용해 여러 차례 커멘드를 실행하면 좋다.

마우스 커서가 이동하고 있는 동안, 유저가 다른 조작을 실시할 수 없게 하려면 ,BlockInput커멘드를 사용한다.

마우스 조작의 뒤에는, 다른 프로세스가 마우스 조작에 확실히 응답하기 위해서, 짧은 휴지가 삽입된다.
그 길이는,SetMouseDelay그리고 설정할 수 있다.

Related

CoordMode, SetDefaultMouseSpeed, SetMouseDelay, MouseClickDrag, MouseGetPos, MouseMove, SetKeyDelay

Example(s)

; Double click at the current mouse pos:
MouseClick, left
MouseClick, left

; Same as above:
MouseClick, left, , , 2

; Move to specified coordinates then click once:
MouseClick, right, 200, 300

; Here are two hotkeys that simulate the turning of the mouse wheel:
#up::MouseClick, WheelUp, , , 2  ; Turn it by two notches.
#down::MouseClick, WheelDown, , , 2


AutoHotKey(오토핫키) 설명서 Mod()

Posted by 발전소장
2014. 8. 14. 13:41 AutoHotKey/Commands

Mod()

나눗셈의 나머지를 돌려주는 함수

Mod(N,Divisor)

Parameters

인수명설명
N피제수를 지정한다
Divisor법수를 지정한다

Remarks

N(을)를Dvisor그리고 나눈 너무를 돌려준다.
예를 들어,Mod(5,3)하2(이)가 된다.
부호는N(와)과 같게 된다.
소수치를 지정하는 일도 가능.
어느 쪽인가의 인수가 소수치였던 경우는, 돌아가 값도 소수치가 된다
인수가 수치가 아니었던 경우나, 계산 불능인 값이 주어졌을 경우는 길이 제로의 공문자열이 돌아간다.

Related

함수


AutoHotKey(오토핫키) 설명서 Menu

Posted by 발전소장
2014. 8. 14. 13:41 AutoHotKey/Commands

Menu

pop-up menu를 작성하거나 표시하거나 한다.task tray 아이콘이나 툴 팁의 설정도 실시할 수 있다.

Menu, MenuName, Cmd [, P3, P4, FutureUse]

Parameters

인수명설명
MenuName 「TRAY」라고 하면, task tray의 오른쪽 클릭 메뉴를 설정할 수 있다.
그 이외는, 커스텀 메뉴명이 된다.
커스텀 메뉴는,Add커멘드로 항목을 등록했을 때에 신규 작성된다.
Cmd, P3, P4 아래와 같이 참조
FutureUse 장래의 확장을 위해서 확보되고 있다.현재 이 인수는 무시된다.

메뉴 항목 조작

Add , MenuItemName
「MenuItemName」(으)로 지정한 표시명으로 메뉴 항목을 추가해, 「MenuItemName」(으)로 지정한 이름의 라벨을 할당한다.
Add , MenuItemName, Label
「MenuItemName」(으)로 지정한 표시명으로 메뉴 항목을 추가해, 「Label」(으)로 지정한 이름의 라벨을 할당한다.
Add , MenuItemName, :Submenu
「MenuItemName」(으)로 지정한 표시명으로 메뉴 항목이 추가되어 선택하면 「Submenu」(으)로 지정한 이름의 메뉴가 전개되게 된다.
「Submenu」의 메뉴는 미리 작성해 둔다.
부메뉴명의 전에 「:」(을)를 붙일 필요가 있다.
Add , MenuItemName,[ Label],Pn
Pn의n그리고 메뉴를 선택했을 때에 실행되는 스렛드의세치기 우선도(을)를 설정할 수 있다.(례:「P10」)
Add
메뉴에 단락지어 선을 추가한다. 현재로서는, 단락선단체를 삭제하는 것은 할 수 없기 때문에,DeleteAll그리고 전삭제하고 나서 추가 다시 할 수 밖에 없다.
Delete [, MenuItemName]
MenuItemName그리고 지정한 항목을 삭제한다.
MenuItemName하지만 생략 되었을 경우,MenuName의 메뉴 자체가 삭제된다.다른 메뉴에 부메뉴 항목으로서 등록되어 있었을 경우, 그 항목도 삭제된다.
DeleteAll
메뉴내의 항목을 모두 삭제한다.
메뉴 자체는 삭제되지 않는다.
Rename, MenuItemName [, NewName]
MenuItemName의 항목명을NewName(으)로 변경한다.
NewName하지만 생략 되었을 경우, 항목은 단락지어 선으로 바뀐다.
다른 항목명과 같은 이름으로 하는 것은 할 수 없다.
Check, MenuItemName
MenuItemName의 항목을 체크가 붙은 상태로 한다.
Uncheck, MenuItemName
MenuItemName의 항목을 체크가 붙지 않은 상태로 한다.
ToggleCheck, MenuItemName
MenuItemName의 항목의 체크의 유무를 바꾼다.
Enable, MenuItemName
MenuItemName의 항목을 유효화한다.
Disable, MenuItemName
MenuItemName의 항목을 무효화(선택 불능 상태)한다.
ToggleEnable, MenuItemName
MenuItemName의 항목의 유효·무효를 바꾼다.
Default [, MenuItemName]
메뉴의 디폴트 항목을MenuItemName의 항목으로 설정한다.
디폴트 항목은 굵은 글씨로 표시된다.
task tray 메뉴의 경우, task tray 아이콘을 더블 클릭 했을 때에 디폴트 항목이 실행된다.
MenuItemName하지만 생략 되었을 때는,NoDefault(와)과 같게 된다.
NoDefault
디폴트 항목의 설정을 해제해, 디폴트 항목이 없는 상태로 한다.
Standard
task tray 메뉴에 있는 표준 메뉴 항목을 추가한다
NoStandard
표준 메뉴 항목을 삭제한다

task tray 관계

MenuName(은)는 「TRAY」라고 하는 것

Icon, FileName [, IconNumber, Freeze]
task tray 아이콘을 변경한다.
FileName에는 아이콘을 포함한 파일(.ico,.dll,.exe등)(을)를 지정한다.
IconNumber에는 아이콘 번호를 지정.생략시는 「1」(이)가 된다.
FileName(을)를 「*」(으)로 하면, 스크립트의 디폴트 아이콘이 된다.
여기서의 설정은,InputBox(이)나Progress(으)로의 아이콘에도 반영된다.
A_IconNumber(이)나A_IconFile(으)로서 현재의 설정을 취득할 수 있다.(디폴트 때는 비운다)
Freeze에1(을)를 지정하면, 트레이 아이콘을 고정해,Pause커멘드나Suspend커멘드로 아이콘이 변화하지 않게 할 수 있다.Freeze(을)를0(으)로 하면 트레이 아이콘의 고정을 해제할 수 있다.
Icon,,,1
Pause(이)나Suspend커멘드를 실행했을 때에 트레이 아이콘이 변하지 않게 한다
Icon,,0
Icon,,1의 설정을 해제
Icon
#NoTrayIcon지령으로 아이콘이 비표시가 되어 있을 때, 디폴트의 아이콘을 표시한다.
NoIcon
트레이 아이콘을 비표시로 한다.
스크립트 기동시에 아이콘을 비표시로 하고 싶은 경우,#NoTrayIcon지령을 사용하는 편이 좋다.
아이콘이 비표시인지 어떤지는A_IconHidden변수로 참조할 수 있다.(0(이)라면 표시,1(이)라면 비표시)
Tip [, Text]
트레이 아이콘에 마우스를 실었을 때에 표시되는 툴 팁을 변경한다. Text하지만 생략 되었을 경우, 스크립트의 디폴트 텍스트가 된다.
A_IconTip변수로 설정한 내용을 참조할 수 있다.(디폴트 때는 하늘)

Show [,X ,Y]
MenuName의 메뉴를 표시한다.
GUI윈도우의 도구모음에 관련지을 수 있고 있는 메뉴는 표시할 수 없다.
X,Y에 표시하는 좌표를 지정한다.생략시는 마우스 커서 위치.
좌표의 지정 방법은, 「CoordMode, Menu」(으)로 액티브 윈도우로부터의 상대 좌표인가, 스크린 전체로의 절대 좌표인지를 설정할 수 있다.
Color, ColorValue[, Single]
메뉴의 배경색을 변경한다.
ColorValue에는RRGGBB형식의 칼라 코드(례:FF9900)(이)나색의 이름(례:Red)(을)를 지정할 수 있다.
ColorValue(을)를 생략 할까 「Default」(을)를 지정하면, 시스템으로 설정된 메뉴 배경색으로 돌아온다.
통상은, 부메뉴의 배경색도 변경되지만, 제3인수에 「Single」(을)를 지정하면 부메뉴는 변경되지 않는다.
이 서브 커멘드는Windows95/NT그럼 효과가 없다.
Click, ClickCount
트레이 아이콘으로부터 메인 윈도우를 표시하기 위한 조작을 설정한다.
ClickCount에 「1」(을)를 지정하면, 싱글 클릭으로 표시된다.
「2」(을)를 지정하면, 더블 클릭으로 표시된다.
디폴트는 「2」.
MainWindow
메뉴로부터 스크립트의 메인 윈도우를 표시하는 것을 허락한다.
MenuName하TRAY(으)로 한다.
EXE화된 스크립트에서만 유효.
NoMainWindow
메뉴로부터 스크립트의 메인 윈도우를 표시하는 것을 금지한다.
ListLines,ListVars,ListHotkeys,KeyHistory커멘드가 실행되었을 경우는, 여기서의 설정에 관계없이 표시된다.
UseErrorLevel [, off]
통상,Menu커멘드 실행시에 어떠한 에러가 있으면, 에러 다이얼로그가 표시되어 현재의 스렛드는 종료한다.
UseErrorLevel(을)를 실시하면, 에러 다이얼로그를 표시하지 않고,ErrorLevel변수를 「1」(으)로 한다.
인수에OFF(을)를 붙이면, 이 설정을OFF(으)로 할 수 있다.
이 설정은, 모든 메뉴에 영향을 준다.

Remarks

메뉴 아이템명에 「&a」(와)과 같이 「&」에 이어 영숫자를 붙인 것이 있으면, 그 부분이 밑줄 첨부의 영숫자로서 표시되어 대응하는 키를 누르는 것으로 그 메뉴 아이템을 선택할 수 있게 된다.

메뉴나 메뉴 항목명은 최대260문자까지.
메뉴 항목명은 대문자 소문자를 무시해 매치한다.

메뉴 아이템은 항상 맨 밑에 추가된다.
트레이 메뉴 위에 항목을 추가하고 싶은 경우,NoStandard그리고 일단 표준 항목을 삭제하고,Standard그리고 추가 다시 한다.

하늘의 메뉴는 표시할 수 없다.

메뉴 아이템은스렛드(으)로서 실행된다.
메뉴 아이템의 스렛드 실행중에 다른 스렛드가 끼어들기도 한다.
우선도를 설정해, 낮은 우선도의 스렛드의 세치기를 금지할 수도 있다.

A_ThisMenuItem」변수로 제일 최근 실행된 실행된 메뉴 항목명을, 「A_ThisMenu」(으)로 메뉴명을 참조할 수 있다.

hot key를 사용하지 않고, 메뉴 아이템등에서의 봐 액션을 실행하는 스크립트의 경우,#Persistent지령을 기술해 명시적으로 상주 상태로 하지 않으면 안 된다.

Related

Threads, Gosub, Return, SetTimer, #Persistent

Example(s)

Menu, tray, add, Item1, MenuHandler
return
MenuHandler:
MsgBox You selected %A_ThisMenuItem% from menu %A_ThisMenu%
return

; This test script demonstrates some of the various menu commands.
#Persistent
#SingleInstance
menu, tray, add ; separator
menu, tray, add, TestToggle&Check
menu, tray, add, TestToggleEnable
menu, tray, add, TestDefault
menu, tray, add, TestStandard
menu, tray, add, TestDelete
menu, tray, add, TestDeleteAll
menu, tray, add, TestRename
menu, tray, add, Test
return

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

TestToggle&Check:
menu, tray, ToggleCheck, TestToggle&Check
menu, tray, Enable, TestToggleEnable ; Also enables the next test since it can't undo the disabling of itself.
menu, tray, add, TestDelete ; Similar to above.
return

TestToggleEnable:
menu, tray, ToggleEnable, TestToggleEnable
return

TestDefault:
if default = TestDefault
{
	menu, tray, NoDefault
	default =
}
else
{
	menu, tray, Default, TestDefault
	default = TestDefault
}
return

TestStandard:
if standard <> n
{
	menu, tray, NoStandard
	standard = n
}
else
{
	menu, tray, Standard
	standard = y
}
return

TestDelete:
menu, tray, delete, TestDelete
return

TestDeleteAll:
menu, tray, DeleteAll
return

TestRename:
if NewName <> renamed
{
	OldName = TestRename
	NewName = renamed
}
else
{
	OldName = renamed
	NewName = TestRename
}
menu, tray, rename, %OldName%, %NewName%
return

Test:
MsgBox, You selected "%A_ThisMenuItem%" in menu "%A_ThisMenu%".
return


AutoHotKey(오토핫키) 설명서 Loop (registry)

Posted by 발전소장
2014. 8. 14. 13:40 AutoHotKey/Commands

Loop (registry)

지정 키 이하의 레지스트리 키 각각 대하고 반복 처리를 실시한다

Loop, RootKey [, Key, IncludeSubkeys?, Recurse?]

Parameters

인수명설명
RootKey 「HKEY_LOCAL_MACHINE」 「HKEY_USERS」 「HKEY_CURRENT_USER」 「HKEY_CLASSES_ROOT」 「HKEY_CURRENT_CONFIG」의 어떤 것인가.「HKLM」(와)과 같은 단축명도 가능.
리모트의 레지스트리에 액세스 하고 싶은 경우, 「\\workstation01:HKEY_LOCAL_MACHINE」(와)과 같이 컴퓨터명과 「:」(을)를 붙인다.
Key 친키명.
예를 들면 「Software\SomeApplication」.
생략시는RootKey이하의 키가 처리된다.
IncludeSubkeys? 「0」(이)라면, 값만을 처리.
「1」(이)라면, 값과 서브 키.
「2」(이)라면, 서브 키만.
디폴트는 「0」.
Recurse? 「0」(이)라면, 서브 키내의 키는 대상이 되지 않는다.
「1」(이)라면, 서브 키내의 키도 대상이 된다.
디폴트는 「0」.

Remarks

대상이 되고 있는 키의 정보는, 아래와 같은 변수로서 참조할 수 있다.

A_LoopRegName 대상이 되고 있는 값이나 서브 키의 이름.
RegEdit.exe그리고 「(규정)」가 되고 있는 값의 경우, 비운다.
A_LoopRegType 서브 키의 경우 「KEY」가 된다.
값의 경우, 「REG_SZ」 「REG_EXPAND_SZ」 「REG_MULTI_SZ」 「REG_DWORD」 「REG_QWORD」 「REG_BINARY」 「REG_LINK」 「REG_RESOURCE_LIST」 「REG_FULL_RESOURCE_DESCRIPTOR」 「REG_RESOURCE_REQUIREMENTS_LIST」 「REG_DWORD_BIG_ENDIAN」의 어떤 것인가가 된다.
이러한 어떤 것도 아닌 타입의 키였던 경우, 비운다.
A_LoopRegKey 대상이 되고 있는 루트 키의 이름.(「HKEY_LOCAL_MACHINE」 「HKEY_USERS」 「HKEY_CURRENT_USER」 「HKEY_CLASSES_ROOT」 「HKEY_CURRENT_CONFIG」). 리모트의 레지스트리에서도, 컴퓨터명은 포함하지 않는다.
A_LoopRegSubKey 대상이 되고 있는 항목의 서브 키의 패스.
A_LoopRegTimeModified 키의 최종 갱신 일시.YYYYMMDDHH24MISS형식.
NT계로, 대상이 서브 키의 경우 이외는 하늘.

아래와 같은 커멘드를 레지스트리 루프내에서 실행하는 경우, 대상 키를 생략 할 수 있다.

RegRead, OutputVar 현재의 항목의 값을 변수에 읽어낸다.
항목이 서브 키였던 경우,ErrorLevel하지만 「1」(이)가 되어,OutputVar(은)는 비운다.
RegWrite [, Value] 현재의 항목에 값을 쓴다.
Value하지만 생략 되었을 경우, 값은 「0」혹은 비운다.
항목이 서브 키였던 경우,ErrorLevel하지만 「1」(이)가 된다.
RegDelete 항목을 삭제한다.
항목이 서브 키였던 경우, 이하의 모든 항목이 삭제된다.

그 외의 사양은, 통상의Loop(와)과 같이.

리모트 머신의 레지스트리의 취급해에 관한 설명은 할애 한다.

Related

Loop, Break, Continue, Blocks, RegRead, RegWrite, RegDelete

Example(s)

Loop, HKEY_CURRENT_USER, Software\Microsoft\Windows, 1, 1
{
	if a_LoopRegType = key
		value =
	else
	{
		RegRead, value
		if ErrorLevel <> 0
			value = *error*
	}
	MsgBox, 4, , %a_LoopRegName% = %value% (%a_LoopRegType%)`n`nContinue?
	IfMsgBox, NO, break
}


AutoHotKey(오토핫키) 설명서 Loop,READ

Posted by 발전소장
2014. 8. 14. 13:40 AutoHotKey/Commands

Loop,READ

텍스트 파일을1행씩 읽어들여, 반복 처리를 실시한다

Loop, Read, InputFile [, OutputFile, FutureUse]

Parameters

인수명설명
Read 제일 인수는 「READ」라고 한다.변수에 격납해 참조해도 상관없다.
InputFile 읽어들이고 싶은 파일명.
상대 패스로 지정하면,%A_WorkingDir% (으)로부터 검색된다.
OutputFile 루프의 사이,FileAppend커멘드를 제2인수를 생략 해 실행하면, 이 파일에 써진다.
루프중에서 최초로FileAppend(을)를 사용했을 때에 열려 그 후 루프를 빠질 때까지 연 채로 있다.
커멘드를 실행할 때마다 다시 여는 것이 없기 때문에, 제2인수를 붙여 실행하는 것보다 퍼포먼스가 좋아진다.
상대 패스로 지정하면,%A_WorkingDir% (으)로부터 검색된다.
파일명의 선두에 「*」(을)를 붙이면, 바이너리 모드로 열려 개행 코드의 자동변역(LF→CR+LF)(을)를 하지 않게 된다.
파일명을 「*」라고 하면, 제2인수 없음의FileAppend그리고 스크립트의 표준 출력에 문자열을 출력할 수 있다.
FutureUse 장래의 확장을 위해서 확보되고 있다.현재 이 인수는 무시된다.

Remarks

읽어내진 행(개행은 포함하지 않는다)(은)는 「A_LoopReadLine」로서 참조할 수 있다.

65534문자를 넘는 행은, 여러 차례로 나누어 읽힌다.

개행 코드는,CR+LF(와)과LF에 대응(CR에는 비대응)

파일의 각 행을 읽어내려면 ,FileReadLine커멘드를 사용하는 방법도 있지만,Loop, Read(을)를 사용하는 편이 효율이 좋다.

읽어들인 행을StringSplit커멘드나Loop,PARSE그리고 더욱 분할할 수도 있다.

그 외의 사양은, 통상의Loop(와)과 같이.

Related

FileRead, FileReadLine, FileAppend, Sort, Loop, Break, Continue, Blocks, FileSetAttrib, FileSetTime

Example(s)

; Example #1: Only those lines of the 1st file that contain
; the word FAMILY will be written to the 2nd file.  Uncomment
; this line to overwrite rather than append to any existing file:
;FileDelete, C:\Docs\Family Addresses.txt

Loop, read, C:\Docs\Address List.txt, C:\Docs\Family Addresses.txt
{
	IfInString, A_LoopReadLine, family, FileAppend, %A_LoopReadLine%`n
}

; Example #2: A working script that attempts to extract all FTP and HTTP
; URLs from a text or HTML file:
FileSelectFile, SourceFile, 3,, Pick a text or HTML file to analyze.
if SourceFile =
	return  ; This will exit in this case.

SplitPath, SourceFile,, SourceFilePath,, SourceFileNoExt
DestFile = %SourceFilePath%\%SourceFileNoExt% Extracted Links.txt

IfExist, %DestFile%
{
	MsgBox, 4,, Overwrite the existing links file? Press No to append to it.`n`nFILE: %DestFile%
	IfMsgBox, Yes
		FileDelete, %DestFile%
}

LinkCount = 0
Loop, read, %SourceFile%, %DestFile%
{
	URLSearchString = %A_LoopReadLine%
	Gosub, URLSearch
}
MsgBox %LinkCount% links were found and written to "%DestFile%".
return


URLSearch:
; It's done this particular way because some URLs have other URLs embedded inside them:
StringGetPos, URLStart1, URLSearchString, http://
StringGetPos, URLStart2, URLSearchString, ftp://
StringGetPos, URLStart3, URLSearchString, www.

; Find the left-most starting position:
URLStart = %URLStart1%  ; Set starting default.
Loop
{
	; It helps performance (at least in a script with many variables) to resolve
	; "URLStart%A_Index%" only once:
	StringTrimLeft, ArrayElement, URLStart%A_Index%, 0
	if ArrayElement =  ; End of the array has been reached.
		break
	if ArrayElement = -1  ; This element is disqualified.
		continue
	if URLStart = -1
		URLStart = %ArrayElement%
	else ; URLStart has a valid position in it, so compare it with ArrayElement.
	{
		if ArrayElement <> -1
			if ArrayElement < %URLStart%
				URLStart = %ArrayElement%
	}
}

if URLStart = -1  ; No URLs exist in URLSearchString.
	return

; Otherwise, extract this URL:
StringTrimLeft, URL, URLSearchString, %URLStart%  ; Omit the beginning/irrelevant part.
Loop, parse, URL, %A_Tab%%A_Space%<>  ; Find the first space, tab, or angle (if any).
{
	URL = %A_LoopField%
	break  ; i.e. perform only one loop iteration to fetch the first "field".
}
; If the above loop had zero iterations because there were no ending characters found,
; leave the contents of the URL var untouched.

; If the URL ends in a double quote, remove it.  For now, StringReplace is used, but
; note that it seems that double quotes can legitimately exist inside URLs, so this
; might damage them:
StringReplace, URLCleansed, URL, ",, All
FileAppend, %URLCleansed%`n
LinkCount += 1

; See if there are any other URLs in this line:
StringLen, CharactersToOmit, URL
CharactersToOmit += %URLStart%
StringTrimLeft, URLSearchString, URLSearchString, %CharactersToOmit%
Gosub, URLSearch  ; Recursive call to self.
return


AutoHotKey(오토핫키) 설명서 Loop,PARSE

Posted by 발전소장
2014. 8. 14. 13:39 AutoHotKey/Commands

Loop,PARSE

문자열을 지정의 단락 문자로 분할하고, 각각 대해 반복 처리

Loop, Parse, InputVar [, Delimiters, OmitChars, FutureUse] 

Parameters

인수명설명
Parse 제일 인수는 「PARSE」(으)로 한다.
변수는 사용할 수 없다.
InputVar 분할되는 문자열이 격납된 변수명.
「%Name%」(와)과 같이 하면, 「Name」변수에 격납된 문자열이 변수명으로서 사용된다.
Delimiters 단락 문자로서 사용하고 싶은 문자를 열거한다.
특정의 「문자열」을 단락으로 하고 싶은 경우,StringReplace그리고 치환하고 나서 처리하면 좋다.
「CSV」라고 하면,CSV형식의 데이터로서 처리된다.「"first field",SecondField,"the word ""special"" is quoted literally",,"last field, has literal comma"」(와)과 같은 데이터를 잘 처리할 수 있다.
생략시는,1아르바이트씩 처리된다.
OmitChars 각 필드의 선두와 말미로부터 없애고 싶은 문자를 열거.

FutureUse 장래의 확장을 위해서 확보되고 있다.현재 이 인수는 무시된다.

Remarks

「A_LoopField」변수로 잘라진 문자열을 참조할 수 있다.

InputVar의 내용은 루프 개시전에 퇴피되므로, 루프내에서InputVar의 변수의 내용을 변경해도 영향은 없다.

Sort커멘드를 사용하면, 필드를 문자 코드순서에 줄서 바꾸고 나서 처리할 수 있다.

StringSplit그렇지만 문자열을 분할할 수 있지만,Loop,PARSE쪽이 퍼포먼스가 높다.

그 외의 사양은, 통상의Loop(와)과 같이.

Related

StringSplit, Loop, Break, Continue, Blocks, Sort, FileSetAttrib, FileSetTime

Example(s)

; Example #1:
Colors = red,green,blue
Loop, parse, Colors, `,
{
	MsgBox, Color number %a_index% is %A_LoopField%.
}

; Example #2: Read the lines inside a variable, one by one (similar to a file-reading loop).
; A file can be loaded into a variable via FileRead:
Loop, parse, FileContents, `n, `r
{
	MsgBox, 4, , Line number %a_index% is %A_LoopField%.`n`nContinue?
	IfMsgBox, No, break
}

; Example #3: This is the same as the example above except that it's for the clipboard.
; It's useful whenever the clipboard contains files, such as those copied from an open
; Explorer window (the program automatically converts such files to their file names):
Loop, parse, clipboard, `n, `r
{
	MsgBox, 4, , File number %a_index% is %A_LoopField%.`n`nContinue?
	IfMsgBox, No, break
}
; Example #4: Parse a comma separated value (CSV) file:
Loop, read, C:\Database Export.csv
{
	LineNumber = %A_Index%
	Loop, parse, A_LoopReadLine, CSV
	{
		MsgBox, 4, , Field %LineNumber%-%A_Index% is:`n%A_LoopField%`n`nContinue?
		IfMsgBox, NO, return
	}
}


AutoHotKey(오토핫키) 설명서 Loop(files)

Posted by 발전소장
2014. 8. 14. 13:39 AutoHotKey/Commands

Loop(files)

패턴에 일치하는 파일 각각 붙어 융통반네 해를 실시한다

Loop, FilePattern [, IncludeFolders?, Recurse?] 

Parameters

인수명설명
FilePattern 파일명, 폴더명, 와일드 카드.
상대 패스로 지정했을 경우는,%A_WorkingDir%(으)로부터 검색된다.
IncludeFolders? 「0」(이)라면 파일만을 대상으로 한다.
「1」(이)라면 파일과 폴더를 대상으로 한다.
「2」(이)라면 폴더만을 대상으로 한다.
디폴트는 「0」.
Recurse? 「0」(이)라면 서브 폴더내는 검색하지 않는다.
「1」(이)라면 모든 서브 폴더를 재귀적으로 검색해, 패턴에 매치하는 것을 처리한다.
디폴트는 「0」.

Remarks

NTFS그럼, 파일은 이름순에 처리된다.
FAT그럼, 처리되는 차례는 부정.
파일의 풀 패스가259문자 이상의 파일은 무시된다.

처리 대상이 되어 있는 파일의 정보는, 이하의 편입 변수로서 참조할 수 있다.

A_LoopFileName 파일명(디렉토리 패스를 제외하다)
A_LoopFileExt 파일의 확장자(extension).
「.」(은)는 포함하지 않는다(례:「txt」)
A_LoopFileFullPath 파일의 풀 패스.
다만,FilePattern그리고 상대 패스를 지정했을 경우는, 이쪽도 상대 패스가 된다.
A_LoopFileLongPath 롱 파일 네임 형식의, 정식적 풀 패스.
A_LoopFileShortPath 파일의8.3형식이 짧은 패스.
다만,FilePattern그리고 상대 패스를 지정했을 경우는, 이쪽도 상대 패스가 된다.
NTFS그리고 숏패스의 생성을 무효로 하고 있는 경우, 이 변수는 비운다.
A_LoopFileShortName 8.3형식의 쇼트 파일 네임.
NTFS의 쇼트 파일 네임 생성이 무효가 되어 있는 등의 이유에 의해 취득에 실패했을 경우는,A_LoopFileName(와)과 같은 것이 된다.
A_LoopFileDir 파일이 있는 디렉토리.
다만,FilePattern그리고 상대 패스를 지정했을 경우는, 이쪽도 상대 패스가 된다.
A_LoopFileTimeModified 파일의 최종 갱신 일시.YYYYMMDDHH24MISS형식.
A_LoopFileTimeCreated 파일이 만들어진 일시.YYYYMMDDHH24MISS형식.
A_LoopFileTimeAccessed 파일의 최종 액세스 일시.YYYYMMDDHH24MISS형식.
A_LoopFileAttrib 파일의 속성.FileGetAttrib그리고 취득되는 것과 같다.
A_LoopFileSize 파일 사이즈(Byte단위).4기가바이트 이상의 사이즈에도 대응.
A_LoopFileSizeKB 파일의 사이즈(KB단위)
A_LoopFileSizeMB 파일의 사이즈(MB단위)

그 외의 사양은, 통상의Loop(와)과 같이.

Related

Loop, Break, Continue, Blocks, FileSetAttrib, FileSetTime

Example(s)

; Example #1:
Loop, %ProgramFiles%\*.txt, , 1  ; Recurse into subfolders.
{
	MsgBox, 4, , Filename = %A_LoopFileFullPath%`n`nContinue?
	IfMsgBox, No
		break
}

; Example #2: Calculate the size of a folder, including the files in all its subfolders:
SetBatchLines, -1  ; Make the operation run at maximum speed.
FolderSizeKB = 0
FileSelectFolder, WhichFolder
Loop, %WhichFolder%\*.*, , 1
	FolderSizeKB += %A_LoopFileSizeKB%
MsgBox Size of %WhichFolder% is %FolderSizeKB% KB.

; Example #3: Retrieve file names sorted by name (see next example to sort by date):
FileList =  ; Initialize to be blank.
Loop, C:\*.*
	FileList = %FileList%%A_LoopFileName%`n
Sort, FileList, R   ; The R option sorts in reverse order. See Sort for other options.
Loop, parse, FileList, `n
{
	if A_LoopField =  ; Ignore the blank item at the end of the list.
		continue
	MsgBox, 4,, File number %A_Index% is %A_LoopField%.  Continue?
	IfMsgBox, No
		break
}
; Example #4: Retrieve file names sorted by modification date:
FileList =
Loop, %UserProfile%\Recent\*.*, 1  ; UserProfile exists as an environment variable on some OSes.
	FileList = %FileList%%A_LoopFileTimeModified%`t%A_LoopFileName%`n
Sort, FileList  ; Sort by date.
Loop, parse, FileList, `n
{
	if A_LoopField =  ; Omit the last linefeed (blank item) at the end of the list.
		continue
	StringSplit, FileItem, A_LoopField, %A_Tab%  ; Split into two parts at the tab char.
	MsgBox, 4,, The next file (modified at %FileItem1%) is:`n%FileItem2%`n`nContinue?
	IfMsgBox, No
		break
}
; Example #5: Copy only the source files that are newer than their counterparts
; in the destination:
CopyIfNewer:
; Caller has set the variables CopySourcePattern and CopyDest for us.
Loop, %CopySourcePattern%
{
	copy_it = n
	IfNotExist, %CopyDest%\%A_LoopFileName%  ; Always copy if target file doesn't yet exist.
		copy_it = y
	else
	{
		FileGetTime, time, %CopyDest%\%A_LoopFileName%
		EnvSub, time, %A_LoopFileTimeModified%, seconds  ; Subtract the source file's time from the destination's.
		if time < 0  ; Source file is newer than destination file.
			copy_it = y
	}
	if copy_it = y
	{
		FileCopy, %A_LoopFileFullPath%, %CopyDest%\%A_LoopFileName%, 1   ; Copy with overwrite=yes
		if ErrorLevel <> 0
			MsgBox, Could not copy "%A_LoopFileFullPath%" to "%CopyDest%\%A_LoopFileName%".
	}
}
Return
; Example #6: Convert filenames passed in via command-line parameters to long names,
; complete path, and correct uppercase/lowercase characters as stored in the file system.
; This script requires v1.0.25+.
Loop %0%  ; For each file dropped onto the script (or passed as a parameter).
{
	GivenPath := %A_Index%  ; Retrieve the next command line parameter.
	Loop %GivenPath%
		LongPath = %A_LoopFileLongPath%
	MsgBox The case-corrected long path name of file`n%GivenPath%`nis:`n%LongPath%
}


AutoHotKey(오토핫키) 설명서 Loop

Posted by 발전소장
2014. 8. 14. 13:38 AutoHotKey/Commands

Loop

커멘드 혹은 블록을 지정 회수 혹은break등이 실행될 때까지 반복한다

Loop [, Count]

Parameters

인수명설명
Count 반복의 회수.
생략 했을 경우,break인가return인가Goto그리고 처리를 빠질 때까지 무한하게 반복한다.
「%Count%」(와)과 같은 변수 참조도 사용할 수 있다.
식은 사용할 수 없다.

Remarks

Loop커멘드의 후에는, 반드시 커멘드나 블록이 온다.

Loop안에서break커멘드가 실행되면, 반복을 빠져 반복 커멘드·블록의 다음의 행에 실행이 옮긴다.

Loop블록내에서Continue커멘드가 실행되면, 거기로부터 블록의 마지막까지의 처리가 스킵 되어 다음의 회에 진행된다.

반복의 회수는 짜넣어 변수 「A_Index」로서 참조할 수 있다.
A_Index(은)는, 반복의1번째에서는 「1」이다.
루프가2중이 되어 있을 때는, 안쪽의 회수를 취득할 수 있다.외측의 것을 참조하고 싶으면, 다른 변수에 퇴피해 둘 필요가 있다.
A_Index(은)는 루프의 밖에서는 「0」(이)가 된다.

인수에 숫자 이외의 것이 지정되었을 때, 특수한 루프가 된다.
파일 패스의 와일드 카드라면,File loop, 레지스트리의 루트 키명이라면Registry loop, 「Parse」(이)라면문자열 분할 루프, 「Read」(이)라면File-read loop.

Related

File loop, Registry loop, File-read loop, Parsing loop, Break, Continue, Blocks

Example(s)

Loop, 3
{
	MsgBox, Iteration number is %A_Index%.  ; A_Index will be 1, 2, then 3
	Sleep, 100
}

Loop
{
	if a_index > 25
		break  ; Terminate the loop
	if a_index < 20
		continue ; Skip the below and start a new iteration
	MsgBox, a_index = %a_index% ; This will display only the numbers 20 through 25
}


AutoHotKey(오토핫키) 설명서 Log()

Posted by 발전소장
2014. 8. 14. 13:38 AutoHotKey/Commands

Log()

주어진 수치의 상용대수(10(을)를 바닥으로 한 대수)(을)를 돌려주는 함수

Log(N)

Parameters

인수명설명
N진수를 지정한다

Remarks

인수가 수치가 아니었던 경우나, 계산 불능인 값이 주어졌을 경우는 길이 제로의 공문자열이 돌아간다.

Related

함수