SysGet, 화면, MonitorWorkArea ;SysGet 두 번째 인자를 Monitor로 하면 화면 전체 좌표를 구한다
실행할프로그램 = notepad.exe
Run, % 실행할프로그램, , , 활성창PID
WinWaitActive, ahk_pid %활성창PID%
활성창HWAN := WinExist("Ahk_PID " 활성창PID)
WinMove, ahk_id %활성창HWAN%, , , , % 화면Right / 2, % 화면Bottom / 2
WinGetPos, , , 창가로, 창세로, ahk_id %활성창HWAN%
WinMove, ahk_id %활성창HWAN%, , % (화면Right / 2) - (창가로 / 2), % (화면Bottom / 2) - ( 창세로 / 2)
WinGetPos, 화면x좌표, 화면y좌표, 창가로, 창세로, ahk_id %활성창HWAN%
x1 := 화면x좌표
y1 := 화면y좌표
x2 := 화면x좌표 + 창가로
y2 := 화면y좌표 + 창세로
VarSetCapacity( R, 16, 0 )
NumPut( x1, &R+0 )
NumPut( y1, &R+4 )
NumPut( x2, &R+8 )
NumPut( y2, &R+12)
DllCall( "ClipCursor", UInt,&R )
DllCall( "RegisterShellHookWindow", UInt, 활성창HWAN)
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage" )
OnExit, QuitScript
Return
ShellMessage( wParam,lParam ) {
Global R
If ( wParam = 4 ) ; HSHELL_WINDOWACTIVATED
DllCall( "ClipCursor", UInt,&R )
}
QuitScript:
DllCall( "ClipCursor" )
ExitAPP
Return