AutoHotKey(오토핫키) 설명서 RegRead

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

RegRead

레지스트리로부터 값을 읽어낸다

RegRead, OutputVar, RootKey, SubKey [, ValueName]

Parameters

인수명설명
OutputVar 읽어낸 값을 격납하는 변수명
RootKey 「HKEY_LOCAL_MACHINE」 「HKEY_USERS」 「HKEY_CURRENT_USER」 「HKEY_CLASSES_ROOT」 「HKEY_CURRENT_CONFIG」의 어떤 것인가.「HKLM」(와)과 같은 단축명도 가능.
리모트의 레지스트리에 액세스 하고 싶은 경우, 「\\workstation01:HKEY_LOCAL_MACHINE」(와)과 같이 컴퓨터명과 「:」(을)를 붙인다.
SubKey 서브 키의 이름
ValueName 값의 이름.
생략시는, 서브 키의 규정의 값.

ErrorLevel

성공시는 「0」, 실패시는 「1」.

Remarks

취급할 수 있는 값의 종류는 이하의 것만.

  • REG_SZ
  • REG_EXPAND_SZ
  • REG_MULTI_SZ
  • REG_DWORD
  • REG_BINARY

REG_DWORD(은)는 부호 없음 정수로서 읽어내진다.

REG_BINARY의 값은, 「01A9FF77......」(와)과 같은16진수열로서 읽어내진다.

REG_MULTI_SZ하LF(`n)단락의 텍스트로서 읽어내진다.

Windows9x계에서는,64KB이상의 내용은 취급할 수 없다.
또,REG_BINARY형식의 값으로는,OS에 관계없이64KB이상의 값은 취급할 수 없다.

registry-loop(을)를 사용하면, 복수의 키에 같은 조작을 실시할 수 있다.

Related

RegDelete, RegWrite, Registry-loop

Example(s)

RegRead, OutputVar, HKEY_LOCAL_MACHINE, SOFTWARE\Microsoft\Windows\CurrentVersion, ProgramFilesDir
MsgBox, Program files are in: %OutputVar%


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

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

RegisterCallback()

DllCall()그리고 호출한 함수등에서 스크립트내의 함수를 호출하기 위한 래퍼 함수를 생성해, 주소를 돌려준다

RegisterCallback("FunctionName" [, Options = "", ParamCount = FormalCount, EventInfo = Address])

Parameters

인수명설명
FunctionName 스크립트내의 함수명을 문자열치로서 지정한다.
Options 이하의 옵션을 반각 스페이스 단락으로 지정한다.
Fast
FunctionName그리고 지정한 함수를 실행할 때, 새로운 스렛드를 개시하지 않는 것에보다 , 처리 속도를 향상시킨다.
이 경우, 콜백 함수가 불려 가고 있었을 때에 실행되고 있던 스렛드의ErrorLevel(이)나A_LastError,LastFoundWindow등이 덧쓰기되어 버린다.
콜백 함수가 언제 불릴까 부정인 경우 등은, 지정해선 안 된다.
CDecl
호출 규약이 「CDecl」방식의 함수를 생성하고 싶은 경우로 지정한다.
ParamCount 함수가 받는 인수의 수를 지정한다.
생략시는,FunctionName의 함수에 정의되고 있는 필수의 인수와 같은 수가 된다. FunctionName(으)로 지정되어 있는 인수의 수보다 많거나, 필수의 인수의 수보다 적거나 해서는 안 된다.
EventInfo 작성된 콜백 함수로부터 스크립트의 함수가 불릴 때A_EventInfo변수에 격납되는 값을 지정한다.
생략시는, 콜백 함수의 주소가 된다.
A_EventInfo변수는,Options에Fast하지만 지정되어 있어도, 기존 스렛드의 변수를 덧쓰기하지 않는다.

돌아가 값

성공했을 경우, 작성한 함수의 주소를 돌려준다.
FunctionName그리고 지정한 함수가 존재하지 않거나, 인수의 수나 형식에 문제가 있었을 경우 등은, 하늘의 문자열이 돌려주어진다.

Remarks

콜백 함수는,DllCall()그리고 호출하는 함수의 인수에 함수의 주소를 건네주지 않으면 안 되는 경우 등에 사용한다.
DLL의 함수로부터 콜백 함수가 불려 가면,FunctionName그리고 지정한 함수가AutoHotkey에 의해서 실행된다.

FunctionName그리고 지정하는 함수에는, 최대31개까지의 인수를 정의할 수 있다.
생략 가능 인수를 사용하면,ParamCount(이)가 다른 콜백 함수로부터 같은 함수를 호출할 수 있도록(듯이) 할 수 있다.
ByRef인수는 사용할 수 없다.

인수는, 어떠한 형태여도,4아르바이트 부호 없음 정수(0~4294967295)에 변환된다.
본래의 형태가 부호 정수인 경우는, 「(param>0x7FFFFFFF)?-(~param+1):param」(와)과 같은 식에서 복원할 수 있다.
본래의 형태가 문자열치인 경우는, 아래와 같은 코드로 내용을 꺼낼 수 있다.

VarSetCapacity(MyString, DllCall("lstrlen", UInt, MyParameter))
DllCall("lstrcpy", Str, MyString, UInt, MyParameter)

FunctionName그리고 지정한 함수는,return그리고-2147483648~4294967295의 정수를 돌려줄 수 있다.
부의 값은,4아르바이트 부호 없음 정수로서 다루어져 그 이외는4아르바이트 부호 없음 정수로서 다루어진다.
유효한 수치를 돌려주지 않았던 경우, 콜백 함수의 반치는0(이)가 된다.

함수의 최초로Critical커멘드를 실행하는 것으로, 함수 실행중에 다른 스렛드가 끼어드는 것을 억제할 수 있다

콜백 함수를 하나 생성할 때 마다,32아르바이트 정도의 메모리를 소비한다.
불특정 다수의 콜백 함수를 생성하는 경우는, 불필요하게 된 시점에서 「DllCall("GlobalFree", UInt, MyCallBackFunc)」(와)과 같이 해 해방하는 것.

Related

DllCall(), OnMessage(), OnExit, OnClipboardChange, Sort's callback, Critical, Post/SendMessage, Functions Threads

; Example: The following is a working script that displays a summary of all top-level windows.

; For performance and memory conservation, call RegisterCallback() only once for a given callback:
if not EnumAddress  ; Fast-mode is okay because it will be called only from this thread:
    EnumAddress := RegisterCallback("EnumWindowsProc", "Fast")

DetectHiddenWindows On  ; Due to fast-mode, this setting will go into effect for the callback too.

; Pass control to EnumWindows(), which calls the callback repeatedly:
DllCall("EnumWindows", UInt, EnumAddress, UInt, 0)
MsgBox %Output%  ; Display the information accumulated by the callback.
    
EnumWindowsProc(hwnd, lParam)
{
    global Output
    WinGetTitle, title, ahk_id %hwnd%
    WinGetClass, class, ahk_id %hwnd%
    if title
        Output .= "HWND: " . hwnd . "`tTitle: " . title . "`tClass: " . class . "`n"
    return true  ; Tell EnumWindows() to continue until all windows have been enumerated.
}

 

; Example: The following is a working script that demonstrates how to subclass a GUI window by
; redirecting its WindowProc to a new WindowProc in the script. In this case, the background
; color of a text control is changed to a custom color.

TextBackgroundColor := 0xFFBBBB  ; A custom color in BGR format.
TextBackgroundBrush := DllCall("CreateSolidBrush", UInt, TextBackgroundColor)

Gui, Add, Text, HwndMyTextHwnd, Here is some text that is given`na custom background color.
Gui +LastFound
GuiHwnd := WinExist()

WindowProcNew := RegisterCallback("WindowProc", ""  ; "" to avoid fast-mode for subclassing.
    , 4, MyTextHwnd)  ; Must specify exact ParamCount when EventInfo parameter is present.
WindowProcOld := DllCall("SetWindowLong", UInt, GuiHwnd, Int, -4  ; -4 is GWL_WNDPROC
    , Int, WindowProcNew, UInt)  ; Return value must be set to UInt vs. Int.

Gui Show
return

WindowProc(hwnd, uMsg, wParam, lParam)
{
    Critical
    global TextBackgroundColor, TextBackgroundBrush, WindowProcOld
    if (uMsg = 0x138 && lParam = A_EventInfo)  ; 0x138 is WM_CTLCOLORSTATIC.
    {
        DllCall("SetBkColor", UInt, wParam, UInt, TextBackgroundColor)
        return TextBackgroundBrush  ; Return the HBRUSH to notify the OS that we altered the HDC.
    }
    ; Otherwise (since above didn't return), pass all unhandled events to the original WindowProc.
    return DllCall("CallWindowProcA", UInt, WindowProcOld, UInt, hwnd, UInt, uMsg, UInt, wParam, UInt, lParam)
}

GuiClose:
ExitApp


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

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

RegExReplace()

문자열중의 정규 표현 패턴에 일치하는 개소를 다른 문자열에 치환해 돌려준다

RegExReplace(Haystack, NeedleRegEx [, Replacement = "", OutputVarCount = "", Limit = -1, StartingPos = 1])

Parameters

인수명설명
Target치환 대상이 되는 문자열
Pattern 검색·치환하는 정규 표현 패턴.자세한 것은정규 표현의 항을 참조.
옵션은 패턴의 전에 「)」(으)로 단락지어 기술한다(례:「im)\.jpe?g$」)
옵션이 없는 경우는, 「)」(은)는 불요.(례:「\.JPE?G$」)
Replacement 패턴에 일치한 개소에 대신해에 삽입하는 문자열을 지정.
이하의 것이 포함되어 있는 경우, 해당하는 문자열이 파묻힌다.
$0
정규 표현 전체에 매치한 문자열
$1...$9
${1}...${99}
(...)」(으)로 그룹화 된 정규 표현에 마지막에 매치한 문자열
「(」의 기술된 차례로 「1」(으)로부터 번호가 차여 간다
${name}
(?P<name>...)」(으)로 이름 그룹화 된 정규 표현에 마지막에 매치한 문자열
$U{name}
name그리고 지정된 서브 매치 문자열의 알파벳을 모두 대문자로 변환한 것
name에는0~99의 숫자도 사용할 수 있다.
$L{name}
name그리고 지정된 서브 매치 문자열의 알파벳을 모두 소문자로 변환한 것
$T{name}
각 서브 매치 문자열내의 각 단어의 선두의 알파벳을 대문자에, 나머지의 알파벳을 소문자로 변환한 것
$$
단순한 「$」
다만, 상술의 서브 매치 표현과 오인식 될 가능성이 없는 것은, 이와 같이 이스케이프 하지 않아도 되다.
OutputVarCount 치환을 한 수를 격납하는 변수를 지정한다
Limit 치환을 실시하는 회수의 상한을 지정한다.
「-1」(을)를 지정하면, 존재하는 모든 일치 개소가 치환된다. 「1」이상의 정수를 지정하면, 선두로부터 지정한 수까지의 일치 개소만이 치환된다.
StartingPos Target안에서의 검색을 개시하는 위치.선두는 「1」.
Target의 문자수보다 큰 값을 지정했을 경우는, 하늘의 문자열(Target의 마지막0문자의 범위)에 대해 검색·치환을 한다(통상은 어디도 치환되지 않는다).
0이하의 값을 지정했을 경우는, 문자열의 말미로부터 지정 문자 몇분의 범위가 검색된다.
예를 들면, 「0」(을)를 지정했을 경우는, 문자열의 마지막1문자만이, 「-1」(을)를 지정했을 경우, 뒤의2문자가 검색된다.
Target의 길이를 넘는 경우는,Target전체가 검색된다.
생략시는 「1」(Target의 선두로부터 검색).

돌아가 값

치환한 후의 문자열
어떠한 에러가 발생했을 경우는,Target하지만 그대로 돌아간다.

ErrorLevel

정상적으로 검색·치환을 했을 경우는, 「0」.
에러로 검색·치환을 하지 않았던 경우는, 이하의 값이 된다.

Compile error N at offset M:Description
정규 표현의 문법 에러. N(은)는 에러 번호,M(은)는 문제의 발생한 개소(Pattern의 선두가 「1」),Description(은)는 간단한 설명.
그 외의 부의 수치
매치 처리중에 발생한 에러.
정규 표현 자체는 올바르지만, 처리에 필요한 메모리가 확보 다 할 수 없는등의 문제가 있었을 때에 발생한다.

Related

RegExMatch(), SetTitleMatchMode RegEx, StringReplace, InStr()

Examples

NewStr := RegExReplace("abc123123", "123$", "xyz")  ; Returns "abc123xyz" because the $ allows a match only at the end.
NewStr := RegExReplace("abc123", "i)^ABC")  ; Returns "123" because a match was achieved via the case-insensitive option.
NewStr := RegExReplace("abcXYZ123", "abc(.*)123", "aaa$1zzz")  ; Returns "aaaXYZzzz" by means of the $1 backreference.
NewStr := RegExReplace("abc123abc456", "abc\d+", "", ReplacementCount)  ; Returns "" and stores 2 in ReplacementCount.


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

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

RegExMatch()

문자열중으로부터 정규 표현 패턴에 일치하는 개소를 검색해, 위치를 돌려준다

RegExMatch(Target, Pattern [, OutputVar = "", StartingPos = 1])

Parameters

인수명설명
Target 검색 대상이 되는 문자열
Pattern 검색하는 정규 표현 패턴.자세한 것은정규 표현의 항을 참조.
옵션은 패턴의 전에 「)」(으)로 단락지어 기술한다(례:「im)\.jpe?g$」)
옵션이 없는 경우는, 「)」(은)는 불요.(례:「\.JPE?G$」)
OutputVar 「()」등에서 둘러싸인 식 집합 매치한 서브 매치 문자열을 격납하는 변수를 지정한다.
이 변수 자체에는, 정규 표현 전체가 매치한 내용이 격납된다.
이 변수의 이름의 후에, 「(」의 출현순서에 대응한 번호를 붙인 이름의 변수에, 그 「()」 안의 정규 표현에 일치한 문자열이 격납된다.
성냥 하지 않았던 것에 대해서는, 길이0의 문자열이 된다.
예를 들면, 「RegExMatch("2006-11-06","(\d\d\d\d)-(\d\d)-(\d\d)",$)」라고 하면, 「$」변수에는 「2006-11-06」(이)가, 「$1」변수에는 「2006」(이)가, 「$2」변수에는 「11」(이)가, 「$3」변수에는 「06」(이)가 격납된다.
이름 포획식 집합을 사용했을 경우는, 차례를 나타내는 숫자 대신에 그 이름이 사용된다.이 경우, 번호 자체는 늘려지지만, 번호에 대응하는 변수에는 값이 격납되지 않는다.
예를 들면, 「RegExMatch("2006-11-06","(?P<Year>\d{4})-(\d{2})-(\d{2})",$)」라고 하면, 「$Year」변수에는 「2006」(이)가, 「$2」변수에는 「11」(이)가, 「$3」변수에는 「06」(이)가 격납된다.「$1」변수에는 어떤 변화도 일어나지 않고, 전의 값이 유지된다.
StartingPos Target안에서의 검색을 개시하는 위치.선두는 「1」.
Target의 문자수보다 큰 값을 지정했을 경우는, 하늘의 문자열(Target의 마지막0문자의 범위)에 대해 검색을 한다(통상은 아무것도 성냥 하지 않는다).
0이하의 값을 지정했을 경우는, 문자열의 말미로부터 지정 문자 몇분의 범위가 검색된다.
예를 들면, 「0」(을)를 지정했을 경우는, 문자열의 마지막1문자만이, 「-1」(을)를 지정했을 경우, 뒤의2문자가 검색된다.
Target의 길이를 넘는 경우는,Target전체가 검색된다.
생략시는 「1」(Target의 선두로부터 검색).

RegExMatch()고유의 옵션

Pattern의 최초로 부가할 수 있는 옵션중,RegExMatch()만으로 유효한 것은 이하와 같다.
RegExReplace()(와)과 공통의 것에 대해서는,정규 표현의 항을 참조.

P
OutputVar변수군에게 격납되는 정보를, 매치한 문자열 자체가 아니고, 문자열의 출현 위치와 길이로 한다.
OutputVar자체는, 정규 표현 전체가 매치한 길이가 된다.
각 서브 매치 문자열의Target선두로부터 센 위치가 「OutputVarPos1」 「OutputVarPos2」 등에, 각 서브 매치 문자열의 길이가 「OutputVarLen1」 「OutputVarLen2」 등에 격납된다.
이름 포획식 집합을 사용했을 경우는, 「OutputVarPosYear」 「OutputVarLenYear」 등에 격납된다.
성냥 하지 않았던 것에 대해서는, 위치·사이즈 모두 「0」(이)가 된다.
예를 들면RegExMatch("2006-11-06","P)(?P<Year>\d{4})-(\d{2})-(\d{2})",Match)(으)로 하면, 「Match」에는 「10」(이)가, 「MatchPosYear」에 「1」(이)가, 「MatchLenYear」에 「4」(이)가, 「MatchPos2」에 「6」(이)가, 「MatchLen2」에 「2」(이)가, 「MatchPos3」에 「9」(이)가, 「MatchLen3」에 「2」(이)가 격납된다.

돌아가 값

Target의 선두로부터 센, 패턴에 일치하는 개소의 제일 최초의 출현 위치.
문자열의 선두는 「1」.
발견되지 않았던 경우는 「0」(이)가 된다.
에러로 검색을 하지 않았던 경우는, 길이 제로의 문자열이 된다.

ErrorLevel

정상적으로 검색을 했을 경우는, 「0」.
에러로 검색을 하지 않았던 경우는, 이하의 값이 된다.

Compile error N at offset M:Description
정규 표현의 문법 에러. N(은)는 에러 번호,M(은)는 문제의 발생한 개소(Pattern의 선두가 「1」),Description(은)는 간단한 설명.
그 외의 부의 수치
매치 처리중에 발생한 에러.
정규 표현 자체는 올바르지만, 처리에 필요한 메모리가 확보 다 할 수 없는등의 문제가 있었을 때에 발생한다.

Related

RegExReplace(), InStr(), IfInString, StringGetPos, SetTitleMatchMode RegEx

Examples

FoundPos := RegExMatch("xxxabc123xyz", "abc.*xyz")  ; Returns 4, which is the position where the match was found.
FoundPos := RegExMatch("abc123123", "123$")  ; Returns 7 because the $ requires the match to be at the end.
FoundPos := RegExMatch("abc123", "i)^ABC")  ; Returns 1 because a match was achieved via the case-insensitive option.
FoundPos := RegExMatch("abcXYZ123", "abc(.*)123", SubPat)  ; Returns 1 and stores "XYZ" in SubPat1.
FoundPos := RegExMatch("abc123abc456", "abc\d+", "", 2)  ; Returns 7 instead of 1 due to StartingPos 2 vs. 1.


AutoHotKey(오토핫키) 설명서 RegDelete

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

RegDelete

레지스트리의 키나 값을 삭제한다

RegDelete, RootKey, SubKey [, ValueName]

Parameters

인수명설명
RootKey 「HKEY_LOCAL_MACHINE」 「HKEY_USERS」 「HKEY_CURRENT_USER」 「HKEY_CLASSES_ROOT」 「HKEY_CURRENT_CONFIG」의 어떤 것인가.「HKLM」(와)과 같은 단축명도 가능.
리모트의 레지스트리에 액세스 하고 싶은 경우, 「\\workstation01:HKEY_LOCAL_MACHINE」(와)과 같이 컴퓨터명과 「:」(을)를 붙인다.
SubKey 서브 키의 패스
ValueName 삭제하는 값의 이름.
생략시는, 서브 키 전체가 삭제된다.
「AHK_DEFAULT」(을)를 지정하면, 서브 키의 규정의 값이 삭제된다.

ErrorLevel

성공시는 「0」, 실패시는 「1」.

Remarks

레지스트리의 삭제는 위험을 수반하기 위해, 신중하게 실시하는 것.

registry-loop(을)를 사용하면, 복수의 키에 같은 조작을 실시할 수 있다.

Related

RegRead, RegWrite, Registry-loop

Example(s)

 RegDelete, HKEY_LOCAL_MACHINE, Software\SomeApplication, TestValue


AutoHotKey(오토핫키) 설명서 Random

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

Random

의사 난수를 생성

Random, OutputVar [, Min, Max]
Random,,NewSeed

Parameters

인수명설명
OutputVar 결과의 출력처의 변수명.
부동 소수점수(실수)의 표현 형식은SetFormat커멘드로 설정할 수 있다.
Min 결과의 최소치.
생략시는 「0」
부의 값도 가능.
정수의 경우, 「-2147483648」까지 가능.
소수의 경우, 하한은 없다.
Max 결과의 최대치.
생략시는 「2147483648」
정수의 경우, 「2147483648」까지 가능.
소수의 경우, 하한은 없다.
NewSeed 제1인수를 생략 해 제2인수에 수치를 지정했을 경우, 난수 생성에 사용되는 배정을 설정할 수 있다.
같은 배정을 설정해 똑같이Random커멘드를 실행했을 경우, 얻을 수 있는 값은 반드시 같게 된다.
예를 들면, 이하의 스크립트는, 몇 번 실행해도 반드시 같은 표시가 된다.
Random,,1000
Loop,10{
	Random,r,0,10000
	s=%s%%r%`n
}
MsgBox,%s%
스크립트 개시시는,100나노초단위의 현재 시각을 나타내는 수치가 배정에 사용된다.

Remarks

Min(와)과Max그리고 설정한 수의 사이에 있는 랜덤인 수치를OutputVar변수에 격납한다.

Max인가Min에 소수점을 포함한 수치가 지정되었을 경우, 결과는SetFormat커멘드로 설정한 포맷의 소수가 된다.
그 이외의 경우는, 정수가 된다.

Related

SetFormat

Example(s)

Random, rand, 1, 10
Random, rand, 0.0, 1.0 

Comments based on the original source

This function uses the Mersenne Twister random number generator, MT19937, written by Takuji Nishimura and Makoto Matsumoto, Shawn Cokus, Matthe Bellew and Isaku Wada.

The Mersenne Twister is an algorithm for generating random numbers. It was designed with consideration of the flaws in various other generators. The period, 219937-1, and the order of equidistribution, 623 dimensions, are far greater. The generator is also fast; it avoids multiplication and division, and it benefits from caches and pipelines. For more information see the inventors' web page at http://www.math.keio.ac.jp/~matumoto/emt.html

Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. The names of its contributors may not be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Do NOT use for CRYPTOGRAPHY without securely hashing several returned values together, otherwise the generator state can be learned after reading 624 consecutive values.

When you use this, send an email to: matumoto@math.keio.ac.jp with an appropriate reference to your work. It would be nice to CC: rjwagner@writeme.com and Cokus@math.washington.edu when you write.

This above has been already been done for AutoHotkey, but if you use the Random command in a publicly distributed application, consider sending an e-mail to the above people to thank them for their efforts and generosity.


AutoHotKey(오토핫키) 설명서 Progress / SplashImage

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

Progress / SplashImage

progress bar나 스플래쉬 이미지의 윈도우를 표시·갱신한다

Progress, Off
Progress, Sow
Progress, ProgressParam1 [, SubText, MainText, WinTitle, FontName, FutureUse]

SplashImage, Off
SplashImage, Show
SplashImage [, ImageFile, Options, SubText, MainText, WinTitle, FontName, FutureUse]

Parameters

인수명설명
ImageFile 화상 파일명.
대응 형식은BMP/GIF/JPEG.
상대 패스로 지정했을 경우,%A_WorkingDir%이하로부터 검색된다.
ImageFile(와)과Options하지만 생략 되었을 경우, 화상은 갱신되지 않는다.
윈도우를 최초로 표시할 때, 화상의 읽어들여에 실패하면, 화상 없이 표시된다.
ProgressParam1 후술의 옵션 문자열인가, progress bar의 진행도(0...100)(을)를 지정한다.
Options 후술의 옵션 문자열을 지정한다
SubText 바나 화상아래에 표시되는 텍스트를 지정.
기존의 윈도우의 텍스트를 소거하려면 「%A_Space%」(을)를 지정한다.
MainText 바나 화상 위에 표시되는 텍스트를 지정.
생략시는, 텍스트 표시 영역은 확보되지 않는다.
SubText(이)나MainText의 행수가 바뀌어도, 윈도우가 재생성되지 않는 한 윈도우의 높이는 변하지 않다.
WinTitle 윈도우의 타이틀을 설정.
디폴트는 스크립트명.
옵션에 「B」(이)가 포함되는 경우, 타이틀 바는 표시되지 않지만,WinMove커멘드등에서 윈도우를 검색할 경우에는 여기서 지정한 타이틀을 사용할 수 있다.
FontName MainText(와)과SubText그리고 사용하는 폰트를 지정.
생략시나, 지정한 폰트가 발견되지 않는 경우는, 시스템의 디폴트GUI폰트가 사용된다.
FutureUse 장래의 확장을 위해서 확보되고 있다.

옵션

Param1(이)나Options에는, 이하의 옵션을 열거한다.
반각 스페이스에서 단락지어도, 모두 연결하고 써도 괜찮다.

윈도우 설정

A
윈도우를 맨 앞면표시로 하지 않는다
B
윈도우의 테두리와 타이틀 바를 표시하지 않는다
B1
윈도우의 타이틀 바를 표시하지 않는다
B2
윈도우의 테두리를 다이얼로그 형식으로 한다
M
윈도우를 이동 가능하게 한다.
Pn
n에 초기치를 지정.
Rl-r
좌단의 값과 우단의 값을 지정.
예를 들어, 「R0-1000」라고 하면,0(으)로부터1000의 범위가 된다.
「R-50-50」(이)나 「R50--50」(와)과 같이,l(이)나r에 부의 값을 지정할 수도 있다.
M1
윈도우를 이동 가능한 동시에 사이즈 가능하게 한다
M2
이동·리사이즈외, 최소화·최대화·닫는 것도 가능하게 한다
T
태스크바에 버튼을 표시
Hn
n에 윈도우의 테두리안의 영역의 높이를 지정.
지정하지 않는 경우, 텍스트의 행수등에서 자동적으로 계산된다.
Wn
n에 윈도우의 폭을 지정한다.
지정하지 않는 경우,SplashImage(은)는 화상의 폭을 바탕으로 계산된다.Progress의 경우,300(이)가 된다.
Xn
n에 윈도우의 횡좌표를 지정
Yn
n에 윈도우의 종좌표를 지정
Hide
작성시에 윈도우를 비표시로 한다.
Progress,Show」(으)로 표시 당한다.

오브젝트 배치

Cxy
텍스트를 centering로 할까.
x에SubText의 설정,y에MainText의 설정을 지정.
「0」(으)로 왼쪽 가지런히 해 「1」(으)로 centering.
ZHn
n에 화상이나 바의 높이를 지정.
화상의 경우, 디폴트는 화상의 실제의 높이.
바의 높이의 디폴트는20.
「-1」(을)를 지정하면, 화상의 종횡비를 유지하도록(듯이) 자동 조절된다.
ZWn
n에 화상의 폭을 지정.
생략시는 화상의 실제의 폭.
「-1」(을)를 지정하면, 화상의 종횡비를 유지하도록(듯이) 자동 조절된다.
ZXn
n에 옆의 마진의 폭을 지정.
바의 디폴트는10, 화상의 디폴트는0.
ZYn
n에 세로의 마진의 폭을 지정.
바의 디폴트는5, 화상의 디폴트는0.

폰트 설정

FMn
n에MainText의 font size를 지정.
FSn
n에SubText의 font size를 지정.
WMn
n에MainText의 폰트의 굵기를 지정.
1...1000의 사이.
디폴트는600.
WSn
n에SubText의 폰트의 굵기를 지정.
1...1000의 사이.
디폴트는400. 700(으)로 하면 「Bold」(이)가 된다.

색설정

n에는색의 이름인가,HTML그리고 사용되는RRGGBB형식의16진수를 지정한다.
생략시는 시스템의 디폴트 칼라.

이러한 옵션지정 하는 경우, 옵션은 반각 스페이스에서 단락지어 열거하는 것

CBn
바의 색
CTn
텍스트의 색
CWn
윈도우의 배경색.WinSet TransColor그리고 배경을 투과 시킬 수 있다.

Remarks

제일 인수에 「OFF」(을)를 지정하면, 윈도우는 파기된다.

Hide옵션월에 작성된 윈도우는, 제1인수에 「Show」(을)를 지정하는 것으로 표시시킬 수 있다.

스크립트는 최대10개의 진행 윈도우와10개의 스플래쉬 윈도우를 표시할 수 있다.
제일 인수의 전에 「:」(으)로 단락지어 윈도우 번호(1...10)(을)를 지정하면, 지정한 윈도우에 대해서 조작을 실시할 수 있다.
윈도우 번호가 지정되지 않았을 때는,1(이)가 된다.

데스크탑보다 큰 윈도우는, 자동적으로 데스크탑의 사이즈에 거둘 수 있다.

이 커멘드로 윈도우가 표시되어도, 스크립트는 정지하지 않고 그대로 다음의 처리가 실행된다.
WinSet(이)나WinMove커멘드로 윈도우 상태를 변경할 수 있다.

Gui커멘드를 사용하면, 보다 유연한 progress bar 표시가 가능.

Gui,+OwnDialogs(을)를 사용하는 것으로,GUI윈도우의 아이 윈도우로서 스플래쉬 윈도우를 표시할 수 있다.
부모가 된다GUI윈도우가 파기되면, 아이 윈도우도 파기된다.

Related

SplashTextOn, ToolTip

Example(s)

Progress, b w200, My SubText, My MainText, My Title
Progress, 50 ; Set the position of the bar to 50%.
Sleep, 4000 
Progress, Off

; Create a window just to display some 18-point Courier text:
Progress, m2 b fs18 zh0, This is the Text.`nThis is a 2nd line., , , Courier New

; Create a simple SplashImage window:
SplashImage, C:\My Pictures\Company Logo.gif

; Create a borderless SplashImage window with some large text beneath the image:
SplashImage, C:\My Pictures\Company Logo.gif, b fs18, This is our company logo. 
Sleep, 4000
SplashImage, Off

; Here is a working example that demonstrates how a Progress window can be
; overlayed on a SplashImage to make a professional looking Installer screen:
IfExist, C:\WINDOWS\system32\ntimage.gif, SplashImage, C:\WINDOWS\system32\ntimage.gif, A,,, Installation
Loop, %windir%\system32\*.*
{
	Progress, %a_index%, %a_loopfilename%, Installing..., Draft Installtion
	Sleep, 50
	IfEqual, a_index, 100, break
}


AutoHotKey(오토핫키) 설명서 Process

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

Process

특정의 프로세스가 존재하는지 체크하거나 우선도를 변경하거나 종료시키거나 한다

Process, Exist, PID-or-Name
Process, Close, PID-or-Name
Process, Priority, PID-or-Name, NewPriority
Process, Wait, PID-or-Name, Seconds
Process, WaitClose, PID-or-Name, Seconds

Parameters

인수명설명
Cmd

이하의 커멘드명의 어떤 것인지를 지정

Exist
PID-or-Name그리고 지정한 프로세스가 존재하면,ErrorLevel 에PID하지만 격납된다.
PID-or-Name하지만 생략 되었을 경우는, 스크립트 자신의PID하지만 격납된다.
Close
프로세스를 강제 종료한다.
Priority
프로세스의 우선도를 변경한다.
제2인수를 생략 하는 것으로,AutoHotkey자신의 프로세스 우선도를 변경할 수 있다.
제3인수에 설정하고 싶은 우선도를 지정한다.
우선도는 이하의 어떤 것인가.머리 글자 한 글자의 생략형이라도 좋다.
  • Realtime
  • High
  • AboveNormal
  • Normal
  • BelowNormal
  • Low
Wait
제3당겨 수로 지정한 초수(소수도 가능)까지, 일치하는 프로세스가 존재하게 되는 것을 기다린다.
제3당겨 수가 생략 되었을 경우, 프로세스가 존재하게 될 때까지 무한하게 기다린다.
프로세스가 발견되었을 경우는,ErrorLevel 에PID하지만 격납된다.
지정 시간이 경과했을 경우는, 「0」(이)가 된다.
WaitClose
제3당겨 수로 지정한 초수(소수도 가능)까지, 일치하는 프로세스가 하나도 존재하지 않게 되는 것을 기다린다.
제3당겨 수가 생략 되었을 경우, 프로세스가 존재하게 될 때까지 무한하게 기다린다.
지정 시간이 경과해도 일치하는 프로세스가 남아 있었을 경우,ErrorLevel에 일치하는 최초의 프로세스의PID하지만 들어간다.
프로세스가 존재하지 않게 되었을 경우,ErrorLevel(은)는 「0」(이)가 된다.
PID-or-Name 프로세스ID인가 프로세스명을 지정한다.
프로세스ID
프로세스 기동시에 할당해지는 고유의 번호.
Run(이)나WinGet,Process커멘드로 취득할 수 있다.
프로세스명
많은 경우, 프로세스명은 실행 파일명과 같게 된다.
복수의 이름이 일치하는 프로세스가 있었을 경우, 최초의 하나가 대상이 된다.

ErrorLevel

PID-or-Name에 매치하는 프로세스가 발견되어, 처리에 성공했을 경우는, 그 프로세스의PID(이)가 된다.
프로세스가 발견되지 않거나, 처리에 실패했을 경우는, 「0」(이)가 된다.
커멘드가WaitClose의 경우만, 지정 시간이 경과해도 일치하는 프로세스가 남아 있었을 경우 그 프로세스의PID(이)가 되어, 프로세스가 존재하지 않게 되었을 경우, 「0」(이)가 된다.

Remarks

Wait(와)과WaitClose(은)는,100밀리 세컨드 마다 지정 프로세스의 존재를 체크한다.
조건을 채우면 즉석에서 대기를 종료해,ErrorLevel(을)를 변경해, 스크립트의 다음의 행의 실행으로 옮긴다.
대기하고 있는 동안은, 다른스렛드하지만 끼어들 수 있다.

WindowsNT4.0그리고 이 커멘드를 실행하려면 ,PSAPI.DLL(AutoHotkey에 동고)하지만 필요.

Related

Run, WinGet, WinClose, WinKill, WinWait, WinWaitClose, IfWinExist

Example(s)

; Example #1:
Run Notepad.exe, , , NewPID
Process, priority, %NewPID%, High
MsgBox The newly launched notepad's PID is %NewPID%.
; Example #2:
Process, wait, Notepad.exe, 5.5
NewPID = %ErrorLevel%  ; Save the value immediately since ErrorLevel is often changed.
if NewPID = 0
{
	MsgBox The specified process did not appear within 5.5 seconds.
	return
}
; Otherwise:
MsgBox A matching process has appeared (Process ID is %NewPID%).
Process, priority, %NewPID%, Low
Process, priority, , High  ; Have the script set itself to high priority.
WinClose Untitled - Notepad
Process, WaitClose, %NewPID%, 5
if ErrorLevel <> 0 ; The PID still exists.
	MsgBox The process did not close within 5 seconds.

; Example #3: A hotkey to change the priority of the active window's process:
#z:: ; Win+Z hotkey
WinGet, active_pid, PID, A
WinGetTitle, active_title, A
Gui, 5:Add, Text,, Press ESCAPE to cancel, or double-click a new`npriority level for the following window:`n%active_title%
Gui, 5:Add, ListBox, vMyListBox gMyListBox r5, Normal|High|Low|BelowNormal|AboveNormal
Gui, 5:Add, Button, default, OK
Gui, 5:Show,, Set Priority
return

5GuiEscape:
5GuiClose:
Gui, Destroy
return

MyListBox:
if A_GuiControlEvent <> DoubleClick
	return
; else fall through to the next label:
5ButtonOK:
GuiControlGet, MyListBox
Gui, Destroy
Process, Priority, %active_pid%, %MyListBox%
if ErrorLevel = 0
	MsgBox Error: Its priority could not be changed to "%MyListBox%".
else
	MsgBox Success: Its priority was changed to "%MyListBox%".
return


AutoHotKey(오토핫키) 설명서 PostMessage / SendMessage

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

PostMessage / SendMessage

윈도우나GUI컨트롤에 윈도우 메세지를 송신한다.(SendMessage(은)는 응답을 기다려 결과를 취득할 수 있다)

PostMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]
SendMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]

Parameters

인수명설명
Msg 윈도우 메세지 번호.
일반적인 메세지의 일람에 대해서는,WinAPI Database for VB Programmer의 알파벳순서 표시 「W」의 항근처를 참조.
wParam 메세지의 인수.0혹은 생략 때는0하지만 보내진다.
lParam 메세지의 인수
Control 생략 혹은 공백 때는, 윈도우에 직접 메세지가 보내진다.
그 이외의 지정 방법은윈도우 지정의 방법참조.
WinTitle 윈도우 지정의 방법참조.
WinText
ExcludeTitle
ExcludeText

ErrorLevel

PostMessage

성공하면0, 윈도우가 발견되지 않는등의 문제가 발생하면1

SendMessage

윈도우가 발견되지 않는등의 문제가 발생하면 「FAIL」.
그 이외는, 메세지의 반환값(정수).
메세지의 종류야는은, 「reply」

Remarks

Msg,wParam,lParam인수에는0...4294967295의 수치를 지정한다.
0xFF(와)과 같이16진수로 지정하는 일도 가능.

WM_SETTEXT등에서wParam,lParam에 문자열을 건네주고 싶은 경우는, 「SendMessage, 0xC, 0, "New Title"」(와)과 같이 인수를 「"」(으)로 둘러싼다.
변수의 문자열을 건네주고 싶은 경우는, 「SendMessage, 0xC, 0, &NewTitle」(와)과 같이 변수명의 전에 「&」(을)를 붙인 것을 지정한다.

함부로 윈도우 메세지를 송신하면 불편이 발생하는 일이 있으므로 주의해 사용하는 것.

SendMessage커멘드는, 메세지를 송신 후 최대5초간 응답을 기다린다.
5초이내에 응답이 없었던 경우,ErrorLevel(은)는 「FAIL」(이)가 된다.
PostMessage커멘드는 메세지를 윈도우의 메시지 큐에 추가해 즉석에서 종료한다.

WinTitle에 「ahk_id 0xFFFF」(을)를 지정하면, 존재하는 모든 윈도우에 메세지를 송신한다.
Msg에 「0x1A」(WM_SETTINGCHANGE)등을 지정할 경우에 사용하면 좋다.

Related

Message List, Message Tutorial, Automating Winamp, ControlSend, WinMenuSelectItem

Example(s)

; Turn Monitor Off:
SendMessage, 0x112, 0xF170, 2,, Program Manager   ; 0x112 is WM_SYSCOMMAND, 0xF170 is SC_MONITORPOWER.
; Note for the above: Use -1 in place of 2 to turn the monitor on.
; Use 1 in place of 2 to activate the display's "low power" mode.
; Start the user's chosen screen saver:
SendMessage, 0x112, 0xF140, 0,, Program Manager   ; 0x112 is WM_SYSCOMMAND, and 0xF140 is SC_SCREENSAVE.
; Scroll up by one line (for a control that has a vertical scroll bar):
ControlGetFocus, control, A
SendMessage, 0x115, 0, 0, %control%, A
; Scroll down by one line:
ControlGetFocus, control, A
SendMessage, 0x115, 1, 0, %control%, A
; This example asks Winamp which track number is currently active:
SetTitleMatchMode, 2
SendMessage, 1024, 0, 120, - Winamp
if ErrorLevel <> FAIL
{
	ErrorLevel++  ; Winamp's count starts at "0", so adjust by 1.
	MsgBox, Track #%ErrorLevel% is active or playing.
}


AutoHotKey(오토핫키) 설명서 PixelSearch

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

PixelSearch

지정 범위로 지정한 색이 존재하면, 그 좌표를 취득한다

PixelSearch, [OutputVarX], [OutputVarY], X1, Y1, X2, Y2, ColorID [, Variation, Fast|RGB]

Parameters

인수명설명
OutputVarX , OutputVarY 발견되었을 경우X좌표와Y좌표가 격납되는 변수명.
생략 가능.
X1,Y1 검색 대상이 되는 구형의 좌상의 좌표.
통상은 액티브 윈도우의 좌상으로부터의 상대 좌표이지만,CoordMode커멘드를 사용하면 스크린 전체로의 좌표가 된다.
X2,Y2 검색 대상이 되는 구형의 우하의 좌표.
통상은 액티브 윈도우의 좌상으로부터의 상대 좌표이지만,CoordMode커멘드를 사용하면 스크린 전체로의 좌표가 된다.
ColorID 검색하는 칼라 코드.
RGB(을)를16진수로0BBGGRR되는 포맷으로 지정.
PixelGetColor그리고 취득할 수도 있다.
Variation RGB각 요소마다의 허용 하는 오차.
생략시는 「0」.
Fast|RGB 이하의 것을 반각 스페이스에서 단락지어 지정한다.
Fast
고속의 검색 방법을 사용한다.
시스템의 칼라 모드가8비트 미만의 경우 동작하지 않는다.
24비트나32비트 쪽이 보다 고속으로 된다.
통상의 방법이 세로 방향을 먼저 검색하는데 대해,Fast모드는 횡방향을 먼저 검색하기 위해(때문에), 발견되는 좌표가 바뀌는 경우가 있다.
RGB
ColorID하지만0xRRGGBB의 포맷으로 간주해진다.

ErrorLevel

색이 발견되면 「0」, 발견되지 않으면 「1」, 문제가 발생하고 있으면 「2」

Remarks

검색 대상으로 할 수 있는 것은, 화면에 표시되고 있는 부분 뿐이어서, 윈도우의 화면에서는 봐 내고 있는 부분등의 색은 취득할 수 없다.
다만, 마우스 커서아래의 색은 취득할 수 있다.

Fast모드를 사용하지 않는 경우, 우선X1,Y1의 좌표로부터X2의 방향으로 검색되어 다음에Y2의 방향으로1열이동해 검색한다고 하는 동작을X2,Y2하지만 검색될 때까지 반복한다.

너무 넓은 범위를 검색하면, 처리 부하가 커지므로 주의.

Related

PixelGetColor, ImageSearch, CoordMode, MouseGetPos

Example(s)

PixelSearch, Px, Py, 200, 200, 300, 300, 16777215, 3, Fast
if ErrorLevel = 0
	MsgBox, A color within 3 shades of variation was found at X%Px% Y%Py%.
else
	MsgBox, That color was not found in the specified region.