AutoHotKey(오토핫키) 설명서 PixelGetColor

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

PixelGetColor

지정 좌표에 표시되고 있는 색을 취득한다

PixelGetColor, OutputVar, X, Y [,Alt|SlowRGB]

Parameters

인수명설명
OutputVar 칼라 코드를 취득하는 변수명
X,Y 색을 취득하고 싶은 피크셀의 좌표.
통상은 액티브 윈도우의 좌상으로부터의 상대 좌표이지만,CoordMode커멘드를 사용하면 스크린 전체로의 좌표가 된다.
Alt|SlowRGB 이하의 옵션을 반각 스페이스에서 단락지어 열거한다
RGB
결과가 「0xRRGGBB」의 포맷으로 취득된다.
이 포맷은,WinSet,Gui,Progress,SplashImage그리고 사용된다.
Alt
다른 방식으로 취득을 실시한다.
통상의 방식에 비해 잘못된 값이 취득되는 케이스가 적게 되지만,10%만큼 늦어진다.
Slow
더욱 확실한 방식으로 취득을 실시한다.
일부의 풀 스크린 프로그램에 대응하기 위해서 필요.
통상의 방식에 비해3배 정도 늦다.

ErrorLevel

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

Remarks

값은6자리수의16진수로 취득된다.
각 형은 「0xBBGGRR」(와)과 같이RGB에 대응하고 있다.
Transform커멘드의BitAnd(와)과BitShiftRight(을)를 사용하면, 각 요소를 꺼낼 수 있다.

취득할 수 있는 것은, 화면에 표시되고 있는 부분 뿐이어서, 윈도우의 화면에서는 봐 내고 있는 부분등의 색은 취득할 수 없다.

Related

PixelSearch, CoordMode, MouseGetPos

Example(s)

^!z::
MouseGetPos, MouseX, MouseY
PixelGetColor, color, %MouseX%, %MouseY%
MsgBox, The color at the current cursor position is %color%.
return


AutoHotKey(오토핫키) 설명서 Pause

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

Pause

실행중의스렛드(을)를 정지한다

Pause [, Mode ,OperateOnUnderlyingThread]

Parameters

Mode하지만Off때나,Toggle때에 스렛드가 재개될 때는, 이 설정은 무효.
인수명설명
Mode 이하의 어떤 것인지를 지정.
Toggle|생략시
정지 스렛드가 있으면 재개, 없으면 정지
On
스렛드를 정지한다
Off
제일 최근 정지한 스렛드를 재개한다
OperateOnUnderlyingThread 「1」(을)를 지정하면, 현재의 스렛드가 아니고, 현재의 스렛드에 끼어들어지고 있던 스렛드를 정지한다.
이 경우, 본커멘드 실행 후, 스렛드의 나머지의 부분이 실행되어 스렛드가 종료해 끼어들어지고 있던 스렛드에 실행이 돌아온 시점에서 실행이 정지한다.
덧붙여 현재의 스렛드가 다른 스렛드에 끼어든 것이 아닌 경우, 스크립트 본체가 정지해, 타이머가 실행되지 않게 된다.

Remarks

Pause(을)를 실시하면, 현재의 스렛드의 처리를 정지한다.
현재의 스렛드에 끼어들어져 정지하고 있던 스렛드도 계속 그대로 정지한다.

Pause된 상태에서도, 새롭게 hot key나 메뉴 아이템으로부터 스렛드를 개시하는 것은 가능.
그러한 스렛드로부터 「Pause,Off」(을)를 실행해 처리를 재개시킨다.
다만, 타이머는 정지해, 타이머로 설정된 스렛드는 실행되지 않게 된다.

스크립트의 현재의 스렛드가Pause되면, task tray의 아이콘의 색이 빨강으로 바뀐다.
이 동작은, 「Menu,Tray,Icon,,,1」라고 하는 것으로 억제할 수 있다.

task tray의 메뉴로부터 「Pause Script」(을)를 실시해도,Pause할 수 있다.
덧붙여 트레이 메뉴나 메인 윈도우의 메뉴를 표시하고 있는 동안 스크립트는 정지하지만, 이것은Pause(와)과는 별개이다.

Related

Suspend, Menu, ExitApp, Threads

Example(s)

Pause::Pause ; Assign the toggle-pause function to the "pause" key.


AutoHotKey(오토핫키) 설명서 OutputDebug

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

OutputDebug

디버거에 문자열을 출력한다

OutputDebug, Text

Parameters

Text 출력하는 문자열

Remarks

AutoHotkey의 프로세스가 디버거에 아탓치 되고 있는 경우, 그 디버거에 디버그 문자열이 출력된다.
디버거로서는, 프리 소프트의DebugView등이 있다.

Examples

OutputDebug, %A_Now%: Because the window "%TargetWindowTitle%" did not exist, the process was aborted.


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

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

OnMessage()

GUI윈도우에 특정의 메세지가 보내졌을 때에 실행되는 함수를 할당한다

OnMessage(MsgNumber [, "FunctionName", MaxThreads])

Parameters

인수명설명
MsgNumber 감시·응답시키고 싶은 메세지의 번호
FunctionName 메세지를 받아들였을 때에 실행시키고 싶은 함수의 함수명을 문자열로서 지정한다
하늘의 문자열을 지정하면,MsgNumber에 대한 함수의 할당을 해제한다.
제2인수 이후를 생략 하면, 할당의 변경은 행해지지 않는다.
MaxThreads 메세지를 받아들여 함수를 실행중에 같은 메세지가 보내졌을 때, 스렛드 세치기에 의해서 실행할 수 있는 수의 상한을 지정한다.
생략시는 「1」.
끼어들어지지 않았던 경우는, 후술의 조건에 의해서 뒷전으로 될까 무시된다.
세치기를 허락하면, 메세지 이벤트가 시계열순서에 처리되지 않게 되기 위해, 통상은 변경하지 않는다.

FunctionName그리고 지정하는 함수

FunctionName([wParam,lParam,msg,hwnd])
{
}
인수설명
wParam메세지와 함께 보내진다WPARAM파라미터의 값이0...4294967296의 정수치로 주어진다
lParam메세지와 함께 보내진다LPARAM파라미터의 값이-2147483648...2147483647.의 정수치로 주어진다
msg보내진 메세지의 번호가 주어진다
hwnd메세지가 보내진 윈도우나 컨트롤의 윈도우 핸들이 주어진다

할당하는 함수는,4개의 인수를 받을 수 있다.
인수명은 자유롭게 적어 상관없다.
그 인수로 주어지는 정보가 필요없는 경우, 인수의 설정을 생략 해도 상관없다.

함수가 불려 갈 때 , 이하의 편입 변수에도 메세지를 받아들인 상황에 따른 값이 설정된다.
또,LastFoundWindow(은)는 메세지를 받아들인 윈도우(메세지가 컨트롤에 보내졌을 경우는, 그 친윈도우)(이)가 된다.

A_Gui
메세지를 받아들인 것이GUI윈도우나GUI윈도우상의 컨트롤이었던 경우,GUI윈도우의 번호가 격납된다.
AutoHotkey의 메인 윈도우 등, 그 이외의 윈도우였던 경우는 공문자열이 된다.
A_GuiControl
메세지를 받아들인 것이GUI윈도우상의 컨트롤이었던 경우, 그 컨트롤에 할당할 수 있었던 변수명(없으면 컨트롤의 텍스트)하지만 격납된다.
그 이외의 경우, 하늘의 문자열이 된다.
A_GuiX
A_GuiY
메세지가PostMessage에 의해서 보내졌을 경우, 각각 메세지가 보내졌을 때의 마우스 커서의 횡좌표와 종좌표가 격납된다.
메세지가SendMessage에 의해서 보내졌을 경우,-2147483648(이)가 된다.
A_EventInfo
메세지가PostMessage에 의해서 보내졌을 경우, 메세지가 보내진 시간이OS기동시부터의 경과 밀리 세컨드수로 격납된다.
이 값은,A_TickCount(와)과 비교해 사용할 수 있다.
메세지가SendMessage에 의해서 보내졌을 경우,0(이)가 된다.

함수는Return문장으로-2147483648(으)로부터4294967295까지의 값을 돌려줄 수 있다.
값을 돌려주었을 경우, 메세지에의 응답은 거기서 완료한다.
함수가 돌려주어야 할 값은, 메세지의 종류에 따라서 다르다.
아무것도 값을 돌려주지 않았던 경우,AutoHotkey의 통상의 처리를 한다.

돌아가 값

문제 없게 할당을 하면, 그것까지MsgNumber에 할당할 수 있고 있던 함수의 함수명이 돌려주어진다.
다만, 그것까지 아무것도 할당할 수 있지 않았던 경우, 새롭게 할당한 함수명 자체가 돌려주어진다.
지정된 함수가 존재하지 않거나, 설정된 인수가 잘못되어 있는 경우 등, 정상적으로 할당을 실시할 수 없었던 경우는, 공문자열이 돌려주어진다.
FunctionName(을)를 주지 않았던 경우, 현재 할당할 수 있고 있는 함수명이 돌려주어진다.이 경우, 함수를 할당할 수 있지 않으면, 공문자열이 돌려주어진다.

Remarks

메세지 이벤트에 의한 함수의 실행은, 현재 실행중의스렛드에 끼어들고, 신규 스렛드로서 실행된다.

AutoHotkey의 스크립트가 메뉴를 표시중이나,KeyDelay(이)나MouseDelay의 도중등에서 정지하고 있는 동안에 보내졌을 경우,
0x312차례 미만의 메세지에 할당할 수 있었던 이벤트는 무시된다.
0x312차례 이상의 메세지의 경우는, 뒷전으로 된다.

이벤트가 무시되었을 경우, 할당할 수 있었던 함수는 실행되지 않고, 통상의 메세지 응답을 한다.
이벤트가 뒷전으로 되었을 경우, 스크립트가 실행 가능하게 된 시점에서 실행된다.

MsgBox커멘드등에서 다이얼로그가 표시되고 있는 동안은, 윈도우상의 컨트롤에 대한 메세지는 무시된다.

같은 번호의 메세지 이벤트가 실행중이었던 경우,MaxThreads의 상한을 넘지 않으면, 실행중의 스렛드에 끼어들어 메세지 이벤트가 실행된다.
메세지가0x312차례 이상으로, 실행중의 스렛드가Critical상태였던 경우, 메세지 이벤트는 뒷전으로 된다
그 이외의 경우, 메세지 이벤트는 무시된다.

다른 메세지 이벤트인가, 메세지 이벤트 이외의 스렛드가 실행중에서, 스렛드가Critical상태이거나,Thread,Interrupt의 설정에 의한 세치기 금지 기간이었던 경우,
0x0~0x311차례의 메세지는 예외적으로 끼어들어진다.
0x312차례 이상의 메세지는 뒷전으로 된다.

메세지 응답 이벤트의 우선도는 항상0이기 위해, 실행중의 스렛드의 우선도가0보다 큰 경우, 모든 메세지는 무시된다.

0x0~0x311차례의 메세지 이벤트가 무시되지 않고 실행되듯이 하기 위해서는, 다음에 메세지가 체크되기 전에 메세지 이벤트가 종료하도록 하면 좋다.
짧은 처리의 경우는, 「Critical,30」(와)과 같이 해 메세지 체크 간격을 충분히 넓게 하면, 스렛드가 종료할 때까지 메세지가 체크되지 않고, 무시되는 일도 없어진다.
처리가 긴 경우는, 이하와 같이 하고, 다른0x312차례 이상의 메세지 이벤트를 호출해, 원의 스렛드는 즉석에서 종료하면 좋다.

MSG=0x000	;처리를 할당하고 싶은 메세지
OnMessage(MSG,"OnMSG")
OnMSG(w,l,m,h){
	PostMessage,0x4000,%w%,%l%,,ahk_id %h%
}
OnMessage(0x4000,"OnMSGMain")
OnMSGMain(w,l,m,h){
	Critical	;같은 메세지가 오면 뒷전으로 되도록(듯이) 한다
	/*
		여기서 시간이 걸리는 처리를 실행
		처리중에MSG차례의 메세지가 오면, 세치기로 이벤트가 발생해,
		0x4000차례의 메세지가 재발송신 되어 그 이벤트가 뒷전으로 실행된다
	*/
}

MsgNumber그리고 함수를 할당할 수 있는 메세지의 수는, 최대로500까지이다.
그 이상의 메세지에 응답하려고 하면, 이 함수는 실패한다.

OnMessage(을)를 사용하고 있는 스크립트는, 자동적으로상주 상태한편#SingleInstance(복수 실행 불가)(이)가 된다.

자작 프로그램끼리로 독자적인 메세지를 교환하고 싶은 경우는,Windows에 미리 정의된 메세지나AutoHotkey하지만 사용하는 메세지와 겹치지 않게0x1000(4096)차례 이후의 메세지 번호를 사용하는 것이 좋다.

GUI(을)를 가지지 않는다AutoHotkey의 스크립트에 메세지를 보내고 싶은 경우는,AutoHotkey의 메인 윈도우(ahk_class AutoHotkey)에 보내면 좋다.

일반적인 메세지의 일람에 대해서는,WinAPI Database for VB Programmer의 알파벳순서 표시 「W」의 항등이 자세하다.

Related

RegisterCallback(), OnExit, OnClipboardChange, Post/SendMessage, Functions, List of Windows Messages, DllCall(), Threads

Examples

; Example: Have a script receive a custom message from some other script or program.

OnMessage(0x5555, "MsgMonitor")
OnMessage(0x5556, "MsgMonitor")

MsgMonitor(wParam, lParam, msg)
{
	; Since returning quickly is often important, it is better to use a ToolTip than
	; something like MsgBox that would prevent the function from finishing:
	ToolTip Message %msg% arrived:`nWPARAM: %wParam%`nLPARAM: %lParam%
}

; The following could be used inside some other script to run the function inside the above script:
SetTitleMatchMode 2
DetectHiddenWindows On
ReceivingScript := WinExist("Name of Receiving Script.ahk ahk_class AutoHotkey")
if ReceivingScript
	PostMessage, 0x5555, 11, 22  ; Sends to the "last found window" due to WinExist() above.
DetectHiddenWindows Off  ; Must not be turned off until after PostMessage.

; Example: The following is a working script that monitors mouse clicks in a GUI window.
; See also: GuiContextMenu

Gui, Add, Text,, Click anywhere in this window.
Gui, Add, Edit, w200 vMyEdit
Gui, Show
OnMessage(0x201, "WM_LBUTTONDOWN")
return

WM_LBUTTONDOWN(wParam, lParam)
{
	X := lParam & 0xFFFF
	Y := lParam >> 16
	if A_GuiControl
		Control := "`n(in control " . A_GuiControl . ")"
	ToolTip You left-clicked in Gui window #%A_Gui% at client coordinates %X%x%Y%.%Control%
}

GuiClose:
ExitApp


AutoHotKey(오토핫키) 설명서 OnExit

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

OnExit

스크립트 종료시에 실행시키고 싶은 써브루틴을 지정한다

OnExit [, Label, FutureUse]

Parameters

인수명설명
Label 종료시에 실행시키고 싶은 써브루틴의 라벨명.
생략 하면, 종료시 써브루틴을 해제한다.
FutureUse 장래의 확장을 위해서 확보되고 있다.현재 이 인수는 무시된다.

Remarks

OnExit그리고 써브루틴을 지정하면, 스크립트를 종료하는 대신에 지정한 써브루틴이 실행된다.
실제로 스크립트를 종료하려면 , 써브루틴내에서ExitApp커멘드를 실행할 필요가 있다.
OnExit써브루틴내에서ExitApp(을)를 실행했을 경우, 그 자리에서 스크립트는 종료한다.

OnExit써브루틴은, 스렛드수의 상한이나 세치기의 설정에 관계없이 반드시 끼어들어 실행된다.

OnExit써브루틴내에서 에러가 발생했을 경우, 스크립트는 그대로 종료한다.

OnExit써브루틴이 설정된 상태로Exit(이)나ExitApp(을)를 종료 코드를 지정해 실행했을 경우, 그 코드는 무시된다.
OnExit써브루틴내에서 재차 코드를 지정해ExitApp(을)를 실행하면, 종료 코드 돌출해 종료할 수 있다.

A_ExitReason변수로 제일 최근OnExit써브루틴이 실행되었을 때의 종료 이유를 참조할 수 있다.
한번도OnExit써브루틴이 실행되어 있지 않을 때는,A_ExitReason(은)는 비운다.
A_ExitReason하지만 취할 수 있는 값은 이하의 어떤 것인가.

Logoff 유저가 로그 오프 하려고 하고 있다
Shutdown 시스템이 슛다운 하려고 하고 있다
Close WM_CLOSE(이)나WM_QUIT메세지가 메인 윈도우에 보내졌다
Error 스크립트가 상주 상태가 되어 있지 않고, 어떠한 에러가 발생했다
Menu 메뉴의 표준 항목의 「Exit」(을)를 실행해 종료하려고 했을 때
Exit Exit(이)나ExitApp커멘드로 종료하려고 했다
Reload 스크립트가Reload커멘드나 메뉴 아이템으로 재독 봐 하게 할 때
Single #SingleInstance(으)로 지정된 스크립트가 새롭게 기동되고, 전의 프로세스가 종료될 때

Related

ExitApp, RegisterCallback(), Shutdown, #Persistent, Threads, Gosub, Return, Menu

Example(s)

#Persistent  ; For demonstration purposes.
OnExit, ExitSub
return

ExitSub:
if A_ExitReason <> Logoff
	if A_ExitReason <> Shutdown
	{
		MsgBox, 4, , Are you sure you want to exit?
		IfMsgBox, No, return
	}
ExitApp


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

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

NumPut()

메모리상의 지정 주소에 정수치를 쓴다

NumPut(Number, Var|Addr [, Offset = 0, Type = "UInt"])

Parameters

인수명설명
Number쓰는 수치
Var|Addr 변수를 지정했을 경우, 그 변수에 할당할 수 있었던 메모리 영역이 대상이 된다(「&VarName」(와)과 같이 지정하는 것과 같다).
수치나 식을 지정했을 경우는, 그 수치의 주소에 써진다. 변수에 격납되고 있는 주소를 지정하고 싶은 경우는, 「VarName+0」(와)과 같이, 값의 변하지 않는 연산을 실시하면 좋다.
Offset Var|Addr그리고 지정한 영역으로부터의 오프셋을 아르바이트수로 지정한다.
「NumGet(MyVar,4)」라고 하면,MyVar변수의 메모리 영역의 선두로부터4아르바이트 파견한 위치에 써진다.
Type 값의 데이터형을 지정한다.
「"UInt"」 「"Int"」 「"Int64"」 「"Short"」 「"UShort"」 「"Char"」 「"UChar"」 「"Double"」 「"Float"」의 어느쪽이든을 지정한다.
각각의 의미는,DllCall()(을)를 참조.
다만,DllCall()(와)과 달라, 인용부호를 생략 해 지정하는 것은 할 수 없다.

Related

DllCall()


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

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

NumGet()

메모리상의 지정 주소로부터 정수치를 읽어낸다

NumGet(Var|Addr [, Offset = 0, Type = "UInt"])

Parameters

인수명설명
Var|Addr 변수를 지정했을 경우, 그 변수에 할당할 수 있었던 메모리 영역이 대상이 된다(「&VarName」(와)과 같이 지정하는 것과 같다).
수치나 식을 지정했을 경우는, 그 수치의 주소로부터 읽어내진다. 변수에 격납되고 있는 주소를 지정하고 싶은 경우는, 「VarName+0」(와)과 같이, 값의 변하지 않는 연산을 실시하면 좋다.
Offset Var|Addr그리고 지정한 영역으로부터의 오프셋을 아르바이트수로 지정한다.
「NumGet(MyVar,4)」라고 하면,MyVar변수의 메모리 영역의 선두로부터4아르바이트 파견한 위치의 값이 읽어내진다.
Type 읽어내는 값의 데이터형을 지정한다.
「"UInt"」 「"Int"」 「"Int64"」 「"Short"」 「"UShort"」 「"Char"」 「"UChar"」 「"Double"」 「"Float"」의 어느쪽이든을 지정한다.
각각의 의미는,DllCall()(을)를 참조.
다만,DllCall()(와)과 달라, 인용부호를 생략 해 지정하는 것은 할 수 없다.

Related

DllCall()


AutoHotKey(오토핫키) 설명서 MsgBox

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

MsgBox

메세지 다이얼로그를 표시한다.다양한 버튼을 표시하거나 타임 아웃을 지정하는 일도 가능.

MsgBox, Text
MsgBox [, Options, Title, Text, Timeout]

Parameters

인수명설명
Text 다이얼로그에 표시하는 메세지.
「`n」(으)로 개행을 포함한 내용도 표시할 수 있다.
모든 인수가 생략 되었을 경우, 「Press OK to continue.」라고 하는 메세지가 표시된다.
인수가Text만의 형식의 경우, 콤마를이스케이프할 필요는 없다.
Options 표시하는 버튼이나, 그 외의 설정을 지정한다.
자세한 것은Remarks참조.
생략시는 「0」.
Title 다이얼로그의 타이틀.
생략시는 스크립트명.
Timeout 응답의 시간제한을 초수로 지정.최대는 「2147483」(24.8일)그리고, 이것을 넘었을 경우는 이 값이 된다.
이 시간을 경과하면, 윈도우는 자동적으로 닫는다.

Remarks

Options인수로, 표시하는 버튼, 아이콘, 최초로 포커스가 있는 버튼, 맨 앞면인지 어떤지를 설정할 수 있다.
아래와 같은 수의 화를 지정한다.

버튼
버튼
「OK」 0
「OK」 「캔슬」 1
「중지」 「재시행」 「무시」 2
「네」 「아니오」 「캔슬」 3
「네」 「아니오」 4
「재시행」 「캔슬」 5
「캔슬」 「재시행」 「속행」 6
아이콘
아이콘
「×」 16
「?」 32
「!」 48
「i」 64
최초로 액티브한 버튼
버튼
2번째의 버튼 256
3번째의 버튼 512
맨 앞면
설정
맨 앞면 4096
다른 윈도우를 정지해 맨 앞면(무효의 경우 있어) 8192

IfMsgBox커멘드로, 어느 버튼이 밀렸는지나, 제한 시간이 경과했는지를 판별할 수 있다.

Gui,+OwnDialogs(을)를 사용하는 것으로,GUI윈도우의 아이 윈도우로서 다이얼로그를 표시할 수 있다.
아이 윈도우로서 다이얼로그가 표시되고 있는 동안은, 부모가 된다GUI윈도우는 조작할 수 없게 된다.

Options에 「16384」(을)를 더하면, 「헬프」버튼이 추가된다.
Gui,+OwnDialogs(을)를 사용하고 있는 경우, 헬프 버튼이 밀리면Gui윈도우에WM_HELP(0x53)메세지가 보내진다.OnMessage()함수로 메세지 처리 함수를 할당해 두는 것으로, 헬프 버튼 눌러 인하에 응답할 수 있다.

Related

IfMsgBox, InputBox, FileSelectFile, FileSelectFolder, ToolTip

Example(s)

MsgBox, This is the 1-param method.  Commas, do, not, need to be escaped.
MsgBox, 4, , This is the 3-param method, non-escaped commas ok.`n`nContinue?
IfMsgBox, No
	return
MsgBox, 4, , This MsgBox will time out in 5 seconds.  Continue?, 5
IfMsgBox, Timeout
	MsgBox, The previous MsgBox timed out.
else IfMsgBox, No
	return


AutoHotKey(오토핫키) 설명서 MouseMove

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

MouseMove

마우스 커서를 이동한다

MouseMove, X, Y [, Speed, R]

Parameters

인수명설명
X, Y 마우스의 이동처의 좌표.
통상은 액티브 윈도우의 좌상으로부터의 상대 좌표이지만,CoordMode그리고 스크린 전체로의 절대 좌표로 변경할 수 있다.
Speed 이동 속도.
「0」(즉석에서 이동)(으)로부터 「100」(천천히 이동)까지의 값을 지정.
생략시의 값은,SetDefaultMouseSpeed그리고 설정 가능.(미설 정시는 「2」)
R 제4인수에 「R」(을)를 지정하면,X(와)과Y(은)는 현재의 커서 위치로부터의 상대 좌표로서 다루어진다.

Remarks

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

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

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

Related

CoordMode, SetDefaultMouseSpeed, SetMouseDelay, MouseClick, MouseClickDrag, MouseGetPos, 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, 0, 500


AutoHotKey(오토핫키) 설명서 MouseGetPos

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

MouseGetPos

마우스 커서의 위치, 마우스아래의 윈도우나 컨트롤을 취득

MouseGetPos, OutputVarX [, OutputVarY, OutputVarWin, OutputVarControl ,AltMethod] 

Parameters

인수명설명
OutputVarX/Y 마우스 커서의 횡좌표와 세워 좌표를 격납하는 변수명
OutputVarWin 마우스아래의 윈도우의 윈도우 핸들을 격납하는 변수명.
윈도우 관련 커멘드의Title인수에 「ahk_id %OutputVarWin%」라고 하도록(듯이) 해 지정하는 것으로, 그 윈도우를 지정할 수 있다.
OutputVarControl 마우스아래의 컨트롤의ClassNN(을)를 격납하는 변수명.
취득한 문자열은, 컨트롤 관련 커멘드의Control인수로 사용할 수 있다.
AltMethod이하의 물건의 화를 지정한다
1
OutputVarControl의 취득에 다른 방법을 사용한다.
이 방법에서는,MDI윈도우의 컨트롤을 잘 취득할 수 있을 가능성이 있지만, 다른 목적에서는 잘 동작하지 않는 경우가 있다.
2
OutputVarControl에 컨트롤의ClassNN(은)는 아니고 윈도우 핸들을 취득한다

Remarks

통상,X,Y좌표는 액티브 윈도우의 좌상으로부터의 상대 좌표로 취득된다.
CoordMode,Mouse,Screen(을)를 실행하면, 스크린 좌상으로부터의 좌표로 취득되게 된다.

인수가 생략 된 부분의 정보의 취득은 행해지지 않는다.

윈도우나 컨트롤의 취득에 실패했을 경우는, 해당하는 변수는 비운다.

AltMethod에1(을)를 지정하고 있지 않으면 일부의 케이스로 올바른 결과를 얻을 수 없다.
그러나,AltMethod에1(을)를 지정하면 반대로 올바른 결과를 얻을 수 없는 경우도 있다
이하와 같이WM_NCHITTEST(을)를 사용하는 것으로, 보다 확실히 올바른 결과를 얻을 수 있게 된다.

CoordMode,Mouse,Screen
MouseGetPos,x,y,hwnd,ctrl,3
SendMessage,0x84,0,%lp%,,ahk_id %ctrl%
If ErrorLevel=4294967295
	MouseGetPos,,,,ctrl,2

Related

CoordMode, WinGet, SetDefaultMouseSpeed, MouseClick, MouseClickDrag, MouseMove

Example(s)

MouseGetPos, xpos, ypos 
Msgbox, The cursor is at X%xpos% Y%ypos%. 

; This example allows you to move the mouse around to see
; the title of the window currently under the cursor:
#Persistent
SetTimer, WatchCursor, 100
return

WatchCursor:
MouseGetPos, , , id, control
WinGetTitle, title, ahk_id %id%
WinGetClass, class, ahk_id %id%
ToolTip, ahk_id %id%`nahk_class %class%`n%title%`nControl: %control%
return