From 9ecc8b6ed802cabaf32ece85548118c3dfc96155 Mon Sep 17 00:00:00 2001 From: Joe DF Date: Tue, 21 Jan 2020 10:54:14 -0500 Subject: [PATCH] add original translation by johnsonj 151111 (ahk v1.1.22.07) --- src/AutoHotkey.chm | Bin 0 -> 1677972 bytes src/Index.hhk | 914 +++++++++ src/Project.hhp | 339 ++++ src/Table of Contents.hhc | 446 ++++ src/compile_chm.ahk | 36 + src/docs/AHKL_ChangeLog.htm | 1194 +++++++++++ src/docs/AHKL_DBGPClients.htm | 113 ++ src/docs/AHKL_Features.htm | 176 ++ src/docs/AutoHotkey.htm | 64 + src/docs/ChangeLogHelp.htm | 234 +++ src/docs/Compat.htm | 306 +++ src/docs/FAQ.htm | 382 ++++ src/docs/Functions.htm | 481 +++++ src/docs/HotkeyFeatures.htm | 60 + src/docs/Hotkeys.htm | 308 +++ src/docs/Hotstrings.htm | 229 +++ src/docs/KeyList.htm | 552 +++++ src/docs/Objects.htm | 723 +++++++ src/docs/Scripts.htm | 415 ++++ src/docs/Tutorial.htm | 1203 +++++++++++ src/docs/Variables.htm | 893 ++++++++ src/docs/Welcome.htm | 45 + src/docs/commands/AutoTrim.htm | 53 + src/docs/commands/Block.htm | 84 + src/docs/commands/BlockInput.htm | 72 + src/docs/commands/Break.htm | 51 + src/docs/commands/Catch.htm | 57 + src/docs/commands/Click.htm | 100 + src/docs/commands/ClipWait.htm | 62 + src/docs/commands/ComObjActive.htm | 154 ++ src/docs/commands/ComObjArray.htm | 96 + src/docs/commands/ComObjConnect.htm | 85 + src/docs/commands/ComObjCreate.htm | 49 + src/docs/commands/ComObjError.htm | 37 + src/docs/commands/ComObjFlags.htm | 80 + src/docs/commands/ComObjGet.htm | 51 + src/docs/commands/ComObjQuery.htm | 121 ++ src/docs/commands/ComObjType.htm | 98 + src/docs/commands/ComObjValue.htm | 40 + src/docs/commands/Continue.htm | 60 + src/docs/commands/Control.htm | 96 + src/docs/commands/ControlClick.htm | 107 + src/docs/commands/ControlFocus.htm | 62 + src/docs/commands/ControlGet.htm | 165 ++ src/docs/commands/ControlGetFocus.htm | 63 + src/docs/commands/ControlGetPos.htm | 75 + src/docs/commands/ControlGetText.htm | 69 + src/docs/commands/ControlMove.htm | 76 + src/docs/commands/ControlSend.htm | 92 + src/docs/commands/ControlSetText.htm | 62 + src/docs/commands/CoordMode.htm | 53 + src/docs/commands/Critical.htm | 67 + src/docs/commands/DetectHiddenText.htm | 43 + src/docs/commands/DetectHiddenWindows.htm | 46 + src/docs/commands/DllCall.htm | 439 ++++ src/docs/commands/Drive.htm | 86 + src/docs/commands/DriveGet.htm | 112 ++ src/docs/commands/DriveSpaceFree.htm | 37 + src/docs/commands/Edit.htm | 83 + src/docs/commands/Else.htm | 80 + src/docs/commands/EnvAdd.htm | 66 + src/docs/commands/EnvDiv.htm | 48 + src/docs/commands/EnvGet.htm | 42 + src/docs/commands/EnvMult.htm | 45 + src/docs/commands/EnvSet.htm | 50 + src/docs/commands/EnvSub.htm | 68 + src/docs/commands/EnvUpdate.htm | 35 + src/docs/commands/Exit.htm | 50 + src/docs/commands/ExitApp.htm | 38 + src/docs/commands/FileAppend.htm | 106 + src/docs/commands/FileCopy.htm | 89 + src/docs/commands/FileCopyDir.htm | 73 + src/docs/commands/FileCreateDir.htm | 40 + src/docs/commands/FileCreateShortcut.htm | 83 + src/docs/commands/FileDelete.htm | 45 + src/docs/commands/FileEncoding.htm | 34 + src/docs/commands/FileGetAttrib.htm | 67 + src/docs/commands/FileGetShortcut.htm | 69 + src/docs/commands/FileGetSize.htm | 61 + src/docs/commands/FileGetTime.htm | 53 + src/docs/commands/FileGetVersion.htm | 47 + src/docs/commands/FileInstall.htm | 59 + src/docs/commands/FileMove.htm | 91 + src/docs/commands/FileMoveDir.htm | 56 + src/docs/commands/FileOpen.htm | 130 ++ src/docs/commands/FileRead.htm | 91 + src/docs/commands/FileReadLine.htm | 68 + src/docs/commands/FileRecycle.htm | 41 + src/docs/commands/FileRecycleEmpty.htm | 41 + src/docs/commands/FileRemoveDir.htm | 45 + src/docs/commands/FileSelectFile.htm | 126 ++ src/docs/commands/FileSelectFolder.htm | 83 + src/docs/commands/FileSetAttrib.htm | 88 + src/docs/commands/FileSetTime.htm | 116 ++ src/docs/commands/Finally.htm | 90 + src/docs/commands/For.htm | 132 ++ src/docs/commands/Format.htm | 199 ++ src/docs/commands/FormatTime.htm | 278 +++ src/docs/commands/GetKeyState.htm | 115 ++ src/docs/commands/Gosub.htm | 49 + src/docs/commands/Goto.htm | 45 + src/docs/commands/GroupActivate.htm | 48 + src/docs/commands/GroupAdd.htm | 92 + src/docs/commands/GroupClose.htm | 46 + src/docs/commands/GroupDeactivate.htm | 44 + src/docs/commands/Gui.htm | 936 +++++++++ src/docs/commands/GuiControl.htm | 157 ++ src/docs/commands/GuiControlGet.htm | 117 ++ src/docs/commands/GuiControls.htm | 738 +++++++ src/docs/commands/Hotkey.htm | 233 +++ src/docs/commands/IfBetween.htm | 63 + src/docs/commands/IfEqual.htm | 97 + src/docs/commands/IfExist.htm | 41 + src/docs/commands/IfExpression.htm | 75 + src/docs/commands/IfIn.htm | 81 + src/docs/commands/IfInString.htm | 60 + src/docs/commands/IfIs.htm | 100 + src/docs/commands/IfMsgBox.htm | 49 + src/docs/commands/ImageSearch.htm | 95 + src/docs/commands/IniDelete.htm | 47 + src/docs/commands/IniRead.htm | 76 + src/docs/commands/IniWrite.htm | 73 + src/docs/commands/Input.htm | 177 ++ src/docs/commands/InputBox.htm | 80 + src/docs/commands/KeyHistory.htm | 44 + src/docs/commands/KeyWait.htm | 100 + src/docs/commands/ListHotkeys.htm | 43 + src/docs/commands/ListLines.htm | 63 + src/docs/commands/ListVars.htm | 37 + src/docs/commands/ListView.htm | 621 ++++++ src/docs/commands/Loop.htm | 71 + src/docs/commands/LoopFile.htm | 241 +++ src/docs/commands/LoopParse.htm | 137 ++ src/docs/commands/LoopReadFile.htm | 164 ++ src/docs/commands/LoopReg.htm | 182 ++ src/docs/commands/Menu.htm | 285 +++ src/docs/commands/MouseClick.htm | 100 + src/docs/commands/MouseClickDrag.htm | 83 + src/docs/commands/MouseGetPos.htm | 69 + src/docs/commands/MouseMove.htm | 62 + src/docs/commands/MsgBox.htm | 229 +++ src/docs/commands/NumGet.htm | 53 + src/docs/commands/NumPut.htm | 61 + src/docs/commands/ObjAddRef.htm | 58 + src/docs/commands/ObjBindMethod.htm | 37 + src/docs/commands/OnClipboardChange.htm | 92 + src/docs/commands/OnExit.htm | 154 ++ src/docs/commands/OnMessage.htm | 289 +++ src/docs/commands/OutputDebug.htm | 40 + src/docs/commands/Pause.htm | 70 + src/docs/commands/PixelGetColor.htm | 65 + src/docs/commands/PixelSearch.htm | 73 + src/docs/commands/PostMessage.htm | 141 ++ src/docs/commands/Process.htm | 170 ++ src/docs/commands/Progress.htm | 236 +++ src/docs/commands/Random.htm | 106 + src/docs/commands/RegDelete.htm | 62 + src/docs/commands/RegExMatch.htm | 109 + src/docs/commands/RegExReplace.htm | 107 + src/docs/commands/RegRead.htm | 99 + src/docs/commands/RegWrite.htm | 78 + src/docs/commands/RegisterCallback.htm | 181 ++ src/docs/commands/Reload.htm | 39 + src/docs/commands/Return.htm | 65 + src/docs/commands/Run.htm | 181 ++ src/docs/commands/RunAs.htm | 52 + src/docs/commands/Send.htm | 561 ++++++ src/docs/commands/SendLevel.htm | 59 + src/docs/commands/SendMode.htm | 60 + src/docs/commands/SetBatchLines.htm | 54 + src/docs/commands/SetControlDelay.htm | 49 + src/docs/commands/SetDefaultMouseSpeed.htm | 46 + src/docs/commands/SetEnv.htm | 52 + src/docs/commands/SetExpression.htm | 61 + src/docs/commands/SetFormat.htm | 108 + src/docs/commands/SetKeyDelay.htm | 64 + src/docs/commands/SetMouseDelay.htm | 49 + .../commands/SetNumScrollCapsLockState.htm | 44 + src/docs/commands/SetRegView.htm | 72 + src/docs/commands/SetStoreCapslockMode.htm | 43 + src/docs/commands/SetTimer.htm | 164 ++ src/docs/commands/SetTitleMatchMode.htm | 78 + src/docs/commands/SetWinDelay.htm | 49 + src/docs/commands/SetWorkingDir.htm | 52 + src/docs/commands/Shutdown.htm | 81 + src/docs/commands/Sleep.htm | 70 + src/docs/commands/Sort.htm | 137 ++ src/docs/commands/SoundBeep.htm | 43 + src/docs/commands/SoundGet.htm | 94 + src/docs/commands/SoundGetWaveVolume.htm | 47 + src/docs/commands/SoundPlay.htm | 60 + src/docs/commands/SoundSet.htm | 172 ++ src/docs/commands/SoundSetWaveVolume.htm | 50 + src/docs/commands/SplashTextOn.htm | 67 + src/docs/commands/SplitPath.htm | 80 + src/docs/commands/StatusBarGetText.htm | 62 + src/docs/commands/StatusBarWait.htm | 93 + src/docs/commands/StrPutGet.htm | 73 + src/docs/commands/StringCaseSense.htm | 50 + src/docs/commands/StringGetPos.htm | 95 + src/docs/commands/StringLeft.htm | 48 + src/docs/commands/StringLen.htm | 45 + src/docs/commands/StringLower.htm | 50 + src/docs/commands/StringMid.htm | 60 + src/docs/commands/StringReplace.htm | 86 + src/docs/commands/StringSplit.htm | 117 ++ src/docs/commands/StringTrimLeft.htm | 47 + src/docs/commands/Suspend.htm | 57 + src/docs/commands/SysGet.htm | 316 +++ src/docs/commands/Thread.htm | 68 + src/docs/commands/Throw.htm | 70 + src/docs/commands/ToolTip.htm | 66 + src/docs/commands/Transform.htm | 149 ++ src/docs/commands/TrayTip.htm | 91 + src/docs/commands/TreeView.htm | 367 ++++ src/docs/commands/Trim.htm | 40 + src/docs/commands/Try.htm | 130 ++ src/docs/commands/URLDownloadToFile.htm | 105 + src/docs/commands/Until.htm | 56 + src/docs/commands/VarSetCapacity.htm | 114 ++ src/docs/commands/While.htm | 60 + src/docs/commands/WinActivate.htm | 65 + src/docs/commands/WinActivateBottom.htm | 63 + src/docs/commands/WinActive.htm | 66 + src/docs/commands/WinClose.htm | 63 + src/docs/commands/WinExist.htm | 89 + src/docs/commands/WinGet.htm | 167 ++ src/docs/commands/WinGetActiveStats.htm | 51 + src/docs/commands/WinGetActiveTitle.htm | 35 + src/docs/commands/WinGetClass.htm | 50 + src/docs/commands/WinGetPos.htm | 69 + src/docs/commands/WinGetText.htm | 66 + src/docs/commands/WinGetTitle.htm | 52 + src/docs/commands/WinHide.htm | 58 + src/docs/commands/WinKill.htm | 60 + src/docs/commands/WinMaximize.htm | 57 + src/docs/commands/WinMenuSelectItem.htm | 83 + src/docs/commands/WinMinimize.htm | 55 + src/docs/commands/WinMinimizeAll.htm | 30 + src/docs/commands/WinMove.htm | 78 + src/docs/commands/WinRestore.htm | 52 + src/docs/commands/WinSet.htm | 184 ++ src/docs/commands/WinSetTitle.htm | 59 + src/docs/commands/WinShow.htm | 51 + src/docs/commands/WinWait.htm | 68 + src/docs/commands/WinWaitActive.htm | 70 + src/docs/commands/WinWaitClose.htm | 61 + src/docs/commands/_AllowSameLineComments.htm | 26 + src/docs/commands/_ClipboardTimeout.htm | 41 + src/docs/commands/_CommentFlag.htm | 38 + src/docs/commands/_ErrorStdOut.htm | 67 + src/docs/commands/_EscapeChar.htm | 108 + src/docs/commands/_HotkeyInterval.htm | 35 + src/docs/commands/_HotkeyModifierTimeout.htm | 55 + src/docs/commands/_Hotstring.htm | 53 + src/docs/commands/_If.htm | 98 + src/docs/commands/_IfTimeout.htm | 48 + src/docs/commands/_IfWinActive.htm | 127 ++ src/docs/commands/_Include.htm | 63 + src/docs/commands/_InputLevel.htm | 49 + src/docs/commands/_InstallKeybdHook.htm | 42 + src/docs/commands/_InstallMouseHook.htm | 38 + src/docs/commands/_KeyHistory.htm | 38 + src/docs/commands/_MaxHotkeysPerInterval.htm | 38 + src/docs/commands/_MaxMem.htm | 40 + src/docs/commands/_MaxThreads.htm | 48 + src/docs/commands/_MaxThreadsBuffer.htm | 46 + src/docs/commands/_MaxThreadsPerHotkey.htm | 43 + src/docs/commands/_MenuMaskKey.htm | 49 + src/docs/commands/_NoEnv.htm | 40 + src/docs/commands/_NoTrayIcon.htm | 32 + src/docs/commands/_Persistent.htm | 29 + src/docs/commands/_SingleInstance.htm | 41 + src/docs/commands/_UseHook.htm | 52 + src/docs/commands/_Warn.htm | 87 + src/docs/commands/_WinActivateForce.htm | 29 + src/docs/commands/index.htm | 1199 +++++++++++ src/docs/license.htm | 434 ++++ src/docs/misc/Acknowledgements.htm | 44 + src/docs/misc/Arrays.htm | 101 + src/docs/misc/AutoIt2Compat.htm | 41 + src/docs/misc/CLSID-List.htm | 131 ++ src/docs/misc/Clipboard.htm | 84 + src/docs/misc/ErrorLevel.htm | 27 + src/docs/misc/FontsStandard.htm | 822 ++++++++ src/docs/misc/Labels.htm | 63 + src/docs/misc/Languages.htm | 149 ++ src/docs/misc/Macros.htm | 37 + src/docs/misc/Override.htm | 43 + src/docs/misc/Performance.htm | 36 + src/docs/misc/RegEx-QuickRef.htm | 209 ++ src/docs/misc/RegExCallout.htm | 128 ++ src/docs/misc/Remap.htm | 204 ++ src/docs/misc/RemapJoystick.htm | 182 ++ src/docs/misc/SendMessage.htm | 87 + src/docs/misc/SendMessageList.htm | 239 +++ src/docs/misc/Styles.htm | 1341 ++++++++++++ src/docs/misc/Threads.htm | 38 + src/docs/misc/WinTitle.htm | 162 ++ src/docs/misc/Winamp.htm | 85 + src/docs/objects/Enumerator.htm | 56 + src/docs/objects/File.htm | 153 ++ src/docs/objects/Func.htm | 87 + src/docs/objects/Functor.htm | 83 + src/docs/objects/Object.htm | 249 +++ src/docs/scripts/ContextSensitiveHelp.ahk | 73 + src/docs/scripts/ContextSensitiveHelp.htm | 87 + src/docs/scripts/EasyWindowDrag.ahk | 45 + src/docs/scripts/EasyWindowDrag.htm | 57 + src/docs/scripts/EasyWindowDrag_(KDE).ahk | 149 ++ src/docs/scripts/EasyWindowDrag_(KDE).htm | 159 ++ src/docs/scripts/FavoriteFolders.ahk | 186 ++ src/docs/scripts/FavoriteFolders.htm | 194 ++ src/docs/scripts/IntelliSense.ahk | 188 ++ src/docs/scripts/IntelliSense.htm | 198 ++ src/docs/scripts/JoystickMouse.ahk | 155 ++ src/docs/scripts/JoystickMouse.htm | 167 ++ src/docs/scripts/JoystickTest.ahk | 88 + src/docs/scripts/JoystickTest.htm | 98 + src/docs/scripts/KeyboardOnScreen.ahk | 230 +++ src/docs/scripts/KeyboardOnScreen.htm | 242 +++ src/docs/scripts/MinimizeToTrayMenu.ahk | 249 +++ src/docs/scripts/MinimizeToTrayMenu.htm | 261 +++ src/docs/scripts/MouseGestures.htm | 19 + src/docs/scripts/MouseGestures.zip | Bin 0 -> 17027 bytes src/docs/scripts/MsgBoxButtonNames.ahk | 24 + src/docs/scripts/MsgBoxButtonNames.htm | 36 + src/docs/scripts/Numpad000.ahk | 61 + src/docs/scripts/Numpad000.htm | 74 + src/docs/scripts/NumpadMouse.ahk | 750 +++++++ src/docs/scripts/NumpadMouse.htm | 763 +++++++ .../scripts/Seek_(SearchTheStartMenu).ahk | 824 ++++++++ .../scripts/Seek_(SearchTheStartMenu).htm | 832 ++++++++ src/docs/scripts/TooltipMouseMenu.ahk | 164 ++ src/docs/scripts/TooltipMouseMenu.htm | 176 ++ src/docs/scripts/VolumeOSD.ahk | 127 ++ src/docs/scripts/VolumeOSD.htm | 140 ++ src/docs/scripts/WinLIRC.ahk | 280 +++ src/docs/scripts/WinLIRC.htm | 292 +++ src/docs/scripts/WindowShading.ahk | 53 + src/docs/scripts/WindowShading.htm | 64 + src/docs/scripts/index.htm | 100 + src/docs/static/ahk_logo.png | Bin 0 -> 6820 bytes src/docs/static/ahk_logo_no_text.png | Bin 0 -> 4567 bytes src/docs/static/ahkfile16.png | Bin 0 -> 572 bytes src/docs/static/content.js | 443 ++++ src/docs/static/content.temp.js | 1791 +++++++++++++++++ src/docs/static/source/CreateFiles4Help.ahk | 115 ++ src/docs/static/source/data_index.js | 909 +++++++++ src/docs/static/source/data_toc.js | 434 ++++ src/docs/static/source/data_translate.js | 14 + src/docs/static/source/jquery.js | 4 + src/docs/static/source/main.js | 424 ++++ src/docs/static/source/tree.jquery.js | 2 + src/docs/static/theme.css | 527 +++++ src/index.html | 10 + 356 files changed, 51377 insertions(+) create mode 100644 src/AutoHotkey.chm create mode 100644 src/Index.hhk create mode 100644 src/Project.hhp create mode 100644 src/Table of Contents.hhc create mode 100644 src/compile_chm.ahk create mode 100644 src/docs/AHKL_ChangeLog.htm create mode 100644 src/docs/AHKL_DBGPClients.htm create mode 100644 src/docs/AHKL_Features.htm create mode 100644 src/docs/AutoHotkey.htm create mode 100644 src/docs/ChangeLogHelp.htm create mode 100644 src/docs/Compat.htm create mode 100644 src/docs/FAQ.htm create mode 100644 src/docs/Functions.htm create mode 100644 src/docs/HotkeyFeatures.htm create mode 100644 src/docs/Hotkeys.htm create mode 100644 src/docs/Hotstrings.htm create mode 100644 src/docs/KeyList.htm create mode 100644 src/docs/Objects.htm create mode 100644 src/docs/Scripts.htm create mode 100644 src/docs/Tutorial.htm create mode 100644 src/docs/Variables.htm create mode 100644 src/docs/Welcome.htm create mode 100644 src/docs/commands/AutoTrim.htm create mode 100644 src/docs/commands/Block.htm create mode 100644 src/docs/commands/BlockInput.htm create mode 100644 src/docs/commands/Break.htm create mode 100644 src/docs/commands/Catch.htm create mode 100644 src/docs/commands/Click.htm create mode 100644 src/docs/commands/ClipWait.htm create mode 100644 src/docs/commands/ComObjActive.htm create mode 100644 src/docs/commands/ComObjArray.htm create mode 100644 src/docs/commands/ComObjConnect.htm create mode 100644 src/docs/commands/ComObjCreate.htm create mode 100644 src/docs/commands/ComObjError.htm create mode 100644 src/docs/commands/ComObjFlags.htm create mode 100644 src/docs/commands/ComObjGet.htm create mode 100644 src/docs/commands/ComObjQuery.htm create mode 100644 src/docs/commands/ComObjType.htm create mode 100644 src/docs/commands/ComObjValue.htm create mode 100644 src/docs/commands/Continue.htm create mode 100644 src/docs/commands/Control.htm create mode 100644 src/docs/commands/ControlClick.htm create mode 100644 src/docs/commands/ControlFocus.htm create mode 100644 src/docs/commands/ControlGet.htm create mode 100644 src/docs/commands/ControlGetFocus.htm create mode 100644 src/docs/commands/ControlGetPos.htm create mode 100644 src/docs/commands/ControlGetText.htm create mode 100644 src/docs/commands/ControlMove.htm create mode 100644 src/docs/commands/ControlSend.htm create mode 100644 src/docs/commands/ControlSetText.htm create mode 100644 src/docs/commands/CoordMode.htm create mode 100644 src/docs/commands/Critical.htm create mode 100644 src/docs/commands/DetectHiddenText.htm create mode 100644 src/docs/commands/DetectHiddenWindows.htm create mode 100644 src/docs/commands/DllCall.htm create mode 100644 src/docs/commands/Drive.htm create mode 100644 src/docs/commands/DriveGet.htm create mode 100644 src/docs/commands/DriveSpaceFree.htm create mode 100644 src/docs/commands/Edit.htm create mode 100644 src/docs/commands/Else.htm create mode 100644 src/docs/commands/EnvAdd.htm create mode 100644 src/docs/commands/EnvDiv.htm create mode 100644 src/docs/commands/EnvGet.htm create mode 100644 src/docs/commands/EnvMult.htm create mode 100644 src/docs/commands/EnvSet.htm create mode 100644 src/docs/commands/EnvSub.htm create mode 100644 src/docs/commands/EnvUpdate.htm create mode 100644 src/docs/commands/Exit.htm create mode 100644 src/docs/commands/ExitApp.htm create mode 100644 src/docs/commands/FileAppend.htm create mode 100644 src/docs/commands/FileCopy.htm create mode 100644 src/docs/commands/FileCopyDir.htm create mode 100644 src/docs/commands/FileCreateDir.htm create mode 100644 src/docs/commands/FileCreateShortcut.htm create mode 100644 src/docs/commands/FileDelete.htm create mode 100644 src/docs/commands/FileEncoding.htm create mode 100644 src/docs/commands/FileGetAttrib.htm create mode 100644 src/docs/commands/FileGetShortcut.htm create mode 100644 src/docs/commands/FileGetSize.htm create mode 100644 src/docs/commands/FileGetTime.htm create mode 100644 src/docs/commands/FileGetVersion.htm create mode 100644 src/docs/commands/FileInstall.htm create mode 100644 src/docs/commands/FileMove.htm create mode 100644 src/docs/commands/FileMoveDir.htm create mode 100644 src/docs/commands/FileOpen.htm create mode 100644 src/docs/commands/FileRead.htm create mode 100644 src/docs/commands/FileReadLine.htm create mode 100644 src/docs/commands/FileRecycle.htm create mode 100644 src/docs/commands/FileRecycleEmpty.htm create mode 100644 src/docs/commands/FileRemoveDir.htm create mode 100644 src/docs/commands/FileSelectFile.htm create mode 100644 src/docs/commands/FileSelectFolder.htm create mode 100644 src/docs/commands/FileSetAttrib.htm create mode 100644 src/docs/commands/FileSetTime.htm create mode 100644 src/docs/commands/Finally.htm create mode 100644 src/docs/commands/For.htm create mode 100644 src/docs/commands/Format.htm create mode 100644 src/docs/commands/FormatTime.htm create mode 100644 src/docs/commands/GetKeyState.htm create mode 100644 src/docs/commands/Gosub.htm create mode 100644 src/docs/commands/Goto.htm create mode 100644 src/docs/commands/GroupActivate.htm create mode 100644 src/docs/commands/GroupAdd.htm create mode 100644 src/docs/commands/GroupClose.htm create mode 100644 src/docs/commands/GroupDeactivate.htm create mode 100644 src/docs/commands/Gui.htm create mode 100644 src/docs/commands/GuiControl.htm create mode 100644 src/docs/commands/GuiControlGet.htm create mode 100644 src/docs/commands/GuiControls.htm create mode 100644 src/docs/commands/Hotkey.htm create mode 100644 src/docs/commands/IfBetween.htm create mode 100644 src/docs/commands/IfEqual.htm create mode 100644 src/docs/commands/IfExist.htm create mode 100644 src/docs/commands/IfExpression.htm create mode 100644 src/docs/commands/IfIn.htm create mode 100644 src/docs/commands/IfInString.htm create mode 100644 src/docs/commands/IfIs.htm create mode 100644 src/docs/commands/IfMsgBox.htm create mode 100644 src/docs/commands/ImageSearch.htm create mode 100644 src/docs/commands/IniDelete.htm create mode 100644 src/docs/commands/IniRead.htm create mode 100644 src/docs/commands/IniWrite.htm create mode 100644 src/docs/commands/Input.htm create mode 100644 src/docs/commands/InputBox.htm create mode 100644 src/docs/commands/KeyHistory.htm create mode 100644 src/docs/commands/KeyWait.htm create mode 100644 src/docs/commands/ListHotkeys.htm create mode 100644 src/docs/commands/ListLines.htm create mode 100644 src/docs/commands/ListVars.htm create mode 100644 src/docs/commands/ListView.htm create mode 100644 src/docs/commands/Loop.htm create mode 100644 src/docs/commands/LoopFile.htm create mode 100644 src/docs/commands/LoopParse.htm create mode 100644 src/docs/commands/LoopReadFile.htm create mode 100644 src/docs/commands/LoopReg.htm create mode 100644 src/docs/commands/Menu.htm create mode 100644 src/docs/commands/MouseClick.htm create mode 100644 src/docs/commands/MouseClickDrag.htm create mode 100644 src/docs/commands/MouseGetPos.htm create mode 100644 src/docs/commands/MouseMove.htm create mode 100644 src/docs/commands/MsgBox.htm create mode 100644 src/docs/commands/NumGet.htm create mode 100644 src/docs/commands/NumPut.htm create mode 100644 src/docs/commands/ObjAddRef.htm create mode 100644 src/docs/commands/ObjBindMethod.htm create mode 100644 src/docs/commands/OnClipboardChange.htm create mode 100644 src/docs/commands/OnExit.htm create mode 100644 src/docs/commands/OnMessage.htm create mode 100644 src/docs/commands/OutputDebug.htm create mode 100644 src/docs/commands/Pause.htm create mode 100644 src/docs/commands/PixelGetColor.htm create mode 100644 src/docs/commands/PixelSearch.htm create mode 100644 src/docs/commands/PostMessage.htm create mode 100644 src/docs/commands/Process.htm create mode 100644 src/docs/commands/Progress.htm create mode 100644 src/docs/commands/Random.htm create mode 100644 src/docs/commands/RegDelete.htm create mode 100644 src/docs/commands/RegExMatch.htm create mode 100644 src/docs/commands/RegExReplace.htm create mode 100644 src/docs/commands/RegRead.htm create mode 100644 src/docs/commands/RegWrite.htm create mode 100644 src/docs/commands/RegisterCallback.htm create mode 100644 src/docs/commands/Reload.htm create mode 100644 src/docs/commands/Return.htm create mode 100644 src/docs/commands/Run.htm create mode 100644 src/docs/commands/RunAs.htm create mode 100644 src/docs/commands/Send.htm create mode 100644 src/docs/commands/SendLevel.htm create mode 100644 src/docs/commands/SendMode.htm create mode 100644 src/docs/commands/SetBatchLines.htm create mode 100644 src/docs/commands/SetControlDelay.htm create mode 100644 src/docs/commands/SetDefaultMouseSpeed.htm create mode 100644 src/docs/commands/SetEnv.htm create mode 100644 src/docs/commands/SetExpression.htm create mode 100644 src/docs/commands/SetFormat.htm create mode 100644 src/docs/commands/SetKeyDelay.htm create mode 100644 src/docs/commands/SetMouseDelay.htm create mode 100644 src/docs/commands/SetNumScrollCapsLockState.htm create mode 100644 src/docs/commands/SetRegView.htm create mode 100644 src/docs/commands/SetStoreCapslockMode.htm create mode 100644 src/docs/commands/SetTimer.htm create mode 100644 src/docs/commands/SetTitleMatchMode.htm create mode 100644 src/docs/commands/SetWinDelay.htm create mode 100644 src/docs/commands/SetWorkingDir.htm create mode 100644 src/docs/commands/Shutdown.htm create mode 100644 src/docs/commands/Sleep.htm create mode 100644 src/docs/commands/Sort.htm create mode 100644 src/docs/commands/SoundBeep.htm create mode 100644 src/docs/commands/SoundGet.htm create mode 100644 src/docs/commands/SoundGetWaveVolume.htm create mode 100644 src/docs/commands/SoundPlay.htm create mode 100644 src/docs/commands/SoundSet.htm create mode 100644 src/docs/commands/SoundSetWaveVolume.htm create mode 100644 src/docs/commands/SplashTextOn.htm create mode 100644 src/docs/commands/SplitPath.htm create mode 100644 src/docs/commands/StatusBarGetText.htm create mode 100644 src/docs/commands/StatusBarWait.htm create mode 100644 src/docs/commands/StrPutGet.htm create mode 100644 src/docs/commands/StringCaseSense.htm create mode 100644 src/docs/commands/StringGetPos.htm create mode 100644 src/docs/commands/StringLeft.htm create mode 100644 src/docs/commands/StringLen.htm create mode 100644 src/docs/commands/StringLower.htm create mode 100644 src/docs/commands/StringMid.htm create mode 100644 src/docs/commands/StringReplace.htm create mode 100644 src/docs/commands/StringSplit.htm create mode 100644 src/docs/commands/StringTrimLeft.htm create mode 100644 src/docs/commands/Suspend.htm create mode 100644 src/docs/commands/SysGet.htm create mode 100644 src/docs/commands/Thread.htm create mode 100644 src/docs/commands/Throw.htm create mode 100644 src/docs/commands/ToolTip.htm create mode 100644 src/docs/commands/Transform.htm create mode 100644 src/docs/commands/TrayTip.htm create mode 100644 src/docs/commands/TreeView.htm create mode 100644 src/docs/commands/Trim.htm create mode 100644 src/docs/commands/Try.htm create mode 100644 src/docs/commands/URLDownloadToFile.htm create mode 100644 src/docs/commands/Until.htm create mode 100644 src/docs/commands/VarSetCapacity.htm create mode 100644 src/docs/commands/While.htm create mode 100644 src/docs/commands/WinActivate.htm create mode 100644 src/docs/commands/WinActivateBottom.htm create mode 100644 src/docs/commands/WinActive.htm create mode 100644 src/docs/commands/WinClose.htm create mode 100644 src/docs/commands/WinExist.htm create mode 100644 src/docs/commands/WinGet.htm create mode 100644 src/docs/commands/WinGetActiveStats.htm create mode 100644 src/docs/commands/WinGetActiveTitle.htm create mode 100644 src/docs/commands/WinGetClass.htm create mode 100644 src/docs/commands/WinGetPos.htm create mode 100644 src/docs/commands/WinGetText.htm create mode 100644 src/docs/commands/WinGetTitle.htm create mode 100644 src/docs/commands/WinHide.htm create mode 100644 src/docs/commands/WinKill.htm create mode 100644 src/docs/commands/WinMaximize.htm create mode 100644 src/docs/commands/WinMenuSelectItem.htm create mode 100644 src/docs/commands/WinMinimize.htm create mode 100644 src/docs/commands/WinMinimizeAll.htm create mode 100644 src/docs/commands/WinMove.htm create mode 100644 src/docs/commands/WinRestore.htm create mode 100644 src/docs/commands/WinSet.htm create mode 100644 src/docs/commands/WinSetTitle.htm create mode 100644 src/docs/commands/WinShow.htm create mode 100644 src/docs/commands/WinWait.htm create mode 100644 src/docs/commands/WinWaitActive.htm create mode 100644 src/docs/commands/WinWaitClose.htm create mode 100644 src/docs/commands/_AllowSameLineComments.htm create mode 100644 src/docs/commands/_ClipboardTimeout.htm create mode 100644 src/docs/commands/_CommentFlag.htm create mode 100644 src/docs/commands/_ErrorStdOut.htm create mode 100644 src/docs/commands/_EscapeChar.htm create mode 100644 src/docs/commands/_HotkeyInterval.htm create mode 100644 src/docs/commands/_HotkeyModifierTimeout.htm create mode 100644 src/docs/commands/_Hotstring.htm create mode 100644 src/docs/commands/_If.htm create mode 100644 src/docs/commands/_IfTimeout.htm create mode 100644 src/docs/commands/_IfWinActive.htm create mode 100644 src/docs/commands/_Include.htm create mode 100644 src/docs/commands/_InputLevel.htm create mode 100644 src/docs/commands/_InstallKeybdHook.htm create mode 100644 src/docs/commands/_InstallMouseHook.htm create mode 100644 src/docs/commands/_KeyHistory.htm create mode 100644 src/docs/commands/_MaxHotkeysPerInterval.htm create mode 100644 src/docs/commands/_MaxMem.htm create mode 100644 src/docs/commands/_MaxThreads.htm create mode 100644 src/docs/commands/_MaxThreadsBuffer.htm create mode 100644 src/docs/commands/_MaxThreadsPerHotkey.htm create mode 100644 src/docs/commands/_MenuMaskKey.htm create mode 100644 src/docs/commands/_NoEnv.htm create mode 100644 src/docs/commands/_NoTrayIcon.htm create mode 100644 src/docs/commands/_Persistent.htm create mode 100644 src/docs/commands/_SingleInstance.htm create mode 100644 src/docs/commands/_UseHook.htm create mode 100644 src/docs/commands/_Warn.htm create mode 100644 src/docs/commands/_WinActivateForce.htm create mode 100644 src/docs/commands/index.htm create mode 100644 src/docs/license.htm create mode 100644 src/docs/misc/Acknowledgements.htm create mode 100644 src/docs/misc/Arrays.htm create mode 100644 src/docs/misc/AutoIt2Compat.htm create mode 100644 src/docs/misc/CLSID-List.htm create mode 100644 src/docs/misc/Clipboard.htm create mode 100644 src/docs/misc/ErrorLevel.htm create mode 100644 src/docs/misc/FontsStandard.htm create mode 100644 src/docs/misc/Labels.htm create mode 100644 src/docs/misc/Languages.htm create mode 100644 src/docs/misc/Macros.htm create mode 100644 src/docs/misc/Override.htm create mode 100644 src/docs/misc/Performance.htm create mode 100644 src/docs/misc/RegEx-QuickRef.htm create mode 100644 src/docs/misc/RegExCallout.htm create mode 100644 src/docs/misc/Remap.htm create mode 100644 src/docs/misc/RemapJoystick.htm create mode 100644 src/docs/misc/SendMessage.htm create mode 100644 src/docs/misc/SendMessageList.htm create mode 100644 src/docs/misc/Styles.htm create mode 100644 src/docs/misc/Threads.htm create mode 100644 src/docs/misc/WinTitle.htm create mode 100644 src/docs/misc/Winamp.htm create mode 100644 src/docs/objects/Enumerator.htm create mode 100644 src/docs/objects/File.htm create mode 100644 src/docs/objects/Func.htm create mode 100644 src/docs/objects/Functor.htm create mode 100644 src/docs/objects/Object.htm create mode 100644 src/docs/scripts/ContextSensitiveHelp.ahk create mode 100644 src/docs/scripts/ContextSensitiveHelp.htm create mode 100644 src/docs/scripts/EasyWindowDrag.ahk create mode 100644 src/docs/scripts/EasyWindowDrag.htm create mode 100644 src/docs/scripts/EasyWindowDrag_(KDE).ahk create mode 100644 src/docs/scripts/EasyWindowDrag_(KDE).htm create mode 100644 src/docs/scripts/FavoriteFolders.ahk create mode 100644 src/docs/scripts/FavoriteFolders.htm create mode 100644 src/docs/scripts/IntelliSense.ahk create mode 100644 src/docs/scripts/IntelliSense.htm create mode 100644 src/docs/scripts/JoystickMouse.ahk create mode 100644 src/docs/scripts/JoystickMouse.htm create mode 100644 src/docs/scripts/JoystickTest.ahk create mode 100644 src/docs/scripts/JoystickTest.htm create mode 100644 src/docs/scripts/KeyboardOnScreen.ahk create mode 100644 src/docs/scripts/KeyboardOnScreen.htm create mode 100644 src/docs/scripts/MinimizeToTrayMenu.ahk create mode 100644 src/docs/scripts/MinimizeToTrayMenu.htm create mode 100644 src/docs/scripts/MouseGestures.htm create mode 100644 src/docs/scripts/MouseGestures.zip create mode 100644 src/docs/scripts/MsgBoxButtonNames.ahk create mode 100644 src/docs/scripts/MsgBoxButtonNames.htm create mode 100644 src/docs/scripts/Numpad000.ahk create mode 100644 src/docs/scripts/Numpad000.htm create mode 100644 src/docs/scripts/NumpadMouse.ahk create mode 100644 src/docs/scripts/NumpadMouse.htm create mode 100644 src/docs/scripts/Seek_(SearchTheStartMenu).ahk create mode 100644 src/docs/scripts/Seek_(SearchTheStartMenu).htm create mode 100644 src/docs/scripts/TooltipMouseMenu.ahk create mode 100644 src/docs/scripts/TooltipMouseMenu.htm create mode 100644 src/docs/scripts/VolumeOSD.ahk create mode 100644 src/docs/scripts/VolumeOSD.htm create mode 100644 src/docs/scripts/WinLIRC.ahk create mode 100644 src/docs/scripts/WinLIRC.htm create mode 100644 src/docs/scripts/WindowShading.ahk create mode 100644 src/docs/scripts/WindowShading.htm create mode 100644 src/docs/scripts/index.htm create mode 100644 src/docs/static/ahk_logo.png create mode 100644 src/docs/static/ahk_logo_no_text.png create mode 100644 src/docs/static/ahkfile16.png create mode 100644 src/docs/static/content.js create mode 100644 src/docs/static/content.temp.js create mode 100644 src/docs/static/source/CreateFiles4Help.ahk create mode 100644 src/docs/static/source/data_index.js create mode 100644 src/docs/static/source/data_toc.js create mode 100644 src/docs/static/source/data_translate.js create mode 100644 src/docs/static/source/jquery.js create mode 100644 src/docs/static/source/main.js create mode 100644 src/docs/static/source/tree.jquery.js create mode 100644 src/docs/static/theme.css create mode 100644 src/index.html diff --git a/src/AutoHotkey.chm b/src/AutoHotkey.chm new file mode 100644 index 0000000000000000000000000000000000000000..bc1385976ea0b40f78f501e8e74fea58178e7c80 GIT binary patch literal 1677972 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

auuZ){ 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 E9q&3k* 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

fp+_ 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

FCl_x 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�ya}ZJ8ERT7_&-HYx|oj=2cRLGFM9+bX-VJG+Aq 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±|TW33_RjMKeK!20m~0-#KRdX`E?)|?AN!n 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%0Ad^!!k|WC00d| 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

j0 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 jX(K(PHO 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 }4H#i)C^PEBU+ z&JR{EK0h0F6X)qeP*(3FuPb?&vC@yCmsc$#f^6F*SQsQp<))o2G5&5*(X;}ElzcJh zT>+91bMYZ{@0908L<)LrJ-fl`!CW{9ah?A|PcNDKzm zwbk3{|d z%Y3sj`+%@>@S$=16WugU=88qqO9}TO_Te14#?A3vVz6|?z6a&=Eb;~YgoE=EMs~XA z&@P)`a4R9H_5u=SzqzM82i}9?F`Q z+x3~NiSbcqm%nVd|VmHSyexWJRIWcc#%I0@dv)U25Dm{Bs+FyDl{ zEZ=HPgKgfBrzGyoJf_(~6GAN7Xa*YqJD8bamar5)d7Usw>gxU|7bx|NxFK*fGdm;A z(sXa!=%kfK`hn#P|ERdWX&#*r?H%zUaUSdAV0n1eGH&9xWM9hZe|9g6oHRr?b%?7u z!yqTdL2ghkL&R^>vZ2T3)i_u6+>vYTIW9B?N1U^ste}nyC>VL133OFb`5o> z<<;c1h3kv3ZpmZnTD~}!GIk34QSTb9Oz?2=Sif7oN?rV3j6?9h{q4zch?$p7sMXuNr!J?kir^u)%S+Z8%GMg|i&OQe z@EpTXYP?+mG$oi&6#OwWCcycF%iJ3)`GQ@1FzI}okTdP6h&;EjTFeAc#y zFl>?l)OgbVrqWU02{0GHz|$@qrVm_^~tAFK+_@BAJ8gvaC=CkZSWU`q?$i z1w$z(exd!-ITQL*=9bW`U zUYb!4-P_)OH1~7rve;QZSEeE$6*^&8TZB4lN_yW){_lHdx^~8H^FSC){cHeI3L1ic zm=IjV(3fwb1DOLrk`RjQG|+)JNd}$?=+v_wS_=>sVPMi{he-sUH~dhGIo5K8*U1Pb zgJw98y#m;L?j+E%Fri3qGd$jGJAyD!8 zidgM-JY`2Zy?neKh4KfF`M7x<5k9}q8*qK3o-)VbK$vm@m9eUEiNh;{vB>9NV!q4oWFD~(xeg{C1 z0E}y7ZJX)YiaMEs43B^ZZB7$2&>3lFUscE@QoU{9JVs=+$)&d!Tx;JKwtK7U`>OsX_60^L4o+fTLzZ&@Y2POPdJa77GDB4Nw)p^HM)0 zJrO&=g;2TUgKKODd6dZZnfTS%wf+Deo$J`{8(V@r``^ zLY=B9Ot1s;9m(?v>7+ZRo zc~GkE;a78WCWNI)ic9X9XA`t03epZv1A?@rVr~K+3}#xdA=|$$yD-%E;m20{G{f$@ zc}nCijpczJdPPYCdWy%Lt=QEAOMLjYsJ$Kf@=adyYT;V3hfv#BOYQbF-sf&oN7* zPH;ZCMKpMzHk3rGdd#*)5M9*$TYJ?q25jU1v$odcLi_-tP-~yGg`d|0wHF%o{oazP z>QENFgdnryEx|*?5(w5D?RO&b;`_$FNIoe|+gGspFB*XfrwEL9G)we#2^T*x^FC(! zoK^ab>#`gBVjeF6gn2eYLE&WMRSUx|Vnd7k#TD ze9f9LR$R12;4flECOw0gwn(h_J-u^ziQCT)Sxe1o*M2eYNp$Z~NKF`mY-Jzv8bqq6 zyn+&3a9M)goErslg-*}p+XTVpk9Jyy@ev%w&nsT&%)>>^r?6$(`Amve-l0Od2tk5$ zpUPFo{)YU~xcmczLlnavqI%qwAK+V_vcbCyn`2u%R}+B6_}|$p0$>u~PiPqO=nMS-6rsdlPdxK6S&E|V z;cBTwI1csRV_ab^Oc|!0#=~b_&k48G${5!~Req7{jp!Y#(Pp@R`wcGHe*HB>-fbw|+fgn1DUo+a0A21aO3jj+pF#QGVMBvUv z007{C?2w72zl*7Y<$U2q9`mPAU|`+i$f=A(yToc=TWkSRS+n$=Tunz#ri@?*!N&($ zW<-!a_kh+AxFDxH8w>fm5E}8g@Rv8tKyvSaH?(n^5v}G4tY8s;01H@Y+>5O1PjclX zy#EJ|@Ol=+%d~AX(7EEherkw~hZ-5>y1|Y=H`$-E)*gSFJoerqLy#QPAJL8k+pw1~ z!>5h%V((-CN*OYPMm0}>+Doh?gK6$n85;P<>faGahP)nM6irve_ORO4KA-C#mh47opxMb=U+~MqJ8ZV}ZcISXm2OIl&ji!>)g<_T?R~Z!y@CdLH=>K1x??Z(HcB za3p@e&hO zCdG=&VV_5j2j#8S*iy}q47eX_Qt|N!EeqBM-qIVN+6an^tW+NW9qc0=r7F5Uvxw&M zmjxJDh?mPWGJz8eT*l-?0tXIfhsW}crnaV}v`EPdj%~>NMm?tit0nk?8!C$O+7Q&3 zohVCi0%g&}VbB!A0{S>ou4_tAr_Da6a?Z^$0C2$OpZeSCSTsFK{Y0#fI%u=w0d|Ol zQh@Il5+bZ`0M2RyuW7Yv-(362Z}16)EF6L$d7J##;M)(7y4_$sTwTD0PLdw052+E) zCc>Vu15m1qEVZblXXNbLvFZ}js|Vi$KY1PWW*r=w1T8Qhis#-6DZ-Azk1qPI2{a#n z2&EL+X7t)$exGrXlWEUkkhFA9@k{H|)~6|7y#2)XjX}4JwQC+WLf;aXf}e#V|AXoX?rm5* zbRPw5b{ZH+dVa!!Kc-gz6s@bNH+Jmf&y3pbG9ke~f-p&J92hay#X5H351mBg%;T1l+PxPBhVkS1)*b~2n8t43R%uLne!X@+xHSM5g%&C!`}P|fg|;&S zmi>Vx04GT_rVEw1`VjZ^^tb_~?T`Z>ATBDCG}WC{g44Jl8tqsGaBV&ku;wd!2?6g% z!onaLSl+%EQH7H2^ROoFH6y^BkZf6+AQ}ICQb+L8-Mo=|3kIU5m8kafJ#Ib}*KHhf zSF`6hnz&np1#JACup3Z4Lf7bH^Bq{klamYkfBfek!ApPLjc6k*aip1yg=k}V65xuV zeAr1bH$mbwwz#+6gk7?$cN#uWqV>5p zl4)VMq5``~8DGy^aQH0*PlD{v6W|BthVdU844CmCt~WRVbg~>=6mI8|rPBgI;W{GS zwASlXGDuMu_TTXG$Ex|wt~exJwqIWskG6wv*JxLQ7E3F_L<75WUtg4Jh)khAMs2dk zr59(!=Vw`0;L5Nv&h9UkxRDI}D6X!#`$Ni6D;`H1Zmuj}o4XTZO*+2An(>JC?k&>S zFbc2dUG{BDNY$0mpch;`E{$MaFNpd3B5aXn#pC^;lrMV`+v& ze;%Ry-#D9_*kCdzm`*BsX$(?^B?n892&#-Js>C#2yKCKC??X}T=hmZf`8?n+!W+1-1=sNS<9OdHGnV6sm@0QbL^ zrkUBrRO^0nu3{hqT$%o07#NNkHl^C+kiC&bR;&5xUUvYH3brh{1R&A+bsZadMa@hf zp-bWsQU7yCTfAZQ1cHXA`(QH3`50k?0wI&fjl!|}Nq8|yTMBQ-?+mOrDbhjX*O~#} zFdYfFVFwKUx{l`cL2tFD(S`wEc6wa$F}AzR`sOU@zEgv`J_-@w6IDPgs|Y;}Se1m^ zs`G`YociqL^_LQl@-KSA|1VRvJ3)ptapnpIXW_|$G2~Be2!1(RFmGvn>tJ1b3j8$n z%|GbCq?ih;bDOR&Eo4}dTWq<*R=49k3al*cCKxO6J>NoaXrVJPJD3n2A%P2CoUA}+`rd6|7UX*) zDjZBs78@3KhpHMtYCYf_$A)c6zV5sxzNJS)ej#ThKSBpx;ei{smk~fbx!wRz{H7!L zVdkDt#m0M8&p}2@6AnX+04=oz$oFPxM1xkv>R-a+BSyBQ+Pi(v|S7PVuevVH*ipW0b0hCK*=#5;y(NQ zuBY8EJj#;e@?-4nCJGTKSaJIvcSin@idk%LlMsdeQ6I6j=I{}+2<=>Xh?lhJ$Wv(@ z|7rBqf9y|u_JvrN_Bo7Pf^1Q9V1F>?vyk0e1F1V~wyM5v29V2jBArG6 zAaA%u1|yKnsyy7K{j842aRuJB{^6YFnb42sNa{KU<9Y8d84bK`g{VwKD#$Bdbkfwk zvC33TlR?-{`aZz^=;%H;l?;;o9tbG@F4Jm`1uPN&3__a@qK3zS4No72imMYe4!eJa ze8M@XhBVQm?MnwIIb84`Dqsx=#^zZ?2Gn{}=sfhT)4-X>X-x++1n(sq;P7eJGkTFE zQoE*8UyuRR@@njT~E90Kg0b>!Ns>TYB4|H;7 z{9mc{$UB$<3?xgA_j*bl=KCrKh0BJ8+xz~+U|v$`{uw+NeS+=r&rxh?Mcx840GbWZ zIJ_AlU*(>02k1QqU;(TMi%D?-4xJxp*l2lzB4q{~`f$x(M09IYIYRhcjnpGD*Gamv z*85D~$Q3P8yfnI319I7AM}%#k8FD1U2LL$*n51qHK-eYZ({g&fy$RT0YDCNmp}(1i z*|-b5L;l%{SQedu(9h#_!*k~T7~%*P9Liq@K482|hG0N&U(@G3{fsk3a%ijO$^-k^ zOEg09ZJsb^IH2S=G^2i>|58r1@_!PyL!$wb;4Lps%h`FV@(eHGyLEdg*6|Epn0&AU zQoNm9yn232`Xm3qrIRnF60M3To9|())n7hnzk}M?KMTc`ZB>6?mF%)_rSTw=HwUla zCm(5lU=|#kq@)CTpsV^$4S$lz`u&%A-ErF;UfQ#e&)PQpT)E9+b{VWdq69HWTYtW$ z;D^kS$UbuZ@9_yM0Z^BsGQA88?1r$cf}_MMr8yXqHA;HriraqD#fO#1mP*<#-96Qw zCWx$LFQxVkVJ12zs= z7T3U>ypE^3gImCN-AX{O)>wb#uc#|Qa#(T;5z`QLU@$4IwjtJ5qd$6|6O@6Qe;zih zNCw5^f`7o-@RC}&ftwgaNbMy0|9TW$+c>CS?-$^Jm}u7rUc)FlFkAITUkU_u-{+#l zsQJZmQ~3TmTN{l|tkgEA6zj$CZsa|eDlP;YS%)5QN20fC;~co7tp@VGEiu6xw$_RO zTHa3sBe-G>3p{NA((ZqlUJ!G%BpPHNDEbxDYVdIp>;;9MUa>taT=b&jg!sUxZAj3!LK20?Qs7i7PkaiYPS&nKam&LH zFCG50I}Pe|u?3LURGx(Z{gCrKC{B5|eUP}M|4pTQrbd+nD@=-CK*jo$cq+lMW>;*j zG+bHm3EW8zk{00Prg%~`C5h(${j`T}7Eu87AYEGrFp$xp9|n$WozQrrKUPM zI{mn}{0C;AzIEW(FA4%u4MpR7meIx5o>(s1U(KEC(ZVd|BGMN2>7R-ZeEG1Z_Wr#_ zb?r+Hs%61U+wSO}GFvAo|46XkJ=T1Am>}2UzFbB`G^!-%qDFb|YkEt2Wr{$jw&U}E z62r)852`_a)y)10)8T!n|GPxdO>g}F8U(FIz8|yg)1saG)q`>T2To+`z@_RlzsB;FVTi=74n_av$vWykAamIqy&gPurmsT) z$gM;;m0WgjrEf}cYzAygMTpM(M^Q0M$pII#9YtRB=Q+0U9(Nssq{MaAflCDX4=6*e zIskYz2?W3Re0~*+$ohQSKbh;?Vpr;IHU%a=6qT&JAogFP2VqXP*#*F@yn#fUD#*&7 zkq)8(wi8BhWTh$=(=Z+L2KfKXGF2L*yb-nXU-{nL)6?GH^LV3T|4@~2DOl#cB)6(4 z1Quj&^bepsE%&>ZZv*=k#O%w{LH$=Huq(@orOGF`Gu|XU_#W(lpo04p1B8J>>EwS_ z4g}MOCUE+98U~DqRV^F4qm5wyqikT{>;Hdb0}n8l_5t~AM>z+;*W^OCmfrNj2fIv5 zse@95b`vtdZt;sEF_nWRZr;=X6(=8I*QuCa*-0>B)#XtrIm(m~-#qFHlyvB`Mgd-1 z-vm`G{P)xr!vRbmo%v@w582Gnl;d0HW$GT+0|_3Yl6?S6NarxlcB++(u&1Ad-K)vx zJtpc(^CjEWrFcfECy7*xU`%{VLV-&!Uj(CmNvCU`52Sff7%cScEul$;Sfvv1Is`) zocs1J9xnMUkov+sAU3R_;$t#XRNesSaCU1U+NZEbM2_!@#Fr){NGYEOvfdtzno*4NLp%gcOmoPj{Q@uvWEj&WBz86=t?EFUuhzdYF9-khv z^?Y4zwD>Z3{088q)wv;cNA2Yn0XQm3-#Mt8DC+`%r7RPmz?o3oZbOwLaDdc@4<}(S z6I(Sax{p#;|3U!In~G>S%?_=o58lCkv6OEC7@MjOppkU}yhuf{ z_<;b7(fW-)@M*wX^*whAaqRbJ{0u-4*E-5gBW6e-oQ|7Eh^XA)$h_LK!IBL6bMclN>h#OW~ z*6+ApbLM4A$U)yqc_)HTm7Il5loHfEx#VQS_<*DizJ4Nw?ouH-8K-;t4uR7G;%&|) zB%0*X<{PXQ&+G5HNOkaI4KWwmF~AOi1%4cH@XhzLjUnkd!DJfDnX)%}l1)tG z>6-3HOn7TOd1{e31p8!|gBs zF;7c*rtJ!G#ax;s*;daBS2=ztiQFz30zEWTr39rT*+Sw{_Inypa{_#fuRc;)>-(+z z!XR`T);{J(hV*{t){`bUqmFHzXi?NoP<-G_Icsz)ILs;RnAbxim)5WPnLLuMV01?2 zrfiCY?|0tW(Sre4Ez>iw7icGRVYF&l-{=~SrxS0vfQ)GyRJC7>Jt5!xlq_$=NsRbe z7(M5!ZPomzelq-W{^u=h{ZQCBk^uuMo1x8_>_eVPdUTs-Z|H;}MXWigJj6iueX9Jr zicBQ(b7dMWAAs!B{(>)Pe8RERt5}e(K_sYaJ7CnpTgzm8%eZO@f9e?73>FO|Jk5oh ztIfkacN~w3@*)_xv522*v!-Hk*5@oz50(_k^2Gb5(Ws8Y%H*L*IMxUb+?^tup*|;u zMl*{Dq-EZ-@5@>c-$ePzQa$sYmcg>^Zqfha;r60!Y!^WhQ{I^yB;B;%P}qES5O()m zjyocNDX_4sl}lTzPlWa9^1f?`1XS7ud!83b*Ql&^q16q7b{kIpHbQT{su$pL;A`)w`Q9ls1ZR0-W;GnM$MELqcDtlBu8ZEkjFTDnoQ%;?_Ll zIa?|agI^XFI|w+N))A@io4yg8F*S_r-4ffX ztzVjwUoH@EMyCVm*wOf*Tb7Op(2ht&a;EY<(H+@UlJZD5KLJwTs8N`?)?TIXd%Rio zm03exZX~y7bg?+?6SPj?y()|aUPs;mZBhkj@te<_E=1pnue}uFz_!3R4mP!@Sow{< zcTTamOOSkfuw1T=T4VfKf58G^qGs_tIi%1s!bFv}DeCdbqF1`psNXA^#aKR@w@@?f zJCgT#)`o`@o}(y4q{=7<>1^bk0WjukvHNEP)cY$``q5%HW{; z1J5P-_AILwN}7ZYNok=tt>L9^@h|Bv0+d^K^Se;b+`QnPplZpLIT!?8LTM;i8x*;H zxFBz1!$o=7H-8^EoxVq#Q#X1}LsC9L-b)93F=yG6kUG`KbWD%0tMQbD&ozQ>RdZ?P zRVPPuE<)Lw!2hYD6Ki$nK^M08{g1Nq2lL`=c+21I2G=NS7#&D=)ek9e{=v8lE;VoE zzOM-40#SD-F9l>xkSE?4(K}L(FHOVX$Z9+kypdyLD@Lt8HeveT-LEP@!{xI`E#7P9 zY$vVd@*GqAd!ZGno zrkU3@IS}i!?1;#ia(0ZfyZnU1s}}q9!5$KW=AranbDCUmUsi<)Z;|f{h2wy69^}{F ztGnVQzB)kUmxGkLVhKk1#ZvaDnY>I~&3OlB645N}apAxnl5zQC1qSp|jw|3Pt}DoB{js7?@%?7Xmbdr~AIITNx=W6em2`N&fvmZ!SaVGu)bfX@ zyxMdJ?+QxwGy_W3%SSwaMvbvq<74m>vPmWV0sKF=ml5@-mVL8Tqt{|KR|7|kHZsOA z;U<)lRZeGSb3p&?TWx)jztT;V`~w8tmhzq*Lgit{SfCUwee(|l>7bI2$*9q~1fjL_ zO8N1b?2_7-nk^D!#1;tM4m&!Q_PH7#$5m+Tlh_Nnox+G#ib6X4uElGpn7|BO4?Jkc zk&%#`SE~@Zm&KR8eckW5S?)yyrfpwKEh3T(5dDHNA`d_%1hS4hu3NY>o!aR$-z)&N z3EzEz4X=JL*w6g+1!u69G^fg~l?x}(byv9(68B|3I~v~Ae|?xp96>&L@QeCBD8(Mq zz6GUOzMsGmULZ?xZ_>bn;<=z3e!Mw-L-W{iVEZ;W0Bckjt1CIu>(XOQCEK=LQvi@n zni&DxD~O1ETaN-MvSVNx@AeI@rnZ}aR)s!dCY}Kp$_oULYxR=1)nD~Pj`s40K|}yk zvb1RGWF?eTY(~qIs55(^dWSM2`LmL}Fk-ihlTOK30lmnpD6KiPNwjP%nJ;Jt?|wab zn1BLDf5$_~U8xJ1&wtP{xO&}K{Ll)r4I+!mCcDf)ahv&zA|zQK;_~V;8woX5Xb7eh z)()!EMg-8Uex*77*NyPonqsuY=Ru^=*Y2<_k}1z~t8BtH+AT@tUMVymyNO|K;QREKFn%(%%cz7ptl`C4TTTxSL3;xF05 z44)sK0VvIo``Xtld?I~Q^r$<98KQzUfJ4{<<-dV5ax+kCcx}kLM zQI8x8NQmBTh0o@LMRs{#`U(Pm)U}*1{QqFC{Dn!h?KvU69Jw!md97w=q4Id<>yO|B zVyJo+4ltehp@W1sOuV7#OL+)j-Y5(a^}yJEJR}J9)cC^ej-?K0K?70jP(-UiSpnTc!vmf^{}ux+;&%M&AiBHjJ0OW->^`OoZ|15h;Rp zsOsn>+rh0mNTr^ePB6ZVyaPeN_t(s6E-R2o?UW}`T+Gz$(}F|^uW_Bw_LJcn!5G+7 zX~;9E(Q_PAe!;FGGAIz>4=n`fTJu|5gG2|rBTk2vmPWE zoK-06qrWxsB8qO*((D!Qo~UVp>7e8I*EAOOv0_(|+eMOnm5&R_xf?6+Wda*b{XlpD z=c7kv11lZpk!ayuV=HU7xsJa!Nr2FPvS$6cAkw`Zl{~-ZQG$ZKGKGbEz zXc!4lHi2W^Sub|BEjMVz5JFU*Px7`aED%}TevF3h#|^ilZ?to)7v>gAs9rQiicyHV zD}+{n$ayAYF82VzG{Mis4;dtXC@gG`@DChI%a6a$LG=i}2#_7>m2s#A<&=3qVtT4k z=mFjz+w6(E$;!k}C6PrGoM=BkS-ZLh-g?GADKdc3bC0r>_m{SA6xfTXn*NgDiSJ}( zrjIrM3rk>3GiyN8(8}ako7`kLqV+4tLLLCGV1rDk{M5ZuzunUJQW=}WySp6%`Geu3 zJ?qX;p`SkL6Z7RIbWxo<^!Q=RV5`{FL+MQ!pLP`mSckC9V`RMu8+_ zk^cc!3s8lR!x&FT8BVDIm`dZ2NVS*#qgZ|4!7Gf=yVXF@jbX4u-I99^aFunB^%IQ9l1(84zmf3%@xYB@}m6HNx# z>xx&MkE*>-ahwix7Dl@$V0NX$TP}*${18M`r_nk;g zn9l;i!M_ED_wb4mYEV2V9l#A(70Y!z1YU4aneh9b2mygR}B;D)J_8)exQ~}iZCO|);ZtLw5C=> zPxW`6bu9dlt$%Bj_@>-Owu?L$MI>I43t7a;9(u6jMFnYv#ru(w?)rnp59~nkrpMbq zPrvcagxzWwiAOn`W&mg^T-ygHh&7as?js9_p;V+8HlX&?Lm!e-9=)c1f7&0@6JBD6%(j{*87tyt{dKROSV>{DrN z{G}3CYhwsO7=8qhiCQ^>&;ZZZ%p+3(82M^!I!6r%n{v#MqMjL4%0uWhXU35S<(2dI zy_bac$ypYfwv7ZzygBk`hkp#TKK|>@%?z~|cjR@R!}aXuWnj%i{nJ*V2H)GGMYZLBrPh*j10 z>U@WXi@|`(Z|j8LEXAZPd?QS8`1}#M%ve?Yj_m7>w3a@z^(B3O{3O$5x2&b`6O)ir zK@;3K>{0y{Dn9Sz>%)?XvZ1+U$N39>n-f|ykw@8Woq0oV*VxfgUG8)av z_n+w0r9T!tWyVIqsnWT)4W=uQp*(Ml%o9V*eM9X}KG#>qId#tsIqlW_;`_b2dGS-x zn7vbECdIG0{6?Q^fu(?k5tl)qc;LLO9ojlyn;DrktSP3R1nyULOnazU^$EGQx3OyA{x z&2fHSb?3^9$6Zyr^V7Rh56Ro;jqRQVyd!uHUw zY*PoPV52$Q7Fy%Ki{TT8b64p08XA%w*XR6e43{-RVEGYV-L_wHSgBhMjEvXcxtl~B ztaf1H>QD1JZy&lOU4N-n0^+Kkh}Rhu90htx_Z;nfo*3THk(^Pc9z4Q6|5e4O^Xp(R zb@!uKRwx#qm1VUUHi^eA$cKhJ*mL?WG1%y=4J* z=cR+XUtgjclN?1n5<|dU#JGlF9lL(}##aTv^dLv1n98>kC+OLleHg(wKCqaRqfmP$ z>b{+X6z(+gWJ)R`qtfF@QK0tk9196fO$G107CDS;+$UcWx`jY$6%ka^+Bgy=49@f9 zRJ<6k)VxXJ4JVPu1u^Rf_IS7sH5B8yV}Uv(dUqdUm^bJURV2dP+WqGeJ&0X#R7Tv5 z!XfcihAi<0#i|?h`Duhg9ZPutJwU?0qwL0q?r*WKLOMSi|Gf8yAxYI13c=h>^3Yo) zcc(HZN#L6#G|6h|AN(^26;~H=CrixXhk^rOEUL$45ZOJ4+0akwP56Z~d|U8nPC`ay zGWR#2AHi|S*dYDM`}71sHmBVJ=_wS)FiR^DO;A`O#IT48gw`CNQRak;)0C6bTHO$I zp?a)XC8-C*lqAb0K)>7;g{@=V1a$#BDYT}eXh8eq0h=o zwb1vTnZ4nm(8JIf+;30@YR4FIIcOd1U&bk>ottkFvd8ZUS00;fUJIVUkNib^8=wBJ z@$h+Auoy73R4-8%;O7_3`Bhi=0`E`1Q)LBy7-jpw!L?5Jv?e_zH~`>HS5&cCz>Oszd-g-|egW^NDN10E06AX0SXDy!xWJR)`$}ps-SZ z3Z$8bKOhK@hOn$Y@y^m6j6#3sUI8ECh_Ka!ITovwmbr=#$<}}i<(2o_>k4FTT`sH0 zYLDdw-7N%iJ%8Fu5D238zA86wLY6CL3o^;y^!XgvNB5WU@_n?b4b?@KDN zxGW?8?N}>pfp2OnE)YyIy09%m0*T5q)cXpiUHgvBU5y5mLTf+vX2`4|Jw=uiNx+n3 zDlr6t3J1*q0gl*!A6ciLA77;GrbrwB@s~Q|>;pUxz7Jq5RC(X)7nP9aw~I)V%nJrX|v+oy(Ya=^$oUZq@=UDAOs4uE>b zCD6QXnd$PRk+#>tsuWQUb7gr33#2pD|CI#w&;&cXUK>rx-x~3(JdPib^@YA2M`g7B zD$WJ z0*G)SAoKV(YJw%dcj9mtnt$lQ2q;tO2!&MS=f~^iO>xMnP)QddlMlcyqYtlh0rrZFL zvitNzJc(QJ0&J&`Q~%wTQ~FRAVBIB(-4pf4_o7wLB;?HsuIqs|SvZ4H|4Y>V0j<*5(X;!bVW}U80El{k%al32beXCDiU)uA+?jC3y?mN@vesT0Vr=FMfTHXw%b9y7t24M5S6)2)8tW7AZ z*Tb~C`;OKLhWQ7y2JcisyTn}dPI)HPOgI8~Ar^`)(~=OmudlULqm1&mD~2n42Pyyy ze?WmqLqtW^S#EpS5J5f@WD&v8OK@M21P6@8!zsu}qtB4feSkUeLtAVD9bFlKC^ss< zeaW9au-8I6ShYJrqcFnn{ei(9+Lc}Qap(u_gxUjrXgtFBN-rA^?Eha0p zq^}12Y4(dhud#>3{Z!A`Z~T=|(Y|+{d5mHvq`2eHz$?bFKqhC9nlhwRiSdyPefWUd z?IZgTU1+&eSY2?L)6o-llHIWb8k*U`oJEj!UOTn}t33(neHb`P3CANzeO;=3MPf{M z3KVA8A(HLv4Jfbks&NIG_ObhGrshyScd{D&y6URqFhxh3{Bc~Q{29C>gu;kv*1Q0D z(S3iIHOt?vgELTU|Dc8dT#){f82|SS_8$MSl*HU^nYx6~d+>>nkTAo7f|5PFV)N|= zD3}1hfWQ>-Kcu(~){j@vk>5-81K$`^fK)*L+)H8hP*8d&K-2-;Y@cKj2goHd6ebx{P_o3dR|sC0konXuO>YT6YF^w0 z;#@p6bMT=+VE0P+Wn(7*!`&+&eHubD#NT@s$=1XW`j}8s#mEACA-NcQEodF+g90Ki z^>-3=7R(7C^>_FW$)Ca6zhWuUyF^d-+QN5m3GsQ}r@$lFLj%+e9uJfSZ&?`$HN9*g zSCmdn4ay&SgH7?@YsMI1fkEj{1B-V0r+3nL7j*f_AAJeuvwHY5ZyfQITaW7hw03&E z`ZV8K0TXuShyD zfr<5e~w=04pzt&MIE z$Pf4dmX+^50bWeyu3y96m|sqY2}qkeK->4N;m!3(zyLDPE0t<@_+IU-QYex>GFjSc zrrQ2Fpx^Lw1U*&luo1~GnptscfB0@?)gb%eLE=H!;~x(PkIq5qzX@rW^(Su;U-Bhr zz;AcXT@~-Db2pq~5mL{oh{yg25Kw$|#atN~TjW>RU15F~ex@2BX15o65c1Qkr&a_#+LcEx0HXN?TgQ`&eq4!$#J+cLmkE+F*l-=rreeKm(T zIqyBofI30OD&*P(k@U}mne7e|7Vx{KX*p&3`w9rjw1DUS5Msm z&Ua&oGkGoN@bzb6HZN_K5xe6rN+63|>jr)Of6B%7j!06iXdYYzejX&!SGK1l?}vD^ zh56vE(C7X9Wg*Qx%hUGu&}R`O#Fdv+nW$_AZo{0|y{feKGYEM(1=!&HYvK!fyXRSe zczn|XZowiUJ~5#jw+Mo99B^^Z#+Lm2Itfku zvk~!MVuI5Kk4s8jOL%wTy+Hto6;VKj?!S@4@UuMt=7WyZ8koFQny|6rfbpYwulc`M zJpMGEDPE>}PgH(cHbzF@GXlUl{gWM;T9RD)MeZaoNsi}Dl!{}K zX$F*u)@hSG>u8Q9Ap(K-#f=U356y) z?Z!Mo%&hiHbppBnF@FDD{|SO=kHbTHM95tW%~hGN2p}ky<_uKJUdmd}x~`PWxFlcf zwv=h0zx0W;zjy=-&@kg{OR?FpB`^$Bi*N82)&AUB3ACW`jrnuvpmWQ*egh`ihhFz! zN|8*J8<4D94ld3TTMLT)S9I?nt^X&=jZc393kUVt75Z;#_-8*HnxC=m3&Bfzc`aFg z#)Z7c-ic2yQ2^-{vlKIch}EFA@@LG3v_xch>s-JhZL)LxL#o>v5?pu;e&HY(nsH2`V|$)NM{;B2o}_DJw_&lw0hqX=egjl5|oai7kea}^P{a>Hsr zo`THWfTj{)t-QVfJU2gnxlE91$bNhygF<2at8MrJt){k{=@c^p(*$~f@&GRdF|$~L zwfqT?3splVxsIfJPPhnk8x00*t0W5<>rPB2A~|3v!gQUz$UEGpq1z zV-D1Au7##zJNCto4Yc|=-BUje8R73weiMK_Wdh|c)bWC6uh$n1^6bag_Tqsp{v4R~ za(4c_b)b92k9lEbO~g({I|!;CY_K_phZ}uz!q8+6aAhs+QwK%DQMcuUg33@n79j|b z|GE!fK$%S6um?hC;xbet>wmlKdEU5Xz$e)J_u=D3- z0ECb109-DfEQQGDhK%YOP}&82N44I;>(qG80ME1`v?sQ zpw{K!LOvzQ(C>4MpDOw#X@z}e{O&8-m@B#kYXhb#;c545gzEn3qsG&ysM8n@Q7b+Pn)LU;39x|p+jm`5R|I~`zf2Gm zYV;fSj50tRl#T=y&MASKS9&zasK2a$Ct>D%?&quUZ|<6VgJBYh55|y8A8Q^~(|55; zijCrxZ>X|EkI)U|OX@&#&6(7K!_CbG#an+q?C|fb2=hY%|ZbmNw~g6-1a|j{qQeF!lTgz8eHwZrg-B#Gv@YGc?)BU@A6rOl~dx-%QK0S0` zSd#tY=D7{r(5dhU`aczSZ1^_D06VTf2?m{YN~$`7z*V2?0Xnyvn$qdln%CaJZQ**( zV+BIgOJyJBoM#Gafa=&keH2N1_X77mXka1n=o3Uq9n!!LUHfLZ~|Jn`=zf7eNN$c4}`@dJZrWeY=d?l{1F zBfdM^S*ryAm9}<1kk_lGfdb7;;HQf%X&RKSmDa7vz*`p zOxC=snXCJSmpIbF74`R%^kTvo9stK!6DxG+-=i9>AAMO%)%s9>22*T@@S1Fl;u3 zN;4he4dU`;*n@hl1F+lt2_HR$ZJQbnl4j7Zz=V-T3zqnOc&6FL2ee!5WG|UAOP9UT zF}*0ubRC!|0d3F&!2om6H22nwnDTajN38b-PDP;DcT!w|DJHY@EKGZY7i1U%bGWtO z_AqCla>BoTwUPUX1&#+qr#fv5bhC{hOUR_cs|`HT&t=t8$$uyCmcU; z7Niy1@c+v8Hrh`Xb!ocX@Ux2=fbRYg9V#8Pi)QQwzHKh;Z;c1JUn8BLBdWq%dPoFV z#r`-pZH4tq3-ji?B<=r_2>M-coplS)9xop0WYIiG)=h$mCFR*&c8++p|~+1V){sB^u>y zj$#*T+hzUdc(-4cE|FA;V0-#jc2lJVXMPsP3-dlP@mSintuziGkE>UTRnswX;A!_a zPBy0zKH4Q36*s9c)Mp{jFi4x(^+}hg=t~GpnnxNdIq3a4RaEB%sJ~HfGD7IQckNBQ z*=bGk@a{BF)q1SsLukT6>BgdMFlSobP5=pzcNgE8$&Jn~{=~}lBRrw8egW5+ki!!n zIO9jRU2BgrRZQEPN69Y6#1lDgCJ9vMN&75&LUJ%q%fcFih7I-~DC6v$6*tq=0d*Y} zghy!$%1Lk#lf5ZlgCGLv_+GZa3oL)$g{i<&tr-srpMM0N0Hc!feD3nVBMm{^2oKvA z8@0o;kI>0Je}Y+6^XE;oInq9`fSO4KDRS*u!K#L~Uj}q_@DKA51H^)!%T0O>)HdIf z=xqv_2~{Sdi3Mn&%Gzs4(2_O`S2ALF68{!Lb}dt!=bzKjhs+? zbYI18HQq~5eT~du`l5%Y6!7na2F}ny>q{CCae;6AF;kA`#-v}=VxD6I5#K7{uB?MG zIPH~9xdJ#OCq#r!yq$v0MqL~G>Ctn+IlFasl8cJPf4@i0V8@?D(swk^#Ra{+-@$Ll zQY=Se6q1mPdr=upcpO&Zc2(^ddkQQ^z_nwEDISL%3!W_5Q}3n2oTb7n4-TuSshq;b zeX0GT3X_u60(*IWIJ5G0JL=*MIBp5R4(fpH-0d(etNSbG*qSrZ)IVha>ey9bZ}$wc z%fcUc5deBvzcP;}XdC(_Tq!^^Rc^YrBp~5?lLww@g!Rkx+WN)*lM3DU)Edbj4pdHA zX$9@jb&k)q;f>6H-CmGkFPkgPn9TqYbYf%2&4g&O zqFLK((YTj{bJ!s71{g8h{uHfhhc33d@K{o(#_sV`syMK4NV=Joew2 zF-TIiGAZQhN4~R({foedD!WHj@bS&H`6J&z&j}8yOL+0ixtftgj&Z*Qb2cr9f0FMV zYXDlRmh6q7&PSRK*dwO$y3Urp+?Q6=)XMgmL|`z=2pch<@j?4~4Nz0KpX;AG))aK; z$ns$I+XzaZwuW}e=U+{$0wLk``-TH3Yw14H7s94FAoa`L(V-1S+^f$nv`yW0(8clC z`0nh4PCa3Q#Je_~fy}jmgD#cs-!w;%J8%7Au!WHH@gHezJH86<4?IXnzO+D)=iNU1 z&9g=5AlQOL_z&B7dAY!N(L|Ih@PaaySe1;Cs`X#MrB=UmcYmfQAG5SgOhk|39=reD z#!CJZ+4Nz%kA>sZfdK>Lj%AU=iXHU7V7GGU$`6IxGzaL!m^d?Kkc;9m?<>>)nEL4M zTr^=Cda(7F!&&H0M0(|TXAFC*&Y~P>-usT{e_KWm0=M@D6k@F%GSNHOANk^*?Q;A- zw`}1tYphQI3(p|fj84kNI#AyE%wj$txV}uRDve^(_n+p?5C{0T`3|QCD=Jqv&Pt@% z&cDbNXprNuHs$sR7>dS_vk`W)lw<2*$Nzhw4>Ln~^`$i}4-5dW@H%q@0=>C%iW=^L z2MR>dG7H;MdQ*^N(FdP+rpOh#Is3oHqCy|sbV*;>1U4e^ojODy)BQnWXwkLC)0~jw zttSJ#LMt0nxx5`O@h^*^{P{Pzk~c~5W;;) zkKxj$`by}fNgMAT)c(5Id{OOB!xci7eFOv;e)czo8Uq8Lzmkr0*ZfSE{QyKRpka*+;fG@W#-CsZ^X(EENo>A)AoDQk5J5-}t57gPlGxSx z85iDF8B%WrwedK-@Sbl&K5(YQIrb!DsIr717h49Bwb)@PW}{0<({c5?Ev!orieYn3 z3*R}+cH7oJLnHy~+P0(V&=Y_m;9V6Re_({2SAd4vRbR9z6Z4o|7{BqlG9xC8Ob!fw zQg*FN>}jtqv`XD5z}}P1JGzcSx`;6_qc@S}XzU-jzrZB5?MEO7#j`<5na zS5p*whD`?y45@K@qcx2xWFaal|(}K ztAD?E?8K6gI@R#rpZWXD8b?05`kl_i*QG;8UCOx%@18%`Mg^a_ke&id4NScU^{3uu zx=NbI4H=B_btw{9rL{zKHhXB0YghzsnixMdgv*x7$v2K4wZkmG1<1~n|+X7w?br2L%BJn>gvU(19Qk=;^u)1$bXlXv7;q^~O zHuQEJ`*?OSS=zF~(c!bQr*%)DdzU`^P4{}Ye*^wxPYSgW`JQFE6)Wg7h325rKCE!H zp*SAzp`YHYlVPEq1^mOvQUiaj3-M&ggXi_}=?E!8=qLkHjDfhNz(O@SZG3zO01BEg zdLDj1?P5lYypkuAdww^OZlx$o=noh1We}S54a3>iC@b8p<*j3}VP+JPoLzX_1r}+> z8<>)`f@-dXGEr^|{~Uz5 zyOj@$9~H~Qu3#xqWsi1Q-UMPDZdo{iNMF88RY%%-98_Wu%rJ7+%OcxW#vYS|(MFIg z~8YhsvqM>)XoXYGvFFEdA$Vtjq(U*L8yPQ~i~Y=`-YHS6`t4 z4DKJIAlf25x4fv{Ru@o->KpPUHoXVMP2E*!3|0ELB%oEI!k5Z6vopNqv*k*0D-t|g zdq5;;fkV88Q;ol*1*nsfuDm};_*y%jB6;!4WPlOYlx#d5?}?!&|C!l7?AZ@8OqHUn zHebZpU!dKNuYm80H?xJ%%bOpX406|$pQhfSRx9oo486cwe=~mFP$u&c2!#NS)xE}< z7hV-xo1JsuZF({!28CEF$5MFblG@GqdSLgq{N)sjii96*eBfaSOt2+ybuiRpyn`Bm zHHf_@c??)yGBxyi_|olV_%b=l@`r=@g6-8yfODe2)Cbq_9?byM%KPe|`XJa@!DrGA z*-2~WKPJ%Gjn`kvUteLF`fj8b?*nHE z#C>u;b^}YJJc((t`F`(n0PSRN%Ds(ldnE`c(UZW-lL_5m{{`eBl%Pb2jspJ3*zd&h z5|B5B-TERC-#;E~M2V#;s5RE*5c>4(gTDQPEYxl>5KM!63q|DsIP(!6HDl5yd>CCtV#~bMcM=C zG4q;;?SLXkwe*vqNBL3R%fXXU;o=1w$POL>Hh4hT-$-lA2eL-9)E<-#b0hv&HEBU5 zv9L-Tq8~L#frGH6ckom&o_Q5psmE=B^%RgziCE&UA7A{+I8;T>JL#PWc`~tk5FZohHd~-#3vu|6G2y`hUwxhoFJq z_=!dk8K~cQHaJ}y_OPDR^_UFaEZOdLs&4pr4UsUUaCXW+$0Pa!txIBcwA1yy8v{da z$0*nadkv@k&XfSl>_gxNul6h&p$3gM>NNns?+;~mIrOaW^7=sbDiV&s?GN6vy@5K= z#xSmlo%dOE*dCzA8Xa%nVg8CFXtbF00R-Z+^xA);e{Ew{V8oF43IM}{BKtam-E(<2 zpACLi(09(UYSW5}Qr0#R5c)%29Z3`5FZ`Wd?YS-!&7?FrGXB}7h0yBCHRzq^W1Wso z9W#wn5oY6=xQlvEXM56ZJM4AI|Vz3_4$g)oNUyd!yn$!fHp(ttcjTQDKiUGg(bp7f283oH~1;V$#s&o`HycKRSAkL zxG#g}KnvWZ;^J#@x;SRuO4<~P8pxN_Yzps>C|SPyIhZvQO+B((wra^36~JVwXft{u&LP`%E_{t?>irx*?UN6tln0{(q1BXld>p*|ubNB9A@+e~G zRGP3{>M}b$1Wc>?<01ROOpfphg7-)2NY)Xu+W`A=z=gvZ9=cdRtXRHYbrt1A zZ1S{_w#q(GT-#vV&!#%w+N(qIuk!P;UOw!RL9a8upE*YzgJ$kC#PjfPp0l2D#})gZ8m_!DrGdkv!8li;3Jj5g!DG`mxlYaKRmeV zvF3sX3eZry=pO|lA{&xTTeY?DhYr6Pw2SE_H!ir@xZm!Rtx~1Rx-TtfOW6zi9x_TDyMZ>frX>7*&w`BkiS#6~yjAB;UB0)V z2H$uW^qN#&j;pFH2eOF?w4A@Z7J2b$y$(lUK5aUMZOP8e3{>6%*$~<`0k)Opi|vEavWK2%<=doWIFK~X1>S$B3_>~m@ z?u+tqBd3uprXQ&D;hTHY(>OTW>^I_I#C`e2@XGsYda7;#8{Frx}U0Y#5AP&8YT4j)W4&xc2 zk2C)Kr)Sqk({8=V3Ib6!)?%d8YoSw8@?wb=ztaJuZdO>Gd6%1#?Sx%CpIpZv^4N;5 zf3KB)M$206D#2n?;OI5=qaiY#@Vg5d9XdDYRYo86O)}rQwVRdSZaS}AV#VUpBDyD= zAp|QeYn;>_s8?}xq-#n-_KL9_^26x2-7SYzt2|fI#M`WHWUU{O}(mt@7!+`33Nbd31iiA83y+K_`*6yT?Lfjdj!vVW09!0P)gN*F3$cGfur@ z=SX+J)Cdkep$V*sJq zhtRspxs}x%D%mgXMr}GE6KJ@`e%-W6E>5_7C^IHn^muWk1EoOvY!BWNMo*nI6VTHe z{6n2>Loodt*tl7;U=)ga$fA0?-(*j$I;;o43rxC_D80ut4Phe}Dt8p}^&-S^NB-XWkN2;;?+8L; zou~n@K=>Eq_(o!Uk{}B)e9_no>wN%G25OXmTA$Y#JC*mA{IQjd_vZI<>Gwx}vj=F2 zqMmhH13Ur3m9?^|Pb8kW^*x1unQ}3CA8i$d-{`_V;`DA6=$7!JS1PSy80lgTB!*v0 zc2UtRXStYYP1D&$jx<0bgAL!=$Z4{P3D5*^%<~kOlkRw{{Zj;#q3}pI8iJHNsJxU?ThdqIS!qNY_U&q(J zqT-oZwk!HnH?b3Fe?Xm2n~#u0zc(Pyp#GKNLfY?M*oBHQm^ZU7V#RRq7484t8uR>v zwj|qtW{gc9$4KmRl)S4J5F^0O35&(Q38Q-K;!Aj&g7O$S2-{!sl$9A!;KC zw1;59HIWgOp`#6_%l1=BU>7C?ABGRXqwjpu5VV>%p}OqN=u`2%gnc?XlP1F8Cs|l@ zYM1>nf2>Y+Mw7R%gQC>DC;i>X2BTm{yhLA&-r_|&@%n6_Y)}-Uvse+ts={q1OGwhLVMiHT?BObu%+MoS zVe}#JVfijc*f!yry>7dAm-5az{_4M0)TvrUIP!k(Ez(9qWBSuu+KRSj+g|A2JN4Wv z=Es2uq};dPZf2<~sLj?JgoP4O%U5`{4MO@PDU~%Be$Kz<`-lI%qqEfG8``#siKnr7 ziOyOv@nOi@7gC3qHq(=^MwrWd-!i-qbKy$+mG^ZA&t6MJ*}B=bw$H{Z&OLvr_}4m9h&Rpp6bRm& zT5i|3O`Z+9q}y}F>m^V^TJT@lGGr^Y(I4SeP4`1~OzCT_TUvAM$53E*MmTAkKAxm0 zqdI41I|#n7*@~eP02;QwL1a!y#c(Uf;3a*`718Z&Al=;i`K*L0G6ym0zndH`4YqaF zr&sp5oM8?G6@fQ;m`5x(t08%23R?}q~VdiFB?Dz6j; z9;zI9n5b(3Z0kR^y&8JBddq06OCyv1fhn z?x|{BIk{p0E%&f$Fn@dzX{2ZQtl>PIDa2oZC6~}>j%0p-pxtg6Lp=HiD$YV|g!y)! zh=a+1PCcpkzecs!BfxTmIB)iLfKYtlGb%f---tv|0x;fvUhr^tXZ}L+RA}8i#ZIc* zA3)og$%=&cSkdc(C|4vIxjG2f!q3rW^GvecJ>Y z_Zre3II$P5Vb&D#B@$Hrx*f6-t>~5*G!@+TGc3gCH=1+5cAQX(+*jRjZg&G~dK1{V zucf2MtOq=wn=Yj)Ga3=tJ>KcAEclxNOkau5Drr9#)*IQGc%MAByy7`=UyGps8Z;nNeBZKeRQ(qTZWNdS3_5|8f$XldO zJ#P2{*))NKx1GyBP4)S*<19lxL~x>$0|v%gsyJdX6W%W9hDN36*g&El0?iAwNN|{D zPfz=)bBdwrICsPA^lxFu<%$4_6X15kYG2d@e&w2ItX|t~dzD&5>3>ErY%?@3@ z0BS>bBox)}eKqywr`4_On+=Bnv;!vp1y0Kfg~9Y`rMG@ddS>|KMYIU@{1ft-zDvYM z^~S32E#&!IN8}okk6kko+{Lq(;I9i$<=$?YNb8I(8te2oEBqi<)8@*Jg0qr(Xley7#w~o|gcM&!>Ed~l zfQo3tR8f=SQG<{^;@^1ub9sFX91G<{YIx(6YUNG;^Sn~OaPP}%^#pI$pqnHx9L}Sv z&A3T5b=aeT&~H_7v0i5PHgV8WNibiBBf1VbU0Srndw0Yh1|_qc$_*T*j)_X4{#8Cg1CUa-VAts zSJDyi6c0`*J#|>@kf!5anV7bHykNM(Nj4jXB>~_giG%SiYi)gh+_C-PDO{rf?k4&% zGi_Vk1pw?2`SZDeqDgE(xpq?7TFb;NJ2VwD!~yq!YZK$kl36}_l{y@qd>c*s%U0ty zls7RZFfE`SpFw#v=AEhMs>_Xwf#sw8O8FaiV;zLud3Cpt;LPTRr&JZ?kntY*;i1VH z3$wq?u6v*4)m$#ZuJekObqt+h@;du(5T&c#*E=TEcI+t=Qt2k>DpKc&P!&`M=Lfyu zxypE?LYX=VC~_ql>Hp0Nk;>wo%44+*4(P7vZ$gguWrF2ynvJl0SF>}85759QI5ZG}1d`6sJfsY&w=HG7TziUrO+aU9*1uj=!)c_i9h&1Joahk6}Fy-yr zTYN zhMK6MF)^^`(}SCs_&18XabtHwC}Kj_JD1xMLcIPaqSS$WjnGk`q&&$P32yR6bZ!GR z?sn|5s;2q8c+|P5+1`4E;Z(O0fr*AjBsiVoLh4_`_*nu0xrT9;(rXJ!#sTHI{kwq7 zAavhJX1??T3l9E~gVhiyu?|fORYR<(xOMyRf<>qG0!H>N=>90+_1UhGGEV)XM}t%+ z!#Mup%Q#zf+5D9W1-_6T@0s!WAFbW)Ol)%r;|c%#($p}G3826eI(@9_i4CuW7sZ8d z&)xyzR2~Soi5{y0!0ha1gP$Y!JJ}U6rm+uN2ScG>bF?;SKc}>hu6o!+0Uf8X@|Oq9 zhlv(+)=7M3{sjp#zOJO-kcitywu}8L){|AOsSMZfsgVig-^`R>NO`VvU?ull^Gw44 zk4WL)!~iA86HlCt=?&<8*fxR7aqYgXaRJo$Mg5n*JaOoZW(I~*h~`2 zIT>xV*}fV>$KcP0@Ra#oKRLRdMR<(0kT4O-?y{oUaTn(+N)Aa~)CH zip_i{l5qXq9SX-Ml>15vTb#0ReE$y-6Z&fJ2fMr+#?=Fu|A#Ga_6{+uaN2y~^&lF; zMSXYpZI47pldh1S8vME$3U}~(X+|S5Divop{lx0GGTNH^_xAc_)V7D91D!kbn_!Ik z{&fu3^9iLb9Vo<)a(Y8|`I|kD27MK3v;+AF81cPkmXIF?UEmJfS1wBOw=3YRgJO-i z>5_aip}b-E$lvdp$Qpq3=Nh@*^Wr;Or=(1b6K11@jnbu_@X~kCEo$Sl>t%)YijN*3 zEiC9!c#~rMlJ$(`v5xXeF4sQ(NJz^=2faF3rv)DtIaA95?L1xKk`D$KzC+a9;v!m2 z;}RrdAHVpdAxo*N@NG919Y{e2o4JJ*N;Rub=TETs&!N~5Wv+_iu9M~GuH)(vM{Syz zu6z@ftWqEW6n!Y%9*`IT?F);@fs8SV~w^74*4|=#D}0d zfw2G}NJd%*CELw^mXfMou7Hv-fVmwFjUD8J6W4)P;pDkyh{H^%0pJ<^wu7da4O2RT zxY(kg9CRiUgtb=Py?ipI4EY4ffarBCw$`KvBSSzaFm{N)t61Cm>t=AfUE_nsMiK{+o?Qp(zvz|U_7_a#6VEvYE~ z_KSsmdwl^rI5q%92tmX5>A0(+fm-(j_*I8EuLiQr4x%g@(gxQU$b7StE~TeYlt5Y! ziF>H1!_P?zW?r9op$b%E60Buytr#Z1yn?e>WH;a zlORZE?uDWoxFL$}8bzZa@utrh1UI%G+H#ECxX*%T+%T-nqwD6A@46;T{^nz5>h^mx zgAFnUigHpPwwHYsY?|p5FN#zTBznvUssRtaXS$@ zs74Vf!wc&a(yJ}@ar^vp!HuG42pQFpP<%nUc)M3`LS*;=(Zm z6iH?ybCgK-<6}cceE+|Sk!~4<;3**fIU!YL58)(Y8RF2Joji(SrM@{8B}3hnmllaG z;-N72n=A7~BQIQAZ%V^RJc}+bZ+b6s``@{xCPVwE2X7FN>F3G_kAx-aCUstCeT-yBk z5xsz002n32lm-nQg#Q3Zmsgm&vBxgR?x7jK_R@C!OKN-{QA3Ab`2#K1YD`#>M+4XW ziSiUH+3VgSab?korU$#5;mu~;*X&EXE)&g=LF8|U3^wkmHHJt1`JnV)`#TQR(~6UG zG>?bSX8}#OWE*G2oifB8l9h6Hvaaft>ZdN`cpk z=xle%j>8zET1cnI)vQ@)AjogR#iS_hUDQj^_${l8@f2{-;=`5FsbcA?doAv`mNXoQ zMW-V#G#Z2FQ4%b?WFSkx;^PnD#+2=1`y1Ah+U3FDj9&F5W{R(@%M=*1uwTZ*Ddn4W zcQWUUn`lym<^#Jg1UO_-+>q0qVZxS3?%w#^i^JwRm zlF?;4kH!TxBmET7PS*Itym}9=34wx$_id5^Uo8jPj3;Qt8r5ylPr}0qcVl&CySVqp zgJ)hng+4E6iITX{6nvCAOK7v;tJIV(!Y>AjJfasVLvS}^H?E1&MM!20?%to?83mPK znQqO2s>3?#TuPvx9J`d;7!1Q}!;i2Iu-l-!>weOa+6~_v`o+Uf==m(z_{SINKdy5d zsIa=eL62D8KCxmys+XeQ@Gk+J{ZFT-uCxRf&oij6bhFj6$W{Q24dYrQE1yv$`Fil6 zZGnZp-YnUKN@9H2Q@{MXl)%hg4nY`=lvd{lSL@O*sOjM{)(@OK>k}n8-l)CP-x+#P zM;~c-nCt3w(Sa`sINa|AI1iw+=&ci&JCS(fhDJ`vX?>J9?Kai~_DG+0N>KaM`TV!f zbl}TwcR?v+t$m~K5ysV61$ zn?XitPn@Ln758IYqsV9~bzw4xBNXY`8j*8j@n4YT?78k`fI0BIAc9Zrlpf0` z3_^Hu^tO-ZO767oE+AqDXkPccwr7oAl!c(-@f62V#u32#dG9=U#guCrt4FS`cW--q1flz&szR z2u0Y3dL!8N3)D@?OIh>I`~`nMP?s=}bFX&3XD4cQNZtIq3@Ruu!VDRPJ;Mxp?%$3&dy#@(K%=J{dqB^h3t-k{|jLCai?Qf|QVX-FId`zctf?~a>> zpmU9&zxFyJB4um$25~!p?C1=Q8JNO)KML;cIs%)yLSMZ~48@V|ra43-*pPomyN(*D zzkLrr+cpUwpd3D2ydb)kV4urjwMOA8?;`0PxJlEX0PTqa>);#97#{x<6enjCUMM_l zTcEiC;9rOV>8}C1j9y2EJ`o!B|Y$?%|pNUMLwceM#9K;bet8HHt@bN zt*{p@T*(96e+uK&PW3=s5EO{ls@2tHbOPa2MbQ8z6FgmyP<}qBb-YdwomDVvqnLeA zHggPrM$hHeF+6dPXq@htramK+NX_?sZ`YkEdie(2=L~&O2WDIiqHJmTj9y6np|!jv z-C>kQ2?4(`(JX_c~XI?M&bbUxiyo7!yw1gOrPkud& z7YCJ}0BjhLQpVp`A%m)b9!RC8Fw`LmdXkq$YW%A&n%DLnP%C**buxpw6_FZweFgR| z)=APaS*Y}z1%$4~h+9TpPEDLYIit zEg#=c#c@$Eagfh@AZ+)aWHx{G>t5AYZcahQ_I@P`bwcfX z{(I+EU@@@v{8}=XKMU|OJ~t+_cGoxOU1)D46m+dc8Z@V*FOTw~A9@i}Gq#?Z&T+r+ zm>1)umgCls>ta$m3U(hKBYc+fdL5+s7-oGx(uVBZdQdu(cXF#f7F~`1m8v=?=T$i^ z3&bxATfy7_)i^ZwzVsijkL0rVhQ99G`hOua=)XG-(S0F$0+m{XIW z5nZL)ps3&pNg|>ah+`XJm&yizCqz z?AA|9k|g_ombtxtlC{m9scTi;W;eyGsMv1YjMNse5p;`~2*04E62v5lphR9kpa1{> z02v7lfa^j|>|hs)T#!rYe6S9)K4B#*NW>BZyuB4`cv#(6mI~|q1Lc|;xORpR5;J#; zM8~wQhaMzWFwju+vg zLe@ld0Bn#Y2#)6nur1{iyp_=M0k-ne@Luvy!69-!n7|OM`iI~t%HSO%c8jmuf>`6jN|^kyHcu<(gpM?X8CX?v0BW)BF>Dyw1gO$&cVhR?0! zo54EM0O9@K3e!i>wKHeY?-#U+L-8QzIUz2a-o-2xNA>jsq4gBxCVmiBfty-Rwu-X8e0{9*aExVnS6!VTUiV z&g9C43P&uz(33Ur@*wwMwEns#bKL&qDo7aZS1m|xJ^q3rzIUd7%Qo6dhL_TygYu87 zy9e0xr|(*JWbwRITnHVvj^ZM-B7tUER|Q%cO3Q{<$#o15bs3uq^4<6M(X<$5#g;^H z!Und_Y)ot`5-Ln798Noly5-DbMJ?^Tp#8hmG1YrNMfo#hJbYvJn&ci3c!&r zx!uPU{!nq=4a%u<_}IS7(3maqwpW2GtS~Ox>1iI6R<;O-%~JF<*Mfd zF?i@bS1`=2&UOFA;k)w>Lj;@LLXRZ|!@=C@r3@><6!@0&Wp^Oe4mKVWc&p7ub^blje&@Jv1pq z8aXVuoqn5zx;hv5>}s2X@A!ri5}_|+Pvpp4>?wG^H?jl*b>CdpFr805L_MUPJ)dSm z&72qomEKrF{t)orUOgmDny!cN;>rmn49Q^!ARviF+|Ti4k)w6YxoVtm#SOto_t3lV zXVs{+sY|;gE~i=mP~Vsi;s5BudyfVOF@I)t!!eU^a0L7umU}rxG@3$7UkhEzdGpO| zlC{(pA6iN@pE}eBaSpb>9ycsGpaAiM{ew|8V0zIOL|`#gmbgZSfybbshgYzokNJ)h z?3boHP4(z23w zY@zg8*X3zx>N8Hg%R`6O0Yq0RjGo7%$dn?>oClHm(dC@JsV{PAw}URESnuoQQPhCn znuO{Nh;2YwXU4LDe@gXoAJ;Ws<+iY-EhnVqhm^=+QD&@cmlAC&_? zqsZz;3Qyv5esF^U;|dMG_`6+WUKSVcb`fD}FNIiS;+$uLe&22QQpC#p_>fT9p0NAn zK)&F;DCq`C10ZpgcAS#wZO8FbO2q`PiM=Z%=Q!2$FQ)QVOpAEru~QJZ%|wUk+w?iw zrC7T)f?3`Us>z~%tw%~tx7(f_sgbr}mbK;JF-~uj(A;k$z2&QhyTwwxbtMGfJC*{= z{;jlQDJ&;AF0{ykLXQb1SA2iMz9Om!@5HQ$f{knBEUeK_W02I5H&kh0I7Ekg0+7a& zucmxr)0p%4*+~ekW+P#`!9bJ)EtKe#Vj1!OILuVp1pC|FG2)T#ZJeu!&((@RFb@99{Ng>Edtkd@G*+BDaEUuLJ4}1JtX|IH-utFcJyTKq z@h!~)Ppe_|>69&nt33JJs+$-Ak@-WWtO>Typ-*=eXm~#CPf~n47H~FJ`=5TFYSJgK z!%5v!)60)0BF_9fU7r2?!GKopH!QExtl(ImgEm5J+}=C4mStR3X2r zgNKJ9cK7OO9gk}St!9pw)?AXiAJ#BrxBHUbUc^IbLieR-GcH(Ydd^_js^3HQFqVBA zSKvl{%aajyAzGhBNy}iwaorKVUjb8fN8N`DsAW^FM*u**GFE}-Z(rz$rdG0k$mCHx z0lLjI;KRLk=h(RHNPgf82Xpz6<+gK82-#|bVus-MM$vhu?6VH7Qv?!z@wf$`6Jq)y zCZ%pNBXp^{$5M22z#JXz6*_DA#=nL(&FSg^(>&5HaGH^QPEOKwe&X+>4ouZw^6i0#>{^tY+SN3z zO$hKg`lHpS+1=PDy9ymgR#0pNBbhz>t?VKFbp-@wP&ylOr+->K4lmx1BZ9skzQup&ZcYM-bN2K~E#e#&wan6lT z=?Rs6CCQIj>GSL-32a~imu2y|O2pf#5&meW1}hd>J8FjSxOwPME3Li0#)my8idUHfoz8$7PmUf%d;kA!XYgGIFGOy9T@a!k$_1=P%Q+Zy$g_Kbl#fV`%*3Ax;y z^JcHO+>z-T`rFlDx^BR&n*rvSai*KWt`u|)POMl+?`B#4;OE%C?65Fxn37M}kLUmg zdgbG|kO{y1^aJ~V7zln$7QOln-Vw2HIiu;!UF>-U8K#A+CX`2Bry*CEaaN%Hw>%vv z3p8~5^-SdLrzz*vQ7cVeZJBs{{s9KZInBj~p!&Y-&W41-wQiT`Xfbe&=HH>>RtEQZ zZX|bSe&VQM*Kei1CRy%39e$D^Lf!d!@`vsc;I}%>bC9%4N-tTIHZlZmH_zU*tFiUD zN8kqIM(9XkcIc?BkXq@|GT;;i+tj!ZH9kH$!v=FrxbMi9zMvCy&M7TO^lDB@(8=x0 z5ZKi^pPfm4cP=A4|HG%1Kf1-YFao`*6!IlTK$$dJo#B()#TtN%D2ZT%Y<1gPnA^i) z2azxj!*9w~H7L6$i^E;<%C4cF z559wP zi)jFOO`GZxgBn%01(@Cke(%gfqM+d zY!J}iL*?yA`rJc&STWpD_Sy&p`grGeZ!pbyl5LN|JjLGAHX!ahuR2VpWplTedt9?+ zHGWB>$lb_wYLU-dFo{Snak35hR>5TkHUA*Y-H5_JK7yH3l=CN2Z$;_&+-kgCw)3d- z({_T+wwApA36CpBI3J0zrswO>(re^)+^b`cB|Pxy7~6D9^fxt}{+W_`L|?;i z7%{DKPGa9LQjr%xPQ*}h90pctN$iJWk1mYokp#*ZMD?nqGB(wQFcOkw9*U&^|F;G;|P6dI@rIbx*d=MD(!Tr z67qd*_HDJVeH0>f(OOCLpMXQVp$hIBp+oL?S#cBi3366$BHwq|RsCx>JKuWed_Xvp>S%Et9CmOob!Wk~37BcBxBhth3oOzb`%wPZnV#|KB;_zncLF3|W zkQyWjlC}_?BQIw7eF;PC@VmY#Uc7N$lH@wLwL zlij&lp?_dCob<5QvJz^QN##2UmV@zbfzwB~TIk-Tr8j9%NO`M*c!;&RkNPLg;_&*9 z=dAWD1lb2YoLsxDO9w7SoWTbJ2kSHsyAYf7r>ReYp|=6ErWg}Q-v-Z!pvp#R7f*cQ zn70g)dOyRlUNOKR#8@1JSadI6gGO;44G(bGE~~7rvrF z?M~j5^sLR^O;g3F8YCK#`H(F<|w_K++Hj=?ir*i1w`C@XrWg`LTF>b*a zF^JogN9>`zMZo?@k0*DB>4$~nE3j}toNsnZESY9D5mmnqAXm{@)?t)d4=xv98scqa z(Qpi}-oAvtnm@^v1nZR_@fvT{=NEo(J0qN~VIaR$!O`~zqp>DTh} zKKWg36Mm3A59VU{WvIi$*>piQ1HQtO6;5;CJkUPEUSRb$1Br>IORIOiXL&xNicryi z%IZ0nIdaI3y~P)3cz->Xb4@&!`npe*PbhL03xEcQF8WU2S zYv6?ITe7CYVxzt~D!f~Th5B%G3A%;G_=WN;aRAFYhp^47kf-Ap0*sPKVNGZq7^R!o zVnvnBufDdK!KA>i(?l7b+lr$d;v?0pyV}os^N3JFVH%>V<_rEaWK{yl*8LCz{wHw7C73CJrQwI~8x6f;( z2;|%7fsgc^vEx@51c`m1X563H-UxVm2;KMEtKH`a^_>g1GBn)72FwcWWbew)$phXJ zteuZG2lgCJ9X1|B*3b8Oth6!m8O@KlAr!P@KNuEWH`eX~H7hH`)!K=VQkK;$)mXON z(8lIU-2rVpl_|6D^HuVoe5;4bP2kd9X&jB%{V|7Sk zgdxu5O-6yu!VU|wWj7pda9$LakrV$&uXLnvX(wr;4h6Gmn4r5zJU2m@FQP>+m`*-m zRd&AhwjlPPsXq8#2w7E3Tb~vVJB-9LL?id5K)><2Py)KP^U=>{U^D==;4PXHc;;{{ z`P4fc+z}*y z`4u%e8^AjYhQHoV6Z>J4ROdAE*57M?!i7a#FaS=;ywG34e4@bRhQsQvYJIm&RcIs8*uE+SViD!ew~TIz9da-i zi1?8atJem7?PcNpg_dKtv~a3{X5nnCYXTcu;GNAr!?b~=egz3$0_u)!D_DLn? zprydplt%afnPJZ#jL#$D1G*!iX#aqJF7>DAPjzkK5%&9l67kA=?ZTKQj*C+@FVt-f zO$_fR&=LoJti}n^Z(a4-DL>s}IpniOK9H6Jh#1*(E*K4W4ltZ$24e2E*?Cuu&@j6T z43)A;W>LSG@lE83XW1;nHnM*Rc1oOp*;BB*0?RjXOB=EG*EwP}TsD z%c!9<+lq?UzKw{<9ZXeGBj(P*{6-;ta?m9@)Ty{dqLdh}Tv&OSbO**9`#$>kajs)< zSbM&x@{o?*ipw3Iox?BZZl`c2SU3ipO<;euP(-wOE9zjnvZm|CxVaBUP00)EwcG+8J+!ER;{tam4Q1=r-ptJCBE&5)%BM#&Ll%5M zFXGGnz_-ht9|Y;TlBdQdU|(%-w9A%$fCQ{*Jsp!O`Di}tC<}h~(Z>C0{xRMMbMQLz z%4o-y@Ya^Is=>$8QlYE3geWy)Uii=D+-)|Xq4OrW=0?sEyJDxv@w|%$JtGZcv9gZTQnPtZYOmYM} zR}gYc{d7<+4YY%;4y$LP{Gy_L0z%Tye z+8AlvvkqnjPQS+=)Qvl+fu)mU@`ncF-o<&HfH`cPt8uhMR?QNVTwnm9}wFg?gl%CCDtuDW(wZ%*~F$ zP_4C(53k(XS0N>cTb^44u~4yh6b39gVr*Nfi5s_n6H4qfd{60i&4_nb+90(=K3dXAmJg7Ct7}4EFzFgVmOWv|Xd}ebk5P5^J_nXl_8G)~wZv58@omI91bxS6U4=qpT}wn^x@3fdbkb8Er+mvOqE*D zB7RZ1P4~(t-D7RL*@K@@8*+Co7Y2KWzzbE)ha-{0Ly_}#w8l*1es0D0Fn?_)*%Is( z;CU}AJtCj|9$p+(WX!2`G6TS>G~jG4q67AI(_sFCg_ji(S?+*+-O|I&v}lKm+rTMa zAJK)N;qUD5pm>SlUJl(Xm*(TT{O!@+3SO4l?FOxy0p(QWUMG$UUX`!nvGhMsUVz@b z9&C<_lLP&?u+#8EL*mf|_02v%QTgU9=68kNh@@cZ=NH)IVaU5gE8UM0q!uV?0EZrDN} zMkEK2Q@jHlV}nQ8ci3nl=|zV}3G~3$&9`Se1 zP!FzhfDAd(8i_tn&)3ID9yY*MmJ+vzu*aG=QelQKJxZsfr0>1!vzE{_9ZXqNrNOQm zriQ`2X|t>ug)bh1Oe70Ymq^}RbU4!=TC5x|-0pfsUg6{ygpb_1 z0C#zQ-Ba=~Ag@N5C@StCB@;jIyFyOj&e?IGxf;LlyFmO;3qN;|&88Nj?&cAQodSf# zOTjzd_vfRGj&NxO5FPLPPrrdl>xGzl7dVBtvwI%nSF38%;O)D4oEwgxmQXjx9&evo_6zY+Oi zkwvqQvhrh0yjJcJ(D5URb#F#jSB3pikvi2a9NB zP>Z`Af=d0uD+KV^pd8MtCc%!o*c2zEsq<<~+6Gs)XiNlhn{|_#Q@~&*U-0bP6-ToA z3?y*P3=|?JOuSbSTIF{q-6}re?P&HMI07R1`@-Fijqy+OFi2gYASa`dKGW8v0~jsdIy=IdNTK?Pw3fLZmm=1T51KKWr@{NW{DRafjf9>c+Ub5#zqpI81k) z3rjP937q+CM)yURcl!+=nXkG%x=+>zs23!5UQorJ5c}wXpT&r#)}k3Fh@Z5cgjf)R z56BlB#?Hi+aK_!Q>hi%zt+o6}*z3#)RR(d*duCpn2Vi{8Lz6-TRh)0UuC6w7;R)<2 ztarz_*dDBF3n2r*v5>3AS_aj@QyRI1ep$4lrAl#hLM7ri+Hun4WL%bSEp?tTwr%zL`U))Z@3CPuP|w7xS&=2LHzcVXsR z4+giAAeh10G8-7RkSbJWZJEPyS39_!95^o!7po&#L`(5+lbH}I?f?wPe4lTf{=i=P z69?vD_)hi-MCG2Gg)NSnpYMt}fw1YM^)*%JngwS$|3Zt;zoy~E%3rT;{n=#qV8_4B zlD369ui+D3PWQt?Z;o_;$EG!x1Z~pLbUA;}YJ>MTo*7HvVtfps!$jyF9$4ws!;zYh z*EMXG4=H-;^Ybb-Rn59|@;+_Jc#N%J?v*Y6*cmW*f%B}*Miq8L8m^BxefGan)9o3C zBW3au%6*)wg87Hc88ycH++4d4H}8~TLHk19ZZ)`}a$JR~%)6nk*bDMo-)}ix4;}$W z-Lc`ssN%xmeQ2XEKZzH1%-MG9~nUnndw3D#L!H3n!y5z66@wRb>UR$>nsFr%IfLl zfAd2Dkrn%-XFnUW*aW|wUsPgg-)HcT%huL&R`&dDLx*9UaLqtJfxR5t zQ{P5*i(}foKFH{eSZ)so3%O;_OJSXM?S2{&p@`iZnx7xTYt&ycutKMF8;27aXlv@1JJ8@E6yXKcqW4EYFgoJBot` z)?#H8OZQB{|GIBA`~OF7Yj%Sx*mLi4FxRjGivWn%I%()kcs<~r=YxafbIAh;9)g}$ zkR!qYmr8fDzp8Gsbr(t+=GC*^cgRgV5=e2pEkfaU zR~v@XTn`&g4F&51BzM#V2hoEj^7s(?17V%3wnv;(pST3OUriw14g~}A=USKw{;v4V zj|fireX-k@$G-*<)@#q0=vyGTk_Vd{A8?3<0++&ed${v3}JN|{bN(J5AhWS!08KP`m``PlLSVq0SwC**J>u*wDi$cYtyoA8i zh?3;Yyvv-VR@qe!-GFZo7M2<`UkdiRXG=$TfpFLL3w0r(M+@>*?zbODUsWu^pBO$| z)0g~LJN!1I{~f(`ujX-sX!vhZT(~XY2iyHi)R>^+^w^7Yz7~x_8 zxE?Bnx#aL$?-zOZ{y>@=gx>Z((##v|-#7*)qIt8VlBOT%AuCpPa|uG&F8vtI$oIB= zV+4fHS5@mVsmewV~@X$ zb<|=s9jJQ4NK3FSCF;BJBugBt$bBrKR-$pYg9Yfnbh~DQw9}Mwq2%VUgiDFL`YZ~I z;<-ulsRSzA+Hr#?0Yo}gT?B#qF%9Qn;Rl>dz9UssdY|lNhVUi!;r738zS*tfk@{}; za`8D+zZhicg`!%G_B{iWdWbaFNlG{HPWAK^hs=F@bAqt@qi&M(>;1kdNpW2OZoqQl zbNmdd%BnS?KZZ;HC0i-+LNN4&~z}tA(qrgaM?X@kjg2(8%+o zwZ)u--3JZVe&(Co!+?YH_PxCj0$@ZtNBB7e)R8mdeDrQLAAH~t;2@CH9*ab1H8}F0 z85~=I;DXlgiEHyktCxQcx*BcKy8PpS#tZ&Fv;ae;9f7Z2^70=Kk6o162l=QG+ldtz zvJl5O&n*jy!2Q8T6?J+$uBq|8CN1h8+=e-StY3m>vvrrLw|)c$QnkkqNXTab@b*GY zPvyvB6T6b_A>z^aYY_ywg{-_#E#c|mtlS!q5q$smxEUMd z{soYC06=TGCN5^e{c@t-@lFSijn^OV;_ouh=dj2@Y28j;B0ZK0!J*aJ55bgs1FgRv`xd|H7yp>bwhRA%_?$_k}%EOr!@;?5* z8bjp`|kU{9kSU)*pF8vL5{Z%hy}>m;M*uEI+B+hme0n z*CGYaoZ_?mO$p0?zEy7Q_{vFtbA94X{%$||?w?(Mu@dp~0qsYBv(E0)ul=k3zw1L2 z0P?*e`;mYD`jdo61e&5W+w*Ds~eg|dEkA9TnxG&YBw*DqIeSa*YxBe@idp3DDr^oo?bjJ18 zGJZjkZ2Uh*^ncJ2@ooHnNZ@Tq{s3imLnpjI`}MPNondj}|Nf26-KGNoP1z6sU;GN7 z|Iw)br3?5Vy>3+d?q7R!^1k|sy-tZ3e}DOd!n@bjbMZfZr5Uqh0$;kt&Hk11GLPDk z#>x8E65GB_;?4Ndr^Y|aHW`2RUhJ>_Mc?kl z(Z6~g`1;&il4<+sUyvsJrIlFnf9Nb*0Q-;s=%S0!2FEx4?LTK#oS1&GgbMpuzZ9z5 zN0U)Ef3A{|1^s_j7}393_y;=$#BP51|K2~h05hgT?1}x{Wwt*kpJ)AKv(WCwpN=PDzpj)!CTH`lpR6xIPb>Mq z(r97|tMP~aopr=MN#uwB=l_NnAj1UTdM?I)%%NMoHHV2b{uT1u=M!1Pehh+_Mds#n zKLapc)7jViBmbGx(*K@QXdr(;^t&b33aIx#&B0n-L+0nd%z|K^MG!kq-qNzP;Pho5tazSe#rCR8QYHO{XZ(($)Ro7 z`#&hBinsh*=KUXVW?4T**;zUNkCkS{f4_SDcWdPr0Q~XAk=8#M4;PdF82!-$*-YT} zrKa+*zhW?LxcK<2|ERiOnqcyNmIJcwHsk01Ti~#do{Q~R|GnenS1QD?{z|Ru2yyd~ zUkons@BZz8=g$nY!{g6}8PuOCKA`Yy{_)%Cy|jH#=@0cu=R|-p{$C)*{0mEeQvNsm z7Du2WlS+Qi;!o!FNy76n{#`cu{7%UK>86|hCh=d!Bp(Vq#>xLrJ&(OV9P_aF`Qyre zI6dM3?u+)j?cYSN&nMWao{3Xi& z+pift^B;)b_W2*T`~m-)ANq&4$z1#g7{?DL)Z_h*@ccg$)ieLqq9eEZA38IkfBm_c zwDUKH<^J~B{_{^JA$57#{Q6J#8n(~;H}PbUKk>JIUn7OP`|IzW0{#c0Ncz9DZvW2z z?)9fn9lz$YA1d_w&(MCW3U~kied5*kJ@@2(6I(NnN8hnG_EA%Ro{=?6|EI|F;?V!c zPp11{PyJ^P{V)-?PcNiA{HC~g0%V!-UlW}Ty&;03$ zrG}iJ{pt6K<^F_`{`y~BERRSh_XA*mJPWp{{LYH|0e=tqU1u_t@9}<*N}cahe*uQ_ zla*Y&ezT;%SR}Lgn_FsWleB*fFs}bG!jn+i{PllDub)nLY__q>-`<9s7{OkXTT*ztcE8c+Kzr(WXLwE;-|c{nSnW&Dp>H zF2%Frc=3ai-BbVNu!pXP@$UZ6hcAm8w$l7+xL-6*{QB5vhWw*{Y-G%bn!oLVpzCs2 z{QLi*UxCuy();Pg@~|Ibm{Fh8_?SO)x!Z?-E0QoD%7w^C{rlp`U;CS93g4bL$kg>b zmOu2h<$mg4DV5*W{{XA|)`la91#K3>RJ+B9CKPK;G{;p{+9mulzpA^8lCue{C%Za&{`qZD7 z|LUU#e(jI{t6h+!@4cA!UpO9l1#Cb4f#O4-{g=pz|BW#JSsUQ3{bNm~?Z3(?Vh*$H zyD`~_{id=X3x~$+{BLD!Km3cN;UCkZkP7Od>t6czZ@+iK)$a8ByfJ_B&qTVnEie0Z zzZ&2F-;*8ss}&{x-}-X7&o?dNpIoWo1%EK7xBfbbu2yXPKUe^j0QOHr+VkJZl6~Y~ zg}h?qzbBiE|3`iOe`3ec2evQ%GIw92KfQgA34!%}#~1ikLG`)hDTy42=5KXmTneHJTd zxzpdOJ|gywUNOX#?=Vdnd%B}s3>n*5Kx4v)_`ZMcNBkE%?rs3?Di2d`8;&Qx>F&-R zPjJ2+jvzuW9Lca6o5P{yrH;m%GZqRhm34AYHLi<#8BqGlrFThrd`UKP=?;smTMeBO zZhsM$wvU`F;6G(cj~Jx#kL`uo@n;@3oM3h$u)X`GwO&Kr5##Ugow`}_1h}xg!|~fl)J@l>vJ0hO-ecMDd8ZI zxaxZ~bi^C|-S+y4s~UhX8?dMJ${jg;JnbT}(}oeS2zlmHQmA*`8Dk0C#2sWE?u%En zz}iA(&3m-Nv-dz(mN=;w*aiXRZMW$4wRm0gsbIQt&Ll8mFHO<%-?cIDR}<1DdPmGo zDot-}g$s9SC^g7N@5?gsJMWqF(6y?Ue!<)m?M8(!pB`wr^#Z}()7dLfnE@w7nF|LmNU|5<$hRaEA9c7fwn?pzscaQ4c zcPghX8$CX4snXyruN96rBWIIOHmPsHCQ|F|I8+T28`hx_BUmIWqzf5WpjE&j3-qPs z?w1jpoKlUKayiTEkl!k@cKb@wj%202d|K2R!wyfgb@?eq$IP2yFNfD-PLh*{eY7kf zkHX%gK2@t;?n9wVi#KO4T&hTDDG|#dfyZave?uK1c0~zra*{Dk|9rEH*feJBo+anN z1z}l!v<&q;XPdR&w~vfUeKI`F;|U895J!emoPhDM={L}Ey%pPMe1pz{0o=++P>3Kws_BvTJ1tIUvD5p! zEKSRoerZ(Ojsu6&%HxaCabS`oneQ^tk@B23o()Pfn&)?O+j5*pyCDLuWBE{>Y$z$Y z(>m@1FO%Y;??)Zqib2A`|KG2D*ZU-NT7;-FR>oz#u7e629?Po9Fy6$=gi-Hik}CiW z7f7nZ-UV}uq^+$DC{X$SS6M}Q*Y#NI7W^r{kuGuFlwdC#!=@Rb zHqL`2jBWW(YWP&wR|dqM7}8zZEGI?Mi%BPwjg=Z*8gW$;q7FPsYW7%H!&x_Qw(X6g zFnWte&fR@e>RDH=^qB=w;UL@uZqhllg;IeJecu>e*how4Y8TDXo7BU&JG{A_-irjm zy~(|&hO4#;-wR=k@SiB&cA26qYPoODj3MXP%0&5LE&faryc{48To=w1k)d8G$^B(f z&tswd)z4IH_Ij^AZ07ow=2@nYzBKae+}pMCeM0!)I2Ym@qP(H*IHl|vMSXo?j&*`$ z29J~KA-dsDwqqqn>ozwe4&TrC<}lytBzW10BUJ}(ycM-V*C9c`s;k!r0>4;s`X|x{qY)1XS*+s z;>au^U`_1PJ)Ybe>tLThzZgH-!0TjNK~2DSAeWXj;V`i{x?sGs(DNUq#5IS(GsZy? ze>)O}P>WS>OU+v8XDMuQhR+4ZzMws;=@g~TX2&vX53kNLP+=ZY9H!SSXkr<3k~S~A z%cjJ>Mn@sd>NLIASmo2uaL0`-FvmCwJy1V!Fb%B=WhMliB;jURN_e-N5ijWu8-2Z# zvK_7xG@xt0t|c?dFMkG_vQ>Gd4s~ZYV-=x&Q@%=7D4U<{GP_2Xx*(Yqi!qe#_5K{K zVD#kMRKdC3>}ufdtsuJ-c2c-%%SNs|x`c)KFCo(H`&VH{E8VRk(~ z+>U00Fr&o7w8c21~C9jq{4SgzQbYM6?dls!Dnoh*)E zcQ>ToI!a`MS~y;QSY6G;|!vol5nsoebU37DV}su??F$v>UP_>YD9A~A32Z9%Rz=H+UWFT;AqP@Zyo zd!T1lP{O}j^C{kTuH}?0>Y!>*g|-y4koqdVEWsSCCp=;Jw0RnvFIVb%p0X)k?PDaD zHO-e;+1Z^0ImPFx@-N%|_~B{1rM@H$D)gb&gyk9%rYE832%BBFGv_sqXS5W=WLJ*9 zMrYzsf9%&O;WxFolTA8NQ(Yv>UD2=Nw2>x7K~L3Mg}AfmIUupsirqkTu*Szqh zUapuetsx>9W%U~b+}mCl^i@$H4C75@$`Bd5>xbD3b9ZRD+)^S__ikNlWm*tSn~Xx8>%y$2|M1n+`Phuk$@o^G?u(GE}7ThHc=# zg{<-7M6G~RZ3Yp&iO<#%LD~I5N%)gr+gp9V750CHGlXxR89~wF6Z$vob>JO@EQ;E`s=$ruRp$JsYKbr9^0`2z=a7cy3Qj`fhN&eotD9jE%onmn8q zbpi&tyi**<2LX%8c^$gnVgxr2u+kQgx-6x4r!i7Z5e!)-rfljIvZZE@H?3;WJZz(t zn*x5a(6df{Iw_UZd4h<{Tor20ydC54HCPzc3pv#_Rr56`{j6t>Fe2dH;((D5E2=m& zT$Zzlmsw<5=P)4T=r4i|JM?gqSm&%V`XkmC2f%7N&dC<;_s7ZIAE8xeUNqFTuB-T)oCC zqdFGCms(s__*OfgO7ufEI?0Z75W-MJ^#TcLOH99;+Fk5mtvti1TCLrq_j7!*3NbTx zC^K<$KcPuhn#wNVmzwEX$~k3qD-uv=rOPteV_|)2qCR-=l zj0lA>u;)u<@$vu;UDQoXsJR9MF5 z0<)wrhIqIspAFk3zyBM5z z(-^AvhARf>MP;q~`rQlH2Gf%wY2W5ake#vGYh185n%0&a(jv-9adA?uCrF?qicJe< znAv0z4*9XIrl|#^iWYF_C(NFxqo3GsZu8DE~qo3G@vO zKk0xYZ-!<#r(RbunA}(&q!q&`wGKIYG@<}zsaM2JIoMwVEWjGZbHj)!w?0e$vbE6i18M;0k$5@A=K5d(djTU^?SXt(jk$wwg&8HRkirYAOMr(RA$baGuNmy`oI}v z{u#h1p)-$peIf5+4`q}|C*NznhS#Xgu>S&(jr$>`7_3kb@d&^Etx~a#nBC0xGP8WD z#N9B-&s+h}O&jH$F~Kb5Z|yGb(WScBBTZAko^im(J(!H*<{n50A$pX4FC>dTU7!D8 zWV|onf}<|`#NETf(&%2W4mefpT%;by(uH5N$eO9HaFRvL7iOWsHU#M-vnJb72H?vJ z(DgSO7GS}s`>qN#1^%zc+kRqmkq?UA1EQ}!Fc!w7AqufQXI_Rr5(D z=ah4-pw#&*yYWYOYW%VkDcjhkr#kcK=*4*cBh-=(mWn{cqAYcrp6&s|{rP5kYQc)BE+GzObLeZ?M1z!FUJw{uIb{sE@(9*>k_S z7ES)I_nZ8u{a8>8dV{|~ud4*I!KRH~Py`GR3O|m>g2wS6N3R9|8Q+!1^EOrXq ziA*?crIHQ$?>B~wM@PpQa{6h^PpKyk!bbbQt4*@Wm=Y8RE!4G?|4qVUlnYVkYfOMjbn8RIR_L^T< za0u38XP*A2A=8MP$p{462&J^;E=w7dZgK4NTqc+C>^Mb2aH^$q9|BDIFvYO5@TKeXRCXFo>GZ!yA8q$<3^-s*T03W~ z|AHdzN4Tfvy|*Fm(usQQ7{QtMx$^hFtX4*h2)sNrpCt63`Oe2!w zwwoSC@P-b;h11(f<(BgZ9&ejZa8l)m`adNp@@i)IDYf|7t*T3nBVN?1eEE(4_~r%4 zwzoFBgv_gp<>#7bYQV)E#KOU49T8r%91QO|`&a|1NI8`}L~G7M$|V@QeBTyF{f*8* zU-v%AGvUJF*VvmOO4RDXc_Kk zxZw`VXnh^harq-(jFi_#_2Oa<`+g`%JEpeq4GxO}rs$3(R-seJ&Lba1n%eR~ufsQM zp&@Fx92c8Vfqu>_w>lGxX{xir+b2Wr4b;~>)P?fXg2#j=5x9JL>&`8IIYb9Z|Gafb z&;OROfv=TCx zsJt&NBW(|VT=+>rIG4J!YJ991C0{ilz^u&<{pA2kFggc*^OvHSkRuO40Kndk=SRV_ zNF)l&vLkWh22yZ_VEKx*lJ7mA*z@^bc`Oj5?zXILQPX;zsp(?P;Y|q}0CPnf=gJv; zXLNWb6iEgJr5cu6MivO^e4Hft8Q3f+4gS?w^!$**BPX%pP)Ufi_nqG+51iMXNA&y9 znt=E7`Xy^&KyMurLs78oRS*m z&{LCqN!avst2TuQCy^_>ysqFvYBxXM{Y|WfeIU?fJ+#oW5bFEHmna6D3+-AR$iYs4 z>U9GHs+EwzSQaH=Z${V*(yNVr`qZQqY_TTSYRzCry|wfKr7w0exB(x}+vEqpx>HNA0n_foYnFIEzk+6F_7=9d5PlP4GPPr!X8JL=%ja!H7wPK* zfP^>dbZ&(bRcU0o$<;Sp@7Y4T|#ZH2ZBag{xO&Y;*NSsA($Lt0iST9Q= z2I!|0<(GtQ)HE_5pTejNQ2m`IDZ!MJYIfLG`(dOlPo1Cf%s8gM_(uyr2S{e~W2tQD z>;{yEUJgt{kgOt&I$2A3b1d)0&N~wK+V`SNX_0dQgt#3R*ags;y7EA9C5D;eV_WIN zk`_);V_4{fhF1 z;rrGB^u+EgiXVmBme}D3jl z>l(tE1ItGF4Z@m)Td`~b)(FQ9kGihjp2=~tVrHy3{vRxwI03^3sYAx^@a^6`w(cgi z3Lj7OKc^PV(-~lLQO!lNpaGz$KE)#_1UmeETj-NF5M4R88fVFa4-oZqOJbSco$F@6 z&Bxo)OZc|CmXlP_zK)<(JT^3qFFSuy1HY3#dQ}=AIoXg3DE>#ylV&ulVa|Xmy3w$< z{NTKhbYWW7Yp}neHfbAWHjUa-?_}_I`8%D;C1up%d)!}cRLN;a*c@wrQRc==$&K{b z^V;5t)BG?T$tVwzl{vKl*$Xu&^>gvxguy|M-fP?kwt( zXSj0PlS+Ki*wy!(cz0}iztu<&pA$YFo7w*?u*~Vg{{U|E5e(l6y^)|9bk$^qpS5#tDPxXY&f=||Q@{UF6fTY2;*OI~fip>@Y-Z0zWD?E*y#oN@ z-M|Hx?Tr6wVc9u4Bhk0PD=?_1DnG)X>c2}%!4f5^W5o$+o^d}gfGm(~LD{RH$Z?Q| z90(}TfaD%SKn=MU)WxgU8il{CWk5EI>yDG_I{@f^-kF2V^y~nis3VETTtw#vt8i`G z^f$#!7ysB+1<6idZ0Vnv(zn8LUlQ(_n#rfn9V!55Fm<=JR#mwsq3&u2K>C@mu722n zY+^UsW0QD^yn5a(tX5E?jP?1r?~lEDIFfnPx_tRz)sITO<--W@D~la z=OBS)w1EelLdgy|tEvBUF!?nIY6R2}u0^a}uq4Xg4>rYYu4)i$1K5jLbdS6LT0}K4 zVC?OGFt?!Pazx;V#cFL%G}GCi4pj#AzWovW>^I-+;J0xDv6t2C|CjjozjkA}PnmJ@ z02aD?e~&XY-v5v<-VQbTJBh`QSa9p=OZ^K3UmV9a(N(Tuhze%GlJ0kaWzk#S!g3hM04 zhsL^-sW!vUJjTCHWG5oF6My?kE(zy1xZgwbxuz0&`jFiC`Nf5!Sa?szsjoiH#i=1c z0Ml!Ah1*F0O$?w)%_!e5E-IT$8}P_DN+wR>b+amZVH$ZM>b%=Zj6#kjjrerG&9-~F zzvq~jK@2(HJx)v0HFf6p$R-F6+$koDC|%TN^mwm?17Wk!@?s`8PsoY+QV@izR(M;{6lP?5Upl<{v|^ z@O(CnL@LW`nO=>jMkBwOZZF=ut)uiGE$O(N9fr)-{m8b&s;Lf6E0)o;XgQdy%?@e#V(yvqpd&dawvvh|!9O!`7&;_ck# zOR>COfa(c_n8>?d7FnoT?Gb^-UBngcgKe~T-ak3?>3jMZ-UZOGv|J8EJ_yqCH= zxH$V6oPk2F`AK2+tq{4Jqpc>UvOgtzvcoW9DZ&%JAe%#W0SqLh6>*l-_BQ<)=@G(C zHmW&Tv$6~WVaQkx;8_FXT}QbbctGNtA>K>j{Hacz==r4PdSV5Zu>}d^bI=nIi1@X@ zzsq))o7TrFM#7vU`t+;jh4QFr@DkG{=PA5Og7E%}68k3oO`hVe+yLISs&T*XZh#K; z`g@&KZE1E=&%$tO5IfN zb<^e?ODB!@d?+^Hk_E*mjp@>t28N|}1U@s$PI0rl_Pd#y(vNeTZ&Gg2V}l`E6bIAs zST-p@M_lVmA-m}*piDzmI-O@aXrEn1XBu0S6u@_{(aa(dQdm_~weggsLb=Je8#yrA z4;hptyIB+*+Bh|ic8_Ry3rmU;DOQuZuIit>LuWH+m$j?M6R36{t!}QG)zrz#XthKA zGQzyeMor}flW(R#I!3kh_u02BExDiRM<@OSIh0FllFZEQyrqb=-`3GN2%4tiJelZx zMgGSQ^Il@3gAh*Qu%PF#1LSHhNg!;XaG?C+q{3O5c4Mf}_cY`{A#x9T1@D&lxiyT} z1N+@OWL2a@UX}f!f%7CtNOWIvmL=58JY(? z*(+?b_N1@;l_cBlvw^QAJ5#D1A~>q<>fl zd_8m~Wg3_^^+htw?Y|533AZILvO7ISLpAISo5s%eFGDT3=p!!_26wK9g|6)CqQ}l! z+d?C0S3rE7aw@V>XGQL&&MQA?@ME%$|2@kb9oT%4T`0C*&7p^NHMDv_p@4wXoqVOh zYXZrHbVkIuvSmh8%fzId9pfL>(4Pb|1W!@7Z@QOU=XQVM4teQR#~)xS;BLEF#dJts zw?yo4(DYDR&GD%BCUW@sUf>%>^ZWW&^$X)-5mOPFZ=$=wej6Kib;VZec8JvhZMyR`Pm%@c)x(Y~J zu7z#BH^7b>7&$Ura*y2YI|_L8>s^aE_Syc^PCP!HM2` zWT0HPWWHTqU3h%K&86YBT~|KZg^lC*b94&R#DNs=6Y$Yr0%fwsk*K^~mfv$vpy?cH z&O3`vD)KF=)m0cCu;t{oZPLOapoWlyN*x~#&Q?u%5$hP3D-6Olh^$PTqR@g&fP-1< z4kgrn##FI$ldakrR?MwI=;U+kZ-<`|3#GhKN4Z!G%5w|H-yLlQxX0FwZ?pDw{=1r^ zgFo(Y17tw<254Ki2E5G%1K3t_by#OCPgd;|EptM&m@OLHvl+(-Shid`0bTUG968(3 zU@oici>9UOM0TdrA#4Zm&qk!6(?1Cy~iS%>GoWOC1na zqB=FQk`@2JUtJ9>U0s_+pYmpuujdWgZ*}axYaJI|asU%IL8h?y+mPx}Qxb0U1SD9` z%K8xR59Qzg@o>ZA1IQ<1EZu_J{2)I{b6ulge$qU~#!i7r$p`qNumHCM3<@?dNcnWa z4E?Xc`$NBAXn^4+*^Prub;IZ% zzmL)lf%GSQA=D&_;M*O{?gtm?2_L2g_h#~-gG7+OHh{20vgW~DymUPMOOC=G)$E#` zZFcP@bq7Wc$AJ*X5H&-Q0AbsF_E=k7d=Fmp@nDe$k?A6uoBl*_>?o$aG33C=a?OG? zdH9bQ7v8R4&lFE~KW=IvIwJqZ)D<<`>zOPa$DYzWd2}rer>!~dBEX%gCTv#;lMXxp zEvA}hP93>6qdeZdWi)HPYscqso1+rn%VjGpY!QIZ(St2sV!oeS;T0NlFN9J3!=(9u z45=;5TbU~-F(B2%d@uhQ>|y3yWBpZOFuJO3buVYMD99 zdAop@XW%z%2Dc831FD65*ksO{KB#a@PixD7>!i!9Z!MRP9RU&&eQTjlMw;-nsTpAf za2R~X3e9Bi0gh}I+;Z^_6$+^ij4L=9ZJg+8Lwf%k67{)dFFu7rxG@awDYu%}b-j#$ zr@@Ze@bZV|I5q8nPgq6f@XVL!`x^&H6cBJZurA2CS@;`Mz;7^1eaqcQVAOK_>s)?1 zybBQS4f>u=7B0TZuyWX{^`EgM3%7UvfVCg)NPBJI5xqr%X5!IKLK}dEMDzI}xYf}d z-8!q8OmnfVI6A6F36*a?SIhWT{&u%E)m^=#ezok(Ka z?;u$&rW$jN^`;Gd>ZU=<;Lop*5GXi>K$R3~tMy zK!77_5X=?SldSMijm4sA;q51MJLJE9!e1{>`~utt&0N^N%^n?uS$iwHnw?N(!Rh*L zE}s$Q-6A&Lu0Gi-2F^9RYHZt?MexPkHWQY%F8Q%ekta0Ri`pScAzZ=bT# z-S+g-D-cdTijHKB)XaIt1`CiYFf1euh(3d(EvTdi%6D<%jQ!xigIno4j>E-WT;~$D zQF3?@#7u-!KZ>4==PWG$+iI(;CK-pVAqY9594fl=x5E^c={ed8eemKMqo%>*`sWCe zr{)Ehp?>&))f5S|Kz7NwVze6|@m>)tpVNY;hcusfRl9Kkk7}N90O9dL4BE=?%tyIz zu?`83CQvw|7cCpr!_UKPw^=Ug<6nJ@nFW?0u}%17KNRcT!i(r4kZf!-w7xY45#mRH zDf14`BaCr10!il#14#gc(w8749I$Rnwgy+WGl#nY>;)f9QpV)(@z2qU%?&*FZoWTv z(m&A;8Qm#1l9ul8WW5Hy7dU|buUm1hRbg$zYuRFH31uI-bb$>M_eOD!A>i^uun;tk zbhJy1oj=dF2gH{jvqRrMtGt}be^Kd}2szlt0%l6#)Mf;Dfp1Zk#F~%fB*M!-{E8Dt zE&s4H=RntT^}Z5K66^e~0|Z_TWq(=wT63>e$rh%+=sK=09%;ml7Dq0W3|cr~z7B#2 zPU-+YA+DhvsX5Pe3*L=FWAwYzO5kSDg}n0m0KQb#&KF&}Kq)r;ck=!8&;+)Pe^tVMA7TRMN=@6s_#qRDF#5 zYqp#}`*x~e-ppt#-nX@B>GBd%mFPMGB-A1{oV|o}PG6tTBGOo?Gfbtoc+{D`S&>;j z=)syVxO;aR;GUeD<+B99=;VXcRqbly1N#t{n($e5{`md#bqrDrqR)i6(1RQTn2sRo zzH=95@wvwJzL4)t`z>=6p$# zxH{7$>46QGu*mp(0}v+ooB8-G<{tg6;JdfA6#H&o;dbOZ%Fky6-gti!V&qHtfNL}R z_rX3kEJ@r-N@}h zvgbpg0`CB|_c~2rYqcTB!=eS<5dEk%;Awy5OLdC>2Iq1-)_WCfN%w;AjnC3&9)PHW0#8i?-wkWd7ehzjB?{BeVG(#i(#cd9C9=1)o4}fOf*bfs;SlInXv(|;1MjncJF_~8+@DEewVkI2Q~k7zy$?sE4dex6qZ~+ z=`Zbo24D>|FKl?%XlMAg;%RP549FPbImA%7fyfBUY&ZWkgMNl+-Pse`bn4?Y@Qn}n zGJ-T~271=lm@LSF2Y_L}q7Ll?0ml2m%&P3QQJ79u!vxpc!hi1r+#QM9yM0^rWYE6v zwg71a-5!kf-sZU>w7Fx5?Wf+>r^;#w@`I zRN4x;az~DI=5|H=!N&eq55><$M0u5vivbgA@NB&^oDIac#dlqgA>bfI3>kx;B6=IMX=my&)Ac7r;cK~F`+kf@v3J# z8V+;ZqxS6t+OuFZ{RSFy59uQ4#i&wNKzs#y0bxSyl~pVI80| zPW~6)PfgiQsh#4s`2&)sV)jJM>oX%@6gDK`+XS6&2_!dj&hq?yH1scks2K3ZQ5^2^ zJx&pQB|&kZNb@fF4uKZnc3FJCR)60B*%eeey})uN#+DfAGIbZyG~xM|MWh$Y3S9jP z35|!MLC>BRpr|&R#FCgnAB^rm#ypH|hmQ3D2b$~*!>?`=73k&s%CfNNoP!AB-Z|Rz zVA2=^_Wcs%vk7F>dW9s0fx-TQ8?;Ey?N2E61>FJk4VfV7%+$ePm$YGpA z`6-mk+4!9lM0(rAK1~!hTpq=mbwYRN%U$Nh_j@uqWbI(=Z)*GX`}KZD#NktX&W^={ zTWb*e3id=Aie2sFZCA~j5hd^f_057E;w@$KFl&Z@AtFPH^C%4gbA`^^LlLPEyvS{* zKh$FO277Jva_sr<7`|KOH`rB-&Z}&mEJCLN00zbFIfKZI?4oUSw_0$cg z7E<4sEHFRP2!Km1!iy@bwjz%kCPDqdfp^M1j+z-3t8PD3a{4S5d4JzJ|`6Tsim1LAfK(UPN;{C#+7wSNzWO!CY1l9hmtJYb% zgYolby-=r8aTJvu9U3>o!cQyGIS@fst!ko!xdp=U{~i{b@Q39yuz?1QX65MFxE04E zkV-$ie7mpivcn$q(qbDvn-4q@hbY;Uo~?iZYZzBDx{Vm$%!f~0y=xGdKA(4oj5nj9 zI)gW`9Z!W6dSqU(cw-ma$34okh4Yn#og%jsfJMe#=9v{59bF6wibosWoy z(2TK@i&_f0d0x_Gcq1@t%z{5ag9vDu0jWb1K&b2xyCd;ggE|Pp%EP?N=eRo_#X+bW zGC4s$a7@Z03bJ2tZoHBr3EB-MnzkN0kg78CsMN{x->P>pBNxdq5;cy5J#cG~uJ0JK z^Pqt#j)V5Y$ePuv(nL+}q66cz+r1&av0-pjxCOOLa$g;pmT}2%(;MylHu@9CT1~ps zoF>}oof^cyx3V%-w}v&#aZzoU-&J?PdUWj6UKV+NM)j@2pv_^40c{DNFmmsd5p2lr zK6_*=dWNfboE!8m1e;iv1^?qHZww`v4zVzwy!Lle>Y=chQ0Ie z>badL7l%WcJ2(sD#A!L$!_L`H)hhRBBA7zzK;&3%y!;7Z<*x|;{*r{&#v3bFb-lxz z>oh20J^W#%dqxU{Gt5buYT}H;M~Cw6w{SVXtI9?`*j$O#KV%?JWASH?*y)k2L&x>* zcL_edN&|0CU?y}3`lC5J?@8~goDqCs5l_=rQ^3@;##*M)E_d|K$2-^NWzWt`Ys-|% zL*$-*AuNx?URafeJ$LgM$(j7?8@t@D`{BbX5070Gm$Mr(8UDp&BXJ^@P88OZF&F6h ze9zMLSsGE1$kxRGw5`bMX`NqwV8hrd`Qomg5m$OD|1zFPOyQo_xSeD$Q}-BI1v<_2b6*mIt_MIdR_c>PK=g@-z^Zsg zAVeK5YlS3QKQQJB6Ptlgq+gRSJt6vkIwy~LwvKCr5!pX@5`7D=RZ9x3IF1X`D1XXV z*sJR-bZl^+yp^$IfV&-q4FuNI2y;F!x<5jea94H19P7a^j$xKi z^mKEwQ`4qdYPjunq(p|R>HI6-_o3}o3d*1P2YNY_sVPi;s;tf_1(c%S#+I-F(^i0QS z1R0r<)W9(PR!5l+Jqq~FB9yC&X+r34M?h>OfFOh;0&7`eY8ISg?V4jPGBPp&Z|`Lw zQiV9e9|P|%5+kG(f8|g_8zd?sX{Wh1xF{bzhPVgUMAcOH~q;5p9;*89ie^Sss68@D8jvgo` zk3pKC9Nm%Dp7wc%$W`4eABuO}n%(@ooVDUJ_G)r@r|M zu-s6NWiDWZMPK#J$g4aD&kM6Da+f}>m zDYqKf09-HI<^i-Lwd78caRYC!izD>BoZ43Ei7`i25^@3(*>sgT_D*UHBNY}(b2fUq zLSaF00xUwvd_u2%nuSa`kpx>1HC}w08#nV3FKnr^za{$Ez1rx>z;)q&TQe*7JOuMa zJP2&LikiZ1MOm8q`P0Jl&bgR{B8edXxy;BSs|Y_ls3kNGT;zfr(>wq0aVsVI%nzl{ zFdJQP7_V41Fwh$lzNTCwkyJB054ZL z1XCCqUxc*nX-#>U>3?fHO)c$dKes%t*(r;u4k5m=p}-EkG_lVB{(qt!yQ<8Z-u*rE z4YwIBao(2m7=UWBwcheSn6{sXmpTTqa#?f_5W6x4x!n}6zl8ov>a^>hxbdlAv90(4 zqLo7q@Vsut{1i+2PksoL6&~+|OooB7Do>l!UbxMCfn_N2a{xYovP-!k30om^$kAbH zUcmST@hsE;khR%Iv@`q87n(C+o^;;c!`J`K2nqVgm8SLv+} zKi91NOUDl|DRVB;N8Y!S?=K4O;Q#*#Oxr=qS=7qI?%a2;r~V8!z}5}$?D_97JidU7 zc5rTfczQp*8URns*J#f@M_^=57QkH^0?e@^>IV?nwbiPj@W9KFJ6HFx z$+(|L*bKX|;Vpkuop5RM0TDM6SZtgjcc-j47QEv@cuxi1Q%j<4qr&g9NJr<=%Z9JM zvLpo9LmY1->1!lK{27?>oSlg_HlV@!Jz#$1iF(BTvcup*=&i8Hd`=e&XQ~u2%Ps4j zT8?X0tX|Z#_PMNCq*DNiQKl**ADqZnRLi(8Qxw4+)jwWFeqiQOhs3uUm);{e6fePrFTw~lZ~D0$Y&;9Lf^N;++v7hy`6OKyKzIoNbsd;0bv|kJpte+uAbGqB*z_rysbq;mzZXN z^ht$?n(%REl6OJ0hVi!afE6kX*y0HsWuRMA+9eE#QGpS0TE;Uzck;_XK2q>L^qEi! zE6%N!xPSzbkUYCiP!$tFdp}#eXBxK0h+CP|8|;6Sdf}-U4Y6)i{Effg>NvKJld@L; zS1wf5wwN-s&!cI93r%^EOWyA4juefzU5LQ%jvI`>;ty~o4?w#oalvJ+`Q<{Q@ZGB{ zfNzp~wni=kozh~j@t!O6tT@V%F|_=T#YR0abu*gIs{HVo<8~w4Ocw@ zwcTS9$rjBVd(n5(<_N;BYM2qbY-*Ux!o{@wiITCxetd z>+e4omW1TH8iguNmEqKlk;~#GU?^X?_%lozZ3P!KI(aT1XIBAK!qO!NgMn_X8r0;z z%043yfs=}xlJ#U4ptOReT|wt^U{>u9=VWwYIO&k69B{x%RI>p>YOOv1bauwl33-jn zkV}tc*RFJ<+3UCg0y4hJH|BfZ@&;NBCLE&|Z4+ zc05e=oPS~QXDM=3+n`zDyJ}3ebs+Jfd;pa zz7!jLir>ItcsoS*06?M_)F~*eubOx|g&+H+Kxrh2=4rPEV?981;~}wuYS@T{kJQ+l zwL8VRnsubN3wIzZq$_+|b0UwcN>X3VVLQUQ=JOPKV>5K(c(1Z3N^C%b5N}0zOHyHd z!juk#1c+EV*jj?1VsU?sF`^1vss;-QaE=-}&5m=^5ZEh5SMYp60GZa-f{*RHCeGOU zlj-9E8IfsdNh6zswc2OlMpF6w^f`?aX)yHOs9Mal0nL^;a{(&FMSQn@-YPjzENh7z zd`W!|*L<{?et02hhKKK_ju^rugbgLM)?6!D-PvBBi`ixsA$*7bx{wA1F4at?w25$B zRue!tDS7QdG&_fJfHN99I;a*fYb;Yf_t7{!yNW;+urYLJ<} ztjyI~T19H#|2On%JMcDbclW*xW@H~<0M-aEsE zXjAi6^;SA@(Kfe$ZhvlZZeew9>)^K*wI*tj+#vcjZGa-2PDJQe!tSI#NPkp*;13P2 zXHC`~t=a=ls*~TO;W;-m+kjECytU}^bg+$v_?_yl_k5lIfQ9Jz@KE#`s$kIqI$9gr zTv>Z1p1Wvh%Ls*ovXnQ=IYC|hQMy^{s^yT?^xpC2TSc!=ZC)*KOP zS-QC?E3^PRIRoYI{OqcB0`Z#W5A`8Y=eqleF2IN}X-;xFfe9jQ{5Z-Q*!q&tZP)_@ z;~0R*qC4Y4CkR`%OU5sP>R1fJESz`l^B}ULC636T2y>1aJrxS)EUly9K9tJt-Mr0# zMiqAP<*-?^AnsTm91P0TgOERs2eN|=Nc(T^hvn$qqHPew_(c*w3E%Uwf>d@Uw9_vH z#F-H@w4~C`*d~8fw+=n0#b@Kizim}}<34^kQ!O!wq|@hd96=6v<5s6p^rC8Zm3UqK znSq*XD9@BWnA?*vr_xk67=q-BUU3#Eu^A-yie?-4V+hT_pJmtHQd~O%E5N6~k7*v5D^w-3wL`3lv~O{E z*UaGZL%z=g9Qq-F;LhjI zFr zbL-rKLTvm2V-~RO%mkqM6N>4z1MToNDDFS()_CB^0aM@U1FkDHwVfD=p#=*4elEW( zV-xYg(AMejj#k>h#pgTf{QBDY&7Cd4AAE@qsI^NA{VF#I<0Fm?i&HA;$PYI}PANc3?Yeya9s>%jG0OwiFW-F1^HR>={&;Ry9-$#LyP3y3+k+YER0Sydy z=X{l*wJ>i&ly zr6MKtS0&HS%;(k3d}H~gd6s5Ea%`~XNF`<9_^@khpdn9ftMyLB9@R{3AyFS_pVVpZ zC=@o7pe?MRarW*hnv|smp*;*tp{s*1Y0*2LEb+ffH(t8&j6RE!?oyK9azgssjy$Z`71I9brX2M(&7J zTM6mc>xG9$H=%%E{DXFcJOgZI3F&OWLKXOv>Q6yOrf!_rhN&fSV1t_X9-8{Uq!qRx z1`rP`wQ#(Q+f{+#>T!LtTkf0M`oD)l1xIzhk=DHxPpD*Fbl;fA%L>u)FrwPknuyv* zg}R<3azbxlFQ>Wc72e!)FREQ>q&>Wl!`cLGp>N}2;XOUke&1tlv3(iep*cO4cZlkq zt(M}AhHc-U(qTlQ_3=KWm6`!b?geFB`F~Xx{@|$G_>Q+5lB+{6gGV%_^AX||P(;vp zdtKuFP7ddTTS+c+hh=))LIP#H&_^43`?Nv!66?d@a;@imARb<8fWUqrcLUY~DtTB_ z{{N$Af`9&w!?(3#Ir1PKJ468~dfB`hI(Me+om9P+)rJ?yV42IhAuYCYq5^H^gWYkk zs;nQ1LyE$5>t1apk+*u_V#&A8g9l@+ER7&2bai8#2#f1;K=FFTBT-7bW!*XRFH3y8 zcn)p?g!#WTRr#P}(XfP}o0rlqNZfBqkre0D*kk#)S82R5L#q1{bvXA{gGv1sRWV*j zoGz+?gZgZn3GN8L2^{4;PQO(@*`Q69RsnAK&PXdd!i$)%Rvg%*BZsnQlkR%)SqEGx z2^E0xIMbK6_8hmIIIiWmD6npd?8_9MTj`r)#rs?IxH7<&jBZVj-q5ukgiT#W^w%!R zrI-u2N3O+j2sv4GDmYGSaGHD?a8UFt@(39|| zKOA%MZIemNHQX`B-5QjNeo#+;Gjc#O%wK#V%i-RM$RMW7Ot>2qXiQk-L{`@GlMj(n z*7AM&yZKu#Jcs$DdT#*&hGT+}A2ZDroG{e5#^+XwTYRNO#g)@|T+l{PE-yk+S~+vm zK`kZl#J?z6Kc!7^#!xq~hL$ADvV-r!{V6iomk3J3vEd zOWz)-*fdo*rHg-5Ux#I#Y^keNaoDk4H^&$P3EA=o9Hu7)dGyNq- zK*ql#N-~E{8r+WHf6g{QUoQs9g zT#eClaiW_@DT}tJ#!jM^LwGskL4AIsJZ;kD&uLyp<&qZc>6F3vp1cedP-aFvXS#lb z4FGdg^Fw5~nSz!!=c+^=#xGI<*9@|=*&TxgcNrDtO#EH| zNl(|$rSHk~nk3>GJ;QgH)vo&tU+Mi+gfxHA#Rh7-pm2JxZu_>8FcuvG&oJY!dZIua zRg#`=8=+_T_c@)XQ=*x!WwL5VV zjMswsiG8OhX7M1_(?fg|)clsGwl&_*k}UDLnHQXS(wuTjoV2#%D-j}b&&w3%>6Y=> zpz2`4(h(t+$yY2}L+i?Sr4EwWUP}A%R2(LR8Sa^a(vWK#?leaNBP7#2=ThD~6l%v{w;CiD61l-6lNkE$#;lO}1i&%(S2zp^WP?ETwuIa|b$WLq;u zc!fLbTqX5}H#U4qxH(h{3l62c)YOe)it5@6LM%Jz(k));6(ds#Ii7|YgmZx|{z9HA zvZ&eQOd1}Gd{~C!;&=s0#E_1T5xjm2m02HK+>fQ?PFK7IFT|iRS31cYgUwo@ea93b zy=1Mn2MR@W4*p3-1@-r1=ZK(BC)G)?w2ggYYt9+ph6>`uk54@bt!}UQqshbBj*f>In}=4!p?);v0t;(NU2?No%NK??UUwq%qko!3TBTx;xIxETay?% zU{nYN$eQDAJxANI2_;QTXpnwus1(1V=8Ad%#m-T)^0!G+Bk3bKwEv7JeK($_o6FAPi&90e+!6g$-latL7%jMX z4s$X$&hsMntC&u#sR#!!M3RlDZ29D5Sj;<}&#VXKy$fv$1*XM7OQ4+qq^UTaAnWRU*E-c-?&>P{RYn|YkBI9;JMY1jG#wkmA3!-yc%n+sH4$>X6^bdm%GC%grV|pqsZGfmbLMgFs?V~vS*L;J;EHI zi`uRr36?>-sB%EL&r@J3g4OH8R#OF=8Xm1Q<<0=Poo4T9`Yoo-?bcLB4;_Pgb=${V zxtE~og_yW|+x_XXhVJGZnDF6_olIm3qHES`g^$r>OoE9Czw6>=kU9*)dFnOQIqY8I z^!~JQhOB+Fmp8S1Ov`_s*sZQ`Jm*~=&)4tE;mVmU>Wt19!!OS#`wkS6oh1+uafKR8 zzoNQ?PJLrqRCn~j!lBl&?L{L&62)>40`Q_KholLI&PaDhDvqrcA}L6lstlUBSqNW{ z*yvY>K?9pt#*MxRNha$gM7$hph@}%(wqlGUa-J(K(UHwF`6k2rShY&`*YKStVcQm_ zvGi?Q{8Ys#tq&M$Ns^2Z@RT(KGPk+Cz@RT01`|@b23g`xLh^_N z17JtYkO=kYTeI`VgC?Y2deW5MG8<<6aEt(HSKLPNQ?x^`Cw8NJ4S>*1@)l?rKLhqr^Pn3TRmA;E&o5cJ4QcM} zRgD*pJnX3`#&R%f5a<2bQ)gNr{&Psl82u5%HkUAaEgJsdHQYd3TC>pP9-c@M>4y1&77^EsIhB*K&Id&7sga7LwS7NET&TP3fkCy;ZoU&ljiCiI>)o3kj>|!78!t^ z%1Vmhc(XSGM1ASMpXp@PnUV5K;88k~RWC~pefzt{?lMyw(tD|s}HVfQcPvV-jWx1Vz4))Yko~B+17YFU1~DW+1vvsnKe|| z$GJu!cGdkVm9{ONazrk6o~&J57&+92dU(gUSsJ!648wR1;jQ;Masd^BB;;@zK`2UV zM=AvLzPZh)U1KZqGxRY~XImK4;yI2?=vfiB6i7DU(K)<=8wUNpt3^8B7WwpTY-Gl$ z9^%0JPNDbQ1*NwkHMY6bx6HTZe_x zIUZ-xGW$5Be8=ll1PlNxMW*P4sA6OEXmN4`DQ@8u97*&L`8{a6hQk3IO} z0Hg2CU{^o}y&8G?EGLYwyxO%D$RX^t2tnvzM^7ndae+xz0O?*|Fd13b`aXa}%67-Y zNF(GS#q*Q*kOG@$%0_z*tE$OJ9pl*=o*q}Bb*Mg!c=MflLrG6+;+`zs%;q7B0^EIzn@bq%4JwGGz&w;NA=!J@U)y2+{O`f zNtkHI-2Tk|e)2~}kwM^m3A+nZWsd8mF-$%&#}5VSg*xLfpt$d?(=ayV6P7qxuaQt5 z-K)zjh%QrmA7TyJJ6)YY=nJhPsu33zXLVWM-LKZr6iQ$;(uL_1Iz*KszT97=$)A5n z`w%lR<8W|WQrnTs?6i~bsYPN<_A{S1Z_-NXlcIBsO?ce>WhoW}6RxE0O*OS?;p&;0 z(q^u70YytpyT2VPr*D4Hz*A$!iN9QFjc|5>I>+cCH@4QPqs8HZ z+NhEhkaEHGNUMb-!O@9lH8#zdCNsCMZiBwl@8kDqS>0cBq75YF)QBX=U!F^2|G{lh zNzDrD>b|qKmOQFMU@@IPF_dPWNg$<)SWxYtlr1$V37+k{udmx9l}w38JDUnZFy;7= z9{{T{B2oFM#5v{H;kZ|MpD$4oKg56q51?;N{6N1$P|*mlY-nB*URA%PY(;uX)|=<> zHdI?Jcv*Kr732^zuj!IdF}k{J)qQhl6yjUVXxHf=RUI~FxEE*gPKmANu)+_+Ya3Dd`2F5WQMlRV%5~h#8di ziK#_|j%k9jyN`dvgMgO)vjFG0Vkw;~nBr4C4UFR|vFz+vNZ%&_c zE4O4trWzt@vF5m|>A)GL!vozf^_MK*w+nivT(pb1BPhxr=B6?n9K5LU3iC^26xUwy zw-p{Z6HArWC72v}x^a&BgGid$wA(Em%gmO%mXBhp49NYk$m*DMAN{^fZ-ZQPO^nn^ zdrxa+f({F2jnSD-_a{8Xi;UDVB?8YEoE~-e_@0$~MS=PHeEtY1&< zga_+=ldfdyK|zv!0B8)=tL!G;FpDHx93%e{1@WqQH-@1FchrTs=&5td$X+csGHA&5 zT^ASD@H^4cZ@DaHj_7=z!+8uMlI@gQEMNbdhu+9=8deMDHr!cDqhdK9rs%k`gCpPB z>M~)kFN%tf40(B19=U8AEyV*VeqGk}R6--#9y#lTL+*RFGCBv&IEIpisl+KsAsx*x@n-niY`}gb|*i%TcrF0#OEBcnEXHsbf9z_|b zbbn+`g=xyJ+Yj;uE}hdc<_VIFJ0h*kRHfTw$Q&@~JbvdBlKPxaALUb-c_bMo~DAr#ZJ8cMYaBwvl0;EbV-c8$%4l%MQM@X9SF8XaCIW&FESCiSIR zcw3Lw3YqQ&sPQ7ScJhu1e;tvQ)i%G#|7sU{2d$gtQw%`G=%1!bivoQk(EL zv|$Yp6`4|a!QiC#8PVC@$5BO>cjb*v8lJkv6&9>5dS2)jlBc$yNB}>(={LNpgudW( zS`u~f$5$;%Sr+KjwH9@Vmfa0%u^hwJ*zaD%GpwoSV%a3YWR7q-qD*N9LEg#ETh->M z4Slcgk>4sfO7C3Re^Z0q4JvEAL#67WL6_iqI^B3#Wp)G@_HBz>WU{rSgHwC8b8cRN zUNDQcGYMDu=1# zg;|7pfJRj-%sAq;{KE4X`pK1pGu=g==JZ0uRp{ZX)^{D+8AO%ql&Oq=D-)&cwCN&} zLe~}-saxo<>!6&;c!bN9NO)qr6Xgv$y31k1J%28I&Jdgluq+RV5sWX+YQPs8MQU9EZxX3x=oM={OXn zRe8cl#!JQVVy<`y`;hg?F^p#kf7v9ncAN=kE96M9z<0C-nrOz=o85H9LA#=`Xvm+((eY(sB7?7t3|)OwcO>**CFDpO-`tl{Urjpmo!)s_xw|OHB{hXdP74**Ss%aF|*l&?r z{O+^m!l>yn&O%zbiT>-xz~oqqoeI`na7S4cxCnt5>&m}6v7F?VTis<21MqoC>neFW z)`vd(JEUVuLGFsjM#yANdg%5scfrhyF9+8%#37}c;j$TbU%KL*3nkRn(}{VR7J8Ky zoPAS+=W@yfdp3=~;+W2HKr5KxH(aNiAIU8C`FDd&t z+MtC`yAAht6G!h8=ylQ6&1fa5;fZ+PZXF{$h&M957Xm{YY(u$6Sfd1@L;2qRRjE*r z5dP$F7ifmOFM$UMZF#zFsOJXWT&}?jq1nZtmStwy;Vvc;Qfy3D58~gZWMSthUY$;- zvFSS7v>UapvvTU@?hC)v*vkyT;iVTNZ;BRvrx(%?4J!4l5SFEr-qr8|RnbViTpZX$ z1iGw5!4KEkF{!~Kr2`%W5w2T_Dp~aPM)lUhorEsvy!PhgzS65q<-=WRKE_i{C2ERR zkk;owY3h&8m|Un4t}!hT23fyGB z0M>u^O~%KbQ6eR$_VV;u8WYgbSpp+fDZHha3_)v`XHkKL;9Q8%8EIHfb?s5Q<*S!= znXk>-B=z|w6(qfGJXZWqmK@b`YO5Lh9#BVk3pB|THMNPOy!cD5onR&TjZn&rE3YtEvmlosH}$&HTUY=bdH|v#KtXLE(dUh zoSlu#UIJh-BA&Jv<9eLh>6gvKtZ0~8Rd8;)ww{{ARYN@JGi)^sq^59DUo|?i3Dg&3 zR0X?YD=MO?s9WNfr;xx5^TdMImI?)cC>`@m*8MIg)obNquoF%`k)Rd-dCIiYSk8#B>Y z8LRi6dNW#@O7?n4m2|ys81^C}k{SK7?WSstYgt8X@HN%RUII4ks_PojOd0QdN_=tG zVD^=yWIz{4kv)#yIWSpLW_-D6CmkKWM;VhC*n|{h*eUB`j z;q`FiJ05h8i8}>;<{6vFPqX4SM!RQ&g+frY;?QssFTinJ7{K5})!35_BTcHJ#&|a5 z8AO|&!DNj=Qz7M#`NS6>KU}CA-nb3QrGzdb_VMoVTJ)M$n0-}>2>t`SnIEk;Oh~tS zL;PK>vExk7_Ec|3#JupD9GM8osI$gvT)UaFqQCG&ak0h*c1a`qDr>KZ(U3Hugin|t zzK}O93t>g0tbsuMv8sbp7g$`$ytxB?C1!l%g+?$G#jKYxF~Iezyi`2lrQG7|{cITL za&S*OuQXJ0S~6df?Aao|P06f3jYhMP-XczrBY5QF-7>qHT$xHOmivUd#;u~fB2nT% zEANjJ{KNxIT=B?n8k15dYRRlK{^uR*QW}m*ggFQ5D^Kc6ADdmrQCoa`Y65~5L-(`3 zM1@V-siA1Kd;oWO<~wg$VN#rQ>1Es6S#NHzfF!+m^o0J3X$n!2VgWJ55!2#S6Iq@w zQyyEcTKBo6qNI{bL-;g*xc*;2MRB>tTRo=~z*OuKDodhkcy^!pGuyb<^^rk5T^}bA zMq>KAijGP!Q_uTcI$Jx6mhWZjVg3fkG44aV7C{q%IScE;)4^_WuiXdr75&uCAK#QB zwPIVi!{(?+;oux>yRFX&dLwi>?nuXNo}m<^wA3r(R}W@3oGF|-q^)ic-#Q*Z?lr_B zaUY|Opgj0v8)Sj%b2Kuz3BiCZ6QW>Nb)6q6VlK5(WMA3!sMIg2kdqO%($?|c?mDDW z@i~0>E5{hITyqO6;q+uQmO+ptg<{4}R0MwBFJ%a#TdS&fd2bk~|~ zb#rIEw5x@q3E4Bg7u^N!AJE)lycdzL*i_ZgO-EE_*bg-`SRdb2HE7Ua^&_Je5VOorIxbfQ3?_iSBD`nHa2&+2ooMxaKId;b%3|~s25#f3l{c)M? zfg1(|IhB>aJHdJ3YDF#iJL551oV!-9WgY1i?+kvNTJ3w34#3rdR%#Fv>sWt&t4r;p z;4)E|Bl5SJy1rDUDs~&ALjbuVB3xx&(`h2hmJViaXATsPo~CtU9H&?L5YMO2uISxj z+@%-M%cD~B4#k#=U_2CFl*vteL9j>9S~qg2ySDOZy3c7& zGW9QPbr3HjCDoA-YATWqGY?gsNBUQ>#2(D}RK?5h><|=75g@tX3~`?o)IKDmSJye~ z*w99zeeBI@6TiDYX(W8oJV7aPVnRVt?Cdn1f@isDq8Jmg#7TKhr=jycOtv-8Quibp zq!uR(-xui}7oer;9*+M=d5r5<1#uXNW56G{Ke#`+KbNnr<{BY}WXlH+%5rO?F}a84 z%6^dSPVDDWFE#80&Aeesi)d6bE@yi@*RQj5F?|x{ zPWmo8x9f}4_1)O8Bu;d+Btyh?rbqlTAK2UaoZ2z!JjB~dZLQuqJ6~gwPtoPeW+cD^ z(Hdt(SjL4sh)|dcB6dNQdySSm`cOg3jDgttFpV1R}~ZfN0SnIT~1 zgpf@bROZ>$z&XQFBRqi$GR2YaQGkKlGwlb#=%ZE-fuPz~vDzt+-`})W=3FG>44KC_ zxT`7lbI}ox@oG&JP3{XRvwNEtC^L33$XhFO?(`Z%_CcYl$;;T;{w}O{&5=VoA;RWE zz0STkq1N~lRCB~ujNc4*0IPc!$}Q^mc2aVyR}F4v{1ts_;wi_eC9<0jzE&)BOwS>p zT5}pC^ETKNBPe!h)`JriF7#F$$-2%Y%OAD4HVoWj38XG6vg?_0`6(J~ahz#gWQ6~q zvG3u<)~;Qib}+pD*}cdRZBM3Bgd?d0#2}N#Doo2|MW>3Xbhpm+8>}a>UWPw>zt^jP zs%sRrdOS5=b?p$dS3;=HAdb(=hu!0CEe?3$#d7f8y-CFs3bacJ|JulO=IKH`ZX!*y zQ)}Wpy2ICI=3f4V@$ZiH?LC~=VHe#N%&@U4W@4GY>Di$kJWb~9*V)q36 zSxnmk_I?dYIX*C*=8dlyhZclzZ1nC_GBj)jgmJe^dATDMKGErTjMcJ!nJ+l1EH290 zyZyHcne3zjVsysR`lJspW(BC5KF05LsA_<8P46p~H-y$-0Dfkx^11G0(%gmN9n0|` zSq#xb!GN&(7@dNm8^Hc&h82P`{;?7v6tCoosVpvA8kRovTY}Jp`b&LokeF*Pe4W;djv8R90#9Cz&wZ z&h}J$12-Ryz5vDx1IiExD)xg6hgZz-ChCVOB`QRp`%yT#U7S#ziuc1>WlEK~%p^<> zef()xkD$=gy>7|wJ;~21EE8{UBiL-uz2QMV$gHeYY76n@z!?Zqp6$}9*?T$)Xn-y@ z^mr?|-_bKO&^2^I!UDO!E6|ExM7|!Pqg3ep!d!o?&qMJ01=5l9qPr`=3uc1|f4bF@ z)0RbWRI)9f^XF5DpoXLLbnAdmD%1IT3-mgUr@c-^DclT2b4`m)+oTb}r_0STfLrLEhkZnx*_Nx?8PW z-ea^^;^-)xOagFUoFN^p-%Qpl4(#b0K-iV>QFM2N8&zYNLpO*@EP_y|Rwwenz8zgw zDA^MNdfU3UIle!76@V6hgxY|@rcy&DT{bv@jTPtn%&WJr1}cA;vI35rCn7ZQCMdMyQtQ#QQC{Kl&L?L?P#E@7bFuzp&W z)BAR`w4YgtGVUinG;MO1Rs$KM$>yggc&KLKRj8Z$vv)0siszkyex;gAlt$?Z$lR@E znzb_b^`gdS(LI%i7Ky~!6eX!2(0L>=o+M4^1<6C0m(RHuid}DxF*!h3h|M@(CWdxS zGtd6_^AN^sy`0lKwl1`xIOb0 zKsON4lU$a|gWsyS96n`;wWfZqbJd;40k$Z5Bma_7(dL$0;0Ji~Dez+6`6(t#4UY;& zGr*^hq}hu{G>=xIrSq%pXV?~osB0;?fR?~T!7Z5@l)ZY$nLFW?P;Xuiw_3I{;74ds%91XA z#Wl#7+kTOJ*cEa)&);>xb{rQ{^HeA-89_d>S({HsPwj>T(OO9&*o^J57;b^(N`H|; zm54s6%nb$+;w#UH6N9+XFBQ!}4Jk5}!b$s|pO(Md;PUbbe682m%Fm6Ru~%1k%B)xN zJaA601?Ayrr1a%Lgrr$|;v7+aNHd7sL{SKem{A38I(b)Ld<_-kBG?R}*2peg@Adfk z?Mh1qM{|q^Q-BmbScRj)r@JRM;7J@_QWwV%jGdS+Llm8RD9Ya~K5%PNPxz(t#M&P3ASn5cvGg}U$iTr(unzqDEYtaNA&qy2Pp!|Q zNw)D3w_45ff-p{@UMU6I9mrv!UwfH_{7L@3caloGk$7#dyoou~K*+2@j(^j_DU73y z^az<_)_Kc)$s7=b>;Ww$$1|G=p%W&=KS3G^x~itt=Z>t*A)L|B0PBLxDBhAzO2y^H z=$Hl@)_wwet7m2}-+WExGK8k*ngG*`B5vpx)+aajX?>i}iC}EmLf4Y6bx={DTI!e*}`>`3!#0ro^IL2aqVfUwNZv z8L(+ml6>neYCcURW(1bH@wIs0hX%m|aD|z$bs27_pXbMSW&XHX4?YK|VQFfLbC0X2g(r$3CAHPJ6D*%Zx<0+cMHqI3M0@<+SYK5KRkM$C8Nu>T>S|8 z7VemA!|D%KkjO6HeGUdrGt$dZ`Mg8P&6iIv3M3w2?;6f{<9&9ie|%zj@W+>t(e&XV z$GBr|B4s*jeA|P4cfcgd+XQInpPRMiWP$HC6;wCr2cxC*jstKiFq!ix3tfA9(pUpu z999VDy~Qk-@#s9SgFrrSOn|)Q!uD<|SM^~nf-N+N#{@*F=YCH-fs#XG2zPO(@gS{P z26Y#(u;zqV8HjWxN(o_jXS7G|Q(JABi5qe4|C@Nybi59*Xd)ocjzf$=f@}DvoCFaE z7*k;dU)W+UIh;df$A2UB*aCKdkj_M->7JoleHI-IHdWE2*0U#D2yx@m2-X8R;Q{Tm zwfE>uRq##DGf>;5Fx`B3n7Efeh`Z@V66YL>01W#g};f4 zr^e|8y1c?UgmL+|-YF8TTsm=^%fv?|nQGsq`fSmIGYQY+XE!8=6CLl~8_tdOFm^Cw z`rl8^;Cv#2bjLZkm*ME#Tm0Z=*?jhm<)FkkX$Bj`Ee#`FZ~nNRSMMkSFyXMy;bom) zO7C(dqUEq&p2v?31>b1+T=AgIM{WdWFKI&veo?c+7xlD};hx)ZbJyo%gkq^p1ZWFq zffA8Iihwy{HWQ75JGVfS+s!LlJ7e4X?eEe4Q(Y$;u1Q6o^TIc)^$ca_dNf{=LZZQM)Q0L13G5r@wN#HM> z5B@h%cyzEBV^ac1>SvdjeAKN@q*(lO`U9y-?GYmlKFPbK&6kj8wB8u^Z8^BH*FSQ( zekbEDfIyb-z9+TZ#0v}04;AUyZxP&_c;#)`T$>-Q92c#F9NANf#GAkHQS-gN#jMUS zT6W{|vc)FfY}d~CRyO-z{`VXF8G{%TEDr^qGhcm5%@N9xkIu$wlN;B_IH_yOhoj-0 zA5@Tr_p$V4#A^DS*uzW48|l#?Kl!*2`xV|KMQ4cSsg`^W>7Qe-ZU;Mp39Y$SGMdo1 z7zh}5&RSbZ2_GJrdnn0F%~Mb0H&Dyv5=E9Kc;DQ1rQ$Jikj{Unxt3lCX+yBM(I;9? zhS7yLk(u%AR6EovupzE%T2()JD;cT&V?XP@*}XU$h0{NyfOToI(12h|mFG-);IKv; zzn83tkdr6%obK^PQp|BK&E&Hx9AT3!46-QL-n!^g2_Y00s|h<0$7^@8HdToE%E;8- zTN!Jr^Q%TS1rEMXiw>gn^rf0HLQHQs?Lw4)%*1caqiE${Fnk+cm_Qo=K(rAeOI5nF z3a0IK$*CQ(fpMBi(jM}cHPr#h!>^(7$IrbtGvaWpZ&u$hHm`RGp^-&Nv%8X!nVVjF zV6#+7m}k?K>c9541V8K<82{3>ObmJu2=wo3JDVoX9T(2_g}ooMhEOf-sRzyOEBOhA z314(r4x88m!znmy!}8PYiy3 zJEmmcwC9XJLV}#y9NV^1H59e^ri7iR+^r95CU1&z>YPed7>Z2^5{ zaVFa=vcTb1Lt&8jhpk2yR)aVD9L4Y5=(5y!j5BXP^Jg#2viicl6C-ZsW8$z6(J+1yzKb@h*jP(1(EGM)h0~b^e&3_fh73 zo1b{jNP`Q2A|`3*{nN}K#Gf%UG3kX|-<$j5j{)D8YEKe!y{_2TZdvU`sCvu8rTK4e zsX+aq1c5G}2_2G1UB*V{#U;aKn+ov z+HQv+f#q??y7~J>)38ui1yn1YIj}%8c|=&ms^YfECNXnAh3;z4?LDuXib@io zyeF?Nr9l;s|K7R+f}9F;$Nj~>bgw7$gv zJGC!9sf@4tw3EXSDEb2){AU6eOvY{ZrI4dw=7I9IaK`~fw8X)$ct%awozE>sPbMo0 zATz!i@ac@mC)4~Y(D?iZ!0zPmjq!NobpXRb(3|?HsKT146UqRo*Da7GvJwgI-6Z2A z2gQq$UkOA}-_z79a>#vb%GJJw53>jTkGD6!-g_hLpSl82m_Ea8Q?LeXa*D4H{7DHX zi@GQ{zbHq00rSm{_AM-nac3SkS>fT3uIa8YH5d@+w4RLBtK_e~l=;rK$uRy#A?*-0 zTXnsU=p}9p0LxXa`o)cw_}8WhgW6cY&fZLS4!8z*)>n98=^56*BPqxlUKW13^ku@Cl&9`KBa$zM!Ys?{wNMl~8E@?Px>a`ZsuzcQEqFMyGQ=%g&sg-Y8t_6ab-M|Je|gp9D5_M3$s}A=eVYfv{e) zkLVH;qf^}8!sgofp6AwbrsLSn?%VSoc;EF%3}wlc^N)^2A01Z*q?;p(-vX|dEmz{9GdZS?fB;{2`c4Hk;6{FGW#myzKH~bOrWeYo^1vNCo|j6lC z%VLAgnLdV#U*qUt2@3-Gy6o6@%-b-=Ae?YEvIlzJHmt^xw$KpRapcmvZ%lj4y`qB; z-kGHES>(aiUm9cfnw2#y1mm=R@c~QpVPg&g_c*_?)oy zuG}WW!%_F>m^n)(>CL!)1nkR|C^fX+KW|9t+{sh43`6L06PLR=k5EZ|KCCvYz3VCn zk$o!}zP<)JUuUm1-rBEA{>o#8h0?z0ZOJBUy2p7|(AVZ}I5#VdS+>#5_|iu&4Rpi_ zea;2obIWfu6;sdfU^NUosrU&$+1UY;gJRq_L~Q+dWlbTvCbWf2e0ZhFq`Fdcu+;H- zkMel^2p;b!ccX}V_2z0@Xnrk}=Md02#dO%-$u@QMtZ78B$H_%p_?jV*Ul1etc{)IM zm4!d-OlbJjflYm)oq*~_(gzOMp_XXPZg=VVZ4ZUHd2ylrWnqThkbKd`178ia)`Fas zBHJ7Y7Ot}27t8KU-HCi>2`-^y&+f&&rib4KPrh|jtRkp~x(w9rBGRBid_G1nhrRIG zK^j3&SXv+Pix+FjJa?lKH?AQqiQ50QgtO!DEOLl7$&Y+!!!-aJ?1z>u1xnu|8)@b? z@gl{-F?^fdD>MrGaiEWI1&D3gqpol|ZI1vu`oCWdm?P z08{aJr+_3Ao)17Qh@d=_L;&CKGJVa})~Srp(~yR@cp;7#{gD_;?jNEiX=7l*?S-_x zmX8wl7}@Qs}- zv1V9ocnF!`|#2cC3l&R{1SH6D_m>!3nFrSrcw# zh0f4ZC(Na?ZP#4U(gvEi4N~Xp#+nAWr!%QDQfl9ITq}?%D~M+e*bpZ+pO!&TQ;jVY z%r1Ae6UCFQP;!3Q^|^2d95uexEZZ7y=U1&NN&guiht$e{MoRY+QVKa&*OY6T1I>*9 zx-M3m;?q!C5!7T{GYyz`^(3$6_D_FPB*?63BG7z3VCblA3JSK=GEy%VKW6&CPC9CH zQpb+x$iQiU^%dUSU(oe?f%$b$GL$@WcH7~Az+=RtuhL!Zv`dYD&~o0B&(SreeLR=* z-ZvNR#-!#b3oU^Sd%@z0F3 zSrQIqxmh&oraDqJMKt_8K3p!*Ch~FW2$@fpZ?}8ACi9MT zh}#qK8*Z#QM9JqMc^bsv9-Awkhl$+m-+)Khjv|3)X=INQT01Twfr93#AGC!sJo~iY zwyTrM2ixLdXPEYx6a%BrX=w29GLp^S5L~F1@^HRyS_vP{c{IIv zPDzs+IL2dl789l?l`ROG>~$c+hlB7R(ELc1%BxVwQby*`^D=<_Th0ZLk&W~{XfF0t z?@q-g~dQZ!BLWx@`;XDsxs&Fqga&!_FWihcy}?r0=aJs$~G00>WTK7)^Xj`(uE~VTwI6f)#k@3D@r0(l9x&|00~)1w*cdydwlAJ!KV8*h zQy+QB!~YN5o491uk#A^S+O>f3q)fVF&hT5D>_fZcDfxDvgjETK40h#7^BYnJetdL{ zz)XP4nyKORP{dkFLk*#=L;1ZXr2T*MdwoMgk@M8?hC%CbTc9w5w>Mp2GqOWv?}vu& zgzb_+X*y>OQPd`xv3cLYk_KtJz(K$(`rq3kkJk){2wW2YlK477WQG@~=${MNdM%n{ zaef1p}$eX)D=LKf9>?9C@Ig+dC$ziSIyCy8^`{a$}p^KOM zuA1}@x>J-pVm$~&``#NJ>SvE@bNZ_}n)X)U5!I4T=OuG{UR@#hr!zneh=aY&B=`Sv z^Kh&(VEl=7W6kzY;haMake1{=_SReBW$J{Z4`pPa>svF&8y+8v@(R$9Z^+^RQ9(Cw zAxo)RsxB`j=kJ8rgYC}Je5uGU&4>jMIYx+km1z>0ZnschoEneKf|#>!jTqVHp7fh^ z5xRMSrL`jXOU@~H;sKRTiI=OrAjqf+Y$z`jasn@i7jQlXh4;cS`<|5b><&COfR+)& zgrNf&0`2BsM)GFK-h|FGw9i}-#*nmS!D)DpwHV5#7G&Y@<-sb1e$D?i{kh8SDjrcQ zo;;@tu6ZWmD@S)l(huc%f>>g;`LE&{fco8rE`sKYAMFG-^;ve)0BGZ`()=@Ww_8Mg z4n!QzD>7Zh{OAHk6m}a!rRXHF>yIT>%`^?K97_ZaS%vCW7j5Lc4jl%Bk`BC_h5yW%R#y zS8=xTnypGtDDwBN;;{X0hg~R?CJY%qr4ypY#ldAzTzO}KFi;0ax+1LomExrvU_$;DV{@Ih`wK zdGN5)B%NMQj8%aml!rOc-fdiZwD)`m9nDHfzK6%03mr<;c1paSj>qOTN2oP8%BSce@|inFs=h%=B}KxI;JVDyX;$My*5=evz%lweJ=_sY z0ex0aZr%~6uW$Ph)*d0DiY6nbGj1TC7rNxE&Y)rB;gpharB_>;&dH;DM>Bao31H15 zy$KTIo>rDxOBX$FGw+i!$ft|!nb@z#&*h4GJ6HHF{8g4qjTu-0#c7amoOU;5ZW}$3 zr$}=Ysv0~caCEhd-q!!k84F&`=Ryl(g1;g08_p1+ca6;~om__)*GP8}H^b4rQF4KE zDau!MKaWP79@1>&GsbrBW1ixypk&uzNU>v*%=GWfA#E0_#++i^3!ny(K1 z6{FqxV;v_PBMp1?vR^GeNdn5&7}dqqs+oBzn>Lv{z=7JgL~=^IJ%8)M9y>y2y)D}` z#zY<&olXWj^WHtC75(dTeUy=n92GIu5-t2a55*;{B@;QnSGwM$I3g%A!Sh_*6qT-m z%fc2uwT!00j|WM?qhxQ!AL(8_a4fyj75-QxmrDdV_aco{hlZpgzPo(UC8PKRXVRti znY#4ympR76R;9*LIWBR6WwO(~vJ@V#IdMJ77LIOa!b!ZpE@x=-b(TAe(ZSf`9`o>= z-V#9}TRHG@B-$(4K1r@no$;SNhaR>T!7naK=&`7&4FMt~{43zwpWuq|bkudK%v{hY z991znm4&n+Ev|Cf( z7{}N+jdQ&zh@v^!l0|!#9M=l-^<;GyR@W~i6v5t7HJ#x_Kk6ka4xb`x*z{a0)RF~d zQXq4eteBHo9@^8A4wL!*IOpNWoSRN|%2^PaZM{d(o$>NN3W6h{2bw@6bI;0Q(MA57 zlQy;c#%VhHd&tm%45+GuJZ(UYtdD&Xg;PfGQzcb)>LxMyzQAz4c_&~o!Hwr_Q1}KE zR;l2LDDfD1E8P!olup{@YN#ecM~OK)Dne?_K1GMO=_&&t(ZQ4M_UhN8n0@q8Q+0<+ zgLIL(Ji0UwJJ+qB6?}{LxB^J#*GOD|=OOSN>bZkrQj-PSX>PuDBa`m}){Vo#0mxSL z;#3gYQNbDCiRAbkGqnt-T#%kmcptQb4e3_lc<3r8&qb+TUbiAAX*R$2nA3pw^(pq` zZFoV?>x;6C>ur>qIOv143Y~NwwZUjPSRxHVP`WF6cYtb7IE#|N$Z^ZRFDaqmkg&rQ zs!)Vx?>(KSO{4}S%^P-D;>E<fmRiPFcDL#-_e3ID=K^m_4$daU{xTVji;_3TAgF@pvCZ=p;uhI zjPu-XTdv&Nx}Uj~6pLsCcST8ijPd&iY}{W;p>iTKbDqn%#LX=KE~T~pX3j11gN{;z zK&#OR4V87iq7r6Thh)yd)5E1_D42Z&7==O5n)S<+gwogkZxess{t&5-ZMBZF%xpoeXG9YKHZV22ODlKP@>OQ4@;QHM>*B93~eYL zDhU7O*-XvnwA~2@d1g^$23+z>uP_A)u6%$8u#{2nSBwRbeo;^l3!0I)1aGU#xbz&1 z`nJm}kM$OJAnP@JH+Im!U%#l4usl?_D2t$!Q$C`DMeSX_nQc}Stx!X?ry^0b*%iC^ z`9`)2Dn4JY_o>Ik7pW&HYaECS&MP2jHfxmjXGg|C)%+tw!(1ogR`=2j_hA0}S@({k zT7fK8CGRyvAfQ*K`n$h@98dA89cDsw-{lWE?DOfe=BFq@-J~VbMf?uZC_9%k=8tD*8A`7>1dsv>1My3oSs!_ zxV)T|tNbKGAO7_YZJ%}M!upb5{t$-dW;B%FF6A!XzAFri zO{`MhcEQ3mxS^!O6uKm~)ce5mVVkVZ{ookkc>axUj2$`zgh9Xe){J2#=qk!UxxcL_ z`V6lne-%7U6Xph?c?~<_*;pO0>603MAemu$l zo>)nNw=d`IK33=;ardegbPueB@!-X03>9FuoY=mpfnlVo$2Jl5U z@XC+kokK*Uon#Vlvy&~OdAgOvCD?xRGFF_zzq(yEItmOQ{fR{&&Q(&I5ZII2o3q{L z73%`bq_e4$@(a074lb++PT!Z|R3hVS)bUsI9wT@%A7S6=xD|rW(w#vNd40GNcsME6 z`5x0XgjejE)(6>}Ag&K1si=!EXFa`0QIXTSKLWcsyew_Hx9!J5B%PLW zG__pATDA;38=bImkxJNxo#4&uBIVtrBRntRk8jEy0knq0o&af9aRK>$&>Z`a?cR#i zlRuNT&|1&GWIT1q@)h^hIQ0}B^xjIe8#jeC5oq{EHn^7xBgFQ#>RJMTcbZy3MC z>(9|7B(Az?dnpT&31N6>fPacTmI(NU$5J^HpoM0MrXMw%d;1JKQE6UlysB z869{tOCHY@`BYBrDHVA`o^#F(Qe;|k|Hs_HsFOyH5CQo#R^Dxx=HIbsLhct4A<1 zWsRZEoHVOJV#t~1Y1sv?M~7_hLbC0mNSC@Eit-oxWfMpe|L8ZD-_?j8!_>+Xo8YF~ zP3jkfut#^3E-u#71aD>#h4*PqM$y;y8NP7WTSJ0$$wS98&jY)QPAhK5LE2jhCaUK09<$P)wB zZCOgjRC&!R=81FU__%gg>T{`!@W}CWJ?Wi&FB?C9?6$)*r8@CZt;(#CR{$d#Jd^ti zN0M4Ni?RH@Q#l4XMu5$_d-qIyIs?=Cdc10zB29Vb734WM8rr>kr1-iS1Jzd?3inzh zRLJ$mVYbznz<_u z>Ko%aB$HR5eLOYF-Zld?%>&5fP*0w+CAbX3OEySZ3$!KbCjpnRo@jfUb`Gm96H9}v z+0b68>_e<@TIOG_@eC?^7+q#=X*M2?QS$vwg!jU)HPlOYX!LM})(qbMhp@-qgmLee zS}F_D)7#!KT`uQ4{{rU9pahI+%lj%)tQ@4`|AXx$k_kfIo)tQ4Gu=&cMhd%!}G7czI9LP0}yx*@Tub$BQWgd(x7;r$dzBhZcbTla({wHX3uZaKe)$D|2A zpx#l&$X&e~Jfu)!tGiGDMs*lg2R>Z}9nS<#_58U07ge!pX`lvjtzmpz0(2ziMKaT3 z!)eaw6@D~RNA}7NHIAe2X~$a^ZjTR#;1l1gCwSgF3nEqTBq>%ZxL~%WaLlR){jY93 zbcEyK1HF|DY2?_UJXT+07cOcmURH#iNLzHghvMIM_9X#a^q2M4shTW zYK-8g-x`MM_Q!Z`s8X{??9ejJlTjR#3kNIq9MHh}m5UBF(B=n5&4|Xu(H1&A>fMwX z#~(I#A(J4iGcv`j5#fBb1*iQiQx??HRXmi)_i_i+rhJ&jiHd^dQ=HmZj=B5`6NS7{ zTTo=eo-*{Xqd+X%YKvw7;qSFcSvLk z2#gYyo1m<~%S5FUfw>bocL}0h@RH4BQB+bqr09t$%hAYfq;kZGI2U0BK_=8|rzSXz zQ#{@af(4z_?oicfC7M8D)wtIj`k%;FZ`sWN;SDw|$Dw^ygcvx{M^PLh@w>RVg|n*+ z1q`A_+!RAd-*!o9n_eminbpiZ?0qL98}4#u$>^NA*X$m(Ve^9Q(|EhK0RIARB~OQd zBUPD2$0J-{(>Kc3k$+U|8JE{(x$tNgFDbY%gcyTvNr9?wT|w(-#??P!1{tdjgFb~_ z&4zvL_Xe>~*upiQL&_xQB%^Zb=I+iLc5w|n`s6aTZm#~Z>APck6m^x3PR>7`+$2`$ z<hSOoKDi$WGGBc5#%bgPu9baud9X zx^<%`?L~5_NR6;QvBaf%XCW881Jv~$HbzgF%=P#nL+2zG;g=)Ki9MsKqYZd!)Rao` z*svYBlJV)h9Q+u^@jX2^<(_Cu4L7s(On9EzB87Bf0DE(+R|NWS{}qwnRW=M}BpEKm z36V(kY>5aSx>0=b^i>Gi^PZQPpf7K%)gf+?7#q@IHzbS5FP9bYCuhVJ@T-*Xkg+%@ zKgotByK$psp=Wbx_3*WLX6-!s1;uqW1*4D)uwc0-dD+Mvx92s(@p*W#JQAMH_+C2C zgoL@5BMVQ-dIr8UpUrASc9Xw(=l7VR=7%`qkliI}(FQ=yCqEsWP#p!aJ)up>ed-JR zqY#gLWvfcz%sNDNZYt|=V97_k#(foBmyAFHQsE;eH<#H48@8>g$;qW*8zmq!0(pGO zw6ywIDTNbG!l%$`rp1~Ldy>#ykSY#F+uL=tkdd>}uwIi~4hCV`w(waVKvJOQ00?qE zHNr?{;tL#{gGzl4;q}G!LDiYC)bYwPHng*)7(O*#H8-K<8?tANH-wTce9_zsp903u@~Neo z5*2Lo;V*(87~jD?3d$MvtNNxeR9I#BopAJbskh`V4t5h|*G!d-w$<|J=g?#-{Qe}jNoQAIsVBYdxf^2CrdiOK++)&A#w$(N z7M3YmBCB-b@h>3|alCWvO^?M_ECt`2P5_k6Q58!5*WGtRlLn? zM6NYFBMI0YTXjmpYy_HXLm%O4pKVXC;6lXC>NoncPC?3qC@KNVBn6+sgDe+yz=u zQQMpdVqVPtyRWI`NR!xcN;3l^kd`23l$1JL;UW92G?QS^ABlO3*n^ARraY}+1v2ciUglb!&>L`en#yXHo6zkai zHBbk%XxN8(7z32G8hh3LWIkJ1ij#3lXet(_go(p0-o&>BC4{o9Y^qTl!)Q`**J6ze z=7E&pOf!O}&FDh++v*~mzW17UFjv4lrp-jP?FkcFw({M6W5#%}QoI>Ejh-l7u?{n5 z6FW+c6dBw!tQd$#SXDHOeKqjiw#rf&+u`j%?_hcbK+ucLo*6OTwAV_$Y}4%w(88~S zT#X<>P&s)KJbL{-QQ&egmm$8NC0LwWet}AV>i951IiKED?|GO)x8imLmnl)sATFUQ zhBKsLuksN+F0OSt1Oc&St|m*479WE?7hqHuj# zq4PfEh02&RXIETeyg{xW*3}GVm(Nv4_3}OZjad2N-qmqPBGk|XO$KG%sH1JX?K^)> zidV)C3=MxVlK$Y_pITuqj`KEd0XEm4|1>TCtm=EXW_gP;O+d zDrz)?pHsw_Hf<>~Nq8@*a!VjVEy)9c@a2&qu((KM99^RtM4{8q^w||syD5m4srBC; zU<_^#U>UyR&`vY_=#dhl_q@m(27;r%s~zwpQ=tJ8L4;NKgx%t1UpMKhs0f~*5h*GFdq3YNsq?0rmft0_`#@9XSpHZw!t=B>_uG&cshZhINRmw-|;vp+gClf1irTleG9*`W?i3y>FK z=3bCxfODNg8h}r<)R8=#@Q4q{sEI)@Tc!rc4MGjd9We4A0ro?h!*e+=w%sp&>HL*3 z+zL-fa}hxQVLHC#gz7*I+x;&#niEVAsFUI$KYsu;BtLY6aJ$J+Mosgr!l7@445;~@ zQEe>nJpiCkgyk_Hx{tJa<0Ry`X9L~`4v+xe&~tC14rN!rB?8|%UHD*_?*uHL(c=m#tIP<7#Fi733Gia`e(1^sn&{%pGY{iUiO^mY3YNc15(&JQ}s(3*&c^b5QB zG+=LlX;9mM@y11hh&-kabpQiE1;Ne_926hyjiLj>pl_SJ6PPw>JQg5egeoj=dJp3m zro#^f%pm_H!r<2)O%$!g>&)KS;&lNi8=b?dM0;%YI*DMz8-Q#`GdI9&jQ-+vU}U{` zpO4oD(RpS=-5Lx6^>G#K46iL1dZ(r2HNF`1enHH`+(xkQ9Q`e`g|haDW(Ahd++^=s z0#iPhrM-5^30|eCljBI<>MYl&L_6`bC;S$?=}DcBz|cD6u0FSyw;Jdtu}`WSU;t2p z0AC_%W$H$X>=2l2UUn*ySUA_STsK2d0f{KEKyRON-0rvD2fcvbKpht>k%FO6D^JS9 zmwn3*-b*6c>qv+Y4XdV2gnEt8@)x^0BEX#rbGf} zNY+_(&mSiXIirUlWb=Zz#V;*oPDp?qc_;y4!us3hgk$wFgDhE{g5GY*Y5B` z4uJ^Hl5(2?kVUT!LX{iRFTnDr*>mjhfcG~OBH6_E>(3H}bR{kU`~Mq-Ly(3#6E--H z2xg0$(4U3lZ-hz&z#U5hKv(a4qSiSK-TDBSHBS(9LDs^!xI;Gp6e<>~x|~%1@c4}) zD!+-zGL&2C_7?r0Uj)Bb;%Z}PtRH0A7e3>`!1YiLL_nms4nB5}5wgw=lZ@OaFsb~S ziu{!n-W38pU{{><;Lk9Z`?Q@J93J~V%IC}hr6*G2w ze+NVd)A4u3O`oWc5$%Eud8meta>zvp={Tt;CTTb51gWmo8mI1%%p~wDz$H=|Xm>W+Ou`*=z z<`sTUSsSe^P;9kDt=iGlPVwI;OP0CztC<{_vsE5=Gq0bQZenJfDw;_e7*IQhUuZuf zY!c(`!YaG%eVeh|wuw#HSlL6>uefaRx*es%6k08KJ`NjFRv8!fYfr`*+kKhg986Fl z>~7?ndkbYla5}|YdR8j3MXZFZb+pH98v4X9i0XT*DhPWEGPese&s*B#H_YHx_nG&` zxDj6r$qH$$nFvTU=D-QV*f^VIsjm5<-I>vd#pnu2AacpRVGhxI;d(?^|<> zgDC4lMkFnfq0H|z*3ol86)SyJ^UdCx_*>o-MPFccrc@ZoF;6!oBT7gWe==TgFiNLh0o7PEQqH|joiug>f)8?CC4^P5ngxGN95PV!6_8s^yf+=btTc_ zrzqUw-ULK^q@!LLv+d8}x3sPY#H*bj~^9Bj3ZrP;% z;j?4R(|cs<^E9nF=XW^M(4G8l^v^v!tQ2TJ+7c}jz_@eVy1+xl2axQ!eV(!jNTUF1 zF@DqlT2~8bF+5ceOGJ@e7*(FCm-az|-6o80UZ2Sx_r(sDbTkgZ6wDQDpK?`!@kMcT zir{+k#P%@0-hL>yj=VqXb4&<}YDbD;q+m@w%6T6Dhr=z8fg_?t&;GNt;S~NH z&5}=Q;lM5CoL1;Ct1ru-xqE}0)jCIC%)71wp{+YJM{mFfJ4lk8)>0?B;}D{bta=^6 zoQ2XHSIPIUgiK+yK_I#2LcrZj5!wHGR8t zvrR7yN2Qo|7u~`dJnRo`Rm#?U*{-wtwBOMFi@@jECYK*+x(OO^U!dw_fc>&+up$#SYk)wjaZR@ZZc3CUw2{qRX8F&6(yfuxm z{*kQm!i!9t-*g2#0cmetTFQ7IOcW(la*#z}d_7l$=0Q$;Vndt7=|q%P;9lGU4?bZW zF0nojUm6FK%QGsP449yG5pI&Z}Xx8O}Rx&|g7*RfXh$pTqJp|N;vR}+_^O$RRkUfPJo7Fb-n zRteG>J1s7V?gMjk2LgiM<}oUVMf;mm&agU~M36PQXu7(*l+h!zfsCpbGl|jf1TUaE zcLPm1m->${Jy0<1%-dbPwueXZ#0Hg7y)ukpt@)P6ghT2A+@ zFZ9OEsljWSm)mirJ#HED%*~1mH&AOwt&asKIJ?haGH11$@Kc1F;FCOd(iR2)4MZEx z&Y*N~f!C~UVYg}Qxl=grS9PF=sj2XbbYq6q`_H|6$!gOZsivs0bBY4qOk$B+)-6;* z$aBaG@v;C5ZAz^RjMI89kG$WjyUkwG;f5@{nqvJRb+nBWREa| z@F&k79<++eNEjVfqE`H@of1x`V0X2zHPl}WNj#~`Q1Z@<>J)Ud!$H8p6iVJ5?+80k`oMW^zfD*ARHM3?vOZku#)Yi z-Khsztd!{9#Sn)Iya^3+3LgzqXNGT1n%K3mSC@y$ zfYnXeZQE9e9mx>dh5at)wJnYoK0tsZzPoqo$HLfc=Zm|$WUwEWSuQdA&NJ@8>RTh~ z^oi_af#ZbqhgUUW9-4RvQ0F`_bA*V9kiZ`U3phEAOAQE5s{zMzL>mYgEwe7u1HVfH z(HGRTY&wk#5QNS{dNVU=^v((5!8>*S08}$#G5;E|^5l4r0z39{d&UkohlmXlox#i+ z&hiY8cT?ZY0MZ5!fFJ+>0svJL002(_iHeGJBbBLAiBeQbwHr|?Ny_$SmFdk4=q9W1 z$)qBbYBw2G2@2g9g&Qap(2cF4VY)z=W(2Hi000UA*}+@hrh7Bs0#_40!bcHbz(;s# zrXd`vLs12pS~=Pw2Uc2Xr5)`64^@h+UB89^l*&MK2qM52h*5zFzywc%e-R+a00000 zY6hkN5`bM`g(dz#2>=qDJRCNH42I5S})FXa2LxGJ>uj2Lx?5!+1{ZE|F3h1!?TxxdEd z=@eQiw!fY7^RbL^ED8S<0kGL;OSv&m%8EUHApqpP0Nf9q?Y>bER0;ei?R-rksc8yT}%Lz}6M!mhJ^1eiwTt;;EpQ zutwo#RcsTmcP*X`{xm;i;xiM!m*5^^lnt4({C#1FdXa55TiS{Z zZd!5=@8mwl8oNt#fkoxqaoM~imBgwz?)|;$Om%Dv-Jyc6^3;z?cYU)+qf9ynO1#6p zfu3?4(zf!r5}m^KDPakv-C;gI;f5f#9 ztd^J1UG0maJ#@;BD8WQAKzERVf@*r*^Mn`z4KVI`3vH*GGaIy%=gZplHQwYrXTk#( z5sNQFVaS*leU6$I*4Qz!sk0cVfITgOW-q18+jU;N=NMecZ z{0Q@~Su-RqWEcRq$Qyysey0`d$;iM9FIS<<44!FoKg@VIc-Vg0?p%Ffs6tGNC#Cer z@zS$FPT~rdqXa%Z4nVh+tx*i=va8*>B5xX|Wva6zXHN#G#x*~MGp}yYYy)o4gzm;O z{3HSun?M?e0`*9E@V(Bm(uPaW(5XqvXE1%$WIoNv&Y^~t!JdVDY-9-k^j1SIGIWn+ z13(}>8xmtzG^xm4 z@()~H%XBa{7(_T2nq48d9Hen3DY}f zt*{%^5omuyNr^gP&=pYb0h& zVu#yViC5!3R#x(@IT_d4PCIWs?)JS7ZL_b5C)XY*u3F{8wB2>1BQfg0tbd&#lwL1H!mPjJpZ?bJ}ee)g~cW%60Z|8g=DfzQwv?*3C+zUk-8BvSnqpU8fWXnXW)Q3;UrZx= zMlEk`OD43H9LrWCd9%!&0U!>_+Yolbt&^$Jw}Qok zaVpc()qm5l_4zNmxl_nXup_C^_;xMc*+(_x#m5}OLx31mFoKk3>pK3d`E{wMkY8qx zhlwO+xq)l9QwDC3rv`bPxcb+ZI0~&ezTq_NpxOYvR=67Nx8edEZu8l!9S!HsNi0c^ zR}H0|QCYm)AfS}5pdVnH0LY|`rexQ8%}sp0fQW|WZ$N}>FyHRT4@R#lsf(R%f~6f| zPnKCQ$E60eAvAU3Dg(y`LaldzARbV2cVoj=;vsyYvKJr&U6od(_79}_-S`9zdj(P> zgC9XlYRq`{GwwIV(u%aY5P7@!a(*uZgL&{v@5=o(QN=r4Mf0jjkto`JeV%mNn#E{RU&7iI=5d)D+D{YIELIoa z7qJY`kT431X`L`=$0g{exLTKL%0w8*0_WU4V3xQPttJa)P!(Sc)!dsB;!(CXb|FQL zg%KtcQ+>UJ4z7a|@~<4UDt>onM}VwLdlB;}#m<;ArGa1>72 zN?}8lI0RrR#l;l$;Y>{!pn_9sjW@?)FNT1C~9C8-E3}r;P{T*XzKM{;K|9aZ9KCU8`xv7;*8ncb4WOgd|I_02e|1% zC!<0c(=oq>HeqP?lcT*W$q}XOaWcM~RuWnEHm3BV7z4!d zAhWz>beY)KG>)^PD_AFlcUNKNS1Jrl zxSn{c4oYYB{2RsUrZ3bIeNUNf8hNsc))1#9155r~hu;MDBF2#BpF&cu^66@xYan#m z)oCWj-;qUX$qV$D*f2x*XM*dUgLu2=t$I0LU+WSI?_6`A9lgvbf7NJrRAO_H=Y*bD z!$f7Bw02jUtWlWWVYW^$tt6qA#->V6c-!8fMET68$VZpyYRM_VpkQ;xORg9o_4%>^ zqt3>eAZsJp1>p@f%S{S!_;^&d>1`w<6`=`|f-s31bk^QrAEvUJG8iTGF(!}=i|tqGr~uj(xg z&zudfGC+P8mA(ba#hXEy%g||X+xKbQmBpbZZBlCF6tqsdUY2%wYeg@ZF9EX0gn18g ztaYQ2gGgm4J9F}@Qmr#uK(33Y)@!rwsH_I%kY>3uD8!zO{or1!I0{z;e@<#hqH~t- z(w1A=pR-=(C27du#$d^wS&K0}t}}HE(ryxf77@sK8pMr9$T0eQ@|)T>NZ;wrQ0^dd`^n{gG)`_SU<$eomT8KURw+$}hK zS(aw}onB}x5aV**LS3fQF!u8DlF_GOg30fCpgmlpw4R^!?O^K4UGdXQuS|2SNzI90 zX~Reo7t6WWvKMrF*SY(XH zHAH(#*4oX`n~4ECK>>dMT8wRdpPuk!PnY|}_%W>>XIwcPToTE^4ExSqt#V1)3+IQ? zY5up>R>X)A%zn;E{q_||l}AS8=n^Xy1Yt=vXX7X#d+t_FF5gFY)N+Y;-Ew+wXTQR9 zSX9t34lKGA#h@g%JF!BIUE%##`!m`o*I70~HWdeY1f_LHub3%R*X#m5g7Sg*$js|^ zuWx&}+9Q@s&v1YIKvn&=HU`4)-Re&8NW>r7fMm77_Ng+QvRBI?svW7~kDs?sE13&W z!)T`daR+W6i5(Tety?v-m4N_YuL zrTCk+u-4H}Hi^+@OJS@B77{oy|Mi@Jx~JC6Ng3SGQ~JMI}r#|ML^U^?LgJ zhS*JU7;r({NXqfC(}QP$ws4M?AYts3U8p2;vhZ6Ij0)yy(@nPO_$ZaGwS zKaK1hau1o#%vO6Xd&Y@1);{#LM)?qFr=);VyL+ zpRZlm{c?L<;=S*Mv~EX@rGw72bSIO2Sx7*_b$C}z$6IJHH3yaRbjp(@EpsGXe9L~= zVoTz=f*g@*U<}ycS!C^#AD_~>h-M)}k)6GV?$I=SPHmCbqOAHb^-4vdV2l>4va^NJ6pgLJ;0FLq93O+kSZv?~eS*Hi*@oV>q(woBSA9nKX0`doNm&7{w(%UdEY2 zh;kF7lmZgEhgT+|FBQY9hu%;HBriiwCaRSQe~F`%gTXK0;fwLHe(@6qk!UPTuxr6u zJF>&FaC_Srw#Irz15v0W&f~ccjB)fuZiv;rDszPd2P#!w#MEM+a1%6gCX8`$%MNuF zBag}>Q01h+>;wQNy32zK0w&n>wO^rAMw#h2e{tl>-YSrUe=p~2S==}>l1iGBC5wqU z!>Dyl#uf3tFLk-hO*zlmdZjsEd>H_@s)U5rtA!6u$jHv3kg<*tx5wy7Z83X9RW)_} z=svALGuxe5JSEvV`MS?rD5>S>k0yTHx<=wmbTgK2=ZJwZ#$@ld6hVQ0rm4_)PSV_b z3|@JZya9NQ@K*;udUP zBDI-xBnVcOXl^B!QlqiMo&Fhz_T@GRT;224Tj<@O)pVQ4tV}Nt%#D&jU7V}v`sigp z&K#GcZuXINshqAT0kWvH&SHBs@^@~gvg>ewFM@iV+@&yvNRs}RK5A}-VZ62o?0fC$ zFCHR-<)IpS;t4AMKl!aEYOd%}+<2#0iMqTTA_A>#d$MC>zP%VWrN$kS`z0&j7J%h7gL?A*s;AE`G<0LK43< zm9TlbOuLz7lJX8r$0>9eiIfc<$ck>&i~Ib`9wncjVZHbIV=O^|tW(IfXzl2(p3EaL zT)B1^r~&X>=n&W{Wj}F>XKu)=oq8LW?d_d;W>}DIA#BX=>5tgZ?K?j}$uDT7#0`F} zRa%%p5&9BK1xdld6DX1CVoB`!2Sf6jo%Xj)BOJ2bKfTCU(zH3F=C?WBWc%LM_u>w4 zxlaAmhw9IQs)T{25T+yFI#LG8&4u>Mg3OjL*t!SRw^zPfe!J(Rq4AeugOQ4FA<;-N zyhN%kc0e+;WKcIzk*e8*Z5tmhdZ>TEwjxA zofV00(Z4T;^2GJ2J$KmCg5=>itnKQQ{N@AF+Oo&cm=d?A%PgWum_HWeoyoV1Y&tCT z`2J48L;|TtOBNJ?OPGqE<{rSZ(qN`})Ukbx$KJ1*xc@&)><0VrCBULy_FROe3HK*o z3NWdYo#8cRJD6@*@6@al8w)mr1m{y=IhjK8(>i79ixL{fFF(X;xL_`EVKu}O-;r;FH!5bWsdc6diaQY zEdi-}aH6$t-1)=R(q&ZU0N>j2LcN@7zeA@*XAk>CJS*Un%?<4;!{R(gE#`eA+iIJ& zvQ6r`cacw$vCMns_G!r8?WG(ruTDGei~DB;%j=o*&Vr=A6D->6R{u}ZFqxjm?84LV zUUFJ>CFE8gu;m@*kJfWaCnVFKlRAIFn!8Xe3SXDu-(z3hyJbv*237P)ltkb|wJf7E zTpIB;>ij86sfDTzT#zMm%3p3oUnZ-pA@gy!hxiD?qbDp9Q-G0zo<3laCBpmE%XjF{ zV|SADaH$ELvL0;caoP6-bCan#O?m`x{Ng@De+}pVGCVnlVr6oA}{S=qn zidV^+MwU9!(s|p+wD8D+Jw5vHv@W(NYD>;6r&Z|5HuD?6=gN5VOxttJTJF6&-aV0_ z(=q|uJvB0nl^0>eXM2>|$tjvz6yf-{FFhO#E3}`*&^ZrDwJvk&2Zp_8O~%BTK%SY# zcZIuOD)q#u>JM<*_F|oUt{@9L1+tHMH5Ed;MiOCdGImZT{aSueo&@e?+ujr9?_74R zWn!&*>OuksZQ32*6Au$%G#M+7n0ewf;$}hLdt7rZkfY^rqh8|lQ{a}2Q)Ge3=ih1# z%B740d)91D^zIlVEpbILGttof$} z+FEF8XIopnpE`$rUYt@>!Zvn`JN1OJ_@kgnV+F#5sASNLbu7~-oVYB16-?)#C92U! zp*wja!qq-Of2cSKWm@z?C04QePRI+5zS}msabnLAA4iH5waY%;{*{KGLF(@{F4^fvDV5fPDDK8U2uZ}O~6Vg z78`3X24a|-`#2OQj&&+dI5F*sQIUNNZJD#F#NzyEK3h)yAo=P8 z{`?-X6;Z?=ImE2iKUOZ3df-5|kz4cXLhkrnShhkOv;XXG5A#NML)cKFtLIeOy~{q? zT|>qdOI?ez(6C)+*>~M%5CnKC`YL?yen>g$lit()vF!A`G{A$Np?@tF4!oMHm@4E2 zpMeG$9|T)Te}Dob(ygn#RSe@#X{H99hMcoM$-^2pxZ|drqE-E(YpG7ySC5)m&*st? z`wsR3ss~K>Y0nz65=PQ>HIH-BpXj_Cba{CVpFd+S2dJP%wPM58os`s-?HvWB@_srt zHY8#9?qsr*N7O6Hb!@7Hdb3DtM&_0_UhSxpP9B4+5br7F4wyxEo~}TUfj^>T(&a=r z=5emErzrL#855!hpKDU+DU%csSSCs><{rv+g~8UN>*SWqe1Q2@h)HeV&*iI?B=m3_ zl>=_;b6UFM3|oL>?UP26Ep%^xkt@&mU$gZBY;W|VR}E;<>#1^hH1B#xMU!Z|qp-vm zQB=dz9<|dRc}JhJ)BapnFJ%js?4HwDO3`=EZ6QB78dP-F-;J0YiAVfUR7-49hZHJ_SW{L$?R6Fsb1w%q5OqEn8(hY)bHC_Qy%4?s+m?4?QZ zO*4{rAq!V)Jn3K`!%Z+ys;ax)lfhg$&asYT$Fp z;pwsi$cMcZG?l9B$n|k`M$dL>Gi>HX0F6C!0wyqYJ(kuf{rA=4wTIm&>SE+HY#dU zeeqgY&IyGh_5BoR$!lf3W~=Me{q^&Cm!J%ZnwpM0i?bYr3)nj&g5}gO(yK2mZVNO?NzIpuO2+ ziOXri(pD^Kq_nR%4F^)xH-eViNZfgp4MO(x={K)(Pe($sA?Q~-iy+3-59lDqjjd!k zSHG$~8CFc$Z8`(=E_8NY=U#C>Q$=qc-BEkrg@8-NHyb&mpHl0V)9IicZtZHw`egx& zd9HqY{1W+tIHBn~`_nkW%m`w5aC7>(CF0L}CsOoW1q1;qu;#CpAgFz78e5mL;Z1!Z zB^s9p9wvZZCv1f?uEuU~LoFEzAPx778A~BOGoExY^H*PLPq&#{E#MvYtl%KjadPq2 zs%9{G=;hpqDU=FmWFC91CcP`;jx8a&Y_aW~I&-J_#IfN)b2UZWHJ&yf^*6erNb5}$ z5q>hq2=?Ve+%|CpsqHK&rzG`WbA%DVoLnggS}OXc=vJXdFic-=k&%*roZ_+#7{}G= zcVx*NR>*V2YF`_g_8jYG+Cy-rwLR_%;wPO$gqbjdY_r!r^te&(qg*yz>J#n~OFo?G zxoFvi7#5iZY?*&T)-EX4{PW4U#H^q@wRfx)2@E>;>`gEQX zON0(Vj~t;xMy*=(KH<$$(8gul%`1jL9Qw_;6K8|IqtG~N*FXo-%hbAv*iJ7@7`UN1 z>HaU7b4D+mL0g#;!KpRx&eI;!g^i~p^CZl}GZaW2CwwweBt}Gm zR9pL(3tWGxUYeP(i?FDKMB6kRx5IAx6}eD#()r1QkG3ggkG45H&MBgOv$QQ0AvEz; z=}M}$H$5Des_~JwuBZz=Wl~F#?rh@Q%)N1TWnXFB+3*W)-EZ zOLZ}Dll)~cLXYHqOB#0Uw=p_Phg;dyo8XAC!Aa*ZdNoC1ivAUL%V9AVTTUfF0x_r} zS6H3Do1Me%e~EXKmWM5w<7BK%fKg10w(Gj{SCvy*{W;6q1B8b(1B z>j`hM0rSbVuw`9s_>*ZqKe!>+UAt7xBWu{)*HqtXYZiBeT3rNq%}{*J>9ElQl5=G4 z3;C&@nLEEp(!~4$(kaH{9HwnwOTZM_Jb^1()>D6#Q^x2V>$*}^EnXp*oeakX9zJsF ztQMVvpuwRGa=UL#UFs6tj`dzpI^CWXoDpq;4&)@`~C`$i4jM z7MX0GJ3-DB@S{7+R*8uj)%M@FT^JcxO$=y@t-Fv>rAv?{K?Mh&+Ljt%VK!g0FI!5P ziiF#PrArRF$YQQG*2=KGpj{zj*dl3#n}ox#OhVoDEW|Xi*CQgxFD`(yXlH->p4-PG z3R}-WdFhKLt-8D-zVK3~`IRcIKb&ml$4mty&{&j$TabY^o}a@qPR4S>%H2ngH0qJ3 zQ@iNu`f`jjOqb6Gl0rBo$6hi6t@hkgX*2~TWg-@#3OpnrV}x`mO?L+`kA|75Oq=jI zD2rHYgC3H0ljOSlK)01@`^^=~b9z#2dYPtG?G@o3bri!ctxH|od+mUA^rG+`7HfCh zZ+N#P+{LXwjOtDATsJAbw9&CR>?&%#jb?*%JksSQsD^=U%*#Ws>McMzj&;Bpp1Bh*TEI~&bIRcr;+RN!tK`c zE*fij)6*BXyEM2hn?n5*-80g{I5#rBz~1HLjb}7s)*6hSOQ=(s%Ae<6Cl+Mb=Xd=U zd`E6t0nUB$37O~2Uqv!Szao!y*Wi{h3<3y&IQHy)_baapui{ch+`9Taks+PMbA8dQW!zsnDF_m)?dcV0(K-C=*Q23KO4&4xOUldCwKbfP zMp&qos-n>uon-tCMj!+7rSy4Rf>uCmUX;lKGT=)P8{c+m(R`1{AKSB4V{O#AP#yQ! zw>dKIcye6=U<`e+Ur4EZu9=kAVMCOIC_XQ@QEo}W@h=Q6ni-jVyxvojRY5Q0oaZvd z!Pbm4XRTBC!tH|~-_)EU`HW{2=Uf1Wz-X0LPB>DT&ZaMP{EU|^A()dLfkQd zj21GpIFfRI-Xw?@tFraL28IO1WDBi?YQgErja$-kiX_|{L$smdT1A0{uTV9FL`$Z% zCuQ=G<{Kd@>r|!?EJXy__oB5QDyAW4^5;^wM=i0rt4BOFH!!Lq`&dP+-BYoJ{KOk> zhBHgG1?zBN4|va;rTihD{0ZY}7SK*Vj#m?907T49XT|T^F;!I+r(ox;1I)YbjAuBL zPHaO%rE|Oa((Q985Z~HvI*_&kWqnR-hp^H|nsyt#A+~Ol$3NdGeznegaTnH*9DCtl zTE^1WXxWFvLe!|e>>M0DREygRgieuY15*xX|6+h?cBWS8rI+UGquXwr_soJ%;gLQN zA4#`%U+G|d>Ae}#CD>5F!Qh9(8#C>FfD!iMmttEM&XBKBxNDDVa%yKUDX zKnaENSGU*w<}HTUdmS38)dy#ylwUG4I6`>91jnA5Kg&jI=z|Vn2|uYyr7IZDT{aF zg~k9DqDk0hULrT#%Z0(iVd#&9x}TMDsov{@6U=x|Jb4Zuj2_{!`NGN4lA)7T((x6n ziQs7$$SAA8JK%#UY~Lg(?5r<<6P7F4HnO{g9)v(_|AjJ;7H(;M5on=%;g&(0Pz>J( zZY|;LZF)6<3GO8Psh=S4SZt>ifr~VH<-%qn+P&tfdZ@WD5hg;FHOf~O79Cl*_IR4UIEZO-AZot_lj6H|Kjy2GO^O% zMTCn?^YZ7?rGb0%w(;*>Z0M;K>)y-g_P1q7?-qaa&y=_QK zn#JWKLCgW?r;p^#Zn$jsY{&62wV zUj52qbUUw2)84>Yk_ry=M~uaTYf*0?9wYt7rGaZQ6=De^bos1#2YqX53%l^p>%S`u zFxXXo+0UbQNpmT$)1Y3zjJu_?hAG&saG~;{VC!Uq5WI*`!@q3Dw@d_*FegJh%2kQi zVR8&890qK_NeC-d=XE)t7920+;19dQfwy^CQ&k+fYO6(FHyq#(b1qp_gR?nGPBj?C zc@)mMh+igP0gIN>NH&I|d7H1h?8;-&i=s4w!IydqmAcNDbm)m)MbB0stG7`Tq(HDW z^x0I}sN&ej-t(m-r5dRs)yt|_uO!;j>zcPPX`DoEX3B_JpL9x2fRaZ&9|;d-G!lc$ zPPb&YgNIV`!)|hrwkP8UB>1zWStP?4%&NE{tBfUC!Hp}4=*$+N-lS8al&3$B!`gLf zi^?iU0+Rv8jTE$?5^w5qAh#d!(0al=G6mKj9S?SeontlEi6!kycmma&b_c*VPuUGW z20fsachDL-OBMoU`X1!yA~gk~v8;2@l%3mT)u8-e9N{fdM_de&+<@@_JLG=$Zj`r)PT zJ51B!j_^C&w=R{(tz|lcgk#5nD4>vYyWVT~BZ%BFj8S6|x(VI$Z!T!coNZ*c=KY#H zePpLD%W>f{^ue!Y!^9aqS5;*acn~Rjs)&taV_Vp{r273dL#klqz!JfzqNf|4MZLTZ zgEt?e0?Q`G1x;hYhFMO(PM(m~EVAqDZuRA7Xx|YPh6v>BZPj)@$?uk<(5^2%IdWJ) zjQH?=M3VwCV1($eiFs#Q(_~V#6I4)SM?>J<6=_Ml{qG@yOEe2ux9JBxDWlWPNh;i2CyTMr^(ERBU z7kBB%%c%as>rlJr#g1g;pVGt`;7g`32Ac(%Q>qGl5tjzw9QOQ@w+_HH9U(cb#gvx( z>}%jqr8+XjrABYTG-xfCbTL1~XfI6WIq{62Xd}XQslQxzMq1lC0-0$*u6;loQb~}c5rwQHIA#c>zvxrGC)~YR$L1?Z z@vkx7&&{>8cll2lgMu3gS+0(6f0XPL@Y&)DUz0oZ+@U-`glGeJ$3p1ZvQSBy zBP1+IFXz#>TTn9?0`Xk07Ni9b-e<$o%_2s~55wkI=g#(5ow{)aabRWlk|mVEQ%ob_ z*Z$sKn@)bpLnhpaTmVe;BITSoyU4$Q$0?L)VUc8H0TE>nk+H?2<=L(m=XdO)kMjDo zRRh}U2GGh$RIp!CU>y6rwK2X=qCRD^D}hvKp>X5a*~%5h^PLk)PwfEQ&}n%a+%OM; z0%%`=UXBgZwb6UYj7!n9B)Repn~3xfK1e-CR2%|R32N6cclZ@Snx`WvWAzk;p$)t5 zz~+)%eTwZ^)RzM7gN;U#;}8-rKn>Icj?^ho!U9DOL3pM)Oa$Ko(F;cyN! z)?4j5YtDsu5=6)^&~ynn6=1l zi#;-tdghDk`4nG(7)_?|4VvMS3Tr3;^s$jJTD;&#($*(IJ%D2(LdDNtqnQQ$BIkhR zPJ>>%v1ws4Pe`bbr~(!g?29RSML1lUEuiLXObKb9QIh0T6T)}PB78W7y>8gkSoH@{ z5V*1n0^>D$xz+dVaQp=EOIZme;=t&NEz!~2;#FJc2gu|`-LLphJB8}OUUV)QSLGtY z@h{v|1&_c7enhjM?r{RHf0e^%) zst5n~HiqSE*!-|Cg`F3NL4$W5M&BNo1Lpz=vjsqY!RC36$7lH`YJ^?+>MdLefB;-D z=7gbOy8tm|9h12wzLZXN&=Ee_HB$|*3}dkb!}DYg=&2){g051t=V~aVVLj#NrXTq! z_rf6riRHcgV!+#LBTM;BACw zvKhw%X?G#Bzp`;2^y}9l65OC*#{d=;p#n7RSku}jJG)^!lLQ=tKra{_Cs#rMP=T}4 zl^qAh4s2MmzIvjO69!`dR%)kQg!x-^kxNqX#;=%jla@4(FDmG=vT*X3!NP#S@l}h~ zk4!2-ZYcB*{?6Y9Yt~a zl^em%t?E+I)7#c3-sH7wuf|Cd8mcN?nQXaPF0gm$;X>W%zlK9)SGxa75>`5tqi9g9 zZd01+%xRxVO*!c zW%u4|WYN28)mx1>y|oat#s*ucBuSv}TF8~bm!RzG8eiVI$;R~~P%F<-&@6fQJh=g5 zW(bW;3A9MQVu1u6u!JHh?Lqp+u_6Ad|EObyPuc=L0<5@bIR~7QV{j5P=)1)mk!=r?CPE;Fkg5`1#FDkq{x13_d`@xFI&&UKd|x z6rVTpPCa#MSq6Es2wZb<)4Y(e%SltGBPO^{<;EW~R&Y-112f3kr;U3BqkahGrsp zNpV=&Y$jq*yw|A|-?Eaf(K#3#PQ>v9tv;v>7+8`#W(&Vc*=!oy!pId9hNR-YfcfvV zrw-1&OzpcJ&SBX1dVm;~?C-vSFX#5m4Lm%6&r371b5N(MFup_KT2=<(beFZ++vTd} z5-zGzPcIBpVqqAytFx9RQ@?|*?{;951TFHGz@o9@|A*NFD(B0Y1qt@W3Uk%YXY!zS!UwXn8L6RpOituzg7VORcLMoejew_o`anIvM-#WK<7OqXm zRljl+)zDcP5&NE2{&QZ$an_5>Kyx1X`IgkXhFIh+;P77fl&{dXtPW&x3Ej)O?C|H{$umc!Jz@scWf;`UC)M(LOe|nlCOQC{pO{tUI zxcmcHnXq@4WJazAr!biDu1@0EZ|WKM zWY`Ct7%=+Or+9tfc~wWdoxpC<{2F!$)ZdbB1!`iF4RUPp8?9;yq7|P{`A>|G4 z#J?vZnL6Z6>z3V`vWO8e1a1yd>D^>$7L~HK=x^vX8Gn=76%92YbbTbK)>_Gj*TmAR zFWew&zomj{6V~bj*c`0rVk%D;?l!CXJ3}dbTes^0d|ekhahT4h5f0a!hS*#;Zk~0z z6_HJ!-5EaQOl0_quT6%m5|2rS5J`_KX=NOW<`0Yul<5}_DRUsd`s8D+w~|OX*dac}>MVej0En>V+KpqDy1tB1hz9jWu6^EeSc6sb8q9S6#I#G7*s zK*W!x=q49_0R^Ll%!xR)KI?9*d>Hnh?U#`1krBg;ABmo}eRypJ#X9oQ8(WznJ%=}E z#wd|+R!!7>_-zWx5t_4b6J+6)gp}zhFIgFi?{@8uuYlfx5j5=m{0pV{)`S|6)3}MW-6VTrZRVV}erT`OBh{5?&B6Sb&p|Hi3LeE;N>* zATdgkwF1-06WmlAJ4~IjWq)Z{RXgs39uZJ!@fAc6zZ1hJr8j3KzyZQF@m&0enb{JVUm3bt-sX z1SyEb5)G(WR*pums%u3*1Y(_(UjpZ{Cr?^!$vCwiyj}KZi?E3HPzrbM7LU3Qb2@@f zG(Hl*3|22U{g>f8zO-~1yt=~909~_QDs(RizwP^YSi?c0K2XQt1S3;N906v3dlKdH z++slnM>v$^NdczvSQN+psx7^F_S=}Ar6F-8z+dHcB@dZT3rEnF1)#10*2yCM1^z#O zCn0Y=jJnA*T<5ZbZ#}aQjqov;{7o$e6lx;i)~rAFk$>#}BU#&u+$R77j?gPbMCbnd zC<*b1{`3#NsFCdS`8jy{hpWHQjl%sQpqyc*`~L9&*?2DAbFApLhX_QqzH%So$Nr?z z0)J>=UKIk6zP-I=@P46li@omwGP*9|FaK$1w%!RJt*^P$@XKHn@X)=I|A7nN1n1TC zJ{{<^67HTa!l2w|0#AQ)?v(pJAZpdvJ!$VDfPU*Yji9!T4n=?RPvGG$`Kq@e_iOvF z0sY#)`t{=8cPr?`|G@0o*Y*3nAHSBm41H^}-}ZBVI2TIPw}%Cz-+_)j_tbu$MY`A1 z0iWcEtNcOiLOvOvz`wd{_*wke2Yx>z8;gR zwCJdy00Qd!u=|6oqxFx#-dsL?uZBN^>|f&_r&syqBb|Qbw}w9HGyBqidqHU*eZO1-zUi}a;`zif7D4gO0n>=Vf!pEu~_zRHho6zZ!`u*W~6<-ts*?tjPDkKtYX zhrgIqfP-M&K0olT7y!-`9BoB()<2>W)Qv~ zLvo@R|IC?cdpLo%efNv}2l%5Zfwq7B>aW{R=l#cK6#qMa&1L2S^8PTtP!i*wD6rZe zS}1zOy?!z;-`vknjrzO!Jd}a`$tP3pwny^UlFeb~Nb(3i9A-nW1(b4b8_bopDhX_)gKfrzRN%uD&IsE6@OOa#qzm@9#0M%!|chsUXu;>f9 zKfmVcM`A<#4>gYt{Qd8YS?GTW*bnvi?xO$yWLmV{Cw|D>c0Y4p?xLUTi#|k;j7$E% zuGdQS`TpfElrGLWiK_Hp{&y))pZhfK@_$49MMcjz`Xth;{`qI1T>aqwDPY@WCB4zV z+ox}S;Wr{b^7q-OxX9mMGuLta=*G@!|M&U7)XGPf1d-A@`perd{ri7xZ&A`?zqup- zN${L-zWupZR_F4AM^^d)5OGUxjOvr#@u}Kvuk1(Xc(uJkU$+N)%H-RM{jb?P+e+WG zC-2X%HILER_IuDjZq{SlZ~g0kgQLW(f4~pD_j~X6-tWEMd;j-FlLA2%p+!|cO)p8I z?oEUKrBV6)TN14Mw^gmfmBowN9EdxEV?ge<02f!>uOKpOWMpOGZS8%3v@!fum#VsC z_neQdxIP4L*JNmXXZ*bcal;JUnj0HgdGCV{#^1k@p9?hWUljcL&!;`sgyzvcVmkgd zwEeWrylui{8~E`++TcH0pJ)6AB+ju7EnxpPxUjQ7jv4-aHbbc9gh$Y> zP@|}S1Y!SgeD0hi9~+r1KA-Iw|1t;2@T(dAKig`EnS3|+%)e=X(*A*iKvLTfl#M?* z|9lAJ^er^dYkog`2+j=E;F0_A`FQH~4>R-z=kMk}$!A?4FaLoV*VKx>b_21$`EPLf zYsp&1^XgFZ2je`=im93Fn=u5ZLUHH5-&F*nmDo4q@14{?RUfY%_4)WY(V`#sdUc@a z6LB|^dJl~E!0)}@d%gF2@AuyCz21Aj_j+5rp;Fx7OCKN0e*b}D>(72Z-E#k9{{TGR z|Lb4Nf8Jl-d%X82fFyoLG8hQ}0000O00G3*QHAoVN`<;rU583Ys_rhj>Z-2p?i=-2 z{ke2k-SuhBKpB}~u%m}{Z*376h9AH-w!{1d+Kic7AQ}8NwnZg1Gl)i4cK}A8-zvY= zs@~^#T>a~O^PmvvVdolZq5$d7Q>^39)JvTxnNIIu3+AihJ>x}NnF)S&=X|WM9kmAh z*1gB6Q$vr%xVcq95th5jZD!TTt=s5Gu8oQs!B*o^(R^AZ4`Ih4#|Z{VqyofVkZh<5 z0EozjW(ukwir@<;nMHBEB>ioZXsRw&ME;QZ^U(hOj9D~Iu4{5!ljNEv*EPAW$#PAT zYx!RvMKTi!3K66TBS8sH1SDio5&ciOMFdHMF1P{}c?T%*x9V(%Kf#3@GC@V}xUXMHY>>EcKJ8LTm$6lMpA#&_XpCGI%`-#u&g&#Y3X7%eG&Cz?c==GgXe5&aP0^ z_#p%Zjj-*AEok}O1zx5uj`@IH;U{GhQj%x@Zt$n94wd}Jc$gjQC@AA#yV`)_V+6U8 zTg0pY?Eta^%Afjw=;Wn*_PPdnkl0ERW?Y~H&=%-Y{v|%>d?)>`fhdPi1{c%~DiwY# zoOq!_^swwC|KUe~8+IJf;I@?pV$bgV7#Wn%)tVlFZXB_aNR!XSb=trvkc4guz64?k zZWM+W^elW)n6?28F{uc*LA1$I35PTi5EYnnFk|@(Xv{`jf{SE*qGt@ygkTn?(y(s7 z6_3(Gm{51xev&2iRhLo5&Brfj9eFCmx=1 z@6+Q)wXz9RFEC!fr7yP$)hcL+{++nu5ppYu+ML|gI z7cR9JC&W;-OT|LN1q*SnB5d*Qt4xHDoWVk(_^PXj;x8i<3lMkC$s!1F+8L)@BcD2h z$d726;K&mn$Y^GS@JGxRp5-_bLj|&NIEN;WnbA1z!vgtjE3|-AafS+u+T^0I!I@== zi82JaBGrt_ImpdTf?Wfz2FIRRp481V!Ax*8G81SyHxNc?k;4I(454%;(_{vtnxJ`l zvRWZQa)lE)B-h_iDYSvTTC3)0%aKrK|yib zo3Q}*#D&wqZ5a=Da~U7wc-*=4u|`Oc$>e0Cda#Q2RnSmCC)e5giZ~9jz!`3xKdB=* zyu!4HhpvFe`DSjAjDYO?k$uX=4ll`Fi~X26K^r;HHa>hnInN`9ERYs$zHyPr6=fTW zk((Q70pku#hb@4TeRM;AkbzPx&qt74fuBHHZ(zi zdhv{4K{SHwFxgoo20ihAI75sjFm2E=-4mr<5F~t`$$SCyW3fW;ws^R}Qw4Rv7^*Ak z$Rj44XAox4Wt%K0Xc5f{0me15aGY_D3yRn?=nT7`+yil?gzy6vh)FR*y^wt*1SFp( zLx$Ot4$xrzsfS{46!2STvVe)bU!f6wmt`?c{=ecZ1$GqD(DS4i2DgnWFcE~+PBQEl zPp%LcL0}~8s~DrGDm+^@<5Y0I6`yMr)s9Km3ouLLRcI);I7#{;7{lYK8?Y7|{rpR6VPb%YJ8jM>;Q(7sOG2tJ?C(6D|Jkxpf>>zd| znbGnKkdN{Xhr9$NC{M{-_=xb>DNhuXG*3CQu~R|$K|u}yR5jYoRuNV*OsXHLcgl;g#TCg&{B=k!+b8OI^xA?LINFV!U`~x5?e`y z21z3U%2P$mNw9orqChVC*Q)>9P^c_m(oF%(STD0Ra7Ws`YA}lnMs@h6vHl-5}75WSq5woS#G3B_>qRv-(a&mPVy>A z(+y*w7~!pmY~%tgA1>(Ri&O}Hg4ztEX+G>p6eXFePl6Oe?d9Rzjs`CXjhZ#zJ0eXb z%wfxDOl3N^^ep+W^| zOaU#6Jk2q$ii_nx$UMobKfO!=YzKsK*~O%SeCI6tYs<3`8fYlP@4F|G9Alq+D$*B! z{!3oY;V;gHhQI(Rnx^1!XmFRH3c{Y@zzIIglsF8-uo6QLhO(PL zie9V({{6|A#W2Wju0ycMo@YcRw$m-1iniOLJNYQGTjfE0fCK% zDI@W~1}nUNcsa!50l|)qWUVay3dry^_6*AlQ0z~z$YmFCV>)DqGo#26n4?}XO15H| zL+6Tw(_QvuTdHE;r< zPOykaoe|4p0R6-9>mhWDJOB}qA|@b6%;6#=uwuqHZU>=(7chgxD|eV46NBs$lUZDF z3q^~$9Dj;Y8WMtNYllf<~v8N>)qSW~<#|AJ;3 z&!!Qd68z{a#6=Jwc2mU>hWvy`7a)mJOGzUPR8dUOO5&AShQq`H6fE>0P$*^)BNdcMqjd!| zOW=(f`B)*$5(Q~ka7bkWv*R(Nms5HeM&%Wg<^>dfy#<0!fjEl^EkvUj786htgt8U7WdC&CJ(L4v%FXN_P*s>&Q63nvf+e3~Xq zNu1P3WK$E;YO!dt0+dCXX)uK0Dj0kQI}BC@djaXOq>6>+3@kx?(fkWEs!z}WyMc9$ zV$L{Z2}y$s0K`yDlw-IO6vM$;9MJ`3Vv(j7tVUx*9lN!!1Of|brXeixYH`anyd6L+ z5S+%uVVJBjX*_{tG-yHFVQz*^AZQ@4{IrxMhNO|#1`MK!mtlklIDySX7iiE0WV1Bb zNH`gevs*$Ojf<_Y4csLqAEYsDf``@$W;XsKFf9@f0 z5)+`2gFfhL`;~J_1hIG~CA-3ygt?YDudCmv=1xO}>`8txIl1fUWJzcwB)I89t5I<$VC=A6k+c(&kQrN*Jht0Z zPP9HyA?Lri6VA}2Emv`zIu*2nwoP)WiBa{WN|C6wh;=Bz0*TQuniOC0Ib~`Sh;aPm z54Mew&{jGnzn-T$#tnkqDV4kuo>R>;iOywkN%;nAz;~%x5-RM{g4<2r1!+l@u%04q zPfb{3lh!wf5Y{!)@hE9L7I~S}x*(t1EHweEE|Zb*ooWjk2lal?98p%G6x^gYzi)#(p1=qlv1;0mm@XUsiq)Bj8jSlF?0sCe3Evk zmfA`>dyYI(Rtorzr~k%NK?$==iK~_-zs{#2rH%9XNV<{CDgF%yQkf|24xCSQh0ozA zW~_3#dBCJ&o>n_BmBSHAHXk>Yi=ka?Di*QJyRWP~uCFMUlJ0SGCF>)lzE%^!%G*jQ z;Yb~+m%2lQr2b80krli)N-5?%$!S(v>J_YC$TO1V=Fq(}q*XE#>2;YW5K)J^c`ki~ zQxmIsVk-l)YIA|=@n|`!odM(niFcSHsxruErM&L zuFv`tvgJx;`y5$XB^;VFX1J^-z2ct5;5v=%XP&w1OSUE)K$0lFFcj!~}q-(4Ws|4t6S*j*-@k&`$ z7ttQ^WHqb7kCke{-e`($oHb9ij}tCIP0R$N&LNMQDPhpHQX#Zkj+L5>2_>1F57ulR zK$NZP9c9xd(dnWoLYrmbc0xA37#-WoHsuMJ20Z86loh2~u1SV!`UKVV_ayCWfhD^hLpcBL z&LKyE_0z^W#R&#J1@B*ZE4EKes=uD=$7|y#39{%@N~f7J-U!0syyx9iG83-k{5jXm zi72Hg+UK0jUu#ZZ0h6EOj5B9quALHu@z~k4iBtu5CM+Dk@AVawV5ZB9D}}lS$%UOE zC)CBoA)sc4OF;v^#e0whCAryb>3a3-5}AbPV!j z=;XwwU2)vlye(X*`Q!9id7TE9jX>23p(MAHMz)taP$7~o*`q)%7T1Byih!)sr3$L1 zaI79&GX`Y|Px^eiJ24lnL5vGVQW4Xjd>r&i9jle7*Fj1;j<%Q`%eD!U9f|6hH1ZA5 zg=B@hS1z{pgk>6S5)VE?dlgIGcs5D7iak2Bc1Vcft$1-*_Q@L7x$7~cobW3Dg6Jx^ z{%-Oenvr#kM~k7h0&h=BbjhL819j`SR#HRPH>5Iey8qEWD~D`sJB2a`6KWhbsW$tG zf(O+SQZl|p%bUcnx1pp_Kf^_e{wyDST#TkAr1u@Mv5m%rUo^2*5^a`aw3|K&Rdm2A zm((?l7F?~1sUX@+nls6+f_E>-0f|gysjIC5%_pOslUT0wD7}D^rj_Jhkqv-9I;mAw zx>zf+s#m0wCPjvM^FA~cV=U>AnX$N`60y=~vI;|$escUN-RdZ5Q-MgYL7mdq&7V;e z;fgzgRQME>1?imabjk27;dMQiZU#$qN+x|&bt$@Rx&YrDND^pLR?Tvo%a`Qq z2`n_ytX&bR4+CDNo`iCudy5YJ8YoPKDhf$;YKW7xXtwAG4?@8 zoE!VbJJj%+{34yt^aIkgJd2h_f7s8JhW32R7wEGk1#&=_LNv#XUmd+VO~v)Bp{Ocr zLcK&tG|hx2G?|oWeTv4wyi0F1;K6jGJ^>SuaC%czaV}w(;-*Hz(mPp|IBDV%vq=sU z3M@G_%^E;OzFdd5XKMDadimJA+h9Jsm zOs0j9uCy?DRI52x^D8zQM_WzEtT{Eqku&icQeUek7Aam&BMq&XoD{j0m}{nGOC`Xv z5;$oZS3q^hOwAV<@^T8)VIjoJkd9{1oJD|nI?g--cFLVdixPWM@Qtc4go2Vva4I!u zi$Y^+$yBRhZ$LR$j2)X;MkEM>nneC59v8Z4Lvk4TIfCZbnmY60G)ZV_a~Ng1$B=hk)A-{8a}{Wjdla@)e2BUShb*6L}FE~jdx zP!ck-?s;xuaVKU(={e4Bx+hr_$ZMmJE3Pm!qd@+===v(06?flsF+FCKmPndgJEsE@ z8c(#J{d#YHbVZIx6|y4t-dD#gp_JM`DdVo^rdqN!heZ=s2fOe|NzyA_O0amMzI8@a z*2L;CD)Unk60qDQTh=7)>z2g`Wo#5vUcG8tf?qo>oC#e{8es_Flo`FRQ9F_ob@1sEv>p=}*2 z6K3p!Gsn&2syRzCj>;8mgSWS|Fu-ppNm%LDuP`kymq*5#!^E1`b(4bZMpF}!#Q7+M zCdUz-bH_U>Z1icB|2)h0$ayQN3IlZnGIX!1JUHvPGAS1{Aw9{;$iJCMOsT}q_)H+g z3h?xo7Hh6-d?Js}PI{sOr-6F@IZE-8vlI&xt(^l~9S$3Z+gi1j?OL|&Ybj?l+G9pCskFk|)l;dMzJJhtZLDD=iuv+y=i0fZa6@I{j`xO2^Gl?NmrS3#m<86)ju$qzA*edCSnbjIgcf zOml0Y96U%Qk5po8M1eK-a&)v& zvb91_G~IL`h)l4^4h^2O6m4M&AXfmQ$~cy{b-y_V9&LnM z=Ftd3l@0jq4G@%}P_(SzVZG`9OX@ArcvO^puBfI@C8`_U)LyYVXGT`$Rfe~Lm%Oc0 zrO#q}Y?PR>p;1cnHx2tMp>^7!wiDSMWkX(&db`U(21gezPvFZ{NX0_AtGYiCtGB2W zW40Jgp4Ex2i!|_$LbFA9c$sk5K57*x#Vzxe1=!tne$wwme<3i|uEDKGL5hg0gMDPR z9d^%>BXV2H6k7}{8%sIStK{}G7y}mCWHora9x>9QBA>KZI^0B|U@PFWEESF4QX~JW zv9N1ltb#kZA6JaZuolcKO4A}+TYRg!uA$D>Hh-z=N|Jvfdv9I9cehMZH&Y0jJi{<2 zCVmp!ut2*=yY!=C_eI;1E*9BN7?(I|W*Yigl&G4^M|V@B7a)wUX}7e#&5-krp31`A zqxt0MITfpWrNQ1#6ICy;v}{!$JZh0HO1-=rv=0Def1l~Fmy2*`N?CH{CHr3Ug-%Eh z!{321Cs8TM0-3SS$Y6A8-v)Q~BE@VH;8l*DqTaUA-zaZi#p2~~`S2H7J=0|V)}j~T zl6sw{Gtu@%z|OOwSrnWeUyM!WN5<1{=iWF{lIi-j^?ma&Ns^9kz~#u#oXgDa4_(!k zb&=|_CB2@7wDz|FJKEhXNyCnx0?MXr2q4RvzMCkz>aD>W@}l7pmws~?*ja59k}x>% ztIv08kJfc0cv>P0m}fUBJi-@itlgN{UsvIt!J#nzr($=QY2NS2kZ)7L#%A_Je&J}` zP%+XbBFv+50vHXN8FThEqPkr9hQ0SI9Rd{nzIvJ{-j5{r)vO4fIRGLWia zRBRAnrKIlGhZT}dPa)gb5TVfvepqSWQi@JJ)n)^Q_}14-;TSVtw^tQDk8CW=Se;T! z7dba9dvR!~?Frjn6-aQ4Rk`zr5X^4P(7u;nc%5>ozGZgqIOh)DR7&{t6J(*U< zfOFJ1M#zct3k@@kmzAD30k=|&`W+5t4_|i(7HlTloJ1*cYL7Q-aAvpq#qbJR%faT~ zg`c(d024L8z$v+evs;<{X9bRy`RilTP^us)=EJ1(n$zJX_Z(}84JMT4S$UmI&Iq&v zE8U|W%jW6!S9SS>OBsC3M8UkP1)=bHk<3UN?=1hg)zL$(f-{8bk8?<B`VKmrTXkA*7wu88C!XNt7c?0TK7l_Drq*?9$U{orunY{&lAM_c%;w1 zX$qwF*z%|3Ri!u^P&VeXX(;-M@jN$1lu`Z|lJ;|(p_FAA->#9HKcxS-PpI5_!g!kg znTn1fdb`@Xlx7n?*mB9RcU$tBSplKN!&TSNmrZ)4y|h@JB6Piz-`%Ocn2Z*CTv@L7 zDyKwGvfb931<5{MDOofWIg52AZ?AND2#4{=ROkBS`EchSZ@zhF|UE!o5;!aEfz%+t7_;=_oLTG6OxPAZV1sTx>c+ISA6Z>{dVArp zq#Dxx3Gd-tM|}sgJhJZOp~IBd)s25CLBOprAbC3CO!+XUg#Hh(m(asf(V7uAjbABJ55i+HO>hEA!6xQPy-7Dk@?aLqMY&%_qX_e$5v zU9JfRQwDRNV&MsNTEvi7LN%XWm!C(E>SepBQx2B-`^%0SFPTiw$_HqFWo5ou{x*B5 zO?qt;5-e32T!x#H7eTkX)%}c$P z7Ft6ig**JPE@otl@^D+P{^aQ)!Ntw2&|%2&ppr|IbfNL=*EPo8Kt66}r?7hZt6qes zt7BJjwc@+K%FS|>k0D1)XqJJ&khKa5+LS@~23qGI`1%AK{oet9vK}6b>YH;&TSn;v zTwBeGtd)tcazh=I1tjS+jwXj{r&bDi<^FJf%!t@W$}gqG90vGA&tvbCKmHr%p_LWX zZK8S>>q}0Vnh3meNisWPX3a3ad zNM}srHF8mc>yG2@V@I_&GoL!9;(g&mD`F9pLvQqV$h9V+q$Vb)N`NU4h=&c(+_Oxl zB*>#W-JKZ1wk(-WlU=z^jZaqdUKHBHjZuQc*23fHuYAtqA_G{CHs+*K`*BUG1*G~lrG|^SJYs*+ z`Tma^Tyr!?n0%%qo#G2;OPy*;j$iBj)Q{wOB12ewMhdL_U40{<$+rC{g~M#Tnnk3Quz`Tnq-N=c*fPmr(vVo= z`bPX30X1FCeb?iqfXq9U=lFw;ul8{ua{l z@-=*QT2DRSC(ZR9llm9Ul4L1}IYXchpXsF3aIpoikNxF@`d;ZnBl?dkkt!=yw^dSF z)g{Ymp$~2#kFsACX)l&;N0HkEQE4e9JYO&P zhjvP4TtTA9U_q(fr{H|wYeKM<#X=Un`nuwqk)AoZf^hkI&A+)pZWHdBt5(CIZYupf z-dxVX=e@$_E8n)qtXA8V*{SOivAOb7y=Rj6QJubcWfbEL7;foC+7Nkw{()}1cYR6A zH>k<|5I?2vlJoK_cI6~S27lRVwc6CebH6IZvAx9jk#!Aa-YOqCZx90!>I_Nqi|;|? z_cWi}Gh*&XUOl|67oXb5r+C9jAh0wRmcyJo_{fr!6zDYgtGX6=RtiiwDpJsHiQ9o3 z>wyb+hq-2M)6B41dhVTuD!r1&H})M)*(^jR`NrG@buGk!Bue8_mE1;R{H0DLN@cEX zT|_sXF~sOc%j%E5XK@tW>}>*_XMZTfC7K^P29198fbtY=jRGxD7KH0%m+jA;e7LFw ze0d=V^9(aJ&GtpvY$nNgC{^#9WV+OAx84Nzi@%SIBI|E9;xq}MVF)AvwUnYKP0jcR zu{m9&o)h`Js{(#jZQ-Kj*Sv;8C>+v+SAcct4q>N@fNz1G4`kh7$4d&6GjGBt@5@MO zhz+i{8OtlWAE0&ALi4OX8G?VCy{mOZx7;lK=hWoD`^gf3)^kthZ6`eNak#~1v;&YL zrvmljaETTRcp#B5fVqxmJM`Re`f+McW|N=A>~W$R7#WxDOfRCf47daSI=A)Lpl{5y z6CKXRDgCvNCBHZe%x4Etc!CNmGKWCCBM$j(uE!_p3+aKSD3g#Tp2$+J;j zrWodIB2D(fp*B6kvw0;!Z?)Rrp9M^iuVOHeme=`wh1Ag?3HR~$XEw{bTUS|F-o`Y+ zNPu`hmjz{Sx%jPO(h>aUy@F8#ub*AVjl9xD;H$IJ)hTBYr44BE+fpX@OKIqWxHDi+ zn3J23On==sfnNT?i82@wV-;nDA)Q#8q@3@NWU0Xh9va{|>X36lg$$A>dm(D}xtZh3 z@V+XstXpbBaQ*|z3lt*8jcF&n4L8fVPnkuH!=3%rB!fMXojf<` zO+m8C+2S=rHt@d*{}JJcNWo9qD$hT=2Wp2mxkowPMa`?xVZI_L{_X=ui3qs@w~Z^} zR4U#U9Zd`2!aQEYqAn&1?CZD!LvwLK!BY{QHSLpC5)h~=xYxfW)IqKh+)cD+!|l9O^FsyX2F-R}GW;B{2QP z$I9g$MKX!(=qvwAx(9h<=C1%X_5k|(?!{(Ld$x1!TMbNJh~+u#$~Enkf@>oy@6VZi zKwG4`dD`ZN1j^dgNV!_o5Cq(ITQ0;Xd8yHL{0YK#ZyP8{hjZ)P-SUN#?bN|Zdtmq; zx%GWuu;oj)3!KJBZ+Mg{uV+UF)9rZBc*~&H<*4gJ&^onQHBgBA3is)(kMMMAusGjD z!_#SZC0Na@ygsn?jFZ35SKmESy^UYQ+pMg<-LTafUaCvmDq!RQv^4Eh<&eOSz2HnJ& zh3SOz&~THjhkkZW5DA_J2>n26B1hwI@**R+Dj|EL7JEZk0+YmVD5g)n^Srr}0hj@< zE+zL~Ggg(Z=rdyY!EgzZIMl18 z?QW_6;MjW!%Y56S64+#%WKVn*)!qBHmT!$i-o5qUu@DIfN6m#Nw3@ZF%QZV|a3p+2 z-Pl6=2iyBpjgktRK8K z^_%3GtDzWqG%~H-gu;9`+pn%(q(N`=7yHhlHbc$P_d8MwTtyT)ee{1j?sM*fPX}H_ zR$#rC%fi6jh2ojgkzxOt27{bT`#d(oom1VG3Yg{ueoGIdRV#@)ZRNjLaKaw--6;AI zP|kIY^g@qibpbeLva%qk5)6n+YmV_{2So-a^-K%(LapjSo=zCw-g_eld#<}LJ`m;l zim!tG>cX8XDFE-UXziT#t8W*PeJQ)|Gi)Q_G1VpUxmL}dwaay+M-%3e&kiODK@;4Jjnd8vlkxj9O@uc5>B*-xxBif>KkF|XID zb2R~HJ3mmZs_|Y+O0bT&YtQIGizoTbP6O|!`=aoRr!xsRw6RZz+~iC}t&;@){@rU; z%$>JSxI&`seQog7aM$Q+b-x>L;kQSSEy8A_j5&Dsz%jcsbuF>V)w&j!op|I?5tsiC z8Xjdv%{z~9*E6_P6w9{m*LsvaHoL8Lc|UT+jC3ql^s)h4`}lxt=j6286Ym5g^Fy8E zLk$lX8;AoAl)YQph&p!ggXYgloc!Tm{W!>7~X)^`VNv-16 z1{rnw#PPu<%>CB}uvL3VM$q#eg(l@v{qcjN0Z#ty1~Dwd|6Tax+ThBi8j$~fk0pNp z^r2z9H~qPq)BdQoV{21QoODsx`NHK9aQ|Kn^A0ME*2wOEd3kwrC0Ai(#-CwbCJ~LD zt#eqj8u%yiu=BLA9?4|42exeiIlY1S{~I9Tm;1UtlO!#6h~2O!E%zq#`_%EH*w z|85DnupB2jRc?CaCH$774{&Rg0LEp&mOA}VF46p!15x0=O6^@-YJ+f$Z^X%r{NjP# z^{Jg_WJ&8J@4W=?A=7pB;-eWxuWevgZg*AS(ExnIU;62QZ?@5XQx1bQ4T!@z1D{Iy z2mf1LbcCIeI=G0>ORNS`7!;I`c7isHKtYaPE!mS-Mx#Pw8V7$#iB--PIgbh&M0Y;> z>G-jJ29ehK?{+ct1ZzES`nM96VXJ>IRc?j3J*wP~mPciLEmQ^HoBkEg|z;}6d_sA^e7ox7kc=pF13Kj$Tb zt7(w2+A1}qielo$cyY*BH1A;H`D{cPs+yxx5^W?{+cUT6TuaNkO0gMJvu#!1iLt@K z_aZ2ipV9gdFn#>k6O;ElwsS{Nmq+z?;7i`s+W9u~kC8zZE;#{K82w@XJRgM)_0W_z z1p0Ol5!lB4uOqs`R?da=Tl4ypMkv=E|7z8#z-4cR7z&WIs1Yik`Z7egR=K= zBxc|9_V@Ml!!sBBl|A9Ja&|99PqfIhQAaS=OuSVII$j%eUG*6TIf$-KdhCC4GaMlo z|K!ITE7NqsAZr78H5v80IIFf2XZOnWjMv`^T6L|!y3Yt+Zb1whq1o+jZN1-aAfbOP ze9@p_Qtw)nJ;#a*bRIg1=#=sg4GH;-`4J8YPKsJp8V)WP5g72dPm;tQl5fk9=tUI_ zop5sMh8(nS(1vx3LO@1PC`8zQW2?54aQ^GZ^dE5%R_&X^-0qZY9QdJFR8+XkH1Z$C zKN6x2et;WQg^T|Hmk+j44C_UR@`L)zf9i#uofXrZ{2K4MQL8cW+6_6cXv%|I`+DR? zPTJ%QNCKoXBST73S>rb%CaF;A;nuX`)2Myql^NtQA)>(#3=ME_lyF%|@Zko8=?-wi z!^4PeaUVx`q0Sf3-sb>u*H4O}uy|P(E+4GpTD>0O5WdATDNOi7_&7POAzBZiVQMR^ zze>s9@?`o8jJJ+IVes2$-hiyZhEI2MaVt7wIpfBF;q6PzHr z+$4j*n{MI6fG69WuEQtF#B3kE^IE#ago2&(6`8qkyy=Q-BU7@^C_5o29@wA%wf_2| zqAZ6PXvz!W16f4OuiC*+3g*D69SV0|js#wE;y2_4<5pGgfAm?tlJ@JuR&eho7BXcv zh+Q%ci(UJxDLPXkz2QdpI)5o+mw60*ESrF8m6^IdiK>qqAXvr^2^5&b>6$)@R~T)} zbaNnNQaW!rj_bUI&qV_A!lw+s`1^cTE3ixKS`^u1xNqV-(jV?>m$L8Q&W=7rz_bSB z<`hrJrP}4x;6z^fSlvaD74E9Z{FNn&sIqex6Jc;5ZL!w`P%_}Napfpz==rXNVNtQU zAm%2(K1+w9lP>p}{*0K>2ob$k_0(Im+ugBDEot`M_vkW;Wsr0h3ZR_bn?Jt=XV?50>NYUZN3PIxff-kYR-fv;8sZpIg;9lT7RFna3f1gq zstg`LO3=ob-xe2ZJg$Czm$h(ARJajzjtST268VH%yWXdJtfg#5f`D)i0F_9(3}Nzl zJle8c=Ln zM#M1CIV$QMZ+>$`Y7kBi1KhB9b~T7@0br}XI*OdA6kcN9CPO50am!r~43Q6U4X~@I zRX*ktYNlbKdy}Ef5TXK;1Nr$ha|9<@UGnA*t(tW5Rl1z_Ldyk!5c3<3!6Yenk#(Jz zUJ-VIz|n=9e`Y-_1A>0&lD-UeqiWDQ8CPRZb@q@FCIB&PWvNPuZbujB#-7?}`c_Q^3EvFp) zZnl(tY9ISk)N~W3>GS?a*hk|gNqZp4*F|kThyz97Wv33=pw|7i$k&yz<_sCNZfPBP zM{7=T0RqBgF4SyU`g3&(9^gX9by$+qk&p)@Z+QjaZR1?SLL9i zoDT>2kF)PD$7i+4%Hgtw$CEf$6TQGycanrsm5{fYfWq>+*I1!%e=K!`HrDXJKgHD$RvJg3dCunPC~%5>JiTq8}!2irzhjhOfQ9QTZuD*u%Fq z-tJ_?Z=d^2x5d%g;^_ctDcOw#6gMNamV@lp$vMj>=KwKw^14qZLX9bM#`YH#rPmUz z^yJ<0U8)jwwWKW@6jFbXK7Sd!#acA#_!2)Ed6Z|_DohNyx@J1+78}_^JE@jfaQuV5+*PPe zOw2bV{;j=jPefOplq5=YATpDdCU;5={PI_RZJWm_4pvvh-@pZ<@>yh&>j;AI;hNRpR%fcTnCrRcf(NF1Upht#=#F zIDl|>1xu#zlx6~XGSSrb@3NNt;)CXlmaL>po&GZ@;|`w8jBE&zua?p04PP;@oKm?c z#VG|XxAdzh*rt2+|FP}%Au|HMH#WnTLGr18&jcd;_Vw6LuFs0ExaY(%UTV8~h4&_Z zWE>4z%1oOIPzg1?kCgmGV(0#IwIZDiW8qftH+9sNOd*VCs!puCt_?%)8voAUkR|`0EAS5X1!(Zf zDC7abY1<~ulsw1-F$sh75JsSpKZ0WQlngfsY55b3YS$;w zI#kQ)r~2IDZ3ad!RF-sZ%Kj|Y6ZTGo*^7TqwzqMmz(K2m%!948FfAPZ(J5^)LTN1s z*Lvu?N$(N51O57Hm0ZhcTf~@o+G%?UPVeNhD*NJz&_j8KA=c#f7_!rFs%0jt(Ix;# zIMJ?(V5JEXdG0Fq4J5gytvfMD^#cd$NT-ByEr7j9Bj%M-tcgBcb;=*KO6N?OGK4Iu zfud$MM=Fn~P`mWRG>4#Ne>Q^dYCY+Nr0UD-M#E72)GQYxhg0*-s4Jmezo1lsvrJui zr9jh!esEj>X67hZ{JhI0^-SIC=@xr~MTL$r zvXaa6S7<@Z>Uo}HEZ6)8Db{thW7=??m6cdKo!q>i!a$V|P|X7k3qx6Ab73HRC4Ezq znf~&ZyN=l=VkGj#nSA~H`xsX1q^gWPtIv)i%IVAUq;-R?%BrO^s>UBZM!x)n*-5#f zy@b8#+@SX5U}pqseO|pxZeY$6L5vdPh7`)T&H{n?)M>k|hZ~v3{{ktIkF>}_8M4-h z3P}1bmt*X&a-zNYa`|B#!%yCM2UyqyuPJ&tDy%R{4Zp$C zuAaRde2_hRR4-7JH){E>c9ciT)F6L)7$K`Zzx zvqOvzzx!OJx1wUD9QF-7+A8xVk$uE%q}i%b=l!+T!56dWxOsuETpGqXxYjheRJ=As z0%$=fRc~8MNADv|rgPn7euQ?I3KSw2dVr&H$Cqq~Mw^i^{x3Vqo@F2=R{NSu(D(eGzK|~COO~@;)wVCn ztIRpfef_5vzd_2vtA-IA{|m%}uGaZWz1^xEtmVaces1Q{ zS;E!28tnT%ZLTqCDyVs&t>_hUEi5F)fP2CzPlVK5b*PjQW27eh;K&qUrCz3X`#w6tJYdy9(Z%gpi9N(xdE+Ic<%qSah)p-Bi+hSPt6Hrv6tSW@pc%zty9nCGW~|lDx_dHs^w>(Gv<0!>NHI{AO6SSY_r3d=nT$VI6yP(rG$oQ-Mo=a`i zYCxGK%#JT*7=*u?;Q176!`W))Qm6t~2b9hY&g4_--qX@3fpRSMtn%!(4AqUIc}@si z3F>A=(3Xz(ZcdMMXQew)&<+c|IlZ?jC*lMpqMEBa`e&-GOS1IyoTSVOSz`~_SRzit zeT~D(nLy{8I6xfi)K7NX@iZzi+7HVPA&U_D{~Q*rl@# zLkj`L_Fq|g%u#8T;L!gtYbPG{VCCYlj0Mhi{4x_SHF0$}6@=ewOx!BI*47PMv8`Ab z#N>(j9`Jeh8Yc%qI(zQF0UWy?T-+aPfF+if*Wqpi_M7$ey6|^2C;pP= zqA#LX5`&#*?gy|6Ep$=#I_9JKoNsC|Kho33Pme{qozzNXi(+D?uD#K_xkW2UX86zK z{5EO<^tGqKZFf9AIzM6EE~ddpr>8~JPfl~qjA zQxyqCI0UZ{JhuFZ-8tpuI}4_8H+PtyxsB)rK?Vo(7lh=rVJL*AVxC_{h=v(0J|k8V zBVw;tTS%q|S{Rt*y3)qM^y&6LJrvLbXN9SiKhhN`E&TcnWHu2Ki6N4^^7o8^^ktFR>k9(d* zSFggR`3uXI)|VJ~-t!nAF(~13IQDR@1C7;&$_R0`Hf+d(+yq$lqzsc3>~)T`tgapi zA9Euu$NBosv^w{%%AWe72BE4XO?>n&deMOHRP{3XQPC~knr4~0Kbi{;9mxm(C~D<) z#PZ8iam}Z5#YzNch|OhFd!p7NC_nk74=Qhr5^1eg7y6!CcpqEJxJ9q4qAtxOz}_L4 zA7Y^G)Y$C(^mQm;E*?JR)I%)ar0=niOWYTY-f#}a=w`<((0QKeS;Eu6Zk(4QuMY#e zcL~Cx-jTZC-04VSZ#!$&UvJh@O-KLwb|s=L+@yO8Wyj%F+FiV}ghNQ4t?`FkzlgNp7zfbrR>&a^#>ef^XcgJxG7 z@@~h&{lK85RjlBrm6@6!I;slZ^!9o6Vsd7^Du6)jn#xAtlHSAjLHF}-J%;vTxn+kC zF{vzvAfim*8PljPBx`(@WPZGUr=jZpgE7Y%7gsk~7s~LeTPktpdT#jvdAU$%wrC%Gv5vBumNXnv4_}n zvFL`>KELosZf*Hi6dxQ{m6TMtqe8YX+S2`ddb6cg^XR|-oS5n@AbBuSMl~KF?ZQG{ zVCg?n!#SJ1X*y6<)y#PXdhapWuU_OVMT$!eDvmL9@bI>I + + +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+ + diff --git a/src/Project.hhp b/src/Project.hhp new file mode 100644 index 0000000..5427eed --- /dev/null +++ b/src/Project.hhp @@ -0,0 +1,339 @@ +[OPTIONS] +Binary Index=No +Compatibility=1.1 or later +Compiled file=AutoHotkey.chm +Contents file=Table of Contents.hhc +Default Window=Contents +Default topic=docs\AutoHotkey.htm +Display compile progress=No +Full-text search=Yes +Index file=Index.hhk +Language=0x412 Korean +Title=AutoHotkey Help + +[WINDOWS] +Contents="AutoHotkey Help: ÇѱÛÆÇ jojhnsonj 151111","Table of Contents.hhc","Index.hhk","docs\AutoHotkey.htm","docs\AutoHotkey.htm",,,,,0x73520,,0x10200e,[200,0,1080,700],0,,,,0,,0 + + +[FILES] +docs\AHKL_ChangeLog.htm +docs\AHKL_DBGPClients.htm +docs\AHKL_Features.htm +docs\AutoHotkey.htm +docs\ChangeLogHelp.htm +docs\Compat.htm +docs\FAQ.htm +docs\Functions.htm +docs\HotkeyFeatures.htm +docs\Hotkeys.htm +docs\Hotstrings.htm +docs\KeyList.htm +docs\license.htm +docs\Objects.htm +docs\Scripts.htm +docs\Tutorial.htm +docs\Variables.htm +docs\Welcome.htm +docs\commands\index.htm +docs\commands\_AllowSameLineComments.htm +docs\commands\_ClipboardTimeout.htm +docs\commands\_CommentFlag.htm +docs\commands\_ErrorStdOut.htm +docs\commands\_EscapeChar.htm +docs\commands\_HotkeyInterval.htm +docs\commands\_HotkeyModifierTimeout.htm +docs\commands\_Hotstring.htm +docs\commands\_If.htm +docs\commands\_IfTimeout.htm +docs\commands\_IfWinActive.htm +docs\commands\_Include.htm +docs\commands\_InputLevel.htm +docs\commands\_InstallKeybdHook.htm +docs\commands\_InstallMouseHook.htm +docs\commands\_KeyHistory.htm +docs\commands\_MaxHotkeysPerInterval.htm +docs\commands\_MaxMem.htm +docs\commands\_MaxThreads.htm +docs\commands\_MaxThreadsBuffer.htm +docs\commands\_MaxThreadsPerHotkey.htm +docs\commands\_MenuMaskKey.htm +docs\commands\_NoEnv.htm +docs\commands\_NoTrayIcon.htm +docs\commands\_Persistent.htm +docs\commands\_SingleInstance.htm +docs\commands\_UseHook.htm +docs\commands\_Warn.htm +docs\commands\_WinActivateForce.htm +docs\commands\AutoTrim.htm +docs\commands\Block.htm +docs\commands\BlockInput.htm +docs\commands\Break.htm +docs\commands\Catch.htm +docs\commands\Click.htm +docs\commands\ClipWait.htm +docs\commands\ComObjActive.htm +docs\commands\ComObjArray.htm +docs\commands\ComObjConnect.htm +docs\commands\ComObjCreate.htm +docs\commands\ComObjError.htm +docs\commands\ComObjFlags.htm +docs\commands\ComObjGet.htm +docs\commands\ComObjQuery.htm +docs\commands\ComObjType.htm +docs\commands\ComObjValue.htm +docs\commands\Continue.htm +docs\commands\Control.htm +docs\commands\ControlClick.htm +docs\commands\ControlFocus.htm +docs\commands\ControlGet.htm +docs\commands\ControlGetFocus.htm +docs\commands\ControlGetPos.htm +docs\commands\ControlGetText.htm +docs\commands\ControlMove.htm +docs\commands\ControlSend.htm +docs\commands\ControlSetText.htm +docs\commands\CoordMode.htm +docs\commands\Critical.htm +docs\commands\DetectHiddenText.htm +docs\commands\DetectHiddenWindows.htm +docs\commands\DllCall.htm +docs\commands\Drive.htm +docs\commands\DriveGet.htm +docs\commands\DriveSpaceFree.htm +docs\commands\Edit.htm +docs\commands\Else.htm +docs\commands\EnvAdd.htm +docs\commands\EnvDiv.htm +docs\commands\EnvGet.htm +docs\commands\EnvMult.htm +docs\commands\EnvSet.htm +docs\commands\EnvSub.htm +docs\commands\EnvUpdate.htm +docs\commands\Exit.htm +docs\commands\ExitApp.htm +docs\commands\FileAppend.htm +docs\commands\FileCopy.htm +docs\commands\FileCopyDir.htm +docs\commands\FileCreateDir.htm +docs\commands\FileCreateShortcut.htm +docs\commands\FileDelete.htm +docs\commands\FileEncoding.htm +docs\commands\FileGetAttrib.htm +docs\commands\FileGetShortcut.htm +docs\commands\FileGetSize.htm +docs\commands\FileGetTime.htm +docs\commands\FileGetVersion.htm +docs\commands\FileInstall.htm +docs\commands\FileMove.htm +docs\commands\FileMoveDir.htm +docs\commands\FileOpen.htm +docs\commands\FileRead.htm +docs\commands\FileReadLine.htm +docs\commands\FileRecycle.htm +docs\commands\FileRecycleEmpty.htm +docs\commands\FileRemoveDir.htm +docs\commands\FileSelectFile.htm +docs\commands\FileSelectFolder.htm +docs\commands\FileSetAttrib.htm +docs\commands\FileSetTime.htm +docs\commands\For.htm +docs\commands\Format.htm +docs\commands\FormatTime.htm +docs\commands\GetKeyState.htm +docs\commands\Gosub.htm +docs\commands\Goto.htm +docs\commands\GroupActivate.htm +docs\commands\GroupAdd.htm +docs\commands\GroupClose.htm +docs\commands\GroupDeactivate.htm +docs\commands\Gui.htm +docs\commands\GuiControl.htm +docs\commands\GuiControlGet.htm +docs\commands\GuiControls.htm +docs\commands\Hotkey.htm +docs\commands\IfBetween.htm +docs\commands\IfEqual.htm +docs\commands\IfExist.htm +docs\commands\IfExpression.htm +docs\commands\IfIn.htm +docs\commands\IfInString.htm +docs\commands\IfIs.htm +docs\commands\IfMsgBox.htm +docs\commands\WinActive.htm +docs\commands\WinExist.htm +docs\commands\ImageSearch.htm +docs\commands\IniDelete.htm +docs\commands\IniRead.htm +docs\commands\IniWrite.htm +docs\commands\Input.htm +docs\commands\InputBox.htm +docs\commands\KeyHistory.htm +docs\commands\KeyWait.htm +docs\commands\ListHotkeys.htm +docs\commands\ListLines.htm +docs\commands\ListVars.htm +docs\commands\ListView.htm +docs\commands\Loop.htm +docs\commands\LoopFile.htm +docs\commands\LoopParse.htm +docs\commands\LoopReadFile.htm +docs\commands\LoopReg.htm +docs\commands\Menu.htm +docs\commands\MouseClick.htm +docs\commands\MouseClickDrag.htm +docs\commands\MouseGetPos.htm +docs\commands\MouseMove.htm +docs\commands\MsgBox.htm +docs\commands\NumGet.htm +docs\commands\NumPut.htm +docs\commands\ObjAddRef.htm +docs\commands\ObjBindMethod.htm +docs\commands\OnClipboardChange.htm +docs\commands\OnExit.htm +docs\commands\OnMessage.htm +docs\commands\OutputDebug.htm +docs\commands\Pause.htm +docs\commands\PixelGetColor.htm +docs\commands\PixelSearch.htm +docs\commands\PostMessage.htm +docs\commands\Process.htm +docs\commands\Progress.htm +docs\commands\Random.htm +docs\commands\RegDelete.htm +docs\commands\RegExMatch.htm +docs\commands\RegExReplace.htm +docs\commands\RegisterCallback.htm +docs\commands\RegRead.htm +docs\commands\RegWrite.htm +docs\commands\Reload.htm +docs\commands\Return.htm +docs\commands\Run.htm +docs\commands\RunAs.htm +docs\commands\Send.htm +docs\commands\SendLevel.htm +docs\commands\SendMode.htm +docs\commands\SetBatchLines.htm +docs\commands\SetControlDelay.htm +docs\commands\SetDefaultMouseSpeed.htm +docs\commands\SetEnv.htm +docs\commands\SetExpression.htm +docs\commands\SetFormat.htm +docs\commands\SetKeyDelay.htm +docs\commands\SetMouseDelay.htm +docs\commands\SetNumScrollCapsLockState.htm +docs\commands\SetRegView.htm +docs\commands\SetStoreCapslockMode.htm +docs\commands\SetTimer.htm +docs\commands\SetTitleMatchMode.htm +docs\commands\SetWinDelay.htm +docs\commands\SetWorkingDir.htm +docs\commands\Shutdown.htm +docs\commands\Sleep.htm +docs\commands\Sort.htm +docs\commands\SoundBeep.htm +docs\commands\SoundGet.htm +docs\commands\SoundGetWaveVolume.htm +docs\commands\SoundPlay.htm +docs\commands\SoundSet.htm +docs\commands\SoundSetWaveVolume.htm +docs\commands\SplashTextOn.htm +docs\commands\SplitPath.htm +docs\commands\StatusBarGetText.htm +docs\commands\StatusBarWait.htm +docs\commands\StringCaseSense.htm +docs\commands\StringGetPos.htm +docs\commands\StringLeft.htm +docs\commands\StringLen.htm +docs\commands\StringLower.htm +docs\commands\StringMid.htm +docs\commands\StringReplace.htm +docs\commands\StringSplit.htm +docs\commands\StringTrimLeft.htm +docs\commands\StrPutGet.htm +docs\commands\Suspend.htm +docs\commands\SysGet.htm +docs\commands\Thread.htm +docs\commands\Throw.htm +docs\commands\ToolTip.htm +docs\commands\Transform.htm +docs\commands\TrayTip.htm +docs\commands\TreeView.htm +docs\commands\Trim.htm +docs\commands\Try.htm +docs\commands\Until.htm +docs\commands\URLDownloadToFile.htm +docs\commands\VarSetCapacity.htm +docs\commands\While.htm +docs\commands\WinActivate.htm +docs\commands\WinActivateBottom.htm +docs\commands\WinClose.htm +docs\commands\WinGet.htm +docs\commands\WinGetActiveStats.htm +docs\commands\WinGetActiveTitle.htm +docs\commands\WinGetClass.htm +docs\commands\WinGetPos.htm +docs\commands\WinGetText.htm +docs\commands\WinGetTitle.htm +docs\commands\WinHide.htm +docs\commands\WinKill.htm +docs\commands\WinMaximize.htm +docs\commands\WinMenuSelectItem.htm +docs\commands\WinMinimize.htm +docs\commands\WinMinimizeAll.htm +docs\commands\WinMove.htm +docs\commands\WinRestore.htm +docs\commands\WinSet.htm +docs\commands\WinSetTitle.htm +docs\commands\WinShow.htm +docs\commands\WinWait.htm +docs\commands\WinWaitActive.htm +docs\commands\WinWaitClose.htm +docs\misc\Acknowledgements.htm +docs\misc\Arrays.htm +docs\misc\AutoIt2Compat.htm +docs\misc\Clipboard.htm +docs\misc\CLSID-List.htm +docs\misc\ErrorLevel.htm +docs\misc\FontsStandard.htm +docs\misc\Labels.htm +docs\misc\Languages.htm +docs\misc\Macros.htm +docs\misc\Override.htm +docs\misc\Performance.htm +docs\misc\RegExCallout.htm +docs\misc\RegEx-QuickRef.htm +docs\misc\Remap.htm +docs\misc\RemapJoystick.htm +docs\misc\SendMessage.htm +docs\misc\SendMessageList.htm +docs\misc\Styles.htm +docs\misc\Threads.htm +docs\misc\Winamp.htm +docs\misc\WinTitle.htm +docs\objects\Enumerator.htm +docs\objects\File.htm +docs\objects\Func.htm +docs\objects\Functor.htm +docs\objects\Object.htm +docs\scripts\ContextSensitiveHelp.htm +docs\scripts\EasyWindowDrag.htm +docs\scripts\EasyWindowDrag_(KDE).htm +docs\scripts\FavoriteFolders.htm +docs\scripts\index.htm +docs\scripts\IntelliSense.htm +docs\scripts\JoystickMouse.htm +docs\scripts\JoystickTest.htm +docs\scripts\KeyboardOnScreen.htm +docs\scripts\MinimizeToTrayMenu.htm +docs\scripts\MouseGestures.htm +docs\scripts\MsgBoxButtonNames.htm +docs\scripts\Numpad000.htm +docs\scripts\NumpadMouse.htm +docs\scripts\Seek_(SearchTheStartMenu).htm +docs\scripts\TooltipMouseMenu.htm +docs\scripts\VolumeOSD.htm +docs\scripts\WindowShading.htm +docs\scripts\WinLIRC.htm + +[INFOTYPES] + diff --git a/src/Table of Contents.hhc b/src/Table of Contents.hhc new file mode 100644 index 0000000..7ef2c00 --- /dev/null +++ b/src/Table of Contents.hhc @@ -0,0 +1,446 @@ + + + + + + + + + + +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
        +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      +
    +
  • +
      +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
        +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
        +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      +
    • +
        +
      • +
      • +
      • +
      • +
      • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
        +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
        +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      +
    • +
        +
      • +
      • +
      • +
      • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
+ + diff --git a/src/compile_chm.ahk b/src/compile_chm.ahk new file mode 100644 index 0000000..bbb3a7a --- /dev/null +++ b/src/compile_chm.ahk @@ -0,0 +1,36 @@ +if (A_PtrSize = 8) { + try + RunWait "%A_AhkPath%\..\AutoHotkeyU32.exe" "%A_ScriptFullPath%" + catch + MsgBox 16,, This script must be run with AutoHotkey 32-bit, due to use of the ScriptControl COM component. + ExitApp +} + +; Change this path if the loop below doesn't find your hhc.exe, +; or leave it as-is if hhc.exe is somewhere in %PATH%. +hhc := "hhc.exe" + +; Try to find hhc.exe, since it's not in %PATH% by default. +for i, env_var in ["ProgramFiles", "ProgramFiles(x86)", "ProgramW6432"] +{ + EnvGet Programs, %env_var% + if (Programs && FileExist(checking := Programs "\HTML Help Workshop\hhc.exe")) + { + hhc := checking + break + } +} + +SetWorkingDir %A_ScriptDir%\docs\static + +; Rebuild Index.hhk and Table of Contents.hhc. +RunWait "%A_AhkPath%" source\CreateFiles4Help.ahk +FileMove content.js, content.temp.js, 1 +FileMove content.chm.js, content.js + +; Compile AutoHotkey.chm. +RunWait %hhc% "%A_ScriptDir%\Project.hhp" + +; Put it back so that local viewing works. +FileMove content.js, content.chm.js +FileMove content.temp.js, content.js \ No newline at end of file diff --git a/src/docs/AHKL_ChangeLog.htm b/src/docs/AHKL_ChangeLog.htm new file mode 100644 index 0000000..1fb1862 --- /dev/null +++ b/src/docs/AHKL_ChangeLog.htm @@ -0,0 +1,1194 @@ + + +Changes & New Features + + + + + + + +

º¯°æ »çÇ× & »õ·Î¿î Ư¡

+

ÇöÀç ¿ÀÅäÇÖÅ° °³¹ß ºÐ±â¿¡ (À̸¥¹Ù AutoHotkey_L¿¡) µµÀÔµÈ º¯°æ»çÇ×°ú »õ·Î¿î Ư¡À» ¾Æ·¡¿¡ ³ª¿­ÇÕ´Ï´Ù.

+
+ + +

1.1.22.07 - September 27, 2015

+

Fixed Gui control w-1 and h-1 options failing when DPI is 150+% and the Gui has not applied -DPIScale.

+

Fixed ~key up hotkeys to not perform an automatic Send {key down}. This was occurring only if the hotkey was turned on after the key was pressed down.

+

1.1.22.06 - September 13, 2015

+

Fixed Input and hotstrings to catch Unicode/non-key character events.

+

Fixed auto-sizing of Edit controls to include the last line if blank.

+

Fixed handling of out-of-memory in ComObj functions.

+

Fixed ComObjArray to ignore excess parameters rather than crashing (only applies to dynamic calls).

+

Fixed GuiControl to append--not prepend--tabs, as documented.

+

Fixed XP64 support.

+ +

1.1.22.05 - September 10, 2015

+

Fixed icons which have non-numeric IDs loading with sub-optimal quality.

+

Fixed Gui Destroy not releasing function objects which were set by the +g option.

+

Fixed Gui Show to avoid attempting to force-activate a child GUI.

+

Fixed failure to set Caps/Num/ScrollLock state while the key is down.

+

Fixed Gui Color causing incorrect text color (usually black).

+

Changed Gui Show to improve the odds of GuiSize executing immediately.

+

For developers:

+
    +
  • Modified project config to support more VC++ versions.
  • +
  • Fixed various build warnings on VC++ 2015.
  • +
  • 64-bit binaries are now built with VC++ 2015. 32-bit binaries still use VC++ 2010.
  • +
+

1.1.22.04 - August 19, 2015

+

Fixed ObjRawSet() to return nothing.

+

Added Windows 10 supportedOS tag to the exe manifest (avoids some issues with the Program Compatibility Assistant and similar).

+

Added detection of syntax errors after ")" in a function declaration.

+ +

1.1.22.03 - July 12, 2015

+

Fixed A_EndChar returning a truncated value for Unicode end chars.

+

Small implementation changes:

+
    +
  • Changed A_Language to use GetSystemDefaultUILanguage().
  • +
  • Refactored Window Spy/help file launching from tray menu to improve code re-use.
  • +
  • Optimized Gui/Menu/Hotkey/Hotstring/OnClipboard message handling (minor).
  • +
+ +

1.1.22.02 - May 27, 2015

+

Fixed TreeView to not raise * events for unknown notifications.

+

Fixed crashing/bad behaviour when a timer deletes itself.

+

Fixed RWin-up being masked in some rare cases where LWin-up wouldn't have been.

+

1.1.22.01 - May 24, 2015

+

Fixed Text/Edit/Button control sizing to compensate for character overhang.

+

Fixed registry commands to allow : in the SubKey when combined with RootKey.

+

Fixed hotkey prioritization to take modifiers into consideration.

+

Refactored else/try/catch/finally handling to support hotkey::try cmd.

+

Added a workaround for the script's dialogs acting as though Ctrl or Shift is pressed after they are blocked by the keyboard hook.

+ +

1.1.22.00 - May 1, 2015

+

Added SetErrorMode(SEM_FAILCRITICALERRORS) on program startup to suppress system-level error messages such as "There is no disk in the drive". Calling Drive or DriveGet no longer affects the process' error mode.

+

Changed MonthCal controls to have tab-stop by default on Vista or later.

+

Improved ComObjConnect to use IProvideClassInfo when available.

+

Fixed some issues with method/property definitions following an end brace on the same line.

+

Fixed Text/Link control auto-sizing to compensate for the +Border (WS_BORDER) style.

+

Fixed Break N when Loop is used directly below If/Else/Try/Catch.

+ +

1.1.21.03 - April 12, 2015

+

Fixed detection of naming conflicts between properties and methods.

+ +

1.1.21.02 - April 4, 2015

+

Fixed OnMessage(msg, fnobj, 0) to do nothing if fnobj wasn't previously registered.

+ +

1.1.21.01 - April 3, 2015

+

Fixed StrReplace() to allow ReplaceText to be omitted.

+

Fixed class variables to allow non-ASCII names.

+ +

1.1.21.00 - March 28, 2015

+

Added Loop, Reg, RootKey[\Key, Mode].

+

Added Loop, Files, FilePattern [, Mode].

+

Changed InputVar parameters to allow % expression (except with If commands).

+

Revised Object methods:

+
    +
  • Added Object.InsertAt(), Object.Push() and ObjRawSet().
  • +
  • Added Object.Delete(), Object.RemoveAt() and Object.Pop().
  • +
  • Added Object.Length().
  • +
+

Added Ord() and updated Chr() to support supplementary chars (>0xFFFF).

+

Added StrReplace().

+

Removed the obsolete and undocumented 5-parameter mode of RegRead, which was exclusively for AutoIt v2 compatibility (the extra parameter was unused).

+

Changed RegRead, RegWrite and RegDelete so that the RootKey and SubKey parameters can optionally be combined.

+ +

1.1.20.03 - March 21, 2015

+

Fixed MouseGetPos (OutputVarControl), GuiContextMenu and GuiDropFiles (A_GuiControl) to not ignore disabled controls [broken by v1.1.20.00].

+ +

1.1.20.02 - March 11, 2015

+

Fixed add-first mode of OnMessage.

+

Fixed A_OSVersion for unrecognized OSes on x64 builds.

+

Fixed ExitApp to unpause the script before releasing objects in case a __delete meta-function is called.

+

Trivial optimizations and code maintenance.

+ +

1.1.20.01 - March 10, 2015

+

Reverted the changes made in v1.1.20.00 to saving and restoring of ErrorLevel on thread interrupt, due to unintended consequences.

+
    +
  • ErrorLevel is not reset or cleared when a new thread starts. Instead, it retains the value it had in the interrupted thread, as in v1.1.19 and older.
  • +
  • If ErrorLevel contains an object and the thread is interrupted, the object is replaced with an empty string when the thread resumes, as in v1.1.19 and older.
  • +
  • If ErrorLevel contains a string longer than 127 characters, it is truncated when the thread resumes, as in v1.1.19 and older.
  • +
+

Re-fixed timers sometimes causing ErrorLevel to be formatted as hex.

+

Fixed class methods to retain a counted reference to the class.

+ +

1.1.20.00 - March 8, 2015

+

New features:

+

Enhanced Hotkey, Menu, SetTimer, Gui events and Gui control events to accept a function instead of a label, if no label is found.

+

Enhanced Hotkey, Menu, SetTimer and Gui control events to accept a function object. Added a Delete sub-command for SetTimer to allow the object to be released.

+

Enhanced OnMessage() to allow any number of functions or function objects to monitor a single message.

+

Added OnExit() and OnClipboardChange(), which accept a function name or object.

+

Added capability to point hotkey labels at a function definition.

+

Added U/L/T modifiers to perform case conversion with Format().

+

Added the E option to the Input command, for handling end keys by character instead of keycode.

+

Added ** (stderr) support to FileAppend.

+

Added ObjBindMethod(obj, method, args*) and Func.Bind(args*).

+ +

Changes:

+

Changed the default behavior when the main script file is not found:

+
    +
  • If no script was specified and the default script files are not found, show the new Welcome page in the help file.
  • +
  • If a script was specified or the help file is missing (or is named differently to the executable), just show an error message.
  • +
+

Changed WinActivate to restore the window if already active but minimized.

+

Changed WinActivate to look for a visible window to activate if DetectHiddenWindows is off and the active window is hidden, instead of doing nothing.

+

Changed the method used by A_CaretX/A_CaretY to retrieve the caret position.

+
    +
  • Returns blank in more cases where the real caret position can't be determined, instead of returning the top-left of the active window.
  • +
  • Less likely to cause side-effects.
  • +
  • Works in console windows.
  • +
+

Changed A_OSVersion to use RtlGetVersion(), so that it can detect Windows 10 and hopefully future versions.

+

Changed A_OSVersion to return a version number of the form "major.minor.build" if it doesn't have a name for the OS.

+

Changed objects to support x[,y], x.y[,z] and x[](y).

+
    +
  • User-defined objects can utilize this by specifying default values for parameters of properties and meta-functions. For __Call, the first parameter is omitted, as in x.__Call(,y).
  • +
  • COM objects invoke DISPID_VALUE if the member name is omitted. For example, x[] retrieves x's default property and fn[]() can be used to call JScript functions.
  • +
+

Several under-the-hood changes to fix bugs, reduce code size or improve performance, including:

+
    +
  • Changes to preparsing of #if and static var initializers.
  • +
  • Changes to preparsing of { blocks }.
  • +
+ +

Bug-fixes:

+

Fixed VK to keyname conversions for keys 'A' to 'Z' to respect layout.

+
    +
  • Applies to: GetKeyName, Hotkey control, A_PriorKey, KeyHistory and Input EndKey ErrorLevel (except where Shift key is required).
  • +
  • All other keys, including those that produce non-ASCII letters, were already translated according to AutoHotkey's current keyboard layout.
  • +
+

Fixed FileAppend to * (stdout) to respect the encoding parameter instead of always outputting ANSI text.

+

Fixed auto-sizing of GUIs with only one scrollbar.

+

Fixed Exception(m, n) crashing when n is too far out of bounds.

+

Fixed GuiContextMenu to set A_GuiEvent correctly on x64.

+

Fixed FileGetSize sometimes giving an indeterminate result if the file doesn't exist or can't be opened.

+

Fixed thread interrupts to save and restore ErrorLevel more fully [reverted in v1.1.20.01 due to unintended consequences].

+

Fixed ControlClick Pos mode to ignore disabled controls.

+

Fixed odd behaviour when Gui +MaxSize is smaller than +MinSize.

+

Fixed GuiControl/Get requiring a Gui name when given a control HWND.

+

Fixed meta-functions interfering with the line number reported by Exception().

+ +

1.1.19.03 - February 11, 2015

+

Improved remapping to allow scXXX::Y when the current keyboard layout does not map scXXX to a VK code. However, Y must still exist on the current keyboard layout.

+

Fixed break n to work correctly when until is present, instead of terminating the thread.

+

Fixed ControlGetFocus disrupting the user's ability to double-click (thanks HotKeyIt).

+

Fixed ListView to not call the control's g-label for unsupported (and previously unknown) notifications such as LVN_GETEMPTYMARKUP.

+

Fixed #Include *i <X> to exit the program as intended if X has a syntax error.

+

Fixed for var in expression sometimes crashing the program when expression calls a script function.

+ +

1.1.19.02 - January 25, 2015

+

Removed the 16-color icons which were used on Win9x/Win2k.

+

Removed the separate tray icon resources.

+

Improved selection of icon size when loading icons from DLL/EXE files.

+
  • In short, prefer to downscale rather than upscale. This is especially helpful on systems with 125% or 150% DPI, where the system icon sizes are 20/40 or 24/48 instead of 16/32. If all of these sizes are present in the icon resource, this change makes no difference.
+

Fixed some issues with hotkey validation at load time.

+
    +
  • Hotkeys which are never valid, like foo::, are now always treated as errors instead of giving a misleading warning about keyboard layout.
  • +
  • Hotkeys like ^!ä:: which are inactive because of the current keyboard layout are now allowed to have a same-line action, and the label is registered correctly (e.g. as "^!ä" and not as "^!ä:"). If the /iLib command line switch is used, the warning is suppressed.
  • +
  • Remappings which are inactive because of the current keyboard layout now show two warnings instead of an unrecoverable error.
  • +
  • If a Wheel hotkey is used as a prefix key, there is only one error message instead of two, and it respects /ErrorStdOut.
  • +
+

Fixed /iLib switch to write the file even if there's a syntax error.

+

Fixed return/break/continue/goto in try..finally.

+ +

1.1.19.01 - January 5, 2015

+

Fixed Hotkey command crashing the program when trying to create new variants of existing hotkeys (broken by v1.1.19.00).

+

Made some minor optimizations to the Hotkey command and A_TimeIdle, relating to removal of Win9x support.

+ +

1.1.19.00 - January 4, 2015

+

Added a name for Func.Call(). Func.() still works but is deprecated.

+

Fixed some issues with X.Y and X.Y(Z) in VBScript/JScript/C#:

+
    +
  • If X.__Call contained a function name, it was being returned instead of called.
  • +
  • When X.Y(Z) returned a value, Z was ignored. Now it acts like X.Y[Z] when X.Y is not a function.
  • +
+

Fixed the Hotkey command ignoring the ~ (pass-through) prefix if Label was omitted.

+

Fixed the Hotkey command ignoring the $ (use-hook) prefix if the hotkey variant was already created without $.

+

Fixed %Fn%() syntax to work with JavaScript Function objects.

+

Fixed EXE manifest to disable UAC installer detection heuristics (broken by v1.1.17).

+

Improved the way threads are represented on the debugger's call stack.

+
    +
  • The type of thread is shown instead of the label name, which is still available in the next stack entry. For hotkeys, the hotkey is shown instead.
  • +
  • The line number of the sub or function that the thread called is shown instead of the line the script was at before starting the thread.
  • +
+ +

1.1.18.00 - December 30, 2014

+

Improved IDispatch implementation for AutoHotkey objects:

+
    +
  • X.Y in VBScript and C# now returns X.Y if it is NOT a Func object; previously, it attempted to call X.Y() regardless of type.
  • +
  • X(Y) in VBScript, JScript and C# now returns X[Y] unless X is a Func object, in which case it is called as before.
  • +
  • X[Y] in C# now returns X[Y] if X is NOT a Func object; previously, it attempted to call X[Y]() regardless of type.
  • +
  • X.Y() in C# now returns X.Y if it is NOT a Func object, due to ambiguity in the C# dispatch implementation.
  • +
  • Unhandled exceptions are now converted to IDispatch exceptions.
  • +
+

Added support for creating new properties in JavaScript/IE DOM objects.

+

Fixed FileAppend, %VarContainingClipboardAll%, File causing crashes.

+ +

1.1.17.01 - December 28, 2014

+

Fixed COM event handlers not receiving the final object parameter.

+ +

1.1.17.00 - December 27, 2014

+

New features:

+

Added Format().

+

FileOpen() can now be used to read from stdin or write to stdout or stderr by passing "*" or "**" as the filename. AutoHotkey.exe * can be used to execute script text piped from another process instead of read from file. For an example, see ExecScript().

+

Added support for passing AutoHotkey objects to COM APIs as IDispatch.

+

Added support for VT_BYREF in ComObject wrappers. Use obj[] to access the referenced value.

+

Bug-fixes:

+

Fixed blue-screening on XP SP2.

+

Fixed owned ComObjArrays to be returned by value, not by pointer. That is, a copy of the array is returned instead of a pointer to an array which is about to be deleted.

+

Changed the URL in the sample script which is created when you first run AutoHotkey.

+

Fixed sc15D to map to vk5D/AppsKey (Send, GetKeyName, etc.).

+

Fixed Edit controls to not treat AltGr+A as Ctrl+A.

+

Fixed static class vars to not act as a target for labels which immediately precede the class.

+ +

1.1.16.05 - September 28, 2014

+

Fixed x.y/[]/{} sometimes falsely being flagged as variadic.

+ +

1.1.16.04 - September 16, 2014

+

Fixed a crash which occurred when overwriting a non-writable property.

+

Fixed a crash which occurred when a RegExMatch object is created with uncaptured subpatterns during a regex callout.

+ +

1.1.16.03 - September 11, 2014

+

Fixed some bad behaviour in Abs() and Mod() caused by a broken bug-fix in v1.1.16.01.

+ +

1.1.16.02 - September 11, 2014

+

Fixed parser to allow #include inside a class (broken by a6ea27f).

+

Fixed Clipboard returning binary CF_HDROP data in some instances.

+

Improved accuracy of FileGetSize on files which are still open.

+

Improved for-loop compatibility with COM objects.

+ +

1.1.16.01 - September 10, 2014

+

Added syntax for defining dynamic properties in classes.

+

Added x+m and y+m options for Gui control positioning.

+

Added the #InputLevel of each hotkey to ListHotkeys (when non-zero).

+

Optimized RegExMatch with the O (object) option; capturing part of a long string is much faster than before in some cases.

+

Fixed objects to check for new methods after __Call completes (consistent with __Set and __Get).

+

Fixed some undefined behaviour occurring after VarSetCapacity fails.

+

Fixed FileRead to correctly report an error with files over 4GB, instead of truncating even when it wasn't requested.

+

Fixed FileRead *c to null-terminate correctly when byte length is odd.

+

Fixed some ClipboardAll issues and changed behaviour:

+
    +
  • #ClipboardTimeout is ignored for GetClipboardData(), since it never actually worked and it caused problems. This fixes timeouts and lost data when a file is on the clipboard (any file on Windows 8, or any file in a zip file or similar).
  • +
  • Zero-length clipboard items are allocated 1 byte upon restoring to the clipboard, since setting a zero-length item seems to always fail.
  • +
  • The presence of MSDEVColumnSelect/MSDEVLineSelect is now preserved when set by Scintilla, though any data set by VS is discarded.
  • +
  • When writing ClipboardAll directly to file, it now prefers Unicode (other usages of ClipboardAll have had this behaviour since v1.1.08).
  • +
  • ClipboardAll and FileRead *c on Unicode builds now round length up when odd. This increases the reported StrLen by 1, potentially avoiding truncation of the last byte.
  • +
+

Fixed A_EventInfo for TreeView items with negative screen coords.

+

Fixed a possible ListView/TreeView message filtering issue.

+

Fixed A_LineFile/A_LineNumber in #If expressions.

+

Fixed #If to add itself to ListLines (though as "If").

+

Fixed Abs(["-"]*) and similar crashing the program.

+

Fixed } funcdef(){ globally and }} ending a method/property/class.

+

1.1.15.04 - August 12, 2014

+

Fixed a performance issue with &var_containing_long_string_of_digits.

+

Fixed built-in variables corrupting memory when an object is assigned.

+

Fixed parser to disallow continue where appropriate even if the current function is defined inside a Loop.

+

Fixed File.Encoding := x "-RAW" breaking encoding/decoding of non-ASCII characters. The -RAW suffix is now ignored.

+ +

1.1.15.03 - August 2, 2014

+

Fixed meta-functions to exit the thread correctly after using Exit or Throw.

+

Fixed FileInstall to use A_WorkingDir when Dest is relative in a non-compiled script.

+ +

1.1.15.02 - July 7, 2014

+

Fixed debugging negative integer keys in objects.

+ +

1.1.15.01 - June 30, 2014

+

Changed built-in error and warning dialogs to be always-on-top.

+

Fixed Until not breaking out of recursive file/registry loops.

+ +

1.1.15.00 - May 4, 2014

+

Added A_OSVersion value WIN_8.1.

+

Changed the Hotkey command to apply/remove passthrough behavior on existing hotkey variants depending on whether the tilde (~) prefix is present.

+

Changed exe manifest to allow GetVersion/GetVersionEx to detect Windows 8.1.

+ +

1.1.14.04 - April 25, 2014

+

Fixed DllCall() crashing the script when Function is pure integer 0.

+

Fixed IsFunc("ComObj(") to return false instead of throwing an exception.

+

Fixed ControlClick to send XButton1/XButton2 correctly.

+ +

1.1.14.03 - February 14, 2014

+

Fixed a memory leak in new X when X.__Init aborts the thread.

+

Fixed breakpoints shifting onto class var initializers when they are interspersed with method definitions.

+ +

1.1.14.02 - January 30, 2014

+

Fixed x:: and x up:: both firing on key-up if the state of the modifier keys prevented x from firing on key-down. The intended behaviour as of v1.1.14 is for both hotkeys to fire on key-up if x is also used in a custom combination like x & y::.

+ +

1.1.14.01 - January 15, 2014

+

Fixed Try without Catch/Finally crashing if no exception was thrown.

+ +

1.1.14.00 - January 15, 2014

+

Added Finally statement for performing cleanup after try/catch. [fincs]

+

Changed behaviour of ~ prefix with custom combos to be more intuitive.

+

Fixed x & y:: to fire both x:: and x up:: when x is released.

+

Fixed ImageSearch to set ErrorLevel=2, not 0, when a GDI call fails.

+

Fixed EnvGet crashing the program when the var exceeds 32767 chars.

+

Fixed a minor error-handling bug with StatusBarWait's ErrorLevel.

+

Fixed a cause of heap corruption with FileRead *c on ANSI builds.

+

Fixed passing of local vars in recursive calls to variadic functions.

+

Fixed script failing to load if the first line is an expression in parentheses.

+

Fixed PixelSearch Fast mode to set OutputVarX/Y only on success.

+ +

1.1.13.01 - October 11, 2013

+

Fixed variadic function calls with named values for required parameters.

+ +

1.1.13.00 - August 27, 2013

+

Ported StrSplit() from v2 alpha.

+ +

1.1.12.00 - August 14, 2013

+

Optional parameters can be omitted by writing two consecutive commas, as in InStr(a, b,, 2). Unlike previous versions, this now works for objects (including COM objects) and built-in functions. [a,,b] can be used to create a sparse array.

+

Object properties can now be set using variadic syntax, as in x[y*]:=z, where y contains an array of keys/indices or parameters.

+ +

1.1.11.02 - July 28, 2013

+

Fixed GuiControl/Get to accept the ClassNN of a ComboBox's child Edit. Specifying the HWND of a ComboBox's child Edit was already supported as a means of identifying the ComboBox.

+ +

1.1.11.01 - June 25, 2013

+

Fixed InputBox default width/height (broken by v1.1.11.00 - commit 7373cc6443).

+

Fixed DllCall arg type validation to handle SYM_OBJECT safely, and to respect #Warn UseUnset (when var name is not a valid type).

+

Changed VarSetCapacity(var) to never warn about uninitialized vars.

+ +

1.1.11.00 - June 21, 2013

+

Added support for %A_LineFile% in #Include.

+

Reduced the file size of AutoHotkeySC.bin by reducing the resolution of the (rarely used) filetype icon.

+

Fixed class X extends Y to allow Y to be defined after X.

+

Developed by fincs: AutoHotkey is now DPI-aware. The Gui commands automatically compensate when DPI is not 96. See Gui -DPIScale.

+

1.1.10.01 - May 17, 2013

+

Improved RegRead to support REG_BINARY values larger than 64K.

+

Improved RegWrite to support REG_BINARY/REG_MULTI_SZ values larger than 64K.

+

Fixed Process Close (and possibly other things) on Windows XP.

+ +

1.1.10.00 - May 11, 2013

+

Added basic support for custom Gui control types.

+

Revised SoundSet, SoundGet and 'WaveVolume commands to better support Windows Vista and later.

+

Fixed Run "<file>" <args> to not pass the space as part of the args.

+

Fixed some issues with reading from console input (CONIN$).

+ +

1.1.09.04 - March 14, 2013

+

Fixed Gui menu accelerator keys not working when the Gui itself (not a control) has focus.

+ +

1.1.09.03 - February 9, 2013

+

Fixed two bugs which affected certain assignments where the target variable contains an unflushed binary number but has zero capacity.

+

Fixed GuiControl and GuiControlGet acting on the wrong control when given a HWND which does not belong to the current Gui. Instead, the condition is treated as an error.

+

Fixed OnMessage functions to set A_Gui and A_GuiControl correctly when the target Gui is a child window.

+ +

1.1.09.02 - December 24, 2012

+

Fixed MsgBox to show an error message when given invalid Options, instead of silently exiting the thread.

+

Fixed syntax errors in class var initializers causing the program to crash without the proper error message.

+ +

1.1.09.01 - December 15, 2012

+

Fixed AND/OR following a multi-statement comma, like ((x, y) and z).

+

Fixed RegExReplace to support duplicate subpattern names correctly.

+

Fixed Object.Remove() not freeing string keys.

+

Fixed base.Invoke() to not depend on dynamic variable resolution.

+ +

1.1.09.00 - November 7, 2012

+ +

Breaking changes:

+

Removed .aut file compatibility and #AllowSameLineComments.

+

Removed undocumented AutoIt v2 commands.

+ +

Backward-compatible changes:

+

Allow optional parameters to be declared with := instead of =, for consistency with variable declarations and expressions.

+

Allow non-ASCII characters in unquoted keys ({key: x} and obj.key).

+

Changed name in version info from "AutoHotkey_L" to "AutoHotkey".

+ +

Bug-fixes:

+

Fixed instability caused by warning dialogs appearing part-way through evaluation of a command's args.

+

Fixed PixelSearch Fast mode treating "not found" as an error.

+

Fixed ahk_exe to allow other ahk_ criteria after it.

+

Fixed else continue 2 and similar requiring braces around the loop.

+

Fixed RegRead indicating failure after successfully reading binary data.

+

Fixed File.Length to compensate for or flush any buffered data.

+

Fixed Gui sizing to account for scrollbars when present.

+ +

Debugger:

+

Added support for asynchronous commands.

+

Improved handling of breakpoints on lines like else foo() or { bar() so that the debugger will actually break when appropriate.

+

Optimized code size, fixed several bugs and made the debugger generally more robust.

+ + +

1.1.08.01 - August 3, 2012

+

Debugger: Fixed max_depth being either half the intended limit or unlimited.

+ +

1.1.08.00 - July 14, 2012

+ +

Breaking changes:

+

Changed the default script codepage to ANSI, as the previous behaviour was a common source of confusion. UTF-8 files must now have a byte order mark (BOM) to be recognized correctly. Notepad adds a BOM to any file saved as UTF-8.

+

Changed return x to preserve formatting of numeric strings; it is now equivalent to return (x).

+

Changed Gui, Name: New to set the new GUI as the default.

+ +

Other changes:

+

Changed ClipboardAll to prefer CF_UNICODETEXT over other text formats.

+

Changed Gui Show to allow floating-point numbers.

+

Changed A_OSVersion to return WIN_8 on Windows 8.

+

Changed AutoHotkey.exe file description to include "ANSI/Unicode 32/64-bit".

+

Changed the parser to allow lines like new MyObject() with no assignment.

+

Upgraded PCRE to 8.30.

+

Improved wording of some warnings and added a pointer to the documentation at the bottom of the warning dialog.

+

Improvements to the debugger:

+
    +
  • Added basic support for inspecting Func, ComObject and RegExMatchObject objects.
  • +
  • Fixed the "attach debugger" message being ignored in some situations. See commit 83f0a0e.
  • +
+ +

New features:

+

Added support for the PCRE construct (*MARK:NAME) via RegExMatchObject.Mark.

+

Added support for classvar.x := y assignments in class definitions (after declaring classvar).

+

Added A_Is64bitOS.

+

Added SetRegView and A_RegView.

+ +

Fixes:

+

Fixed Func.() to merely skip the function call if mandatory parameters were omitted instead of causing the thread to silently exit.

+

Fixed Object.Remove() not releasing object keys.

+

Fixed key-down/key-up hotkey pairs to suppress input correctly when only one hotkey in the pair is enabled.

+

Fixed #Include <Lib> to not affect the working directory used by subsequent #include directives.

+

Fixed objaddref() acting like ObjRelease() when called with a lower-case 'a'.

+

Fixed A_AhkPath in 32-bit compiled scripts to detect 64-bit AutoHotkey installations and vice versa.

+

Fixed TreeView controls with -Background option rendering incorrectly on older OSes.

+

Fixed error messages shown during execution of While/Until to identify the appropriate line.

+ +

1.1.07.03 - March 25, 2012

+

Fixed Ctrl/Alt/Shift key-down hotkey breaking any corresponding key-up hotkey defined before it.

+

Fixed key-down hotkeys to always use the hook if defined after a key-up hotkey of the same key. If the key-down hotkey used the "reg" method, the hook would block the key-down event and trigger only the key-up hotkey.

+

Fixed load-time checks interpreting expressions with no derefs as raw text. For example, gosub % "foo" resolved to "foo": at load-time. Similarly, % "" was seen as invalid in various cases even if an empty string should be allowed.

+ +

1.1.07.02 - March 22, 2012

+

Fixed a rare crash which can occur when GetClipboardData() fails.

+

Fixed ComObjArray() to return an empty string on failure instead of an arbitrary integer.

+

Fixed Object.Remove(i, "") affecting integer keys when !Object.HasKey(i).

+ +

1.1.07.01 - March 2, 2012

+

Fixed FileRead to ignore #MaxMem when reading UTF-16 on Unicode builds.

+

Fixed dynamic function calls with built-in vars such as %A_ThisLabel%().

+ +

1.1.07.00 - February 27, 2012

+

Enhanced %var%() to support function references, objects imitating functions and the default __Call meta-function.

+

Fixed ControlGet List to work for ListViews where the script and the target process aren't both 32-bit or both 64-bit.

+

Fixed SendEvent with a key delay of 0; a change introduced by v1.1.05.04 caused it to be slower than intended.

+

Fixed Object.Remove(i) not adjusting keys if Object[i] doesn't exist.

+

Fixed an error in ComObjType() which may have caused unpredictable behaviour when it is called via an alternative name.

+

Fixed ExitApp to exit the thread if an OnExit subroutine prevents the script from terminating, instead of resuming execution after the block which contained ExitApp.

+

Calling a function via an object no longer acts as a barrier to exiting the thread. Consequently, if Exit is used or a runtime error occurs within a class method, the entire thread exits instead of just the function.

+

Calling a base-class method using base.Method() or similar inside a class definition no longer causes a UseUnset warning if the method doesn't exist. Consequently, instantiating an object which has instance variables no longer causes a warning about the internal base.__Init method if the base class has no instance variables.

+ +

1.1.06.02 - February 13, 2012

+

Fixed IniRead crashing when Section is omitted but Key isn't.

+

Fixed accuracy of FileGetSize with files which are 4GB or larger.

+ +

1.1.06.01 - February 12, 2012

+

Fixed MsgBox smart comma handling to require numeric Options, not Title.

+ +

1.1.06.00 - February 12, 2012

+

New features:

+

Integrated #InputLevel directive and SendLevel command by Russell Davis.

+

Integrated support for Link controls by ChrisS85.

+

Breaking changes:

+

Changed command parser to avoid trimming escaped characters such as `t or at the beginning or end of an arg.

+

Changed MsgBox's smart comma handling to improve flexibility and consistency.

+
    +
  • % can now be used to make Options or Timeout an expression.
  • +
  • If the first arg is an expression, any unescaped comma which is not + enclosed in quote marks or parentheses/brackets/braces will cause + multi-arg mode to be used. These commas were formerly interpreted + as multi-statement operators within the first-and-only arg (Text).
  • +
  • When Title is an expression, unescaped commas contained within the + expression no longer interfere with smart comma handling.
  • +
  • If there are exactly two args and the first is empty or an integer, + multi-arg mode is used. The former behaviour was to combine both + into a single arg (Text).
  • +
  • Timeout can be a literal number or a single deref (and optionally + part of a number; for example, %Timeout%.500). Contrary to the + documentation, the former behaviour interpreted most other cases + beginning with % as expressions (containing a double-deref).
  • +
  • Title can be an expression even if Text and Options are omitted.
  • +
+

Changed A_IsUnicode/A_IsCompiled to be defined as an empty string in ANSI versions/uncompiled scripts instead of being left undefined. This allows them to be checked without triggering #Warn warnings. Side effects include:

+
    +
  • Attempting to assign directly to A_IsCompiled or A_IsUnicode always causes a load-time error. Dynamic assignments always fail, either silently or with an error dialog as appropriate. Previously assignments were allowed in uncompiled/non-Unicode scripts.
  • +
  • Attempting to take the address of A_IsCompiled or A_IsUnicode always fails.
  • +
  • A_IsCompiled and A_IsUnicode no longer appear in ListVars when referenced by a script which is not compiled/Unicode.
  • +
+

Changed Send and related commands to respect #MenuMaskKey when changing modifier keystates.

+

Other changes:

+

Changed GuiControl Choose to remove the ListBox/ComboBox/DDL's current selection when N=0.

+

Changed RegisterCallback to allow a Func object in place of a name.

+

Changed ListLines to show filenames (except when compiled).

+

Improved Run to output a process ID if possible when ShellExecuteEx is used.

+

Fixes:

+

Fixed handle leaks in RegRead.

+

Fixed x.y++ and similar to assign an empty string if x.y is non-numeric.

+

Fixed SendInput Win+L workaround causing Win key to "stick down".

+

Fixed Ahk2Exe auto-including the wrong file if an auto-include used #Include <Lib>.

+ +

1.1.05.06 - December 31, 2011

+

Fixed inc (++) and dec (--) having no effect when used on an object field containing a string.

+

Fixed inc (++) and dec (--) to cause a warning when used on an uninitialized variable.

+ +

1.1.05.05 - December 17, 2011

+

Fixed continue n misbehaving when an inner loop has no braces.

+

Fixed RegExMatchObject[Name] to work correctly with duplicate names.

+ +

1.1.05.04 - December 5, 2011

+

Fixed: Selected sub-command of ControlGet was unreliable on x64.

+

Fixed: CPU was maxed out while waiting if an underlying thread displayed a dialog (and possibly in other cases).

+ +

1.1.05.03 - November 30, 2011

+

Fixed Loop ... Until VarContainingObject.

+ +

1.1.05.02 - November 20, 2011

+

Fixed false detection of end-of-file when loading a compiled script in some cases.

+

Fixed SendInput to automatically release modifier keys when sending special characters or {U+xxxx} (which was broken by v1.1.00.01).

+

Fixed ComObjConnect to filter out non-dispatch interfaces instead of allowing the script to crash.

+

Fixed new %VarContainingClassName%().

+ +

1.1.05.01 - October 16, 2011

+

Fixed class declarations to allow directives such as #Include.

+ +

1.1.05.00 - October 8, 2011

+

Added Client coordinate mode.

+

Added object output mode for RegExMatch and RegEx callouts.

+

Added super-global declarations, which avoid the need to repeat global declarations.

+

Breaking change: Class declarations such as Class c now create a super-global variable instead of an ordinary global.

+

Added more detail to unhandled exception error dialogs.

+

Changed Gui +Owner to work even after the GUI is created.

+

Changed instance var declarations in class definitions to avoid leaving empty key-value pairs in the class object.

+

Changed #Include to use standard error message formatting when it fails (more detail; also respects ErrorStdOut).

+

Changed Throw to throw an Exception object by default when its parameter is omitted.

+

Changed format of runtime error messages slightly to improve consistency and code size.

+

Modified PCRE to use UTF-16 for input on Unicode builds, for performance.

+

Upgraded PCRE to 8.13.

+

Fixed thread not exiting as intended when an assignment in an expression fails.

+

Fixed #MaxMem preventing assignments to variables which don't require expansion.

+

Fixed inability of Try/Catch to catch COM errors.

+

Fixed GuiControlGet incorrectly treating parameter #2 as invalid in some cases.

+

Fixed input vars being resolved too soon, allowing them to be invalidated by an expression later on the same line.

+

Fixed RegEx callouts not causing matching to abort when an exception is thrown.

+

Fixed DllCall setting ErrorLevel to -4 when it should be -3.

+

Fixed While appearing twice in ListLines for its first iteration.

+

Fixed Try/Catch to allow If/Loop/For/While with no enclosing block.

+

Fixed enumerator object not being released when Until is used to break a For-loop.

+ +

1.1.04.01 - September 15, 2011

+

Fixed FileRemoveDir setting ErrorLevel incorrectly.

+ +

1.1.04.00 - September 11, 2011

+

This release contains a number of potentially script-breaking changes.

+

Added exception handling support: try/catch/throw and Exception().

+

Added StdOut mode for #Warn.

+

Added Gui +HwndVARNAME option.

+

Added Gui, New [, Options, Title].

+

Added automatic support for keyboard accelerators such as Ctrl+O in Gui menus.

+

Changed handling of #Include <Lib> when the /iLib command-line switch is present to resolve a problem with Ahk2Exe.

+

Changed GuiControl to retain the Progress control's current value when its style is changed.

+

Changed GuiControl and GuiControlGet to allow a HWND to be passed in the ControlID parameter.

+

Removed the 1GB limit from FileRead.

+

Improved error detection:

+
    +
  • Hotkey, If, Expression, where Expression does not match an existing #If expression, is caught at load-time when possible.
  • +
  • Hotkey, IfSomething, where Something is invalid, is caught at load-time.
  • +
  • Class definitions with missing braces are detected as errors.
  • +
  • If a function call is used on the first line of a class definition, it is now correctly treated as an error.
  • +
  • GroupAdd now shows an error message when the group name is blank, instead of silently exiting the thread.
  • +
  • Removed some redundant "unset var" warnings which appeared when using the OutputDebug or StdOut warning modes.
  • +
  • If an unrecognized option is used with Gui, Gui Show, Gui New or GuiControl, an error message is shown and the thread exits unless try is used. This validation is not done at load-time due to complexity (it is common for the option parameters to contain variable references).
  • +
  • RegRead, RegWrite and RegDelete now set A_LastError to the result of the operating system's GetLastError() function.
  • +
  • +LastFoundExist is now treated as an error if it is combined with another option (+LastFound should be used in that case).
  • +
+

Fixed a bug affecting recursive variadic functions.

+ +

1.1.03.00 - August 28, 2011

+

Added support for GUI names.

+

Added support for identifying a GUI by its HWND.

+

Added +Parent%ParentGui% Gui option.

+

Added support for external windows as Gui owners via +Owner%HWND%.

+

Added Name sub-command for GuiControlGet.

+

Added support for ActiveX controls via the Gui command.

+

Fixed: Empty hotkey control returned "vk00".

+

Fixed: Crashes and memory leaks related to COM events/ComObjConnect.

+

Fixed: GuiControlGet OutputVar, Subcmd, %OutputVar% always failed.

+

Changed "Missing (/[/{" error messages to "Unexpected )/]/}" for greater clarity.

+

Changed ListLines to display While and Until lines which are executed each iteration.

+

Changed ~= to have higher precedence than =/!=/</>/<=/>= but lower than concat, and added it to the documentation.

+ +

1.1.02.03 - August 21, 2011

+

Fixed (Debugger): numchildren attribute did not include Object.Base.

+ +

1.1.02.02 - August 20, 2011

+

Fixed: Variable capacity was capped at 2GB on x64 builds.

+

Fixed: Last Found Window not set by #if WinExist(T).

+ +

1.1.02.01 - August 13, 2011

+

Changed A_PriorKey to exclude key-up events.

+

Fixed process name/path retrieval in certain cases, including:

+
    +
  • Retrieving name/path of a 64-bit process from a 32-bit script.
  • +
  • Retrieving name/path of an elevated process from a non-elevated process (UAC).
  • +
+ +

1.1.02.00 - August 6, 2011

+

Added TV_SetImageList().

+

Characters which require non-standard shift states 16 and 32 now use a fallback method instead of producing the wrong keystrokes.

+

Revised handling of dead keys to solve problems which occur when multiple scripts with hotstrings are active.

+ +

1.1.01.00 - July 30, 2011

+

Added support for instance variables in class definitions, using simple assignment syntax.

+

Removed var keyword used in class definitions; use static instead.

+

Added new built-in variables: A_ScriptHwnd and A_PriorKey.

+

Added new built-in functions: GetKeyName(), GetKeyVK(), GetKeySC() and IsByRef().

+

Added new sub-command: WinGet, OutputVar, ProcessPath.

+

Added the capability to specify a window by process name or path: ahk_exe %Name%.exe or ahk_exe %FullPath%.

+

Optimized ProcessName sub-command of WinGet.

+

Changed SetTimer to use A_ThisLabel if Label is omitted.

+

Updated ComObjConnect() to support using an object in place of a function name prefix.

+

Improved ComObjConnect() to allow the prefix/object to be updated without first disconnecting.

+

Improved parsing of continuation sections to allow expressions like (x.y)[z]() without escaping "(".

+

Replaced the method used to store script text in 32-bit compiled scripts; now consistent with 64-bit.

+

Fixed detection of AltGr in the active window's keyboard layout (on Unicode builds).

+

Fixed SendInput applying a redundant LCtrl-up some time after AltGr-up.

+ + + +

1.1.00.01 - July 17, 2011

+

Fixed: Modifier keys weren't auto-released when sending special chars.

+

Fixed: Scancode/modifier-key mapping conflicts such as sc1xx vs ^sc0xx.

+

Fixed: $ and #UseHook had no effect if used only on the second or subsequent instance(s) of a hotkey.

+

Fixed: Potential crash when returning a value from a __Delete meta-function.

+

Fixed: "Uninitialized variable" warnings were triggered by the debugger.

+

Changed: base.Method() no longer triggers a default meta-function or a warning.

+

Changed: Gui +(Ex)Style no longer hides/shows the Gui.

+

Changed the debugger to report type="undefined" for uninitialized variables.

+

Added check to avoid incorrectly sending keystrokes for characters which actually require the "hankaku" key.

+

Added support for integers as class variable names.

+

Added "Static" keyword for declaring class variables.

+ +

1.1.00.00 - May 1, 2011

+

New features:

+

Implemented basic class definition syntax.

+

Implemented the new keyword for creating a derived object.

+

Added Func() for retrieving a reference to an existing function and improved IsFunc to recognize function references.

+

Added support for ++ and -- with object fields, such as x.y[z]++.

+ +

Changes:

+

Changed __Delete to not trigger __Call.

+

Changed OnClipboardChange to use AddClipboardFormatListener when available (i.e. on Windows Vista and later) to improve reliability.

+

Auto-concat with ( is more selective, so some invalid expressions like 12(34) will no longer work.

+ +

Fixes:

+

Fixed SetTimer Label, -0 to be treated as "run-once, very soon".

+

Fixed A_MyDocuments etc. to use SHGetFolderPath instead of undocumented registry keys.

+

Fixed non-empty ExcludeText causing windows with no text to be excluded.

+ +

1.0.97.02 - April 14, 2011

+

Fixed misinterpretation of comma as an arg delimiter when enclosed in {} in an expression.

+

Fixed For-loop to set A_Index only after the Expression arg is evaluated, so that the outer loop's value can be used.

+

Fixed default script location to be based on the directory containing the EXE (as documented), not the working directory.

+

Improved load-time validation to detect invalid attempts to jump out of a function with Goto.

+ +

1.0.97.01 - April 2, 2011

+

Fixed the 64-bit build to not truncate HWNDs or SendMessage/PostMessage params to 32 bits.

+

Fixed */:: being treated as an invalid hotkey (broken since L54).

+

Fixed the icons.

+

1.0.97.00 - March 28, 2011

+

Added {key: value} as syntax sugar for Object("key", value).

+

Added [x, y, z] as syntax sugar for Array(x, y, z), which is a new function equivalent to Object(1, x, 2, y, 3, z).

+

Added slight optimization: resolve any reference to True, False, A_PtrSize or A_IsUnicode in expressions at load-time.

+

Fixed hotkey parser to treat x & ^y as an error instead of ignoring ^.

+ +

1.0.96.00 - March 21, 2011

+

New features:

+

ComObjQuery: Queries a COM object for an interface or service.

+

ComObjFlags: Retrieves or changes flags which control a COM wrapper object's behaviour.

+

ComObjCreate allows non-dispatch objects to be created if an interface identifier (IID) is given.

+

COM arrays support for-loops and the Clone() method.

+

ListVars shows the inner variant type and value of each COM wrapper object, in addition to the wrapper's address.

+

Changes:

+

When a literal integer or variable containing both a numeric string and cached binary integer is assigned to a field of an object, an integer is stored instead of a string. This particularly benefits scripts calling COM methods which accept integers but not strings, or have different behaviour depending on the type of value.

+

NULL values are now allowed with ComObjParameter for the VT_UNKNOWN and VT_DISPATCH types.

+

Improved support for Common Language Runtime (.NET) objects via COM.

+

FileRecycle should now warn before deleting a file which is too large to recycle.

+

When a SafeArray created with ComObjArray is assigned to an element of another SafeArray, a separate copy is created. This prevents the script from crashing due to a second attempt at "destroying" the array. ComObjFlags allows this behaviour to be avoided.

+

Fixes:

+

Assigning to a COM array of VT_DISPATCH or VT_UNKNOWN crashed the script.

+

Break and Continue were tolerated outside of loops in some cases.

+

Standalone carriage-return (`r) was not correctly interpreted as end-of-line.

+

MouseMove miscalculated negative coordinates with the Input and Event send modes.

+

Selecting Edit This Script from the tray menu or using the Edit command crashed the script (broken by v1.0.95).

+

Error dialogs pointed at irrelevant lines of code in some cases.

+ +

1.0.95.00 - March 12, 2011

+

All file I/O has been heavily optimized.

+

Added #Warn to assist with debugging; initial design by ac.

+

By default, if name_var contains a function name, name_var.() calls the function. This can be overidden via the default base object, as before.

+

Run supports verbs with parameters, such as Run *RunAs %A_ScriptFullPath% /Param.

+

If an operator which can accept either one operand (&x) or two numeric operands (x & y) follows a quoted literal string, auto-concat occurs and the operator is applied only to the right-hand operand. This is because quoted literal strings are always considered non-numeric and are therefore not valid input for numeric operators. For example, expressions like "x" &y and "x" ++y now work.

+

Fixed:

+
    +
  • Wildcard hotkeys were not respecting modifiers such as ^!+ in specific cases.
  • +
  • File.Pos returned garbage for non-seeking file types; now it returns -1.
  • +
  • File.AtEOF was incorrectly true in some cases.
  • +
  • COM wrapper objects left A_LastError unset in some cases.
  • +
  • Gui submenu icons did not work on Windows 2000/XP/Server 2003.
  • +
  • SplashImage clipped the image if height > width.
  • +
  • ComObjConnect did not alert when the first parameter is invalid.
  • +
  • SplashImage now uses GDI+ only when the other methods fail, for compatibility.
  • +
  • Tilde in ~x:: now affects x & y:: in the same way that ~x & z:: would, instead of having no effect.
  • +
  • A_PriorHotkey and A_TimeSincePriorHotkey now have the expected values when used with #If.
  • +
  • RegExReplace did not advance through the string correctly after a match failure if the string contained non-ASCII characters.
  • +
+

1.0.92.02 - January 19, 2011

+

Fixed a memory leak which occurred when the return value of an object invocation or built-in function was not used, such as file.ReadLine() or SubStr(x,y,z) alone on a line.

+

Replaced the fix from v1.0.92.01 with a better fix, which also fixes k::MsgBox(),x:=y and doesn't break if().

+

1.0.92.01 - January 18, 2011

+

Changed: FileCreateDir now sets A_LastError.

+

Fixed: GuiControl() or similar was sometimes misinterpreted as a command.

+ +

1.0.92.00 - January 13, 2011

+

Added support for compound assignments with objects, such as x.y += z.

+

Improved IniWrite in Unicode builds to prevent an empty line from appearing at the top of each new file.

+

Improved the parser to be more permissive about what can follow {/}/Else, especially when combined.

+ +

1.0.91.05 - January 1, 2011

+

Fixed: Cleanup code in COM method calls was freeing the wrong parameters.

+

Fixed (ANSI): DllCall set incorrect length for wstr parameters on output.

+

Fixed: Variadic function calls were unstable when param object was empty.

+ +

1.0.91.04 - December 29, 2010

+

Fixed (Unicode): RegExReplace omitted all text up to StartingPosition (broken by v1.0.90.00).

+ +

1.0.91.03 - December 27, 2010

+

Fixed: RegEx callout subpattern vars - broken by v1.0.90.00.

+ +

1.0.91.02 - December 26, 2010

+

COM: Added protection against NULL IDispatch/IUnknown pointers.

+

COM: Skip QueryInterface for IDispatch if VT_DISPATCH is passed explicitly.

+

Minor fix for maintainability: obj.field := var now correctly yields SYM_STRING, not SYM_OPERAND.

+ +

1.0.91.01 - December 24, 2010

+

Fixed: Unexpected results with File.Write(Str) after text-reading.

+

Fixed: UTF BOM check caused unexpected results in files without a BOM.

+

Fixed (ANSI): Parsing loops and File.ReadLine() treated Chr(255) as EOF.

+

Fixed (Unicode): RegExReplace errors where the UTF-8 and UTF-16 lengths differed.

+

Fixed: Disabling the last hook hotkey breaks Input.

+

Added: Simple optimization for RegExMatch/Replace.

+ +

1.0.91.00 - December 21, 2010

+

All changes in this release are COM-related.

+

Added: ComObjError now returns the previous setting.

+

Added: ComObjType(co) and ComObjValue(co).

+

Added: ComObjMissing().

+

Added: ComObjArray() and basic SAFEARRAY support.

+

Added: "Take ownership" parameter for ComObjParameter().

+

Changed: Values passed to COM functions via ComObjParameter are no longer freed in the process of calling the function.

+

Changed: ComObj.x() now falls back to PROPERTYGET if member 'x' is not found. This fixes for-loops for some objects.

+

Changed: Wrap unhandled variant types in an object rather than returning integer value.

+

Changed: Manage VT_UNKNOWN/VT_ARRAY lifetime automatically, by default.

+ +

1.0.90.00 - November 27, 2010

+

Fixed: UrlDownloadToFile in Unicode builds on Windows < 7.

+

Fixed: Upper-ANSI characters were sent as Alt+0 in ANSI build.

+

Fixed: File.Pos was incorrect after attempting to read past EOF.

+

Fixed: Escape sequences in #If expressions and static initializers.

+

Fixed: ClipboardAll sometimes crashed the script with certain formats.

+

Fixed: Transform HTML calculated length incorrectly for &#NNN; entities.

+

Fixed: VarSetCapacity now correctly ignores #MaxMem for ByRef variables.

+

Fixed: FileAppend,,file.txt set ErrorLevel=1 even on success.

+

Fixed: Match length was miscalculated for RegEx callouts with the P) option.

+

Integrated Sean's improvements to number handling in COM interop.

+

Optimized RegExReplace and RegExMatch in Unicode builds.

+ +

Revision 61 - October 3, 2010

+

Added: ObjClone(Object), forgotten when Object.Clone() was implemented.

+

Added: Support for RegEx Unicode properties in Unicode builds. Also upgraded PCRE to 8.10.

+

Added: Object.Remove(int, "") removes Object[int] without affecting other keys.

+

Changed: ComObj.xyz() is now always treated as a method-call.

+

Changed: Var := 123 is now left as an expression, for consistency. This makes Var := 123 and Var := (123) equivalent, whereas previously the former assigned only a string and the latter assigned both a string and a cached binary integer. In particular, this avoids some confusing type mismatch errors with COM objects.

+

Fixed: Dynamic variadic calls to functions with mandatory parameters.

+

Fixed: The final parameter of an assume-global variadic function had to be explicitly declared local.

+

Fixed: Static initializers interfering with setting of breakpoints.

+

Fixed: More pointer size-related errors with PCRE callouts on x64 builds.

+

Fixed: Input with 'M' option treated Ctrl-M (`r) as Ctrl-J (`n).

+

Fixed: Object.Remove(n) returned 0 (not "") if Object[n] didn't exist.

+ +

Revision 60 - September 24, 2010

+

Added: File.Encoding for changing or retrieving the codepage in use by a File object.

+

Added: Variadic functions and function-calls and indirect mode for callbacks.

+

Added: Object.Clone()

+

Changed: ByRef parameters no longer require the caller to supply a variable.

+

Changed: Obj.foo := "" now frees foo's contents as originally intended (but still doesn't remove the field).

+

Changed: OnMessage functions now tolerate optional and ByRef parameters.

+

Changed: RegisterCallback now enables execute access on callbacks in 32-bit builds (already did in 64-bit builds).

+

Changed: RegisterCallback now treats explicit ParamCount="" as omitted.

+

Fixed: For-loop was treating non-expression "0" as true for scripted enumerators.

+

Fixed: ComEvent (ComObjConnect) not working on the ANSI build.

+

Fixed: ComEvent (ComObjConnect) not correctly backing up/restoring local vars when calling a function which is already running.

+

Fixed: Buffer overflow in A_EndChar when there is no end char.

+

Fixed: Func->mNextFunc not inititialized to NULL (used only by LowLevel scripts).

+

Debugger: Added the capability to retrieve an object's contents (with a supported debugger client).

+

Debugger: Fixed a few bugs.

+ +

Revision 59 - September 12, 2010

+

Fixed: #If expression should now evaluate each expression at most once per keypress in all cases.

+

Changed: SplashImage uses common image-loading routines; now supports PNG and similar, but results may differ from before for icon files.

+

Added: For x,y in z.

+

Added: Loop .. Until expression, usable with any Loop or For-loop.

+

Added: Named loops; continue outer_loop, break 2, etc.

+

Debugger: Encode stdout and stderr packets as UTF-8.

+

Debugger: Allow user to Abort, Retry or Ignore when the initial connection fails.

+

Debugger: Allow attaching a debugger client by sending the script a registered window message.

+

Debugger: Allow detaching debugger client by sending the "detach" DBGp command.

+ +

Revision 58 - September 5, 2010

+

Added: static var := expression.

+

Revision 57 - September 4, 2010

+

Fixed Str*, WStr* and AStr* DllCall return types on x64.

+

Added functionality to InStr to bring it in line with StringGetPos:

+
    +
  • If StartingPos is negative, the search is conducted right-to-left beginning at that offset from the end.
  • +
  • An additional parameter is available to specify which occurrence of the string to find.
  • +
+

Added #include <LibName> for explicitly including a script from a function library folder.

+

Added functionality to IniRead and IniWrite allowing an entire section to be read or written.

+

Added functionality to IniRead allowing a list of section names to be retrieved.

+

Added support for custom verbs to Run/RunWait: Run *verb file.

+

Made improvements to the way Run/RunWait extracts the action and its parameters from the Target parameter.

+

Changed NumGet/NumPut to allow Offset to be omitted entirely since Type is always non-numeric.

+

Removed the restriction that a label can't point to the end of a block.

+ +

Revision 56 - August 29, 2010

+

Added support for x64 compiled scripts. Requires Ahk2Exe_L and x64 AutoHotkeySC.bin.

+

Fixed: Deref operator (*addr) rejected addresses outside 32-bit range.

+

Fixed: #If expression memory allocation error on x64.

+

Fixed: Custom hotstring end chars with code points greater than U+00FF.

+

Fixed: Special characters being sent out of sequence by SendInput/Play.

+

Fixed: */ being discarded in continuation sections (see L54).

+ +

Revision 55 - August 19, 2010

+

Fixed: GroupActivate not setting ErrorLevel=1 if no Label was specified.

+

Fixed: Tab controls in x64 build.

+

Fixed: String-copy mode of StrPut when length is omitted; broken by L53.

+

Fixed: Data-alignment issues in x64 builds.

+

Changed: Set A_LastError for more File* commands to assist debugging.

+

Includes FileAppend, FileRead, FileReadLine, FileDelete, FileCopy, FileMove, FileGetAttrib/Time/Size/Version and FileSetAttrib/Time.

+

Excludes FileCopyDir, FileRecycle, FileMoveDir, FileRemoveDir, FileRecycleEmpty, FileCreateDir and FileInstall as the APIs used do not consistently set or return a Win32 error code.

+ +

Revision 54 - August 15, 2010

+

Fixed: RunAs in Unicode build. [jackieku]

+

Fixed: RegisterCallback in x64 build. [fincs]

+

Fixed: Executables failing to run on Win2k and WinXP prior to SP2. Win2k requires SP4 and updates (probably KB 816542). XP not tested.

+

Fixed: Dialogs such as MsgBox became unresponsive when interrupted by another script thread. Message filter/workaround added in L45 had to be removed. [Bug report]

+

Fixed: Multi-byte characters in default ANSI codepage; this was also causing a memory leak. [Bug report]

+

Fixed: ComObject now allows purely numeric property/method names. [Bug report]

+

Enhanced usability and capabilities of FileOpen/File object.

+
    +
  • FileOpen's Flags parameter accepts a human-readable string of flags.
  • +
  • FileOpen's "update" mode has been renamed "read/write" and now creates the file if it didn't already exist.
  • +
  • FileOpen sets A_LastError as appropriate.
  • +
  • File := FileOpen(handle,"h") wraps an existing file handle in an object.
  • +
  • File.Seek(n) defaults to SEEK_END when n is negative.
  • +
  • File.Pos (or File.Position) can be used in place of Tell and Seek.
  • +
  • File.Pos, File.Length, File.AtEOF and File.__Handle can be used without empty parentheses().
  • +
  • File.Length can be set, as in File.Length:=n.
  • +
  • File.ReadNum() and File.WriteNum(n) read or write a number, where Num is a NumGet-compatible type name.
  • +
  • File.WriteLine(s) is equivalent to File.Write(s "`n"), for symmetry with File.ReadLine().
  • +
  • File.Read() reads and returns the remainder of the file when used without parameters.
  • +
  • File object now returns "" for unrecognized methods and invalid syntax rather than the numeric address of "".
  • +
+

Changed: GroupAdd's Label parameter now applies to the whole group. [Discussion]

+

Changed: GroupActivate sets ErrorLevel on success/failure. (Same thread as above.)

+

Changed: */ at the beginning of a line is ignored if there was no /*. [Discussion]

+

Removed ToCodePage and FromCodePage subcommands of Transform.

+ +

Revision 53 - August 8, 2010

+ +

Merged AutoHotkey64 - COM support and x64 compatibility.

+

x64 (changes since AutoHotkey64):

+
    +
  • Fixed floating-point return values and exception handling for DllCall.
  • +
  • Fixed RegEx callouts.
  • +
  • Re-enabled GetProcAddress optimisation for DllCall.
  • +
  • NumPut and NumGet default to "Int64" in x64 builds.
  • +
+

COM (changes since AutoHotkey64):

+
    +
  • Allow ComObjParameter to wrap 64-bit values in 32-bit builds.
  • +
  • Implemented more standard ref counting conventions in ComObjActive.
  • +
  • Prevent extraneous AddRef for new ComObjects in certain cases.
  • +
  • Don't treat pdispVal==NULL return value from Invoke as an error.
  • +
  • Fail more predictably when given wrong type of object.
  • +
  • Require explicit second param in ComObjType, don't assume "IID".
  • +
  • Free local vars after ComEvent calls a function.
  • +
  • Remove pVarResult param from ComEvent; use return value instead.
  • +
  • Pass the original wrapper ComObject in each ComEvent call.
  • +
  • Add context to ComError dialog; let the buttons make more sense.
  • +
+

Implemented common syntax validation code for enumerators. Enum[] and Enum.Next() are now supported with or without parameters. Enum[]:=val and similar obscure forms which worked in AutoHotkey_COM/AutoHotkey64 are not allowed.

+

"Ptr" type is still signed (unlike AutoHotkey64), for maximum flexibility and consistency.

+

Other changes:

+

Added: Object.HasKey(key).

+

Added: Object(obj) increments obj's reference count and returns its address.

+

Added: ObjAddRef() and ObjRelease().

+

Fixed: A_ThisHotkey now has the expected value when used with #If.

+

Fixed: RunAs in Unicode build (fixed by jackieku).

+

Changed: Default script codepage for ANSI builds is now CP0 (ANSI).

+

Changed: x.y[] is now equivalent to (x.y)[] rather than x["y"].

+

Changed: Built-in methods can now be called with or without the underscore prefix (e.g. obj.MaxIndex() or obj._MaxIndex()).

+ +

Revision 52 (again) - July 10, 2010

+

Added support for built-in and environment variables in double-derefs.

+

Improved support for multi-byte characters in certain codepages (previously only 932, 936, 949, 950 and 1361 were supported).

+

Fixed: StrPut failed for codepages which don't support WC_NO_BEST_FIT_CHARS, such as UTF-7.

+

Fixed: Double-deref as object - literal%var%.literal.

+

Fixed: StrPut("", Encoding) null-terminated an invalid address.

+ +

Revision 52 - June 12, 2010

+

Fixed: ObjRemove's Key parameter is now optional, as with Object._Remove.

+

Fixed: Files were improperly locked while reading, unlike in older versions.

+

Fixed: Uppercase Hex format caused negative integers to become unsigned.

+

Fixed: RegExMatch was corrupting output array items when specific conditions were met. See bug report.

+ +

Revision 51 - April 11, 2010

+

Changed: Use <EXENAME>.ahk instead of AutoHotkey.ini or AutoHotkey.ahk.

+

Changed: Default to UTF-8 for script files; override with /CPnnn.

+

Fixed: Unpause when the script exits so that object __Delete meta-functions can run.

+ +

Revision 50 - March 27, 2010

+

Improved flexibility of Object._Insert.

+
    +
  • Object._Insert(x) - inserts x at _MaxIndex()="" ? 1 : _MaxIndex() + 1.
  • +
  • Object._Insert(i,x,y,z) - inserts x,y,z at i,i+1,i+2.
  • +
+

Improved flexibility of Object._Remove.

+
    +
  • Object._Remove(k) - removes and returns the value associated with k.
  • +
  • Object._Remove() - removes and returns the value at _MaxIndex().
  • +
+

Added file share mode flags to FileOpen [by jackieku].

+

Fixed: 'P' option of RegExMatch incorrectly output 1 for subpatterns which did not match anything.

+

Fixed: Object._SetCapacity(key,n) was not null-terminating in some cases.

+

Fixed: StatusBarGetText returned only half of the text in Unicode builds.

+ +

Revision 49 - March 14, 2010

+

Added obj._NewEnum().

+

Added ObjMethod(obj) for each built-in obj._Method().

+

Changed: ObjSet/Get/Call can no longer be called/overridden by script.

+

Fixed: Potential crash caused by VK_PACKET check added in L48.

+

Fixed: Character codes in VK_PACKET events were potentially misinterpreted as scancodes.

+

Fixed: ExcludeText was ineffective after the first matching control.

+ +

Revision 48 - February 21, 2010

+

Fixed: Standalone obj.() was not recognized as a valid expression.

+

ControlSend now uses WM_CHAR to support characters which have no associated keycode. For instance, this applies to "…" (en-US), "∞" in a Unicode build and {U+221e} in either build.

+

KeyHistory now shows the full 16-bit character code for VK_PACKET (VK=E7) events. Send may indirectly cause these to be generated for Unicode characters.

+ +

Revision 47 - February 13, 2010

+

Fixed (Unicode): ControlGet,List with ListView controls.

+ +

Revision 46 - February 11, 2010

+

Added A_FileEncoding, which returns the current default file encoding.

+

Added StrPut and extended StrGet with additional features.

+ +

Revision 45 - February 8, 2010

+

Added _GetAddress; _SetCapacity/_GetCapacity may now operate on a given field. [more info]

+

Added workaround for WM_PAINT infinite loop often caused by subclassing.

+

Allow obj.() as a means to call the default method of an object; equivalent to obj[""]().

+

Dev: Added solution and project files for MSBuild 4.0 & VS2010. [more info]

+

Fixed (Unicode): 'Running' column in ListHotkeys.

+ +

Revision 44 - February 7, 2010

+

Fixed: Attempting to set "nothing" crashed the script. For instance, x[]:=z.

+

Fixed (Unicode): Unable to find default script (Documents\AutoHotkey.ahk).

+

Fixed (Unicode): A_Desktop, A_ProgramFiles and several other built-in variables which read their value from the registry caused strings to be incorrectly terminated.

+

Fixed (ANSI): Characters in the range 0x80-0xFF couldn't be found by InStr or StringReplace.

+

Changed (ANSI): Treat ToCodePage/FromCodePage like other unsupported/invalid subcommands.

+ +

Revision 43 - January 29, 2010

+

Fixed: obj.Func() resulting in a random integer when it should be an empty string.

+ +

Revision 42 - January 28, 2010

+

Merged with AutoHotkeyU.

+

Numerous bug-fixes and improvements, some relating to the merge.

+ +

Revision 41 - December 20, 2009

+

Fixed: Floating-point numbers were equivalent to an empty string when used as keys in objects. They are now converted to numeric strings in the current float format, as originally intended.

+ +

Revision 40 - December 13, 2009

+

Changed meta-functions and multi-param behaviour to improve flexibility. Meta-functions are now invoked *before* searching for an appropriate field in each base object; however, values in x.base will override meta-functions defined in x.base.base. Chaining meta-functions (inheritence) is now possible by avoiding "Return"

+

Improved Default Base functionality to be more consistent with real objects.

+

Changed (Debugger): While stepping through code, skip all braces except those which end a function.

+

Changed (Debugger): When stepping onto the hidden "Exit" at end of the script, consider it to be *below* the last physical line to avoid confusion.

+ +

Revision 39 - December 2, 2009

+

Fixed (Debugger): Error in Base64 decoding used by property_set.

+ +

Revision 38 - November 17, 2009

+

Added: #MenuMaskKey directive to change which key is used to mask Alt/Win keyup events. See this thread for background information.

+

Changed: If x[1,2]:=3 creates an object for x[1], it's base is no longer automatically set to x.base. See the documentation for a method of controlling this behaviour.

+ +

Revision 37 - November 7, 2009

+

Added: Support for obj[method_name](params) object-call syntax.

+ +

Revision 36 - November 4, 2009

+

Changed: If x.y or similar is immediately followed by an open-bracket ([), the right-most identifier preceding the bracket is treated as the first parameter of the operation. For instance, a.b.c[d] is equivalent to ObjGet(a.b,"c",d) and x.y[z]:=v is equivalent to ObjSet(x,"y",z,v). Previously each sub-expression preceding a bracket was evaluated separately.

+

Changed: If a method-call such as x.y() is followed immediately by an assignment, the parentheses are treated as brackets. For instance, x.y(z):=v is now equivalent to ObjSet(x,"y",z,v).

+

Fixed: If(expr) and While(expr) with no delimiting space or comma.

+ +

Revision 35 - October 25, 2009

+

Fixed: Standalone expressions beginning with two or more "dots", such as x.y.z(). (Broken by L34.) Note that '(' or '[' or ':=' is still required.

+ +

Revision 34 - October 24, 2009

+

Changed: Setting a value within an object to an empty string now stores the empty string rather than removing the key-value pair from the object. _Remove can still be used to completely remove key-value pairs.

+

Changed: Command names must be terminated with a space, tab or comma. The following characters no longer bypass this requirement: <>:+-*/!~&|^[]. For instance, syntax errors such as MsgBox< foo and If!foo are now caught at load-time.

+

Fixed: Return now properly handles expressions which result in a variable containing an object. For instance, Return x:=y, Return (x), Return x,... and similar should work now (Return x already worked).

+

Fixed: Multi-parameter get/set did not correctly support meta-functions for multiple objects (such as for x and x[y] in the expression x[y,z]).

+

Fixed: Cascading object-assignments such as the x[y]:=z in r:=x[y]:=z could not yield numbers or objects - broken by L33.

+

Fixed: x._Remove(y) crashed the script or removed the wrong item if x did not contain y.

+

Fixed: x.=y, if x.y=... and similar. May affect other expressions.

+

Fixed: Standalone ternary expressions no longer requires spaces. For instance, x? F(1) : F(2) is now allowed.

+

Debugger: On script exit, disconnect debugger *after* releasing objects to allow debugging of __Delete handlers.

+ +

Revision 33 - October 3, 2009

+

Fixed: Local variables were not automatically freed for functions which return objects or pure numbers.

+

Fixed: Two separate reference-counting errors related to ternary operator and Object().

+

Fixed: If a string returned by a scripted object function was assigned directly to a variable, the variable's length was set incorrectly.

+

Fixed: If the last operation in an expression retrieved a string from a temporary object, the object and string were freed prematurely.

+

Fixed: Numeric strings with special formatting were not preserved when returned from a function via a variable or passed to a recursive function.

+

Fixed: If the final result of an expression (other than for Return) is an object, correctly yield an empty string instead of silently aborting the thread.

+

Fixed: __Delete meta-functions sometimes overwrote temporary values in the deref buffer.

+

Added: An address retrieved via &object may be cast back into an object reference by using Object(address).

+ +

Revision 32 - September 26, 2009

+

Fixed: Send/PostMessage crash when less than three parameters were specified.

+ +

Revision 31 - September 26, 2009

+

Added: Object/array support and numerous minor changes to make this possible.

+

Added: Support for While(expression) with no delimiting space.

+

Added: Trim, LTrim, RTrim.

+

Added: A ~= B; equivalent to RegExMatch(A, B). May be removed in a future revision.

+

Fixed: An incompatibility with LowLevel.

+

Changed: Characters [, ] and ? are no longer valid in variable names. Consequently, ? (ternary) no longer requires a space on either side.

+

Changed: Optional parameters may now be omitted at any position in the parameter list of a non-dynamic function call. Since this works by automatically inserting the parameter's default value at load-time, it is not supported or allowed for dynamic function-calls.

+

Debugger: Various minor changes to make program flow easier to follow while stepping through code.

+

Optimization: If DllCall's first parameter is a literal string which identifies a function already present in memory, it is replaced with the actual address of the function.

+

Updated from v1.0.48.03 to v1.0.48.04.

+ +

Revision 30 - May 31, 2009

+

Updated from v1.0.48.02 to v1.0.48.03.

+ +

Revision 29 - May 2, 2009

+

All supported image formats may now be used as menu icons. Currently it is necessary to specify "actual size" when setting the icon to preserve transparency on Windows Vista and later. For example:

+
Menu, Icon, MenuItemName, Filename.png,, 0
+ +

Revision 28 - May 2, 2009

+

Improved average-case performance of dynamic function calls by implementing binary search for function name look-ups. This change also applies to other areas, such as load-time resolution of function references in expressions and run-time resolution by OnMessage, RegisterCallback, etc.

+ +

Revision 27 - April 26, 2009

+

Updated from v1.0.48.00 to v1.0.48.02.

+ +

Revision 26 - April 11, 2009

+

Fixed: Menu icons were not drawn on items which have sub-menus if owner-drawing was in use.

+

Fixed: Menu icons were not freed if all menu items were deleted at once.

+

Changed (Source): Renamed AutoHotkey.sln to AutoHotkey_L.sln to allow VS window to be identified more easily.

+ +

Revision 25 - March 30, 2009

+

Fixed: Send {U+xxxx} correctly sets modifier key-state as with any normal key.

+

Fixed: Send {U+..xx} no longer triggers hotkey SCxx.

+ +

Revision 24 - March 30, 2009

+

Added: Support for Send {U+xxxx}. SendInput() is used where available for proper unicode support, otherwise falls back to Alt+Numpad.

+ +

Revision 23 - March 30, 2009

+

Fixed: GuiControl, Enable/Disable now only resets focus if the focused control was disabled.

+ +

Revision 22 - March 26, 2009

+

Optimized If var [not] in/contains MatchList, especially for long lists containing shorter fields.

+ +

Revision 21 - March 16, 2009

+

Minor optimizations to While. [thanks Chris]

+

Fixed (Debugger): Revisions 19 and 20 omitted timer threads from the call stack.

+

Fixed (Debugger): XML-reserved characters were not escaped in most situations.

+

Fixed (Debugger): Incorrect command and transaction_id were used in the final response before exiting the script.

+ +

Revision 20 - February 27, 2009

+

Changed: If an icon cannot be loaded with the new method, fall back to the old method.

+ +

Revision 19 - February 26, 2009

+

Added: Gui, Font, qN option to set font quality/control anti-aliasing, where N is between 0 and 5.

+

Fixed: IL_Add now loads icons at the most appropriate size when multiple sizes exist.

+

Merged with AutoHotkey v1.0.48, introducing bug fixes, optimizations and other changes by Chris. Some AutoHotkey_L features were integrated into the mainstream release; changes to these features since previous revisions are as follows:

+
    +
  • Legacy behaviour is no longer applied to While - e.g. "While %x%" is correctly interpreted as a double-deref rather than as "While x".
  • +
  • One-True-Brace style is now supported for While.
  • +
  • Static vars may now be declared and initialized in assume-static functions.
  • +
  • Passing too few parameters in a dynamic function call is no longer allowed, as it allows the function's caller to second-guess the function's designer, reduces the ability to detect script bugs at runtime, and may cause the application to crash if calling a built-in function.
  • +
+ +

Revision 18 - February 21, 2009

+

Fixed: Incomplete bug-fix in previous revision causing concat followed by assignment to skip the rest of the expression in some cases.

+ +

Revision 17 - February 20, 2009

+

Added: Menu icons via Icon and NoIcon sub-commands of the Menu command.

+

Changed: Negative icon numbers can now be used to indicate a resource ID within an executable.

+

Changed: Set default style of menus to include MNS_CHECKORBMP.

+

Changed: Load both small and large versions of custom tray icons to allow the correct icons to be shown in the appropriate places.

+

Fixed: Loading of icons from executable files at sizes other than the system small/large.

+ +

Revision 16 - February 4, 2009

+

Fixed: Deleting a menu item partially deleted its associated sub-menu.

+ +

Revision 15 - February 1, 2009

+

Fixed: SetFormat's presence in a *compiled* script was not disabling binary number write-caching. SetFormat should now work correctly in compiled scripts.

+ +

Revision 14 - February 1, 2009

+

Numerous bug-fixes and optimizations by Chris (pre-v1.0.48 beta).

+

Added: Support for regex callouts and the auto-callout option 'C'.

+

Changed: A_AhkVersion now includes the revision number. For instance, this is 1.0.47.07.L14.

+

Fixed: HWND's/window ID's were sign-extended to 64-bit. For instance, 0xb482057e became 0xffffffffb482057e.

+ +

Revision 13 - November 29, 2008

+

Fixed: Invalid DllCall types were treated as INT in some build environments.

+

Added: Workaround for GuiEscape issue when disabling focused control.

+

Changed version info: InternalName, ProductName and FileDescription are now "AutoHotkey_L" instead of "AutoHotkey".

+ +

Revision 12 - September 6, 2008

+

Fixed: Potential access violation when using property_get on a built-in variable. -- DBGP

+ +

Revision 11 - September 5, 2008

+

Fixed: Remove checksum from AutoHotkeySC.bin via post-build script (AutoHotkey must be installed).

+

Added: .L suffix to A_AhkVersion.

+

Added: Preliminary support for DBGp (interactive debugging).

+ +

Revision 10 - August 2, 2008

+

Fixed: WheelLeft/WheelRight support, which was broken in revision 9.

+ +

Revision 9 - July 29, 2008

+

Fixed: Allow Break/Continue in While.

+

Fixed: TrayTip in non-English Windows and possibly other side-effects of using Vista headers.

+ +

Revision 8 - July 27, 2008

+

Added: #IfTimeout directive to set the timeout for evaluation of #If expressions, in milliseconds. Default is 1000.

+

Added: Assume-static mode for functions. "Static" must precede any local/global variable declarations.

+

Added: One-true-brace support for While.

+

Changed: While now sets A_Index to the iteration about to begin.

+ +

Revision 7 - July 26, 2008

+

Added: IsFunc(FuncName) - Returns a non-zero number if FuncName exists in the script or as a built-in function.

+ +

Revision 5 - July 19, 2008

+

Cleaned up obsolete references to test scripts.

+

Added basic default test script.

+ +

Revision 4 - July 18, 2008

+

Added: #if (expression) - Similar to #IfWinActive, but for arbitrary expressions.

+

Added: WheelLeft, WheelRight - Support for WM_MOUSEHWHEEL, which was introduced with Windows Vista. (Requires Vista.)

+

Added: While, expression - Loop while a condition is true.

+

Added: A_IsPaused - True if the underlying thread is paused.

+

Added: A_IsCritical - True if the current thread has been marked uninterruptible by the "Critical" command.

+

Changed: Allow any number of parameters to be passed in dynamic function calls.

+

Fixed: Access Violation caused by WinGetClass and subclassed windows.

+

Fixed: Access Violation caused by empty dynamic function references.

+ +

 

+ + diff --git a/src/docs/AHKL_DBGPClients.htm b/src/docs/AHKL_DBGPClients.htm new file mode 100644 index 0000000..f5d3645 --- /dev/null +++ b/src/docs/AHKL_DBGPClients.htm @@ -0,0 +1,113 @@ + + +Debugging Features + + + + + + + +

µð¹ö°Å Ŭ¶óÀ̾ðÆ®

+ +

Ãß°¡ µð¹ö±ë Ư¡Àº DBGp¸¦ ÅëÇÏ¿© Áö¿øÇÕ´Ï´Ù. DBGp´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í »ç¿ëÀÚ »çÀÌÀÇ µð¹ö°Å UI Åë½ÅÀ» À§ÇÑ °øÅë µð¹ö°Å ÇÁ·ÎÅäÄÝÀÔ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ °ÍÀº »óÈ£´ëÈ­ µð¹ö±ëÀ» ÂüÁ¶ÇϽʽÿÀ. ¿ÀÅäÇÖÅ°¿Í ȣȯµÈ´Ù°í ¾Ë·ÁÁø "Ŭ¶óÀ̾ðÆ®"¸¦ ÀÌ ÆäÀÌÁö¿¡ ³ª¿­ ÇÕ´Ï´Ù.

+ +

SciTE4AutoHotkey

+

+SciTE4AutoHotkey´Â ¹«·áÀÇ, SciTE-±â¹ÝÀÇ AutoHotkey ½ºÅ©¸³Æ® ÆíÁý±âÀÔ´Ï´Ù. DBGp Áö¿ø ¿Ü¿¡µµ, ±¸¹® °­Á¶, ÄÝÆÁ/¸Å°³º¯¼ö Á¤º¸ ±×¸®°í ÀÚµ¿ ¿Ï¼º, ±×¸®°í ±âŸ À¯¿ëÇÑ ÆíÁý Ư¡°ú ½ºÅ©¸³Æà µµ±¸¸¦ Áö¿øÇÕ´Ï´Ù.

+ +

µð¹ö±ë Ư¡Àº ´ÙÀ½°ú °°½À´Ï´Ù:

+
    +
  • Á¤ÁöÁ¡ ¼³Á¤.
  • +
  • Run, Step Over/Into/Out.
  • +
  • È£Ãâ ½ºÅà º¸±â.
  • +
  • Àü¿ª/Áö¿ª ¿µ¿ª¿¡ ÀÖ´Â º¯¼öÀÇ À̸§°ú ³»¿ë º¸¿©ÁÖ±â.
  • +
  • º¯¼ö¿¡ ¸¶¿ì½º¸¦ ¿Ã¸®¸é ³»¿ëÀ» º¸¿©ÁÝ´Ï´Ù.
  • +
  • º¯¼ö ³»¿ë µé¿©´Ù º¸±â¿Í ÆíÁýÇϱâ.
  • +
  • °´Ã¼ÀÇ ±¸Á¶ º¸±â.
  • +
+

http://fincs.ahk4.net/scite4ahk/

+ +

XDebugClient

+

+XDebugClient´Â °£´ÜÇÑ ¿ÀÇ ¼Ò½º Àü¹æ DBGp Ŭ¶óÀ̾ðÆ®·Î¼­ .NET Framework 2.0¿¡ ±â¹ÝÇÏ°í ÀÖ½À´Ï´Ù. XDebugClient´Â ¿ø·¡ Xdebug·Î PHP¸¦ À§ÇØ ¼³°èµÇ¾úÁö¸¸, AutoHotkey¿Í ȣȯµÇµµ·Ï ¸ÂÃã ºôµå¸¦ ÇÏ¿´½À´Ï´Ù.

+

º¯°æ:

+
    +
  • µð¹ö°Å ¿£ÁøÀÌ "php" ¸»°í ´Ù¸¥ ¾ð¾î¸¦ º¸°íÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • +
  • AutoHotkey ±¸¹® °­Á¶°¡ Ãß°¡µÇ¾ú½À´Ï´Ù.
  • +
  • µð¹ö°Å ¿£ÁøÀ¸·ÎºÎÅÍÀÇ Á¢¼ÓÀ» ÀÚµ¿À¸·Î ±â´Ù¸³´Ï´Ù. »ç¿ëÀÚ°¡ Start ListeningÀ» Ŭ¸¯Çϱ⸦ ±â´Ù¸®Áö ¾Ê½À´Ï´Ù.
  • +
  • ù ¹ø° ³Î-¹®ÀÚ¿¡¼­ Ư¼º °ªµéÀ» Àß¶ó³» ¹ö¸³´Ï´Ù. ¿Ö³ÄÇÏ¸é ¿ÀÅäÇÖÅ°´Â ÇöÀç Àüü º¯¼öÀÇ ³»¿ëÀ» µ¹·ÁÁÖ°í ±×¸®°í XDebugClient´Â ÀÌÁø ³»¿ëÀ» º¸¿©ÁÙ¸¸ÇÑ ÀûÀýÇÑ ÀÎÅÍÆäÀ̽º°¡ ¾ø±â ¶§¹®ÀÔ´Ï´Ù.
  • +
+

³»·Á¹Þ±â: ÀÌÁøÆÄÀÏ; ¼Ò½º ÄÚµå (´ÙÀ½µµ ÂüÁ¶ SharpDevelop, Dockpanel ¸ðµë ±×¸®°í Advanced Treeview.)

+

»ç¿ë¹ý:

+
    +
  • XDebugClient¸¦ ±âµ¿ÇÑ´Ù.
  • +
  • AutoHotkey /Debug¸¦ ±âµ¿ÇÑ´Ù. XDebugClient´Â ÀÚµ¿À¸·Î ½ºÅ©¸³Æ® ÆÄÀÏÀ» ¿­¾îÁØ´Ù.
  • +
  • ¿ÞÂÊ ¿©¹éÀ» Ŭ¸¯ÇØ Àû¾îµµ ÇÑ °³ÀÇ Á¤ÁöÁ¡À» Ŭ¸¯ÇÑ´Ù.
  • +
  • RunÀ» Debug ¸Þ´º¿¡¼­ ¼±ÅÃÇϰųª, F5¸¦ ´©¸¥´Ù.
  • +
  • ½ÇÇàÀÌ Á¤ÁöÁ¡¿¡ µµ´ÞÇϸé, Debug ¸Þ´º³ª ´ÜÃàÅ°¸¦ »ç¿ëÇÏ¿© ´Ü°èº°·Î µð¹ö±ëÀ» Çϰųª ¾Æ´Ï¸é ½ºÅ©¸³Æ®¸¦ Àç°³ÇÑ´Ù.
  • +
+

Ư¡:

+
    +
  • ±¸¹® °­Á¶, ¼Ò½º ÄÚµå Àбâ Àü¿ë º¸±â.
  • +
  • Á¤ÁöÁ¡.
  • +
  • Run, Step Over/Into/Out.
  • +
  • È£Ãâ ½ºÅà º¸±â.
  • +
  • º¯¼ö °Ë»ç - º¯¼ö À̸§À» ¼±ÅÃ, ¿ìŬ¸¯, °Ë»ç.
  • +
+

¹®Á¦:

+
    +
  • ½ºÅ©¸³Æ®°¡ ½ÇÇà ÁßÀÎ µ¿¾È »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º°¡ »ç¿ëÀÚ ÀԷ¿¡ ÀÀ´äÇÏÁö ¾Ê´Â´Ù.
  • +
  • º¯¼ö¸¦ ³ª¿­Çϰųª °ªÀ» ¼³Á¤ÇÏ´Â ¸ÞÄ¿´ÏÁòÀ» Á¦°øÇÏÁö ¾Ê´Â´Ù.
  • +
+ +

Notepad++ DBGp Ç÷¯±×ÀÎ

+

+Notepad++ÀÇ Ç÷¯±×ÀÎÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Â DBGp Ŭ¶óÀ̾ðÆ®°¡ ÀÖ½À´Ï´Ù. PHP ¿ëÀ¸·Î µðÀÚÀεǾúÁö¸¸, AutoHotkey¿Íµµ Àß ÀÛµ¿ÇÕ´Ï´Ù.

+

³»·Á¹Þ±â: Notepad++ Ç÷¯±×ÀÎ µð·ºÅ丮¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

»ç¿ë¹ý:

+
    +
  • Notepad++À» ±âµ¿ÇÑ´Ù.
  • +
  • DBGp Ç÷¯±×ÀÎÀÇ È¯°æÀ» ±¸¼ºÇÑ´Ù: Plugins, DBGp, Config... +

    ÁÖÀÇ: ¹Ýµå½Ã File MappingÀ» ±¸¼ºÇØ¾ß ÇÑ´Ù. ´ëºÎºÐÀÇ »ç¿ëÀÚ´Â ¿ø°ÝÀ¸·Î µð¹ö±ëÇÏÁö ¾Ê´Â´Ù. ±×·¯¹Ç·Î ±×³É Bypass all mapping (local windows setup) ¿·¿¡ üũǥ½Ä¸¦ µÎ¸é µÈ´Ù.

    +
  • +
  • µµ±¸¹Ù³ª Plugins, DBGp, Debugger¸¦ ÅëÇÏ¿© µð¹ö°Å ÆÇÀ» º¸¿©ÁØ´Ù.
  • +
  • µð¹ö±×ÇÒ ½ºÅ©¸³Æ® ÆÄÀÏÀ» ¿¬´Ù.
  • +
  • Àû¾îµµ ÇϳªÀÇ Á¤ÁöÁ¡À» ¼³Á¤ÇÑ´Ù.
  • +
  • AutoHotkey /Debug¸¦ ±âµ¿ÇÑ´Ù.
  • +
  • µð¹ö°Å Åø¹Ù³ª ´ÜÃàÅ°¸¦ »ç¿ëÇØ µð¹ö°Å¸¦ Á¦¾îÇÑ´Ù.
  • +
+

Ư¡:

+
    +
  • »ç¿ëÀÚ°¡ ±¸¹® °­Á¶¸¦ ¼±ÅÃ
  • +
  • Á¤ÁöÁ¡.
  • +
  • Run, Step Over/Into/Out, Run to cursor, Stop.
  • +
  • Áö¿ª/Àü¿ª º¯¼ö º¸±â.
  • +
  • »ç¿ëÀÚ-ÁöÁ¤ º¯¼ö °¨½Ã.
  • +
  • È£Ãâ ½ºÅà º¸±â.
  • +
  • º¯¼ö¿¡ ¸¶¿ì½º¸¦ ¿Ã¸®¸é ³»¿ëÀ» º¸¿©ÁÜ.
  • +
  • »ç¿ëÀÚ-±¸¼º ´ÜÃà Å° - Settings, Shortcut Mapper..., Plugin commands.
  • +
+

¹®Á¦:

+
    +
  • ´ÜÀÏ ¹®ÀÚ º¯¼ö À̸§ À§¿¡ ¸¶¿ì½º¸¦ ¿Ã·Áµµ ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù. - ¿¹¸¦ µé¸é, "a"¿¡ ¿Ã¸®¸é " a" ¶Ç´Â "a "¸¦ ½ÃµµÇÕ´Ï´Ù.
  • +
  • ÅؽºÆ® À§¿¡ ¿Ã¸®¸é ±× ÅؽºÆ®¿¡ ¹«È¿ÇÑ ¹®ÀÚ°¡ µé¾î À־ »ó°üÇÏÁö ¾Ê°í º¯¼ö¸¦ ¿­¶÷ÇÏ·Á°í ½ÃµµÇÕ´Ï´Ù.
  • +
  • property_getÀÌ ½ÇÆÐÇϸé Notepad++°¡ ºÒ¾ÈÁ¤ÇØÁý´Ï´Ù. ÀÌ°ÍÀº À§ÀÇ »ç½Ç¿¡ ºñÃß¾î º¸¸é ƯÈ÷ ¹®Á¦°¡ µË´Ï´Ù. ¿ìȸåÀ¸·Î½á, AutoHotkey´Â Á¸ÀçÇÏÁö ¾Ê´Â ¶Ç´Â ¹«È¿ÇÑ º¯¼ö¸¦ ¿ä±¸¹ÞÀ¸¸é ¿¡·¯ ÄÚµå ´ë½Å¿¡ ºó Ư¼ºÀ» Àü¼ÛÇÕ´Ï´Ù.
  • +
+ +

½ºÅ©¸³Æ®-±â¹ÝÀÇ Å¬¶óÀ̾ðÆ®

+

½ºÅ©¸³Æ®-±â¹ÝÀÇ DBGp ¶óÀ̺귯¸®¿Í ¿¹Á¦ Ŭ¶óÀ̾ðÆ®´Â GitHub¿¡¼­ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.

    +
  • dbgp_console.ahk: °£´ÜÇÑ ¸í·É¾î Á٠Ŭ¶óÀ̾ðÆ®.
  • +
  • dbgp_test.ahk: ºñµ¿±âÀû µð¹ö±ë µ¥¸ð.
  • +
  • dbgp_listvars.ahk: ½ÇÇà ÁßÀÎ ¸ðµç ½ºÅ©¸³Æ®ÀÇ °ªÀ» ³ª¿­ÇØ º¸¿©ÁÖ´Â ¿¹Á¦ Ŭ¶óÀ̾ðÆ®.
  • +
+

GitHub: Lexikos / dbgp

+ +

¸í·É Á٠Ŭ¶óÀ̾ðÆ®

+

¸í·É Á٠Ŭ¶óÀ̾ðÆ®´Â xdebug.org¿¡¼­ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸ ÀÌ°ÍÀº ´ëºÎºÐÀÇ »ç¿ëÀÚ¿¡°Ô ¾Ë¸ÂÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇϸé DBGp (ÇÁ·ÎÅäÄÝ)¸¦ ±íÀÌ ÀÌÇØÇϱ⸦ ¿ä±¸Çϱ⠶§¹®ÀÔ´Ï´Ù.

+ +

±âŸ

+

¼ö ¸¹Àº DBGp Ŭ¶óÀ̾ðÆ®°¡ ÀÖÁö¸¸, AutoHotkey¿Í Å×½ºÆ®ÇØ º¸Áö ¾Ê¾Ò½À´Ï´Ù. ÀÚ¼¼ÇÑ ¸ñ·ÏÀº Xdebug: ¹®¼­¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ + + diff --git a/src/docs/AHKL_Features.htm b/src/docs/AHKL_Features.htm new file mode 100644 index 0000000..bef8bbc --- /dev/null +++ b/src/docs/AHKL_Features.htm @@ -0,0 +1,176 @@ + + +AutoHotkey_L New Features + + + + + +

AutoHotkey_L New Features

+ +

ÀÌ ¹®¼­´Â AutoHotkey_L ºÐ±â¿¡ Ãß°¡µÈ Ư¡À» ±â¼úÇÕ´Ï´Ù. ÀÌ ºÐ±â´Â Áö±ÝÀº °£´ÜÇÏ°Ô "AutoHotkey 1.1"¶ó°í ºÎ¸¨´Ï´Ù.

+

ÁÖÀÇ: ÀÌ ¹®¼­´Â ¸î ³â°£ ¹æÄ¡µÇ¾î ¿ÔÀ¸¸ç ÃÖ±ÙÀÇ º¯È­·Î ¾ø¾îÁö°Å³ª ´õ Ãß°¡µÈ °ÍÀÌ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Á¦¾î È帧 
Break LoopLabel³»Æ÷ ȸµ¹À̷κÎÅÍ ±íÀÌ¿¡ »ó°ü¾øÀÌ ºüÁ® ³ª¿É´Ï´Ù.
Continue LoopLabelȸµ¹À̸¦ °è¼ÓÇÕ´Ï´Ù. ±íÀÌ¿¡ »ó°üÀÌ ¾ø½À´Ï´Ù.
For x,y in z°´Ã¼ÀÇ ³»¿ëÀ» ȸµ¹ÀÌÇÕ´Ï´Ù.
Loop UntilÁ¶°ÇÀÌ ÂüÀÎ µ¿¾È ȸµ¹ÀÌ ÇÕ´Ï´Ù. ¾î¶² Á¾·ùÀÇ È¸µ¹ÀÌ¿¡µµ Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
Try...Catch...Finally±¸Á¶È­ µÈ ¿¹¿Ü 󸮸¦ Á¦°øÇÕ´Ï´Ù.
Throw¿¹¿Ü¸¦ ´øÁý´Ï´Ù.
¸í·É¾î 
FileEncoding±âº» ÀÎÄÚµùÀ» ¼³Á¤ÇÕ´Ï´Ù: FileRead, FileReadLine, Loop Read, FileAppend, ±×¸®°í FileOpen.
´ÙÀ½ ÂüÁ¶: ÅؽºÆ® ÀÎÄÚµù
Gui¾Æ·¡ÀÇ GUI °³¼±À» ÂüÁ¶ÇϽʽÿÀ.
IniRead/Write/DeleteÀüü ¼½¼ÇÀ» Àаí, ¾²°í, Áö¿ó´Ï´Ù. ¶Ç´Â ¸ðµç ¼½¼Ç À̸§ ¸ñ·ÏÀ» ¿­¶÷ÇÕ´Ï´Ù.
Menu, Icon¸Þ´º ¾ÆÀÌÅÛÀÇ ¾ÆÀÌÄÜÀ» ¼³Á¤Çϰųª Á¦°ÅÇÕ´Ï´Ù.
Run¸Å°³º¯¼ö¸¦ Çؼ®Çϵµ·Ï °³¼±µÇ¾ú½À´Ï´Ù.
SendInput {U+nnnn}À¯´ÏÄÚµå ¹®ÀÚ¸¦ Àü¼ÛÇÕ´Ï´Ù. À¯´ÏÄÚµå ¹®ÀÚ´Â À¯´ÏÄÚµå ºôµå¿¡¼­ Á÷Á¢ÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
SendLevelÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀÌ ¹«½ÃÇÒ ÀÎÀ§ÀûÀÎ Å°º¸µå À̺¥Æ®¿Í ¸¶¿ì½º À̺¥Æ®¸¦ Á¦¾îÇÕ´Ï´Ù.
SetFormat, IntegerFast, h|H¼Ò¹®ÀÚ³ª ´ë¹®ÀÚ·Î ½ÊÀ°Áø ¼öÀÇ Çü½ÄÀ» ¼³Á¤ÇÕ´Ï´Ù.
SetRegView, RegView·¹Áö½ºÆ®¸® ¸í·É¾î°¡ 32-ºñÆ® ½ºÅ©¸³Æ®¿¡¼­ 64-ºñÆ® ·¹Áö½ºÆ®¸® ºä¿¡ ¶Ç´Â ±× ¹Ý´ë·Î Á¢±ÙÇϵµ·Ï ÇØ ÁÝ´Ï´Ù.
Transform, HTMLÄÚµå ÆäÀÌÁö³ª HTML º¯È¯À» ¼öÇàÇÕ´Ï´Ù.
WinGet, ..., ProcessPathÁÖ¾îÁø âÀ» ¼ÒÀ¯ÇÑ ÇÁ·Î¼¼½ºÀÇ À̸§°ú Àüü °æ·Î¸¦ ¿­¶÷ÇÕ´Ï´Ù.
Áö½Ã¾î 
#If expression#IfWinActive¿Í ºñ½ÁÇÏÁö¸¸, ¾î¶² Ç¥Çö½Ä¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
#IfTimeout#If Ç¥Çö½Ä Çϳª¸¦ Æò°¡ÇÏ´Â µ¥ ¼ÒºñµÉ ÃÖ´ë ½Ã°£À» ¼³Á¤ÇÕ´Ï´Ù.
#MenuMaskKeyWin À̺¥Æ®³ª Alt Å°¶À À̺¥Æ®¸¦ ¸¶½ºÅ©Çϱâ À§ÇØ »ç¿ëµÉ Å°¸¦ º¯°æÇÕ´Ï´Ù.
#Include <Lib>½ºÅ©¸³Æ® ÆÄÀÏÀ» ÇÔ¼ö ¶óÀ̺귯¸® Æú´õ·ÎºÎÅÍ Æ÷ÇÔÇÕ´Ï´Ù.
#InputLevelÇÖ½ºÆ®¸µ°ú ÇÖÅ°°¡ ¹«½ÃÇÒ Å°º¸µå À̺¥Æ®¿Í ¸¶¿ì½º À̺¥Æ®¸¦ Á¦¾îÇÕ´Ï´Ù.
#Warn¼±ÅÃµÈ Á¶°Ç¿¡ ´ëÇÏ¿© °æ°í¸¦ ÄÑ°í ²ü´Ï´Ù. ÀÌ ¿¡·¯´Â °³¹ßÀÚ ¿¡·¯¸¦ °¡¸®Åµ´Ï´Ù.
ÇÔ¼ö 
ComObj... --
ComObjActive
ComObjEnwrap/Unwrap
ComObjParameter
ComObjType

µî·ÏµÈ COM °´Ã¼¸¦ ¿­¶÷ÇÕ´Ï´Ù.
COM °´Ã¼¸¦ Æ÷ÀåÇϰųª/DZ´Ï´Ù.
¸Å°³º¯¼ö·Î °Ç³Ú °ª°ú À¯ÇüÀ» Æ÷ÀåÇÕ´Ï´Ù.
COM °´Ã¼ÀÇ À¯Çü Á¤º¸¸¦ ¿­¶÷ÇÕ´Ï´Ù.
ComObjArrayCOM¿¡ »ç¿ëÇϱâ À§ÇØ SAFEARRAY¸¦ »ý¼ºÇÕ´Ï´Ù.
ComObjConnectCOM °´Ã¼ÀÇ À̺¥Æ®¸¦ ÁÖ¾îÁø Á¢µÎ»ç¸¦ °¡Áø ÇÔ¼ö¿¡ ¿¬°áÇÕ´Ï´Ù.
ComObjCreateCOM °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù.
ComObjErrorCOM ¿¡·¯ÀÇ °íÁö¸¦ ÄÑ°í ²ü´Ï´Ù.
ComObjFlagsCOM Æ÷Àå °´Ã¼ÀÇ ÇàÀ§¸¦ Á¦¾îÇÏ´Â Ç÷¡±×¸¦ ¿­¶÷Çϰųª º¯°æÇÕ´Ï´Ù.
ComObjGetCOM ÄÞÆ÷³ÍÆ®°¡ Á¦°øÇÏ´Â °´Ã¼ ÁÖ¼Ò¸¦ µ¹·ÁÁÝ´Ï´Ù.
ComObjQueryCOM °´Ã¼¿¡ ÀÎÅÍÆäÀ̽º ¶Ç´Â ¼­ºñ½º¸¦ ÁúÀÇÇÕ´Ï´Ù.
ComObjTypeÀ¯Çü Á¤º¸¸¦ COM °´Ã¼·ÎºÎÅÍ ¿­¶÷ÇÕ´Ï´Ù.
ComObjValueCOM Æ÷Àå °´Ã¼¿¡ ÀúÀåµÈ °ªÀ̳ª Æ÷ÀÎÅ͸¦ ¿­¶÷ÇÕ´Ï´Ù.
ExceptionThrow¿¡ ´ëÇÏ¿© ¿¹¿Ü °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù (È£Ãâ ½ºÅÿ¡ Á¦ÇÑÀûÀ¸·Î Á¢±ÙÀ» Á¦°øÇÕ´Ï´Ù).
FileOpen°´Ã¼-ÁöÇâÀû ÆÄÀÏ ÀÔ/Ãâ·ÂÀ» Á¦°øÇÕ´Ï´Ù.
FuncÇÔ¼ö¸¦ °¡¸®Å°´Â ÂüÁ¶¸¦ ¿­¶÷ÇÕ´Ï´Ù.
GetKeyName/VK/SCÅ°ÀÇ °¡»ó Å° Äڵ峪 ½ºÄµ ÄÚµå ¶Ç´Â ÅؽºÆ®³ª À̸§À» ¿­¶÷ÇÕ´Ï´Ù.
InStr ¿ÞÂÊÀ̳ª ¿À¸¥ÂÊÀ¸·ÎºÎÅÍ ÁÖ¾îÁø ¹®ÀÚ¿­ÀÌ ³ªÅ¸³ª´ÂÁö °Ë»öÇÕ´Ï´Ù.
IsByRefByRef ¸Å°³º¯¼ö¿¡ º¯¼ö°¡ Á¦°øµÇ´ÂÁö °áÁ¤ÇÕ´Ï´Ù.
IsObject°ªÀÌ °´Ã¼ÀÎÁö °áÁ¤ÇÕ´Ï´Ù.
StrPut / StrGet¹®ÀÚ¿­À» ¸Þ¸ð¸®¿¡ ¶Ç´Â ¸Þ·Î¸®·ÎºÎÅÍ º¹»çÇÕ´Ï´Ù. ¼±ÅÃÀûÀ¸·Î ÄÚµå ÆäÀÌÁö »çÀÌ¿¡ º¯È¯ÇÕ´Ï´Ù.
Trim¹®ÀÚ¿­ÀÇ Ã³À½°ú ³¡À¸·ÎºÎÅÍ ¾î¶² ¹®ÀÚµéÀ» °È¾î³À´Ï´Ù.
RegEx (?CNum:Func)regex ÆÐÅÏÀ» Æò°¡ÇÏ´Â µ¿¾È ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù.
ÇÔ¼ö ¶óÀ̺귯¸®»õ·Î¿î "Áö¿ª ¶óÀ̺귯¸®" ±×¸®°í #Include <LibName>.
°¡º¯ ÇÔ¼öÇÔ¼ö´Â ¹è¿­À» ÅëÇÏ¿© °¡º¯ °³¼öÀÇ ¸Å°³º¯¼ö¸¦ ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù.
Á¤Àû ÃʱâÈ­ÀÚÁ¤Àû º¯¼ö´Â ÀÌÁ¦ ¾î¶² Ç¥Çö½ÄÀ¸·Îµµ ÃʱâÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù.
°´Ã¼ 
ÀϹÝÀϹÝÀûÀÎ °´Ã¼ÀÇ »ç¿ë¹ý°ú ÇàÀ§.
°´Ã¼´Ù¸¥ ±â´ÉÀ¸·Î È®ÀåÇÒ ¼ö ÀÖ´Â ¿¬°ü ¹è¿­.
¿­°ÅÀÚÁý´Ü ¾ÈÀÇ Ç׸ñÀ» ¿­°ÅÇÕ´Ï´Ù.
ÆÄÀÏÆÄÀÏ¿¡ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÕ´Ï´Ù. FileOpenÀº ÀÌ À¯ÇüÀÇ °´Ã¼¸¦ µ¹·ÁÁÝ´Ï´Ù.
ÇÔ¼ö½ºÅ©¸³Æ®°¡ È£ÃâÇÒ ¼ö ÀÖ´Â »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö ¶Ç´Â ³»Àå ÇÔ¼ö¸¦ °¡¸®Åµ´Ï´Ù.
ComObjectÀ§ÀÇ ComObj ÇÔ¼ö¸¦ ÂüÁ¶ÇϽʽÿÀ.
º¯¼ö 
A_Is64bitOSOS°¡ 64-ºñÆ®À̸é 1 (true)ÀÌ, 32-ºñÆ®À̸é 0 (false)ÀÌ ´ã±é´Ï´Ù.
A_IsUnicodeÀ¯´ÏÄÚµå ºôµå¿¡¼­ À̺¯¼ö´Â 1 (true)ÀÌ ´ã±é´Ï´Ù. ANSI ºôµå´Â Á¤ÀǵǾî ÀÖÁö ¾Ê½À´Ï´Ù. ±×·¡¼­ ±× È¿°ú»ó °ÅÁþ(false)ÀÔ´Ï´Ù.
A_FileEncoding´Ù¾çÇÑ ¸í·É¾î¿¡ ´ëÇÏ¿© ±âº» ÀÎÄÚµùÀ» ´ã°í ÀÖ½À´Ï´Ù; FileEncodingÀ» ÂüÁ¶ÇϽʽÿÀ.
A_OSVersionWindows 7°ú Windows 8À» Áö¿øÇÕ´Ï´Ù; A_OSVersionÀ» ÂüÁ¶ÇϽʽÿÀ.
A_PriorKey°¡Àå ÃÖ±Ù¿¡ Å°-´©¸§À̳ª Å°-¶À ¹Ù·Î Àü¿¡ ¸¶Áö¸·À¸·Î ´­·ÁÁø Å°ÀÇ À̸§ ... (ÀÚ¼¼ÇÑ °ÍÀº ¿©±â¸¦ ÂüÁ¶)
A_PtrSize¹ÙÀÌÆ® ´ÜÀ§·Î Æ÷ÀÎÅÍÀÇ Å©±â°¡ ´ã±é´Ï´Ù. ÀÌ°ÍÀº 4 (32-bit) ¶Ç´Â 8 (64-bit)ÀÔ´Ï´Ù.
A_RegViewSetRegView°¡ ¼³Á¤ÇÑ ÇöÀç ·¹Áö½ºÆ®¸® ºä.
A_ScriptHwnd½ºÅ©¸³Æ®ÀÇ ¼ûÀº ¸ÞÀΠâÀÇ À¯ÀÏÇÑ ID (HWND/ÇÚµé).
µ¥ÀÌÅÍÀ¯Çü 
Ptr32-ºñÆ® ºôµå¿¡¼­ Int¿Í µ¿µîÇÏ°í 64-ºñÆ® ºôµå¿¡¼­´Â Int64°ú µ¿µîÇÕ´Ï´Ù. DllCall, NumPut ±×¸®°í NumGetÀÌ Áö¿øÇÕ´Ï´Ù.
AStr, WStrDllCall¸¸ Áö¿øÇÕ´Ï´Ù; ½ºÅ©¸³Æ® ȣȯ¼º ÂüÁ¶.
À¯´ÏÄÚµå 
ȣȯ¼ºDllCall µîµî¿¡¼­ À¯´ÏÄڵ带 ´Ù·ç´Â ¹ý
½ºÅ©¸³Æ® ÆÄÀϽºÅ©¸³Æ® ÆÄÀÏ¿¡ À¯´ÏÄÚµå »ç¿ëÇϱâ.
SendInputSendInput¿¡ À¯´ÏÄÚµå »ç¿ëÇϱâ.
±âŸ 
ahk_exeâÀ» ¼ÒÀ¯ÇÏ°í ÀÖ´Â ÇÁ·Î¼¼½º (EXE ÆÄÀÏ)ÀÇ °æ·Î³ª À̸§À¸·Î âÀ» ½Äº°ÇÒ ¼ö ÀÖ½À´Ï´Ù.
µð¹ö±ë»óÈ£´ëÈ­ µð¹ö±ë Ư¡ (ÁÙ ´ÜÀ§·Î ½ÇÇà µîµî.).
¿¡·¯ ó¸®Try/catch/throw ±×¸®°í A_LastErrorÀÇ À¯¿ë¼º Áõ°¡.
GUI °³¼±Gui °ü·Ã ¸í·É¾î¸¦ °³¼±.
¾ÆÀÌÄÜ Áö¿øÀÚ¿ø ½Äº°ÀÚ Áö¿ø ±×¸®°í ´Ù¾çÇÑ ¾ÆÀÌÄÜ Å©±â Áö¿ø °³¼±.
±âŸ º¯°æ½ºÅ©¸³Æ®ÀÇ È£È¯¼º¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â º¯°æµé.
¹öÀü ÀÌ·ÂAutoHotkey_L °³Á¤ÆÇ ÀÌ·Â.
+ + +

¿¡·¯ ó¸®

+

+¿¡·¯ 󸮸¦ À§ÇØ ¸¹Àº ¸í·É¾î°¡ ErrorLevel ´ë½Å¿¡ try/catchÀÇ »ç¿ëÀ» Áö¿øÇÕ´Ï´Ù:

+
try
+{
+    FileCopy, file1.txt, C:\folder
+    FileDelete, C:\folder\old.txt
+}
+catch
+    MsgBox ¿¡·¯°¡ ÀϾ½À´Ï´Ù!
+

+Ãß°¡·Î, ´ÙÀ½ ¸í·É¾î´Â ÀÌÁ¦ A_LastError¸¦ ¼³Á¤ÇØ µð¹ö±ëÀ» µ½½À´Ï´Ù: FileAppend, FileRead, FileReadLine, FileDelete, FileCopy, FileMove, FileGetAttrib/Time/Size/Version, FileSetAttrib/Time, FileCreateDir, RegRead, RegWrite, RegDelete.

+ +

ÇÔ¼ö ¶óÀ̺귯¸®

+

+%A_MyDocuments%\AutoHotkey\LibÀÇ »ç¿ëÀÚ ¶óÀ̺귯¸®¿Í AutoHotkey µð·ºÅ丮ÀÇ Ç¥ÁØ ¶óÀ̺귯¸® ¸»°íµµ, %A_ScriptDir%\Lib¿¡ À§Ä¡ÇÏ´Â "Áö¿ª ¶óÀ̺귯¸®"·ÎºÎÅÍ ÇÔ¼ö¸¦ ÀÚµ¿ »ðÀÔÇÒ ¼ö ÀÖ½À´Ï´Ù. + +´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ÇÔ¼ö ¶óÀ̺귯¸®¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

#Include <LibName>´Â ÇÔ¼ö ¶óÀ̺귯¸® Áß Çϳª¿¡ À§Ä¡ÇÑ ¶óÀ̺귯¸® ÆÄÀÏÀ» ¸í½ÃÀûÀ¸·Î Æ÷ÇÔÇÕ´Ï´Ù.

+ +

GUI °³¼±

+

Gui ¸í·É¿Í ±âŸ °ü·ÃµÈ Ç׸ñ¿¡ ¼ö ¸¹Àº °³¼±ÀÌ ÀÌ·ç¾îÁ³½À´Ï´Ù:

+
    +
  • GUI¸¦ °¡¸®Å³ ¶§ 1ºÎÅÍ 99 »çÀÌÀÇ ¼ýÀÚ ´ë½Å¿¡ À̸§À̳ª HWND¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • +
  • Gui, New´Â À͸íÀÇ GUI¸¦ »õ·Î ¸¸µì´Ï´Ù.
  • +
  • ¾ó¸¶µçÁö ÀÍ¸í ¶Ç´Â ½Ç¸íÀ¸·Î GUI¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • +
  • »õ·Î¿î GUI ¿É¼Ç: +HwndOutputVar, +ParentGUI
  • +
  • ¾î¶² âÀ̵ç GUIÀÇ ¼ÒÀ¯ÀÚ°¡ µÉ ¼ö ÀÖ½À´Ï´Ù: +Owner%HWND%.
  • +
  • Gui, Font´Â ÅؽºÆ®ÀÇ ¾ÈƼ-¾Ù¸®¾î½ÌÀ» Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • +
  • ÀÎÅÍ³Ý ÀͽºÇ÷η¯ °°Àº ActiveX ÄÜÆ®·ÑÀ» Áö¿øÇÕ´Ï´Ù.
  • +
  • GuiControlGet, OutputVar, Name Àº GUI ÄÜÆ®¸¦¿¡ ¿¬°üµÈ º¯¼öÀÇ À̸§À» ¾ò½À´Ï´Ù.
  • +
  • Gui ¸Þ´º¿¡ »ç¿ëµÉ ¶§ Ctrl+O¿Í °°Àº Å°º¸µå °¡¼ÓÅ°¸¦ ÀÚµ¿À¸·Î Áö¿øÇÕ´Ï´Ù.
  • +
  • ±Û²Ã Ç°ÁúÀº Font ºÎ-¸í·É¾î·Î Á¦¾îÇÕ´Ï´Ù.
  • +
+ +

Á¤Àû º¯¼ö

+

Á¤Àû º¯¼ö´Â ÀÌÁ¦ ¾î¶² Ç¥Çö½ÄÀ¸·Îµµ ÃʱâÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
Sleep 500
+MsgBox % Time() "ms since the script started."
+Time() {
+    static Tick := A_TickCount
+    return A_TickCount - Tick
+}
+ +

ÅؽºÆ® ÀÎÄÚµù

+

FileRead, FileReadLine, Loop Read ±×¸®°í FileAppend´Â À©µµ¿ìÁî°¡ Áö¿øÇÏ´Â ÅؽºÆ® ÀÎÄÚµùÀ» ´ëºÎºÐ Áö¿øÇÕ´Ï´Ù. ´Ü, ½Ã½ºÅÛÀÇ ±âº» ANSI ÄÚµå ÆäÀÌÁö´Â Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. FileEncodingÀ» »ç¿ëÇÏ¸é ±âº» ÀÎÄÚµùÀ» ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½°ú °°ÀÌ FileRead¿Í FileAppend¸¦ ¿À¹ö¶óÀ̵å ÇÕ´Ï´Ù:

+
FileRead, OutputVar, *Pnnn Filename
+FileAppend [, Text, Filename, Encoding]
+

+nnn´Â ¼ýÄ¡ ÄÚµå ÆäÀÌÁö ½Äº°ÀÚ°¡ µÇ¾î¾ß Çϸç, EncodingÀº FileEncoding°ú °°Àº Çü½ÄÀ» µû¶ó¾ß ÇÕ´Ï´Ù.

+

´ÙÀ½µµ ÂüÁ¶ÇϽʽÿÀ: ½ºÅ©¸³Æ® ȣȯ¼º

+ +

°¡º¯ ÇÔ¼ö ±×¸®°í °¡º¯ ÇÔ¼ö-È£Ãâ

+

°¡º¯ ÇÔ¼ö´Â ¹è¿­À» ÅëÇÏ¿© °¡º¯ °³¼öÀÇ ÀÎÀÚ¸¦ ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. ¹Ý¸é¿¡, °¡º¯ ÇÔ¼ö-È£ÃâÀ» »ç¿ëÇÏ¸é °¡º¯ °³¼öÀÇ ¸Å°³º¯¼ö¸¦ ÇÔ¼ö¿¡ °Ç³Ú ¼ö ÀÖ½À´Ï´Ù.

+ + +

¾ÆÀÌÄÜ Áö¿ø °³¼±

+ +

ºñÁ¤»óÀûÀÎ Å©±â

+

+Å©±â¿¡ »ó°ü¾øÀÌ ¿î¿µÃ¼Á¦°¡ Áö¿øÇÏ´Â ¾ÆÀÌÄÜ ÀÚ¿øÀÌ¸é ¾ó¸¶µçÁö ½ÇÇàÆÄÀϷκÎÅÍ ÃßÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾ÆÀÌÄÜ ±×·ì¿¡ ¿©·¯ Å©±âÀÇ ¾ÆÀÌÄÜ ÀÚ¿øÀÌ Á¸ÀçÇϸé, °¡Àå ÀûÀýÇÑ Å©±â°¡ »ç¿ëµË´Ï´Ù. 17 ÀÌÀü ¹öÀü¿¡¼­´Â ÀÓÀÇÀÇ ¾ÆÀÌÄÜ ÀÚ¿øÀ» ¿î¿µÃ¼Á¦°¡ ¼±ÅÃÇØ ÁÖ¾ú°í, ½Ã½ºÅÛ Å©±âÀÇ ¾ÆÀÌÄÜÀ¸·Î È®´ëµÇ¾ú´Ù°¡, ´Ù½Ã ¿äûÇÑ Å©±â·Î º¯°æµÇ¾ú½À´Ï´Ù.

+ +

ÀÚ¿ø ½Äº°ÀÚ

+

+À½¼öÀÇ ¾ÆÀÌÄÜ ¹øÈ£¸¦ »ç¿ëÇÏ¸é ½ÇÇà ÆÄÀÏ ¾È¿¡¼­ ±×·ì ¾ÆÀÌÄÜÀ» ½Äº°ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½Àº Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» ahk ÆÄÀÏÀÌ »ç¿ëÇÒ ±âº» ¾ÆÀÌÄÜÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù:

+
Menu, Tray, Icon, %A_AhkPath%, -160
+ + diff --git a/src/docs/AutoHotkey.htm b/src/docs/AutoHotkey.htm new file mode 100644 index 0000000..c47365f --- /dev/null +++ b/src/docs/AutoHotkey.htm @@ -0,0 +1,64 @@ + + +AutoHotkey + + + + + + + + +

Version v1.1.22.07

+

http://ahkscript.org

+

©2003-2014 Chris Mallett, portions ©AutoIt Team and the AHK community

+

ÇѱÛÆÇ johjnsonj 151111

+

Software License: GNU General Public License

+ +

Áß¿äÇÑ °íÁö »çÇ×

+

AutoHotkey 1.0°ú AutoHotkey 1.1 »çÀÌÀÇ ±Ùº»ÀûÀÎ Â÷ÀÌ ¶§¹®¿¡ (ƯÈ÷ À¯´ÏÄÚµå¿Í x64 ½ÇÇàÆÄÀÏ¿¡¼­), +AutoHotkey 1.0À¸·Î ÀÛ¼ºµÈ ½ºÅ©¸³Æ®´Â AutoHotkey 1.1 À§¿¡¼­ ¿¹»ó´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. +¾Ë·ÁÁø ȣȯ¼º ¹®Á¦¿Í ÇØ°áÃ¥¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ´ÙÀ½ ¸µÅ©¸¦ ÂüÁ¶ÇϽʽÿÀ:

+ + +

ºü¸¥ ÂüÁ¶

+

񃧯:

+ +

Å°º¸µå¿Í ¸¶¿ì½º:

+ +

±âŸ:

+ + +

°¨»çÀÇ ¸»

+

Á¶³ª´Ü º£³×Æ®(Jonathan Bennett)¿¡°Ô ƯÈ÷ °¨»çµå¸³´Ï´Ù. ±×´Â ³ÐÀº ¸¶À½À¸·Î AutoIt v2¸¦ 1999³â¿¡ ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î·Î ¹èÆ÷ÇØ Áּ̽À´Ï´Ù. ±× ´öºÐ¿¡ ÇÊÀÚ´Â ¿µ°¨À» ¹Þ¾Ò°í º»ÀÎÀº ¹°·Ð ¼¼»óÀÇ ¸ðµç »ç¶÷µéÀº ½Ã°£À» Àý¾àÇÏ°Ô µÇ¾ú½À´Ï´Ù. °Ô´Ù°¡, ¿ÀÅäÇÖÅ°ÀÇ °³¼± »çÇ×µéÀ» AutoIt v2 ¸í·É¾î ¼¼Æ®¿¡ Àû¿ëÇØ Áּ̰í, »Ó¸¸ ¾Æ´Ï¶ó Window Spy ±×¸®°í ¿¹Àü ½ºÅ©¸³Æ® ÄÄÆÄÀÏ·¯¸¦ AutoIt v3 ¼Ò½º ÄÚµå·ÎºÎÅÍ Á÷Á¢ Àû¿ëÇØ Áּ˽À´Ï´Ù. ±×·¡¼­ Á¸°ú ±×ÀÇ AutoIt ÀúÀڵ鿡°Ôµµ °¨»çÀÇ ¸»¾¸À» ÀüÇÏ´Â ¹ÙÀÔ´Ï´Ù.
+
+¸¶Áö¸·À¸·Î, AutoHotkey´Â ¿À´Ã³¯ ÀÌ ºÐµéÀÌ ¾ø¾ú´Ù¸é Á¸ÀçÇÏÁö ¸øÇßÀ» °ÍÀÔ´Ï´Ù.
+
+~ Chris Mallett(Å©¸®½º ¸Ö¸´)

+ + diff --git a/src/docs/ChangeLogHelp.htm b/src/docs/ChangeLogHelp.htm new file mode 100644 index 0000000..6ad1c18 --- /dev/null +++ b/src/docs/ChangeLogHelp.htm @@ -0,0 +1,234 @@ + + +Archived Changes + + + + + + + +

º¯°æ ±â·Ï º¸°ü¼Ò

+

ÀÌ ¹®¼­´Â Å©¸®½º ¸Ö¸´(Chris Mallett)ÀÌ ÁÖµµÇÑ ¿ø·¡ÀÇ ¿ÀÅäÇÖÅ° °³¹ß ºÐ±âÀÇ º¯°æ ÀÌ·ÂÀ» ´ã°í ÀÖ½À´Ï´Ù.

+

»õ·Î¿î º¯°æ ±â·ÏÀº º¯°æ »çÇ× & »õ·Î¿î Ư¡À» Âü°íÇϽʽÿÀ.

+

1.0.48.05 - September 25, 2009

+

Fixed crash of SendMessage and PostMessage when wParam or lParam is omitted (broken by 1.0.48.04). [thanks Lexikos]

+

1.0.48.04 - September 25, 2009

+

Fixed StringSplit to work properly inside functions of compiled scripts (broken by 1.0.35.01). [thanks engunneer & Lexikos]

+

Fixed SendPlay not to wait for the release of the Windows key prior to sending an "L" keystroke (broken by 1.0.48.01). [thanks Lexikos]

+

Fixed A_EndChar to be valid when the B0 option is present, and to be empty when there is no ending character (broken by 1.0.44.09). [thanks Al2000]

+

Fixed FormatTime to yield a valid time of day even when the specified month is out-of-range (broken by 1.0.48.00). [thanks silveredge78]

+

Fixed FileCreateDir to support a leading backslash even when it is the only backslash; e.g. \dir. [thanks jaco0646]

+

Fixed GuiControl/GuiControlGet/Gui/SendMessage to work reliably even when they trigger a callback or OnMessage function. [thanks Lexikos]

+

Fixed RegExMatch() not to produce too few replacements when an empty-string match is followed by a non-empty-string match.

+

Changed While() to be recognized as a loop rather than a function. [thanks Crash&Burn]

+

Improved UrlDownloadToFile to support FTP and Gopher. [thanks Lexikos]

+

Improved the stdout/asterisk mode of FileAppend to write immediately rather than lazily to standard output. [thanks Lexikos]

+

Added full support for if % expression. [thanks kenomby]

+

1.0.48.03 - May 3, 2009

+

Fixed ListLines On not to erase the most recent log entry in the line history. [thanks Lexikos]

+

Fixed ListView to respond properly to mouse dragging when timers are running. [thanks Solar]

+

Fixed key-up hotkeys so that if one is created while its key is being held down, the release of the key doesn't trigger the wrong hotkey. [thanks Peter & engunneer]

+

1.0.48.02 - April 19, 2009

+

Changed and fixed Gosub and GroupActivate so that when a function calls an external/public subroutine, that subroutine will treat all dynamic variables as globals, and will have outside-of-function GUI behavior. [thanks kenomby & Lexikos]

+

Improved performance of True/False/A_EventInfo in expressions by treating them as integers vs. strings.

+

1.0.48.01 - April 15, 2009

+

Changed: For Windows Vista and later, hotkeys that include the Windows key (e.g. #a) will wait for LWin and RWin to be released before sending any text containing an "L" keystroke. This prevents such a hotkey from locking the PC. This behavior applies to all sending modes except SendPlay (which doesn't need it) and blind mode.

+

Fixed A_LoopFileExt to be blank for any filename having no extension but a period in its pathname. [thanks Yek-Toho-Tua].

+

Fixed the assignment of integers that are 19 or 20 characters long to work as they did prior to v1.0.48. [thanks Laszlo & Lexikos]

+

Fixed function definitions to work properly inside a block. [thanks rmarko]

+

Improved performance of A_Index in expressions by treating it as an integer rather than a string.

+

Improved performance of if var [not] in/contains. [developed by Lexikos]

+

Improved ListLines with an option to turn line-logging Off or On. [thanks kenomby & ruespe]

+

1.0.48 - February 25, 2009

+

Compatibility: The change most likely to affect backward compatibility is that floating point numbers stored in variables now have higher precision. Scripts that rely on tiny differences in precision would either need to be reviewed and updated, or have their compatibility improved by using SetFormat Float (e.g. SetFormat, Float, 0.6) anywhere in the script. SetFormat Float disables the higher precision, but gives up some of the new, faster floating point performance.

+

Performance: The main theme of this release is faster performance. Almost all scripts should run faster -- especially those that make heavy use of expressions and integer math/comparisons (which may run up to three times as fast). To achieve the full benefit, a script either should avoid using SetFormat or should use SetFormat's fast mode.

+

Performance improvements

+

Expressions and function calls are compiled more heavily, making them much faster (especially complex integer expressions, including those with commas).

+

Binary numbers are cached for variables to avoid conversions to/from strings. This makes numerical operations involving variables much faster.

+

Literal integers in expressions and math/comparison commands are replaced with binary integers, which makes them faster; e.g. X+5 and if x > 5.

+

LOOPs, IFs, and ELSEs that have blocks (braces) are faster due to skipping the opening '{'. A side-effect is that the '{' is omitted from ListLines.

+

Thread-creation performance is improved, which should help rapid-fire threads in OnMessage(), RegisterCallback(), and GUI events.

+

Changes that might affect existing scripts (other than higher-precision floating point described at the top)

+

When SetFormat, Integer, Hex is in effect, assigning a literal decimal integer to a variable also converts it to hex. Usually this is only a display issue.

+

For OnMessage() performance, the message number and HWND arrive as standard numbers rather than appearing unconditionally as hex. Usually this is only a display issue.

+

To achieve various improvements in performance, scripts now use slightly more memory (proportionate to the number of variables and expressions).

+

Changed and fixed if var is time and other uses of YYYYMMDDHHMISS date-time stamps to recognize that months outside the range 1-12 are invalid. [thanks Nick]

+

Changed and improved dynamic function calling to allow passing more parameters than defined by a function, in which case the parameters are evaluated but discarded. [developed by Lexikos]

+

Other improvements

+

Added function IsFunc(), which indicates whether a function may be called dynamically. [developed by Lexikos]

+

Added the while-loop, which repeats its commands until its expression evaluates to false. [developed by Lexikos]

+

Added an assume-static mode for functions. [developed by Lexikos]

+

Added built-in variables A_IsPaused and A_IsCritical. [developed by Lexikos]

+

Improved NumPut() to support UInt64 like DllCall(). [thanks Sean]

+

Improved mouse wheel support by adding WheelLeft and WheelRight as hotkeys and supporting them in Send, Click, and related commands. However, WheelLeft/Right has no effect on operating systems older than Windows Vista. [developed by Lexikos]

+

Upgraded compiled script compressor from UPX 3.00 to 3.03.

+

Fixes

+

Fixed inability to use MsgBox's timeout parameter when the "Text" parameter had an expression containing commas.

+

Fixed Menu, Delete, Item-that's-a-submenu not to disrupt the associated submenu. [thanks animeaime & Lexikos]

+

Fixed the GUI Hotkey control to return usable hotkey names even for dead keys (e.g. "^" instead of Zircumflex). [thanks DerRaphael]

+

Fixed RegDelete so that it won't delete an entire root key when SubKey is blank. [thanks Icarus]

+

Fixed registry loops to support subkey names longer than 259 (rare). In prior versions, such subkeys would either be skipped or cause a crash. [thanks Krzysztof Sliwinski & Eggi]

+

Fixed FileSelectFolder by providing an option to make it compatible with BartPE/WinPE. [thanks markreflex]

+

Fixed window/control IDs (HWNDs), which in rare cases wrongly started with 0xFFFFFFFF instead of just 0x. [thanks Micahs]

+

Fixed inability of Send commands to use the Down/Up modifiers with the "}" character. [thanks neovars]

+

1.0.47.06 - March 9, 2008

+

Fixed crash when a function was called concurrently with an optional ByRef parameter omitted by one thread but not omitted by the other. [thanks DeathByNukes]

+

Fixed Menu, Tray, MainWindow to enable the menu items in the main window's View menu. [thanks Lexikos]

+

Added dynamic function calling. [developed by Lexikos]

+

1.0.47.05 - November 21, 2007

+

Fixed the Sort command: 1) fixed the "function" option not to misbehave when it's the last option in the list; 2) fixed the "unique" option so that when the delimiter is CRLF, the last item can be detected as a duplicate even when it doesn't end in CRLF; 3) fixed the "unique" option not to append a trailing delimiter when the last item is a duplicate. [thanks Roland]

+

Fixed RegExMatch() and RegExReplace() to yield correct results even when Haystack and OutputVar are both the same variable. [thanks Superfraggle]

+

Fixed inability to pass a parameter that is "a variable to which ClipboardAll has been assigned". [thanks Joy2DWorld & Lexikos]

+

Updated RegEx/PCRE from 7.0 to 7.4. For a summary of the major changes, see www.pcre.org/news.txt. For full details of every change and fix, see www.pcre.org/changelog.txt.

+

Added GUI control "Tab2" that fixes rare redrawing problems in the original "Tab" control (e.g. activating a GUI window by clicking on a control's scrollbar). The original Tab control is retained for backward compatibility because "Tab2" puts its tab control after its contained controls in the tab-key navigation order. [thanks Xander]

+

1.0.47.04 - August 28, 2007

+

Fixed key-up hotkeys like a up:: not to block the pressing of the "a" key unless the hotkey's #IfWin criteria are met. [thanks Roland]

+

Fixed Round(Var, NegativeNumber), which in rare cases was off by 1. [thanks Icarus]

+

Fixed crash of scripts that end in a syntax error consisting of an orphaned IF-statement (broken by 1.0.47.00). [thanks msgbox of the German forum]

+

Eliminated the "GetClipboardData" error dialog. Instead, an empty string is retrieved when the data cannot be accessed within the #ClipboardTimeout period. [thanks ManaUser & Sean]

+

Changed GUI checkboxes and radio buttons to default to "no word-wrap" when no width, height, or CR/LF characters are specified. This solves display issues under certain unusual DPI settings. [thanks Boskoop]

+

1.0.47.03 - August 1, 2007

+

Fixed expressions to allow literal negative hexadecimal numbers that end in "E"; e.g. fn(-0xe). [thanks Laszlo]

+

Fixed block syntax to allow a function-call immediately to the right of a '}'. [thanks Roland]

+

1.0.47.02 - July 19, 2007

+

Fixed the Number option of Edit controls to properly display a balloon tip when the user types something other than a digit. [thanks tfcahm]

+

Fixed WM_TIMER not to be blocked unless it's posted to the script's main window. [thanks tfcahm]

+

Fixed wildcard hotkeys not to acquire tilde behavior when the same hotkey exists in the script with a tilde. [thanks Lexikos]

+

Fixed declaration initializers not to retain whitespace at the end of literal numbers. Also, they now allow spaces between a closing quote and the next comma. [thanks Hardeep]

+

1.0.47.01 - July 8, 2007

+

Fixed RunAs not to crash or misbehave when a domain is specified. [thanks Markus Frohnmaier]

+

Changed relational operators to yield integers even when the inputs are floating point; e.g. 1.0 < 2.0 yields 1 vs. 1.0. [thanks Lexikos]

+

1.0.47 - June 19, 2007

+

Added support for function libraries, which allow a script to call a function in an external file without having to use #Include.

+

Added RegisterCallback(), which creates a machine-code address that when called, redirects the call to a function in the script. [developed by Jonathan Rennison (JGR)]

+

Added NumGet() and NumPut(), which retrieve/store binary numbers with much greater speed than Extract/InsertInteger.

+

Improved Sort with an option to do custom sorting according to the criteria in a callback function. [thanks Laszlo]

+

Improved OnMessage() with an option to allow more than one simultaneous thread. [thanks JGR]

+

Improved Critical with an option to change the message-check interval, which may improve reliability for some usages. [thanks Majkinetor and JGR]

+

Changed Critical to put SetBatchLines -1 into effect.

+

Changed the error messages produced by #ErrorStdOut to contain a space before the colon. [thanks Toralf]

+

Fixed OnMessage() functions that return one of their own local variables to return the number in that variable, not 0.

+

Fixed potential crashing of built-in variables that access the registry (e.g. A_AppData, A_Desktop, A_MyDocuments, A_ProgramFiles). [thanks Tekl]

+

1.0.46.17 - May 31, 2007

+

Fixed A_UserName (broken by 1.0.46.16).

+

1.0.46.16 - May 30, 2007

+

Fixed Gui, Tab, TabName when used after a previous Gui Tab. [thanks Toralf]

+

Improved SetTimer to treat negative periods as "run only once". [thanks Majkinetor]

+

Added GuiControlGet Hwnd, which is a more modular/dynamic way to retrieve a control's HWND. [thanks Majkinetor]

+

Added built-in variables A_ThisLabel and A_ThisFunc, which contain the names of the currently-executing label/function. [thanks Titan & Majkinetor]

+

1.0.46.15 - May 9, 2007

+

Fixed GuiControl, GuiControlGet, and Gui ListView/TreeView to support static variables and ByRefs that point to globals/statics. [thanks Peter]

+

Fixed FileInstall causing the Random command to become non-random in compiled scripts. [thanks Velocity]

+

Reduced the size of compiled scripts by about 16 KB due to UPX 3.0. [thanks to atnbueno for discovering the optimal command-line switches]

+

1.0.46.14 - May 2, 2007

+

Added the "require administrator" flag to the installer to avoid a warning dialog on Windows Vista. [thanks Roussi Nikolov]

+

1.0.46.13 - May 1, 2007

+

Fixed hotkeys like *x to fire even when x is also a hotkey that is prevented from firing due to #IfWin. [thanks Joy2DWorld & Engunneer]

+

Improved optional parameters to accept quoted/literal strings as default values.

+

Improved ByRef parameters with the ability to be optional (i.e. they may accept default values). [thanks Corrupt]

+

1.0.46.12 - April 24, 2007

+

Fixed inability to recognize a literal scientific notation number that begins with 0, such as 0.15e+1. [thanks Laszlo]

+

1.0.46.11 - April 23, 2007

+

Fixed inability to have a function-call as the first item in certain comma-separated expressions. [thanks Majkinetor]

+

Fixed WinTitles like ahk_id %ControlHwnd% in ControlGet's FindString/Choice/List, and Control's Add/Delete/Choose. [thanks Freighter & PhiLho]

+

Improved floating point support to recognize scientific notation; e.g. 1.2e-5 (the decimal point is mandatory). Also improved "SetFormat Float" with an option to output in scientific notation. [thanks Laszlo]

+

1.0.46.10 - March 22, 2007

+

Fixed StringSplit inside assume-local functions so that it creates a local array even when OutputArray0 exists as a global but not a local. [thanks KZ]

+

Improved ListView's item-changed notification ("I") to indicate via ErrorLevel whether the item has been selected/deselected, focused/unfocused, and/or checked/unchecked. [thanks foom]

+

Added an additional layer of protection to compiled scripts. It is recommended that scripts containing sensitive data or source code be recompiled with the /NoDecompile switch.

+

1.0.46.09 - March 4, 2007

+

Fixed := deep inside expressions when used to assign the result of a recursive function to a local variable (broken by 1.0.46.06). [thanks Laszlo]

+

Fixed inability to pass certain ternary expressions to ByRef parameters. [thanks Titan]

+

Fixed GuiControlGet, OutputVar, Pos so that it doesn't make the OutputVar blank. [thanks PhiLho]

+

Changed and fixed continuation sections so that the "Comment" option doesn't force the LTrim option into effect. [thanks Titan]

+

Changed the Terminal Server Awareness flag back to "disabled" on AutoHotkey.exe and compiled scripts. This improves flexibility and backward compatibility (see discussion at forum).

+

1.0.46.08 - February 7, 2007

+

Fixed unreliability of ComSpec and environment variables on Windows 9x (broken by v1.0.46.07). [thanks Loriss]

+

Changed: When AutoHotkey.exe is launched without a script specified, it will now run (or prompt you to create) the file AutoHotkey.ahk in the My Documents folder. The only exception is when AutoHotkey.ini exists in the working directory, in which case it uses the old behavior of executing that file.

+

Improved DllCall to support an integer in place of the function name, which is interpreted as the address of the function to call. [thanks Sean]

+

1.0.46.07 - January 23, 2007

+

Fixed crash of illegally-named dynamic variables on the left of an equal-sign assignment (broken by v1.0.45). [thanks PhiLho]

+

Fixed FileMoveDir's "Option 2" to work properly even when the directory is being both renamed and moved. [thanks bugmenot]

+

Fixed inability to pass a variable ByRef if that same expression changed it from empty to non-empty (when #NoEnv is absent). [thanks Joy2DWorld]

+

Changed DllCall's A_LastError to reflect only changes made by the script, not by AutoHotkey itself. [thanks Azerty]

+

1.0.46.06 - January 16, 2007

+

Applied minor fixes and improvements to regular expressions by upgrading from PCRE 6.7 to 7.0. One of the most notable improvements is the `a option, which recognizes any type of newline (namely `r, `n, or `r`n). Similarly, the \R escape sequence means "any single newline of any type". See also: Full PCRE changelog

+

Changed and fixed all Control commands and StatusBarWait to obey SetTitleMatchMode RegEx as documented.

+

Changed RegExReplace() to return the original/unaltered string rather than "" when an error occurs.

+

Changed: Enabled the Terminal Server Awareness flag on AutoHotkey.exe and compiled scripts.

+

Improved performance when assigning large strings returned from user-defined functions. [thanks Laszlo]

+

1.0.46.05 - January 4, 2007

+

Fixed the Input command to allow named end keys like {F9} to work even when the shift key is being held down (broken by v1.0.45). [thanks Halweg]

+

Fixed inability of "Gui Show" to focus the GUI window when the tray menu is used both to reload the script and to show the GUI window. [thanks Rnon]

+

Fixed inability to pass some types of assignments (:=) to a ByRef parameter. [thanks Laszlo]

+

1.0.46.04 - January 2, 2007

+

Fixed inability to pass the result of an assignment (:=) to a ByRef parameter. [thanks Titan]

+

1.0.46.03 - December 18, 2006

+

Fixed ListView's floating point sorting to produce the correct ordering. [thanks oldbrother/Goyyah/Laszlo]

+

1.0.46.02 - December 17, 2006

+

Fixed environment variables to work properly as input variables in various commands such as StringLen and StringReplace (broken by 1.0.44.14). [thanks Camarade_Tux]

+

1.0.46.01 - December 15, 2006

+

NOTE: Although this release has been extensively tested, several low-level enhancements were made. If you have any mission-critical scripts, it is recommended that you retest them and/or wait a few weeks for any bugs to get fixed.

+

Fixed comma-separated declaration initializers such as local x = 1, y = 2 to work even when immediately below an if/else/loop statement.

+

Fixed comma-separated expressions so when the leftmost item is an assignment, it will occur before the others rather than after. [thanks Laszlo]

+

Changed and fixed function-calls so that any changes they make to dynamic variable names, environment variables, and built-in variables (such as Clipboard) are always visible to subsequent parts of the expression that called them.

+

Changed: When a multi-statement comma is followed immediately by a variable and an equal sign, that equal sign is automatically treated as a := assignment. For example, all of the following are assignments: x:=1, y=2, a=b=c.

+

Changed comma-separated expressions to produce the following effects: 1) the leftmost /= operator becomes true divide rather than EnvDiv; 2) blank values are not treated as zero in math expressions (thus they yield blank results).

+

Improved the performance of expressions by 5 to 20% (depending on type).

+

Improved the new assignment operators such as .= to support the Clipboard variable (even in comma-separated expressions).

+

Improved the .= operator so that it doesn't require a space to its left.

+

Improved GUI controls to accept static variables as their associated variables (formerly only globals were allowed).

+

Added option HwndOutputVar to Gui Add, which stores a control's HWND in OutputVar. [thanks Corrupt & Toralf]

+

1.0.46 - November 29, 2006

+

NOTE: Although this release has been extensively tested and is not expected to break any existing scripts, several low-level enhancements were made. If you have any mission-critical scripts, it is recommended that you retest them and/or wait a few weeks for any bugs to get fixed.

+

Added function SubStr(), which retrieves the specified number of characters at the specified position in a string.

+

Added assignment operators //=, .=, |=, &=, ^=, >>=, and <<=, which can be used anywhere in expressions. For example, Var .= "abc" appends the string "abc" to Var's current contents.

+

Added full support in expressions for the operators :=, ++, --, +=, -=, *=, and /= (formerly, they could be used only as the leftmost operator on a line). All assignment operators (especially ++ and --) behave in a C-like way when their result is used by some other operator.

+

Added the ternary operator (?:), which is a shorthand replacement for the if-else statement. For example, var := x>y ? 2 : 3 assigns the value 2 if x is greater than y; otherwise it assigns 3.

+

Added support for comma-separated expressions, which allow a single line to contain multiple assignments, function calls, and other expressions. [thanks PhiLho & Titan]

+

Improved variable declarations to support initialization on the same line. Note: A static variable's initialization occurs only once, before the script begins executing.

+

Improved line continuation to support all expression operators. For example, a line that starts with "?" or "+" is automatically appended to the line above it.

+

Improved performance of operators "." and ".=" to be as fast as the percent-sign method of appending a string.

+

Improved expressions to allow more types of consecutive unary operators such as !!Var. [thanks Laszlo]

+

Changed Critical to check messages less often (20 vs. 10ms), which improves the reliability of frequently-called OnMessage functions. [thanks Majkinetor]

+

Changed: A variable named simply "?" is no longer valid in expressions due to the new ternary operator.

+

Fixed hotkeys to support ::: (colon as a hotkey) and : & x (colon as a hotkey prefix).

+

Fixed the installer to remove psapi.dll from the AutoHotkey folder (except on Windows NT4). This avoids a conflict with Internet Explorer 7. [thanks to all who reported it]

+

1.0.45.04 - November 15, 2006

+

Fixed crash on Windows 9x when a script doesn't actually run (e.g. due to syntax error) (broken by v1.0.45). [thanks rogerg]

+

Changed Control Style|ExStyle to report ErrorLevel 0 vs. 1 when the requested style change wasn't necessary because it was already in effect.

+

Improved #Include to support %A_AppData% and %A_AppDataCommon%. [thanks Tekl]

+

1.0.45.03 - November 12, 2006

+

Fixed file-pattern loops not to crash when recursing into paths longer than 259 characters. In addition, such paths and files are now ignored (skipped over) by file-pattern loops, FileSetAttrib, and FileSetTime. [thanks PhilR]

+

Fixed functions that call themselves and assign the result to one of their own locals (broken by v1.0.45). [thanks bjennings]

+

Fixed crash of scripts containing regular expressions that have compile errors. [thanks PhiLho]

+

Fixed GuiControl not to convert checkboxes into 3-state unless requested. [thanks JBensimon]

+

Changed UrlDownloadToFile to announce a user-agent of "AutoHotkey" to the server rather than a blank string. [thanks jaco0646]

+

Improved continuation sections to support semicolon comments inside the section via the option-word Comments.

+

1.0.45.02 - November 8, 2006

+

Fixed StringUpper and StringLower to work when OutputVar is the clipboard (broken by v1.0.45). [thanks songsoverruins]

+

Fixed the hotkeys ~Alt, ~Control, and ~Shift to fire upon press-down rather than release (broken by v1.0.44).
+Background: Without the tilde, Alt/Control/Shift fire upon release to avoid taking over both the left and right key. But a specific left/right hotkey like LAlt or RShift fires upon press-down.

+

1.0.45.01 - November 7, 2006

+

Fixed FileReadLine and FileSelectFile not to crash or misbehave when other threads interrupt them (broken by v1.0.45). [thanks toralf]

+

Fixed RegExMatch() so that when there's no match, named subpatterns are properly set to "" in the output array. [thanks PhiLho]

+

Fixed RegExMatch()'s "J" option to properly write duplicate named subpatterns to the output array. [thanks PhiLho]

+

Changed SetWorkingDir and #Include DirName to succeed even for a root directory such as C: that lacks a backslash.

+

Improved DllCall() to display a warning dialog if the called function writes to a variable of zero capacity.

+

1.0.45 - November 4, 2006

+

NOTE: Although this release has been extensively tested and is not expected to break any existing scripts, several low-level performance enhancements were made. If you have any mission-critical scripts, it is recommended that you retest them and/or wait a few weeks for any bugs to get fixed.

+

Added support for regular expressions via RegExMatch(), RegExReplace(), and SetTitleMatchMode RegEx. [thanks Philip Hazel & PhiLho]

+

Improved performance and memory utilization of StringReplace.

+

Improved performance of the := operator for expressions and functions involving long strings.

+

Improved ControlClick with a new option "NA" that avoids activating the target window (this mode also improves reliability in some cases). In addition, it's been documented that SetControlDelay -1 can improve the reliability of ControlClick in some cases. [thanks nnesori]

+

Changed GUI buttons to default to "no word-wrap" when no width, height, or CR/LF characters were specified. This may solve button display issues under some desktop themes.

+

Fixed "Transform HTML" for the following characters: &`n><

+

Fixed misinterpretation of lines starting with "if not is" such as "if not IsDone".

+

Fixed inability of "Gui Show" to move a window vertically downward to where its bottommost row of pixels is now.

+

Fixed inability to use GroupActivate as the only line beneath an IF or ELSE.

+

Fixed inability of the Input command to differentiate between end-keys enclosed in braces and their (un)shifted counterparts; e.g. '{' vs. '['. [thanks Laszlo]

+ +

Visit www.autohotkey.com/changelog/ for even older changes.

+ + diff --git a/src/docs/Compat.htm b/src/docs/Compat.htm new file mode 100644 index 0000000..7a8a077 --- /dev/null +++ b/src/docs/Compat.htm @@ -0,0 +1,306 @@ + + +Script Compatibility + + + + + + + +

½ºÅ©¸³Æ®ÀÇ È£È¯¼º

+ +

+AutoHotkey 1.0À¸·Î ÀÛ¼ºµÈ ½ºÅ©¸³Æ®´Â ´ëºÎºÐ AutoHotkey 1.1 À§¿¡¼­ ¾Æ¹« º¯°æ¾øÀÌ ½ÇÇàµË´Ï´Ù. ±×·¯³ª ¸î °¡Áö ±â´ÉÀº µÎ ¹öÀü »çÀÌÀÇ ¾î¶³ ¼ö ¾ø´Â Â÷ÀÌÁ¡ ¶§¹®¿¡ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. °¡Àå ¹®Á¦°¡ µÇ´Â Â÷ÀÌÁ¡Àº DllCall °°Àº °í±Þ ±â´É¿¡¸¸ ¿µÇâÀ» ¹ÌÄ¡±â ¶§¹®¿¡, ´ëºÎºÐÀÇ »ç¿ëÀÚ´Â ½Å°æ¾µ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+AutoHotkey 1.1Àº "AutoHotkey_L"À̶ó°íµµ ¾Ë·ÁÁ® Àִµ¥, ¹Ý¸é¿¡ AutoHotkey 1.0Àº ¿ªÀ¸·Î "AutoHotkey Basic"À̶ó´Â ¶óº§ÀÌ ºÙ¾ú½À´Ï´Ù. AutoHotkey_LÀÇ ¿¹Àü ¹öÀü Áß¿¡´Â 1.0.* ¹öÀü ¹øÈ£¸¦ »ç¿ëÇÕ´Ï´Ù. ±×·¡¼­ ¸íÈ®ÇÏ°Ô Çϱâ À§ÇØ, ÀÌ ¹®¼­´Â ¿ÀÅäÇÖÅ°ÀÇ µÎ ºÐ±â¸¦ ¹öÀü ¹øÈ£°¡ ¾Æ´Ï¶ó À̸§À¸·Î ÁöĪÇÕ´Ï´Ù.

+

ÁÖÀÇ: °¡Àå ÈçÇÑ ¹®Á¦´Â À¯´ÏÄÚµå ÅؽºÆ®¸¦ Áö¿øÇϵµ·Ï º¯°æÇÑ ¶§¹®Àε¥, ÀÌ´Â ±×³É ANSI ¹öÀüÀÇ AutoHotkey_L¸¦ »ç¿ëÇϸé ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

񃧯

+

Å« Ãæ°Ý:

+ +

Áß°£ Ãæ°Ý:

+ +

ÀÛÀº Ãæ°Ý:

+ + +

°í±Þ

+ + +

񃧯

+ +

±¸¹® ¿¡·¯

+

+AutoHotkey Basic¿¡¼­ ¿ëÀεǾú´ø ¾î¶² ±¸¹® ¿¡·¯´Â ÀÌÁ¦ ´õ ÀÌ»ó AutoHotkey_L¿¡¼­ ¿ë³³ÇÏÁö ¾Ê½À´Ï´Ù. ±×·± ¿¡·¯´Â ´ëºÎºÐ ½Äº°Çϱ⸸ ÇÏ¸é ½±°Ô ±³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¡·¯´Â ½ºÅ©¸³Æ®¸¦ AutoHotkey_L¿¡¼­ ±âµ¿ÇÏÀÚ ¸¶ÀÚ Áï½Ã ŽÁöµË´Ï´Ù. ±³Á¤ÇØ¾ß ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
    +
  • ¸í·É¾î¿Í ¸Å°³º¯¼ö »çÀÌ¿¡ ½ºÆäÀ̽º³ª ÅÇ ¶Ç´Â ½°Ç¥°¡ ÇÊ¿äÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, MsgBox< foo ±×¸®°í If!foo´Â ¿ë³³µÇÁö ¾Ê½À´Ï´Ù.
  • +
  • Hotkey, IfSomething¿¡¼­ SomethingÀÌ ¹«È¿À̸ç, Çã¿ëµÇÁö ¾Ê½À´Ï´Ù.
  • +
+

´Ù¸¥ ¾î¶² ±¸¹® ¿¡·¯´Â ½ºÅ©¸³Æ®°¡ ½ÇÇà ÁßÀÏ ¶§ ŽÁöµË´Ï´Ù. ¿¡·¯ ¸Þ½ÃÁö¸¦ ¸ÕÀú º¸¿©ÁØ ´ÙÀ½¿¡ ÇöÀç ¾²·¹µå¸¦ Á¾·áÇÕ´Ï´Ù:

+
    +
  • ÈçÇÑ ¿¡·¯: ÀνÄÇÒ ¼ö ¾ø´Â ¶Ç´Â Çü½ÄÀÌ ³ª»Û Gui, Gui Show ¶Ç´Â GuiControl ¿É¼Ç.
  • +
  • ±×·ì À̸§ÀÌ ºñ¾î ÀÖ´Â GroupAdd. ÀÌÀü¿¡´Â ¾²·¹µå°¡ Á¶¿ëÈ÷ Á¾·áÇß½À´Ï´Ù.
  • +
  • Gui ¿É¼Ç +LastFoundExist´Â ´Ù¸¥ ¿É¼Ç°ú Á¶ÇÕÇÏ¸é ¾ÈµË´Ï´Ù. ¿Ö³ÄÇÏ¸é ±×·¸°Ô Çϸé +LastFound¿Í ¶È°°ÀÌ ÇൿÇϱ⠶§¹®ÀÔ´Ï´Ù.
  • +
+

¾î¶² ±¸¹® ¿¡·¯´Â ÇöÀç ŽÁöµÇÁö ¾ÊÁö¸¸, AutoHotkey_L¿¡ ¹®Á¦¸¦ ÀÏÀ¸Åµ´Ï´Ù:

+
    +
  • (°úÀÇ ÀÚµ¿-°áÇÕ(Auto-concat)Àº ´õ ¼±º°ÀûÀÌ µÇ¾ú½À´Ï´Ù. ±×·¡¼­ 12(34)¿Í °°ÀÌ ¹«È¿ÇÑ Ç¥Çö½ÄÀº ´õ ÀÌ»ó ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù.
  • +
+ +

FileRead

+

FileRead´Â º¸ÅëÀÇ °æ¿ì ÄÚµå ÆäÀÌÁö »çÀÌ¿¡ ÅؽºÆ®¸¦ º¯È¯ÇÕ´Ï´Ù. ±×·¯¹Ç·Î ºÎÆÐÇÑ ÀÌÁø µ¥ÀÌÅ͸¦ Ãâ·ÂÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é *c ¿É¼ÇÀ» Ãß°¡Çϰųª ´ë½Å¿¡ FileOpenÀ» »ç¿ëÇϽʽÿÀ.

+ +

º¯¼ö À̸§°ú ÇÔ¼ö À̸§

+

+[, ] ±×¸®°í ?´Â Ç¥Çö½Ä¿¡ »ç¿ëÀÌ ¿¹¾àµÇ¾î ÀÖ½À´Ï´Ù. ±×·¡¼­ ´õ ÀÌ»ó º¯¼ö À̸§À¸·Î À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù. °á·ÐÀûÀ¸·Î, ?´Â (»ïÁø ¿¬»ê¿¡ »ç¿ëµÊ) ´õ ÀÌ»ó ¾çÂÊ¿¡ ½ºÆäÀ̽º°¡ ¾ø¾îµµ µË´Ï´Ù. °´Ã¼ ±¸¹®À» ÂüÁ¶ÇϽʽÿÀ.

+ +

¿¡·¯´Â ÀÚµ¿À¸·Î ŽÁöµÉ ¼öµµ ÀÖ°í ¾Æ´Ò ¼öµµ ÀÖ½À´Ï´Ù:

+
    +
  • ½ºÅ©¸³Æ®°¡ ÀÌ·± ¹®ÀÚµéÀ» Ç¥Çö½Ä¿¡¼­ º¯¼ö À̸§¿¡ »ç¿ëÇϸé, ÀϹÝÀûÀ¸·Î ±× ½ºÅ©¸³Æ®´Â ¿¡·¯ ¸Þ½ÃÁö¸¦ º¸¿©ÁÖÁö ¾Ê°í ½ÇÇàµÇÁö¸¸, ¹®ÀÚ¸¦ º¯¼öÀÇ À̸§ÀÇ ÀϺΰ¡ ¾Æ´Ï¶ó ¿¬»êÀÚ·Î ÀÌÇØÇϱ⠶§¹®¿¡ À߸øµÈ ÇàÀ§¸¦ ÇÏ°Ô µË´Ï´Ù.
  • +
  • ÀÌ·± ¹®ÀÚ°¡ ÀÌÁß ÂüÁ¶(double-deref)¿¡ »ç¿ëµÇ¸é (Array%n%°ú °°ÀÌ n¿¡ À§ÀÇ ¹®ÀÚÁß Çϳª°¡ ´ã°Ü ÀÖÀ¸¸é), ½ºÅ©¸³Æ®°¡ ½ÇÇàµÇ´Ù°¡, ÀÌÁß-ÂüÁ¶°¡ Æò°¡µÉ ¶§ ¿¡·¯ ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù.
  • +
  • ÀÌ ¹®ÀÚµéÀÌ ´Ù¸¥ ¹®¸Æ¿¡ »ç¿ëµÇ¸é, ¿¹¸¦ µé¾î ÇÒ´çÀÇ ¿ÞÆíÀ̳ª ¸í·É¾îÀÇ ÀÔ/Ãâ·Â º¯¼öÀÇ À̸§ ¶Ç´Â %percent% »çÀο¡ »ç¿ëµÇ¸é, ¿¡·¯ ¸Þ½ÃÁö°¡ ³ªÅ¸³ª°í ½ºÅ©¸³Æ®´Â ±âµ¿ÇÏÁö ¸øÇÕ´Ï´Ù.
  • +
+ +

Transform

+

Transform ÇÏÀ§-¸í·É¾î Áß ÀϺδ À¯´ÏÄÚµå ¹öÀüÀÇ AutoHotkey_L¿¡¼­ º¯°æµÇ°Å³ª »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù:

+
    +
  • Transform, Unicode´Â »ç¿ë ºÒ°¡´ÉÇÕ´Ï´Ù. À¯´ÏÄÚµå ÅؽºÆ®¸¦ Ŭ¸³º¸µå¿¡ ÇÒ´çÇÏ·Á¸é, º¸Åëó·³ ÇÒ´çÇϽʽÿÀ. ´ÙÀ½ ÂüÁ¶: StrPut/StrGet.
  • +
  • Transform, HTML´Â Ãß°¡ Ư¡À» Áö¿øÇÕ´Ï´Ù.
  • +
+ +

±âº» ½ºÅ©¸³Æ®

+

+AutoHotkey_L°¡ ½ºÅ©¸³Æ®¸¦ ÁöÁ¤ÇÏÁö ¾Ê°í ±âµ¿Çϸé, .ini ÆÄÀÏ ´ë½Å¿¡ .ahk ÆÄÀÏÀÌ ÀûÀçµË´Ï´Ù. ÀÌ ÆÄÀÏÀÇ À̸§Àº ÇöÀç ½ÇÇàÆÄÀÏÀÇ ÆÄÀÏÀ̸§¿¡ µû¶ó ´Ù¸¨´Ï´Ù. ´õ ÀÚ¼¼ÇÑ °ÍÀº ½ºÅ©¸³Æ®¿¡ ¸í·É¾î ÁÙ ¸Å°³º¯¼ö¸¦ °Ç³×±â¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

SetFormat, Integer[Fast], H

+

+´ë¹®ÀÚ H°¡ »ç¿ëµÇ¸é, ½ÊÀ°Áø¼ö A-Fµµ ´ë¹®ÀÚ°¡ µË´Ï´Ù. AutoHotkey BasicÀº ¾ðÁ¦³ª ¼Ò¹®ÀÚ¸¦ »ç¿ëÇÕ´Ï´Ù. SetFormatÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

A_LastError

+

+´ÙÀ½ ¸í·É¾î´Â ÀÌÁ¦ A_LastError¸¦ ¼³Á¤ÇØ µð¹ö±ëÀ» µ½½À´Ï´Ù: FileAppend, FileRead, FileReadLine, FileDelete, FileCopy, FileMove, FileGetAttrib/Time/Size/Version, FileSetAttrib/Time, FileCreateDir, RegRead, RegWrite, RegDelete. +ÀÌ ¸í·É¾î¸¦ »ç¿ëÇϸé A_LastErrorÀÇ ÀÌÀü °ªÀÌ µ¤¾î ¾º¿©Áý´Ï´Ù.

+ +

MsgBox

+

+MsgBoxÀÇ ¶È¶ÈÇÑ ½°Ç¥ 󸮰¡ ´Ù¸¥ ¸ðµç ¸í·É¾î¿Í ÀÏ°ü¼ºÀÌ ÀÖ°Ô ±×¸®°í À¯¿¬ÇÏ°Ô °³¼±µÇ¾ú½À´Ï´ô. ´ëºÎºÐÀÇ °æ¿ì, MsgBox´Â ÀǵµÇÑ ´ë·Î Àß ÀÛµ¿ÇÕ´Ï´Ù. ¾î¶² °æ¿ì´Â ½ºÅ©¸³Æ®°¡ ¿¹ÀüÀÇ ±â¹¦ÇÑ ÇàÀ§¿¡ ÀÇÁ¸ÇÏ´Â °æ¿ì ÇàÀ§¿¡ º¯È­°¡ º¸ÀÏ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é:

+ +
; ´ÙÀ½Àº ÀÌÁ¦ Ç¥Çö½Ä (Options) ´ÙÀ½¿¡ ÅؽºÆ® (Title)·Î ¹ø¿ªµË´Ï´Ù.
+; ¿©·¯ ºÎ-Ç¥Çö½ÄÀ» °¡Áø ´ÜÀÏ Ç¥Çö½Ä (Text) À¸·Î ¹ø¿ªµÇÁö ¾Ê½À´Ï´Ù :
+MsgBox % x, y
+; ¹Ý°ýÈ£¸¦ Ãß°¡ÇÏ¸é ¿¹ÀüÀÇ ¹ø¿ªÀ» °­Á¦ÇÒ ¼ö ÀÖ½À´Ï´Ù:
+MsgBox % (x, y)
+
+; ´ÙÀ½Àº ÀÌÁ¦ ÅؽºÆ® "0, Title" ´ë½Å¿¡ ºó ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÝ´Ï´Ù:
+MsgBox 0, Title
+; ´ÙÀ½Àº AutoHotkey_L ±×¸®°í AutoHotkey Basic¿¡¼­ ¸ðµÎ ¿¹»ó´ë·Î ÇàÀ§ÇÕ´Ï´Ù:
+MsgBox 0, Title, % ""   ; ºó ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÝ´Ï´Ù.
+MsgBox 0`, Title        ; ÅؽºÆ® "0, Title"À» º¸¿©ÁÝ´Ï´Ù.
+
+; ´ÙÀ½Àº ÀÌÁ¦ ÅؽºÆ® ", Title" ´ë½Å¿¡ ºó ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÝ´Ï´Ù:
+MsgBox,, Title
+
+ +

Gui +Owner

+

++Owner ¿É¼ÇÀ» Gui¿¡ Àû¿ëÇϸé WS_CHILD ½ºÅ¸ÀÏÀÌ Á¦°ÅµÇ°í WS_POPUP ½ºÅ¸ÀÏÀÌ ¼³Á¤µË´Ï´Ù. ÀÌ ¶§¹®¿¡ ½ºÅ¸ÀÏÀ» ¼³Á¤ÇÑ ´ÙÀ½¿¡ +Owner¸¦ »ç¿ëÇÏ¿© GuiÀÇ ºÎ¸ð âÀ» ¼³Á¤ÇÑ ½ºÅ©¸³Æ®´Â ±úÁú ¼ö ÀÖ½À´Ï´Ù.

+ +

DPI ½ºÄÉÀϸµ

+

DPI ½ºÄÉÀϸµÀº ±âº»ÀûÀ¸·Î ½ºÅ©¸³Æ® GUI¿¡ ÄÑÁý´Ï´Ù. ÀÌ ¶§¹®¿¡ DPI ¼³Á¤ÀÌ 96 (100%)ÀÌ ¾Æ´Ï¸é ½ºÅ©¸³Æ®¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù. À̸¦ ²ô·Á¸é, Gui -DPIScale¸¦ »ç¿ëÇϽʽÿÀ.

+ +

Windows Vista ÀÌÈÄÀÇ Sound ¸í·É¾î

+

+SoundSet, SoundGet, SoundSetWaveVolume ±×¸®°í SoundGetWaveVolume Windows Vista ÀÌÈÄ¿¡ °³¼±µÇ¾ú½À´Ï´Ù. ÀüÇüÀûÀÎ ÇàÀ§ÀÇ º¯È­·Î:

+
    +
  • ½ºÅ©¸³Æ®°¡ ±×³É ½ºÅ©¸³Æ® ÀÚü ´ë½Å¿¡ Àüü ½Ã½ºÅÛ¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù (º¸Åë ÀÌ°ÍÀÌ ÀǵµÇÏ´Â ¹ÙÀÔ´Ï´Ù).
  • +
  • ÀåÄ¡´Â ¹øÈ£°¡ ´Ù¸£°Ô ¸Å°ÜÁý´Ï´Ù - °¢ Ãâ·ÂÀ̳ª ÀÔ·ÂÀº º°µµÀÇ ÀåÄ¡·Î °£ÁÖ µË´Ï´Ù.
  • +
+ +

~Æ¿µå¿Í ¸ÂÃã Á¶ÇÕ ÇÖÅ°

+

v1.1.14 ºÎÅÍ, Æ¿µå Á¢µÎ ½Éº¼Àº ¸ÂÃã Á¶ÇÕ¿¡ ¼ö½Ä Å°·Î »ç¿ëµÉ ¶§ Å°°¡ ÀÛµ¿ÇÏ´Â ¹æ½Ä¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.

+ +

¸ÂÃã Á¶ÇÕÅ°¿Í Down/Up ÇÖÅ°

+

+Æ¿µå Á¢µÎ ½Éº¼ÀÌ »ç¿ëµÇ´Â °æ¿ì¸¦ Á¦¿ÜÇÏ°í, Å°-´Ù¿î°ú Å°-¾÷ ÇÖÅ°°¡ ¸ÂÃã ¼ö½Ä Å°·Î Á¤ÀǵǾî ÀÖ´Ù¸é, Å°¸¦ ¶¿ ¶§ µÑ ¸ðµÎ ÃË¹ß µË´Ï´Ù. ¿¹¸¦ µé¾î, x & y::À̸é x¸¦ ¶¿ ¶§ x::¿Í x up::°¡ ¸ðµÎ ÃË¹ß µË´Ï´Ù. ¿¹Àü¿¡´Â x::°¡ ÃË¹ß µÇÁö ¾Ê¾Ò½À´Ï´Ù.

+ +

If var is type

+

If var is type´Â ½Ã½ºÅÛ ·ÎÄÉÀÏÀ» ¹«½ÃÇÕ´Ï´Ù. ´Ü, StringCaseSense, LocaleÀÌ »ç¿ëµÇ¾ú´Ù¸é ¿¹¿ÜÀÔ´Ï´Ù.

+ +

â ±×·ì

+

+GroupActivate´Â È°¼ºÈ­ ÇÒ Ã¢À» ¹ß°ßÇÏÁö ¸øÇϸé ErrorLevel¿¡ 1À» ¼³Á¤ÇÕ´Ï´Ù, ±×·¸Áö ¾ÊÀ¸¸é 0À» ¼³Á¤ÇÕ´Ï´Ù. ÀÌÀü¿¡´Â ErrorLevelÀ» º¯°æÇÏÁö ¾Ê°í ±×´ë·Î µÎ¾ú½À´Ï´Ù.

+

+GroupAddÀÇ Label ¸Å°³º¯¼ö´Â â ±×·ì¿¡ ÀüüÀûÀ¸·Î Àû¿ëµË´Ï´Ù. ±×·ì ¾ÈÀÇ Æ¯Á¤ â ±Ô°Ý Çϳª¿¡¸¸ Àû¿ëµÇÁö ¾Ê½À´Ï´Ù. ÀÌ º¯°æ¿¡ °üÇÑ Åä·ÐÀÌ Æ÷·³¿¡ ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ÀÌ ¸Å°³º¯¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀº Ãßõ ÇÏÁö ¾Ê½À´Ï´Ù; ´ë½Å¿¡ GroupActivate¸¦ È£ÃâÇÑ ÈÄ¿¡ ErrorLevelÀ» Á¡°ËÇϽʽÿÀ.

+ +

Run / RunWait

+

+AutoHotkey_LÀº Run°ú RunWait ¸í·É¾î°¡ ¸ñÇ¥(Target) ¸Å°³º¯¼ö¸¦ ¹ø¿ªÇÏ´Â ¹æ½ÄÀÌ ¾à°£ °³¼±µÇ¾ú½À´Ï´Ù. ÀÌ ¶§¹®¿¡ ¾ÆÁÖ Èñ±ÍÇÑ °æ¿ìÀ̱â´Â ÇÏÁö¸¸, ¿¹Àü¿¡´Â ÀÛµ¿ÇÏÁö ¾Ê´ø °ÍµéÀÌ ÀÛµ¿ÇÏ°Ô µÇ¾î AutoHotkey Basic¿¡¼­ ÀÌ¹Ì Àß ÀÛµ¿ÇÏ´Â ½ºÅ©¸³Æ®¿¡ ¿µÇâÀ» ¹ÌÄ¥ ¼ö ÀÖ½À´Ï´Ù. »õ·Î¿î ÇàÀ§´Â ´ÙÀ½°ú °°½À´Ï´Ù:

+
    +
  • TargetÀÌ µû¿ÈÇ¥·Î ½ÃÀÛÇϸé, ´ÙÀ½ µû¿ÈÇ¥±îÁö ¸ðµç °ÍÀ» Á¶Ä¡·Î Ãë±ÞÇÕ´Ï´Ù. ÀüÇüÀûÀ¸·Î ½ÇÇà ÆÄÀÏ·Î °£ÁÖÇÕ´Ï´Ù.
  • +
  • ±×·¸Áö ¾ÊÀ¸¸é ù ¹ø° ºÎ¹®ÀÚ¿­ÀÌ ½ºÆäÀ̽º·Î ³¡³ª°Å³ª ±âÁ¸ÀÇ ÆÄÀÏÀ̰ųª ¶Ç´Â .exe, .bat, .com, .cmd ¶Ç´Â .hta·Î ³¡³ª¸é Á¶Ä¡·Î °£ÁÖÇÕ´Ï´Ù. ÀÌ ¶§¹®¿¡ .ahk, .vbs ¶Ç´Â .lnk °°Àº ÆÄÀÏ À¯ÇüÀº ¸Å°³º¯¼ö¸¦ ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. ±×·¯¸é¼­µµ ÀÌÀüÀÇ ¹öÀü°ú °°ÀÌ Àý´ë °æ·Î°¡ ¾ø¾îµµ ¿©ÀüÈ÷ wordpad.exe¿Í °°ÀÌ "¾Ë·ÁÁø" ½ÇÇà ÆÄÀÏÀ» ±âµ¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • +
+ +

Control-Z

+

Loop Read ±×¸®°í FileReadLine´Â ´õ ÀÌ»ó ¹®ÀÚ Control-Z (0x1A)¸¦ ÆÄÀÏ ³¡ Ç¥½ÄÀ¸·Î ÀÌÇØÇÏÁö ¾Ê½À´Ï´Ù. Control-Z´Â ¸ðµÎ, ÆÄÀÏ ¸Ç ³¡¿¡ ¿À´õ¶óµµ, ±×´ë·Î ÀûÀçµË´Ï´Ù. FileRead´Â ÀÌ¹Ì ÀÌ ¹®ÀÚ¸¦ ¹«½ÃÇÕ´Ï´Ù. ±×·¡¼­ ÀÌ ¹®Á¦¿¡ ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù.

+ +

ȣȯ ¸ðµå

+

+½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ´Â µ¥ »ç¿ëµÈ EXE ÆÄÀÏÀÇ Æ¯¼º¿¡ ȣȯ ¸ðµå°¡ Windows 95, 98/ME ¶Ç´Â NT4·Î ¼³Á¤µÇ¾ú´Ù¸é, +±× ½ºÅ©¸³Æ®´Â ¿Ã¹Ù¸£°Ô ÀÛµ¿ÇÏÁö ¸øÇÕ´Ï´Ù. ¿Ö³ÄÇϸé ȣȯ ¸ðµå ¶§¹®¿¡ ƯÁ¤ ¹öÀüÀÇ Windows°¡ ¾îÇø®ÄÉÀ̼ǿ¡ º¸°íµÇÁö¸¸, AutoHotkey_LÀº ÀÌ·± ¹öÀüÀ» Áö¿øÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ȣȯ ¸ðµå¸¦ Windows 95 or 98/ME¿¡ ¼³Á¤Çϸé MsgBox %A_OSVersion%´Â WIN_NT4¶ó°í º¸°íÇÕ´Ï´Ù.

+ +

A_IsCompiled

+

A_IsCompiled´Â ½ºÅ©¸³Æ®°¡ ÄÄÆÄÀϵÇÁö ¾Ê¾Ò´Ù¸é ºó ¹®ÀÚ¿­·Î Á¤Àǵ˴ϴÙ. ÀÌÀü¿¡´Â Á¤ÀǵÇÁö ¾ÊÀº ä ±×´ë·Î µÎ¾ú½À´Ï´Ù. ±× ¶§¹®¿¡ ½ºÅ©¸³Æ®°¡ ÄÄÆÄÀϵÇÁö ¾Ê¾ÒÀ½¿¡µµ A_IsCompiled := 1¿Í °°Àº ÇÒ´çÀÌ À¯È¿Çß¾ú½À´Ï´Ù. ÀÌÁ¦´Â ¸ðµç °æ¿ì¿¡ Àбâ Àü¿ë ³»Àå º¯¼ö·Î Ãë±ÞµË´Ï´Ù.

+ +

°ø¹é ¹®ÀÚ ÇǽÅ

+

+`t¿Í ` °°Àº ÇǽŠ°ø¹é¹®ÀÚ´Â ´õ ÀÌ»ó °¢ ÀÎÀÚÀÇ ¾Õ µÚ¿¡¼­ Á¦°ÅµÇÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, StringReplace s, s, `t´Â ÀÌÁ¦ À¯È¿ÇÏ¸ç ¸ðµç ÅÇ ¹®ÀÚ¸¦ s·ÎºÎÅÍ Á¦°ÅÇÕ´Ï´Ù.

+ + +

Unicode vs ANSI

+

+ÅؽºÆ® °ªÀº Á¾Á¾ ¹®ÀÚ¿­(string)À̶ó°í ºÎ¸¨´Ï´Ù. °¢ ÅؽºÆ®ÀÇ °ªÀÌ ¹®ÀÚ¿­ÀÇ ¿¬¼Ó ¶Ç´Â ÁÙÁö¾î(string) ÀúÀåµÇ¾î Àֱ⠶§¹®ÀÔ´Ï´Ù. °¢ ¹®ÀÚÀÇ ¼ýÄ¡ ¹®ÀÚ ÄÚµå¿Í Å©±â (¹ÙÀÌÆ® ´ÜÀ§)´Â ¾î´À ¹öÀüÀÇ AutoHotkey¸¦ »ç¿ëÇÏ°í Àִ°¡¿¡ ´Þ·Á ÀÖ½À´Ï´Ù: Unicode ¶Ç´Â ANSI. ÀÌ·± ¼¼ºÎ »çÇ×Àº ´ÙÀ½°ú °°Àº ÀÏÀ» ÇÏ·Á´Â ½ºÅ©¸³Æ®¿¡ ÀüÇüÀûÀ¸·Î Áß¿äÇÕ´Ï´Ù:

+
    +
  • DllCallÀ» ÅëÇÏ¿© ¹®ÀÚ¿­À» ¿ÜºÎ ÇÔ¼ö¿¡ Àü´ÞÇÒ ¶§.
  • +
  • PostMessage/SendMessage¸¦ ÅëÇÏ¿© ¹®ÀÚ¿­À» Àü´Þ ÇÒ ¶§.
  • +
  • NumPut/NumGet¸¦ ÅëÇÏ¿© ¹®ÀÚ¿­À» Á¶ÀÛÇÒ ¶§.
  • +
  • VarSetCapacity¸¦ »ç¿ëÇÏ¿© ƯÁ¤ °³¼öÀÇ ¹®ÀÚ¸¦ º¯¼ö¿¡ ´ãÀ» ¼ö ÀÖ´ÂÁö È®ÀÎÇÒ ¶§.
  • +
+

+ÇÑ °¡Áö Çü½Ä¸¸ ¿°µÎ¿¡ µÎ°í ¼³°èµÈ ½ºÅ©¸³Æ®´Â Á¾Á¾ ¾û¶×ÇÑ ¹öÀüÀÇ AutoHotkey·Î ½ÇÇàÇÒ ¶§ ¹®Á¦¿¡ ºÀÂøÇÕ´Ï´Ù. ¿¹¸¦ µé¸é, ¾î¶² ½ºÅ©¸³Æ®°¡ AutoHotkey Basic¿ëÀ¸·Î ÀÛ¼ºµÇ¾ú´Ù¸é ANSI ¹öÀüÀÇ AutoHotkey_L¿¡¼­´Â Àß ÀÛµ¿ÇÏÁö¸¸ À¯´ÏÄÚµå ¹öÀü¿¡¼­´Â ½ÇÆÐÇÕ´Ï´Ù. ¾î´À ¹öÀüÀ» »ç¿ëÇÏ°í ÀÖ´ÂÁö Àß ¸ð¸£°Ú´Ù¸é, ´ÙÀ½ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇØ º¸½Ê½Ã¿À:

+ +
MsgBox % A_IsUnicode ? "Unicode" : "ANSI"
+

+ANSI: °¢ ¹®ÀÚ´Â ÇÑ ¹ÙÀÌÆ® (8 ºñÆ®)ÀÔ´Ï´Ù. 127À» ³Ñ´Â ¹®ÀÚ ÄÚµå´Â ½Ã½ºÅÛÀÇ ¾ð¾î ¼³Á¤¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù.

+

Unicode: °¢ ¹®ÀÚ´Â µÎ ¹ÙÀÌÆ® (16 ºñÆ®)ÀÔ´Ï´Ù. ¹®ÀÚ ÄÚµå´Â UTF-16 Çü½ÄÀ¸·Î Á¤Àǵ˴ϴÙ.

+

Àṉ̀¸Á¶ ÁÖÀÇ: ±â¼úÀûÀ¸·Î, ¾î¶² À¯´ÏÄÚµå ¹®ÀÚ´Â µÎ °³ÀÇ 16-ºñÆ® ÄÚµå ´ÜÀ§·Î Ç¥ÇöµË´Ï´Ù. ÇÕÃļ­ "´ë¸® ½Ö(surrogate pair)"¶ó°í ºÎ¸¨´Ï´Ù. ºñ½ÁÇÏ°Ô, ¾î¶² ANSI ÄÚµå ÆäÀÌÁö´Â (º¸Åë DBCS(Double Byte Character Sets)¶ó°í ºÎ¸§) µÎ ¹ÙÀÌÆ® ¹®ÀÚ¸¦ ´ã°í ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ½Ç¿ëÀûÀÎ ÀÌÀ¯·Î, À̰͵éÀ» °ÅÀÇ ¾ðÁ¦³ª µÎ °³ÀÇ °³º° ´ÜÀ§·Î Ãë±ÞÇÕ´Ï´Ù (´Ü¼øÇÏ°Ô Çϱâ À§ÇØ ±×³É "¹®ÀÚ(characters)"¶ó°í ºÎ¸¨´Ï´Ù).

+ +

VarSetCapacity

+

+VarSetCapacity´Â º¯¼öÀÇ °¡¿ë ´É·ÂÀ» ¹ÙÀÌÆ® ´ÜÀ§·Î ¼³Á¤ÇÕ´Ï´Ù. º¯¼öÀÇ °¡¿ë´É·ÂÀ» ¹®ÀÚÀÇ °³¼ö¿¡ ±â¹ÝÇÏ¿© ¼³Á¤ÇÏ·Á¸é, ¹®ÀÚÀÇ Å©±â¸¦ ¹Ýµå½Ã °í·ÁÇØ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
VarSetCapacity(ansi_var,    capacity_in_chars)
+VarSetCapacity(unicode_var, capacity_in_chars * 2)
+VarSetCapacity(native_var,  capacity_in_chars * (A_IsUnicode ? 2 : 1))
+VarSetCapacity(native_var,  t_size(capacity_in_chars))  ; ¾Æ·¡ ÂüÁ¶
+
+

´ÙÀ½Àº VarSetCapacityÀÇ µÎ °¡Áö ÁÖ¿ä »ç¿ë¹ýÀÔ´Ï´Ù:

+
    +
  1. ¿¹ÃøÇÑ °³¼öÀÇ ¹®ÀÚ¸¦ º¸À¯Çϵµ·Ï º¯¼ö¸¦ È®ÀåÇÕ´Ï´Ù. ±×¸®ÇÏ¿© Á¡ÁøÀû °áÇÕÀ» ÅëÇØ ¹®ÀÚ¿­À» ±¸¼ºÇÒ ¶§ ¼öÇ༺´ÉÀ» °³¼±ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, VarSetCapacity(var, 1000)´Â 1000 ¹ÙÀÌÆ®¸¦ Çã¿ëÇÕ´Ï´Ù. ÀÌ°ÍÀº À¯´ÏÄÚµå ¹öÀüÀÇ AutoHotkey_L¿¡¼­´Â 500 ¹®ÀÚ¿¡ ºÒ°úÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¼öÇ༺´É¿¡ ¿µÇâÀ» ¹ÌÄ¥ ¼ö ÀÖÁö¸¸, ½ºÅ©¸³Æ®´Â ¿©ÀüÈ÷ ¿Ã¹Ù¸£°Ô ÀÛµ¿ÇÕ´Ï´Ù.
  2. +
  3. º¯¼ö Å©±â¸¦ Á¶Á¤ÇØ ÀÌÁø ±¸Á¶Ã¼¸¦ ´ã½À´Ï´Ù. ±¸Á¶Ã¼¿¡ Á÷Á¢ÀûÀ¸·Î ÅؽºÆ®°¡ ´ã°Ü ÀÖ´Ù¸é, ±× ÅؽºÆ®ÀÇ Çü½ÄÀ» ¹Ýµå½Ã °í·ÁÇØ¾ß ÇÕ´Ï´Ù. Çü½ÄÀº ±¸Á¶Ã¼¿¡ µû¶ó ´Ù¸¨´Ï´Ù - ¾î¶² °æ¿ì´Â À¯´ÏÄÚµå ¹öÀüÀÇ AutoHotkey_L¿¡¼­µµ ANSI ÅؽºÆ®°¡ »ç¿ëµË´Ï´Ù. º¯¼ö°¡ ³Ê¹« ÀÛÀ¸¸é, ½ºÅ©¸³Æ®´Â Ãæµ¹Çϰųª ¾Æ´Ï¸é ¿¹»óÇÏÁö ¸øÇÑ ÇàÀ§¸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù (±¸Á¶Ã¼¸¦ ¾î¶»°Ô »ç¿ëÇϴ°¡¿¡ µû¶ó).
  4. +
+ +

DllCall

+

+"Str" À¯ÇüÀÌ »ç¿ëµÉ ¶§, ÇöÀç ºôµåÀÇ °íÀ¯ À¯ÇüÀÇ ¹®ÀÚ¿­À̶ó´Â ¶æÀÔ´Ï´Ù. ¾î¶² ÇÔ¼ö´Â ƯÁ¤ÇÑ ÇüÅÂÀÇ ¹®ÀÚ¿­À» ¿ä±¸Çϰųª µ¹·ÁÁֱ⠶§¹®¿¡, ´ÙÀ½ÀÇ ¹®ÀÚ¿­ À¯ÇüÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:

+ + + + + +
 ¹®ÀÚ Å©±âC / Win32 TypesÀÎÄÚµù
WStr16-ºñÆ®wchar_t*, WCHAR*, LPWSTR, LPCWSTRUTF-16
AStr8-ºñÆ®char*, CHAR*, LPSTR, LPCSTRANSI (½Ã½ºÅÛ ±âº» ANSI ÄÚµå ÆäÀÌÁö)
Str--TCHAR*, LPTSTR, LPCTSTRÀ¯´ÏÄÚµå ºôµåÀÇ WStr ±×¸®°í ANSI ºôµåÀÇ AStr°ú µ¿µî.
+

+"Str" ¶Ç´Â ÇöÀç ºôµå¿¡ ´ëÇÏ¿© ±×¿Í µ¿µîÇÑ À¯ÇüÀÌ ¸Å°³º¯¼ö·Î »ç¿ëµÇ¸é, ±× ¹®ÀÚ¿­ ¶Ç´Â º¯¼öÀÇ ÁÖ¼Ò°¡ ÇÔ¼ö¿¡ °Ç³×Áý´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ´ë½Å¿¡ ¹®ÀÚ¿­ÀÇ Àӽà »çº»ÀÌ ¿øÇÏ´Â Æ÷¸ËÀ¸·Î »ý¼ºµÇ°í °Ç³×Áý´Ï´Ù. ÀϹÝÀûÀ¸·Î, "AStr" ±×¸®°í "WStr"Àº ÇÔ¼ö°¡ ±× ¸Å°³º¯¼ö¿¡ º¯¼ö¸¦ ¾µ ¶§ »ç¿ëÇÏ¸é ¾È µË´Ï´Ù.

+

+ÁÖÀÇ: "AStr" ±×¸®°í "WStr"Àº ¸Å°³º¯¼ö¿¡ ´ëÇÏ¿© ±×¸®°í ±× ÇÔ¼öÀÇ ¹Ýȯ °ª¿¡ ´ëÇÏ¿© ¶È °°ÀÌ À¯È¿ÇÕ´Ï´Ù.

+

+ÀϹÝÀûÀ¸·Î, ½ºÅ©¸³Æ®°¡ ¹®ÀÚ¿­À» ¸Å°³º¯¼ö·Î ¹Þ´Â ÇÔ¼ö¸¦ DllCall¸¦ ÅëÇÏ¿© È£ÃâÇϸé, ´ÙÀ½ Á¢±Ù¹ý Áß Çϳª¸¦ ÃëÇØ¾ß ÇÕ´Ï´Ù:

+
    +
  1. +ÇÔ¼ö¸¦ Unicode (W) ¹öÀü°ú ANSI (A) ¹öÀüÀ¸·Î ¸ðµÎ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸é, ÇöÀç ºôµå¿¡ ´ëÇÏ¿© ÀûÀýÇÑ ¹öÀüÀ» È£ÃâÇÕ´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­, "DeleteFile"Àº ³»ºÎÀûÀ¸·Î "DeleteFileA" ¶Ç´Â "DeleteFileW"À̶ó°í ºÎ¸¨´Ï´Ù. "DeleteFile" ÀÚü´Â ½ÇÁ¦·Î Á¸ÀçÇÏÁö ¾ÊÀ¸¹Ç·Î, DllCallÀº ÀÚµ¿À¸·Î ÇöÀç ºôµå¿¡ ´ëÇÏ¿© ÀûÀýÇÏ°Ô "A" ¶Ç´Â "W"¸¦ ½ÃµµÇÕ´Ï´Ù: + +
    DllCall("DeleteFile", "Ptr", &filename)
    +DllCall("DeleteFile", "Str", filename)
    +

    + ´ÙÀ½ ¿¹Á¦¿¡¼­, &filenameÀº ¹®ÀÚ¿­ÀÇ ÁÖ¼Ò¸¦ Á¤È®ÇÏ°Ô ÀÖ´Â ±×´ë·Î °Ç³Ü´Ï´Ù. ±×·¡¼­ ÇÔ¼ö´Â ¹®ÀÚ¿­À» "Str" À¯Çü°ú °°Àº Çü½ÄÀ̶ó°í ¿¹»óÇØ¾ß ÇÕ´Ï´Ù. AutoHotkey Basic¿¡¼­ "UInt"¸¦ "Ptr" ´ë½Å¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª °á°ú ÄÚµå´Â 64-ºñÆ®¿Í ȣȯµÇÁö ¾Ê½À´Ï´Ù.

    +

    + ÁÖÀÇ: ÇÔ¼ö¸¦ Á¤È®ÇÏ°Ô ÁöÁ¤µÈ ´ë·Î ¹ß°ßÇÒ ¼ö ¾øÀ¸¸é, AutoHotkey_LÀº ¾î´À DLLÀÌ ÁöÁ¤µÇ¾î Àִ°¡¿¡ »ó°ü ¾øÀÌ "A" ¶Ç´Â "W" Á¢µÎ»ç¸¦ µ¡ºÙÀÔ´Ï´Ù. ±×·¸Áö¸¸, AutoHotkey BasicÀº User32.dll, Kernel32.dll, ComCtl32.dll, ¶Ç´Â Gdi32.dll¿¡ ÀÖ´Â ÇÔ¼ö¿¡ ´ëÇؼ­¸¸ "A" Á¢µÎ»ç¸¦ ºÙÀÔ´Ï´Ù.

  2. +
  3. ÇÔ¼ö°¡ ¿ÀÁ÷ ƯÁ¤ À¯ÇüÀÌ ¹®ÀÚ¿­¸¸ ÀÔ·ÂÀ¸·Î ¹Þ´Â´Ù¸é, ±× ½ºÅ©¸³Æ®´Â ÀûÀýÇÑ ¹®ÀÚ¿­ À¯ÇüÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù: +
    DllCall("DeleteFileA", "AStr", filename)
    +DllCall("DeleteFileW", "WStr", filename)
  4. +
  5. + ÇÔ¼ö°¡ (ºñ-°íÀ¯ Çü½ÄÀ¸·Î) ¹®ÀÚ¿­À» ¼öÁ¤ÇØ¾ß ÇÑ´Ù¸é, ½ºÅ©¸³Æ®´Â ¹öÆÛ¸¦ À§¿¡ ±â¼úÇÑ ´ë·Î ÇÒ´çÇÏ°í ±×ÀÇ ÁÖ¼Ò¸¦ ÇÔ¼ö¿¡ °Ç³×¾ß ÇÕ´Ï´Ù. ¸Å°³º¯¼ö°¡ ÀÔ·ÂÀ» ¹Þ´Â´Ù¸é, ½ºÅ©¸³Æ®´Â ¶ÇÇÑ ÀÔ·Â ¹®ÀÚ¿­µµ ÀûÀýÇÑ Çü½ÄÀ¸·Î º¯È¯ÇØ¾ß ÇÕ´Ï´Ù; StrPutÀ» »ç¿ëÇÏ¸é º¯È¯ÇÒ ¼ö ÀÖ½À´Ï´Ù.
  6. +
+ +

NumPut / NumGet

+

+NumPutÀ̳ª NumGetÀÌ ¹®ÀÚ¿­¿¡ »ç¿ëµÉ ¶§, ÁÖ¾îÁø À¯ÇüÀÇ ¹®ÀÚ¿­¿¡ ´ëÇÏ¿© ¿ÀÇÁ¼Â°ú À¯ÇüÀÌ Á¤È®ÇØ¾ß ÇÕ´Ï´Ù. ´ÙÀ½À» ÁöħÀ¸·Î »ïÀ¸½Ê½Ã¿À:

+
;  8-bit/ANSI   strings:  size_of_char=1  type_of_char="Char"
+; 16-bit/UTF-16 strings:  size_of_char=2  type_of_char="UShort"
+nth_char := NumGet(var, (n-1)*size_of_char, type_of_char)
+NumPut(nth_char, var, (n-1)*size_of_char, type_of_char)
+

+var¿¡ À½¼ö ÇüÅÂÀÇ ¹®ÀÚ¿­ÀÌ µé¾î ÀÖ´Ù¸é, ÀûÀýÇÑ °ªÀº A_IsUnicode¿¡ ±â¹ÝÇÏ¿© °áÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
nth_char := NumGet(var, t_size(n-1), t_char())
+NumPut(nth_char, var, t_size(n-1), t_char())
+
+; Æí¸®¼º°ú ¸í·á¼ºÀ» À§ÇØ ÇÔ¼ö¸¦ Á¤ÀÇÇÕ´Ï´Ù:
+t_char() {
+    return A_IsUnicode ? "UShort" : "Char"
+}
+t_size(char_count=1) {
+    return A_IsUnicode ? char_count*2 : char_count
+}
+ +

Æ÷ÀÎÅÍ Å©±â

+

+Æ÷ÀÎÅÍ Å©±â´Â 32-ºñÆ® ºôµå¿¡ ´ëÇÏ¿© 4 ¹ÙÀÌÆ® (AutoHotkey Basic Æ÷ÇÔ) 64-ºñÆ® ºôµå¿¡ ´ëÇÏ¿© 8 ¹ÙÀÌÆ®ÀÔ´Ï´Ù. ±¸Á¶Ã¼³ª DllCallÀ» »ç¿ëÇÏ´Â ½ºÅ©¸³Æ®´Â µÎ Ç÷§Æû¿¡¼­ ¸ðµÎ ¿Ã¹Ù¸£°Ô ÀÛµ¿ÇÏ·Á¸é ÀÌ »ç½ÇÀ» °í·ÁÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ¿µÇâÀ» ¹Þ´Â ±¸Ã¼ÀûÀÎ ¿µ¿ªÀº ´ÙÀ½°ú °°½À´Ï´Ù:

+
    +
  • ¿©·¯ Æ÷ÀÎÅ͸¦ °¡Áø ±¸Á¶Ã¼ÀÇ Çʵ忡 ´ëÇÑ ¿ÀÇÁ¼Â °è»ê.
  • +
  • ¿©·¯ Æ÷ÀÎÅ͸¦ °¡Áø ±¸Á¶Ã¼ÀÇ Å©±â °è»ê.
  • +
  • DllCall, NumPut ¶Ç´Â NumGet¿¡ »ç¿ëµÇ´Â À¯Çü À̸§.
  • +
+

+Å©±â¿Í ¿ÀÇÁ¼Â °è»êÀº A_PtrSizeÀ» »ç¿ëÇϽʽÿÀ. DllCall, NumPut ±×¸®°í NumGet¿¡´Â ÀûÀýÇÏ°Ô Ptr À¯ÇüÀ» »ç¿ëÇϽʽÿÀ.

+

+ÇʵåÀÇ ¿ÀÇÁ¼ÂÀº º¸Åë ±× ¾Õ¿¡ ÀÖ´Â ¸ðµç ÇʵåÀÇ Àüü Å©±âÀÓÀ» ±â¾ïÇϽʽÿÀ. ¶Ç Çڵ鵵 (HWND¿Í HBITMAP °°Àº À¯ÇüÀ» Æ÷ÇÔÇÏ¿©) º»ÁúÀûÀ¸·Î Æ÷ÀÎÅÍ-À¯ÇüÀÓÀ» ¸í½ÉÇϽʽÿÀ.

+
/*
+  typedef struct _PROCESS_INFORMATION {
+    HANDLE hProcess;    // Ptr
+    HANDLE hThread;
+    DWORD  dwProcessId; // UInt (4 bytes)
+    DWORD  dwThreadId;
+  } PROCESS_INFORMATION, *LPPROCESS_INFORMATION;
+*/
+VarSetCapacity(pi, A_PtrSize*2 + 8) ; Ptr + Ptr + UInt + UInt
+DllCall("CreateProcess", <omitted for brevity>, "Ptr", &pi, <omitted>)
+hProcess    := NumGet(pi, 0)         ; Defaults to "Ptr".
+hThread     := NumGet(pi, A_PtrSize) ;
+dwProcessId := NumGet(pi, A_PtrSize*2,     "UInt")
+dwProcessId := NumGet(pi, A_PtrSize*2 + 4, "UInt")
+
+ + +














+ + diff --git a/src/docs/FAQ.htm b/src/docs/FAQ.htm new file mode 100644 index 0000000..b9ef659 --- /dev/null +++ b/src/docs/FAQ.htm @@ -0,0 +1,382 @@ + + + + +AutoHotkey FAQ + + + + + +

ÀÚÁÖ ¹¯´Â Áú¹®(FAQ)

+ +

¿©·¯ºÐÀÇ Áú¹®ÀÌ ¾Æ·¡ ¸®½ºÆ®¿¡ ¾ø´Ù¸é, °øµ¿Ã¼°¡ ¿î¿µÇÏ´Â autoHotkey.netÀÇ FAQ¸¦ Á¡°ËÇØ º¸½Ê½Ã¿À.

+ +

¾ð¾î ±¸¹®

+ +

ÀϹÝÀû °ú¾÷

+ +

ÇÖÅ°, ÇÖ½ºÆ®¸µ, ±×¸®°í ¸®¸ÊÇÎ

+ +

¾ð¾î ±¸¹®

+

¾ðÁ¦ Àοë Ç¥½ÄÀ» ¸í·É¾î¿Í ±×ÀÇ ¸Å°³º¯¼ö¿¡ »ç¿ëÇϴ°¡?

+

+µÎ°ã µû¿ÈÇ¥ (")´Â Ç¥Çö½Ä ¾È¿¡¼­¸¸ Ưº°ÇÑ Àǹ̰¡ ÀÖ½À´Ï´Ù. ´Ù¸¥ °÷¿¡¼­´Â ¹®ÀÚ ±×´ë·Î ¸¶Ä¡ Á¤»ó ¹®ÀÚó·³ Ãë±ÞµË´Ï´Ù. ±×·¸Áö¸¸, ½ºÅ©¸³Æ®°¡ ÇÁ·Î±×·¥À» ±âµ¿½ÃÅ°°Å³ª ¹®¼­¸¦ ¿­¶§, ¿î¿µ üÁ¦´Â º¸Åë °ãµû¿ÈÇ¥°¡ ¸í·É¾î-ÁÙ ¸Å°³º¯¼ö¿¡ µÑ·¯Á® Àֱ⸦ ¿ä±¸ÇÕ´Ï´Ù. ´ÙÀ½ ¿¹Á¦Ã³·³, ¾È¿¡ °ø¹éÀÌ ÀÖÀ¸¸é ¸»ÀÔ´Ï´Ù: Run, Notepad.exe "C:\My Documents\Address List.txt".

+ +

Á¤È®ÇÏ°Ô ¾ðÁ¦ º¯¼ö À̸§À» ÆÛ¼¾Æ® ±âÈ£·Î µÑ·¯½Î´Â°¡?

+

+º¯¼ö À̸§Àº ¾ðÁ¦³ª ÆÛ¼¾Æ® ±âÈ£·Î µÑ·¯½Ô´Ï´Ù. ´Ü, ¾Æ·¡ÀÇ º¼µåü·Î º¸¿©ÁØ °ÍÀº Á¦¿ÜÇÕ´Ï´Ù:

+

1) ÀÔ·Â º¯¼ö³ª Ãâ·Â º¯¼öÀÎ ¸Å°³º¯¼ö¿¡: StringLen, OutputVar, InputVar
+ 2) ÇÒ´çÀÇ ¿ÞÂÊ¿¡: Var = 123abc
+ 3) ÀüÅëÀûÀÎ (ºñ-Ç¥Çö½Ä) if-¼­¼ú¹®ÀÇ ¿ÞÂÊ¿¡: If Var1 < %Var2%
+4) Ç¥Çö½ÄÀÇ ¸ðµç °÷¿¡. ¿¹¸¦ µé¾î:

+
If (Var1 <> Var2)
+    Var1 := Var2 + 100
+ +

¾ðÁ¦ ÆÛ¼¾Æ® ±âÈ£¿Í ¼ûÇ¥¸¦ ÇǽŽÃÄÑ¾ß Çϴ°¡?

+

+¹®ÀÚ ±×´ë·ÎÀÇ ÆÛ¼¾Æ® ±âÈ£´Â ¹Ýµå½Ã ÇǽŽÃÄÑ¾ß ÇÕ´Ï´Ù. ¾Õ¿¡´Ù ¾×¼¾Æ®/¹éƽÀ» ºÙÀÌ¸é µË´Ï´Ù. ¿¹¸¦ µé¾î: MsgBox ÇöÀç ¹éºÐ·üÀº 25`% ÀÔ´Ï´Ù. +¹®ÀÚ ±×´ë·ÎÀÇ ½°Ç¥µµ ¹Ýµå½Ã ÇǽŽÃÄÑ¾ß ÇÕ´Ï´Ù (`,). ´Ü, MsgBox ¶Ç´Â ¸í·É¾îÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö·Î »ç¿ëµÉ ¶§´Â Á¦¿ÜÇÕ´Ï´Ù (ÀÌ °æ¿ì ¾×¼¾Æ®´Â Çã¿ëµÇÁö¸¸ Çʼö´Â ¾Æ´Õ´Ï´Ù).

+

+½°Ç¥³ª ÆÛ¼¾Æ® ±âÈ£°¡ Ç¥Çö½Ä ¾È¿¡¼­ µû¿ÈÇ¥·Î µÑ·¯ ½ÎÀ̸é, ¾×¼¾Æ®´Â Çã¿ëµÇÁö¸¸ Çʼö´Â ¾Æ´Õ´Ï´Ù. ¿¹¸¦ µé¾î: Var := "15%".

+ +

ÀϹÝÀûÀÎ °ú¾÷

+ +

°ø½Ä ºôµå ¶Ç´Â ¿¹Àü ¹èÆ÷º»Àº ¾îµð¿¡¼­ ãÀ» ¼ö Àִ°¡?

+

+¿ÀÅäÇÖÅ° ³»·Á¹Þ±â ÆäÀÌÁö¸¦ ÂüÁ¶ÇÕ´Ï´Ù.

+ +

¿Ö ½ºÅ©¸³Æ®¿¡¼­ ¾î¶² ÁÙÀº Àý´ë·Î ½ÇÇàµÇÁö ¾Ê´Â°¡?

+

+¾î¶² ÁÙÀ̵ç Áï½Ã ½ÇÇàÇÏ°í ½Í´Ù¸é ½ºÅ©¸³Æ®°¡ ½ÇÇàµÉ ¶§ »ó´Ü¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ±× ´ÙÀ½¿¡ ÇÖÅ°, ÇÖ½ºÆ®¸µ, ¶Ç´Â ReturnÀÌ ³ª¿Í¾ß ÇÕ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ °ÍÀº ÀÚµ¿-½ÇÇà ¼½¼ÇÀ» ÂüÁ¶ÇϽʽÿÀ.

+

¶ÇÇÑ, ÇÑ ÁÙ ÀÌ»ó ½ÇÇàÇÏ´Â ÇÖÅ°´Â ±×ÀÇ Ã¹ ¹ø° ÁÙÀÌ ÇÖÅ° ¹Ù·Î ¾Æ·¡¿¡ ³ªÅ¸³ª¾ß ÇÕ´Ï´Ù. °°Àº ÁÙÀÌ ¾Æ´Õ´Ï´Ù. ¿¹¸¦ µé¾î:

+
#space::  ; Win+Spacebar
+Run Notepad
+WinWaitActive Untitled - Notepad
+WinMaximize
+return
+ +

¿Ö ½ºÅ©¸³Æ®°¡ XP¿¡¼­´Â Àß ½ÇÇàµÇ´Âµ¥ Vista³ª Windows 7 ¶Ç´Â 8¿¡¼­´Â ½ÇÇàµÇÁö ¾Ê´Â°¡?

+

+¿î¿µÃ¼Á¦¸¦ ÀüȯÇϸé, ´Ù¸¥ ¹«¾ð°¡µµ ¿ª½Ã ¹Ù²ð °¡´É¼ºÀÌ ³ô½À´Ï´Ù. ±× ¶§¹®¿¡ ½ºÅ©¸³Æ®¿¡ ¿µÇâÀ» ³¢Ä¥ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é, »õ ÄÄÇ»Å͸¦ ±¸ÀÔÇß´Ù¸é, ¿¹Àü ÄÄÇ»ÅÍ¿Í ¾î¶»°Ôµç ´Ù¸¦ °Ì´Ï´Ù. ¶Ç »õ·Î¿î ¹öÀüÀÇ ¿ÀÅäÇÖÅ°·Î ¾÷±×·¹À̵åÇß´Ù¸é, ¿¹Àü¿¡´Â ¾î¶² ¹öÀüÀ̾ú´ÂÁö ¾Ë¾Æº¸°í º¯°æ ±â·Ï°ú ȣȯ¼º ³ëÆ®¸¦ Á¡°ËÇØ º¸½Ê½Ã¿À.

+

+XP¿¡¼­ ºñ½ºÅ¸³ª ±× ÀÌÈÄ ¹öÀüÀÇ À©µµ¿ìÁî·Î ÀÌÀüÇϸé ÀÚÁÖ ¹ß»ýÇÏ´Â ¹®Á¦´Â ÇÁ·Î±×·¥ÀÌ "½Â°ÝµÇ¾î ¹ö·Á¼­" (°ü¸®ÀÚ·Î ½ÇÇàµÇ¾î ¹ö¸®¹Ç·Î) ÇÖÅ°°¡ ¸·È÷°Å³ª ÀÚµ¿È­µÇ±â¸¦ °ÅºÎÇÕ´Ï´Ù. Àû¾îµµ ¼¼°¡Áö ÇØ°áÃ¥ÀÌ ÀÖ½À´Ï´Ù:

+
    +
  • AutoHotkey.exe¸¦ ¼öÁ¤Çؼ­ °ü¸®ÀÚ ÇÁ·Î±×·¥°ú »óÈ£ÀÛ¿ëÇϵµ·Ï ¸¸µì´Ï´Ù. ÀÌ ¹æ¹ýÀº ¾à°£ °áÁ¡ÀÌ ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ´ÙÀ½À» ÂüÁ¶ÇÕ´Ï´Ù: http://www.autohotkey.com/board/topic/70449-enable-interaction-with-administrative-programs/
  • +
  • ½ºÅ©¸³Æ®¸¦ °ü¸®ÀÚ·Î ½ÇÇàÇÕ´Ï´Ù. ÀÌ °æ¿ìµµ ¿ª½Ã ÇÁ·Î±×·¥¿¡ ¹®Á¦¸¦ ÀÏÀ¸Å³ ¼ö ÀÖ½À´Ï´Ù.
  • +
  • »ç¿ëÀÚ °èÁ¤ Á¦¾î¸¦ ¸·¾Æ ¹ö¸³´Ï´Ù (±ÇÀåÇÏÁö ¾Ê½À´Ï´Ù); Windows 8 ÀÌÈÄ´Â º¸¾È ¼³Á¤À» ¹«·ÂÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù. "°ü¸®ÀÚ ½ÂÀÎ ¸ðµå¿¡¼­ ¸ðµç ÇÁ·Î±×·¥À» ½ÇÇà"À» ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù (¿ª½Ã ±ÇÀåÇÏÁö ¾Ê½À´Ï´Ù).
  • +
+

SoundGet, SoundSet, SoundGetWaveVolume ±×¸®°í SoundSetWaveVolume´Â ºñ½ºÅ¸ ÀÌÀü ÀÌÈÄ ¹öÀü¿¡ µû¶ó ´Ù¸£°Ô ÇൿÇÕ´Ï´Ù. ƯÈ÷, ÀåÄ¡ ¹øÈ£°¡ ´Ù¸£°í ¾î¶² ÄÄÆ÷³ÍÆ®´Â »ç¿ëÇÒ ¼öÁ¶Â÷ ¾ø½À´Ï´Ù. ÇàÀ§´Â ¿Àµð¿À µå¶óÀ̹ö¿¡ µû¶ó ´Ù¸¨´Ï´Ù. XP¿¡ »ç¿ëµÇ´Â µå¶óÀ̹ö¶ó¸é ´ç¿¬È÷ ´Ù¸¦ °Ì´Ï´Ù. »ç¿îµå Ä«µå ºÐ¼® ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ¸é ¿Ã¹Ù¸¥ ÀåÄ¡ ¹øÈ£¸¦ ãÀ» ¼ö ÀÖ½À´Ï´Ù.

+ +

Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» ÅëÇÏ¿© ½ºÅ©¸³Æ®¸¦ ÆíÁýÇÒ ¼ö ¾ø´Ù. ¿¡·¯ ¶§¹®¿¡ ½ÃÀÛÁ¶Â÷ ÇÏÁö ¾Ê´Â´Ù. ¾î¶»°Ô ÇØ¾ß Çϴ°¡?

+

+½ºÅ©¸³Æ®ÀÇ ¿¡·¯¸¦ ¸ÕÀú ¼öÁ¤ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ±× ´ÙÀ½¿¡ Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» ´Ù½Ã ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ¸ÕÀú, ÇØ´ç ½ºÅ©¸³Æ® ÆÄÀÏÀ» ãÀ» ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.

+

´ÙÀ½ µð·ºÅ丮¿¡¼­ AutoHotkey.ahk¸¦ ã½À´Ï´Ù:

+
    +
  • ³ªÀÇ ¹®¼­ (¶Ç´Â My Documents) Æú´õ.
  • +
  • ¿ÀÅäÇÖÅ°¸¦ ¼³Ä¡ÇÑ µð·ºÅ丮. º¸Åë C:\Program Files\AutoHotkey. + ¿ÀÅäÇÖÅ°¸¦ ¼³Ä¡ÇÏ°í »ç¿ëÇÏ°í ÀÖ´Ù¸é, AutoHotkey.exe°¡ µé¾î ÀÖ´Â µð·ºÅ丮¸¦ µé¿©´Ù º¾´Ï´Ù.
  • +
+

+¶Ç´Ù¸¥ ¿ÀÅäÇÖÅ° ½ÇÇàÆÄÀÏÀ» Á÷Á¢ÀûÀ¸·Î ½ÇÇàÇÏ°í ÀÖ´Ù¸é, ±× ½ºÅ©¸³Æ®ÀÇ À̸§Àº ½ÇÇàÆÄÀÏ¿¡ µû¶ó ´Ù¸¨´Ï´Ù. ¿¹¸¦ µé¾î, AutoHotkeyU32.exe¸¦ ½ÇÇàÇÏ°í ÀÖ´Ù¸é, AutoHotkeyU32.ahk¸¦ ã½À´Ï´Ù. ¿©·¯ºÐÀÇ ½Ã½ºÅÛ¿¡ µû¶ó ".ahk" ºÎºÐÀÌ °¨Ãß¾îÁ® ÀÖÀ» ¼ö ÀÖÁö¸¸, ±× ÆÄÀÏÀº ºÐ¸íÈ÷ [H]¿Í °°Àº ¾ÆÀÌÄÜÀÌ ÀÖ½À´Ï´Ù.

+

+º¸Åë ½ºÅ©¸³Æ® ÆÄÀÏ¿¡ ¿ìŬ¸¯Çؼ­ Edit Script¸¦ ¼±ÅÃÇϸé ÆíÁýÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö ¾Ê´Ù¸é, ÆÄÀÏÀ» ³ëÆ®Æе峪 ±âŸ ´Ù¸¥ ÆíÁý±â·Î ¿­ ¼ö ÀÖ½À´Ï´Ù.

+

+AutoHotkey¸¦ ½ÃÀÛ ¸Þ´º·ÎºÎÅÍ ±âµ¿Ç߰ųª ¶Ç´Â Á÷Á¢ AutoHotkey.exe¸¦ (¸í·É¾î ÁÙ ¸Å°³º¯¼ö ¾øÀÌ) ½ÇÇàÇß´Ù¸é, À§¿¡ º¸¿©ÁØ À§Ä¡ Áß Çϳª¿¡¼­ ½ºÅ©¸³Æ®¸¦ ã½À´Ï´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î ¾Æ¹«µ¥³ª ¿øÇÏ´Â °÷¿¡ ½ºÅ©¸³Æ® ÆÄÀÏÀ» ¸¸µé¾î¼­ (something.ahk), ¿ÀÅäÇÖÅ°¸¦ ½ÇÇàÇÏ´Â ´ë½Å¿¡ ±× ½ºÅ©¸³Æ® ÆÄÀÏÀ» ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+¶Ç ¸í·É¾î ÁÙ ¸Å°³º¯¼ö "½ºÅ©¸³Æ® ÆÄÀÏÀ̸§" ±×¸®°í AutoHotkey.exeÀÇ À̽ļºÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

Äڵ忡¼­ ¿¡·¯¸¦ ¾î¶»°Ô ¹ß°ßÇÏ°í °íÄ¥ ¼ö Àִ°¡?

+

+°£´ÜÇÑ ½ºÅ©¸³Æ®¶ó¸é ½ºÅ©¸³Æ® µð¹ö±ëÇϱ⸦ ÂüÁ¶ÇÕ´Ï´Ù. º¯¼öÀÇ ³»¿ëÀ» º¸¿©ÁÖ·Á¸é, MsgBox ¶Ç´Â ToolTipÀ» »ç¿ëÇÕ´Ï´Ù. +º¹ÀâÇÑ ½ºÅ©¸³Æ®¶ó¸é »óÈ£´ëÈ­ µð¹ö±ëÀ» ÂüÁ¶ÇÕ´Ï´Ù.

+ +

AHK¸¦ USB µå¶óÀ̺꿡¼­ ½ÇÇàÇÒ ¼ö Àִ°¡?

+

+AutoHotkey.exeÀÇ À̽ļºÀ» ÂüÁ¶ÇϽʽÿÀ. ÀÚµ¿-Æ÷ÇÔ ÇÔ¼ö ¶óÀ̺귯¸®¸¦ »ç¿ëÇÑ´Ù¸é, AutoHotkey.exe¿Í Lib Æú´õ´Â Ahk2Exe.exeº¸´Ù ÇÑ ´Ü°è ³ôÀº Æú´õ¿¡ À§Ä¡ÇØ¾ß ÇÕ´Ï´Ù (¿¹, \AutoHotkey.exe vs \Compiler\Ahk2Exe.exe). +¶Ç Ahk2Exe´Â ¼³Á¤À» ´ÙÀ½ ·¹Áö½ºÆ®¸® Å°¿¡ ÀúÀåÇÑ´Ù´Â °Í¿¡µµ ÁÖ¸ñÇϽʽÿÀ: HKEY_CURRENT_USER\Software\AutoHotkey\Ahk2Exe.

+ +

¿Ö Run ¸í·É¾î°¡ °ÔÀÓÀ̳ª ÇÁ·Î±×·¥À» ±âµ¿½ÃÅ°Áö ¸øÇϴ°¡?

+

+¾î¶² ÇÁ·Î±×·¥Àº ÀڽŸ¸ÀÇ µð·ºÅ丮¿¡¼­ ½ÃÀÛÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù (Àß ¸ð¸£°Ú´Ù¸é, º¸Åë ±×·¸°Ô ÇÏ´Â °ÍÀÌ °¡Àå ÁÁ½À´Ï´Ù). ¿¹¸¦ µé¾î:

+
Run, %A_ProgramFiles%\Some Application\App.exe, %A_ProgramFiles%\Some Application
+ +

¾î¶»°Ô ¸í·É ÁÙ ¿¬»êÀÇ Ãâ·Â °á°ú¸¦ ¿­¶÷ÇÒ ¼ö Àִ°¡?

+

+Å×½ºÆ®¿¡ ÀÇÇϸé ÆÄÀÏ Ä³½³ ¶§¹®¿¡, Àӽà ÆÄÀÏÀº »ó´ëÀûÀ¸·Î ÀÛÀº Ãâ·Â¿¡ ¾ÆÁÖ ºü¸¦ ¼ö ÀÖ½À´Ï´Ù. +»ç½Ç, ±× ÆÄÀÏÀÌ »ç¿ëµÈ ÈÄ °ð¹Ù·Î »èÁ¦µÈ´Ù¸é, ½ÇÁ¦·Î µð½ºÅ©¿¡ ¾º¿©ÁöÁö Á¶Â÷ ¾Ê´Â °æ¿ì°¡ Á¾Á¾ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
RunWait %comspec% /c dir > C:\My Temp File.txt
+FileRead, VarToContainContents, C:\My Temp File.txt
+FileDelete, C:\My Temp File.txt
+

+Àӽà ÆÄÀÏÀÇ »ç¿ëÀ» ÇÇÇÏ·Á¸é (ƯÈ÷ Ãâ·ÂÀÌ Å¬ ¶§), Run ¸í·É¾î¿¡ ¿¹Á¦¿¡ º¸¿©ÁØ ¹Ù¿Í °°ÀÌ Shell.Exec() ¸Þ½îµåÀÇ »ç¿ëÀ» °í·ÁÇØ º¸½Ê½Ã¿À.

+ +

¾î¶»°Ô ½ºÅ©¸³Æ®°¡ ´Ù¸¥ ½ºÅ©¸³Æ®¸¦ ´Ý°í, ¸ØÃ߸ç, ¶Ç´Â º¸·ùÇϵµ·Ï ¸¸µé ¼ö Àִ°¡?

+

+¸ÕÀú, ´ÙÀ½Àº ¶Ç´Ù¸¥ ½ºÅ©¸³Æ®¸¦ ´Ý´Â ¿¹ÀÔ´Ï´Ù:

+ +
DetectHiddenWindows On  ; ½ºÅ©¸³Æ®ÀÇ ¼û°ÜÁø ¸ÞÀΠâÀ» ŽÁöµÇµµ·Ï Çã¿ëÇÕ´Ï´Ù.
+SetTitleMatchMode 2  ; ¾Æ·¡ ÆÄÀÏÀÇ Àüü °æ·Î¸¦ ÁöÁ¤ÇÒ Çʿ並 ȸÇÇÇÕ´Ï´Ù.
+WinClose Script's File Name.ahk - AutoHotkey  ; ÀÌ°ÍÀ» °»½ÅÇÏ¿© ½ºÅ©¸³Æ®ÀÇ À̸§À» ¹Ý¿µÇÕ´Ï´Ù (´ë¼Ò¹®ÀÚ ±¸ºÐ).
+ +

+¶Ç´Ù¸¥ ½ºÅ©¸³Æ®¸¦ º¸·ùÇϰųª ¶Ç´Â Á¤ÁöÇÏ·Á¸é, À§¿¡¼­ ¸¶Áö¸· ÁÙÀ» ´ÙÀ½À¸·Î ±³Ã¼ÇÕ´Ï´Ù:

+ +
PostMessage, 0x111, 65305,,, Script's File Name.ahk - AutoHotkey  ; Suspend.
+PostMessage, 0x111, 65306,,, Script's File Name.ahk - AutoHotkey  ; Pause.
+ +

½ºÅ©¸³Æ®¸¦ ³¡³»Áö ¾Ê°í ¾î¶»°Ô ¹Ýº¹ ÇàÀ§¸¦ ¸ØÃâ ¼ö Àִ°¡?

+

+Àüü ½ºÅ©¸³Æ®¸¦ Å°°¡ ´­¸± ¶§ Á¤ÁöÇϰųª Àç°³ÇÏ·Á¸é, ÇÖÅ°¸¦ Pause ¸í·É¾î¿¡ ÇÒ´çÇÕ´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ:

+
^!p::Pause  ; Ctrl+Alt+P¸¦ ´­·¯ Á¤ÁöÇÕ´Ï´Ù. ´Ù½Ã ´©¸£¸é Àç°³ÇÕ´Ï´Ù.
+

+ȸµ¹ÀÌ ¾È¿¡¼­ ¹Ýº¹µÇ´Â ÇàÀ§¸¦ ¸ØÃß·Á¸é, ´ÙÀ½ÀÇ ÀÛµ¿ÇÏ´Â ¿¹Á¦¸¦ ¿¬±¸ÇØ º¸½Ê½Ã¿À. ÇÖÅ° Çϳª·Î ¹Ýº¹ ÇàÀ§¸¦ ½ÃÀÛÇÏ°í ¸ØÃä´Ï´Ù. ´Ù¸¥ ¸»·Î Çϸé, ÇÖÅ°¸¦ Çѹø ´©¸£¸é ȸµ¹À̸¦ ½ÃÀÛÇÕ´Ï´Ù. ±× ÇÖÅ°¸¦ ´Ù½Ã ´©¸£¸é ȸµ¹À̸¦ ¸ØÃä´Ï´Ù.

+
#MaxThreadsPerHotkey 3
+#z::  ; Win+Z ÇÖÅ° (ÀÌ ÇÖÅ°¸¦ ¿©·¯ºÐÀÇ ±âÈ£¿¡ ¸Â°Ô º¯°æÇÕ´Ï´Ù).
+#MaxThreadsPerHotkey 1
+if KeepWinZRunning  ; ÀÌ°ÍÀº ¾Æ·¡ÀÇ ¾²·¹µå°¡ ÀÌ¹Ì ¾Æ·¡ÀÇ È¸µ¹À̸¦ ½ÇÇàÁßÀ̶ó´Â ¶æÀÔ´Ï´Ù.
+{
+    KeepWinZRunning := false  ; ¾²·¹µåÀÇ È¸µ¹À̸¦ ¸ØÃß°Ô ÇÏ´Â ½ÅÈ£ÀÔ´Ï´Ù.
+    return  ; ÀÌ ¾²·¹µå¸¦ ³¡³À´Ï´Ù. ÀÌ ¾Æ·¡ÀÇ Äڵ尡 ½ÇÇàÀ» Àç°³ÇÕ´Ï´Ù. À§ÀÇ ÁÙ¿¡¼­ ¹Ù²ï °÷¿¡ ÁÖ¸ñÇϽʽÿÀ.
+}
+; ±×·¸Áö ¾ÊÀ¸¸é:
+KeepWinZRunning := true
+Loop
+{
+    ; ´ÙÀ½ ³× ÁÙÀº ¹Ýº¹ÇÏ°í ½ÍÀº ÇàÀ§ÀÔ´Ï´Ù (¿©·¯ºÐÀÇ ±âÈ£¿¡ ¸Â°Ô ¹Ù²ß´Ï´Ù):
+    ToolTip, Win-Z¸¦ ´Ù½Ã ´­·¯ ÀÌ°ÍÀÌ ¶³¸®´Â °ÍÀ» ¸ØÃä´Ï´Ù.
+    Sleep 1000
+    ToolTip
+    Sleep 1000
+    ; ±×·¯³ª ¾Æ·¡ÀÇ ³ª¸ÓÁö´Â ±×´ë·Î µÓ´Ï´Ù.
+    if not KeepWinZRunning  ; »ç¿ëÀÚ°¡ Win-Z¸¦ ´Ù½Ã ´­·¯ ȸµ¹À̸¦ ¸ØÃ߶ó°í ½ÅÈ£¸¦ º¸³Â½À´Ï´Ù.
+        break  ; ÀÌ È¸µ¹À̸¦ ºüÁ® ³ª°©´Ï´Ù.
+}
+KeepWinZRunning := false  ; ÀÌ ÇÖÅ°°¡ ´ÙÀ½¿¡ ´­¸± ¶§¸¦ ´ëºñÇÏ¿© Àç¼³Á¤ÇÕ´Ï´Ù.
+return
+ +

¾î¶»°Ô °ÔÀÓÀ» À§ÇØ ¼öÇ༺´ÉÀ» Çâ»ó½Ãų ¼ö Àִ°¡? CPU°¡ Å©°Ô ºÎ´ãÀÌ µÉ °æ¿ì ¾î¶»°Ô Çϴ°¡?

+

+½ºÅ©¸³Æ®ÀÇ ÇÖÅ°, Ŭ¸¯, ¶Ç´Â Àü¼ÛÀÌ º¸Åë ¶§º¸´Ù ÇöÀúÇÏ°Ô ´À¸®´Ù¸é, CPU°¡ ¾öû³­ ºÎ´ãÀ» Áö°í À־ ±×·¸´Ù¸é, ½ºÅ©¸³Æ®ÀÇ Ã³¸®-¿ì¼±¼øÀ§¸¦ ³ôÀÌ¸é µµ¿òÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ·Á¸é, ´ÙÀ½ ÁÙÀ» ½ºÅ©¸³Æ® »ó´Ü ±Ùó¿¡ Æ÷ÇÔÇÕ´Ï´Ù:

+ +
Process, Priority, , High
+ +

¾î¶»°Ô ¿ÀÅäÇÖÅ° ¸í·É¾î¸¦ À§ÇÑ ¹®¸Æ °¨Áö µµ¿ò¸»À» ´Ù¸¥ ÆíÁý±â¿¡¼­ »ç¿ëÇÒ ¼ö Àִ°¡?

+ +

¶óÁ¬(Rajat) ¾¾°¡ ´ÙÀ½ ½ºÅ©¸³Æ®¸¦ ¸¸µé¾ú½À´Ï´Ù.

+ +

À¥ ÆäÀÌÁö°¡ ÀûÀ縦 ³¡³Â´ÂÁö ¾î¶»°Ô ¾Æ´Â°¡?

+

+ÀÎÅÍ³Ý ÀͽºÇ÷η¯¶ó¸é, ¾Æ¸¶µµ °¡Àå ¹ÏÀ»¸¸ÇÑ ¹æ¹ýÀº DllCall°ú COMÀ» www.autohotkey.com/forum/topic19256.html¿¡ ½Ã¿¬ÇÏ´Â °Íó·³ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. °ü·ÃÇؼ­ ÇÑ°¡Áö µ¡ºÙÀ̸é, ÁÖ¼Ò ¹Ù¿Í »óÅ ¹ÙÀÇ ³»¿ëÀº www.autohotkey.com/forum/topic19255.html¿¡ º¸¿©ÁÖ´Â °Íó·³ ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

¿¹ÀüÀÇ, ½Å·Ú°¡ ´úÇÑ ¹æ¹ý: ´ÙÀ½ ¿¹Á¦¿¡¼­ÀÇ Å×Å©´ÐÀº ´ëºÎºÐÀÇ ÆäÀÌÁö¿¡ ´ëÇÏ¿© MS ÀÎÅÍ³Ý ÀͽºÇ÷η¯¿¡ ÀÛµ¿ÇÒ °ÍÀÔ´Ï´Ù. ºñ½ÁÇÑ Å×Å©´ÐÀ» ´Ù¸¥ ºê¶ó¿ìÀú¿¡¼­µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
Run, www.yahoo.com
+MouseMove, 0, 0  ; »óÅ ¹Ù¿¡ ¸¶¿ì½º¸¦ ¿Ã¸®¸é ¸µÅ©¸¦ º¸¿©ÁÖÁö ¸øÇÏ°Ô ¸·½À´Ï´Ù. ´ë½Å "Done"ÀÌ º¸ÀÔ´Ï´Ù.
+WinWait, Yahoo! - 
+WinActivate 
+StatusBarWait, Done, 30
+if ErrorLevel
+   MsgBox ´ë±â ½Ã°£ÀÌ ³¡³µ°Å³ª âÀÌ ´ÝÇû½À´Ï´Ù. 
+else 
+   MsgBox ÆäÀÌÁö°¡ ÀûÀ縦 ¸¶ÃƽÀ´Ï´Ù.
+ +

³¯Â¥¿Í ½Ã°£À» ¾î¶»°Ô ºñ±³ÇÏ°í Á¶ÀÛÇϴ°¡?

+

+EnvAdd ¸í·É¾î´Â ³¯Â¥, ½Ã°£, ºÐ, Ãʸ¦ ´õÇÏ°í »©¼­ ½Ã°£-¹®ÀÚ¿­·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù. Çü½ÄÀº YYYYMMDDHH24MISSÀÔ´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â ÁöÁ¤µÈ ½Ã°£¿¡¼­ 7ÀÏÀ» »®´Ï´Ù: EnvAdd, VarContainingTimestamp, -7, days.

+

+µÎ ³¯Â¥³ª ½Ã°£ »çÀÌÀÇ ¾çÀ» °áÁ¤ÇÏ·Á¸é EnvSub¸¦ ÂüÁ¶ÇϽʽÿÀ. ¾È¿¡ ¿¹Á¦°¡ ÀÖ½À´Ï´Ù. ¶ÇÇÑ, ³»Àå º¯¼ö A_Now¿¡´Â ÇöÀçÀÇ Áö¿ª ½Ã°£ÀÌ ´ã°Ü ÀÖ½À´Ï´Ù. +¸¶Áö¸·À¸·Î, ¿©·¯ ³»Àå ³¯Â¥/½Ã°£ º¯¼ö°¡ ÀÖ½À´Ï´Ù. »Ó¸¸ ¾Æ´Ï¶ó FormatTime ¸í·É¾î·Î ¸ÂÃã ³¯Â¥/½Ã°£ ¹®ÀÚ¿­À» ¸¸µé ¼ö ÀÖ½À´Ï´Ù.

+ +

ÇöÀç ³¯Â¥/½Ã°£À» ¾î¶»°Ô Àü¼ÛÇϴ°¡?

+

+FormatTime ¶Ç´Â ³¯Â¥¿Í ½Ã°£À» À§ÇÑ ³»Àå º¯¼öµéÀ» »ç¿ëÇϽʽÿÀ.

+ +

¾î¶»°Ô ÅؽºÆ®¸¦ ºñÈ°¼ºÈ­ »óÅÂÀÇ Ã¢ ¶Ç´Â º¸ÀÌÁö ¾Ê´Â â¿¡ Àü¼ÛÇÒ ¼ö Àִ°¡?

+

+ControlSend¸¦ »ç¿ëÇϽʽÿÀ.

+ +

¿Ö ÇÖ½ºÆ®¸µ, Send, ±×¸®°í ClickÀÌ ¾î¶² °ÔÀÓ¿¡¼­´Â È¿°ú°¡ ¾ø´Â°¡?

+

+¸ðµç °ÔÀÓÀÌ AHK°¡ Àü¼ÛÇÏ´Â Å°¿Í Ŭ¸¯ ¶Ç´Â Çȼ¿ Ä÷¯¸¦ Çã¿ëÇÏ´Â °ÍÀº ¾Æ´Õ´Ï´Ù.

+

±×·¯³ª ´ë¾ÈÀÌ ÀÖ½À´Ï´Ù. ¾Æ·¡¿¡ ¾ð±ÞÇÑ ¸ðµç ÇØ°áÃ¥µéÀ» ½ÃµµÇØ º¸½Ê½Ã¿À. ¸ðµç °ÍÀÌ ½ÇÆÐÇϸé, ¾Æ¸¶µµ AHK·Î´Â °ÔÀÓÀ» ÀÛµ¿½Ãų ¼ö ¾øÀ» °ÍÀÔ´Ï´Ù. Á¾Á¾ °ÔÀÓÀÌ GameGuard³ª Hackshield °°Àº ÇÙ°ú Ä¡Æ® ¹æÁö ¼ö´ÜÀ» °®Ãß°í ÀÖ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. ±×·¸´Ù¸é, ±× °ÔÀÓ¿¡´Â ¿ÀÅäÇÖÅ°°¡ ÀÛµ¿ÇÏÁö ¾ÊÀ» °¡´É¼ºÀÌ ¾ÆÁÖ ³ô½À´Ï´Ù.

+
    +
  • +

    SendPlay ¸í·É¾î, SendMode Play ±×¸®°í/¶Ç´Â ÇÖ½ºÆ®¸µ ¿É¼Ç SP¸¦ ½ÃµµÇÕ´Ï´Ù.

    +
    SendPlay, abc
    +
    SendMode, Play
    +Send, abc
    +
    :SP:btw::by the way
    +
    +; or
    +
    +#Hotstring SP
    +::btw::by the way
    +

    ÁÖÀÇ: SendPlay´Â Windows Vista ÀÌÈÄ¿¡ »ç¿ëÀÚ °èÁ¤ Á¦¾î°¡ ÄÑÁ® ÀÖÀ¸¸é ÀüÇô È¿°ú°¡ ¾ø½À´Ï´Ù. ½ºÅ©¸³Æ®°¡ °ü¸®ÀÚ ±ÇÇÑÀ¸·Î ½ÇÇàµÇ´õ¶óµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.

    +
  • +
  • +

    SetKeyDelay¸¦ Áõ°¡½ÃÄÑ º¾´Ï´Ù. ¿¹¸¦ µé¾î:

    +
    SetKeyDelay, 0, 50
    +SetKeyDelay, 0, 50, Play
    +
  • +
  • +

    ControlSend¸¦ ½ÃµµÇÕ´Ï´Ù. ´Ù¸¥ Send ¸ðµå°¡ ½ÇÆÐÇÒ °æ¿ì ¼º°øÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù:

    +
    ControlSend,, abc, game_title
    +
  • +
  • +

    ´Ù¾çÇÑ Àü¼Û ¹æ¹ýÀ¸·Î ÇÑ Å°ÀÇ À̺¥Æ®¸¦ ´©¸£°í ¶¼°í ½ÃµµÇØ º¾´Ï´Ù:

    +
    Send {KEY down}{KEY up}
    +
  • +
  • +

    ÇÑ Å°ÀÇ À̺¥Æ®¸¦ ´©¸£°í ¶¼¸ç, ±× »çÀÌ¿¡ SleepÀ» ³Ö°í ½ÃÇèÇØ º¾´Ï´Ù:

    +
    Send {KEY down}
    +Sleep 10 ; ¿©·¯°¡Áö ¹Ð¸®Ãʸ¦ ½ÃÇèÇØ º¸½Ê½Ã¿À
    +Send {KEY Up}
    +
  • +
+ +

¾î¶»°Ô Winamp¸¦ Á¦¾îÇÒ ¼ö Àִ°¡? ÀÛµ¿ÇÏÁö ¾ÊÀ» ¶§¿¡µµ Á¦¾îÇÏ°í ½Í´Ù.

+

+Winamp ÀÚµ¿È­Çϱ⸦ ÂüÁ¶ÇϽʽÿÀ.

+ +

¾î¶»°Ô MsgBoxÀÇ ¹öÆ° À̸§À» ¹Ù²Ü ¼ö Àִ°¡?

+

+´ÙÀ½ ¿¹Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

¾î¶»°Ô ±âº» ÆíÁý±â¸¦ ¹Ù²Ü ¼ö Àִ°¡? ¹®¸Æ ¸Þ´º³ª Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ¸·Î Á¢±ÙÇÏ°í ½Í´Ù.

+

ÆíÁý±â ¿¹Á¦ ¼½¼Ç¿¡¼­ ±âº» ÆíÁý±â¸¦ ¹Ù²Ù´Â ½ºÅ©¸³Æ®¸¦ º¸½Ç ¼ö ÀÖ½À´Ï´Ù.

+ +

GUI °ü·Ã º¯¼öÀÇ ³»¿ëÀ» ¾î¶»°Ô ÀúÀåÇϴ°¡?

+

+Gui SubmitÀ» »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
Gui, Add, Text,, ÅؽºÆ®¸¦ ÀÔ·ÂÇÏ°í SubmitÀ» ´©¸¨´Ï´Ù:
+Gui, Add, Edit, vAssociatedVar
+Gui, Add, Button,, Submit
+Gui, Show
+Return
+
+ButtonSubmit:
+Gui, Submit, NoHide
+MsgBox, ÆíÁý ÄÜÆ®·ÑÀÇ ³»¿ë: %AssociatedVar%
+Return
+ +

AHK·Î ¾î¶»°Ô ±×¸®´Â°¡?

+

+ƽ(tic)ÀÌ ÁýÇÊÇÑ GDI+ Ç¥ÁØ ¶óÀ̺귯¸®¸¦ ÂüÁ¶ÇϽʽÿÀ. Gui¸¦ »ç¿ëÇÏ¿© ±âº»ÀûÀÎ ¸Þ½îµåµéÀ» »ç¿ëÇÒ ¼ö ÀÖÁö¸¸, Á¦ÇÑÀûÀÔ´Ï´Ù.

+ +

âÀÌ ¿­¸®°Å³ª, ´ÝÈ÷°Å³ª ¶Ç´Â [ºñ]È°¼ºÈ­µÉ ¶§ ¾î¶»°Ô ÇàÀ§¸¦ Ã˹߽Ãų ¼ö Àִ°¡?

+

+WinWait, WinWaitClose ¶Ç´Â WinWait[Not]Active¸¦ »ç¿ëÇÕ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â °øµ¿Ã¼°¡-À̲ô´Â FAQ (À©µµ¿ìÁî ¼½¼Ç)¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

¹é½Å ÇÁ·Î±×·¥ÀÌ AHK¸¦ ¸È¿þ¾î¶ó°í Áø´ÜÇß´Ù. ÁøÂ¥ ¹ÙÀÌ·¯½º°¡ µé¾îÀִ°¡?

+

+´ç¿¬È÷ ¾Æ´Õ´Ï´Ù. ¾ÈƼ¹ÙÀÌ·¯½º ÇÁ·Î±×·¥Àº AHK¸¦ ¸È¿þ¾î·Î À߸ø Áø´ÜÇÒ ¼ö ÀÖ½À´Ï´Ù. (°ÅÁþ ±àÁ¤À̶ó°í ºÎ¸§). ½ºÅ©¸³Æ®°¡ UPX (AHK 1.0 ±âº»°ª, AHK 1.1 Á¦°Å) ¶Ç´Â MPRESS (AHK 1.1 ¼±ÅÃÀû) °°Àº ¾ÐÃà±â·Î ÄÄÆÄÀÏµÇ¾î ½ÇÇàµÉ ¶§ ±×·² °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ¾ÐÃà±â´Â ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®ÀÇ Å©±â¸¦ ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù. ÄÄÆÄÀÏµÈ ½ÇÇàÈ­ÀÏÀ» ²À ¾ÐÃàÇØ¾ß ÇÒ ÇÊ¿ä°¡ ¾ø´Ù¸é, ¾ÐÃà±âÀÇ »ç¿ëÀ» ÀÚÁ¦Çؼ­ ¾ÈƼ¹ÙÀÌ·¯½º ÇÁ·Î±×·¥À¸·ÎºÎÅÍ °ÅÁþ °æ°í¸¦ ¹ÞÁö ¾Ê´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ¿©·¯ºÐÀº ¹°·Ð ÀáÀçÀûÀÎ ´Ù¸¥ »ç¿ëÀÚ¸¦ À§Çؼ­ ¸»ÀÌÁö¿ä.

+ +

ÇÖÅ°, ÇÖ½ºÆ®¸µ, ±×¸®°í ¸®¸ÊÇÎ

+ +

¾î¶»°Ô ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀ» ÄÄÇ»ÅÍ°¡ ±âµ¿ÇÒ ¶§ ÀÚµ¿À¸·Î Àû¿ëµÇµµ·Ï ¸¸µé ¼ö Àִ°¡?

+

+½ÃÀÛ ¸Þ´º¿¡ ½ÃÀÛÀ̶ó´Â Æú´õ°¡ ÀÖ½À´Ï´Ù. ½ºÅ©¸³Æ®¿¡ ´ëÇÑ ´ÜÃà¾ÆÀÌÄÜÀ» ±× Æú´õ¿¡ ³ÖÀ¸½Ê½Ã¿À. ±×·¯¸é ±× ½ºÅ©¸³Æ®´Â ÄÄÇ»ÅÍ°¡ ½ÃÀÛÇÒ ¶§¸¶´Ù ÀÚµ¿À¸·Î ½ÃÀÛÇÕ´Ï´Ù. ´ÜÃà¾ÆÀÌÄÜÀ» ¸¸µé·Á¸é:

+
    +
  1. ½ºÅ©¸³Æ® ÆÄÀÏÀ» ã½À´Ï´Ù. ¼±ÅÃÇÑ ´ÙÀ½ Control-C¸¦ ´©¸¨´Ï´Ù.
  2. +
  3. ½ÃÀÛ ¹öÆ°À» ¿ìŬ¸¯ÇÕ´Ï´Ù (ÀüÇüÀûÀ¸·Î È­¸é ÁÂÇÏ¿¡ ÀÖ½À´Ï´Ù) ±×¸®°í "Explore All Users"¸¦ Ŭ¸¯ÇÕ´Ï´Ù.
  4. +
  5. ÇÁ·Î±×·¥ Æú´õ ¾ÈÀÇ ½ÃÀÛ Æú´õ¸¦ ã¾Æ °©´Ï´Ù.
  6. +
  7. ¸Þ´º¹Ù¿¡¼­ Edit -> Paste ShortcutÀ» ¼±ÅÃÇÕ´Ï´Ù. ½ºÅ©¸³Æ®¸¦ °¡¸®Å°´Â ´ÜÃà¾ÆÀÌÄÜÀÌ ÀÌÁ¦ ½ÃÀÛ Æú´õ¿¡ ¹èÄ¡µË´Ï´Ù.
  8. +
+ +

¸¶¿ì½º ¹öÆ°À» ÇÖŰó·³ ÀÛµ¿½ÃÅ°´Âµ¥ ¾î·Á¿òÀ» °Þ°í ÀÖ´Ù. Á¶¾ðÀÌ Àִ°¡?

+

+¿ÞÂÊ ¿À¸¥ÂÊ ¸¶¿ì½º ¹öÆ°Àº º¸Åë ÇÒ´çÀÌ °¡´ÉÇÕ´Ï´Ù (¿¹¸¦ µé¾î, #LButton::´Â Win+LeftButton ÇÖÅ°ÀÔ´Ï´Ù). ºñ½ÁÇÏ°Ô, °¡¿îµ¥ ¹öÆ°°ú ¸¶¿ì½º ÈÙÀÇ È¸ÀüÀº º¸Åë ÇÒ´çÀÌ °¡´ÉÇÕ´Ï´Ù. ´Ü, ¸¶¿ì½º µå¶óÀ̹ö°¡ ¹öÆ°À» Á÷Á¢ÀûÀ¸·Î Á¦¾îÇÏ´Â °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù.

+

+³× ¹ø° ¹öÆ° (XButton1)°ú ´Ù¼¸ ¹ø° ¹öÆ°(XButton2)Àº ¸¶¿ì½º µå¶óÀ̹ö°¡ Ŭ¸¯À» ½Ã½ºÅÛ¿¡ º¸À̵µ·Ï Çã¿ëÇϸé ÇÒ´çÀÌ °¡´ÉÇÒ ¼öµµ ÀÖ½À´Ï´Ù. º¸ÀÌÁö ¾Ê°Å³ª -- ¶Ç´Â ¸¶¿ì½º°¡ ¹öÆ°ÀÌ ´Ù¼¸°³°¡ ³Ñ¾î°¡¸é -- ¸¶¿ì½º¿¡ ÇÔ²² µû¶ó¿Â ¼ÒÇÁÆ®¿þ¾î¸¦ Á¶Á¤Çؼ­ (º¸Åë Á¦¾îÆÇÀ̳ª ½ÃÀÛ ¸Þ´º·Î Á¢±ÙÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù) ÀÌ·± ¹öÆ°À» ´©¸¦ ¶§¸¶´Ù Å°´©¸§À» Àü¼ÛÇϵµ·Ï ½ÃµµÇØ º¸¾Æ¾ß ÇÕ´Ï´Ù. ±×·± Å°´­¸²Àº ½ºÅ©¸³Æ®¿¡¼­ ÇÖÅ°·Î Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ³× ¹ø° ¹öÆ°ÀÌ Control+F1¸¦ Àü¼ÛÇϵµ·Ï ±¸¼ºÇß´Ù¸é, ^F1::¸¦ »ç¿ëÇÏ¿© ½ºÅ©¸³Æ®¿¡ °£Á¢ÀûÀ¸·Î ±× ¹öÆ°À» ÇÖÅ°·Î ±¸¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

´Ù¼¸ ¹öÆ° ¸¶¿ì½º¸¦ °¡Áö°í Àִµ¥ ³× ¹ø° ¹öÆ°°ú ´Ù¼¸ ¹ø° ¹öÆ°Àº º¸ÀÌÁö ¾Ê´Â´Ù¸é, ¸¶¿ì½º µå¶óÀ̹ö¸¦ ¿î¿µÃ¼Á¦¿¡ Æ÷ÇÔµÈ ±âº» µå¶óÀ̹ö·Î ¹Ù²Ù¾î º¼ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº ¿©·¯ºÐÀÇ Æ¯º°ÇÑ ¸¶¿ì½º¸¦ À§ÇÑ Àü¿ë µå¶óÀ̹ö°¡ ÀÖ°í °Å±â¿¡¼­ Á¦°øµÇ´Â Ưº°ÇÑ Æ¯Â¡ÀÌ ¾ø¾îµµ »ì¼ö ÀÖ´Ù°í °¡Á¤ÇÕ´Ï´Ù.

+ +

ÅÇ°ú ½ºÆäÀ̽º´Â ¾î¶»°Ô ÇÖÅ°·Î Á¤ÀÇÇÒ ¼ö Àִ°¡?

+

+¹®ÀÚ°¡ ¾Æ´Ï¶ó Å°ÀÇ À̸§À» »ç¿ëÇϽʽÿÀ (Tab ±×¸®°í Space). ¿¹¸¦ µé¾î, #Space´Â Win+SpaceÀÌ°í ^!TabÀº Control+Alt+TabÀÔ´Ï´Ù.

+ +

Å°³ª ¸¶¿ì½º ¹öÆ°À» ¾î¶»°Ô ¸®¸ÊÇÒ ¼ö Àִ°¡? ¸¶Ä¡ ´Ù¸¥ Űó·³ º¸ÀÌ°Ô ÇÏ°í ½Í´Ù.

+

+ÀÌ ÁÖÁ¦´Â ¸®¸ÊÇÎ ÆäÀÌÁö¿¡ ±â¼úµÇ¾î ÀÖ½À´Ï´Ù.

+ +

Å°³ª ¹öÆ°ÀÌ µÎ ¹ø ´­¸®´Â °ÍÀ» ¾î¶»°Ô ŽÁöÇϴ°¡?

+

+´ÙÀ½°ú °°ÀÌ ÇÖÅ°¿¡ ³»Àå º¯¼ö¸¦ »ç¿ëÇϽʽÿÀ:

+
~Ctrl::
+    if (A_ThisHotkey = A_PriorHotkey && A_TimeSincePriorHotkey < 200)
+        MsgBox µÎ¹ø-´­·¶½À´Ï´Ù
+return
+ +

¾î¶»°Ô ÇÖÅ°³ª ÇÖ½ºÆ®¸µÀ» ¾î¶² ÇÁ·Î±×·¥¿¡´Â ¹èÁ¦ÇÒ ¼ö Àִ°¡? ´Ù¸¥ ¸»·Î Çϸé, ƯÁ¤ âÀÌ È°¼ºÈ­µÇ¾î ÀÖÀ» ¶§¸¦ Á¦¿ÜÇÏ°í ¾î¶² Å°¸¦ ±×³É º¸Åë ¶§Ã³·³ ÀÛµ¿½ÃÅ°°í ½Í´Ù.

+

+¼±È£µÇ´Â ¹æ¹ýÀº #IfWinActiveÀÔ´Ï´Ù. ¿¹¸¦ µé¾î:

+
#IfWinActive, ahk_class Notepad
+^a::MsgBox ³ëÆ®Æе尡 È°¼ºÈ­µÇ¾î ÀÖ´Â µ¿¾È Control-A¸¦ ´­·¶½À´Ï´Ù.
+
+ +

¾î¶»°Ô Á¢µÎ Å°¸¦ ¾Æ¹«°Íµµ ÇÏÁö ¾Ê´Â ´ë½Å¿¡ ±×ÀÇ ¿ø·¡ ±â´ÉÀ» ¼öÇàÇϵµ·Ï ¸¸µé ¼ö Àִ°¡?

+

+´ÙÀ½ ¿¹Á¦¸¦ ¿¬±¸ÇØ º¸½Ê½Ã¿À. Numpad0¸¦ Á¢µÎ Å°·Î ¸¸µì´Ï´Ù:

+
Numpad0 & Numpad1::MsgBox, Numpad0À» ´©¸£°í ÀÖ´Â µ¿¾È Numpad1À» ´­·¶½À´Ï´Ù.
+

+ÀÌÁ¦, À§¿Í °°ÀÌ ÇÖÅ°¸¦ ±âµ¿Çϴµ¥ »ç¿ëµÇÁö ¾ÊÀ» °æ¿ì Numpad0°¡ ½ÇÁ¦ Numpad0 Å°´­¸²À» Àü¼ÛÇϵµ·Ï ¸¸µé·Á¸é, ´ÙÀ½ ÇÖÅ°¸¦ Ãß°¡ÇÕ´Ï´Ù:

+
 $Numpad0::Send, {Numpad0}
+

+$ Á¢µÎ»ç´Â ¹«ÇÑ È¸µ¹À̸¦ °æ°íÇÏ´Â ´ëÈ­»óÀÚ°¡ ³ªÅ¸³ª´Â °ÍÀ» ¸·±â À§ÇØ ÇÊ¿äÇÕ´Ï´Ù (ÇÖÅ°°¡ "ÀÚ±â ÀÚ½ÅÀ» Àü¼Û"Çϱ⠶§¹®ÀÔ´Ï´Ù). °Ô´Ù°¡, À§ÀÇ ÇàÀ§´Â Å°¿¡¼­ ¼ÕÀ» ¶¿ ¶§ ÀϾ´Ï´Ù.

+ +

¾î¶»°Ô Win+U (Utility Manager) ±×¸®°í Win+R (Run) °°Àº ³»Àå À©µµ¿ìÁî ´ÜÃà Å°¸¦ ¹Ù²Ù°Å³ª ºÒ´ÉÀ¸·Î ¸¸µé ¼ö Àִ°¡?

+

+´ÙÀ½Àº ¿¹Á¦µéÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

ÇÖ½ºÆ®¸µ¿¡ ¿ÍÀϵåÄ«µå³ª Á¤±Ô Ç¥Çö½ÄÀ» »ç¿ëÇÒ ¼ö Àִ°¡?

+

+Æú¸®Å׳×(polyethene)°¡ ÀÛ¼ºÇÑ ½ºÅ©¸³Æ®¸¦ »ç¿ëÇϽʽÿÀ (¿¹Á¦µéÀÌ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù).

+ +

Å°º¸µå ·¹À̾ƿô¿¡ ¾ø´Â ÇÖÅ°¸¦ ¾î¶»°Ô »ç¿ëÇÒ ¼ö Àִ°¡?

+

+Ư¼ö Å°µéÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

Å°º¸µå¿¡ Ưº°ÇÑ 000 Å°°¡ ÀÖ´Ù. ÀÌ°ÍÀ» ÇÖÅ°·Î º¯È¯ÇÒ ¼ö Àִ°¡?

+

+±×·¸½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦ ½ºÅ©¸³Æ®´Â 000 Å°¸¦ µîÈ£ Å°·Î ¹Ù²ß´Ï´Ù. Send, = ÁÙÀ» ¿øÇÏ´Â ´ë·Î ¹Ù²Ù¾î¼­ ÇàÀ§¸¦ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+ + diff --git a/src/docs/Functions.htm b/src/docs/Functions.htm new file mode 100644 index 0000000..c5b7b6b --- /dev/null +++ b/src/docs/Functions.htm @@ -0,0 +1,481 @@ + + +Functions + + + + + + + +

ÇÔ¼ö

+ +

¸ñÂ÷

+ +

¼Ò°³¿Í °£´ÜÇÑ ¿¹Á¦

+

ÇÔ¼ö´Â ¼­ºê·çƾ (Gosub)°ú ºñ½ÁÇÕ´Ï´Ù. ´Ü, È£ÃâÀڷκÎÅÍ ¸Å°³º¯¼ö(ÀÔ·Â)¸¦ ¹ÞÀ» ¼ö ÀÖ´Ù´Â Á¡Àº ´Ù¸¨´Ï´Ù. °Ô´Ù°¡, ÇÔ¼ö´Â ¼±ÅÃÀûÀ¸·Î °ªÀ» È£ÃâÀÚ¿¡°Ô µ¹·ÁÁÙ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ÀÇ °£´ÜÇÑ ÇÔ¼ö¸¦ ¿¬±¸ÇØ º¸°Ú½À´Ï´Ù. µÎ °³ÀÇ ¼ýÀÚ¸¦ ¹Þ°í ±× ÇÕÀ» µ¹·ÁÁÝ´Ï´Ù:

+
Add(x, y)
+{
+    return x + y   ; "Return"Àº Ç¥Çö½ÄÀ» ±â´ëÇÕ´Ï´Ù.
+}
+

À§ÀÇ ÄÚµå´Â ÇÔ¼ö Á¤ÀǶó°í ¾Ë·ÁÁ® Àִµ¥ "Add" (´ë¼Ò¹®ÀÚ ±¸ºÐ ¾øÀ½)¶ó´Â À̸§ÀÇ ÇÔ¼ö¸¦ »ý¼ºÇÏ°í ±× ÇÔ¼ö¸¦ È£ÃâÇÏ·Á¸é ´©±¸¶óµµ Á¤È®ÇÏ°Ô µÎ °³ÀÇ ¸Å°³º¯¼ö (x¿Í y)¸¦ Á¦°øÇϵµ·Ï È®¸³ÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏ·Á¸é, :=¿¬»êÀÚ·Î ±×ÀÇ °á°ú¸¦ º¯¼ö¿¡ ÇÒ´çÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
Var := Add(2, 3)  ; ¼ýÀÚ 5°¡ Var¿¡ ÀúÀåµË´Ï´Ù.
+

+¶Ç, ÇÔ¼ö´Â ±×ÀÇ ¹Ýȯ °ªÀ» ÀúÀåÇÏÁö ¾Ê°í¼­µµ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
Add(2, 3)
+

+±×·¯³ª ÀÌ °æ¿ì, ÇÔ¼ö°¡ µ¹·ÁÁÖ´Â °ªÀº ¸ðµÎ Æó±âµË´Ï´Ù; ±×·¡¼­ ÇÔ¼ö°¡ ¹Ýȯ °ªÀ» µ¹·ÁÁÖ´Â ÀÏ ¿Ü¿¡ ´Ù¸¥ È¿°ú¸¦ »ý»êÇÏÁö ¾Ê´Â ÇÑ, ÀÌ È£ÃâÀº ¾î¶² ¸ñÀû¿¡µµ ±â¿©ÇÏÁö ¸øÇÕ´Ï´Ù.

+

+ÇÔ¼ö È£ÃâÀº Ç¥Çö½ÄÀ̱⠶§¹®¿¡, ¸Å°³º¯¼ö ¸ñ·ÏÀÇ º¯¼ö À̸§Àº ÆÛ¼¾Æ® »çÀÎÀ¸·Î µÑ·¯½ÎÁö ¾Ê¾Æµµ µË´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, ±âÈ£ ¹®ÀÚ¿­À» °ãµû¿ÈÇ¥·Î µÑ·¯ ½Î¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
if InStr(MyVar, "fox")
+    MsgBox º¯¼ö MyVar¿¡´Â ´Ü¾î fox°¡ µé¾î ÀÖ½À´Ï´Ù.
+

+¸¶Áö¸·À¸·Î, ÇÔ¼ö´Â ´Ù¸¥ ¸í·É¾îÀÇ ¸Å°³º¯¼ö¿¡¼­ È£ÃâÇÒ ¼öµµ ÀÖ½À´Ï´Ù (StringLenÀÇ ¸Å°³º¯¼ö¿Í °°ÀÌ OutputVar¿Í InputVar °°Àº ¸Å°³º¯¼ö´Â ¿¹¿ÜÀÔ´Ï´Ù). ±×·¸Áö¸¸, Ç¥Çö½ÄÀ» Áö¿øÇÏÁö ¾Ê´Â ¸Å°³º¯¼ö´Â ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¹Ýµå½Ã "% " ¸¦ Á¢µÎ±âÈ£·Î »ç¿ëÇØ¾ß ÇÕ´Ï´Ù:

+
MsgBox % "Á¤´äÀº ´ÙÀ½°ú °°½À´Ï´Ù: " . Add(3, 2)
+

+"% " Á¢µÎ±âÈ£´Â ¶Ç ±Ùº»ÀûÀ¸·Î Ç¥Çö½ÄÀ» Áö¿øÇÏ´Â ¸Å°³º¯¼ö¿¡µµ Çã¿ëµË´Ï´Ù. ±×·¯³ª ±×³É ¹«½ÃµË´Ï´Ù.

+

¸Å°³º¯¼ö

+

+ÇÔ¼ö°¡ Á¤ÀÇµÉ ¶§, ±×ÀÇ ¸Å°³º¯¼ö´Â ÇÔ¼ö À̸§ ¿· °ýÈ£ ¾È¿¡ ³ª¿­µË´Ï´Ù (ÇÔ¼ö¿Í ¿©´Â °ýÈ£ »çÀÌ¿¡ °ø°£ÀÌ ÀÖÀ¸¸é ¾ÈµË´Ï´Ù). ÇÔ¼ö°¡ ¸Å°³º¯¼ö¸¦ ¹ÞÁö ¾ÊÀ¸¸é, °ýÈ£¸¦ ºó ä·Î µÓ´Ï´Ù: GetCurrentTimestamp().

+

ByRef ¸Å°³º¯¼ö: ÇÔ¼öÀÇ °üÁ¡¿¡¼­, ¸Å°³º¯¼ö´Â º»ÁúÀûÀ¸·Î Áö¿ª º¯¼ö¿Í ¶È°°½À´Ï´Ù. ±×·¯³ª ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ByRef·Î Á¤ÀÇµÈ´Ù¸é ´Ù¸¨´Ï´Ù:

+
Swap(ByRef Left, ByRef Right)
+{
+    temp := Left
+    Left := Right
+    Right := temp
+}
+

+À§ÀÇ ¿¹Á¦¿¡¼­, ByRef¸¦ »ç¿ëÇÏ¸é °¢ ¸Å°³º¯¼öµéÀÌ È£ÃâÀڷκÎÅÍ µé¾î¿À´Â º¯¼ö¿¡ ´ëÇÏ¿© º°¸íÀÌ µË´Ï´Ù. ´Ù¸¥ ¸»·Î, ¸Å°³º¯¼ö¿Í È£ÃâÀÚÀÇ º¯¼ö´Â ¸ðµÎ ¸Þ¸ð¸®ÀÇ °°Àº ³»¿ëÀ» °¡¸®Åµ´Ï´Ù. ÀÌ ¶§¹®¿¡ Swap ÇÔ¼ö´Â È£ÃâÀÚÀÇ º¯¼ö¸¦ º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. LeftÀÇ ³»¿ëÀ» RightÀ¸·Î ±×¸®°í ±× ¹Ý´ë·Î À̵¿½Ãų ¼ö ÀÖ½À´Ï´Ù.

+

´ëÁ¶ÀûÀ¸·Î, ByRef°¡ À§ÀÇ ¿¹Á¦¿¡¼­ »ç¿ëµÇÁö ¾Ê¾Ò´Ù¸é, Left¿Í Right´Â È£ÃâÀÚ º¯¼öÀÇ »çº»ÀÌ µÇ¾î¾ß ÇÕ´Ï´Ù. ±×·¡¼­ Swap ÇÔ¼ö´Â ¿ÜºÎÀûÀ¸·Î ¾Æ¹« È¿°ú°¡ ¾øÀ» °ÍÀÔ´Ï´Ù.

+

+returnÀº ÇÔ¼öÀÇ È£ÃâÀÚ¿¡°Ô ¿ÀÁ÷ ÇϳªÀÇ °ª¸¸ ´Ù½Ã µ¹·ÁÁÙ ¼ö Àֱ⠶§¹®¿¡, ByRef¸¦ »ç¿ëÇϸé Ãß°¡ °á°ú¸¦ ´õ µ¹·ÁÁÙ ¼ö ÀÖ½À´Ï´Ù. È£ÃâÀÚ¿¡°Ô (º¸Åë ºó) º¯¼ö¸¦ °Ç³×°Ô ÇÏ°í °Å±â¿¡ ÇÔ¼ö°¡ °ªÀ» ÀúÀåÇÏ¸é µË´Ï´Ù.

+

+¹æ´ëÇÑ ¹®ÀÚ¿­À» ÇÔ¼ö¿¡ °Ç³Ú ¶§, ByRef´Â ¼öÇ༺´ÉÀ» Çâ»ó½ÃÅ°°í ¸Þ¸ð¸®¸¦ ±×´ë·Î À¯ÁöÇÕ´Ï´Ù. ¹®ÀÚ¿­ÀÇ »çº»À» ¸¸µé ÇÊ¿ä°¡ ¾ø±â ¶§¹®ÀÔ´Ï´Ù. ºñ½ÁÇÏ°Ô, ByRef¸¦ »ç¿ëÇÏ¿© ±ä ¹®ÀÚ¿­À» ´Ù½Ã È£ÃâÀÚ¿¡°Ô º¸³»¸é Return HugeString¿Í °°ÀÌ ÇÏ´Â °Í¿¡ ºñÇØ º¸Åë ¼öÇ༺´ÉÀÌ ´õ Çâ»óµË´Ï´Ù.

+

[AHK_L 60+]: º¯°æ°¡´ÉÇÑ º¯¼ö ¸»°í ¾î¶² °ÍÀÌ ByRef ¸Å°³º¯¼ö¿¡ °Ç³×Áö¸é, ÇÔ¼ö´Â ¸¶Ä¡ Å°¿öµå "ByRef"°¡ ¾ø´Â °Íó·³ ÇàÀ§ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, Swap(A_Index, i)´Â A_IndexÀÇ °ªÀ» i¿¡ ÀúÀåÇÏÁö¸¸, Left¿¡ ÇÒ´çµÈ °ªÀº Swap ÇÔ¼ö°¡ ¹ÝȯµÇ´Â ¼ø°£ Æó±âµË´Ï´Ù.

+

[v1.1.01+]: IsByRef() ÇÔ¼ö¸¦ »ç¿ëÇϸé È£ÃâÀÚ°¡ ÁÖ¾îÁø ByRef ¸Å°³º¯¼ö¿¡ ´ëÇÏ¿© º¯¼ö¸¦ °ø±ÞÇß´ÂÁö ¾Ë ¼ö ÀÖ½À´Ï´Ù.

+

¾Ë·ÁÁø ÇÑ°è:

+
    +
  • °´Ã¼ÀÇ Çʵå´Â ByRef ¸ñÀû¿¡ ´ëÇÏ¿© º¯¼ö·Î °£ÁÖµÇÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, foo.bar°¡ ByRef ¸Å°³º¯¼ö¿¡ °Ç³×Áö¸é, ¸¶Ä¡ ByRef Å°¿öµå°¡ »ý·«µÈ °Íó·³ ÇàÀ§ÇÕ´Ï´Ù.
  • +
  • Ŭ¸³º¸µå, ³»Àå º¯¼ö, ¶Ç´Â ȯ°æ º¯¼ö¸¦ ÇÔ¼öÀÇ ByRef ¸Å°³º¯¼ö¿¡ º¸³¾ ¼ö ¾ø½À´Ï´Ù. ½ºÅ©¸³Æ®¿¡ #NoEnv°¡ Á¸ÀçÇÏÁö ¾ÊÀ»Áö¶óµµ º¸³¾ ¼ö ¾ø½À´Ï´Ù.
  • +
  • ÇÔ¼ö°¡ ÀÚ½ÅÀ» Àç±ÍÀûÀ¸·Î È£ÃâÇÒ ¼ö´Â ÀÖÁö¸¸, ÀÚ½ÅÀÇ Áö¿ª º¯¼ö ¶Ç´Â ºñ-ByRef ¸Å°³º¯¼ö¸¦ ÀÚ±â ÀڽŠByRef¿¡°Ô °Ç³×¸é, »õ·Î¿î ·¹À̾îÀÇ ByRef ¸Å°³º¯¼ö´Â ÀÌÀü ·¹À̾îÀÇ ¸Å°³º¯¼ö°¡ ¾Æ´Ï¶ó ÀÚ±â ÀÚ½ÅÀÇ Áö¿ª º¯¼öÀÇ À̸§À» °¡¸®Å³ °ÍÀÔ´Ï´Ù. ±×·¸Áö¸¸, ÇÔ¼ö°¡ ÀÚ±â Àڽſ¡°Ô Àü¿ª º¯¼ö, Á¤Àû º¯¼ö, ¶Ç´Â ByRef ¸Å°³º¯¼ö¸¦ °Ç³Ú ¶§ ÀÌ·± ¹®Á¦´Â ÀϾÁö ¾Ê½À´Ï´Ù.
  • +
  • ÇÔ¼ö-È£Ãâ¿¡¼­ ¸Å°³º¯¼ö°¡ º¯¼ö·Î °áÁ¤µÇ¸é (¿¹, Var ¶Ç´Â ++Var ¶Ç´Â Var*=2), ¿ÞÂÊÀ̳ª ¿À¸¥ÂÊÀÇ ´Ù¸¥ ¸Å°³º¯¼öµéÀº ±× º¯¼ö°¡ ÇÔ¼ö¿¡ °Ç³×Áö±â Àü¿¡ º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, func(Var, Var++)´Â Var°¡ óÀ½ºÎÅÍ 0ÀÏ ¶§ ¿¹»óÄ¡ ¸øÇÏ°Ô 1°ú 0À» °Ç³×°Ô µË´Ï´Ù. ½ÉÁö¾î ÇÔ¼öÀÇ Ã¹ ¸Å°³º¯¼ö°¡ ByRef°¡ ¾Æ´Ò ¶§µµ ±×·¸½À´Ï´Ù.. + ÀÌ ÇàÀ§´Â ¹ÝÁ÷°üÀûÀ̱⠶§¹®¿¡, ¹Ì·¡ÀÇ ¹èÆ÷º»¿¡¼­´Â ¹Ù²ð °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.
  • +
  • ByRef´Â COM Ŭ¶óÀ̾ðÆ®°¡ È£ÃâÇÏ´Â ÇÔ¼ö¿¡¼­ ¶Ç´Â COM ¸Þ½îµå¸¦ È£ÃâÇÒ ¶§ Á÷Á¢ÀûÀ¸·Î Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ´ë½Å¿¡, ½ºÅ©¸³Æ®´Â ¾È¿¡ VarType°ú °ªÀÇ ÁÖ¼Ò°¡ µé¾îÀÖ´Â ·¡ÆÛ °´Ã¼¸¦ ÁÖ°í ¹Þ¾Æ¾ß ÇÕ´Ï´Ù.
  • +
+

¼±ÅÃÀû ¸Å°³º¯¼ö

+

+ÇÔ¼ö¸¦ Á¤ÀÇÇÒ ¶§, Çϳª ÀÌ»óÀÇ ¸Å°³º¯¼ö¿¡ ¼±ÅÃÀû Ç¥½ÄÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸ÕÀú µîÈ£ »çÀÎÀ» µÎ°í (¶Ç´Â v1.1.09+¿¡¼­´Â :=) ´ÙÀ½¿¡ ±âº»°ªÀ» µÎ¸é µË´Ï´Ù. ´ÙÀ½ ÇÔ¼ö´Â Z ¸Å°³º¯¼ö¿¡ ¼±ÅÃÀû Ç¥½ÄÀÌ ºÙ¾î ÀÖ½À´Ï´Ù:

+
Add(X, Y, Z:=0) {
+    return X + Y + Z
+}
+

+v1.1.09 ¹öÀüºÎÅÍ =¿Í := µÑ ´Ù Áö¿øÇÕ´Ï´Ù. Ç¥Çö½Ä ÇÒ´ç°úÀÇ ÀÏ°ü¼º°ú ¹Ì·¡ ¹öÀüÀÇ ¿ÀÅäÇÖÅ°¿ÍÀÇ È£È¯¼ºÀ» À§ÇÏ¿© ÈÄÀÚ¸¦ ±ÇÀåÇÕ´Ï´Ù.

+

+È£ÃâÀÚ°¡ ¼¼ °³ÀÇ ¸Å°³º¯¼ö¸¦ À§ÀÇ ÇÔ¼ö¿¡ °Ç³×¸é, ZÀÇ ±âº» °ªÀº ¹«½ÃµË´Ï´Ù. ±×·¯³ª È£ÃâÀÚ°¡ ¿ÀÁ÷ µÎ °³ÀÇ ¸Å°³º¯¼ö¸¸ °Ç³×¸é, Z´Â ÀÚµ¿À¸·Î ±âº»°ª 0À» ¹Þ½À´Ï´Ù.

+

+¼±ÅÃÀû ¸Å°³º¯¼ö¸¦ ¸®½ºÆ® ÇÑ °¡¿îµ¥¿¡ µû·Î ¹èÄ¡ÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÕ´Ï´Ù. ´Ù¸¥ ¸»·Î Çϸé, ù ¹ø° ¼±ÅÃÀû ¸Å°³º¯¼öÀÇ ¿À¸¥ÂÊ¿¡ ³ª¿À´Â ¸ðµç ¸Å°³º¯¼öµµ ¿ª½Ã ¼±ÅÃÀûÀ¸·Î Ç¥½ÄÀÌ ºÙ¾î¾ß ÇÕ´Ï´Ù. [AHK_L 31+]: ¼±ÅÃÀû ¸Å°³º¯¼ö´Â ¸Å°³º¯¼ö ¸®½ºÆ®ÀÇ Áß¾Ó¿¡¼­´Â »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡¿Í °°ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù. µ¿ÀûÀÎ ÇÔ¼ö È£Ãâ°ú ¸Þ½îµå È£ÃâÀº v1.1.12+ÀÌ»óÀÌ ÇÊ¿äÇÕ´Ï´Ù.

+
Func(1,, 3)
+Func(X, Y:=2, Z:=0) {  ; ÀÌ °æ¿ì Z´Â¿©ÀüÈ÷ ¼±ÅÃÀûÀ̾î¾ß ÇÔ¿¡ À¯ÀÇÇÕ´Ï´Ù.
+    MsgBox %X%, %Y%, %Z%
+}
+

v1.0.46.13+¿¡¼­, ByRef ¸Å°³º¯¼öµµ ±âº»°ªÀ» Áö¿øÇÕ´Ï´Ù; ¿¹¸¦ µé¾î: Func(ByRef p1 = ""). È£ÃâÀÚ°¡ ±×·± ¸Å°³º¯¼ö¸¦ »©¸ÔÀ» ¶§¸¶´Ù, ÇÔ¼ö´Â Áö¿ª º¯¼ö¸¦ ¸¸µé¾î ±âº» °ªÀ» ´ã½À´Ï´Ù; ´Ù¸¥ ¸»·Î, ÇÔ¼ö´Â ¸¶Ä¡ Å°¿öµå "ByRef"°¡ Á¸ÀçÇÏÁö ¾Ê´Â °Íó·³ ÇàÀ§ÇÕ´Ï´Ù.

+

+¸Å°³º¯¼öÀÇ ±âº» °ªÀº ´ÙÀ½ Áß Çϳª°¡ µÇ¾î¾ß ÇÕ´Ï´Ù: true, false, ¹®ÀÚ ±×´ë·ÎÀÇ Á¤¼ö, ¹®ÀÚ ±×´ë·ÎÀÇ ºÎµ¿ ¼Ò¼öÁ¡ ¼ö, ¶Ç´Â "fox" ¶Ç´Â ""¿Í °°ÀÌ ÀοëºÎȣó¸®µÇ¾î ¹®ÀÚ ±×´ë·ÎÀÇ ¹®ÀÚ¿­. + +(±×·¯³ª 1.0.46.13+ÀÌÀü ¹öÀüÀÇ ¹®ÀÚ¿­Àº ¿ÀÁ÷ ""¸¸ Áö¿øÇÕ´Ï´Ù).

+ +

È£ÃâÀÚ¿¡°Ô °ª µ¹·ÁÁÖ±â

+

¼Ò°³¿¡ ±â¼úÇÑ ¹Ù¿Í °°ÀÌ, ÇÔ¼ö´Â ¼±ÅÃÀûÀ¸·Î °ªÀ» È£ÃâÀÚ¿¡°Ô µ¹·ÁÁÙ ¼ö ÀÖ½À´Ï´Ù.

+
+Test := returnTest()
+MsgBox % Test
+
+returnTest() {
+  return 123
+}
+
+

ÇÔ¼ö·ÎºÎÅÍ °á°ú¸¦ ´õ ¸¹ÀÌ µ¹·ÁÁÖ°í ½Í´Ù¸é, ByRef¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
+returnByRef(A,B,C)
+MsgBox % A "," B "," C
+
+returnByRef(ByRef val1, ByRef val2, ByRef val3)
+{
+  val1 := "A"
+  val2 := 100
+  val3 := 1.1
+  return
+}
+
+

[v1.0.97+]: °´Ã¼¿Í ¹è¿­À» »ç¿ëÇÏ¸é ¿©·¯ °ªµé ½ÉÁö¾î À̸§ ºÙÀº °ªµéµµ µ¹·ÁÁÙ ¼ö ÀÖ½À´Ï´Ù:

+
+Test1 := returnArray1()
+MsgBox % Test1[1] "," Test1[2]
+
+Test2 := returnArray2()
+MsgBox % Test2[1] "," Test2[2]
+
+Test3 := returnObject()
+MsgBox % Test3.id "," Test3.val
+
+returnArray1() {
+  Test := [123,"ABC"]
+  return Test
+}
+
+returnArray2() {
+  x := 456
+  y := "EFG"
+  return [x, y]
+}
+
+returnObject() {
+  Test := {id: 789, val: "HIJ"}
+  return Test
+}
+
+

°¡º¯ ÇÔ¼ö [AHK_L 60+]

+

+ÇÔ¼ö¸¦ Á¤ÀÇÇÒ ¶§, º°Ç¥¸¦ ¸¶Áö¸· ¸Å°³º¯¼ö µÚ¿¡ ¾²¸é ±× ÇÔ¼ö¸¦ °¡º¯ÇÔ¼ö·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù. °¡º¯ °³¼öÀÇ ¸Å°³º¯¼ö¸¦ ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù:

+
Join(sep, params*) {
+    for index,param in params
+        str .= param . sep
+    return SubStr(str, 1, -StrLen(sep))
+}
+MsgBox % Join("`n", "one", "two", "three")
+

+°¡º¯ ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§, ³ÑÄ¡´Â ¸Å°³º¯¼ö´Â ÇÔ¼öÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö¿¡ ÀúÀåµÇ¾î ÀÖ´Â °´Ã¼¸¦ ÅëÇÏ¿© Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ³ÑÄ£ ù ¹ø° ¸Å°³º¯¼ö´Â params[1]¿¡ ÀÖ°í, µÎ ¹ø°´Â params[2]¿¡ µîµî¿¡ ÀÖ½À´Ï´Ù. ´Ù¸¥ Ç¥ÁØ °´Ã¼Ã³·³params.MaxIndex()¸¦ »ç¿ëÇÏ¸é ¼ýÄ¡»ó °¡Àå ³ôÀº À妽º¸¦ ¾Ë ¼ö ÀÖ½À´Ï´Ù (ÀÌ °æ¿ì ¸Å°³º¯¼öÀÇ °³¼öÀÔ´Ï´Ù). ±×·¸Áö¸¸, ¸Å°³º¯¼ö°¡ ¾ø´Ù¸é, MaxIndex´Â ºó ¹®ÀÚ¿­À» µ¹·ÁÁÝ´Ï´Ù.

+

ÁÖÀÇ:

+
    +
  • "°¡º¯" ¸Å°³º¯¼ö´Â ¿ÀÁ÷ Çü½Ä ¸Å°³º¯¼ö ¸®½ºÆ®ÀÇ ³¡¿¡¸¸ ³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù.
  • +
  • RegEx ÄݾƿôÀº °¡º¯ÀûÀÏ ¼ö ¾ø½À´Ï´Ù; "°¡º¯" ¸Å°³º¯¼ö´Â ¹ÞÁö¸¸, ºó ä·Î µÓ´Ï´Ù.
  • +
  • ¿ªÈ£ÃâÀº ³ÑÄ£ ¸Å°³º¯¼öµéÀ» º£¿­ÀÌ ¾Æ´Ï¶ó ÁÖ¼Ò·Î °Ç³Ü´Ï´Ù.
  • +
+

°¡º¯ ÇÔ¼ö È£Ãâ

+

+°¡º¯ ÇÔ¼ö°¡ °¡º¯ °³¼öÀÇ ¸Å°³º¯¼ö¸¦ ¹Þ¾ÆµéÀÏ ¼ö ÀÖ´Â ¹Ý¸é, ¸Å°³º¯¼ö ¹è¿­À» ¾î¶² ÇÔ¼ö¿¡µµ °Ç³Ú ¼ö ÀÖ½À´Ï´Ù. °°Àº ±¸¹®À» ÇÔ¼ö-È£Ãâ¿¡ Àû¿ëÇÏ¸é µË´Ï´Ù:

+
substrings := ["one", "two", "three"]
+MsgBox % Join("`n", substrings*)
+

ÁÖÀÇ:

+
    +
  • ¼Ò½º ¹è¿­ ¾È¿¡¼­ ¸Å°³º¯¼öÀÇ ¹øÈ£´Â 1ºÎÅÍ ½ÃÀÛÇÕ´Ï´Ù.
  • +
  • ¼±ÅÃÀû ¸Å°³º¯¼ö´Â ±× ¹è¿­¿¡¼­ ¿ÏÀüÈ÷ »ý·«Çصµ µË´Ï´Ù.
  • +
  • ¸Å°³º¯¼ö ¹è¿­Àº »ç¿ëÀÚ-Á¤ÀÇ ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ À̸§ºÙÀº Ç׸ñÀ» ´ãÀ» ¼ö ÀÖ½À´Ï´Ù; ´Ù¸¥ °æ¿ì´Â, À̸§ºÙÀº Ç׸ñÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.
  • +
  • ¸ñÇ¥ ÇÔ¼öµµ °¡º¯ÀûÀÏ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì À̸§ºÙÀº Ç׸ñÀº »óÀÀÇÏ´Â Çü½Ä ¸Å°³º¯¼ö°¡ ¾ø´õ¶óµµ º¹»çµË´Ï´Ù.
  • +
  • ÀÌ ±¸¹®Àº ¶Ç ¸Þ½îµå¸¦ È£ÃâÇϰųª °´Ã¼ÀÇ Æ¯¼ºÀ» ¿­¶÷ÇÒ ¶§ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù; ¿¹¸¦ µé¾î, Object.Property[Params*]. v1.1.12+¿¡¼­´Â Ư¼ºÀ» ¼³Á¤ÇÏ´Â µ¥¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • +
+

¾Ë·ÁÁø ÇÑ°è:

+
    +
  • Á¦ÀÏ ¿À¸¥ÂÊ ¸Å°³º¯¼ö¸¸ ÀÌ·±½ÄÀ¸·Î È®ÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Func(x, y*)´Â Áö¿øÇÏÁö¸¸ Func(x*, y)´Â Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.
  • +
  • º°Ç¥(*)¿Í ¸Å°³º¯¼ö ¸®½ºÆ®¸¦ ³¡³»´Â ½Éº¼ »çÀÌ¿¡ °ø¹é¹®ÀÚ¸»°í ´Ù¸¥ ¹®ÀÚ´Â Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù.
  • +
+

Áö¿ª º¯¼ö¿Í Àü¿ª º¯¼ö

+

Áö¿ª º¯¼ö

+

+ÇÔ¼ö ¾È¿¡¼­ ¸¸µé¾îÁö°í Á¢±ÙµÇ´Â ¸ðµç º¯¼öµéÀº ±âº»ÀûÀ¸·Î Áö¿ªÀûÀÔ´Ï´Ù (½´ÆÛ-Àü¿ª º¯¼ö ±×¸®°í Clipboard, ErrorLevel, A_TimeIdle¿Í °°Àº ³»Àå º¯¼ö´Â Á¦¿ÜÇÕ´Ï´Ù). °¢ Áö¿ª º¯¼öÀÇ ³»¿ëÀº ÇÔ¼ö ¾È¿¡ µç ÁÙ¿¡¼­¸¸ º¸ÀÔ´Ï´Ù. °á°úÀûÀ¸·Î, Áö¿ª º¯¼ö´Â Àü¿ª º¯¼ö¿Í À̸§ÀÌ °°À» ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í ¼­·Î ´Ù¸¥ ³»¿ëÀ» °¡Áú ¼ö ÀÖ½À´Ï´Ù. ¸¶Áö¸·À¸·Î, ¸ðµç Áö¿ª º¯¼ö´Â ÇÔ¼ö°¡ È£ÃâµÉ ¶§¸¶´Ù ºó ä·Î ½ÃÀÛÇÕ´Ï´Ù.

+ +

Àü¿ª º¯¼ö

+

+ÇÔ¼ö ¾È¿¡¼­ ±âÁ¸ÀÇ Àü¿ª º¯¼ö¸¦ ÂüÁ¶ÇÏ·Á¸é (¶Ç´Â »õ·Î ¸¸µé·Á¸é), º¯¼ö¸¦ global·Î ¼±¾ðÇÑ ´ÙÀ½ »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
LogToFile(TextToLog)
+{
+    global LogFileName  ; ÀÌ Àü¿ª º¯¼ö´Â ÀÌ ÇÔ¼ö ¹Ù±ù ¾îµò°¡¿¡ ¹Ì¸® °ªÀÌ ÁÖ¾îÁ® ÀÖ½À´Ï´Ù.
+    FileAppend, %TextToLog%`n, %LogFileName%
+}
+

Àü¿ª-°£ÁÖ ¸ðµå: ÇÔ¼ö°¡ ¹æ´ëÇÑ °³¼öÀÇ Àü¿ª º¯¼ö¸¦ ¸¸µé°Å³ª Á¢±ÙÇÒ ÇÊ¿ä°¡ ÀÖ´Ù¸é, ±×ÀÇ ¸ðµç º¯¼ö¸¦ Àü¿ªÀûÀ¸·Î °£ÁÖÇϵµ·Ï Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù (¸Å°³º¯¼ö´Â Á¦¿Ü). ù ÁÙÀ» ´Ü¾î "global"·Î ¸¸µé°Å³ª Áö¿ª º¯¼öÀÇ ¼±¾ðÀ¸·Î ¸¸µé¸é µË´Ï´Ù. ¿¹¸¦ µé¾î:

+
SetDefaults()
+{
+    global  ; ÇÔ¼öÀÇ Ã¹ ÁÙÀÌ "local MyVar"¿Í °°Àº °ÍÀ¸·Î ½ÃÀÛÇϸé ÀÌ ´Ü¾î´Â »ý·«Çصµ µË´Ï´Ù.
+    MyGlobal := 33  ; 33À» Àü¿ª º¯¼ö¿¡ ÇÒ´çÇÕ´Ï´Ù. ÇÊ¿äÇÏ¸é ¸ÕÀú º¯¼ö¸¦ ¸¸µì´Ï´Ù.
+    local x, y:=0, z  ; Áö¿ª º¯¼ö´Â ÀÌ ¸ðµå·Î ¼±¾ðÇØ¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é Àü¿ªÀûÀ¸·Î °£Áֵ˴ϴÙ.
+}
+

+Àü¿ª-°£ÁÖ ¸ðµå¸¦ ÇÔ¼ö¿¡ »ç¿ëÇÏ¸é ¿¹¸¦ µé¾î °ªÀ» Array%A_Index%¿¡ ÇÒ´çÇϴ ȸµ¹ÀÌ¿Í °°ÀÌ Àü¿ª ¹è¿­À» ¸¸µé ¼ö ÀÖ½À´Ï´Ù.

+

½´ÆÛ-Àü¿ª º¯¼ö [v1.1.05+]: Àü¿ª ¼±¾ðÀÌ ÇÔ¼ö ¹Û¿¡ ³ªÅ¸³ª¸é, ±âº»À¸·Î ¸ðµç ÇÔ¼ö¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù. ±×·¡¼­ °¢ ÇÔ¼ö¸¶´Ù ÇØ´ç º¯¼ö¸¦ ´Ù½Ã ¼±¾ðÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ±×·¸Áö¸¸, ÇÔ¼ö ¸Å°³º¯¼ö³ª Áö¿ª º¯¼ö¿¡ °°Àº À̸§ÀÌ ¼±¾ðµÇ¾î ÀÖ´Ù¸é, Àü¿ª º¯¼öº¸´Ù ¿ì¼± ¼øÀ§°¡ ³õ½À´Ï´Ù. class Å°¿öµå·Î ¸¸µç º¯¼öµµ ¼öÆÛ-Àü¿ª º¯¼öÀÔ´Ï´Ù.

+ +

Á¤Àû º¯¼ö

+

+Á¤Àû º¯¼ö´Â ¾ðÁ¦³ª ¹¬½ÃÀûÀ¸·Î Áö¿ªÀûÀÌÁö¸¸, Áö¿¬ º¯¼ö¿Í´Â ´Ù¸¥ Á¡ÀÌ ÀÖ½À´Ï´Ù. È£Ãâ »çÀÌ¿¡ °ªÀ» ±â¾ïÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
LogToFile(TextToLog)
+{
+    static LoggedLines = 0
+    LoggedLines += 1  ; ¿ÏÀüÈ÷ Áö¿ªÀûÀ¸·Î À¯Áö°ü¸®ÇÕ´Ï´Ù (±×ÀÇ °ªÀº È£Ãâ »çÀÌ¿¡ ±â¾ïµË´Ï´Ù).
+    global LogFileName
+    FileAppend, %LoggedLines%: %TextToLog%`n, %LogFileName%
+}
+

Á¤Àû ÃʱâÈ­ÀÚ: 1.0.46 ÀÌÀü ¹öÀü¿¡¼­, ¸ðµç Á¤Àû º¯¼ö´Â ºó ä·Î ½ÃÀÛÇß½À´Ï´Ù; ±×·¡¼­ óÀ½À¸·Î »ç¿ëµÇ´Â º¯¼öÀÎÁö ŽÁöÇÏ´Â À¯ÀÏÇÑ ¹æ¹ýÀº ±×°ÍÀÌ ºñ¾îÀÖ´ÂÁö Á¡°ËÇÏ´Â °ÍÀ̾ú½À´Ï´Ù. v1.0.46+¿¡¼­, Á¤Àû º¯¼ö´Â "" ¸»°í ´Ù¸¥ °ÍÀ¸·Î ÃʱâÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸ÕÀú :=À̳ª =¸¦ µÎ°í ¹Ù·Î ÀÌ¾î ´ÙÀ½ Áß Çϳª°¡ ¿À¸é µË´Ï´Ù: true, false, ±âÈ£ ±×´ë·ÎÀÇ ¼ýÀÚ, ±âÈ£ ±×´ë·ÎÀÇ ºÎµ¿ ¼Ò¼öÁ¡ ¼ö, ¶Ç´Â "fox"°ú °°ÀÌ ±âÈ£ ±×´ë·Î/ ÀοëºÎÈ£ ó¸®µÈ ¹®ÀÚ¿­. ¿¹¸¦ µé¸é: static X:=0, Y:="fox". °¢ Á¤Àû º¯¼ö´Â (½ºÅ©¸³Æ®°¡ ½ÇÇàÀ» ½ÃÀÛÇϱâ Àü¿¡) ¿ÀÁ÷ ÇÑ ¹ø¸¸ ÃʱâÈ­µË´Ï´Ù.

+

[AHK_L 58+]: Static var := expressionÀ» Áö¿øÇÕ´Ï´Ù. ±×·± ¸ðµç Ç¥Çö½ÄÀº ³ªÅ¸³ª´Â ¼ø¼­´ë·Î ½ºÅ©¸³Æ®ÀÇ ÀÚµ¿-½ÇÇà ¼½¼Ç ¹Ù·Î ¾Õ¿¡¼­ Æò°¡µË´Ï´Ù.

+

Á¤Àû-°£ÁÖ ¸ðµå [v1.0.48+]: ÇÔ¼ö´Â ±×ÀÇ ¸ðµç º¯¼ö°¡ Á¤ÀûÀ̶ó°í °£ÁÖÇϵµ·Ï Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù (±×ÀÇ ¸Å°³º¯¼ö´Â Á¦¿Ü). ù ÁÙÀ» "static"À̶ó´Â ´Ü¾î·Î ¸¸µé¸é µË´Ï´Ù. ¿¹¸¦ µé¾î:

+
GetFromStaticArray(WhichItemNumber)
+{
+    static
+    static FirstCallToUs := true  ; Á¤Àû ¼±¾ðÀÇ ÃʱâÈ­ÀÚ´Â ¿©ÀüÈ÷ (±âµ¿½Ã¿¡) ÇÑ ¹ø¸¸ ½ÇÇàµË´Ï´Ù.
+    if FirstCallToUs  ; ù ¹ø° È£Ãâ µ¿¾È Á¤Àû ¹è¿­À» ¸¸µì´Ï´Ù. ±×·¯³ª ±× ´ÙÀ½ È£Ãâ¿¡´Â ¸¸µéÁö ¾Ê½À´Ï´Ù.
+    {
+        FirstCallToUs := false
+        Loop 10
+            StaticArray%A_Index% := "Value #" . A_Index
+    }
+    return StaticArray%WhichItemNumber%
+}
+

+Á¤Àû-°£ÁÖ ¸ðµå¿¡¼­, Á¤ÀûÀÌ¸é ¾ÈµÇ´Â º¯¼ö´Â ¹Ýµå½Ã local ¶Ç´Â global·Î ¼±¾ðÇØ¾ß ÇÕ´Ï´Ù.

+ +

Áö¿ª º¯¼ö¿Í Àü¿ª º¯¼ö¿¡ °üÇÏ¿© ´õ ÀÚ¼¼È÷

+

+¸¹Àº º¯¼öµéÀ» ÇÑ ÁÙ¿¡ ¼±¾ðÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ½°Ç¥·Î °¡¸£¸é µË´Ï´Ù:

+
global LogFileName, MaxRetries := 5
+static TotalAttempts = 0, PrevResult
+

+v1.0.46+¿¡¼­, Àü¿ª º¯¼ö³ª Áö¿ª º¯¼ö´Â ¼±¾ð°ú µ¿½Ã¿¡ °°Àº ÁÙ¿¡¼­ ÃʱâÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù. :=À̳ª = ´ÙÀ½¿¡ Ç¥Çö½ÄÀ» µÎ¸é µË´Ï´Ù (= ¿¬»êÀÚ´Â ¼±¾ð¿¡¼­ :=¿Í ¶È°°ÀÌ ÇàÀ§ÇÕ´Ï´Ù). Á¤Àû ÃʱâÈ­ÀÚ¿Í ´Ù¸£°Ô, Áö¿ª º¯¼ö¿Í Àü¿ª º¯¼öÀÇ ÃʱâÈ­ÀÚ´Â ÇÔ¼ö°¡ È£ÃâµÉ ¶§¸¶´Ù ¸Å¹ø ½ÇÇàµË´Ï´Ù. ±×·¯³ª ¿ÀÁ÷ ½ÇÇà È帧ÀÌ ½ÇÁ¦·Î °Å±â¿¡ ´Ù´Ù¸¦ ¶§¿¡¸¸ ÃʱâÈ­ÇÕ´Ï´Ù. ´Ù¸¥ ¸»·Î, local x = 0°ú °°Àº ÁÙÀº ´ÙÀ½°ú °°ÀÌ µÎ °³ÀÇ ¼­¼ú¹®À¸·Î ÀÛ¼ºÇÑ °Í°ú È¿°ú°¡ °°½À´Ï´Ù: local x ´ÙÀ½¿¡ x = 0.

+

+local, global, ±×¸®°í static°°Àº ´Ü¾î´Â ½ºÅ©¸³Æ®°¡ ±âµ¿ÇÏÀÚ ¸¶ÀÚ Áï½Ã 󸮵DZ⠶§¹®¿¡, º¯¼ö´Â IF ¼­¼ú¹®À» ¼ö´ÜÀ¸·Î ÇÏ¿© Á¶°ÇÀûÀ¸·Î ¼±¾ðÇÒ ¼ö ¾ø½À´Ï´Ù. ´Ù¸¥ ¸»·Î Çϸé, IF ¶Ç´Â ELSE ºí·Ï¾È¿¡¼­ ¼±¾ðÇϸé ÇØ´ç ¼±¾ð°ú ±× ÇÔ¼öÀÇ ´Ý´Â °ýÈ£ »çÀÌ¿¡ ÀÖ´Â ¸ðµç Áٵ鿡 ¿¹»óÄ¡ ¸øÇÑ È¿°ú¸¦ ¹ÌĨ´Ï´Ù. ¶Ç ÁÖ¸ñÇÒ °ÍÀº global Array%i%¿Í °°ÀÌ µ¿ÀûÀ¸·Î º¯¼ö¸¦ ¼±¾ðÇÏ´Â °ÍÀº ÇöÀç °¡´ÉÇÏÁö ¾Ê´Ù´Â °ÍÀÔ´Ï´Ù.

+

(StringSplit °°Àº) ÀÇ»ç-¹è¿­À» »ý¼ºÇÏ´Â ¸í·É¾î¿¡ ´ëÇÏ¿©, +Àü¿ª-°£ÁÖ ¸ðµå°¡ ¿µÇâÀÌ ¾ø°Å³ª ¶Ç´Â ÀÇ»ç-¹è¿­ÀÇ Ã¹ ¹ø° ¿ø¼Ò°¡ Áö¿ª º¯¼ö·Î ¼±¾ðµÇ¾î ÀÖ´Ù¸é, +°á°ú ÀÇ»ç-¹è¿­ÀÇ °¢ º¯¼ö´Â Áö¿ª º¯¼öÀÔ´Ï´Ù. +(±× ÇÔ¼öÀÇ ¸Å°³º¯¼ö Áß Çϳª°¡ °Ç³×ÁúÁö¶óµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù -- ±× ¸Å°³º¯¼ö°¡ ByRefÀÏÁö¶óµµ -- ¿Ö³ÄÇÏ¸é ¸Å°³º¯¼ö´Â Áö¿ª º¯¼ö¿Í ºñ½ÁÇϱ⠶§¹®ÀÔ´Ï´Ù). ¿ªÀ¸·Î, ù ¿ø¼Ò°¡ global·Î ¼±¾ðµÇ¾ú´Ù¸é, Àü¿ª ¹è¿­ÀÌ »ý¼ºµË´Ï´Ù. ±×·¸Áö¸¸, ¾Æ·¡ÀÇ ÈçÇÑ È¥¶õÀÇ ±Ù¿øÀÌ ÀÌ °æ¿ì¿¡µµ Àû¿ëµÇ´Ï´Ù. StringSplitÀÇ Ã¹ ¿ø¼Ò´Â ArrayName0ÀÔ´Ï´Ù. WinGet List¿Í °°ÀÌ ´Ù¸¥ ¹è¿­-»ý¼º ¸í·É¾î¿¡ ´ëÇÏ¿©, ù ¹ø° ¿ø¼Ò´Â ArrayNameÀÔ´Ï´Ù (Áï, ¼ýÀÚ°¡ ¾ø½À´Ï´Ù).

+

+ÇÔ¼ö ¾È¿¡¼­, Array%i%¿Í °°Àº µ¿Àû º¯¼ö ÂüÁ¶´Â ÇØ´ç À̸§ÀÇ º¯¼ö°¡ Á¸ÀçÇÏÁö ¾Ê´Â ÇÑ, ¾ðÁ¦³ª Áö¿ª º¯¼ö·Î °áÁ¤µË´Ï´Ù. ¸¸¾à Á¸ÀçÇϸé Àü¿ª º¯¼ö°¡ »ç¿ëµË´Ï´Ù. ¾Æ¿¹ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é »õ·Î »ý¼ºµÉ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. Áö¿ª º¯¼ö·Î »ý¼ºµË´Ï´Ù. ´Ü, Àü¿ª-°£ÁÖ ¸ðµå°¡ ÄÑ ÀÖ´Ù¸é Àü¿ª º¯¼ö·Î »ý¼ºµË´Ï´Ù. °á°úÀûÀ¸·Î, ÇÔ¼ö´Â (Array%i% := A_Index°ú °°Àº ¼ö´ÜÀ» »ç¿ëÇÏ¿©) ¼öµ¿À¸·Î Àü¿ª ¹è¿­À» ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð Àü¿ª-°£ÁÖ ÇÔ¼ö·Î ¼±¾ðµÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù.

+ +

ÈçÇÑ È¥¶õÀÇ ±Ù¿ø: º¯¼ö¸¦ µ¿ÀûÀ¸·Î ÂüÁ¶Çߴµ¥ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é ½ºÅ©¸³Æ®°¡ ±âµ¿ÇÏ´Â ¼ø°£ ±× º¯¼ö°¡ »ý¼ºµË´Ï´Ù. ¿¹¸¦ µé¾î, ÇÔ¼ö ¹Û¿¡¼­ »ç¿ëµÉ ¶§, MsgBox %Array1%´Â ½ºÅ©¸³Æ®°¡ ±âµ¿ÇÏ´Â ¼ø°£ Array1À» Àü¿ªº¯¼ö·Î »ý¼ºÇÕ´Ï´Ù. ¹Ý´ë·Î, ÇÔ¼ö ¾È¿¡¼­ »ç¿ëµÉ ¶§, MsgBox %Array1%´Â ½ºÅ©¸³Æ®°¡ ±âµ¿ÇÏ´Â ¼ø°£ (Àü¿ª-°£ÁÖ ¸ðµå°¡ ¾Æ´Ñ ÇÑ), Array¿Í Array0ÀÌ Àü¿ª º¯¼ö·Î ¼±¾ðµÇ¾î ÀÖ´Ù°í ÇÒÁö¶óµµ, Array1À» Áö¿ª º¯¼öÁß Çϳª·Î »ý¼ºÇÕ´Ï´Ù.

+ +

µ¿ÀûÀ¸·Î ÇÔ¼ö È£ÃâÇϱâ

+

+v1.0.47.06+¿¡¼­, ÇÔ¼ö´Â (³»Àå ÇÔ¼öµµ ¿ª½Ã) ÆÛ¼¾Æ® »çÀÎÀ» ÅëÇÏ¿© µ¿ÀûÀ¸·Î È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, %Var%(x, "fox")´Â À̸§ÀÌ Var ¾È¿¡ µé¾î ÀÖ´Â ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù. ºñ½ÁÇÏ°Ô, Func%A_Index%()´Â A_IndexÀÇ ÇöÀç °ª¿¡ µû¶ó¼­ Func1() ¶Ç´Â Func2(), µîµîÀ» È£ÃâÇÕ´Ï´Ù.

+

+v1.1.07.00+¿¡¼­, %Var%()ÀÇ Var´Â ÇÔ¼ö À̸§, ÇÔ¼ö ÂüÁ¶ ¶Ç´Â ÇÔ¼ö¸¦ Èä³»³½ °´Ã¼¸¦ ´ãÀ» ¼ö ÀÖ½À´Ï´Ù. ÇØ´ç ÇÔ¼ö°¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ±âº» º£À̽º °´Ã¼ÀÇ __Call ¸ÞŸ-ÇÔ¼ö°¡ ´ë½Å¿¡ ¿äûµË´Ï´Ù.

+

+¾Æ·¡ÀÇ ÀÌÀ¯ Áß Çϳª ¶§¹®¿¡ ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ¾ø´Ù¸é, ±× È£ÃâÀ» ´ã°í Àִ ǥÇö½ÄÀÇ Æò°¡°¡ Á¶¿ëÈ÷ ±×¸®°í ³Ê¹« »¡¸® ³¡³ª¹Ç·Î, ÀÏ°ü¼º ¾ø´Â °á°ú¸¦ µµÃâÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
    +
  • Á¸ÀçÇÏÁö ¾Ê´Â ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù. ÀÌ°ÍÀº If IsFunc(VarContainingFuncName)¸¦ »ç¿ëÇϸé ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ³»Àå ÇÔ¼ö¸¦ Á¦¿ÜÇÏ°í, È£ÃâµÈ ÇÔ¼öÀÇ Á¤ÀÇ´Â ¹Ýµå½Ã ¸í½ÃÀûÀ¸·Î ½ºÅ©¸³Æ®¿¡ Á¸ÀçÇØ¾ß ÇÕ´Ï´Ù. ºñ-µ¿ÀûÀ¸·Î ¶óÀ̺귯¸® ÇÔ¼ö¸¦ È£ÃâÇϰųª #Include¿Í °°Àº ¼ö´ÜÀ» »ç¿ëÇÕ´Ï´Ù.
  • +
  • ³Ê¹« ¸Å°³º¯¼ö¸¦ Àû°Ô °Ç³Ü´Ï´Ù. ÀÌ°ÍÀº IsFunc()ÀÇ ¹Ýȯ °ªÀ» Á¡°ËÇϸé ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù (¹Ýȯ°ªÀº Çʼö ¸Å°³º¯¼öÀÇ °³¼ö¿¡ 1À» ´õÇÑ °ªÀÔ´Ï´Ù). ÁÖÀÇ: v1.0.48+¿¡¼­, ¸Å°³º¯¼ö¸¦ ³Ê¹« ¸¹ÀÌ °Ç³×µµ ¹Þ¾Æ µéÀÔ´Ï´Ù; ³ÑÄ£ ¸Å°³º¯¼ö¸¦ °¢°¢ Æò°¡ÇÑ ´ÙÀ½ (ÇÔ¼ö¿¡ ´ëÇÑ ¸ðµç È£ÃâÀ» Æ÷ÇÔÇÏ¿©) Æó±âÇÕ´Ï´Ù.
  • +
+

¸¶Áö¸·À¸·Î, ÇÔ¼ö¸¦ µ¿ÀûÀ¸·Î È£ÃâÇϸé Á¤»ó È£Ã⺸´Ù ¾à°£ ´õ ´À¸³´Ï´Ù. ¿Ö³ÄÇϸé Á¤»ó È£ÃâÀº ½ºÅ©¸³Æ®°¡ ½ÇÇàÀ» Çϱâ Àü¿¡ °áÁ¤(°Ë»ö ¿Ï·á)µÇ±â ¶§¹®ÀÔ´Ï´Ù.

+ +

´ÜÃà-ȸ·Î ºÒ¸®¾ð Æò°¡

+

+AND, OR, ±×¸®°í »ïÁø ¿¬»êÀÚ°¡ Ç¥Çö½Ä ¾È¿¡ »ç¿ëµÉ ¶§, ´ÜÃà ȸ·Î Æò°¡·Î ¼öÇ༺À» °³¼±ÇÕ´Ï´Ù (ÇÔ¼ö È£ÃâÀÌ Á¸ÀçÇϴ°¡ ¿©ºÎ¿¡ »ó°ü¾øÀÌ). ´ÜÃà ȸ·Î Æò°¡´Â ÃÖÁ¾ °á°ú¿¡ ¿µÇâÀ» ¹ÌÄ¥ ¼ö ¾ø´Â ºÎºÐÀ» Æò°¡ÇÏÁö ¾Ê½À´Ï´Ù. °³³äÀ» º¸¿©ÁÖ±â À§ÇØ, ´ÙÀ½ ¿¹Á¦¸¦ ¿¬±¸ÇØ º¸°Ú½À´Ï´Ù:

+ +
if (ColorName <> "" AND not FindColor(ColorName))
+    MsgBox %ColorName%À» ¹ß°ßÇÒ ¼ö ¾ø½À´Ï´Ù.
+

+À§ÀÇ ¿¹Á¦¿¡¼­, FindColor() ÇÔ¼ö´Â ColorName º¯¼ö°¡ ºñ¾îÀÖÁö ¾Ê´Â ÇÑ, Àý´ë È£ÃâµÇÁö ¾Ê½À´Ï´Ù. ÀÌ ¶§¹®¿¡ ANDÀÇ ¿ÞÂÊÀÌ false°¡ µÇ°í, ±×ÀÇ ¿À¸¥ÂÊ ¸¸À¸·Î´Â true¶ó´Â ÃÖÁ¾ °á°ú¸¦ »ý»êÇÒ °¡´É¼ºÀÌ ÀüÇô ¾ø±â ¶§¹®ÀÔ´Ï´Ù.

+

+ÀÌ ÇàÀ§ ¶§¹®¿¡, ±× ÇÔ¼ö°¡ AND³ª ORÀÇ ¿À¸¥ÂÊ¿¡ È£ÃâµÇ´õ¶óµµ, ÇÔ¼ö°¡ »ý»êÇÏ´Â ºÎÀÛ¿ëÀÌ (Àü¿ª º¯¼öÀÇ ³»¿ëÀ» º¯°æÇÏ´Â °Í°ú °°Àº) Àý´ë·Î ÀϾÁö ¾ÊÀ» °ÍÀ̶ó´Â »ç½ÇÀ» ±ú´Ý´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù.

+

+¶Ç ÁÖ¸ñÇÒ °ÍÀº ´ÜÃà-ȸ·Î Æò°¡°¡ ³»Æ÷µÈ AND¿Í OR¿¡ ´Ü°èÀûÀ¸·Î Àû¿ëµÈ´Ù´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ Ç¥Çö½Ä¿¡¼­, ColorNameÀÌ ºñ¾î ÀÖÀ¸¸é ¿ÀÁ÷ ¿ÞÂÊÀÇ Æò°¡¸¸ ÀϾ´Ï´Ù. ¿Ö³ÄÇÏ¸é ¿ÞÂÊ ¸¸À¸·Î ÃÖÁ¾ Á¤´äÀ» È®½ÇÇÏ°Ô °áÁ¤Çϱ⿡ ÃæºÐÇϱ⠶§¹®ÀÔ´Ï´Ù:

+
if (ColorName = "" OR FindColor(ColorName, Region1) OR FindColor(ColorName, Region2))
+    break   ; ´õ ÀÌ»ó °Ë»ö °ÍÀÌ ¾ø½À´Ï´Ù. ÀÏÄ¡ÇÑ °ÍÀÌ ¾ø½À´Ï´Ù.
+

+À§ÀÇ ¿¹Á¦¿¡¼­ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ, ºñ½Ñ (½Ã°£ÀÌ-µå´Â) ÇÔ¼ö¶ó¸é ÀϹÝÀûÀ¸·Î AND³ª ORÀÇ ¿À¸¥ÂÊ¿¡¼­ È£ÃâÇØ¾ß ¼öÇ༺´ÉÀÌ °³¼±µË´Ï´Ù. ÀÌ Å×Å©´ÐÀ» »ç¿ëÇÏ¸é ¶Ç ±×ÀÇ ¸Å°³º¯¼ö Áß Çϳª¿¡ ºÎÀûÀýÇÑ °ªÀÌ, ¿¹¸¦ µé¾î ºó ¹®ÀÚ¿­ÀÌ °Ç³×Áú ¶§, ÇÔ¼ö°¡ È£ÃâµÇÁö ¸øÇϵµ·Ï ¸¸µé ¼ö ÀÖ½À´Ï´Ù.

+

+v1.0.46+¿¡¼­, »ïÁø Á¶°Ç ¿¬»êÀÚ (?:)µµ ´ÜÃà Æò°¡¸¦ ÇÕ´Ï´Ù. ÇÊ¿ä ¾ø´Â ºÐ±â´Â Æò°¡ÇÏÁö ¾Ê½À´Ï´Ù.

+ +

ÇÔ¼ö ¾È¿¡¼­ ¼­ºê·çƾ »ç¿ëÇϱâ

+

+ÇÔ¼ö¿¡ ´Ù¸¥ ÇÔ¼öÀÇ Á¤ÀÇ´Â ´ãÀ» ¼ö ¾øÁö¸¸, ¼­ºê·çƾÀº ´ãÀ» ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¼­ºê·çƾ°ú ¸¶Âù°¡Áö·Î Gosub·Î ±âµ¿ÇÏ°í ReturnÀ¸·Î ¹ÝȯµË´Ï´Ù (ÀÌ °æ¿ì ReturnÀº Gosub¿¡ ¼ÓÇÏÁö ÇÔ¼ö¿¡ ¼ÓÇÏÁö ¾Ê½À´Ï´Ù).

+

+¾Ë·ÁÁø ÇÑ°è: ÇöÀç, °¢ ¼­ºê·çƾÀÇ À̸§(¶óº§)Àº Àüü ½ºÅ©¸³Æ® ¾È¿¡¼­ À¯ÀÏÇÏ°Ô ½Äº°ÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÇÁ·Î±×·¥Àº ¶óº§ÀÌ Áߺ¹µÇ¾î ÀÖÀ¸¸é ±âµ¿ÇÒ ¶§ ¿©·¯ºÐ¿¡°Ô °íÁöÇÒ °ÍÀÔ´Ï´Ù.

+

+ÇÔ¼ö°¡ Gosub¸¦ »ç¿ëÇØ (ÇÔ¼öÀÇ °ýÈ£ ¹Û¿¡ Á¸ÀçÇÏ´Â) °ø°³ ¼­ºê·çƾÀ¸·Î Á¡ÇÁÇØ °¡¸é, ¹Ù±ùÀÇ ¸ðµç º¯¼ö´Â Àü¿ª º¯¼öÀÌ°í ¼­ºê·çƾÀÌ µ¹¾Æ¿Ã ¶§±îÁö ÇÔ¼ö ÀÚ½ÅÀÇ Áö¿ª º¯¼ö¿¡´Â Á¢±ÙÇÒ ¼ö ¾ø½À´Ï´Ù. ±×·¸Áö¸¸, A_ThisFunc´Â ¿©ÀüÈ÷ ÇÔ¼öÀÇ À̸§À» ´ã°í ÀÖÀ» °ÍÀÔ´Ï´Ù.

+

+Goto·Î´Â ÇÔ¼ö ¾È¿¡¼­ ¹ÛÀ¸·Î Á¡ÇÁÇØ °¥ ¼ö ¾øÁö¸¸, ÇÔ¼ö´Â ¿ÜºÎ/°ø°³ ¼­ºê·çƾÀ¸·Î GosubÇÒ ¼ö ÀÖÀ¸¸ç °Å±âºÎÅÍ Goto¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù.

+

+GotoÀÇ »ç¿ëÀº ÀϹÝÀûÀ¸·Î ±ÇÀåÇÏÁö ¾ÊÁö¸¸, ÇÔ¼ö ¾È¿¡¼­ ¶Ç´Ù¸¥ À§Ä¡·Î Á¡ÇÁÇϴµ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é º¹ÀâÇÑ ÇÔ¼ö¸¦ °£·«ÇÏ°Ô ¸¸µå´Â µ¥ µµ¿òÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ¹Ýȯ ÁöÁ¡ÀÌ ¼ö ¾øÀÌ ¸¹°í, ±× ¸ðµÎ°¡ µ¹¾Æ¿À±â Àü¿¡ ±ú²ýÇÏ°Ô Ã»¼ÒÇØ¾ß ÇÒ °æ¿ì À¯¿ëÇÕ´Ï´Ù.

+

+ÇÔ¼ö´Â ¿ÜºÎÀûÀ¸·Î-È£ÃâµÇ´Â ¼­ºê·çƾÀ» ´ãÀ» ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ŸÀ̸Ó, GUI g-labels, ±×¸®°í ¸Þ´º Ç׸ñÀÌ ±×°ÍÀÔ´Ï´Ù. ÀϹÝÀûÀ¸·Î º°µµÀÇ ÆÄÀÏ¿¡ ½Î ³Ö°í #Include¿Í ÇÔ²² »ç¿ëÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ½ºÅ©¸³Æ®ÀÇ ÀÚµ¿-½ÇÇà ¼½¼Ç ¶§¹®¿¡ ¼­·Î °£¼·ÇÏ´Â ÀÏÀ» ¸·À» ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ´ÙÀ½ ÇÑ°è°¡ Àû¿ëµË´Ï´Ù:

+
    +
  • ÇÔ¼ö°¡ Á¤»óÀûÀ¸·Î È£ÃâµÇ¾ú´Ù¸é ±×·± ¼­ºê·çƾÀº Á¤Àû º¯¼ö¿Í Àü¿ª º¯¼ö¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù (Áö¿ª º¯¼ö ºÒ°¡). ¿Ö³ÄÇϸé ÇÔ¼ö-È£Ãâ ¾²·¹µå¸¦ °¡·Î æ (¶Ç´Â ±× ¹Ý´ë·Î) ¼­ºê·çƾ ¾²·¹µå°¡ °¡·Îä¾îÁø ½º·¹µå¿¡ º¸ÀÌ´Â Áö¿ª º¯¼öµéÀÇ °ªÀ» ¹Ù²Ü °¡´É¼ºÀÌ ³ô±â ¶§¹®ÀÔ´Ï´Ù. °Ô´Ù°¡, ¾ðÁ¦¶óµµ ÇÔ¼ö´Â ±×ÀÇ È£ÃâÀÚ¿¡°Ô µ¹¾Æ°©´Ï´Ù. ±×ÀÇ ¸ðµç Áö¿ª º¯¼ö´Â ºñ¿öÁ® ¸Þ¸ð¸®¸¦ Ç®¾îÁÝ´Ï´Ù.
  • +
  • ±×·± ¼­ºê·çƾÀº GUI Á¦¾î º¯¼ö·Î ¿ÀÁ÷ Àü¿ª º¯¼ö¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù (Á¤Àû º¯¼ö ºÒ°¡).
  • +
  • ÇÔ¼ö¿¡ ¼­ºê·çƾ ¾²·¹µå°¡ ÁøÀÔÇϸé, ±× ¾²·¹µå°¡ ¸¸µç µ¿Àû º¯¼ö¸¦ ÂüÁ¶Çϸé Àü¿ª º¯¼ö·Î °£Áֵ˴ϴ٠(¹è¿­À» ¸¸µç ¸í·É¾î Æ÷ÇÔ).
  • +
+

Return, Exit, ±×¸®°í ÃÑÆò

+

+´ÙÀ½ ½ÇÇà È帧ÀÌ ÇÔ¼ö ¾È¿¡¼­ ReturnÀ» ¸¸³ª±â Àü¿¡ ¸ÕÀú ´Ý´Â °ýÈ£¿¡ µµ´ÞÇϸé, ±× ÇÔ¼ö´Â ³¡³ª°í ºó °ªÀ» È£ÃâÀÚ¿¡°Ô µ¹·ÁÁÝ´Ï´Ù (ºó ¹®ÀÚ¿­). ºó °ªÀº ¶Ç ÇÔ¼ö°¡ ¸í½ÃÀûÀ¸·Î ReturnÀÇ ¸Å°³º¯¼ö¸¦ »ý·«ÇÒ ¶§¿¡µµ ¹ÝȯµË´Ï´Ù.

+

+ÇÔ¼ö°¡ Exit ¸í·É¾î¸¦ »ç¿ëÇÏ¿© ÇöÀç ¾²·¹µå¸¦ Á¾·áÇϸé, ±×ÀÇ È£ÃâÀÚ´Â ¹Ýȯ °ªÀ» ÀüÇô ¹ÞÁö ¸øÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ¼­¼ú¹® Var := Add(2, 3)´Â °¡Add() Á¾·áÇϸé Var¸¦ ±×´ë·Î µÑ °ÍÀÔ´Ï´Ù. ÇÔ¼ö°¡ ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÀÏÀ¸Äѵµ °°Àº ÀÏÀÌ ÀϾ´Ï´Ù. ¿¹¸¦ µé¾î (UseErrorLevel°¡ ÄÑÁ® ÀÖÁö ¾ÊÀ» ¶§) Á¸ÀçÇÏÁö ¾Ê´Â ÆÄÀÏÀ» ½ÇÇàÇÏ¸é °°Àº ÀÏÀÌ ÀϾ´Ï´Ù.

+

+ÇÔ¼ö´Â ±â¾ïÇϱ⠽¬¿î °ªÀ» Ãß°¡·Î °Ç³×±â À§ÇÑ ¸ñÀûÀ¸·Î ErrorLevelÀÇ °ªÀ» º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ÇÔ¼ö¸¦ Çϳª ÀÌ»óÀÌ ºó °ªÀ¸·Î È£ÃâÇÏ·Á¸é (ºó ¹®ÀÚ¿­), ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ºó µû¿ÈÇ¥ ½ÖÀ» »ç¿ëÇÕ´Ï´Ù: FindColor(ColorName, "").

+

+ÇÔ¼ö¸¦ È£ÃâÇÏ¸é »õ·Î¿î ¾²·¹µå°¡ ½ÃÀÛÇϹǷÎ, ÇÔ¼ö°¡ SendMode¿Í SetTitleMatchMode¿Í °°Àº ¼³Á¤¿¡ °¡ÇÑ º¯°æÀº ¸ðµÎ ±×ÀÇ È£ÃâÀÚ¿¡°Ôµµ ¿µÇâÀ» ¹ÌÄ¥ °ÍÀÔ´Ï´Ù.

+

+ÇÔ¼öÀÇ È£ÃâÀÚ´Â °Å±â¿¡ Á¸ÀçÇÏÁö ¾ÊÀº °ª ¶Ç´Â ¹è¿­À» °Ç³Ú ¼ö ÀÖ½À´Ï´Ù. ÇÔ¼ö°¡ »óÀÀÇÏ´Â ¸Å°³º¯¼ö¸¦ ByRef¶ó°í ±â´ëÇÒ °æ¿ì¿¡ À¯¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, GetNextLine(BlankArray%i%)¸¦ È£ÃâÇϸé ÀÚµ¿À¸·Î BlankArray%i% º¯¼ö°¡ »ý¼ºµË´Ï´Ù (È£ÃâÀÚ°¡ ÇÔ¼ö ¾È¿¡ Àִ°¡ ±×¸®°í ±× ÇÔ¼ö¿¡ Àü¿ª-°£ÁÖ ¸ðµå°¡ ÄÑÁ® Àִ°¡¿¡ µû¶ó Áö¿ª º¯¼ö ¶Ç´Â Àü¿ª º¯¼ö·Î »ý¼ºµË´Ï´Ù).

+

+ÇÔ¼ö ¾È¿¡¼­ »ç¿ëµÉ ¶§, ListVars´Â ÇÔ¼öÀÇ Áö¿ª º¯¼öµéÀ» ±×ÀÇ ³»¿ë°ú ÇÔ²² º¸¿©ÁÝ´Ï´Ù. ÀÌ´Â ½ºÅ©¸³Æ®¸¦ µð¹ö±ëÇÒ ¶§ µµ¿òÀÌ µË´Ï´Ù.

+ +

½ºÅ¸ÀÏ°ú À̸§Áþ±â °ü·Ê

+

+º¹ÀâÇÑ ÇÔ¼ö´Â Ưº°ÇÑ º¯¼ö¿¡ ±¸º°µÇ´Â Á¢µÎ»ç¸¦ ºÎ¿©ÇÏ¸é ´õ Àб⠽±°í °ü¸®Çϱâ ÁÁ´Ù´Â »ç½ÇÀ» ´«Ä¡Ã¤¼ÌÀ» °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ÇÔ¼öÀÇ ¸Å°³º¯¼ö ¸®½ºÆ®¿¡¼­ °¢ ¸Å°³º¯¼öÀÇ À̸§À» ¾Õ¿¡ "p" ¶Ç´Â "p_"¸¦ µÎ¾î ÁöÀ¸¸é ÇÑ ´«¿¡ ±×ÀÇ Æ¯¼öÇÑ º»¼ºÀ» ½±°Ô ±¸º°ÇÒ ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ÇÔ¼ö¿¡ ¼ö ½Ê°³ÀÇ Áö¿ª º¯¼ö°¡ µé¾î Àִµ¥ ÀüºÎ ÁÖÀǸ¦ ±â¿ï¿© ½Å°æÀ» ½á¾ßÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù. ºñ½ÁÇÏ°Ô, Á¢µÎ»ç "r"À̳ª "r_"Àº ByRef ¸Å°³º¯¼ö¿¡ »ç¿ëÇϸé ÁÁ°í, "s"³ª "s_"´Â Á¤Àû º¯¼ö¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ One True Brace (OTB) ½ºÅ¸ÀÏÀ» ¼±ÅÃÀûÀ¸·Î ÇÔ¼ö¸¦ Á¤ÀÇÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
Add(x, y) {
+    return x + y
+}
+ +

#Include¸¦ »ç¿ëÇÏ¿© ¿©·¯ ½ºÅ©¸³Æ® »çÀÌ¿¡ ÇÔ¼ö °øÀ¯Çϱâ

+

+#Include Áö½Ã¾î¸¦ »ç¿ëÇϸé (½ºÅ©¸³Æ®ÀÇ »ó´Ü¿¡µµ °¡´É) ÇÔ¼ö¸¦ ¿ÜºÎ ÆÄÀϷκÎÅÍ ÀûÀçÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+¼³¸í: ½ºÅ©¸³Æ®ÀÇ ½ÇÇà È帧ÀÌ ÇÔ¼ö Á¤ÀǸ¦ ¸¸´Ù¸é, (¼ø°£ÀûÀ¸·Î) ±×°ÍÀ» °Ç³Ê ¶Ù°í ÇÔ¼öÀÇ ´Ý´Â °ýÈ£ ´ÙÀ½ ÁÙºÎÅÍ ½ÇÇàÀ» Àç°³ÇÕ´Ï´Ù. °á°úÀûÀ¸·Î ½ÇÇàÀº À§ÂÊ¿¡ ÀÖ´Â ÇÔ¼ö·Î µé¾î°¥ ¼ö ¾øÀ¸¸ç, ½ºÅ©¸³Æ® ÃÖ»ó´Ü¿¡ Çϳª ÀÌ»óÀÇ ÇÔ¼ö°¡ Á¸ÀçÇÏ´õ¶óµµ ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù.

+ +

ÇÔ¼ö ¶óÀ̺귯¸®: Ç¥ÁØ ¶óÀ̺귯¸®¿Í »ç¿ëÀÚ ¶óÀ̺귯¸® [v1.0.47+]

+

+½ºÅ©¸³Æ®´Â ¿ÜºÎ ÆÄÀÏ¿¡ ÀÖ´Â ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. #Include¸¦ »ç¿ëÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ±×·¯·Á¸é ÇÔ¼ö¿Í °°Àº À̸§ÀÇ ÆÄÀÏÀÌ ´ÙÀ½ ¶óÀ̺귯¸® µð·ºÅ丮 Áß Çϳª¿¡ Á¸ÀçÇØ¾ß ÇÕ´Ï´Ù:

+
%A_ScriptDir%\Lib\  ; Áö¿ª ¶óÀ̺귯¸® - Çʼö AHK_L 42+.
+%A_MyDocuments%\AutoHotkey\Lib\  ; »ç¿ëÀÚ ¶óÀ̺귯¸®.
+path-to-the-currently-running-AutoHotkey.exe\Lib\  ; Ç¥ÁØ ¶óÀ̺귯¸®.
+

+¿¹¸¦ µé¾î, ½ºÅ©¸³Æ®°¡ Á¸ÀçÇÏÁö ¾Ê´Â ÇÔ¼ö MyFunc()¸¦ È£ÃâÇϸé, ÇÁ·Î±×·¥Àº »ç¿ëÀÚ ¶óÀ̺귯¸®¿¡¼­ "MyFunc.ahk"¶ó¸¥ À̸§ÀÇ ÆÄÀÏÀ» ã½À´Ï´Ù. ¹ß°ßÇÏÁö ¸øÇϸé, Ç¥ÁØ ¶óÀ̺귯¸®¿¡¼­ ã½À´Ï´Ù. ¿©ÀüÈ÷ ¹ß°ßÇÏÁö ¸øÇÏ¸é ±×¸®°í ÇÔ¼öÀÇ À̸§¿¡ ¹ØÁÙÀÌ Æ÷ÇԵǾî ÀÖ´Ù¸é (¿¹, MyPrefix_MyFunc), ÇÁ·Î±×·¥Àº µÎ ¶óÀ̺귯¸®¸¦ ¸ðµÎ µÚÁ® MyPrefix.ahk¶ó´Â À̸§ÀÇ ÆÄÀÏÀ» ã°í ÀÖ´Ù¸é ±×°ÍÀ» ÀûÀçÇÕ´Ï´Ù. ÀÌ·¸°Ô Çϸé MyPrefix.ahk¿¡ ÇÔ¼ö MyPrefix_MyFunc¸¦ ´ÙÀ½À» ¼öÀÖ°í À̸§ÀÌ MyPrefix_·Î ½ÃÀÛÇÏ´Â ±âŸ ÇÔ¼öµéÀ» ´ãÀ» ¼ö ÀÖ½À´Ï´Ù.

+

+[AHK_L 42+]: Áö¿ª ¶óÀ̺귯¸®°¡ Áö¿øµË´Ï´Ù. ¸ÕÀú Áö¿ª ¶óÀ̺귯¸®¸¦ °Ë»öÇÑ ´ÙÀ½¿¡ »ç¿ëÀÚ ¶óÀ̺귯¸®¿Í Ç¥ÁØ ¶óÀ̺귯¸®¸¦ Â÷·Ê·Î °Ë»öÇÕ´Ï´Ù.

+

+MyFunc()¿Í °°ÀÌ Á÷Á¢ È£Ãâ Çؾ߸¸ ¶óÀ̺귯¸®°¡ ÀÚµ¿-Æ÷ÇԵ˴ϴÙ. ÇÔ¼ö°¡ ¿¹¸¦ µé¾î ŸÀ̸ӳª ±¸ÀÌ À̺¥Æ® °°ÀÌ, µ¿Àû ¶Ç´Â °£Á¢ÀûÀ¸·Î È£ÃâµÉ ¶§¸¸, ¸í½ÃÀûÀ¸·Î ¶óÀ̺귯¸®¸¦ ½ºÅ©¸³Æ®¿¡ Æ÷ÇÔ½ÃÄÑ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: #Include <MyFunc>

+

+¶óÀ̺귯¸® ÆÄÀÏÀº ÀϹÝÀûÀ¸·Î ±×ÀÇ ÆÄÀÏ À̸§À¸·Î ¿ÀÁ÷ ÇϳªÀÇ ÇÔ¼ö¸¸ ´ã°í ÀÖÁö¸¸, »çÀûÀ¸·Î ÀڽŸ¸ È£ÃâÇÒ ÇÔ¼ö³ª ¼­ºê·çƾÀ» ´ãÀ» ¼öµµ ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ±×·± ÇÔ¼ö´Â À̸§ÀÌ ±¸º°µÇ¾î¾ß ÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ±×°ÍµéÀº Àü¿ª À̸§°ø°£ ¾È¿¡ ¿©ÀüÈ÷ Á¸ÀçÇÒ °ÍÀ̱⠶§¹®ÀÔ´Ï´Ù; Áï, ±×°ÍµéÀº ½ºÅ©¸³Æ® ¾îµð¿¡¼­³ª È£ÃâµÉ ¼ö ÀÖ½À´Ï´Ù.

+

+¶óÀ̺귯¸® ÆÄÀÏÀÌ #Include¸¦ »ç¿ëÇϸé, #Include¸¦ À§ÇÑ ÀÛ¾÷ µð·ºÅ丮´Â ±× ¶óÀ̺귯¸® ÆÄÀÏÀÇ µð·ºÅ丮ÀÔ´Ï´Ù. À̸¦ ÀÌ¿ëÇϸé ÇØ´ç ÇÔ¼ö¿Í °ü·Ã ÇÔ¼öµéÀÌ µé¾î ÀÖ´Â ´õ Å« ¶óÀ̺귯¸® ÆÄÀÏ·Î ¹æÇâÀüȯÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+½ºÅ©¸³Æ® ÄÄÆÄÀÏ·¯ (ahk2exe)µµ ¶óÀ̺귯¸® ÇÔ¼ö¸¦ Áö¿øÇÕ´Ï´Ù. ±×·¸Áö¸¸, AutoHotkey.exe »çº»ÀÌ À§ÀÇ ÄÄÆÄÀÏ·¯ µð·ºÅ丮¿¡ Á¸ÀçÇØ¾ß ÇÕ´Ï´Ù (º¸Åë ±×·² °ÍÀÔ´Ï´Ù). + +AutoHotkey.exe°¡ ¾ø¾îµµ, ÄÄÆÄÀÏ·¯´Â ¿©ÀüÈ÷ ÀÛµ¿ÇÏÁö¸¸, ¶óÀ̺귯¸® ÇÔ¼ö´Â ÀÚµ¿À¸·Î Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.

+

+¶óÀ̺귯¸®·ÎºÎÅÍ Æ÷ÇÔµÈ ÇÔ¼öµéÀº ´Ù¸¥ ÇÔ¼ö¿Í ¶È°°ÀÌ ¼öÇàµË´Ï´Ù. ¿Ö³ÄÇÏ¸é ½ºÅ©¸³Æ®°¡ ½ÇÇàµÇ±â Àü¿¡ ¹Ì¸®-ÀûÀçµÇ±â ¶§¹®ÀÔ´Ï´Ù.

+ +

³»Àå ÇÔ¼ö

+

+³»Àå ÇÔ¼öÀÇ ¸Å°³º¯¼ö ¸®½ºÆ® ³¡¿¡ ¼±ÅÃÀûÀÎ ¸Å°³º¯¼ö´Â ¿ÏÀüÈ÷ »ý·«Çصµ ÁÁ½À´Ï´Ù. ¿¹¸¦ µé¾î, WinExist("Untitled - Notepad")´Â À¯È¿ÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ±×ÀÇ ´Ù¸¥ ¼¼ ¸Å°³º¯¼ö°¡ ºó °ÍÀ¸·Î °£ÁֵDZ⠶§¹®ÀÔ´Ï´Ù.

+

+³»Àå ÇÔ¼ö´Â ½ºÅ©¸³Æ®°¡ ÀÚ½ÅÀÇ ÇÔ¼ö¸¦ °°Àº À̸§À¸·Î Á¤ÀÇÇÏ¸é ¿À¹ö¶óÀ̵åµË´Ï´Ù. ¿¹¸¦ µé¾î, ½ºÅ©¸³Æ®´Â ÀڽŸ¸ÀÇ ¸ÂÃã WinExist() ÇÔ¼ö¸¦ °¡Áú ¼ö ÀÖ½À´Ï´Ù. Ç¥ÁØ ÇÔ¼ö ´ë½Å¿¡ ÀÌ ÇÔ¼ö°¡ È£ÃâµË´Ï´Ù. ±×·¸Áö¸¸, ±×·¸°Ô µÇ¸é ½ºÅ©¸³Æ®´Â ¿ø·¡ ÇÔ¼ö¸¦ È£ÃâÇÒ ¹æ¹ýÀÌ ¾ø¾îÁ® ¹ö¸³´Ï´Ù.

+

+DLL ÆÄÀÏ¿¡ °ÅÁÖÇÏ´Â ¿ÜºÎ ÇÔ¼ö´Â DllCall()À¸·Î È£ÃâÇÕ´Ï´Ù.

+ +

ÀÚÁÖ-»ç¿ëµÇ´Â ÇÔ¼ö

+

FileExist(FilePattern): FilePatternÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é ºó °ªÀ» (ºó ¹®ÀÚ¿­) µ¹·ÁÁÝ´Ï´Ù (FilePatternÀº Àý´ë °æ·Î°¡ ÁöÁ¤µÇÁö ¾ÊÀ¸¸é A_WorkingDir¿¡ ÀÖ´Ù°í °£ÁÖÇÕ´Ï´Ù). ±×·¸Áö ¾ÊÀ¸¸é, ºÎÇÕÇϴ ù ÆÄÀÏÀ̳ª Æú´õÀÇ ¼Ó¼º ¹®ÀÚ¿­À» µ¹·Á ÁÝ´Ï´Ù ("RASHNDOCT"ÀÇ ÇÏÀ§ÁýÇÕ). (ÀÖ±â Èûµç °æ¿ìÀÌÁö¸¸) ÆÄÀÏ¿¡ ¾Æ¹« ¼Ó¼ºµµ ¾øÀ¸¸é, "X"°¡ ¹ÝȯµË´Ï´Ù. FilePattern´Â ÆÄÀÏÀ̳ª Æú´õÀÇ Á¤È®ÇÑ À̸§ÀÏ ¼ö ÀÖÁö¸¸, ¿ÍÀϵåÄ«µå(* ¶Ç´Â ?)¸¦ Æ÷ÇÔÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ºó ¹®ÀÚ¿­Àº "false"¶ó°í °£ÁֵǹǷÎ, ÇÔ¼öÀÇ ¹Ýȯ °ªÀº ¾ðÁ¦³ª ¾î¸²-ºÒ¸®¾ð °ªÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¼­¼ú¹® if FileExist("C:\My File.txt")´Â ÆÄÀÏÀÌ Á¸ÀçÇϸé ÂüÀÌµÇ°í ±×·¸Áö ¾ÊÀ¸¸é °ÅÁþÀÌ µË´Ï´Ù. ºñ½ÁÇÏ°Ô, ¼­¼ú¹® if InStr(FileExist("C:\My Folder"), "D")´Â ÆÄÀÏÀÌ Á¸ÀçÇÏ°í ±×¸®°í µð·ºÅäÀÌÀÏ °æ¿ì¿¡¸¸ ÂüÀÌ µË´Ï´Ù. ´ÙÀ½Àº »óÀÀÇÏ´Â ¸í·É¾îÀÔ´Ï´Ù: IfExist ±×¸®°í FileGetAttrib.

+

+GetKeyState(KeyName [, "P" or "T"]): GetKeyState ¸í·É¾î¿Í ´Ù¸£°Ô -- ´©¸£¸é D ±×¸®°í ¶¼¸é U¸¦ µ¹·ÁÁִµ¥ ºñÇØ -- ÀÌ ÇÔ¼ö´Â Å°°¡ ´­·Á ÀÖÀ¸¸é Âü(1) ¶¾ »óÅÂÀÌ¸é °ÅÁþ(0)À» µ¹·ÁÁÝ´Ï´Ù. KeyNameÀÌ À¯È¿ÇÏÁö ¾ÊÀ¸¸é, ºó ¹®ÀÚ¿­ÀÌ ¹ÝȯµË´Ï´Ù. ´Ù¸¥ ¹Ýȯ °ª°ú »ç¿ë¹ý¿¡ °üÇÑ Á¤º¸´Â GetKeyState¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+InStr(Haystack, Needle [, CaseSensitive = false, StartingPos = 1, Occurrence = 1]): Haystack ¹®ÀÚ¿­¿¡¼­ NeedleÀÌ ³ªÅ¸³­ À§Ä¡¸¦ µ¹·ÁÁÝ´Ï´Ù. StringGetPos¿Í ´Ù¸£°Ô, À§Ä¡ 1ÀÌ Ã¹ ¹ø° ¹®ÀÚÀÔ´Ï´Ù; ¿Ö³ÄÇϸé 0Àº "false"¿Í µ¿ÀǾîÀ̱⠶§¹®¿¡, Á÷°üÀûÀ¸·Î "¹ß°ßÇÏÁö ¸øÇÔ"ÀÇ ¶æÀÌ µË´Ï´Ù. ¸Å°³º¯¼ö CaseSensitive¸¦ »ý·«Çϰųª °ÅÁþÀ̸é, ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê°í °Ë»öÇÕ´Ï´Ù (´ë¼Ò¹®ÀÚÀÇ ±¸º°Àº StringCaseSense¿¡ µû¸¨´Ï´Ù); ±×·¸Áö ¾ÊÀ¸¸é, ´ë¼Ò¹®ÀÚ°¡ Á¤È®ÇÏ°Ô ÀÏÄ¡ÇØ¾ß ÇÕ´Ï´Ù. StartingPos¸¦ »ý·«Çϸé, 1ÀÌ ±âº»°ªÀÌ µË´Ï´Ù + +(HaystackÀÇ ½ÃÀÛ). + +±×·¸Áö ¾Ê°í, 2¸¦ ÁöÁ¤Çϸé HaystackÀÇ µÎ ¹ø° ¹®ÀÚºÎÅÍ ½ÃÀÛÇÏ°í, 3ÀÌ¸é ¼¼ ¹ø° ¹®ÀÚºÎÅÍ µîµî ½ÃÀÛÇÕ´Ï´Ù. +StartingPos°¡ HaystackÀÇ ±æÀ̸¦ ³Ñ¾î¼­¸é, 0ÀÌ ¹ÝȯµË´Ï´Ù. StartingPos°¡ 0À̰ųª À½¼öÀ̸é, ³¡¿¡¼­ºÎÅÍ ÇØ´ç ¿ÀÇÁ¼Â¿¡¼­ ½ÃÀÛÇÏ¿© ¿ª¹æÇâÀ¸·Î (¿À¸¥ÂÊ¿¡¼­ ¿ÞÂÊÀ¸·Î) °Ë»öÀÌ ¼öÇàµË´Ï´Ù. StartingPosÀÇ °ª¿¡ °ü°è ¾øÀÌ, ¹Ýȯ À§Ä¡´Â ¾ðÁ¦³ª HaystackÀÇ Ã¹ ¹®ÀÚ¿¡ »ó´ëÀûÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, "123abc789"¿¡¼­ "abc" ÀÇ À§Ä¡´Â ¾ðÁ¦³ª 4ÀÔ´Ï´Ù. Occurrence¿¡ 2À» ÁöÁ¤ÇÏ¸é µÎ ¹ø° ºÎÇÕÇÑ À§Ä¡¸¦ µ¹·ÁÁÖ°í, 3Àº ¼¼ ¹ø° ºÎÇÕ µîµîÀÇ À§Ä¡¸¦ µ¹·ÁÁÝ´Ï´Ù. +°ü·Ã Ç׸ñ: RegExMatch(), IfInString, ±×¸®°í StringGetPos.

+ +

+RegExMatch(Haystack, NeedleRegEx [, UnquotedOutputVar = "", StartingPos = 1]): ¹®ÀÚ¿­ ¾È¿¡¼­ ÆÐÅÏ (Á¤±Ô Ç¥Çö½Ä)¿¡ ºÎÇÕÇÏ´Â °ÍµéÀ» ã½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº RegExMatch()¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+RegExReplace(Haystack, NeedleRegEx [, Replacement = "", OutputVarCount = "", Limit = -1, StartingPos = 1]): ¹®ÀÚ¿­ ¾È¿¡¼­ ÆÐÅÏ (Á¤±Ô Ç¥Çö½Ä)¿¡ ºÎÇÕÇÏ´Â °ÍµéÀ» ±³Ã¼ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº RegExReplace()¸¦ ÂüÁ¶ÇÕ´Ï´Ù.

+

+SubStr(String, StartingPos [, Length]) [v1.0.46+]: ºÎºÐ¹®ÀÚ¿­À» StringÀ¸·ÎºÎÅÍ º¹»çÇÕ´Ï´Ù. StartingPos¿¡¼­ ½ÃÀÛÇؼ­ ¿À¸¥ÂÊÀ¸·Î ÁøÇàÇؼ­ ÃÖ´ë Length°³ÀÇ ¹®ÀÚ¸¦ Æ÷ÇÔÇÕ´Ï´Ù (Length¸¦ »ý·«Çϸé, ±âº» °ªÀº "¸ðµç ¹®ÀÚ"ÀÔ´Ï´Ù). + +StartingPos¿¡ 1À» ÁöÁ¤Çϸé ù ¹ø° ¹®ÀÚ¿¡¼­, 2À» ÁöÁ¤Çϸé 2¹ø° ¹®ÀÚºÎÅÍ ½ÃÀÛÇÕ´Ï´Ù. µîµî. ( StartingPos°¡ StringÀÇ ±æÀ̸¦ ³Ñ¾î¼­¸é, ºó ¹®ÀÚ¿­ÀÌ ¹ÝȯµË´Ï´Ù). StartingPos°¡ 1º¸´Ù ÀÛÀ¸¸é, ¹®ÀÚ¿­ ³¡À¸·ÎºÎÅÍÀÇ ¿ÀÇÁ¼ÂÀ¸·Î °£Áֵ˴ϴÙ. ¿¹¸¦ µé¾î, 0Àº °¡Àå ¸¶Áö¸· ¹®ÀÚ¸¦ ÃßÃâÇÏ°í, -1ÀÌ¸é ±× ¹®ÀÚ¿­ÀÇ ¸¶Áö¸· ¹®ÀڷκÎÅÍ 1¸¸Å­ ¿ÞÂÊÀ¸·Î ¶³¾îÁ® ÀÖ´Ù°í °£Áֵ˴ϴÙ. (±×·¯³ª StartingPos°¡ ¹®ÀÚ¿­ÀÇ ¿ÞÂÊ ³¡À» ³Ñ¾î¼­ ½ÃµµÇϸé, ù ¹®ÀÚºÎÅÍ ÃßÃâÀ» ½ÃÀÛÇÕ´Ï´Ù). Length´Â ¿­¶÷ÇÒ ÃÖ´ë ¹®ÀÚ °³¼öÀÔ´Ï´Ù (¹®ÀÚ¿­ÀÇ ³ª¸ÓÁö ºÎºÐÀÌ ³Ê¹« ªÀ¸¸é ÃÖ´ë °³¼öº¸´Ù Àû°Ô ¿­¶÷µË´Ï´Ù). +À½ÀÇ ±æÀÌ(Length)¸¦ ÁöÁ¤ÇÏ¸é ¹ÝȯµÈ ¹®ÀÚ¿­ÀÇ ³¡À¸·ÎºÎÅÍ ¹®ÀÚ¸¦ ±× °³¼ö ¸¸Å­ »ý·«ÇÕ´Ï´Ù (¸ðµç ¶Ç´Â ³Ê¹« ¸¹Àº ¹®ÀÚ¸¦ »ý·«ÇÏ¸é ºó ¹®ÀÚ¿­ÀÌ ¹ÝȯµË´Ï´Ù). °ü·Ã Ç׸ñ: RegExMatch(), StringMid, StringLeft/Right, StringTrimLeft/Right.

+

+StrLen(String): ¹®ÀÚ¿­ StringÀÇ ±æÀ̸¦ µ¹·ÁÁÝ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº StrLen()À» ÂüÁ¶ÇÕ´Ï´Ù.

+

+StrSplit(String [, Delimiters, OmitChars]) [v1.1.13+]: ÁöÁ¤µÈ °¡¸§ÀÚ¸¦ »ç¿ëÇÏ¿© ¹®ÀÚ¿­À» ºÎºÐ¹®ÀÚ¿­ ¹è¿­·Î ºÐÇÒÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº StrSplit()À» ÂüÁ¶ÇÕ´Ï´Ù.

+

+WinActive([WinTitle, WinText, ExcludeTitle, ExcludeText]): ÁöÁ¤µÈ ±âÁØ¿¡ ºÎÇÕÇÏ´Â È°¼º âÀÇ Unique ID (HWND)¸¦ µ¹·ÁÁÝ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº WinActive()¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+WinExist([WinTitle, WinText, ExcludeTitle, ExcludeText]): ù ¹ø°·Î ºÎÇÕÇϴ âÀÇ Unique ID (HWND)¸¦ µ¹·ÁÁÝ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº WinExist()¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

±âŸ ÇÔ¼ö

+

Asc(String): String¿¡¼­ ù ¹ÙÀÌÆ® ¶Ç´Â UTF-16 ÄÚµå À¯´ÖÀÇ ¼ýÄ¡ °ªÀ» µ¹·ÁÁÝ´Ï´Ù. ¶Ç´Â StringÀÌ ºñ¾î ÀÖÀ¸¸é 0À» µ¹·ÁÁÝ´Ï´Ù. ¹Ýȯ °ªÀº ¹üÀ§°¡ 0ºÎÅÍ 255±îÁöÀÔ´Ï´Ù (ANSI) ¶Ç´Â 0ºÎÅÍ 0xFFFF±îÁöÀÔ´Ï´Ù (Unicode). ÀÚ¼¼ÇÑ °ÍÀº Unicode vs ANSI¸¦ ÂüÁ¶ÇÕ´Ï´Ù. À¯´ÏÄÚµå º¸Ãæ ¹®ÀÚ¸¦ Çã¿ëÇÏ·Á¸é, ´ë½Å¿¡ Ord(String)¸¦ »ç¿ëÇϽʽÿÀ.

+

Chr(Number): Number°¡ ³ªÅ¸³»´Â ¹®ÀÚ Äڵ忡 »óÀÀÇÏ´Â ¹®ÀÚ¸¦ µ¹·ÁÁÝ´Ï´Ù (º¸Åë ¹®ÀÚ Çϳª). 127º¸´Ù Å« ¹®ÀÚ ÄÚµåÀÇ Àǹ̴ »ç¿ë ÁßÀÎ ¹®ÀÚ¿­ ÀÎÄÚµù¿¡ ´Þ·Á ÀÖ½À´Ï´Ù. ¹®ÀÚ ÀÎÄÚµùÀº ÀÌÁ¦ »ç¿ëÁßÀÎ ½ÇÇà ÆÄÀÏÀÌ Unicode ¶Ç´Â ANSIÀΰ¡¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù. À¯´ÏÄÚ°¡ Áö¿øµÇ¸é, Number´Â 0ºÎÅÍ 0x10FFFF »çÀÌÀÇ À¯´ÏÄÚµå ¹®ÀÚ ÄÚµåÀÔ´Ï´Ù ([v1.1.21]ÀÌÀüÀ̶ó¸é 0xFFFF); ±×·¸Áö ¾Ê°í ANSI ¹®ÀÚ ÄÚµå´Â ¹üÀ§°¡ 0ºÎÅÍ 255 »çÀÌÀÔ´Ï´Ù. Number°¡ À¯È¿ÇÑ ¹®ÀÚ ÄÚµå ¹üÀ§¿¡ ÀÖÁö ¾ÊÀ¸¸é, ºó ¹®ÀÚ¿­ÀÌ ¹ÝȯµË´Ï´Ù. ÈçÇÑ ¹®ÀÚ ÄÚµå·Î´Â 9 (ÅÇ), 10 (¶óÀÎÇǵå), 13 (ij¸®Áö ¸®ÅÏ), 32 (½ºÆäÀ̽º), 48-57 (¼ýÀÚ 0-9), 65-90 (´ë¹®ÀÚ A-Z), ±×¸®°í 97-122 (¼Ò¹®ÀÚ a-z)°¡ ÀÖ½À´Ï´Ù.

+

+DllCall(): ¿¹¸¦ µé¾î Ç¥ÁØ À©µµ¿ìÁî API ÇÔ¼ö °°ÀÌ, DLL ¾È ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº DllCall()À» ÂüÁ¶ÇÕ´Ï´Ù.

+

+FileOpen(): °´Ã¼-ÁöÇâÀû ÆÄÀÏ I/O¸¦ Á¦°øÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº FileOpen()¸¦ ÂüÁ¶ÇÕ´Ï´Ù.

+

+Func(FunctionName) [v1.1.00+]: + +(¿¹¸¦ µé¾î #Include·Î Æ÷ÇÔÇϰųª ¶Ç´Â ¶óÀ̺귯¸® ÇÔ¼ö¸¦ °íÁ¤ È£ÃâÇÏ¿©) FunctionNameÀÌ ¸í½ÃÀûÀ¸·Î ½ºÅ©¸³Æ®¿¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, Func()´Â 0À» µ¹·ÁÁÝ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ±× ÇÔ¼ö¸¦ °¡¸®Å°´Â ÂüÁ¶ ÁÖ¼Ò¸¦ ¹ÝȯÇÕ´Ï´Ù. + ÇÔ¼ö¸¦ È£ÃâÇϰųª ¸Å°³º¯¼öÀÇ ÃÖ´ë ÃÖ¼Ò °¹¼ö °°Àº Á¤º¸¸¦ ¿­¶÷ÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

GetKeyName(Key), GetKeyVK(Key), GetKeySC(Key) [v1.1.01+]: ÇÑ Å°ÀÇ ½ºÄµ Äڵ峪 °¡»ó ÄÚµå ¶Ç´Â À̸§/ÅؽºÆ®¸¦ ¿­¶÷ÇÕ´Ï´Ù. Key´Â "vkA2"³ª "sc01D"¿Í °°ÀÌ VK Äڵ峪 SC ÄÚµåÀÏ ¼ö ÀÖ½À´Ï´Ù. Å° À̸§À̰ųª ¾Æ´Ï¸é µÑÀ» Á¶ÇÕÇÑ °ÍÀÏ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î GetKeyName("vk1B")¿Í GetKeyName("Esc") ¸ðµÎ "Escape"¸¦ µ¹·ÁÁÖ´Â ¹Ý¸é¿¡, GetKeyVK("Esc")´Â 27À» µ¹·ÁÁÝ´Ï´Ù. VK ÄÚµå¿Í SC ÄÚµå´Â ½ÊÀ°Áø¼öÀÓ¿¡ À¯ÀÇÇϽʽÿÀ. ½ÊÁø¼ö¸¦ ÀûÀýÇÑ Æ÷¸ËÀ¸·Î º¯È¯ÇÏ·Á¸é, Format("vk{:x}", vk_code)À̳ª Format("sc{:x}", sc_code)¸¦ »ç¿ëÇÕ´Ï´Ù.

+

+IsByRef(Var) [v1.1.01+]: Var°¡ ByRef ¸Å°³º¯¼öÀÌ°í È£ÃâÀÚ°¡ º¯¼ö¸¦ °ø±ÞÇßÀ¸¸é 1À» µ¹·ÁÁÝ´Ï´Ù; ¶Ç´Â Var°¡ ´Ù¸¥ Á¾·ùÀÇ º¯¼öÀ̸é 0À» µ¹·ÁÁÝ´Ï´Ù.

+

+IsFunc(FunctionName) [v1.0.48+]: (¿¹¸¦ µé¾î #Include·Î Æ÷ÇÔÇϰųª ¶Ç´Â ¶óÀ̺귯¸® ÇÔ¼ö¸¦ °íÁ¤ È£ÃâÇÏ¿©) FunctionNameÀÌ ½ºÅ©¸³Æ®¿¡ ¸í½ÃÀûÀ¸·Î Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, IsFunc()´Â 0À» µ¹·ÁÁÝ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¸Å°³º¯¼öÀÇ ÃÖ¼Ò °³¼ö¿¡ 1À» ´õÇØ µ¹·ÁÁÝ´Ï´Ù +(¿¹, ¸Å°³º¯¼ö¸¦ ¿ä±¸ÇÏÁö ¾Ê´Â ÇÔ¼ö´Â 1, ¸Å°³º¯¼ö¸¦ 1 ¿À±¸ÇÏ´Â ÇÔ¼ö´Â 2, µîµî). + +¿¹¸¦ µé¾î, if IsFunc("MyFunc")¿Í if IsFunc(VarContainingFunctionName)´Â ÇÔ¼ö°¡ Á¸ÀçÇϸé ÂüÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é °ÅÁþÀÔ´Ï´Ù. v1.1.00+¿¡¼­, FunctionName´Â À̸§ÀÌ ¾Æ´Ï¶ó ÇÔ¼ö ÂüÁ¶ÀÏ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ÂüÁ¶: µ¿ÀûÀÎ ÇÔ¼ö-È£Ãâ, A_ThisFunc

+

+IsLabel(LabelName): LabelNameÀÌ ½ºÅ©¸³Æ®¿¡ ¼­ºê·çƾ, ÇÖÅ°, ¶Ç´Â ÇÖ½ºÆ®¸µÀ¸·Î Á¸ÀçÇϸé 0ÀÌ ¾Æ´Ñ °ªÀ» µ¹·ÁÁÝ´Ï´Ù (LabelName µÚ¿¡ ½ÖÁ¡Àº Æ÷ÇÔÇÏÁö ¾Ê½À´Ï´Ù). ¿¹¸¦ µé¾î, ¼­¼ú¹® if IsLabel(VarContainingLabelName)´Â ¶óº§ÀÌ Á¸ÀçÇϸé ÂüÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é °ÅÁþÀÔ´Ï´Ù. ¿¹¸¦ µé¾î Gosub, ÇÖÅ°, ¸Þ´º, ±×¸®°í Gui¿Í °°ÀÌ ¸í·É¾î¿¡ µ¿Àû ¶óº§À» ÁöÁ¤ÇÒ ¶§ ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÇÇÇÏ´Â µ¥ À¯¿ëÇÕ´Ï´Ù. ´ÙÀ½µµ ÂüÁ¶ÇϽʽÿÀ: ¶óº§.

+

+IsObject() [AHK_L 31+]: °ªÀÌ °´Ã¼ÀÎÁö °áÁ¤ÇÕ´Ï´Ù. ´ÙÀ½ ÂüÁ¶: Objects.

+

+ListView ±×¸®°í TreeView functions: ÀÚ¼¼ÇÑ °ÍÀº ListView ÆäÀÌÁö¿Í TreeView ÆäÀÌÁö¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

NumGet(VarOrAddress [, Offset = 0][, Type = "UPtr"]): ÁöÁ¤µÈ ÁÖ¼Ò+¿ÀÇÁ¼Â¿¡ ÀúÀåµÈ ÀÌÁø ¼ýÀÚ¸¦ ¿­¶÷ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº NumGetÀ» ÂüÁ¶ÇÕ´Ï´Ù.

+

NumPut(Number, VarOrAddress [, Offset = 0][, Type = "UPtr"]): ÁöÁ¤µÈ ÁÖ¼Ò-¿ÀÇÁ¼Â¿¡ ÀÌÁø Çü½ÄÀ¸·Î ¼ýÀÚ¸¦ ÀúÀåÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº NumPutÀ» ÂüÁ¶ÇÕ´Ï´Ù.

+

+OnMessage(MsgNumber [, "FunctionName"]): ¸Þ½ÃÁö/À̺¥Æ®¸¦ °üÁ¦ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº OnMessage()¸¦ ÂüÁ¶ÇÕ´Ï´Ù.

+

+Ord(String) [v1.1.21+]: String¿¡¼­ ù ¹ø° ¹®ÀÚÀÇ ¼­¼ö °ªÀ» µ¹·ÁÁÝ´Ï´Ù (¼ýÄ¡ ¹®ÀÚ ÄÚµå). StringÀÌ À¯´ÏÄÚµå º¸Ãæ ¹®ÀÚ·Î ½ÃÀÛÇϸé, Ord(String)Àº ±×¿¡ »óÀÀÇÏ´Â À¯´ÏÄÚµå ¹®ÀÚ Äڵ带 µ¹·ÁÁÝ´Ï´Ù (0x10000ºÎÅÍ 0x10FFFF »çÀÌÀÇ °ª). ±×·¸Áö ¾ÊÀ¸¸é Asc(String)°ú °°Àº °ªÀ» µ¹·ÁÁÝ´Ï´Ù.

+

+StrGet(Address [, Length] [, Encoding = None ] ) [AHK_L 46+]: ¸Þ¸ð¸® ÁּҷκÎÅÍ ¹®ÀÚ¿­À» º¹»çÇÕ´Ï´Ù. ¼±ÅÃÀûÀ¸·Î ÄÚµå ÆäÀÌÁö¿¡ µû¶ó º¯È¯ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº StrGet()À» ÂüÁ¶ÇÕ´Ï´Ù.

+

+StrPut(String, Address [, Length] [, Encoding = None ] ) [AHK_L 46+]: ¸Þ¸ð¸® ÁÖ¼Ò¿¡ ¹®ÀÚ¿­À» º¹»çÇÕ´Ï´Ù. ¼±ÅÃÀûÀ¸·Î ÄÚµå ÆäÀÌÁö¿¡ µû¶ó º¯È¯ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº StrPut()À» ÂüÁ¶ÇÕ´Ï´Ù.

+

+RegisterCallback(): ¸Ó½Å-ÄÚµå ÁÖ¼Ò¸¦ »ý¼ºÇÕ´Ï´Ù. È£ÃâµÉ ¶§ ÀÌ ÁÖ¼Ò¸¦ ÀÌ¿ëÇÏ¿© ½ºÅ©¸³Æ® ¾ÈÀÇ ÇÔ¼ö·Î È£ÃâÀ» ¹æÇâÀüȯ ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº RegisterCallback()À» ÂüÁ¶ÇÕ´Ï´Ù.

+

+Trim() [AHK_L 31+]: ¹®ÀÚ¿­ÀÇ ¾Õ/µÚ¿¡¼­ ¹®ÀÚ¸¦ °È¾î³À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº Trim()À» ÂüÁ¶ÇÕ´Ï´Ù.

+

+VarSetCapacity(UnquotedVarName [, RequestedCapacity, FillByte]): º¯¼öÀÇ °¡¿ë ´É·ÂÀ» È®´ëÇϰųª ±×ÀÇ ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº VarSetCapacity()¸¦ ÂüÁ¶ÇÕ´Ï´Ù.

+ +

ÀÏ¹Ý ¼öÇÐ

+

+ÁÖÀÇ: ¼öÇÐ ÇÔ¼ö´Â µé¾î¿À´Â ¸Å°³º¯¼ö°¡ ¼ýÀÚ°¡ ¾Æ´Ï¸é ÀϹÝÀûÀ¸·Î ºó ¹®ÀÚ¿­À» µ¹·ÁÁÝ´Ï´Ù.

+

+Abs(Number): NumberÀÇ Àý´ë°ªÀ» µ¹·ÁÁÝ´Ï´Ù. ¹Ýȯ°ªÀÇ À¯ÇüÀº Number¿Í °°½À´Ï´Ù (Á¤¼ö¸é Á¤¼ö, ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀÌ¸é ºÎµ¿ ¼Ò¼öÁ¡ ¼ö).

+

+Ceil(Number): Number¸¦ °¡Àå °¡±î¿î Á¤¼ö·Î ¿Ã¸²ÇØ µ¹·ÁÁÝ´Ï´Ù (.00 ²¿¸® ¾øÀ½). ¿¹¸¦ µé¾î, Ceil(1.2)´Â 2ÀÌ°í Ceil(-1.2)´Â -1ÀÔ´Ï´Ù.

+

+Exp(N): e (´ë·« 2.71828182845905)¸¦ N½ÂÇÏ¿© µ¹·ÁÁÝ´Ï´Ù. NÀº À½¼öÀÏ ¼ö ÀÖ°í ¼Ò¼öÁ¡ÀÌ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù. e°¡ ¾Æ´Ñ ´Ù¸¥ ¼ýÀÚ¸¦ Á¦°öÇÏ·Á¸é ** ¿¬»êÀÚ¸¦ »ç¿ëÇϽʽÿÀ.

+

+Floor(Number): Number¸¦ °¡Àå °¡±î¿î Á¤¼ö·Î ³»¸²ÇØ µ¹·ÁÁÝ´Ï´Ù(.00 ²¿¸® ¾øÀ½). ¿¹¸¦ µé¾î, Floor(1.2)´Â 1ÀÌ°í Floor(-1.2)´Â -2ÀÔ´Ï´Ù.

+

+Log(Number): NumberÀÇ »ó¿ë·Î±×¸¦ µ¹·ÁÁÝ´Ï´Ù (¹Ø¼ö 10). °á°ú´Â ºÎµ¿ ¼Ò¼öÁ¡ ¼ö·Î Æ÷¸ËµË´Ï´Ù. Number°¡ À½¼öÀ̸é, ºó ¹®ÀÚ¿­ÀÌ ¹ÝȯµË´Ï´Ù.

+

+Ln(Number): NumberÀÇ ÀÚ¿¬·Î±×¸¦ ¹ÝȯÇÕ´Ï´Ù (¹Ø¼ö e). °á°ú´Â ºÎµ¿ ¼Ò¼öÁ¡ ¼ö·Î Æ÷¸ËµË´Ï´Ù. Number°¡ À½¼öÀ̸é, ºó ¹®ÀÚ¿­ÀÌ ¹ÝȯµË´Ï´Ù.

+

+Mod(Dividend, Divisor): ³ª¸ÓÁö ¿¬»ê(Modulo)ÀÔ´Ï´Ù. ÇÇÁ¬¼ö¸¦ Á¬¼ö·Î ³ª´« ³ª¸ÓÁö¸¦ µ¹·ÁÁÝ´Ï´Ù. °á°úÀÇ ºÎÈ£´Â ¾ðÁ¦³ª ù ¸Å°³º¯¼öÀÇ ºÎÈ£¿Í °°½À´Ï´Ù. ¿¹¸¦ µé¾î, mod(5, 3)°ú mod(5, -3) ¸ðµÎ 2¸¦ »êÃâÇÏÁö¸¸, mod(-5, 3)°ú mod(-5, -3)´Â -2¸¦ »êÃâÇÕ´Ï´Ù. µÎ ÀÔ·Â Áß Çϳª¶óµµ ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀ̸é, ±× °á°úµµ ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, mod(5.0, 3)Àº 2.0ÀÌ°í mod(5, 3.5)Àº 1.5ÀÔ´Ï´Ù. µÎ ¹ø° ¸Å°³º¯¼ö°¡ 0À̸é, ÇÔ¼ö´Â ºó °á°ú (ºó ¹®ÀÚ¿­)À» µ¹·ÁÁÝ´Ï´Ù.

+

+Round(Number [, N]): NÀ» »ý·«Çϰųª, 0À̸é, Number´Â °¡Àå °¡±î¿î Á¤¼ö·Î ¹Ý¿Ã¸²µË´Ï´Ù. NÀÌ ¾ç¼öÀ̸é, Number ´Â N ½ÊÁø ÀÚ¸®¿¡¼­ ¹Ý¿Ã¸²µË´Ï´Ù. NÀÌ À½¼öÀ̸é, Number´Â ½ÊÁø ¼Ò¼öÁ¡ÀÇ ¿ÞÂÊÀ¸·Î N ÀÚ¸®¿¡¼­ ¹Ý¿Ã¸²µË´Ï´Ù. ¿¹¸¦ µé¾î, Round(345, -1)´Â 350ÀÌ°í Round(345, -2)´Â 300 ÀÔ´Ï´Ù. Transform Round¿Í ´Ù¸£°Ô , 1 º¸´Ù À۰ųª NÀ» »ý·«ÇÏ¸é ±× °á°ú´Â .000 ²¿¸®°¡ ¾ø½À´Ï´Ù. v1.0.44.01+¿¡¼­, NÀÇ °ªÀÌ 0º¸´Ù Å©¸é SetFormat¿¡ ÀÇÁ¸ÇÏÁö ¾Ê°í Á¤È®ÇÏ°Ô N ÀÚ¸®ÀÇ ½ÊÁø¼ö¸¦ º¸¿©ÁÝ´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é, Round()ÀÇ ¹Ýȯ °ª¿¡ ´Ù¸¥ ¼öÇÐ ¿¬»êÀ» ¼öÇàÇϽʽÿÀ; ¿¹¸¦ µé¾î: Round(3.333, 1)+0.

+

+Sqrt(Number): NumberÀÇ Æò¹æ±ÙÀ» µ¹·ÁÁÝ´Ï´Ù. ±× °á°ú´Â ºÎµ¿ ¼Ò¼öÁ¡ ¼ö·Î Æ÷¸ËµË´Ï´Ù. Number°¡ À½¼öÀ̸é, ºó ¹®ÀÚ¿­À» µ¹·ÁÁÝ´Ï´Ù.

+ +

»ï°¢ÇÔ¼ö

+

+Sin(Number) | Cos(Number) | Tan(Number): NumberÀÇ »çÀÎ|ÄÚ»çÀÎ|źÁ¨Æ® »ï°¢ÇÔ¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. Number´Â ¶óµð¾ÈÀ¸·Î Ç¥ÇöÇØ¾ß ÇÕ´Ï´Ù.

+

+ASin(Number): ¶óµð¾È ´ÜÀ§·Î ¾ÆÅ©»çÀÎÀ» µ¹·ÁÁÝ´Ï´Ù (Number´Â ±×ÀÇ »çÀΰªÀÔ´Ï´Ù) + +Number°¡ -1 º¸´Ù À۰ųª 1 º¸´Ù Å©¸é, ºó °á°ú (ºó ¹®ÀÚ¿­)À» µ¹·ÁÁÝ´Ï´Ù.

+

+ACos(Number): ¶óµð¾È ´ÜÀ§·Î ¾ÆÅ©ÄÚ»çÀÎÀ» ¿Ã·ÁÁÝ´Ï´Ù ( Number´Â ±×ÀÇ ÄÚ»çÀÎ °ªÀÔ´Ï´Ù). +Number°¡ -1º¸´Ù À۰ųª 1º¸´Ù Å©¸é, ºó °á°ú (ºó ¹®ÀÚ¿­)À» »êÃâÇÕ´Ï´Ù.

+

+ATan(Number): ¶óµð¾È ´ÜÀ§·Î ¾ÆũźÁ¨Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù (Number´Â ±×ÀÇ ÅºÁ¨Æ® °ªÀÔ´Ï´Ù).

+

ÁÖÀÇ: ¶óµð¾ÈÀ» µð±×¸®·Î º¯È¯ÇÏ·Á¸é, 180/pi (´ë·« 57.29578)¸¦ °öÇÕ´Ï´Ù. µð±×¸®¸¦ ¶óµð¾ÈÀ¸·Î º¯È¯ÇÏ·Á¸é pi/180 (´ë·« 0.01745329252)¸¦ °öÇÕ´Ï´Ù. piÀÇ °ª (´ë·« 3.141592653589793)Àº 1 ¾ÆũźÁ¨Æ®ÀÇ 4 ¹èÀÔ´Ï´Ù.

+ +

±âŸ ÇÔ¼ö

+

Æú¸®¿¡Å׳×(Polyethene)ÀÇ ¸í·É¾î ÇÔ¼ö: OutputVar°¡ ÀÖ´Â AutoHotkey ¸í·É¾î¿¡ È£Ãâ °¡´ÉÇÑ ÇÔ¼ö¸¦ Á¦°øÇÕ´Ï´Ù. ÀÌ ¶óÀ̺귯¸®´Â #Include¸¦ ÅëÇÏ¿© ½ºÅ©¸³Æ®¿¡ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ + diff --git a/src/docs/HotkeyFeatures.htm b/src/docs/HotkeyFeatures.htm new file mode 100644 index 0000000..d8f7a41 --- /dev/null +++ b/src/docs/HotkeyFeatures.htm @@ -0,0 +1,60 @@ + + +Advanced Hotkey Features - Mouse and Keyboard Shortcuts + + + + + + + +

°í±Þ ÇÖÅ° Ư¡

+ +

Å°º¸µå¿¡¼­ ¼Õ½±°Ô ´êÀ» ¼ö ÀÖ´Â Å° Àε¥µµ ¾î¶² Å°´Â °ÅÀÇ »ç¿ëµÇÁö ¾Ê½À´Ï´Ù. ÀÌ·± Å°µé¿¡ À¯¿ëÇÑ ÀϵéÀ» ½Ãŵ½Ã´Ù! ¿¹¸¦ µé¾î, ¿À¸¥ÂÊ ALT Å°¸¦ °ÅÀÇ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. ¿©·¯ºÐÀÌ ÀÚÁÖ ÇÏ´Â ÀÏÀ» ±× Å°¿¡ ½ÃÅ°½Ê½Ã¿À:

+
RAlt::
+MsgBox ¿À¸¥ÂÊ ALT Å°¸¦ ´©¸£¼Ì½À´Ï´Ù.
+return
+

+½ÉÁö¾î ¿À¸¥ÂÊ ¾ËÆ® Å°ÀÇ °íÀ¯ ±â´ÉÀ» ÀÒÁö ¾Ê°í¼­µµ À§ÀÇ ÀÏÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿À¸¥ÂÊ-ALT Å°¸¦ ´Ù¸¥ ÇÖÅ°¿¡ "Á¢µÎÅ°"·Î ÇÒ´çÇÏ¸é µË´Ï´Ù. ¾Æ·¡ÀÇ ¿¹Á¦¿¡¼­ ¿À¸¥ÂÊ-ALT Å°´Â Á¢µÎÅ°°¡ µË´Ï´Ù. ´Ù¸¥ ¸ðµç Å°µéÀ» Á¤»óó·³ ÀÛµ¿Çϵµ·Ï º¯°æÇÕ´Ï´Ù. ±×·¯³ª ¶Ç´Ù¸¥ Å°¸¦ º¯°æÇϴµ¥ »ç¿ëÇÏÁö ¾Ê°í ¿À¸¥ÂÊ-Alt Å°¸¦ ´©¸£°í ¶¾´Ù¸é, ±×ÀÇ ÇÖÅ° ÇàÀ§°¡ Áï½Ã È¿°ú¸¦ ¹ßÈÖÇÕ´Ï´Ù:

+
RAlt & j::AltTab
+

 

+

+¼ö½ÄÀÚ·Î CTRL, ALT, SHIFT, ±×¸®°í WIN¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ¹«¾ùÀÌµç µÎ°³ÀÇ Å° ¶Ç´Â ¸¶¿ì½º ¹öÆ°À» Á¶ÇÕÇÏ¿© ¸ÂÃã ÇÖÅ°¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù + +¿¹¸¦ µé¾î: Numpad0¸¦ ´©¸¥ ä·Î Numpad1À» ´­·¯ ÇÖÅ°¸¦ ±âµ¿½Ãŵ´Ï´Ù (±¸¹®: Numpad0 & Numpad1::); CapsLockÀ» ´©¸¥ ä·Î ¶Ç´Ù¸¥ Å°¸¦ ´©¸£°Å³ª, ¶Ç´Â ¸¶¿ì½º ¹öÆ°À» Ŭ¸¯ÇÕ´Ï´Ù (±¸¹®: CapsLock & RButton::). ÀÌ °æ¿ì, CapsLock Å°ÀÇ »óÅ (on ¶Ç´Â off)´Â ÇÖÅ°¸¦ ±âµ¿ÇÏ´Â µ¥ »ç¿ëµÇ´õ¶óµµ ¹Ù²îÁö ¾Ê½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº Å°¸¦ ¸¶À½´ë·Î Á¶¸³Çϱ⸦ ÂüÁ¶ÇϽʽÿÀ.

+

 

+

Alt-TabÀ» ¿ÏÀüÇÏ°Ô ´ëüÇϵµ·Ï ¸¶¿ì½º ÈÙ (¶Ç´Â ±âŸ Å°)À» º¯È¯ÇÕ´Ï´Ù. ÈÙÀ» Ŭ¸¯ÇØ ¸Þ´º¸¦ º¸¿©°Å³ª °¨Ãä´Ï´Ù. ±×¸®°í ÈÙÀ» µ¹·Á¼­ ¸Þ´º¸¦ Ç×ÇØÇÕ´Ï´Ù. ÈÙÀº Alt-Tab ¸Þ´º°¡ º¸ÀÌÁö ¾ÊÀ» ¶§ ¿©ÀüÈ÷ Á¤»ó ÀÛµ¿ÇÕ´Ï´Ù. ´ÙÀ½Àº ±× ±¸¹®ÀÔ´Ï´Ù:

+
MButton::AltTabMenu
+WheelDown::AltTab
+WheelUp::ShiftAltTab
+

 

+

Å°º¸µå Å°¸¦ ¸¶¿ì½º ¹öÆ°ÀÌ µÇµµ·Ï ¸¸µì´Ï´Ù, ¶Ç´Â Å°³ª ¸¶¿ì½º ¹öÆ°À» ´©¸£°í ÀÖ´Â µ¿¾È ¾î¶² ÇàÀ§°¡ °è¼ÓÇؼ­ ¹Ýº¹µÇµµ·Ï ¸¸µì´Ï´Ù. ¿¹Á¦´Â ¸®¸ÊÇÎ ÆäÀÌÁö¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

 

+

ÇÖÅ°°¡ ¹®¸ÆÀ» °¨ÁöÇϵµ·Ï ¸¸µì´Ï´Ù: ÀÛ¾÷ ÁßÀΠâÀÇ À¯Çü¿¡ ÀûÀýÇÏ°Ô °¡Àå-½±°Ô-´êÀ»-¼ö-ÀÖ´Â ÇÖÅ°°¡ ÇàÀ§¸¦ ¼öÇàÇÏ°Ô ÇÕ´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­, ¿À¸¥ÂÊ ÄÜÆ®·Ñ Å°´Â È°¼º âÀÌ ³ëÆ®ÆеåÀΰ¡ ¾Æ´Ï¸é °è»ê±âÀΰ¡¿¡ µû¶ó ´Ù¸£°Ô ÇàÀ§¸¦ ¼öÇàÇÕ´Ï´Ù:

+
#IfWinActive ahk_class Notepad
+RControl::WinMenuSelectItem, , , File, Save  ; ÇöÀç ÆÄÀÏÀ» ³ëÆ®Æе忡 ÀúÀåÇÕ´Ï´Ù.
+
+#IfWinActive Calculator
+RControl::Send, ^c!{tab}^v  ; °è»ê±âÀÇ ³»¿ëÀ» ÀÌÀüÀÇ È°¼º â ¾ÈÀ¸·Î º¹»çÇÕ´Ï´Ù.
+

+ÀÚ¼¼ÇÑ °ÍÀº #IfWinActive¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

 

+

ÇÖ-½ºÆ®¸µ: ŸÀÚÇϸ鼭 È®ÀåµÉ ¾à¾î¸¦ Á¤ÀÇÇÕ´Ï´Ù. Ưº°ÇÑ ÈÆ·ÃÀ̳ª °æÇèÀÌ ÀüÇô ÇÊ¿ä ¾ø½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ÁÙÀÌ µé¾î ÀÖ´Â ½ºÅ©¸³Æ®´Â ŸÀÚÇÏ´Â °÷¿¡¼­ ceo, cfo, ±×¸®°í btw¸¦ È®ÀåÇÕ´Ï´Ù:

+
::ceo::Chief Executive Officer
+::cfo::Chief Financial Officer
+::btw::by the way
+

(º¸´Ù ÀÚ¼¼ÇÑ °ÍÀº ¿©±â¸¦ ÂüÁ¶ÇÕ´Ï´Ù)
+

+

 

+

°ÔÀ̸Ӷó¸é Ưº°È÷ °ü½ÉÀ» °¡Áú ¸¸ÇÑ ±â´Éµé:

+
    +
  • ¼Õ°¡¶ô¿¡ °íÅëÀ» ´ú¾îÁÝ´Ï´Ù. ½ÇÁ¦·Î ¾î´À Å°µç ÇÖÅ°·Î »ç¿ëÇÏ¸é µË´Ï´Ù. ¿©±â¿¡´Â ´ÜÀÏ ±âÈ£¹®ÀÚ, È­»ìÇ¥ Å°, ³ÑÆеå Å°, ½ÉÁö¾î Å° ¼ö½ÄÀÚ ÀÚüµµ Æ÷ÇԵ˴ϴ٠(CTRL/ALT/WIN/SHIFT).
  • +
  • ¸¶¿ì½º ÇÖÅ°¸¦ ¸¸µì´Ï´Ù. ¿©±â¿¡´Â ¸¶¿ì½º ÈÙ ¹öÆ°(MButton) ±×¸®°í ÈÙÀÇ À§/¾Æ·¡ ¶Ç´Â ÁÂ/¿ì ȸÀüÀ» Æ÷ÇÔÇÕ´Ï´Ù (WheelUp, WheelDown, WheelLeft, ±×¸®°í WheelRight). + ¶Ç Å°º¸µå Å°¸¦ ¸¶¿ì½º ¹öÆ°°ú Á¶ÇÕÇØ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¿À¸¥ÂÊ-ÄÜÆ®·Ñ-¹öÆ°Àº ^RButton::À¸·Î Ç¥ÇöµË´Ï´Ù.
  • +
  • "¹«»ç-Åë°ú" ÇÖÅ°¸¦ ¸¸µì´Ï´Ù. ¿¹¸¦ µé¾î, Ŭ¸¯ ÀÚü°¡ °ÔÀÓ¿¡ Á¤»óÀûÀ¸·Î Àü¼ÛµÇ´Â µ¿¾È¿¡µµ ¿ÞÂÊ ¸¶¿ì½º ¹öÆ°Àº ÇÖÅ° ÇàÀ§¸¦ Ã˹߽Ãų ¼ö ÀÖ½À´Ï´Ù. (±¸¹®: ~LButton::).
  • +
  • PixelSearch, PixelGetColor, ±×¸®°í ImageSearch¿Í °°Àº ¸í·É¾î¸¦ »ç¿ëÇÏ¿© °ÔÀÓÀ» ÀÚµ¿È­ÇÕ´Ï´Ù.
  • +
  • Å°º¸µå °¥°í¸®¸¦ ¼±ÅÃÀûÀ¸·Î »ç¿ëÇÏ¿© ÇÖÅ°¸¦ ±¸ÇöÇÕ´Ï´Ù. °ÔÀÓÀÌ CPU¸¦ ´ú »ç¿ëÇÏ´Â µ¿¾È ´Ù¸¥ ÇÖÅ° ¹æ¹ýº¸´Ù ´õ ¹ÝÀÀÀÌ ÁÁ½À´Ï´Ù. Å°º¸µå °¥°í¸®´Â ¶Ç °ÔÀÓÀÇ ÇѰ踦 ±Øº¹ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾î´À Å°µç ¾ó¸¶µçÁö °ÔÀÓ ÇàÀ§¿¡ "¸Ê"ÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • +
+

´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ÇÖÅ°¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ + diff --git a/src/docs/Hotkeys.htm b/src/docs/Hotkeys.htm new file mode 100644 index 0000000..5747c0d --- /dev/null +++ b/src/docs/Hotkeys.htm @@ -0,0 +1,308 @@ + + +Hotkeys (Mouse, Joystick and Keyboard Shortcuts) + + + + + + + + + +

ÇÖÅ° (¸¶¿ì½º, Á¶À̽ºÆ½ ±×¸®°í Å°º¸µå ´ÜÃàÅ°)

+ + +

¸ñÂ÷

+ + +

¼Ò°³¿Í °£´ÜÇÑ ¿¹Á¦

+

ÇÖÅ°´Â Á¾Á¾ ´ÜÃàÅ°¶ó°í ÁöĪµË´Ï´Ù. ½±°Ô ÇÑ ÇàÀ§¸¦ Ã˹߽Ãų ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù (¿¹¸¦ µé¾î ÇÁ·Î±×·¥À̳ª Å°º¸µå ¸ÅÅ©·Î¸¦ ±âµ¿ÇÕ´Ï´Ù). ´ÙÀ½ ¿¹Á¦¿¡¼­, ÇÖÅ° Win+NÀº ³ëÆ®Æе带 ±âµ¿Çϵµ·Ï ±¸¼ºµË´Ï´Ù. ÆÄ¿îµå »çÀÎ[#]Àº Windows Å°¸¦ ³ªÅ¸³À´Ï´Ù. ÀÌ°ÍÀº ¼ö½ÄÅ°(modifier)·Î ¾Ë·ÁÁ® ÀÖ½À´Ï´Ù:

+
#n::
+Run Notepad
+return
+

+À§ÀÇ ¸¶Áö¸· ÁÙ¿¡¼­ returnÀº ÇÖÅ°¸¦ ³¡³»´Â ±â´ÉÀ» ÇÕ´Ï´Ù. ±×·¸Áö¸¸, ÇÖÅ°°¡ ¿ÀÁ÷ ÇÑ ÁÙ¸¸ ½ÇÇàÇÒ ÇÊ¿ä°¡ ÀÖ´Ù¸é, ÀÌ ÁÙÀº °ã-½ÖÁ¡ÀÇ ¿À¸¥ÂÊ¿¡ ³ª¿­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù½Ã ¸»ÇØ, return¹®ÀÌ ¹¬½ÃÀûÀ¸·Î ÀÖ½À´Ï´Ù:

+
#n::Run Notepad
+

+ÇÖÅ°¿¡ Çϳª ÀÌ»óÀÇ ¼ö½ÄÀÚ¸¦ »ç¿ëÇÏ·Á¸é, ±×°ÍµéÀ» ¿¬¼ÓÀûÀ¸·Î ³ª¿­ÇÕ´Ï´Ù (¼ø¼­´Â ¹®Á¦°¡ ¾ÈµË´Ï´Ù). ´ÙÀ½ ¿¹Á¦´Â ^!s¸¦ »ç¿ëÇÏ¿© Control+Alt+S¸¦ ³ªÅ¸³À´Ï´Ù:

+
^!s::
+Send Sincerely,{enter}John Smith  ; ÀÌ ÁÙÀº Å°´­¸²À» È°¼º (°¡Àå ¾ÕÂÊ) â¿¡ º¸³À´Ï´Ù.
+return
+

´ÙÀ½ ¼ö½ÄÅ° ½Éº¼À» »ç¿ëÇÏ¿© ÇÖÅ°¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
½Éº¼¼³¸í
#Win (À©µµ¿ìÁî ·Î°í Å°). v1.0.48.01+¿¡¼­, À©µµ¿ìÁî ºñ½ºÅ¸ ÀÌÈÄ¿¡, À©µµ¿ìÁî Å°°¡ Æ÷ÇÔµÈ (¿¹, #a) ÇÖÅ°´Â À©µµ¿ìÁî Å°¸¦ ¶¿ ¶§±îÁö ±â´Ù¸®´Ù°¡ ºñ·Î¼­ "L" Å°´­¸²À» ´ã°í ÀÖ´Â ÅؽºÆ®¸¦ Àü¼ÛÇÕ´Ï´Ù. + ÀÌ ´öºÐ¿¡ ±×·± ÇÖÅ° ¾È¿¡¼­ Send¸¦ »ç¿ëÇÏ´õ¶óµµ PC°¡ Àá±âÁö ¾Ê½À´Ï´Ù. + ÀÌ ÇàÀ§´Â SendPlay (ÇÊ¿äÇÏÁö ¾ÊÀ¸¹Ç·Î) ±×¸®°í ¸Í¸ñ ¸ðµå¸¦ Á¦¿ÜÇÏ°í ¸ðµç Àü¼Û ¸ðµå¿¡ Àû¿ëµË´Ï´Ù.
!Alt
^Control
+Shift
&¾ÚÆÛ¼¾Æ®¸¦ µÎ °³ÀÇ Å° »çÀÌ ¶Ç´Â ¸¶¿ì½º ¹öÆ°¿¡ »ç¿ëÇÏ¸é ±×µéÀ» Á¶ÇÕÇØ ¸ÂÃã ÇÖÅ°¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº ¾Æ·¡¸¦ ÂüÁ¶ÇÕ´Ï´Ù.
<ÇÑ ½ÖÁß¿¡ ¿ÞÂÊ Å°¸¦ »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î <!a´Â !a¿Í °°½À´Ï´Ù. ¿ÞÂÊ Alt Å°¸¸ ÇàÀ§¸¦ Ã˹߽ÃŲ´Ù´Â Á¡¸¸ ´Ù¸¨´Ï´Ù.
>ÇÑ ½ÖÁß¿¡ ¿À¸¥ÂÊ Å°¸¦ »ç¿ëÇÕ´Ï´Ù.
<^>!

AltGr (alternate graving). Å°º¸µå ·¹À̾ƿô¿¡ ¿À¸¥ÂÊ-Alt ¸»°í AltGr Å°°¡ ÀÖ´Ù¸é, ÀÌ ÀÏ·ÃÀÇ ½Éº¼Àº º¸Åë AltGrÀ» ³ªÅ¸³»´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
<^>!m::MsgBox AltGr+mÀ» ´­·¶½À´Ï´Ù.
+<^<!m::MsgBox LeftControl+LeftAlt+mÀ» ´­·¶½À´Ï´Ù.
+

´Ù¸¥ ¹æ¹ýÀ¸·Î, AltGr ÀÚü¸¦ ÇÖÅ°·Î ¸¸µé·Á¸é, ´ÙÀ½ ÇÖÅ°¸¦ »ç¿ëÇϽʽÿÀ (À§¿¡ º¸¿©ÁØ °Í°ú °°Àº ÇÖÅ°°¡ ÇÊ¿ä ¾ø½À´Ï´Ù):

+
LControl & RAlt::MsgBox AltGr ÀÚü¸¦ ´­·¶½À´Ï´Ù.
*

¿ÍÀϵåÄ«µå: Ãß°¡ ¼ö½ÄÀÚ°¡ ´­·Á ÀÖ´õ¶óµµ ÇÖÅ°¸¦ Ã˹߽Ãŵ´Ï´Ù. + ÀÌ°ÍÀº Á¾Á¾ Å°³ª ¹öÆ°ÀÇ ¸®¸ÊÇΰú ÇÔ²² »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î:

+
*#c::Run Calc.exe  ; Win+C, Shift+Win+C, Ctrl+Win+C, µîµîÀº ¸ðµÎ ÀÌ ÇÖÅ°¸¦ Ã˹߽Ãŵ´Ï´Ù.
+*ScrollLock::Run Notepad  ; ScrollLockÀ» ´©¸£¸é ÀÌ ÇÖÅ°´Â ¼ö½Ä Å°°¡ ´­·Á ÀÖ´õ¶óµµ Ã˹ߵ˴ϴÙ.
~

ÇÖÅ°°¡ Ã˹ߵǸé, ±× Å°ÀÇ °íÀ¯ ±â´ÉÀº ºÒ´ÉÀÌ µË´Ï´Ù (½Ã½ºÅÛ¿¡ º¸ÀÌÁö ¾Ê½À´Ï´Ù). ¾Æ·¡ÀÇ µÎ ¿¹Á¦¿¡¼­ , »ç¿ëÀÚ°¡ ¸¶¿ì½º ¹öÆ°À» Ŭ¸¯Çϸé È°¼º âÀ¸·Î Àü¼ÛµË´Ï´Ù:

+
~RButton::MsgBox ¿À¸¥ÂÊ ¸¶¿ì½º ¹öÆ°À» Ŭ¸¯Çß½À´Ï´Ù.
+~RButton & C::MsgBox ¿À¸¥ÂÊ ¸¶¿ì½º ¹öÆ°À» ´©¸¦ ä·Î C¸¦ ´­·¶½À´Ï´Ù.
+

+ ´Ù¸¥ Á¢µÎ ½Éº¼°ú ´Ù¸£°Ô, Æ¿µå Á¢µÎ ½Éº¼Àº ¾î¶² ÇÖÅ°ÀÇ º¯Çü¿¡´Â ³ªÅ¸³ª´Â °ÍÀÌ Çã¿ëµË´Ï´Ù. + ±×·¸Áö¸¸, ²¨ÁöÁö ¾Ê¾Ò°Å³ª º¸·ùµÈ ¸ÂÃã Á¶ÇÕ ÇÖÅ°ÀÇ Á¢µÎ Å°¿¡ Æ¿µå°¡ Àû¿ëµÇ¸é, ¸ðµç Å°Á¶ÇÕ¿¡ ´ëÇÏ¿© ±× Á¢µÎ Å°ÀÇ ÇàÀ§¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.

+

¾ËÆ®-ÅÇÀ» ´ëüÇϴ Ư¼öÇÑ ÇÖÅ°´Â ¾ðÁ¦³ª Æ¿µå Á¢µÎ ½Éº¼À» ¹«½ÃÇÕ´Ï´Ù.

+

[v1.1.14+]: Æ¿µå Á¢µÎ ½Éº¼ÀÌ ±× Àڽŵµ ÇÖÅ°·Î »ç¿ëµÇ´Â ¸ÂÃã ¼ö½Ä Å°¿¡ Àû¿ëµÇ¸é (Á¢µÎ Å°), ±× ÇÖÅ°´Â Å°¸¦ ¶¿ ¶§±îÁö ±â´Ù¸®´Â ´ë½Å¿¡ Å°°¡ ´­¸± ¶§ Ã˹ߵ˴ϴÙ. + + ¿¹¸¦ µé¾î, À§ÀÇ ~RButton ÇÖÅ°´Â ¹öÆ°ÀÌ ´­¸®ÀÚ ¸¶ÀÚ Ã˹ߵ˴ϴÙ. v1.1.14 ÀÌÀüÀ̶ó¸é (Æ¿µå Á¢µÎ ½Éº¼ÀÌ ¾øÀ¸¹Ç·Î), ¹öÆ°À» ¶¼ÀÚ¸¶ÀÚ Ã˹ߵǾú½À´Ï´Ù. ±×·¯³ª RButton & C Á¶ÇÕÀÌ È°¼ºÈ­µÇ¾î ÀÖÁö ¾ÊÀ» °æ¿ì¿¡¸¸ Ã˹ߵǾú½À´Ï´Ù.

+

+ Æ¿µå Á¢µÎ ½Éº¼ÀÌ ¸ÂÃã Á¶ÇÕ ÇÖÅ°¿¡¸¸ Àû¿ëµÇ°í ºñ-¸ÂÃã ÇÖÅ°¿¡´Â Àû¿ëµÇÁö ¾ÊÀ¸¸é, ±× ÇÖÅ°ÀÇ °íÀ¯ ±â´ÉÀÌ ¿©ÀüÈ÷ ¸·Çô ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¾Æ·¡ÀÇ ½ºÅ©¸³Æ®¿¡¼­ AppsKey¸¦ ´©¸£¸é ToolTipÀ» º¸¿©ÁÖ°í ¹®¸Æ ¸Þ´º´Â Ã˹߽ÃÅ°Áö ¾Ê½À´Ï´Ù:

+
AppsKey::ToolTip âÀ» ¼øȸÇÏ·Á¸é < ¶Ç´Â >À» ´©¸¨´Ï´Ù.
+AppsKey Up::ToolTip
+~AppsKey & <::Send !+{Esc}
+~AppsKey & >::Send !{Esc}
+
$ +

ÀÌ°ÍÀº ÁÖ·Î ½ºÅ©¸³Æ®°¡ Send ¸í·É¾î¸¦ »ç¿ëÇÏ¿©, ÇÖÅ° ÀÚü¸¦ ±¸¼ºÇÏ´Â Å°µéÀ» Àü¼ÛÇÒ °æ¿ì¿¡¸¸ ÇÊ¿äÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÇÖÅ° ÀÚü°¡ ÃË¹ßµÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. $ Á¢µÎ ½Éº¼Àº °­Á¦·Î Å°º¸µå °¥°í¸®°¡ ÀÌ ÇÖÅ°¸¦ ±¸ÇöÇϴµ¥ »ç¿ëµÇµµ·Ï ¸¸µì´Ï´Ù. ±× ºÎÀÛ¿ëÀ¸·Î Send ¸í·É¾î´Â ±× ÇÖÅ°¸¦ Ã˹߽ÃÅ°Áö ¸øÇÕ´Ï´Ù. $ Á¢µÎ ½Éº¼Àº ÀÌ ÇÖÅ°°¡ Á¤ÀÇµÈ À§ÂÊ ¾îµò°¡¿¡ #UseHookÀ» ÁöÁ¤ÇÏ´Â °Í°ú µ¿µîÇÕ´Ï´Ù.

+

+ $ Á¢µÎ ½Éº¼Àº ¸¶¿ì½º ÇÖÅ°¿¡´Â ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ¸¶¿ì½º ÇÖÅ°´Â ¾ðÁ¦³ª ¸¶¿ì½º °¥°í¸®¸¦ »ç¿ëÇϱ⠶§¹®ÀÔ´Ï´Ù. ¶Ç ÀÌ¹Ì Å°º¸µå °¥°í¸®¸¦ ¿ä±¸ÇÏ´Â ÇÖÅ°¿¡µµ ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù. ¿©±â¿¡´Â tilde (~) ¶Ç´Â wildcard (*) ¼ö½ÄÀÚ¸¦ °¡Áø ¸ðµç ÇÖÅ°, Å°-¶À ÇÖÅ°¿Í ¸ÂÃã Á¶ÇÕ ÇÖÅ°°¡ Æ÷ÇԵ˴ϴÙ.

+

[v1.1.06+]: #InputLevel°ú SendLevel¸¦ »ç¿ëÇϸé Send ¸í·É¾î·Î ÃË¹ßµÉ ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀ» Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù.

+
UP

´Ü¾î UPÀÌ ÇÖÅ°ÀÇ À̸§ ´ÙÀ½¿¡ ¿À¸é ±× ÇÖÅ°´Â ´©¸¦ ¶§°¡ ¾Æ´Ï¶ó ¶¿ ¶§ Ã˹ߵ˴ϴÙ. ´ÙÀ½ ¿¹Á¦´Â LWinÀÌ LControlÀÌ µÇµµ·Ï ¸®¸ÊÇÕ´Ï´Ù:

+
*LWin::Send {LControl Down}
+*LWin Up::Send {LControl Up}
+
+

"Up"Àº ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ º¸ÅëÀÇ ÇÖÅ°¿Í ÇÔ²² »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù: ^!r Up::MsgBox Ctrl+Alt+RÀ» ´©¸£°í ¶Ã½À´Ï´Ù.. ¶Ç ÇÖÅ° Á¶ÇÕ°úµµ ÀÛµ¿ÇÕ´Ï´Ù (¿¹, F1 & e Up::)

+

ÇÑ°è: 1) "Up"Àº Á¶À̽ºÆ½ ¹öÆ°°ú ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù; ±×¸®°í 2) º¸ÅëÀÇ/´©¸§ ¦ÀÌ ¾øÀÌ "Up" ÇÖÅ° Çϳª¸¸ »ç¿ëÇÏ¸é ±× Å°¸¦ ¿ÏÀüÈ÷ Á¡·ÉÇÕ´Ï´Ù. ±× Å°´Â ´©¸¦ ¼ö ¾ø½À´Ï´Ù. À̸¦ ÇÇÇÏ´Â ÇÑ °¡Áö ¹æ¹ýÀº Æ¿µå Á¢µÎ ½Éº¼À» Ãß°¡ÇÏ´Â °ÍÀÔ´Ï´Ù (¿¹, ~LControl up::)

+

+ °ü·ÃÇؼ­ ÇÑ ¸¶µð ÇÏÀÚ¸é, À§¿Í ºñ½ÁÇÑ Å×Å©´ÐÀº ÇÖÅ°¸¦ Á¢µÎ Å°·Î ¸¸µå´Â °ÍÀÔ´Ï´Ù. ÇÖÅ°¸¦ ¶¿ ¶§ Ã˹ߵÇÁö¸¸, ´Ù¸¥ Å°¸¦ ´©¸£Áö ¾Ê´Â ÇÑ, ´©¸£°í ÀÖ´Â µ¿¾È¿¡¸¸ Ã˹ߵȴٴ ÀåÁ¡ÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
LControl & F1::return  ; ¿ÞÂÊ ÄÜÆ®·Ñ Å°¸¦ Á¢µÎ Å°·Î ¸¸µì´Ï´Ù.  "&" ¾Õ¿¡ ÇÑ ¹ø¸¸ »ç¿ëÇÏ¸é µË´Ï´Ù.
+LControl::MsgBox ´Ù¸¥ Å°¸¦ ¼öÁ¤ÇÏ´Â µ¥ »ç¿ëÇÏÁö ¾Ê°í LControl¸¦ ¶Ã½À´Ï´Ù.
+

+(Å°º¸µå Å°¿Í ¸¶¿ì½º/Á¶À̽ºÆ½ ¹öÆ°ÀÇ ¿ÏÀüÇÑ ¸ñ·ÏÀº Å° ¸ñ·ÏÀ» ÂüÁ¶ÇϽʽÿÀ)

+


+´ÙÁß ÇÖÅ°¸¦ ¼öÁ÷À¸·Î ½×À¸¸é °°Àº ÇàÀ§¸¦ ¼öÇàÇÏ°Ô ÇÒ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
^Numpad0::
+^Numpad1::
+MsgBox Control+Numpad0À̳ª Control+Numpad1¸¦ ´©¸£¸é ÀÌ ¸Þ½ÃÁö°¡ È­¸é¿¡ º¸ÀÔ´Ï´Ù.
+return
+

+Å° ¶Ç´Â Å°-Á¶ÇÕÀ» Àüü ½Ã½ºÅÛ¿¡ ´ëÇÏ¿© ºÒ´ÉÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ¹«°Íµµ ÇÏÁö ¾Êµµ·Ï ¸¸µé¸é µË´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â ¿À¸¥ÂÊ À©µµ¿ìÁî Å°¸¦ ºÒ´ÉÀ¸·Î ¸¸µì´Ï´Ù:

+
RWin::return
+ +

¹®¸Æ-°¨Áö ÇÖÅ°

+

+#IfWinActive/Exist¿Í #If Áö½Ã¾î¸¦ »ç¿ëÇϸé ƯÁ¤ Á¶°Ç¿¡ µû¶ó ÇÖÅ°°¡ ´Ù¸¥ ÇàÀ§¸¦ ¼öÇàÇÏ°Ô (¶Ç´Â ÀüÇô ¸øÇÏ°Ô) ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
#IfWinActive, ahk_class Notepad
+^a::MsgBox ³ëÆ®Æе尡 È°¼º»óÅÂÀÎ µ¿¾È Ctrl-A¸¦ ´­·¶½À´Ï´Ù. ´Ù¸¥ â¿¡ Ctrl-A¸¦ ´©¸£¸é Ctrl-A Å°´­¸²ÀÌ ±× âÀ¸·Î Àü¼ÛµË´Ï´Ù.
+#c::MsgBox ³ëÆ®Æе尡 È°¼º»óÅÂÀÎ µ¿¾È Win-C¸¦ ´­·¶½À´Ï´Ù.
+
+#IfWinActive
+#c::MsgBox ³ëÆ®Æе尡 ¾Æ´Ñ ´Ù¸¥ âÀÌ È°¼º »óÅÂÀÎ µ¿¾È Win-C¸¦ ´­·¶½À´Ï´Ù.
+
+#If MouseIsOver("ahk_class Shell_TrayWnd")
+WheelUp::Send {Volume_Up}     ; ŽºÅ©¹Ù À§¿¡¼­ ÈÙÀ» µ¹¸³´Ï´Ù: º¼·ýÀ» ³ôÀ̰ųª/³»¸³´Ï´Ù.
+WheelDown::Send {Volume_Down} ;
+
+ +

¸ÂÃã Á¶ÇÕ°ú ±âŸ Ư¡

+

µÎ Å° »çÀÌ¿¡ " & "À» »ç¿ëÇÏ¿© ¸ÂÃã Á¶ÇÕÀ» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù (Á¶À̽ºÆ½ ¹öÆ° Á¦¿Ü). ¾Æ·¡ÀÇ ¿¹¿¡¼­, Numpad0¸¦ ´©¸¥ ä·Î µÎ ¹ø° Å°¸¦ ´©¸£¸é ÇÖÅ°°¡ Ã˹ߵ˴ϴÙ:

+
Numpad0 & Numpad1::MsgBox Numpad0¸¦ ´©¸¥ ä·Î Numpad1À» ´­·¶½À´Ï´Ù.
+Numpad0 & Numpad2::Run Notepad
+

+À§ÀÇ ¿¹Á¦¿¡¼­ Numpad0´Â Á¢µÎ Å°°¡ µË´Ï´Ù; ±×·¯³ª ¶Ç ÀÌ ¶§¹®¿¡ ÀÚü¸¸ ´­¸®¸é ±×ÀÇ ¿ø·¡/°íÀ¯ ±â´ÉÀ» ÀÒ¾î¹ö¸³´Ï´Ù. À̸¦ ÇÇÇϱâ À§ÇØ, ½ºÅ©¸³Æ®´Â Numpad0°¡ »õ ÇàÀ§¸¦ ¼öÇàÇϵµ·Ï ±¸¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ:

+
Numpad0::WinMaximize A   ; È°¼º/Àü°æ âÀ» ÃÖ´ëÈ­ÇÕ´Ï´Ù.
+Numpad0::Send {Numpad0}  ; Numpad0¸¦ ¶¼¸é Numpad0 Å°´­¸²À» »ý»êÇϵµ·Ï ¸¸µì´Ï´Ù. ¾Æ·¡ÀÇ ÁÖ¼®À» ÂüÁ¶ÇϽʽÿÀ.
+

+À§ÀÇ ¸ÂÃã ÇÖÅ°°¡ Çϳª¶óµµ Á¸ÀçÇϸé Numpad0À» ¶¿ ¶§ Áö½ÃÇÑ ÇàÀ§°¡ ¼öÇàµË´Ï´Ù. ±×·¯³ª ¿ÀÁ÷ Numpad0°¡ ´­·Á ÀÖ´Â µ¿¾È ´Ù¸¥ Å°¸¦ ´©¸£Áö ¾ÊÀ» °æ¿ì¿¡¸¸ ±×·¸½À´Ï´Ù. +v1.1.14+¿¡¼­, ÀÌ ÇàÀ§¸¦ ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù. Æ¿µå Á¢µÎ ½Éº¼À» µÎ ÇÖÅ°Áß Çϳª¿¡ Àû¿ëÇÏ¸é µË´Ï´Ù.

+

+Numlock, Capslock, ±×¸®°í Scrolllock: ÀÌ·± Å°µéÀº °­Á¦·Î ¾ðÁ¦³ª ÄѰųª("AlwaysOn") ¾ðÁ¦³ª ²ø("AlwaysOff")¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: SetNumlockState AlwaysOn.

+

+ÀͽºÇ÷η¯ÀÇ ÇÖÅ° ¿À¹ö¶óÀ̵ùÇϱâ: Win-E (#e) ±×¸®°í Win-R (#r) °°Àº À©µµ¿ìÁî ³»Àå ÇÖÅ°´Â °³º°ÀûÀ¸·Î ¿À¹ö¶óÀ̵åÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×³É ½ºÅ©¸³Æ®¿¡¼­ °Å±â¿¡ ÇàÀ§¸¦ ÇÒ´çÇϱ⸸ ÇÏ¸é µË´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº ¿À¹ö¶óÀ̵å ÆäÀÌÁö¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

Alt-Tab ´ë¾È: ÇÖÅ°´Â ¾ËÆ®-ÅÇ ´ë½Å¿¡ ´Ù¸¥ ¼ö´ÜÀ» Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ÀÇ µÎ ÇÖÅ°·Î ¿À¸¥ ¼ÕÀ¸·Î ¾ËÆ®-ÅÇÀ» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
RControl & RShift::AltTab  ; ¿À¸¥ÂÊ ÄÜÆ®·Ñ Å°¸¦ ´©¸¥ ä·Î ¿À¸¥ÂÊ-½¬ÇÁÆ®¸¦ ¹Ýº¹ÀûÀ¸·Î ´­·¯ ¾ÕÀ¸·Î À̵¿ÇÕ´Ï´Ù.
+RControl & Enter::ShiftAltTab  ; ¿À¸¥ÂÊ ÄÜÆ®·Ñ Å°¸¦ ¶¿ ÇÊ¿äµµ ¾øÀÌ, ¿£Å͸¦ ´­·¯ ¹Ý´ë¹æÇâÀ¸·Î À̵¿ÇÕ´Ï´Ù.
+

´õ ÀÚ¼¼ÇÑ °ÍÀº Alt-TabÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

¸¶¿ì½º ÈÙ ÇÖÅ°

+

+¸¶¿ì½º ÈÙÀ» µ¹¸± ¶§ Ã˹ߵǴ ÇÖÅ°´Â WheelDown°ú WheelUpÀ̶ó´Â Å° À̸§À» ÅëÇÏ¿© Áö¿øÇÕ´Ï´Ù. WheelLeft¿Í WheelRightµµ ¿ª½Ã v1.0.48+¿¡¼­ Áö¿øÇÏÁö¸¸, À©µµ¿ìÁî ºñ½ºÅ¸ º¸´Ù ¿À·¡µÈ ¹öÀü¿¡¼­´Â ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù. ´ÙÀ½Àº ¸¶¿ì½º ÈÙ ÇÖÅ°ÀÇ ¸î °¡Áö ¿¹ÀÔ´Ï´Ù:

+
MButton & WheelDown::MsgBox °¡¿îµ¥ ¹öÆ°À» ´©¸£°í ÀÖ´Â µ¿¾È ¸¶¿ì½º ÈÙÀ» µ¹·È½À´Ï´Ù.
+^!WheelUp::MsgBox Control+Alt¸¦ ´©¸£°í ÀÖ´Â µ¿¾È ÈÙÀ» À§·Î µ¹·È½À´Ï´Ù.
+

+v1.0.43.03+¿¡¼­, ³»Àå º¯¼ö A_EventInfo¿¡´Â ÈÙÀ» ȸÀüÇÑ ¾çÀÌ ´ã±é´Ï´Ù. ÀüÇüÀûÀ¸·Î 1ÀÌÁö¸¸, A_EventInfo´Â ´ÙÀ½°ú °°Àº »óȲ¿¡¼­ 1 º¸´Ù ´õ Ŭ ¼ö ÀÖ½À´Ï´Ù:

+
    +
  • ¸¶¿ì½º Çϵå¿þ¾î°¡ 1 ´«±Ýº¸´Ù ´õ Àû°Ô °Å¸®¸¦ º¸°íÇÒ °æ¿ì, A_EventInfo¿¡´Â 0ÀÌ ´ã±é´Ï´Ù;
  • +
  • ÈÙÀ» ºü¸£°Ô µ¹¸± °æ¿ì (¸¶¿ì½ºÀÇ Á¾·ù¿¡ µû¶ó), A_EventInfo´Â 1º¸´Ù Å« °ªÀÌ ´ã±é´Ï´Ù. ´ÙÀ½°ú °°Àº ÇÖÅ°°¡ ¸¶¿ì½º¸¦ ºÐ¼®Çϴµ¥ µµ¿òÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù: ~WheelDown::ToolTip %A_EventInfo%.
  • +
+

+¸¶¿ì½º ÈÙ¿¡ ¾ÆÁÖ À¯¿ëÇÑ ÇÖÅ°·Î âÀÇ ÅؽºÆ®¸¦ ½ºÅ©·ÑÇÏ´Â ´ë¾È ¸ðµå¿Í °ü·ÃµÇ¾î ÀÖ½À´Ï´Ù. +¿¹¸¦ µé¾î, ¿ÞÂÊ ÄÜÆ®·Ñ Å°¸¦ ´©¸¥ ä ÈÙÀ» µ¹¸± ¶§ ´ÙÀ½ ÇÖÅ° ½ÖÀº ¼¼·Î°¡ ¾Æ´Ï¶ó °¡·Î·Î ½ºÅ©·Ñ ÇÕ´Ï´Ù:

+
~LControl & WheelUp::  ; ¿ÞÂÊÀ¸·Î ½ºÅ©·Ñ ÇÕ´Ï´Ù.
+ControlGetFocus, fcontrol, A
+Loop 2  ; <-- ÀÌ °ªÀ» Áõ°¡½ÃÅ°¸é ´õ »¡¸® ½ºÅ©·ÑµË´Ï´Ù.
+    SendMessage, 0x114, 0, 0, %fcontrol%, A  ; 0x114Àº WM_HSCROLLÀÌ°í ±× ´ÙÀ½¿¡ 0Àº SB_LINELEFTÀÔ´Ï´Ù.
+return
+
+~LControl & WheelDown::  ; ¿À¸¥ÂÊÀ¸·Î ½ºÅ©·ÑÇÕ´Ï´Ù.
+ControlGetFocus, fcontrol, A
+Loop 2  ; <-- ÀÌ °ªÀ» Áõ°¡½ÃÅ°¸é ´õ »¡¸® ½ºÅ©·ÑµË´Ï´Ù.
+    SendMessage, 0x114, 1, 0, %fcontrol%, A  ; 0x114Àº WM_HSCROLLÀÌ°í ±× ´ÙÀ½¿¡ 1À̸é SB_LINERIGHTÀÔ´Ï´Ù.
+return
+

¸¶Áö¸·À¸·Î, ¸¶¿ì½º ÈÙ ÇÖÅ°´Â ¿ÀÁ÷ ´©¸§-À̺¥Æ®¸¸ ¹ß»ý½ÃÅ°¹Ç·Î (¶À-À̺¥Æ® ¾øÀ½), Å°-¶À ÇÖÅ°·Î »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.

+ +

ÇÖÅ° ÆÁ ±×¸®°í ³íÆò

+

+°¢ ³ÑÆеå Å°¸¶´Ù NumlockÀÇ »óÅ¿¡ µû¶ó µÎ°³ÀÇ ´Ù¸¥ ÇÖÅ° ¼­ºê·çƾÀ» ±âµ¿½Ãų ¼ö ÀÖ½À´Ï´Ù. ´ë¾ÈÀûÀ¸·Î, ³ÑÆеå Å°´Â °°Àº ¼­ºê·çƾÀ» NumlockÀÇ »óÅ¿¡ »ó°ü¾øÀÌ ±âµ¿½Ãų ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
NumpadEnd::
+Numpad1::
+MsgBox, ÀÌ ÇÖÅ°´Â NumlockÀÇ »óÅÂ¿Í °ü°è¾øÀÌ ±âµ¿µË´Ï´Ù.
+return
+

+Æ¿µå (~) ¿¬»êÀÚ°¡ Á¢µÎ Å°¿Í ÇÔ²² ÇÑ ¹øÀÌ¶óµµ »ç¿ëµÇ¸é, ¸ðµç Á¶ÇÕ¿¡ ´ëÇÏ¿© ±× Á¢µÎ Å°ÀÇ ÇàÀ§°¡ ¹Ù²ò´Ï´Ù. ¿¹¸¦ µé¾î, ¾Æ·¡ÀÇ µÎ ÇÖÅ° ¸ðµÎ, µÎ Á¤ÀÇ Áß¿¡ Çϳª¸¸ Æ¿µå°¡ Æ÷ÇԵǾî ÀÖÀ½¿¡µµ ºÒ±¸ÇÏ°í È°¼º âÀº ¸ðµÎ ¿À¸¥ÂÊ Å¬¸¯À» ¹Þ½À´Ï´Ù:

+ +
~RButton & LButton::MsgBox ¿ì¹öÆ°À» ´©¸£°í ÀÖ´Â µ¿¾È ¿Þ¹öÆ°À» ´­·¶½À´Ï´Ù.
+RButton & WheelUp::MsgBox ¿ì¹öÆ°À» ´©¸£°í ÀÖ´Â µ¿¾È ÈÙÀ» À§·Î µ¹·È½À´Ï´Ù.
+

+Suspend ¸í·É¾î´Â Àӽ÷Π¸ðµç ÇÖÅ°¸¦ ºÒ´ÉÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ü, ¿©·¯ºÐÀÌ Á÷Á¢ ¸éÁ¦ÇÑ ÇÖÅ°´Â ¿¹¿ÜÀÔ´Ï´Ù. ´õ ¼±ÅÃÀÇ ¹üÀ§¸¦ ³ÐÈ÷·Á¸é, #IfWinActive/Exist¸¦ »ç¿ëÇϽʽÿÀ.

+

+Hotkey ¸í·É¾î¸¦ ¼ö´ÜÀ¸·Î ÇÏ¿©, ½ºÅ©¸³Æ®°¡ ½ÇÇàÁßÀÎ µ¿¾È ÇÖÅ°¸¦ µ¿ÀûÀ¸·Î »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. Hotkey ¸í·É¾î´Â ¶Ç ½ºÅ©¸³Æ®¿¡ ÀÌ¹Ì Á¸ÀçÇÏ´Â ÇÖÅ°µéÀ» °³º°ÀûÀ¸·Î ¼öÁ¤Çϰųª ºÒ´ÉÀ¸·Î ¸¸µé°Å³ª È°¼ºÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù..

+

+Á¶À̽ºÆ½ ÇÖÅ°´Â ÇöÀç ^ (Control)°ú # (Win) °°Àº ¼ö½Ä Á¢µÎ ½Éº¼À» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ±×·¸Áö¸¸, GetKeyState¸¦ »ç¿ëÇÏ¸é ´ÙÀ½ ¿¹Á¦¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ ±× È¿°ú¸¦ Èä³»³¾ ¼ö ÀÖ½À´Ï´Ù:

+
Joy2::
+if not GetKeyState("Control")  ; ¿ÞÂÊ ÄÜÆ®·ÑÅ° ¿À¸¥ÂÊ ÄÜÆ®·Ñ Å° ´­ ´Ù ´­·Á ÀÖÁö ¾Ê½À´Ï´Ù.
+    return  ; Áï, ¾Æ¹«°Íµµ ÇÏÁö ¾Ê½À´Ï´Ù.
+MsgBox ÄÜÆ®·Ñ Å°¸¦ ´©¸£°í ÀÖ´Â µ¿¾È ù ¹ø° Á¶À̽ºÆ½ÀÇ µÎ ¹ø° ¹öÆ°À» ´­·¶½À´Ï´Ù.
+return
+

+ÇÖÅ°°¡ °è¼Ó ÁøÇàÇϱâ À§ÇØ ÀÚ½ÅÀÇ ¼ö½Ä Å°°¡ ¶¼¾îÁö±â¸¦ ±â´Ù·Á¾ßÇÒ °æ¿ì°¡ ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦¸¦ »ìÆì º¸°Ú½À´Ï´Ù:

+
^!s::Send {Delete}
+

+Control-Alt-S¸¦ ´©¸£¸é ½Ã½ºÅÛÀÌ ¸¶Ä¡ Control-Alt-Delete¸¦ ´©¸¥ °Íó·³ ÇൿÇÕ´Ï´Ù (½Ã½ºÅÛÀÌ Ctrl-Alt-Delete¸¦ °ø°ÝÀûÀ¸·Î ŽÁöÇϱ⠶§¹®ÀÔ´Ï´Ù). À̸¦ µ¹¾Æ°¡·Á¸é KeyWait¸¦ »ç¿ëÇÏ¿© Å°¸¦ ¶¼±â¸¦ ±â´Ù¸³´Ï´Ù; ¿¹¸¦ µé¾î:

+
^!s::
+KeyWait Control
+KeyWait Alt
+Send {Delete}
+return
+

+#z::¿Í °°Àº ÇÖÅ° ¶óº§ÀÌ "Invalid Hotkey"¿Í °°Àº ¿¡·¯¸¦ ¾ß±âÇÏ´Â °æ¿ì, ½Ã½ºÅÛÀÇ Å°º¸µå ·¹À̾ƿô/¾ð¾î¿¡ ÁöÁ¤µÈ ¹®ÀÚ°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù (ÀÌ °æ¿ì´Â "Z"). Å°º¸µå ·¹À̾ƿô¿¡ Á¸ÀçÇÏÁö ¾Ê´Â ´Ù¸¥ ¹®ÀÚ¸¦ »ç¿ëÇϽʽÿÀ.

+

+ÇÖÅ° ¶óº§À» GosubÀ̳ª GotoÀÇ ¸ñÇ¥·Î »ïÀ» ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: Gosub ^!s.

+

+ÇÖÅ°ÀÇ ÈçÇÑ »ç¿ë »ç·Ê Çϳª´Â ¿¹¸¦ µé¾î ÀÏ·ÃÀÇ Å°´­¸²À̳ª ¸¶¿ì½º Ŭ¸¯ °°ÀÌ ¹Ýº¹ ÇàÀ§¸¦ ½ÃÀÛÇÏ°í ¸ØÃß´Â °ÍÀÔ´Ï´Ù. À̸¦ º¸¿©ÁÖ´Â ¿¹´Â ´ÙÀ½ FAQ ÁÖÁ¦¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+¸¶Áö¸·À¸·Î, °¢ ½ºÅ©¸³Æ®´Â ¸ÖƼ-¾²·¹µå¿Í ºñ½ÁÇÕ´Ï´Ù. ´öºÐ¿¡ ÀÌÀüÀÇ ÇÖÅ° ¼­ºê·çƾÀÌ ¿©ÀüÈ÷ ½ÇÇàÁßÀÌ´õ¶óµµ »õ ÇÖÅ°¸¦ ±âµ¿½Ãų ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ÇöÀç ÇÖÅ°¿¡ ÀÇÇÏ¿© MsgBox°¡ È­¸é¿¡ º¸¿©Áö°í ÀÖ´õ¶óµµ »õ ÇÖÅ°¸¦ ±âµ¿½Ãų ¼ö ÀÖ½À´Ï´Ù.

+ +

Alt-Tab ÇÖÅ°

+

°¢ Alt-Tab ÇÖÅ°´Â ¹Ýµå½Ã µÎ °³ÀÇ Å° Á¶ÇÕÀ̾î¾ß ÇÕ´Ï´Ù. ÀüÇüÀûÀ¸·Î ¾ÚÆÛ¼¾µå(&) ½Éº¼À» ÅëÇÏ¿© Á¶ÇÕÇÕ´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­ ¿À¸¥ÂÊ Alt Å°¸¦ ´©¸¥ ä·Î J ¶Ç´Â K¸¦ ´­·¯ ¾ËÆ®-ÅÇ ¸Þ´º¸¦ Ç×ÇØÇÕ´Ï´Ù:

+
RAlt & j::AltTab
+RAlt & k::ShiftAltTab
+

+AltTab°ú ShiftAltTabÀº µÎ °³ÀÇ Æ¯¼öÇÑ ¸í·É¾îÀÔ´Ï´Ù. °°Àº ÁÙ¿¡ ÇÖÅ°·Î »ç¿ëµÉ ¶§¸¸ ÀÎÁöµË´Ï´Ù. ´ÙÀ½Àº ¿ÏÀüÇÑ ¸ñ·ÏÀÔ´Ï´Ù:

+

AltTab: ¾ËÆ®-ÅÇ ¸Þ´º°¡ º¸À̸é, ±× ¾È¿¡¼­ ¾ÕÀ¸·Î À̵¿ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ¸Þ´º¸¦ º¸¿©ÁÝ´Ï´Ù (ÇÖÅ°°¡ µÎ°³ÀÇ Å°°¡ "&"·Î Á¶ÇյǾúÀ» °æ¿ì¿¡¸¸ º¸¿©ÁÖ°í; ±×·¸Áö ¾ÊÀ¸¸é, ¾Æ¹«°Íµµ ÇÏÁö ¾Ê½À´Ï´Ù).

+

ShiftAltTab: À§¿Í °°Áö¸¸ ¸Þ´º¿¡¼­ ¿ª¹æÇâÀ¸·Î À̵¿ÇÕ´Ï´Ù.

+

AltTabAndMenu: ¾ËÆ®-ÅÇ ¸Þ´º°¡ º¸À̸é, ¸Þ´º ¾È¿¡¼­ ¾ÕÀ¸·Î À̵¿ÇÏ°í, ±×·¸Áö ¾ÊÀ¸¸é ¸Þ´º¸¦ È­¸é¿¡ º¸¿©ÁÝ´Ï´Ù.

+

AltTabMenuDismiss: ¾ËÆ®-ÅÇ ¸Þ´º¸¦ ´Ý½À´Ï´Ù.

+

+À§ÀÇ ¿¹¸¦ ½Ã¿¬Çϱâ À§ÇÏ¿©, ¸¶¿ì½º ÈÙÀÌ ¾ËÆ®-ÅÇÀ» ¿ÏÀüÇØ ´ëüÇϵµ·Ï ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ÇÖÅ°°¡ È¿°ú¸¦ ¹ßÈÖÇϸé, °¡¿îµ¥ ¹öÆ°À» Ŭ¸¯ÇØ ¸Þ´º¸¦ º¸¿©ÁÖ°í ÈÙÀ» µ¹·Á¼­ ±× ¾ÈÀ» Ç×ÇØÇÕ´Ï´Ù:

+
MButton::AltTabMenu
+WheelDown::AltTab
+WheelUp::ShiftAltTab
+

+¼±ÅÃµÈ Ã¢À» È°¼ºÈ­ÇÒ ÇÊ¿ä ¾øÀÌ ÇÖÅ°°¡-¿äûÇÑ ¾ËÆ®-ÅÇ ¸Þ´º¸¦ Ãë¼ÒÇÏ·Á¸é, ´ÙÀ½°ú °°Àº ÇÖÅ°¸¦ »ç¿ëÇÕ´Ï´Ù. ´ÙÀ½ Á¶°Ç¿¡ µû¶ó ¾à°£ Á¶Á¤ÀÌ ÇÊ¿äÇÒ ¼ö ÀÖ½À´Ï´Ù: 1) ¾ËÆ®-ÅÇ ¸Þ´º°¡ óÀ½¿¡ ¾î¶² ¼ö´ÜÀ¸·Î È­¸é¿¡ º¸ÀÌ°Ô ‰ç´ÂÁö; ±×¸®°í 2) ½ºÅ©¸³Æ®¿¡ Å°º¸µå °¥°í¸®°¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö ¿©ºÎ.

+
LCtrl & CapsLock::AltTab
+!MButton::  ; °¡¿îµ¥ ¸¶¿ì½º ¹öÆ°. ! Á¢µÎ ½Éº¼ ¶§¹®¿¡ Alt Å°°¡ ´­·Á ÀÖ´Â µ¿¾È Ã˹ߵ˴ϴ٠(¾ËÆ®-ÅÇ ¸Þ´º°¡ º¸À̸é Ã˹ߵ˴ϴÙ).
+IfWinExist ahk_class #32771  ; ¾ËÆ®-ÅÇ ¸Þ´º°¡ È­¸é¿¡ º¸Àδٴ »ç½ÇÀ» ¾Ë·ÁÁÝ´Ï´Ù.
+    Send !{Escape}{Alt up}
+return
+

+ÇöÀç, ¸ðµç Ư¼ö ¾ËÆ®-ÅÇ ÇàÀ§´Â À§ÀÇ ¿¹Á¦¿Í °°ÀÌ Á÷Á¢ÀûÀ¸·Î ÇÖÅ°¿¡ ÇÒ´çÇØ¾ß ÇÕ´Ï´Ù (Áï, ¸í·É¾îó·³ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù). #IfWin ¶Ç´Â #If¿¡ ¿µÇâÀ» ¹ÞÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù.

+

+¸ÂÃã ¾ËÆ®-ÅÇ ÇàÀ§´Â ÇÖÅ°¸¦ ÅëÇؼ­µµ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­, F1À» ´©¸£¸é ¸Þ´º¸¦ È­¸é¿¡ º¸¿©ÁÖ°í ±× ¾È¿¡¼­ ¾ÕÀ¸·Î À̵¿ÇÕ´Ï´Ù. ´ÙÀ½ F2¸¦ ´©¸£¸é ¼±ÅÃµÈ Ã¢À» È°¼ºÈ­ÇÕ´Ï´Ù (¶Ç´Â Escape¸¦ ´©¸£¸é Ãë¼ÒµË´Ï´Ù):

+
*F1::Send {Alt down}{tab} ; ÀÌ °æ¿ì º°Ç¥°¡ ÇÊ¿äÇÕ´Ï´Ù.
+!F2::Send {Alt up}  ; Alt Å°¸¦ ¶Á´Ï´Ù. ±×·¯¸é ¼±ÅÃµÈ Ã¢ÀÌ È°¼ºÈ­µË´Ï´Ù.
+~*Escape::
+IfWinExist ahk_class #32771
+    Send {Escape}{Alt up}  ; ¼±ÅÃµÈ Ã¢À» È°¼ºÈ­ÇÏÁö ¾Ê°í ¸Þ´º¸¦ Ãë¼ÒÇÕ´Ï´Ù.
+return
+ +

ÇÔ¼ö ÇÖÅ° [v1.1.20+]

+

+Çϳª ÀÌ»óÀÇ ÇÖÅ°¸¦ ÇÔ¼ö¿¡ ÇÒ´çÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ±×³É ÇÖÅ° ¶óº§ ¹Ù·Î µÚ¿¡ Á¤ÀÇÇÏ¸é µË´Ï´Ù:

+
; Ctrl+Shift+O´Â ÇöÀç Æú´õ¸¦ Ž»ö±â¿¡ ¿±´Ï´Ù.
+; Ctrl+Shift+E´Â ÇöÀç ÆÄÀÏÀÌ ¼±ÅÃµÈ Æú´õ¸¦ ¿±´Ï´Ù.
+; SciTE¿Í Notepad++¸¦ Áö¿øÇÕ´Ï´Ù.
+^+o::
+^+e::
+    editor_open_folder() {
+        WinGetTitle, path, A
+        if RegExMatch(path, "\*?\K(.*)\\[^\\]+(?= [-*] )", path)
+            if (FileExist(path) && A_ThisHotkey = "^+e")
+                Run explorer.exe /select`,"%path%"
+            else
+                Run explorer.exe "%path1%"
+    }
+

+ÇÖÅ° ¶óº§À̳ª ¶óº§ ±×¸®°í ±× ÇÔ¼ö »çÀÌ¿¡´Â °ø¹é¹®ÀÚ, ÁÖ¼® ¶Ç´Â Áö½Ã¾î¸¸ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ·± ½ÄÀ¸·Î Á¤ÀÇµÈ ÇÖÅ°¿¡ ¶óº§Àº »ý¼ºµÇÁö ¾Ê½À´Ï´Ù; ±×·¸Áö¸¸, ÀÚµ¿-½ÇÇà ¼½¼ÇÀº ÇÔ¼ö¿¡ ÇÒ´çµÇ¾î ÀÖ´õ¶óµµ ù ¹ø° ÇÖÅ°¿¡¼­ ³¡³³´Ï´Ù.

+

+ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é ¾ò´Â Å« ÇýÅÃÀº Áö¿ª º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ´Ù¸¥ ¸ñÀûÀ¸·Î °°Àº º¯¼ö¸¦ µÎ °³ ÀÌ»óÀÇ ÇÖÅ°¿¡¼­ »ç¿ëÇÒ ¶§ Ãæµ¹À» ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ ÀÚü-¹®¼­È­ ÇÖÅ°¸¦ ±ÇÀåÇÕ´Ï´Ù. À§ÀÇ Äڵ忡¼­ ÇÔ¼ö À̸§ ÀÚü°¡ ÇÖÅ°¸¦ ¼³¸íÇÏ°í ÀÖ½À´Ï´Ù.

+

+ÇÖÅ° ¸í·É¾î¸¦ »ç¿ëÇصµ ÇÔ¼ö³ª ÇÔ¼ö °´Ã¼¸¦ ÇÖÅ°¿¡ ÇÒ´çÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ + + diff --git a/src/docs/Hotstrings.htm b/src/docs/Hotstrings.htm new file mode 100644 index 0000000..1535dcf --- /dev/null +++ b/src/docs/Hotstrings.htm @@ -0,0 +1,229 @@ + + +Hotstrings and Auto-replace (similar to AutoText and AutoCorrect) + + + + + + + + + +

ÇÖ½ºÆ®¸µ ±×¸®°í ÀÚµ¿-±³Ã¼

+ +

¼Ò°³¿Í °£´ÜÇÑ ¿¹Á¦

+

ÇÖ½ºÆ®¸µÀº ÁַΠŸÀÚÇÏ´Â µ¿¾È ¾à¾î¸¦ È®´ëÇÏ´Â µ¥ »ç¿ëµÇÁö¸¸ (ÀÚµ¿-±³Ã¼), ½ºÅ©¸³Æ® ÇàÀ§¸¦ ±âµ¿½ÃÅ°´Â µ¥¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± °üÁ¡¿¡¼­ ÇÖÅ°¿Í ºñ½ÁÇÕ´Ï´Ù. ÀüÇüÀûÀ¸·Î Çϳª ÀÌ»óÀÇ ¹®ÀÚ·Î (Áï, ¹®ÀÚ¿­·Î) ±¸¼ºµÈ´Ù´Â Á¡ÀÌ ´Ù¸¦ »ÓÀÔ´Ï´Ù.

+

+ÇÖ½ºÆ®¸µÀ» Á¤ÀÇÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ÃË¹ß ¾à¾î¸¦ ÇÑ ½ÖÀÇ ½ÖÁ¡À¸·Î µÎ¸¨´Ï´Ù:

+
::btw::by the way
+

+À§ÀÇ ¿¹Á¦¿¡¼­, ¾à¾î btw´Â ŸÀڵǴ µ¿¾È ÀÚµ¿À¸·Î "by the way"·Î ±³Ã¼µË´Ï´Ù (±×·¸Áö¸¸, ±âº»ÀûÀ¸·Î btw¸¦ ŸÀÚÇÑ ÈÄ¿¡ ½ºÆäÀ̽º, ¸¶Ä§Ç¥, ¶Ç´Â ¿£ÅÍ °°Àº Á¾·á ¹®ÀÚ¸¦ ŸÀÚÇØ¾ß ÇÕ´Ï´Ù).

+

+À§ÀÇ "by the way" ¿¹Á¦´Â ÀÚµ¿-±³Ã¼ ÇÖ½ºÆ®¸µÀ̶ó°í ÇÕ´Ï´Ù. ¿Ö³ÄÇϸé ŸÀÚµÈ ÅؽºÆ®°¡ ÀÚµ¿À¸·Î Áö¿öÁö°í µÎ ¹ø° ½ÖÁ¡ ½Ö µÚ¿¡ ÁöÁ¤µÈ ¹®ÀÚ¿­·Î ±³Ã¼µÇ±â ¶§¹®ÀÔ´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, ÇÖ½ºÆ®¸µÀº ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¸ÂÃã ÇàÀ§¸¦ ¼öÇàÇϵµ·Ï Á¤ÀÇÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¸í·É¾î°¡ ¹Ýµå½Ã ÇÖ½ºÆ®¸µ ¾Æ·¡¿¡ ³ªÅ¸³ª¾ß ÇÔ¿¡ À¯ÀÇÇϽʽÿÀ:

+
::btw::
+MsgBox "btw"¸¦ ŸÀÚÇß½À´Ï´Ù.
+return
+
+:*:]d::  ; ÀÌ ÇÖ½ºÆ®¸µÀº ¾Æ·¡ÀÇ ¸í·É¾î¸¦ ÅëÇÏ¿© "]d"¸¦ ÇöÀç ³¯Â¥¿Í ½Ã°£À¸·Î ±³Ã¼ÇÕ´Ï´Ù.
+FormatTime, CurrentDateTime,, M/d/yyyy h:mm tt  ; ´ë·« ´ÙÀ½°ú °°ÀÌ º¸ÀÏ °ÍÀÔ´Ï´Ù: 9/1/2005 3:53 PM
+SendInput %CurrentDateTime%
+return
+

+À§ÀÇ µÎ ¿¹Á¦°¡ ÀÚµ¿-±³Ã¼ ÇÖ½ºÆ®¸µÀÌ ¾Æ´Ô¿¡µµ ºÒ±¸ÇÏ°í, ¿©·¯ºÐÀÌ Å¸ÀÚÇÑ ¾à¾î´Â ±âº»À¸·Î Áö¿öÁý´Ï´Ù. ÀÚµ¿À¸·Î ¹é½ºÆäÀ̽º·Î Áö¿ì´Â °ÍÀε¥, ÀÌ ÇàÀ§´Â b0 ¿É¼ÇÀ¸·Î ²ø ¼ö ÀÖ½À´Ï´Ù.

+ +

Á¾·á ¹®ÀÚ

+

+º°Ç¥ ¿É¼ÇÀÌ È¿°ú¸¦ ¹ßÈÖÇÏÁö ¾Ê´Â ÇÑ, ÇÖ½ºÆ®¸µÀÇ ¾à¾î µÚ¿¡ Á¾·á ¹®ÀÚ¸¦ ŸÀÚÇØ¾ß ÇàÀ§¸¦ Ã˹߽Ãų ¼ö ÀÖ½À´Ï´Ù. Á¾·á ¹®Àڴ óÀ½¿¡ ´ÙÀ½À¸·Î ±¸¼ºµË´Ï´Ù: -()[]{}':;"/\,.?!`n `t ( `nÀº ¿£ÅÍÀÌ°í, `t´Â ÅÇ, ±×¸®°í `n°ú `t »çÀÌ¿¡ Æò¹üÇÑ ½ºÆäÀ̽º°¡ ÀÖÀ½¿¡ ÁÖ¸ñÇϽʽÿÀ). ÀÌ ¹®ÀÚ ¼¼Æ®´Â ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ÆíÁýÇØ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¸ðµç ÇÖ½ºÆ®¸µ¿¡ ´ëÇÏ¿© »õ·Î¿î Á¾·á ¹®ÀÚ°¡ ¼³Á¤µË´Ï´Ù. ±× ¾Æ·¡¿¡ ÀÖ´Â ÇÖÆ®¸µ¿¡¸¸ ¿µÇâÀ» ¹ÌÄ¡´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù:

+
#Hotstring EndChars -()[]{}:;'"/\,.?!`n `t
+ +

¿É¼Ç

+

+ÇÖ½ºÆ®¸µÀÇ ±âº» ÇàÀ§´Â µÎ °¡Áö ¹æ¹ýÀ¸·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù:

+
    +
  1. #Hotstring Áö½Ã¾î·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ÀÌ Áö½Ã¾î ¾Æ·¡ÂÊ¿¡ ÀÖ´Â ¸ðµç ÇÖ½ºÆ®¸µ¿¡ ¹°¸®ÀûÀ¸·Î ¿µÇâÀ» ¹ÌĨ´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â C¿Í R ¿É¼Ç È¿°ú¸¦ ÁÝ´Ï´Ù: #Hotstring c r.
  2. +
  3. ÇÖ½ºÆ®¸µÀÇ Ã¹ ¹ø° ½ÖÁ¡ ½Ö »çÀÌ¿¡ ¿É¼ÇÀ» ¹èÄ¡ÇÏ´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â ÇÖ½ºÆ®¸µ Çϳª¿¡¸¸ C¿Í * ¿É¼ÇÀÌ È¿°ú°¡ ÀÖ½À´Ï´Ù:
    + :c*:j@::john@somedomain.com ; ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ±×¸®°í "Á¾·á ¹®ÀÚ°¡ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù"..
  4. +
+

¾Æ·¡ÀÇ ¸®½ºÆ®´Â °¢ ¿É¼ÇÀ» ±â¼úÇÕ´Ï´Ù. À§ÀÇ ¹æ¹ýÀ» »ç¿ëÇÏ´Â Çϳª ÀÌ»óÀÇ ¿É¼ÇÀ» ÁöÁ¤Çϸé, ½ºÆäÀ̽º¸¦ ¼±ÅÃÀûÀ¸·Î ±× »çÀÌ¿¡ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.
+
+* (º°Ç¥): ÇÖ½ºÆ®¸µÀ» Ã˹߽ÃÅ°´Â µ¥ Á¾·á ¹®ÀÚ (¿¹, ½ºÆäÀ̽º, ¸¶Ä§Ç¥, ¶Ç´Â ¿£ÅÍ)´Â ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
:*:j@::jsmith@somedomain.com
+

+À§ÀÇ ¿¹Á¦´Â @ ¹®ÀÚ¸¦ ŸÀÚÇÏ´Â ¼ø°£ ±×ÀÇ ±³Ã¼ ¹®ÀÚ¿­À» Àü¼ÛÇÕ´Ï´Ù. #Hotstring Áö½Ã¾î¸¦ »ç¿ëÇÒ ¶§, *0À» »ç¿ëÇϸé ÀÌ ¿É¼ÇÀ» ²ø ¼ö ÀÖ½À´Ï´Ù.

+

+? (¹°À½Ç¥): ÇÖ½ºÆ®¸µÀÌ ´Ù¸¥ ´Ü¾î ¾È¿¡ À־ Ã˹ߵ˴ϴÙ; Áï, ¹Ù·Î ¾Õ¿¡ ŸÀÚµÈ ¹®ÀÚ°¡ ¾ËÆĺªÀ̳ª ¼ýÀÚÀÏ ¶§ Ã˹ߵ˴ϴÙ. ¿¹¸¦ µé¾î, :?:al::airlineÀÌ ÇÖ½ºÆ®¸µÀ̶ó¸é, "practical "À» ŸÀÚÇϸé "practicairline "À¸·Î ±³Ã¼µË´Ï´Ù. ?0À» »ç¿ëÇϸé ÀÌ ¿É¼ÇÀ» ²ø ¼ö ÀÖ½À´Ï´Ù.

+

+B0 (B ´ÙÀ½¿¡ 0): ¿©·¯ºÐÀÌ Å¸ÀÚÇÑ ¾à¾î¸¦ Áö¿ì±â À§ÇØ ÀÚµ¿ ¹é½ºÆäÀ̽º Áö¿ì±â°¡ ÀϾÁö ¾Ê½À´Ï´Ù. ±×³É B¸¸ »ç¿ëÇÏ¸é ¹é½ºÆäÀ̽ÌÀÌ ¹Ù·Î ÀÌÀü¿¡ ²¨Áø °÷ ´ÙÀ½ºÎÅÍ ÄÑÁý´Ï´Ù. ½ºÅ©¸³Æ®µµ ½º½º·Î ¹é½ºÆäÀ̽ÌÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. {bs 5}¿Í °°ÀÌ Çϸé 5 °³ÀÇ ¹é½ºÆäÀ̽º¸¦ Àü¼ÛÇÕ´Ï´Ù. ºñ½ÁÇÏ°Ô, ¿ÞÂÊ-È­»ìÇ¥ Å°´Â {left 5}¿Í °°ÀÌ Àü¼ÛÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ÇÖ½ºÆ®¸µÀº "<em></em>"À» »ý»êÇÏ°í ij·µÀ» 5 ÀÚ¸® ¿ÞÂÊÀ¸·Î À̵¿½Ãŵ´Ï´Ù (±×·¡¼­ ÅÂ±× »çÀÌ¿¡ ÀÖ°Ô µË´Ï´Ù):

+ +
:*b0:<em>::</em>{left 5}
+

+C: ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù: ¾à¾î¸¦ ŸÀÚÇÒ ¶§, ½ºÅ©¸³Æ®¿¡ Á¤ÀÇµÈ ´ë¼Ò¹®ÀÚ¿¡ Á¤È®ÇÏ°Ô ÀÏÄ¡ÇØ¾ß ÇÕ´Ï´Ù. C0À» »ç¿ëÇÏ¸é ´ë¼Ò¹®ÀÚ ±¸ºÐÀ» ²ü´Ï´Ù.

+

+C1: ŸÀÚµÈ ´ë¼Ò¹®ÀÚ¸¦ µû¸£Áö ¾Ê½À´Ï´Ù. ÀÌ ¿É¼ÇÀ» »ç¿ëÇϸé ÀÚµ¿-±³Ã¼ ÇÖ½ºÆ®¸µÀ» ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇϵµ·Ï ¸¸µé ¼ö ÀÖ°í ½ÇÁ¦·Î ŸÀÚÇÑ ¹®ÀÚÀÇ ´ë¼Ò¹®ÀÚ ±Ô°ÝÀ» µû¸£Áö ¾Êµµ·Ï ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ´ë¼Ò¹®ÀÚ ±Ô°ÝÀ» ÁؼöÇÏ´Â ÇÖ½ºÆ®¸µÀº (ÀÌ°ÍÀÌ ±âº»°ª) ¿©·¯ºÐÀÌ ¾à¾î¸¦ ¸ðµÎ ´ë¹®ÀڷΠŸÀÚÇß´Ù¸é ±³Ã¼ ÅؽºÆ®µµ ¿ª½Ã ¸ðµÎ ´ë¹®ÀÚ·Î »ý»êÇÕ´Ï´Ù. ù ¹ø° ¹®ÀÚ¸¸ ´ë¹®ÀڷΠŸÀÚÇß´Ù¸é, ±³Ã¼ÀÇ Ã¹ ¹®ÀÚµµ ¿ª½Ã ´ë¹®ÀÚ°¡ µË´Ï´Ù. ´Ù¸¥ ¹æ½ÄÀ¸·Î ´ë¼Ò¹®ÀÚ¸¦ ŸÀÚÇϸé, ±³Ã¼ ¹®ÀÚ¿­ ¿ª½Ã Á¤È®ÇÏ°Ô Á¤ÀÇµÈ ´ë·Î Àü¼ÛµË´Ï´Ù. #Hotstring Áö½Ã¾î¸¦ »ç¿ëÇÒ ¶§, C0À» »ç¿ëÇϸé ÀÌ ¿É¼ÇÀ» ²ø ¼ö ÀÖ½À´Ï´Ù. ÇÖ½ºÆ®¸µÀÌ ´Ù½Ã ´ë¼Ò¹®ÀÚ¸¦ ÁؼöÇϵµ·Ï ¸¸µì´Ï´Ù.

+

+Kn: Å°-Áö¿¬ ½Ã°£: ÀÌ ¿É¼ÇÀº ÀÚÁÖ »ç¿ëµÇÁö ¾Ê½À´Ï´Ù. ÀÚµ¿-¹é½ºÆäÀ̽ÌÀ̳ª ÀÚµ¿-±³Ã¼¿¡ ÀÇÇÏ¿© »ý»êµÈ Å°´­¸² »çÀÌ¿¡ Áö¿¬ ½Ã°£À» ¼³Á¤ÇÕ´Ï´Ù. »õ Áö¿¬ ½Ã°£À» n¿¡ ÁöÁ¤ÇÕ´Ï´Ù; ¿¹¸¦ µé¾î, k10À¸·Î ÁöÁ¤Çϸé 10ms Áö¿¬µÇ°í k-1À̸é Áö¿¬ÀÌ ¾ø½À´Ï´Ù. ÀÌ ¿É¼ÇÀÇ Á¤È®ÇÑ ÇàÀ§´Â ¾î¶² Àü¼Û ¸ðµå°¡ ÀÛµ¿ ÁßÀΰ¡¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù:

+
    +
  • SI (SendInput): ÀÌ ¸ðµå¿¡¼­´Â Áö¿¬ÀÌ ºÒ°¡´ÉÇϱ⠶§¹®¿¡ Å°-Áö¿¬ÀÌ ¹«½ÃµË´Ï´Ù. ¿¹¿Ü´Â SendInputÀ» »ç¿ëÇÒ ¼ö ¾øÀ» ¶§Àε¥, ÀÌ °æ¿ì ÇÖ½ºÆ®¸µÀº (Å°-Áö¿¬À» ÁؼöÇÏ´Â) ¾Æ·¡ÀÇ SendPlay ¸ðµå·Î µ¹¾Æ°©´Ï´Ù.
  • +
  • SP (SendPlay): Áö¿¬ ±æÀÌ 0ÀÌ ±âº»°ªÀÔ´Ï´Ù. ÀÌ °ªÀº SendPlay¿¡¼­´Â -1°ú °°½À´Ï´Ù (Áö¿¬ ¾øÀ½). ÀÌ ¸ðµå¿¡¼­, Áö¿¬Àº ½ÇÁ¦·Î Å°´­¸² »çÀÌÀÇ Áö¿¬ÀÌ ¾Æ´Ï¶ó PressDurationÀÔ´Ï´Ù.
  • +
  • SE (SendEvent): Áö¿¬ ±æÀÌ 0ÀÌ ±âº»°ªÀÔ´Ï´Ù. ´ëºÎºÐÀÇ ¸ñÀû¿¡ 0À» ±ÇÀåÇÕ´Ï´Ù. (³»ºÎÀûÀ¸·Î Sleep 0À» ¼öÇàÇϱ⠶§¹®¿¡) ºü¸£¸é¼­µµ ¿©ÀüÈ÷ ´Ù¸¥ ÇÁ·Î¼¼½º¿Í Àß Çù·ÂÇÕ´Ï´Ù. k-1À» ÁöÁ¤Çϸé ÀüÇô Áö¿¬ÀÌ ¾ø½À´Ï´Ù. CPU°¡ ÀÚÁÖ ½®´Ù¸é ÀÚµ¿ ±³Ã¼¸¦ ´õ ºü¸£°Ô ¸¸µå´Â µ¥ À¯¿ëÇÕ´Ï´Ù. + -1·Î ¼³Á¤ÇÒ ¶§, ½ºÅ©¸³Æ®ÀÇ ÇÁ·Î¼¼½º-¿ì¼±¼øÀ§´Â ¾ó¸¶³ª ºü¸£°Ô Å°´­¸²À» Àü¼ÛÇÒ ¼ö Àִ°¡¿¡ Áß¿äÇÑ ¿ä¼Ò°¡ µË´Ï´Ù. ½ºÅ©¸³Æ®ÀÇ ¿ì¼±¼øÀ§¸¦ ³ôÀÌ·Á¸é, Process, Priority,, High¸¦ »ç¿ëÇϽʽÿÀ.
  • +
+

O: ÀÚµ¿ ±³Ã¼°¡ »ý»êµÉ ¶§ ÀÚµ¿-±³Ã¼ ÇÖ½ºÆ®¸µÀÇ Á¾·á ¹®ÀÚ¸¦ »ý·«ÇÕ´Ï´Ù. ÀÌ°ÍÀº ¿©ÀüÈ÷ Á¾·á ¹®ÀÚ¸¦ ¿ä±¸ÇÔÀ¸·Î½á ÇÖ½ºÆ®¸µÀ» ¸í·áÇÏ°Ô À¯ÁöÇϱ⸦ ¿øÇÏÁö¸¸, ½ÇÁ¦·Î´Â Á¾·á ¹®ÀÚ°¡ È­¸é¿¡ ³ªÅ¸³ªÁö ¾Ê±â¸¦ ¹Ù¶ö ¶§ À¯¿ëÇÕ´Ï´Ù. +¿¹¸¦ µé¾î, :o:ar::aristocratÀÌ ÇÖ½ºÆ®¸µÀ̶ó¸é, "ar"¸¦ ŸÀÚÇÑ ´ÙÀ½ ½ºÆäÀ̽º¹Ù¸¦ ŸÀÚÇÏ¸é µÚ¿¡ ½ºÆäÀ̽º ¾øÀÌ "aristocrat"À¸·Î ±³Ã¼µË´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¹é½ºÆäÀ̽º¸¦ ´©¸¦ ÇÊ¿ä ¾øÀÌ ´Ü¾î¸¦ º¹¼öÇüÀ̳ª ¼ÒÀ¯ÇüÀ¸·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù. +O0 (¹®ÀÚ O ´ÙÀ½¿¡ ¼ýÀÚ 0)À» »ç¿ëÇϸé ÀÌ ¿É¼ÇÀ» ²ø ¼ö ÀÖ½À´Ï´Ù.

+

+Pn: ÇÖ½ºÆ®¸µÀÇ ¿ì¼±¼øÀ§ (¿¹, P1). ÀÚÁÖ »ç¿ëµÇÁö ¾Ê´Â ÀÌ ¿É¼ÇÀº ÀÚµ¿-±³Ã¼ ÇÖ½ºÆ®¸µ¿¡ ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù.

+

+R: ±³Ã¼ ÅؽºÆ®¸¦ ³¯ »óÅ·ΠÀü¼ÛÇÕ´Ï´Ù; Áï, {Enter}¸¦ ENTER Å°´­¸², ^c¸¦ Control-C, µîµîÀ¸·Î º¯È¯ÇÏÁö ¾Ê°í º¸ÀÌ´Â ±×´ë·Î Àü¼ÛÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀº °è¼Ó ¼½¼ÇÀ» °¡Áø ÇÖ½ºÆ®¸µ¿¡ ÀÚµ¿À¸·Î È¿°ú¸¦ ¹ßÈÖÇÕ´Ï´Ù. R0À¸·Î ÀÌ ¿É¼ÇÀ» ²ø ¼ö ÀÖ½À´Ï´Ù.

+

+SI ¶Ç´Â SP ¶Ç´Â SE [v1.0.43+]: ÀÚµ¿-±³Ã¼ ÇÖ½ºÆ®¸µÀÌ Å°´­¸²À» Àü¼ÛÇÏ´Â µ¥ »ç¿ëÇÒ ¹æ¹ýÀ» ¼³Á¤ÇÕ´Ï´Ù. ÀÌ ¿É¼ÇµéÀº ¼­·Î ¹èŸÀûÀÔ´Ï´Ù: ¿ÀÁ÷ ÇÑ ¹ø¿¡ Çϳª¾¿¸¸ È¿°ú°¡ ÀÖ½À´Ï´Ù. ´ÙÀ½Àº °¢ ¿É¼ÇÀ» ±â¼úÇÕ´Ï´Ù:

+
    +
  • SI´Â SendInputÀÇ ¾àÀÚÀÔ´Ï´Ù. ÀüÇüÀûÀ¸·Î ´Ù¸¥ ¸ðµåº¸´Ù ¿ùµîÇÑ ¼Óµµ¿Í ½Å·Ú¼ºÀÌ ÀÖ½À´Ï´Ù. ¶Ç´Ù¸¥ ÀåÁ¡Àº ¾Æ·¡ÀÇ SendPlay¿Í °°ÀÌ SendInputÀº ÇÖ½ºÆ®¸µÀÇ ÅؽºÆ® ÀÚµ¿-±³Ã¼°¡ ÀϾ´Â µ¿¾È ŸÀڵǴ ¸ðµç °ÍµéÀ» ´ë±â½Ãŵ´Ï´Ù. ÀÌ ´öºÐ¿¡ Å°´­¸²ÀÌ ±³Ã¼ ¹®ÀÚ¿­ ¿©±â Àú±â·Î Èð¾îÁöÁö ¾Ê½À´Ï´Ù. SendInputÀ» »ç¿ëÇÒ ¼ö ¾øÀ¸¸é, ÇÖ½ºÆ®¸µÀº ÀÚµ¿À¸·Î ´ë½Å¿¡ SendPlay¸¦ »ç¿ëÇÕ´Ï´Ù.
  • +
  • SP´Â SendPlayÀÇ ¾àÀÚÀÔ´Ï´Ù. ÇÖ½ºÆ®¸µÀ» ´õ ³ÐÀº ¹üÀ§ÀÇ °ÔÀÓ¿¡ ÀÛµ¿½Ãų ¼ö ÀÖ½À´Ï´Ù.
  • +
  • SE´Â SendEventÀÇ ¾àÀÚÀÔ´Ï´Ù. 1.0.43 ÀÌÀü ¹öÀü¿¡¼­´Â ÀÌ °ªÀÌ ±âº»ÀÔ´Ï´Ù.
  • +
+

À§ÀÇ ¿É¼Ç Áß ¾î´À °Íµµ »ç¿ëµÇÁö ¾ÊÀ¸¸é, ±âº» ¸ðµå´Â v1.0.43 ÀÌÈÄÀÇ SendInputÀÔ´Ï´Ù. ±×·¸Áö¸¸, SI ¿É¼Ç°ú ´Ù¸£°Ô, SendInputÀ» »ç¿ëÇÒ ¼ö ¾øÀ» ¶§ SendPlay ´ë½Å¿¡ SendEventÀ» »ç¿ëÇÕ´Ï´Ù.

+

+Z: ÀÚÁÖ »ç¿ëµÇÁö ¾Ê´Â ÀÌ ¿É¼ÇÀº ÇÖ½ºÆ®¸µÀÌ ÃË¹ßµÈ ´ÙÀ½ ÇÖ½ºÆ®¸µ ÀνÄÀÚ¸¦ Àç¼³Á¤ÇÕ´Ï´Ù. ´Ù¸¥ ¸»·Î, ½ºÅ©¸³Æ®´Â ÀÌÀü¿¡ ŸÀÚÇÑ ¸ðµç °ÍµéÀ» ´Ù ÀØ¾î ¹ö¸®°í ¿ÏÀüÈ÷ »õ·Î¿î ¹®ÀÚ¿­À» ±â´Ù¸®±â ½ÃÀÛÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¿øÇÏÁö ¾Ê´Â ÇÖ½ºÆ®¸µÀÇ Ã˹ßÀ» ¸·À» ¼ö ÀÖ½À´Ï´Ù. ¿¹½Ã¸¦ À§ÇØ, ´ÙÀ½ ÇÖ½ºÆ®¸µÀ» ¿¬±¸ÇØ º¾½Ã´Ù:

+
:b0*?:11::
+SendInput xx
+return
+

+À§ ¿¹Á¦´Â Z ¿É¼ÇÀÌ ¾ø±â ¶§¹®¿¡, 111À» ŸÀÚÇϸé (¿¬¼ÓÀ¸·Î 1 ¼¼ °³) ÇÖ½ºÆ®¸µÀÌ µÎ ¹ø Ã˹ߵ˴ϴÙ. ¿Ö³ÄÇÏ¸é °¡¿îµ¥ 1ÀÌ Ã¹ Ã˹ßÀÇ ¸¶Áö¸· ¹®ÀÚÀÌ°í ¶ÇÇÑ µÎ ¹ø° Ã˹ßÀÇ Ã¹ ¹®ÀÚÀ̱⠶§¹®ÀÔ´Ï´Ù. ±âÈ£ Z¸¦ b0 ¾Õ¿¡ Ãß°¡Çϸé, 1À» ¼¼ °³ ´ë½Å¿¡ ³× °³¸¦ ŸÀÚÇØ¾ß ÇÖ½ºÆ®¸µÀÌ µÎ ¹ø Ã˹ߵ˴ϴÙ. Z0À» »ç¿ëÇϸé ÀÌ ¿É¼ÇÀ» ²ø ¼ö ÀÖ½À´Ï´Ù.

+ +

±â´Ù¶õ ±³Ã¼

+

+±â´Ù¶õ ÅؽºÆ® ±³Ã¼¸¦ »ý»êÇÏ´Â ÇÖ½ºÆ®¸µÀº °è¼Ó ¼½¼ÇÀ» »ç¿ëÇÏ¸é ´õ Àбâ ÁÁ°Ô ´õ °ü¸®Çϱ⠽±°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
::text1::
+(
+»ó´Ü°ú ÇÏ´ÜÀÇ ¹Ý°ýÈ£ »çÀÌ¿¡ ÀÖ´Â ÅؽºÆ®´Â ¹«¾ùÀÌµç ¹®ÀÚ ±×´ë·Î Ãë±ÞµË´Ï´Ù
+¿©±â¿¡´Â ½°Ç¥¿Í ÆÛ¼¾Æ® »çÀεµ ¿¹¿Ü°¡ ¾Æ´Õ´Ï´Ù.
+±âº»°ªÀ¸·Î, Çϵå ij¸®Áö ¸®ÅÏ(¿£ÅÍ)ÀÌ ¾Õ ÁÙ°ú ÀÌ ÁÙ »çÀÌ¿¡ À־ ¿ª½Ã À¯ÁöµË´Ï´Ù.
+    ±âº» °ªÀ¸·Î, ÀÌ ÁÙÀÇ ¿ÞÂÊ µé¿©¾²±â (ÅÇ)µµ À¯ÁöµË´Ï´Ù.
+
+ÀÌ ±âº» ÇàÀ§¸¦ ¹Ù²Ù´Â ¹æ¹ýÀº °è¼Ó ¼½¼ÇÀ» ÂüÁ¶ÇϽʽÿÀ.
+)
+

+°è¼Ó ¼½¼ÇÀÌ ÀÖÀ¸¸é ÇÖ½ºÆ®¸µµµ ¿ª½Ã ³¯ ¸ðµå°¡ ±âº»°ªÀÌ µË´Ï´Ù. ÀÌ Æ¯º°ÇÑ ±âº»°ªÀ» ¿À¹ö¶óÀ̵åÇÏ´Â À¯ÀÏÇÑ ¹æ¹ýÀº °è¼Ó ¼½¼ÇÀ» °¡Áø °¢ ÇÖ½ºÆ®¸µ ¾È¿¡ r0 ¿É¼ÇÀ» ÁöÁ¤ÇÏ´Â °ÍÀÔ´Ï´Ù (¿¹, :r0:text1::).

+ +

¹®¸Æ-°¨Áö ÇÖ½ºÆ®¸µ

+

+#IfWinActive/Exist Áö½Ã¾î¸¦ »ç¿ëÇÏ¸é ¼±ÅÃµÈ ÇÖ½ºÆ®¸µÀÌ ¹®¸ÆÀ» °¨ÁöÇÏ°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ¹®¸Æ °¨Áö ÇÖ½ºÆ®¸µÀº È°¼ºÃ¢ÀÇ À¯Çü¿¡ µû¶ó ´Ù¸£°Ô ±³Ã¼Çϰųª, ´Ù¸£°Ô ÇàÀ§Çϰųª, ¶Ç´Â ¾Æ¹«°Íµµ ÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
#IfWinActive ahk_class Notepad
+::btw::ÀÌ ±³Ã¼ ÅؽºÆ®´Â ³ëÆ®Æе忡¸¸ ³ªÅ¸³³´Ï´Ù.
+#IfWinActive
+::btw::ÀÌ ±³Ã¼ ÅؽºÆ®´Â ³ëÆ®Æе尡 ¾Æ´Ñ â¿¡ ³ªÅ¸³³´Ï´Ù.
+ +

AutoCorrect

+

+´ÙÀ½ ½ºÅ©¸³Æ®´Â ÇÖ½ºÆ®¸µÀ» »ç¿ëÇØ ´ë·« 4700 Á¤µµÀÇ ¿µ¾î öÀÚ ¿À·ù¸¦ ¹Ù·Î¹Ù·Î ±³Á¤ÇÕ´Ï´Ù. Win+H ÇÖÅ°°¡ Æ÷ÇԵǾî À־ ½±°Ô ´õ ¸¹Àº öÀÚ¸¦ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù:

+

³»·Á¹Þ±â: AutoCorrect.ahk (127 KB)

+

ÀúÀÚ: Jim Biancolo and Wikipedia's Lists of Common Misspellings

+ +

³íÆò

+

+%MyVar%¿Í °°Àº º¯¼ö ÂüÁ¶´Â ÇöÀç ÀÚµ¿ ±³Ã¼ ÅؽºÆ® ¾È¿¡¼­ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. À̸¦ ÇØ°áÇϱâ À§ÇØ, auto-replace °°Àº ÇÖ½ºÆ®¸µÀ» ¸¸µéÁö ¸¶½Ê½Ã¿À. + +´ë½Å¿¡, ¾à¾î ¹Ù·Î ¾Æ·¡¿¡ SendInput ¸í·É¾î¸¦ »ç¿ëÇÏ°í, µÚÀ̾ ´Ü¾î Return¸¸ ÀÖ´Â ÁÙÀ» ¹èÄ¡ÇϽʽÿÀ.

+

+±³Ã¼ÇÑ µÚ¿¡ µû·Î ´õ ½ºÆäÀ̽º³ª ÅÇÀ» Àü¼ÛÇÏ·Á¸é, ½ºÆäÀ̽º³ª ÅÇÀ» ±³Ã¼ µÚ¿¡ Æ÷ÇÔÇÏ°í ¸¶Áö¸· ¹®ÀÚ¸¦ ¾×¼¾Æ®/¹éƽ(`)À¸·Î ¸¸µå½Ê½Ã¿À. ¿¹¸¦ µé¾î:

+
:*:btw::By the way `
+

+ÁÂ/¿ì ¹öÆ°À» Ŭ¸¯Çϸé ÇÖ½ºÆ®¸µ ÀνÄÀÚ°¡ ¸®¼ÂµË´Ï´Ù. ´Ù¸¥ ¸»·Î, ½ºÅ©¸³Æ®´Â ÀÌÀü¿¡ ŸÀÚµÈ °ÍµéÀ» ¸ðµÎ ÀØ¾î ¹ö¸®°í ÀüÀûÀ¸·Î »õ·Î¿î ÇÖ½ºÆ®¸µÀ» ±â´Ù¸³´Ï´Ù (ÀÌ°ÍÀÌ ¸¶À½¿¡ µéÁö ¾ÊÀ¸¸é, , ´ÙÀ½ ÁÙ #Hotstring NoMouse¸¦ ½ºÅ©¸³Æ®¿¡ ÁöÁ¤ÇϽʽÿÀ). ÀÌ "¸¶¿ì½º Ŭ¸¯¿¡ ¸®¼Â" ÇàÀ§°¡ ±âº»°ªÀÔ´Ï´Ù. ¿Ö³ÄÇÏ¸é °¢ Ŭ¸¯Àº ÀüÇüÀûÀ¸·Î ÅؽºÆ® »ðÀÔ À§Ä¡¸¦ À̵¿½ÃÅ°°Å³ª (ij·µ) Å°º¸µå ÃÊÁ¡À» »õ·Î¿î ÄÜÆ®·Ñ/Çʵå·Î ¼³Á¤Çϱ⠶§¹®ÀÔ´Ï´Ù. ±×·± °æ¿ì, º¸Åë ´ÙÀ½ÀÌ ¹Ù¶÷Á÷ÇÕ´Ï´Ù: +

    +
  1. ¹°À½Ç¥ ¿É¼ÇÀÌ ¾ø´õ¶óµµ ÇÖ½ºÆ®¸µÀ» Ã˹߽Ãŵ´Ï´Ù; +
  2. ¸¶¿ì½º¸¦ Ŭ¸¯ÇÑ ÈÄ¿¡ ŸÀÚÇÑ °ÍÀÌ ¿ì¹ßÀûÀ¸·Î ÀÌÀü¿¡ ŸÀÚÇÑ °Í°ú ´õºÒ¾î À¯È¿ÇÑ ¾à¾î¸¦ Çü¼ºÇÒ ¶§ Ã˹ßÀ» ¸·½À´Ï´Ù +
+

+

+³»Àå º¯¼ö A_EndChar¿¡ Á¾·á ¹®ÀÚ°¡ µé¾î ÀÖ½À´Ï´Ù. ŸÀÚÇÏ¸é °¡Àå ÃÖ±ÙÀÇ ÀÚµ¿-±³Ã¼µÇÁö-¾ÊÀº ÇÖ½º¸µÀÌ Ã˹ߵ˴ϴÙ. (* ¿É¼Ç ¶§¹®¿¡) Á¾·á ¹®ÀÚ°¡ ÇÊ¿äÇÏÁö ¾ÊÀ¸¸é, ºñ¾î ÀÖ½À´Ï´Ù. A_EndChar´Â Send ¸í·É¾î¸¦ »ç¿ëÇÏ´Â ÇÖ½ºÆ®¸µÀ» ¸¸µé ¶§ À¯¿ëÇÕ´Ï´Ù. ¶Ç´Â ±×ÀÇ ÇàÀ§°¡ ŸÀÚµÈ Á¾·á ¹®ÀÚ¿¡ µû¶ó ¹Ù²î¾î¾ß ÇÏ´Â ÇÖ½ºÆ®¸µÀ» ¸¸µé ¶§ À¯¿ëÇÕ´Ï´Ù. +Á¾·á ¹®ÀÚ ÀÚü¸¦ º¸³»·Á¸é, SendRaw %A_EndChar%¸¦ »ç¿ëÇÕ´Ï´Ù (SendRaw°¡ »ç¿ëµÈ ÀÌÀ¯´Â !{}¿Í °°Àº ¹®ÀÚµéÀÌ º¸ÅëÀÇ Send ¸í·É¾î·Î´Â ¿Ã¹Ù¸£°Ô Àü¼ÛµÇÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù).

+

+½°Ç¥, ÆÛ¼¾Æ® »çÀÎ, ±×¸®°í ´ÜÀÏ-½ÖÁ¡Àº ÇÖ½ºÆ®¸µ Á¤ÀÇ ¾È¿¡¼­ ÇǽŠ½Ãų ÇÊ¿ä°¡ ¾øÁö¸¸, ¿ÞÂÊ¿¡ ½ºÆäÀ̽º³ª ÅÇÀÌ ÀÖ´Â ¹éƽ°ú ½ÖÁ¡Àº ÇǽŽÃÄÑ¾ß ÇÕ´Ï´Ù. ¿ÏÀüÇÑ ¸ñ·ÏÀº ÇǽŠ¿¬¼Ó¿­À» ÂüÁ¶ÇϽʽÿÀ.

+

+ {Enter}¿Í °°Àº Send ¸í·É¾îÀÇ Æ¯¼ö ¹®ÀÚµéÀº (³¯ ¿É¼ÇÀÌ »ç¿ëµÇÁö ¾Ê´Â ÇÑ) ÅؽºÆ® ÀÚµ¿-±³Ã¼¿¡ Áö¿øµÇÁö¸¸, ÇÖ½ºÆ®¸µ ¾à¾î ÀÚü´Â À̸¦ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. ´ë½Å¿¡, `n¸¦ ENTER Å°¿¡ ±×¸®°í `t¸¦ (¶Ç´Â ¹®ÀÚ ±×´ë·ÎÀÇ Åǹ®ÀÚ) TAB¿¡ ÁöÁ¤ÇϽʽÿÀ (¿ÏÀüÇÑ ¸ñ·ÏÀº ÇǽŠ¿¬¼Ó¿­À» ÂüÁ¶ÇϽʽÿÀ). ¿¹¸¦ µé¾î, ´ÙÀ½ ÇÖ½ºÆ®¸µ :*:ab`t::Àº "ab"¸¦ ŸÀÚÇÏ°í ¹Ù·Î ÅÇÀÌ µû¶ó¿À¸é Ã˹ߵ˴ϴÙ.

+

+½ºÆäÀ̽º¿Í ÅÇÀº ÇÖ½ºÆ®¸µ Á¤ÀÇ ¾È¿¡¼­ ¹®ÀÚ ±×´ë·Î Ãë±ÞµË´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½Àº µÎ °³ÀÇ ´Ù¸¥ °á°ú¸¦ »ý»êÇÕ´Ï´Ù: ::btw::by the way ±×¸®°í ::btw:: by the way.

+

+ÇÖ½ºÆ®¸µ ¾à¾î´Â 40 ¹®ÀÚ¸¦ ³ÑÀ» ¼ö ¾ø½À´Ï´Ù. ÀÌ ±æÀ̸¦ ÃÊ°úÇϸé ÇÁ·Î±×·¥Àº °æ°íÇÒ °ÍÀÔ´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, ÇÖ½ºÆ®¸µ ±³Ã¼ ÅؽºÆ®ÀÇ ±æÀÌ´Â Àü¼Û ¸ðµå°¡ ±âº»°ªÀÎ SendInputÀÏ ¶§ ´ë·« 5000 ¹®ÀÚ·Î Á¦Çѵ˴ϴÙ. Á¦ÇÑÀ» 16,383 ¹®ÀÚ·Î Áõ°¡½ÃÅ°·Á¸é ´Ù¸¥ Àü¼Û ¸ðµåÁß Çϳª·Î ÀüȯÇÏ¸é µË´Ï´Ù. °Ô´Ù°¡, ÇÖ½ºÆ®¸µÀÇ ¸öü¿¡ SendPlay %MyVariable%¸¦ »ç¿ëÇÏ¸é ¹«Á¦ÇÑ ÅؽºÆ®µµ Àü¼ÛÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ÇÖ½ºÆ®¸µÀÌ Á¤ÀÇµÈ ¼ø¼­¿¡ µû¶ó ¼­·Î °£¿¡ ¿ì¼± ¼øÀ§°¡ °áÁ¤µË´Ï´Ù. ´Ù¸¥ ¸»·Î, Çϳª ÀÌ»óÀÇ ÇÖ½ºÆ®¸µÀÌ ¿©·¯ºÐÀÌ Å¸ÀÚÇÑ °Í¿¡ ºÎÇÕÇϸé, Á¦ÀÏ ¸ÕÀú ³ª¿­µÈ °Í¸¸ È¿°ú¸¦ ¹ßÈÖÇÕ´Ï´Ù. °ü·Ã ÁÖÁ¦: ¹®¸Æ-°¨Áö ÇÖ½ºÆ®¸µ.

+

+¿©·¯ºÐÀÌ Å¸ÀÚÇÑ ¹é½ºÆäÀ̽º´Â ¸ðµÎ ÇÖ½ºÆ®¸µÀÇ °¨Áö¸¦ À§ÇÑ ¸ñÀû¿¡ °í·ÁµË´Ï´Ù. ±×·¸Áö¸¸, È­»ìÇ¥ Å°, PageUp, PageDown, Home, ±×¸®°í End Å°¸¦ »ç¿ëÇÏ¿© ÆíÁý±â ¾ÈÀ» Ç×ÇØÇϸé ÇÖ½ºÆ®¸µ ÀÎ½Ä Ã³¸®°¡ ¸®¼ÂµË´Ï´Ù. ´Ù¸¥ ¸»·Î, ÀüÀûÀ¸·Î »õ·Î¿î ÇÖ½ºÆ®¸µÀ» ±â´Ù¸®±â ½ÃÀÛÇÕ´Ï´Ù.

+

+ÇÖ½ºÆ®¸µÀº È°¼º âÀÌ Å°´­¸²À» ¹«½ÃÇÒ ¶§¿¡µµ ŸÀÚµÉ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¸»·Î, ÇÖ½ºÆ®¸µÀº ÃË¹ß ¾à¾î°¡ ÀüÇô º¸ÀÌÁö ¾ÊÀ»Áö¶óµµ ¿©ÀüÈ÷ Ã˹ߵ˴ϴÙ. °Ô´Ù°¡, ¿©ÀüÈ÷ ¹é½ºÆäÀ̽º Å°¸¦ ´­·¯ ÃÖ±Ù¿¡ ŸÀÚµÈ Å°´­¸²À» ¾ðµÎÇÒ ¼ö ÀÖ½À´Ï´Ù (±× È¿°ú°¡ º¸ÀÌÁö ¾ÊÀ»Áö¶óµµ ¸»ÀÔ´Ï´Ù).

+

+ÇÖ½ºÆ®¸µ ¶óº§¿¡ Gosub´Â Goto¸¦ Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ù ¹ø° ½ÖÁ¡ ½ÖÀ» (´Ù¸¥ ¿É¼Ç ½Éº¼À» Æ÷ÇÔÇÏ¿©) ±×ÀÌ À̸§ ¾Õ¿¡ Æ÷ÇÔÇÏ¸é µË´Ï´Ù. ¿¹¸¦ µé¾î: Gosub ::xyz. ±×·¸Áö¸¸, ÇÑ-ÁÙ (ÀÚµ¿-±³Ã¼) ÇÖ½ºÆ®¸µ¿¡´Â Á¡ÇÁÇغÁ¾ß ¾Æ¹« °Íµµ ÇÏÁö ¾Ê½À´Ï´Ù. ±â²¯ÇØ¾ß returnÀ» ½ÇÇàÇÏ´Â °ÍÀ¸·Î ³¡³³´Ï´Ù.

+

+ÇÖ½ºÆ®¸µÀº °üÁ¦°¡ µÇÁö ¾Ê°í º¸ÀÌÁö ¾Ê´Â Input ¸í·É¾î µ¿¾È¿¡´Â Ã˹ߵÇÁö ¾ÊÁö¸¸, º¸ÀÌ´Â InputÀº ÇÖ½ºÆ®¸µÀ» Ã˹߽Ãų ¼ö ÀÖ½À´Ï´Ù.

+

±âº»°ªÀ¸·Î, ÇÖ½ºÆ®¸µÀº AutoHotkey ½ºÅ©¸³Æ®°¡ »ý»êÇÏ´Â Å°´­¸²¿¡´Â Ã˹ߵÇÁö ¾Ê½À´Ï´Ù. ±×·¡¼­ ÇÖ½ºÆ®¸µ³¢¸® ¼­·Î Ã˹ßÇÏ´Â ¹«ÇÑ È¸µ¹ÀÌ¿¡ ºüÁú °¡´É¼ºÀ» ÇÇÇÕ´Ï´Ù. v1.1.06 ÀÌÈÄ ¹öÀü¿¡¼­ ÀÌ ÇàÀ§´Â #InputLevel°ú SendLevel·Î ÅëÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ÀÚµ¿-±³Ã¼ ÇÖ½ºÆ®¸µÀº ¾ðÁ¦³ª ·¹º§ 0À¸·Î Àü¼ÛµÇ°í ±×·¯¹Ç·Î °¥°í¸® ÇÖÅ°³ª ÇÖ½ºÆ®¸µÀ» Ã˹ßÇÏÁö ¾Ê½À´Ï´Ù.

+

+¾î¶² ¸ñÀû¿¡´Â ÇÖ½ºÆ®¸µº¸´Ù Input ¸í·É¾î°¡ ´õ À¯¿¬ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, È°¼º â¿¡ Å°´­¸²À» °¨Ãâ ¼ö ÀÖ½À´Ï´Ù (°ÔÀÓ °°Àº °æ¿ì). ¶Ç Escape¿Í °°ÀÌ ¹®ÀÚ°¡-¾Æ´Ñ Á¾·á Å°¸¦ Áö¿øÇÕ´Ï´Ù.

+

+ÇÖ½ºÆ®¸µÀ» ´ã°í ÀÖ´Â ½ºÅ©¸³Æ®´Â Å°º¸µå °¥°í¸®¸¦ ÀÚµ¿À¸·Î »ç¿ëÇÕ´Ï´Ù.

+

+ÇÖ½ºÆ®¸µÀº ´ÙÀ½°ú °°Àº ¹æ½ÄÀ¸·Î ÇÖÅ°¿Í µ¿ÀÏÇÏ°Ô ÇàÀ§ÇÕ´Ï´Ù:

+
    +
  • Suspend ¸í·É¾î¿¡ ¿µÇâÀ» ¹Þ½À´Ï´Ù.
  • +
  • #MaxThreads¿Í #MaxThreadsPerHotkey¸¦ ÁؼöÇÕ´Ï´Ù (#MaxThreadsBuffer´Â Á¦¿Ü).
  • +
  • ÇÖ½ºÆ®¸µÀ» ´ã°í ÀÖ´Â ½ºÅ©¸³Æ®´Â ÀÚµ¿À¸·Î ¿µ¼ÓÀûÀÌ µË´Ï´Ù.
  • +
  • ÀÚµ¿-±³Ã¼-¾Æ´Ñ ÇÖ½ºÆ®¸µÀº ±âµ¿µÉ ¶§ »õ·Î ¾²·¹µå¸¦ »ý¼ºÇÕ´Ï´Ù. °Ô´Ù°¡, A_ThisHotkey¿Í °°Àº ³»Àå ÇÖÅ° º¯¼ö¸¦ °»½ÅÇÕ´Ï´Ù.
  • +
+

+¾Ë·ÁÁø ÇÑ°è: ÀÚ¹Ù ¾îÇø®ÄÉÀÌ¼Ç °°Àº ¾î¶² ½Ã½ºÅÛ¿¡¼­´Â ÇÖ½ºÆ®¸µÀÌ »ç¿ëÀÚ°¡ (µ¥µå Å°¸¦ ÅëÇÏ¿©) ¹æ¾ð ¹®ÀÚ¸¦ ŸÀÚÇÏÁö ¸øÇϵµ·Ï ¹æÇØÇÕ´Ï´Ù. À̸¦ ÇØ°áÇÏ·Á¸é, Suspend¸¦ Àӽ÷ΠÄÓ ¼ö ÀÖ½À´Ï´Ù (¸ðµç ÇÖ½ºÆ®¸µÀÌ ²¨Áý´Ï´Ù).

+ +

ÇÖ½ºÆ®¸µ µµ¿ò ÇÔ¼ö

+

+¾Èµå·¹¾Æ½º º¸·çŸ(Andreas Borutta)°¡ ´ÙÀ½ ½ºÅ©¸³Æ®¸¦ Á¦½ÃÇß½À´Ï´Ù. ÇÖ½ºÆ®¸µÀ» ¸¹ÀÌ »ç¿ëÇÑ´Ù¸é ¾ÆÁÖ À¯¿ëÇÒ °ÍÀÔ´Ï´Ù. Win+H (¶Ç´Â ¶Ç´Ù¸¥ ÇÖÅ°)¸¦ ´©¸£¸é, ÇöÀç ¼±ÅÃµÈ ÅؽºÆ®°¡ ÇÖ½ºÆ®¸µÀ¸·Î º¯È¯µË´Ï´Ù. ¿¹¸¦ µé¾î, ¿öµå ÇÁ·Î¼¼¼­¿¡¼­ "by the way"¸¦ ¼±ÅÃÇß´Ù¸é, Win+H¸¦ ´©¸£¸é ¿©·¯ºÐ¿¡°Ô ±×ÀÇ ¾àÀÚ¸¦ ¿ä±¸ÇÒ °ÍÀÔ´Ï´Ù (¿¹, btw) ±×¸®°í ±× »õ ÇÖ½ºÆ®¸µÀ» ½ºÅ©¸³Æ®¿¡ Ãß°¡ÇÕ´Ï´Ù. ´ÙÀ½ ½ºÅ©¸³Æ®¸¦ ÀçÀûÀçÇÏ¿© ±× ÇÖ½ºÆ®¸µÀ» È°¼ºÈ­ÇÕ´Ï´Ù.

+ +
#h::  ; Win+H ÇÖÅ°
+; ÇöÀç ¼±ÅÃµÈ ÅؽºÆ®¸¦ ¾ò´Â´Ù. "ControlGet Selected" ´ë½Å¿¡
+; Ŭ¸³º¸µå¸¦ »ç¿ëÇÑ´Ù. ¿Ö³ÄÇÏ¸é ´ëºÎºÐÀÇ ÆíÁý±â¿¡ ÀÛµ¿Çϱ⠶§¹®ÀÌ´Ù.
+; (Áï ¿öµå ÇÁ·Î¼¼¼­). ÇöÀç Ŭ¸³º¸µå ³»¿ëÀ» ÀúÀåÇÑ´Ù. ³ªÁß¿¡ º¹±¸ÇØ »ç¿ëÇÑ´Ù
+; Æò¹üÇÑ ÅؽºÆ®¸¸ ó¸®ÇÏÁö¸¸, 
+; ¾Æ¹«°Íµµ ó¸®ÇÏÁö ¸øÇÏ´Â °Íº¸´Ù´Â ³´´Ù:
+AutoTrim Off  ; Ŭ¸³º¸µå¿¡ ¼±µÎ¿Í ÈÄ¹Ì °ø¹éÀ» ±×´ë·Î À¯ÁöÇÑ´Ù.
+ClipboardOld = %ClipboardAll%
+Clipboard =  ; ŽÁö¸¦ ÀÛµ¿½ÃÅ°·Á¸é ºó ä·Î ½ÃÀÛÇØ¾ß ÇÑ´Ù.
+Send ^c
+ClipWait 1
+if ErrorLevel  ; ClipWait ½Ã°£ Á¾·á.
+    return
+; "³¯·Î-Àü¼Û" ÇÖ½ºÆ®¸µ¿¡ »ç¿ëÇϱâ À§ÇØ CRLF¿Í LF¸¦ `n·Î ±³Ã¼ÇÑ´Ù:
+; ´Ù¸¥ ¹®Àڵ鿡 ´ëÇؼ­µµ ¶È °°ÀÌ ±³Ã¼ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é
+; ³¯ ¸ðµå¿¡¼­ ¹®Á¦¸¦ ÀÏÀ¸Å³ ¼ö ÀÖ´Ù:
+StringReplace, Hotstring, Clipboard, ``, ````, All  ; ¾Æ·¡ÀÇ ´Ù¸¥ °Íµé°úÀÇ °£¼·À» ÇÇÇϱâ À§ÇØ ÀÌ°É ¸ÕÀú ±³Ã¼ÇÑ´Ù.
+StringReplace, Hotstring, Hotstring, `r`n, ``r, All  ; MS Word, µîµî¿¡¼­ `rÀ» »ç¿ëÇÏ´Â °ÍÀÌ `nº¸´Ù ´õ Àß ÀÛµ¿ÇÑ´Ù .
+StringReplace, Hotstring, Hotstring, `n, ``r, All
+StringReplace, Hotstring, Hotstring, %A_Tab%, ``t, All
+StringReplace, Hotstring, Hotstring, `;, ```;, All
+Clipboard = %ClipboardOld%  ; Ŭ¸³º¸µåÀÇ ÀÌÀü ³»¿ëÀ» º¹±¸ÇÑ´Ù.
+; ÀÌ·¸°Ô Çϸé InputBoxÀÇ Ä³·µÀÌ »ç¿ëÀÚ¿¡°Ô ´õ Æí¸®ÇÑ À§Ä¡·Î À̵¿ÇÑ´Ù:
+SetTimer, MoveCaret, 10
+; InputBox¸¦ º¸¿©ÁÖ°í, ±âº» ÇÖ½ºÆ®¸µÀ» Á¦°øÇÑ´Ù:
+InputBox, Hotstring, New Hotstring, Áö½ÃÇÑ »ðÀÔ ÁöÁ¡¿¡ ¾à¾î¸¦ ŸÀÚÇϽʽÿÀ. ¿øÇÑ´Ù¸é ±³Ã¼ ÅؽºÆ®µµ ÆíÁýÇÒ ¼ö ÀÖ½À´Ï´Ù.`n`n¿¹Á¦: :R:btw`::by the way,,,,,,,, :R:`::%Hotstring%
+if ErrorLevel  ; »ç¿ëÀÚ°¡ CancelÀ» ´­·¶´Ù.
+    return
+IfInString, Hotstring, :R`:::
+{
+    MsgBox ¾à¾î¸¦ Á¦°øÇÏÁö ¾Ê¾Ò½À´Ï´Ù. ÇÖ½ºÆ®¸µÀÌ Ãß°¡µÇÁö ¾Ê¾Ò½À´Ï´Ù.
+    return
+}
+; ±×·¸Áö ¾ÊÀ¸¸é, ÇÖ½ºÆ®¸µÀ» Ãß°¡ÇÏ°í ½ºÅ©¸³Æ®¸¦ ÀçÀûÀçÇÑ´Ù:
+FileAppend, `n%Hotstring%, %A_ScriptFullPath%  ; ÆÄÀÏÀÌ ³¡¿¡ ºó ÁÙ¿¡ ¾ø´Â °æ¿ì ¾Õ¿¡ `nÀ» ¹èÄ¡ÇÑ´Ù.
+Reload
+Sleep 200 ; ¼º°øÇϸé, ÀçÀûÀç ¶§¹®¿¡ ÀÌ ½Çü´Â SleepÇÏ´Â µ¿¾È ´ÝÈù´Ù. ±×·¡¼­ ¾Æ·¡ÀÇ ÁÙÀº Àý´ë·Î µµ´ÞÇÏÁö ¸øÇÑ´Ù.
+MsgBox, 4,, ¹æ±Ý Ãß°¡µÈ ÇÖ½ºÆ®¸µÀº ¸ð¾çÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù. ½ºÅ©¸³Æ®¸¦ ¿­¾î ÆíÁýÇϽðڽÀ´Ï±î? ³ª»Û ÇÖÆ®¸µÀÇ À§Ä¡´Â ½ºÅ©¸³Æ® ÇÏ´Ü¿¡ ÀÖ½À´Ï´Ù.
+IfMsgBox, Yes, Edit
+return
+
+MoveCaret:
+IfWinNotActive, New Hotstring
+    return
+; ±×·¸Áö ¾ÊÀ¸¸é, InputBoxÀÇ »ðÀÔ À§Ä¡¸¦ »ç¿ëÀÚ°¡ ¾à¾î¸¦ ŸÀÚÇÒ °÷À¸·Î À̵¿ÇÑ´Ù.
+Send {Home}{Right 3}
+SetTimer, MoveCaret, Off
+return
+ + diff --git a/src/docs/KeyList.htm b/src/docs/KeyList.htm new file mode 100644 index 0000000..b7d861b --- /dev/null +++ b/src/docs/KeyList.htm @@ -0,0 +1,552 @@ + + +List of Keys and Mouse/Joystick Buttons for Hotkeys and Macros + + + + + + + + + +

Å°, ¸¶¿ì½º ¹öÆ°, ±×¸®°í Á¶À̽ºÆ½ ÄÜÆ®·Ñ ¸ñ·Ï

+

¸¶¿ì½º

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ÀϹÝ
LButton¿ÞÂÊ ¸¶¿ì½º ¹öÆ°
RButton¿À¸¥ÂÊ ¸¶¿ì½º ¹öÆ°
MButtonÁß°£ ¶Ç´Â ÈÙ ¸¶¿ì½º ¹öÆ°
°í±Þ
XButton14¹ø° ¸¶¿ì½º ¹öÆ°, ÀüÇüÀûÀ¸·Î Browser_Back°ú °°Àº ±â´ÉÀ» ¼öÇàÇÕ´Ï´Ù.
XButton25¹ø° ¸¶¿ì½º ¹öÆ°, ÀüÇüÀûÀ¸·Î Browser_Forward¿Í °°Àº ±â´ÉÀ» ¼öÇàÇÕ´Ï´Ù.
ÈÙ
WheelDownÈÙÀ» ¾Æ·¡·Î µ¹¸³´Ï´Ù (°¡±î¿öÁö°Ô).
WheelUpÈÙÀ» À§·Î µ¹¸³´Ï´Ù (¸Ö¾îÁö°Ô).
WheelLeft
WheelRight

[v1.0.48+]: Á¿ì·Î ½ºÅ©·ÑÇÕ´Ï´Ù.

+

À©µµ¿ìÁî ºñ½ºÅ¸ ÀÌ»óÀ» ¿ä±¸ÇÕ´Ï´Ù. µÎ ¹ø° ÈÙÀ» °¡Áø ¶Ç´Â ÈÙÀ» Á¿ì·Î µ¹¸± ¼ö ÀÖ´Â ¸¶¿ì½º¿Í ÇÔ²² (¸ðµÎ´Â ¾Æ´Ô) ÀÌ°ÍÀ» ÇÖÅ°·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾î¶² °æ¿ì, ´ë½Å¿¡ ¸¶¿ì½º¿Í ÇÔ²² µû¶ó¿À´Â µå¶óÀ̹ö¸¦ »ç¿ëÇؾ߸¸ ÀÌ Æ¯Â¡À» Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù. ƯÁ¤ ¸¶¿ì½º¿Í »ó°ü¾øÀÌ, Send¿Í ClickÀ» »ç¿ëÇÏ¿© ÇÁ·Î±×·¥¿¡¼­ Áö¿øÇϱ⸸ ÇÏ¸é ¼öÆòÀ¸·Î ½ºÅ©·ÑÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

Å°º¸µå

+

ÁÖÀÇ: ±âÈ£¿Í ¼ýÀÚ Å°ÀÇ À̸§Àº ±âÈ£³ª ¼ýÀÚ Å°¿Í °°½À´Ï´Ù. ¿¹¸¦ µé¾î. : b´Â "b" Å°ÀÌ°í 5´Â "5" Å°ÀÔ´Ï´Ù.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ÀϹÝ
CapsLockĸ½º ¶ô
Space½ºÆäÀ̽º ¹Ù
TabÅÇ Å°
Enter (¶Ç´Â Return)¿£ÅÍ Å°
Escape (¶Ç´Â Esc)Esc Å°
Backspace (¶Ç´Â BS)¹é½ºÆäÀ̽º
Ä¿¼­ ÄÜÆ®·Ñ
ScrollLock½ºÅ©·Ñ ¶ô
Delete (¶Ç´Â Del)»èÁ¦ Å°
Insert (¶Ç´Â Ins)»ðÀÔ Å°
HomeȨ Ű
End¿£µå Å°
PgUpÆäÀÌÁö ¾÷ Å°
PgDnÆäÀÌÁö ´Ù¿î Å°
UpÀ§ È­»ìÇ¥ Å°
Down¾Æ·¡ È­»ìÇ¥ Å°
Left¿ÞÂÊ È­»ìÇ¥ Å°
Right¿À¸¥ÂÊ È­»ìÇ¥ Å°
¼ýÀÚÆеå
NumLock ON + + + + +
NumLock OFF
Numpad0 + + + + +
NumpadIns0 / »ðÀÔ Å°
Numpad1 + + + + +
NumpadEnd1 / ¿£µå Å°
Numpad2 + + + + +
NumpadDown2 / ¾Æ·¡ È­»ìÇ¥ Å°
Numpad3 + + + + +
NumpadPgDn3 / ÆäÀÌÁö ´Ù¿î Å°
Numpad4 + + + + +
NumpadLeft4 / ¿ÞÂÊ È­»ìÇ¥ Å°
Numpad5 + + + + +
NumpadClear5 / º¸Åë ¾Æ¹«Àϵµ ¾ÈÇÔ
Numpad6 + + + + +
NumpadRight6 / ¿À¸¥ÂÊ È­»ìÇ¥ Å°
Numpad7 + + + + +
NumpadHome7 / Ȩ Ű
Numpad8 + + + + +
NumpadUp8 / À§ È­»ìÇ¥ Å°
Numpad9 + + + + +
NumpadPgUp9 / ÆäÀÌÁö ¾÷ Å°
NumpadDot + + + + +
NumpadDel¼Ò¼ö Á¡ / »èÁ¦ Å°
NumpadDiv + + + + +
NumpadDiv³ª´©±â
NumpadMult + + + + +
NumpadMult°öÇϱâ
NumpadAdd + + + + +
NumpadAdd´õÇϱâ
NumpadSub + + + + +
NumpadSub»©±â
NumpadEnter + + + + +
NumpadEnter¿£ÅÍ Å°
±â´ÉÅ°
F1 - F24´ëºÎºÐÀÇ Å°º¸µå »ó´Ü¿¡ ÀÖ´Â 12 °³ ÀÌ»óÀÇ ±â´ÉÅ°.
¼ö½ÄÅ°
LWin¿ÞÂÊ À©µµ¿ìÁî ·Î°í Å°. <# ÇÖÅ° Á¢µÎ ½Éº¼¿¡ »óÀÀÇÕ´Ï´Ù.
RWin¿À¸¥ÂÊ À©µµ¿ìÁî ·Î°í Å°. ># ÇÖÅ° Á¢µÎ ½Éº¼¿¡ »óÀÀÇÕ´Ï´Ù.
ÁÖÀÇ: Control/Alt/Shift¿Í ´Ù¸£°Ô, ¹ü¿ëÀÇ/Á߸³Àû "Win" Å°´Â ¾ø½À´Ï´Ù. OS°¡ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ±×·¸Áö¸¸, # ¼ö½ÄÅ°¸¦ °¡Áø ÇÖÅ°´Â ¾î´ÀÂÊ Win Å°·Îµµ Ã˹ߵ˴ϴÙ.
Control (or Ctrl)ÄÜÆ®·Ñ Å°. ÇÖŰó·³ (Control::) Æ¿µå Á¢µÎ ½Éº¼ÀÌ ºÙÁö ¾ÊÀº ÇÑ, ¶¿ ¶§ Ã˹ߵ˴ϴÙ. ^ ÇÖÅ° Á¢µÎ ½Éº¼¿¡ »óÀÀÇÕ´Ï´Ù.
Alt¾ËÆ® Å°. ÇÖŰó·³ (Alt::) Æ¿µå Á¢µÎ ½Éº¼ÀÌ ºÙÁö ¾Ê´Â ÇÑ, ¶¿ ¶§ Ã˹ߵ˴ϴÙ. ! ÇÖÅ° Á¢µÎ ½Éº¼¿¡ »óÀÀÇÕ´Ï´Ù.
Shift½¬ÇÁÆ® Å°. ÇÖŰó·³ (Shift::) Æ¿µå Á¢µÎ ½Éº¼ÀÌ ºÙÁö ¾Ê´Â ÇÑ, ¶¿ ¶§ Ã˹ߵ˴ϴÙ. + ÇÖÅ° Á¢µÎ ½Éº¼¿¡ »óÀÀÇÕ´Ï´Ù.
LControl (or LCtrl)¿ÞÂÊ ÄÜÆ®·Ñ Å°. <^ ÇÖÅ° Á¢µÎ ½Éº¼¿¡ »óÀÀÇÕ´Ï´Ù.
RControl (or RCtrl)¿À¸¥ÂÊ ÄÜÆ®·Ñ Å°. >^ ÇÖÅ° Á¢µÎ ½Éº¼¿¡ »óÀÀÇÕ´Ï´Ù.
LShift¿ÞÂÊ ½¬ÇÁÆ® Å°. <+ ÇÖÅ° Á¢µÎ ½Éº¼¿¡ »óÀÀÇÕ´Ï´Ù.
RShift¿À¸¥ÂÊ ½¬ÇÁÆ® Å°. >+ ÇÖÅ° Á¢µÎ ½Éº¼¿¡ »óÀÀÇÕ´Ï´Ù.
LAlt¿ÞÂÊ Alt Å°. <! ÇÖÅ° Á¢µÎ ½Éº¼¿¡ »óÀÀÇÕ´Ï´Ù.
RAlt¿À¸¥ÂÊ ¾ËÆ® Å°. >! ÇÖÅ° Á¢µÎ ½Éº¼¿¡ »óÀÀÇÕ´Ï´Ù. +
ÁÖÀÇ: Å°º¸µå ·¹À̾ƿô¿¡ RAlt ´ë½Å AltGrÀÌ ÀÖ´Ù¸é, ±×°ÍÀ» ÇÖÅ°·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½¿¡ ±â¼úÇÏ´Â ¹Ù¿Í °°ÀÌ <^>!ó·³ Á¢µÎ ½Éº¼ 󸮸¦ ÇØ ÁÖ¸é µË´Ï´Ù. °Ô´Ù°¡, LControl & RAlt::Àº AltGr ÀÚü¸¦ ÇÖÅ°·Î ¸¸µé¾î ÁÝ´Ï´Ù.
¸ÖƼ¹Ìµð¾î
Browser_BackµÚ·Î
Browser_Forward¾ÕÀ¸·Î
Browser_Refresh°»½Å
Browser_Stop¸ØÃã
Browser_Search°Ë»ö
Browser_FavoritesÁñ°Üã±â
Browser_HomeȨÆäÀÌÁö
Volume_MuteÀ½¼Ò°Å
Volume_Down¼Ò¸® ÁÙÀ̱â
Volume_Up¼Ò¸® ³ôÀ̱â
Media_Next´ÙÀ½ Æ®·¢
Media_PrevÀÌÀü Æ®·¢
Media_StopÁßÁö
Media_Play_Pause¿¬ÁÖ/Á¤Áö
Launch_Mail±âº» À̸ÞÀÏ ÇÁ·Î±×·¥ ±âµ¿
Launch_Media±âº» ¹Ìµð¾î Ç÷¹ÀÌ¾î ±âµ¿
Launch_App1³» ÄÄÇ»ÅÍ ±âµ¿
Launch_App2°è»ê±â ±âµ¿
ÁÖÀÇ: À§¿¡ ³ª¿­µÈ °¢ Å°¿¡ ÇÒ´çµÈ ±â´ÉÀº À©µµ¿ìÁîÀÇ ·¹Áö½ºÆ®¸®¸¦ º¯°æÇÏ¸é ¿À¹ö¶óÀ̵åÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ Å×À̺íÀº ´ëºÎºÐÀÇ À©µµ¿ìÁî ¹öÀü¿¡¼­ °¢ Å°ÀÇ ±âº» ±â´ÉÀ» º¸¿©ÁÝ´Ï´Ù.
Ư¼ö
AppsKey¸Þ´º Å°. ÀÌ Å°´Â ¿ìŬ¸¯ ¹®¸Æ ¸Þ´º¸¦ ¿äûÇÕ´Ï´Ù.
PrintScreenÈ­¸é Àμâ
CtrlBreak
PauseÁ¤Áö Å°
BreakBreak key. Pause¿Í µ¿ÀÏÇϱ⠶§¹®¿¡, ÇÖÅ°¿¡¼­ ^CtrlBreak¸¦ »ç¿ëÇϽʽÿÀ. ^PauseÀ̳ª ^Break´Â »ç¿ëÇÏÁö ¸¶½Ê½Ã¿À.
Helpµµ¿ò Å°. ÀÌ Å°´Â º¸Åë ´ëºÎºÐÀÇ Å°º¸µå¿¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. º¸Åë F1°ú °°Áö ¾Ê½À´Ï´Ù.
Sleep¼ö¸é Å°. ¾î¶² Å°º¸µå¿¡¼­ ¼ö¸é Å°´Â Àß ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.
SCnnnnnn¿¡ Å°ÀÇ ½ºÄµ Äڵ带 ÁöÁ¤ÇÕ´Ï´Ù. À§¿¡ ¾ð±ÞÇÏÁö ¾ÊÀº ºñÁ¤»ó Å°µéÀ» ÀνÄÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº Ư¼ö Å°¸¦ ÂüÁ¶ÇϽʽÿÀ.
VKnnnn¿¡ Å°ÀÇ ½ÊÀ°Áø °¡»ó Å° Äڵ带 ÁöÁ¤ÇÕ´Ï´Ù. ÀÚÁÖ »ç¿ëµÇÁö ¾Ê´Â ÀÌ ¹æ¹ýÀº ¾î¶² À¯ÇüÀÇ ÇÖÅ°°¡ Å°º¸µå °¥°í¸®¸¦ ¿ä±¸ÇÏ´Â °ÍÀ» ¹æÇØÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ÇÖÅ°µéÀº Å°º¸µå °¥°í¸®¸¦ »ç¿ëÇÏÁö ¾ÊÁö¸¸, ºÎÀÛ¿ëÀ¸·Î¼­ Home ¶Ç´Â NumpadHomeÀ» ´©¸£¸é Ã˹ߵ˴ϴÙ: +
^VK24::MsgBox Control Å°¸¦ ´©¸¥ ä·Î Home ¶Ç´Â NumpadHome¸¦ ´­·¶½À´Ï´Ù.
+
+ ¾Ë·ÁÁø ÇÑ°è: VK ÇÖÅ°°¡ Å°º¸µå °¥°í¸®¸¦ »ç¿ëÇϵµ·Ï °­Á¦µÇ¾î ÀÖÀ¸¸é, *VK24À̳ª ~VK24¿Í °°ÀÌ, µÎ Å°°¡ ¾Æ´Ï¶ó µÑ Áß¿¡ ÇϳªÀÇ Å°¿¡¸¸ Ã˹ߵ˴ϴ٠(¿¹, NumpadHome¿¡ Ã˹ߵǸé HomeÀº Ã˹ߵÇÁö ¾ÊÀ½). + VKnn ¸Þ½îµå¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â Ư¼ö Å°¸¦ ÂüÁ¶ÇÕ´Ï´Ù.
+

Joystick

+

Joy1 through Joy32: Á¶À̽ºÆ½ÀÇ ¹öÆ°. ´ÙÀ½ Å×½ºÆ® ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ¸é ¿©·¯ºÐÀÌ º¸À¯ÇÑ Á¶À̽ºÆ½ÀÇ ¹öÆ° °³¼ö¸¦ ¾Ë ¼ö ÀÖ½À´Ï´Ù. ^ (control) ±×¸®°í + (shift) °°Àº ÇÖÅ° Á¢µÎ ½Éº¼Àº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù (±×·¸Áö¸¸ GetKeyStateÀ» ´ë¾ÈÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù). + +Á¶À̽ºÆ½ ¹öÆ°À» ´©¸¥´Ù°í Çؼ­ ¾ðÁ¦³ª È°¼ºÃ¢À¸·Î "¶Õ°í µé¾î°¡´Â" °ÍÀº ¾Æ´Ï¶ó´Â »ç½ÇÀ» ÁÖÀÇÇϽʽÿÀ. ±× âÀÌ Á¶À̽ºÆ½ ¹öÆ° ´©¸§À» ŽÁöÇϵµ·Ï ¼³°èµÇ¾î ÀÖ´Ù¸é ħÅõÇÏÁö ¸øÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+´ÙÀ½ Á¶À̽ºÆ½ ÄÜÆ®·Ñ À̸§Àº ÇÖÅ°·Î »ç¿ëÇÒ ¼ö ¾øÁö¸¸, GetKeyState¿Í ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:
+ JoyX, JoyY, and JoyZ: Á¶À̽ºÆ½ÀÇ X (¼öÆò), Y (¼öÁ÷), ±×¸®°í Z (°íµµ/±íÀÌ) Ãà.
+ JoyR: Á¶À̽ºÆ½ÀÇ ·¯´õ ¶Ç´Â 4 ¹ø° Ãà.
+ JoyU and JoyV: Á¶À̽ºÆ½ÀÇ 5¹ø° 6 ¹ø° Ãà.
+ JoyPOV: The point-of-view (hat) control.
+ JoyName: Á¶À̽ºÆ½ ¶Ç´Â Á¶À̽ºÆ½ µå¶óÀ̹öÀÇ À̸§.
+ JoyButtons: Á¶À̽ºÆ½ÀÌ Áö¿øÇÏ´Â ¹öÆ°ÀÇ °³¼ö (¾ðÁ¦³ª Á¤È®ÇÑ °ÍÀº ¾Æ´Ô).
+ JoyAxes: Á¶À̽ºÆ½ÀÌ Áö¿øÇÏ´Â ÃàÀÇ °³¼ö.
+ JoyInfo: ´ÙÀ½ ±âÈ£·Î ±¸¼ºµÇ´Â ¹®ÀÚ¿­À» Á¦°øÇÕ´Ï´Ù. Á¶À̽ºÆ½ÀÌ °®Ãá ´É·ÂÀ» ¾Ë·ÁÁÝ´Ï´Ù: Z (Z Ãà), R (R Ãà), U (U Ãà), V (V Ãà), P (POV ÄÜÆ®·Ñ), D (POV ÄÜÆ®·ÑÀº ÀÌ»êÀûÀ¸·Î ¼³Á¤µË´Ï´Ù), C (POV ÄÜÆ®·ÑÀº ¿¬¼ÓÀûÀ¸·Î ¼³Á¤µË´Ï´Ù). ¿¹Á¦ ¹®ÀÚ¿­: ZRUVPD

+

+´ÙÁß Á¶À̽ºÆ½: ÄÄÇ»ÅÍ¿¡ ¿©·¯ Á¶À̽ºÆ½ÀÌ ÀÖ°í ù ¹ø° ¸¶¿ì½º ¸»°íµµ ´Ù¸¥ Á¶À̽ºÆ½À» »ç¿ëÇÏ°í ½Í´Ù¸é, Á¶À̽ºÆ½ ¹øÈ£¸¦ (ÃÖ´ë 16) ÄÁÆ®·Ñ À̸§ ¾Õ¿¡ ºÙÀ̽ʽÿÀ. ¿¹¸¦ µé¾î, 2joy1Àº µÎ ¹ø° Á¶À̽ºÆ½ÀÇ Ã¹ ¹ø° ¹öÆ°ÀÔ´Ï´Ù.

+

ÁÖÀÇ: ½ºÅ©¸³Æ®¿¡°Ô Á¶À̽ºÆ½À» ÀνĽÃÅ°Áö ¸øÇÏ°í ÀÖ´Ù¸é, ¾î¶² º¸°í¿¡ ÀÇÇϸé Á¶À̽ºÆ½ ¹øÈ£¸¦ 1¸»°í ´Ù¸¥ ¹øÈ£¸¦ ÁöÁ¤ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù°í ÇÕ´Ï´Ù. ¿ÀÁ÷ ÇϳªÀÇ Á¶À̽ºÆ½¸¸ ÀÖ´Ù°í ÇÒÁö¶óµµ ¸»ÀÔ´Ï´Ù. ¾î¶»°Ô ÀÌ·± »óȲÀÌ ÀϾ´ÂÁö ±×¸®°í ±×°ÍÀÌ Á¤»óÀÎ °ÍÀÎÁö´Â Àß ¸ð¸£Áö¸¸, Á¶À̽ºÆ½ Å×½ºÆ® ½ºÅ©¸³Æ®¿¡¼­ Á¶À̽ºÆ½ ¹øÈ£¸¦ °¡Áö°í ½ÇÇèÇØ º¸¸é ÀÌ ¹æ¹ýÀÌ ¿©·¯ºÐÀÇ ½Ã½ºÅÛ¿¡ Àû¿ëÀÌ µÉÁö ¾Ë ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.

+

´ÙÀ½µµ ÂüÁ¶ÇϽʽÿÀ:
+Á¶À̽ºÆ½ ¸®¸ÊÇÎ: Á¶À̽ºÆ½À¸·Î Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯À» Àü¼ÛÇÏ´Â ¹æ¹ý.
+Joystick-To-Mouse ½ºÅ©¸³Æ®: Á¶À̽ºÆ½À» ¸¶¿ì½º·Î »ç¿ëÇϱâ.

+ +

¼Õ¿¡ µç ¸®¸ðÄÜ

+

¼Õ¿¡ µç ¸®¸ðÄÜÀ¸·ÎºÎÅÍÀÇ ½ÅÈ£¿¡ ¹ÝÀÀÇÕ´Ï´Ù. WinLIRC Ŭ¶óÀ̾ðÆ® ½ºÅ©¸³Æ®¸¦ »ç¿ëÇϽʽÿÀ.

+

Ư¼ö Å°

+

Å°º¸µå³ª ¸¶¿ì½º¿¡ À§¿¡ ³ª¿­µÈ Å°°¡ ¾ø´õ¶óµµ, ÇÖÅ°·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ´Ü°è¸¦ µû¸£½Ê½Ã¿À:

+
    +
  1. Àû¾îµµ ÇϳªÀÇ ½ºÅ©¸³Æ®´Â Å°º¸µå °¥°í¸®¸¦ »ç¿ëÇÏ¿© ½ÇÇà ÁßÀÓÀ» È®ÀÎÇÕ´Ï´Ù. ½ºÅ©¸³Æ®¿¡ Å°º¸µå °¥°í¸®°¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö È®ÀÎÇÏ·Á¸é ¸ÞÀΠâÀ» ¿­°í ¸Þ´º¹Ù¿¡¼­ "View->Key history"¸¦ ¼±ÅÃÇØ º¸¸é µË´Ï´Ù.
  2. +
  3. ½ºÅ©¸³Æ®ÀÇ Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» ´õºíŬ¸¯ÇÏ¿© ¸ÞÀΠâÀ» ¿±´Ï´Ù.
  4. +
  5. Å°º¸µå¿¡¼­ "¹Ì½ºÅ׸® Å°"Áß Çϳª¸¦ ´©¸¨´Ï´Ù.
  6. +
  7. ¸Þ´º Ç׸ñ "View->Key history"¸¦ ¼±ÅÃÇÕ´Ï´Ù.
  8. +
  9. ÆäÀÌÁö ¾Æ·¡·Î °¨¾Æ ³»¸³´Ï´Ù. ¾Æ·¡ ¾îµò°¡¿¡ ´©¸¥ Å°¿¡ ´ëÇÑ Å°-´©¸§ ±×¸®°í Å°-¶À À̺¥Æ®°¡ ÀÖÀ» °Ì´Ï´Ù. ÁÖÀÇ: ¾î¶² Å°´Â À̺¥Æ®¸¦ ¹ß»ý½ÃÅ°Áö ¾Ê½À´Ï´Ù ±×¸®ÇÏ¿© ¿©±â¿¡¼­ º¸ÀÌÁö ¾Ê½À´Ï´Ù. ÀÌ·² °æ¿ì¶ó¸é Á÷Á¢ÀûÀ¸·Î ±× ƯÁ¤ÇÑ Å°¸¦ ÇÖÅ°·Î ¸¸µé ¼ö ¾ø½À´Ï´Ù. ¿Ö³ÄÇϸé Å°º¸µå µå¶óÀ̹ö³ª Çϵå¿þ¾î°¡ ³Ê¹« ¾Æ·¡ ·¹º§¿¡¼­ ó¸®ÇÏ°í À־ ¿ÀÅäÇÖÅ°°¡ Á¢±ÙÇÒ ¼ö ¾ø±â ¶§¹®ÀÔ´Ï´Ù. °¡´ÉÇÑ ÇØ°áÃ¥Àº, ´õ ¾Æ·¡¸¦ º¸½Ê½Ã¿À.
  10. +
  11. Å°¸¦ ŽÁöÇÒ ¼ö ÀÖÀ¸¸é, ¸®½ºÆ®ÀÇ µÎ ¹ø° Ä÷³¿¡ ¼¼ ÀÚ¸® ½ÊÀ°Áø °ªÀ» Àû½À´Ï´Ù (¿¹, 159).
  12. +
  13. ÀÌ Å°¸¦ ÇÖÅ°·Î Á¤ÀÇÇÏ·Á¸é, ´ÙÀ½ ¿¹¸¦ µû¸£½Ê½Ã¿À: +
    SC159:: ; 159¸¦ Å° °ªÀ¸·Î ±³Ã¼ÇϽʽÿÀ.
    +MsgBox, %A_ThisHotKey% was pressed.
    +return
  14. +
+

¿ª ¹æÇâ: ´Ù¸¥ Å°¸¦ "¹ÌÁöÀÇ Å°"°¡ µÇµµ·Ï ¸®¸ÊÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:

+
; 159¸¦ À§¿¡¼­ ¹ß°ßÇÑ °ª°ú ±³Ã¼ÇÕ´Ï´Ù. (ÇÊ¿äÇϸé) FF¸¦ °¡»ó Å°·Î ±³Ã¼ÇÕ´Ï´Ù.
+; °¡»ó Å° ÄÚµå´Â Key History È­¸éÀÇ Ã¹ Ä÷³¿¡¼­ ¹ß°ßÇÒ ¼ö ÀÖ½À´Ï´Ù.
+#c::Send {vkFFsc159}
+

¶Ç´Ù¸¥ ÇØ°áÃ¥: Å°³ª ¸¶¿ì½º ¹öÆ°À» Key History È­¸é¿¡¼­ ŽÁöÇÒ ¼ö ¾øÀ¸¸é, ´ÙÀ½ Áß Çϳª¸¦ ½ÃµµÇØ º¸¸é µµ¿òÀÌ µÉ °ÍÀÔ´Ï´Ù:

+
    +
  1. +

    ¸¶¿ì½º³ª Å°º¸µå¿¡ ÇÔ²² µû¶ó¿À´Â ¼ÒÇÁÆ®¿þ¾îÀÇ È¯°æÀ» À籸¼ºÇϸé (Á¾Á¾ Á¦¾îÆÇÀ̳ª ½ÃÀÛ ¸Þ´º¸¦ ÅëÇÏ¿© Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù) "¹ÌÁöÀÇ Å°"°¡ ´Ù¸¥ Å°´­¸²À» Àü¼ÛÇϵµ·Ï ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ±×·± Å°´­¸²Àº ÀÌÁ¦ ½ºÅ©¸³Æ®¿¡¼­ ÇÖÅ°·Î Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¹ÌÁöÀÇ Å°°¡ Control+F1À» Àü¼ÛÇϵµ·Ï ±¸¼ºÇß´Ù¸é, ½ºÅ©¸³Æ®¿¡¼­ ^F1::À» »ç¿ëÇØ °£Á¢ÀûÀ¸·Î ±× Å°¸¦ ÇÖÅ°·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù.

    +
  2. +
  3. +

    DllCall: ÈÞ¸Õ ÀÎÅÍÆäÀ̽º ÀåÄ¡ Áö¿øÀ» ½ÃµµÇØ º¾´Ï´Ù. ¶Ç RawInput*¿Í °°Àº Å°¿öµå·Î Æ÷·³À» °Ë»öÇØ º¸½Ç ¼öµµ ÀÖ½À´Ï´Ù.

    +
  4. +
  5. +

    ´ÙÀ½Àº ¸¶Áö¸· ÀÇÁ¸Ã¥ÀÔ´Ï´Ù. ÀϹÝÀûÀ¸·Î Àý¸ÁÀûÀÏ °æ¿ì¿¡¸¸ ½ÃµµÇϽʽÿÀ. ¼º°øÀÇ °¡´É¼ºÀÌ ¸Å¿ì ³·°í ¿øÇÏÁö ¾Ê´Â ºÎÀÛ¿ëÀ» ¾ß±âÇØ ´Ù½Ã µ¹ÀÌų ¼ö ¾øÀ» ¼öµµ Àֱ⠶§¹®ÀÔ´Ï´Ù:
    + Å°º¸µå³ª ¸¶¿ì½º¿¡ µû¶ó¿À´Â ¼ÒÇÁÆ®¿þ¾î¸¦ Á¦°ÅÇÕ´Ï´Ù. ¶Ç´Â µå¶óÀ̹ö¸¦ º¸´Ù Ç¥ÁØÀûÀÎ µå¶óÀ̹ö ¿¹¸¦ µé¾î OS¿¡ ³»ÀåµÈ µå¶óÀ̹ö·Î ±³Ã¼ÇÕ´Ï´Ù. ¼º°øÇÑ ÇÑ´Ù¸é ¿©·¯ºÐÀÇ Àü¿ë µå¶óÀ̹ö°¡ Á¦°øÇϴ Ư¡ÀÌ ¾ø´õ¶óµµ »ì¾Æ°¥ ¼ö ÀÖ´Ù´Â È®½ÅÀ» °¡Áú ¼ö ÀÖ½À´Ï´Ù.

    +
  6. +
+ + diff --git a/src/docs/Objects.htm b/src/docs/Objects.htm new file mode 100644 index 0000000..b44c689 --- /dev/null +++ b/src/docs/Objects.htm @@ -0,0 +1,723 @@ + + +Objects + + + + + + + + +

°´Ã¼

+ +

¿ÀÅäÇÖÅ°¿¡¼­ °´Ã¼(object)´Â Ãß»ó µ¥ÀÌÅÍ À¯ÇüÀ¸·Î¼­ ¼¼ °¡Áö ±âº» ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù:

+
    +
  • GET °ªÀ» ¾ò´Â´Ù.
  • +
  • SET °ªÀ» ¼³Á¤ÇÑ´Ù.
  • +
  • CALL ¸Þ½îµå¸¦ È£ÃâÇÑ´Ù (´Ù½Ã ¸»ÇØ, ¸Þ½îµå¶õ ´ë»ó °´Ã¼¸¦ °¡Áö°í ÀÏÀ» ÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù).
  • +
+

°´Ã¼ ÂüÁ¶´Â ƯÁ¤ °´Ã¼¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ ¶Ç´Â ÇÚµé("handle")ÀÔ´Ï´Ù. ¹®ÀÚ¿­°ú ¼ýÀÚó·³, °´Ã¼ ÂüÁ¶´Â º¯¼ö¿¡ ÀúÀåÇÏ°í ÇÔ¼ö·ÎºÎÅÍ ¹ÝȯÇÏ¸ç °´Ã¼ ¾È¿¡ ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. x := y ó·³ ÂüÁ¶¸¦ ÇÑ º¯¼ö¿¡¼­ ´Ù¸¥ º¯¼ö·Î º¹»çÇÏ°í ³ª¸é, µÎ º¯¼ö ¸ðµÎ °°Àº °´Ã¼¸¦ °¡¸®Åµ´Ï´Ù.

+ +

IsObject¸¦ »ç¿ëÇÏ¸é °ªÀÌ °´Ã¼ÀÎÁö ÆǺ°ÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
Result := IsObject(expression)
+ +

°´Ã¼ÀÇ Á¾·ù´Â ´ÙÀ½°ú °°½À´Ï´Ù:

+ + +

¸ñÂ÷

+ + +

±âº» »ç¿ë¹ý

+ +

´Ü¼øÇÑ ¹è¿­

+

¹è¿­À» ¸¸µì´Ï´Ù:

+
Array := [Item1, Item2, ..., ItemN]
+Array := Array(Item1, Item2, ..., ItemN)
+

Ç׸ñÀ» ¿­¶÷ÇÕ´Ï´Ù:

+
Value := Array[Index]
+

Ç׸ñÀ» ÇÒ´çÇÕ´Ï´Ù:

+
Array[Index] := Value
+

ÁÖ¾îÁø À妽º¿¡ Ç׸ñ(µé)À» »ðÀÔÇÕ´Ï´Ù:

+
Array.InsertAt(Index, Value, Value2, ...)
+

Ç׸ñ(µé)À» Ãß°¡ÇÕ´Ï´Ù:

+
Array.Push(Value, Value2, ...)
+

Ç׸ñÀ» Á¦°ÅÇÕ´Ï´Ù:

+
RemovedValue := Array.RemoveAt(Index)
+

¸¶Áö¸· Ç׸ñÀ» Á¦°ÅÇÕ´Ï´Ù:

+
RemovedValue := Array.Pop()
+

¹è¿­ÀÌ ºñ¾î ÀÖÁö ¾ÊÀ¸¸é, MinIndex¿Í MaxIndex/Length´Â ¹è¿­¿¡¼­ ÇöÀç »ç¿ëÁßÀÎ °¡Àå ³·Àº À妽º¿Í °¡Àå ³ôÀº À妽º¸¦ µ¹·ÁÁÝ´Ï´Ù. °¡Àå ³·Àº À妽º´Â °ÅÀÇ ´ëºÎºÐ 1À̹ǷÎ, MaxIndex´Â º¸Åë Ç׸ñÀÇ °³¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. ±×·¸Áö¸¸, Á¤¼ö Å°°¡ ¾ø´Ù¸é, MaxIndex´Â ºó ¹®ÀÚ¿­À» µ¹·ÁÁÝ´Ï´Ù. ¹Ý¸é¿¡ Length´Â 0À» µ¹·ÁÁÝ´Ï´Ù. ¹è¿­ÀÇ ³»¿ëÀº À妽º ¶Ç´Â For-loop·Î ȸµ¹ÀÌÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
array := ["one", "two", "three"]
+
+; 1ºÎÅÍ ¹è¿­ÀÇ ³¡±îÁö ¹Ýº¹ÇÕ´Ï´Ù:
+Loop % array.Length()
+    MsgBox % array[A_Index]
+
+; ¹è¿­ÀÇ ³»¿ëÀ» ¿­°ÅÇÕ´Ï´Ù:
+For index, value in array
+    MsgBox % "Item " index " is '" value "'"
+
+ +

¿¬°ü ¹è¿­

+

+¿¬°ü ¹è¿­Àº À¯ÀÏÇÑ Å° Áý´Ü°ú À¯ÀÏÇÑ °ª Áý´ÜÀ» Æ÷ÇÔÇÏ´Â °´Ã¼ÀÔ´Ï´Ù. °¢ Å°´Â °¢ °ª¿¡ ¿¬°üµÇ¾î ÀÖ½À´Ï´Ù. Å°´Â ¹®ÀÚ¿­À̳ª Á¤¼ö¶Ç´Â °´Ã¼°¡ µÉ ¼ö ÀÖ´Â ¹Ý¸é, °ªÀº ¾î¶² À¯Çüµµ µÉ ¼ö ÀÖ½À´Ï´Ù. ¿¬°ü ¹è¿­À» ´ÙÀ½°ú °°ÀÌ ¸¸µé ¼ö ÀÖ½À´Ï´Ù:

+
Array := {KeyA: ValueA, KeyB: ValueB, ..., KeyZ: ValueZ}
+Array := Object("KeyA", ValueA, "KeyB", ValueB, ..., "KeyZ", ValueZ)
+

+{key:value} Ç¥±â¹ýÀ» »ç¿ëÇϸé, ¿ÀÁ÷ ´Ü¾î ¹®Àڷθ¸ ±¸¼ºµÈ Å°¿¡´Â ÀοëºÎÈ£¸¦ »ý·«Çصµ µË´Ï´Ù. ¾î¶² Ç¥Çö½Äµµ Å°·Î »ç¿ëÇÒ ¼ö´Â ÀÖÁö¸¸, º¯¼ö¸¦ Å°·Î »ç¿ëÇÏ·Á¸é, ¹Ýµå½Ã °ýÈ£·Î µÑ·¯½Î¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, {(KeyVar): Value}°ú {GetKey(): Value}´Â ¸ðµÎ À¯È¿ÇÕ´Ï´Ù.

+ +

Ç׸ñÀ» ¿­¶÷ÇÕ´Ï´Ù:

+
Value := Array[Key]
+ +

Ç׸ñÀ» ÇÒ´çÇÕ´Ï´Ù:

+
Array[Key] := Value
+ +

Ç׸ñÀ» Á¦°ÅÇÕ´Ï´Ù:

+
RemovedValue := Array.Delete(Key)
+ +

Ç׸ñÀ» ¿­°ÅÇÕ´Ï´Ù:

+ +
array := {ten: 10, twenty: 20, thirty: 30}
+For key, value in array
+    MsgBox %key% = %value%
+

+¿¬°ü ¹è¿­Àº Áß°£ Áß°£ ºñ¿ö¼­ ¸¸µé ¼ö ÀÖ½À´Ï´Ù - Áï, {1:"a",1000:"b"}´Â ¿ÀÁ÷ µÎ °³ÀÇ Å°-°ª ½Ö¸¸ µé¾î ÀÖ½À´Ï´Ù. 1000°³°¡ ¾Æ´Õ´Ï´Ù.

+

AutoHotkey v1.x¿¡¼­ ´Ü¼ø ¹è¿­°ú ¿¬°ü ¹è¿­Àº °°Àº °ÍÀÔ´Ï´Ù. ±×·¸Áö¸¸ []¸¦ ´Ü¼ø ¹è¿­·Î °£ÁÖÇÏ´Â °ÍÀÌ ±×ÀÇ ¸ñÀûÀ» ¸íÈ®ÇÏ°Ô º¸¿©ÁÖ´Â µ¥ µµ¿òÀÌ µÇ°í, ¹Ì·¡ ¹öÀüÀÇ ¿ÀÅäÇÖÅ°¿¡ ½ºÅ©¸³Æ®°¡ ÀÛµ¿ÇÒ °¡´É¼ºÀ» ³ô¿©ÁÝ´Ï´Ù. ¾ÕÀ¸·Î´Â ´Ü¼ø ¹è¿­°ú ¿¬°ü ¹è¿­ »çÀÌ¿¡ Â÷ÀÌ°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.

+ +

°´Ã¼

+

+Ư¼ºÀ» ¿­¶÷ÇÕ´Ï´Ù:

+ +
Value := Object.Property
+

+Ư¼ºÀ» ¼³Á¤ÇÕ´Ï´Ù:

+ +
Object.Property := Value
+

+¸Þ½îµå¸¦ È£ÃâÇÕ´Ï´Ù:

+ +
ReturnValue := Object.Method(Parameters)
+

+°è»êÇÑ ¸Þ½îµå À̸§À¸·Î ¸Þ½îµå¸¦ È£ÃâÇÕ´Ï´Ù:

+ +
ReturnValue := Object[MethodName](Parameters)
+

+COM °´Ã¼ÀÇ Æ¯¼º°ú »ç¿ëÀÚ-Á¤ÀÇ °´Ã¼´Â ¸Å°³º¯¼ö¸¦ ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù:

+ +
Value := Object.Property[Parameters]
+Object.Property[Parameters] := Value
+

+°ü·Ã Ç׸ñ: Object, File Object, Func Object, COM object

+ +

¾Ë·ÁÁø ÇÑ°è:

+
    +
  • ÇöÀç x.y[z]()´Â x["y", z]()À¸·Î °£ÁֵǴµ¥, ÀÌ´Â Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. Àӽà ÇØ°áÃ¥À¸·Î, (x.y)[z]()´Â ¸ÕÀú x.y¸¦ Æò°¡ÇÑ ´ÙÀ½, ±× °á°ú¸¦ ¸Þ½îµå È£ÃâÀÇ ¸ñÇ¥·Î »ç¿ëÇÕ´Ï´Ù. x.y[z].Call()¿¡´Â ÀÌ ÇÑ°è°¡ ¾ø´Ù´Â °ÍÀ» ÁÖ¸ñÇϽʽÿÀ. ¿Ö³ÄÇϸé (x.y[z]).Call()°ú ¶È°°ÀÌ Æò°¡µÇ±â ¶§¹®ÀÔ´Ï´Ù.
+ +

°´Ã¼ Ç®¾îÁÖ±â

+

+½ºÅ©¸³Æ®´Â ¸í½ÃÀûÀ¸·Î °´Ã¼¸¦ Ç®¾îÁÖÁö ¾Ê½À´Ï´Ù. °´Ã¼¸¦ °¡¸®Å°´Â ¸¶Áö¸· ÂüÁ¶°¡ »ç¶óÁö¸é, ±× °´Ã¼´Â ÀÚµ¿À¸·Î ÇØÁ¦µË´Ï´Ù. º¯¼ö¿¡ ÀúÀåµÈ ÂüÁ¶´Â ±× º¯¼ö°¡ ´Ù¸¥ °ª¿¡ ÇÒ´çµÇ¸é ÀÚµ¿À¸·Î ÇØÁ¦µË´Ï´Ù. ¿¹¸¦ µé¾î:

+
obj := {}  ; °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù.
+obj := ""  ; ¸¶Áö¸· ÂüÁ¶¸¦ ÇØÁ¦ÇÕ´Ï´Ù. ±×·¯¹Ç·Î °´Ã¼°¡ ÇعæµË´Ï´Ù.
+

+ºñ½ÁÇÏ°Ô, ¶Ç´Ù¸¥ °´Ã¼ÀÇ Çʵ忡 ÀúÀåµÈ ÂüÁ¶Á¡Àº ±× Çʵ尡 ¶Ç´Ù¸¥ °ª¿¡ ÇÒ´çµÇ°Å³ª ±× °´Ã¼·ÎºÎÅÍ Á¦°ÅµÉ ¶§ ÀÚµ¿À¸·Î Ç®¾îÁý´Ï´Ù. ÀÌ°ÍÀº ¹è¿­¿¡µµ Àû¿ëµË´Ï´Ù. ¹è¿­Àº ½ÇÁ¦·Î °´Ã¼ÀÔ´Ï´Ù.

+
arr := [{}]  ; °´Ã¼¸¦ ´ã°í ÀÖ´Â ¹è¿­À» »ý¼ºÇÕ´Ï´Ù.
+arr[1] := {}  ; µÎ ¹ø° °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù. ¹¬½ÃÀûÀ¸·Î ù °´Ã¼¸¦ Ç®¾îÁÖ°í ÀÖ½À´Ï´Ù.
+arr.Remove(1)  ; µÎ ¹ø° °´Ã¼¸¦ Á¦°ÅÇÏ°í Ç®¾îÁÝ´Ï´Ù.
+

ÇÑ °´Ã¼¸¦ °¡¸®Å°´Â ¸ðµç ÂüÁ¶°¡ ÇØÁ¦µÇ¾î¾ß ºñ·Î¼­ ±× °´Ã¼°¡ ÇعæµÉ ¼ö ÀÖ½À´Ï´Ù. ±×·¡¼­ ¼øȯ ÂüÁ¶°¡ ÀÖ´Â °´Ã¼´Â ÀÚµ¿À¸·Î Ç®¾îÁöÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¸é, x.child°¡ y¸¦ °¡¸®Å°°í y.parent°¡ x¸¦ °¡¸®Å²´Ù¸é, x¿Í y¸¦ ¼Ò°ÅÇÏ´Â °Í¸¸À¸·Î´Â ÃæºÐÇÏÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ºÎ¸ð °´Ã¼¿¡ ¿©ÀüÈ÷ ÀÚ¼ÕÀ» °¡¸®Å°´Â ÂüÁ¶°¡ µé¾îÀÖ°í ±× ¹Ý´ëµµ ¸¶Âù°¡ÁöÀ̱⠶§¹®ÀÔ´Ï´Ù. ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é, ¼øȯ ÂüÁ¶¸¦ Á¦°ÅÇØ¾ß ÇÕ´Ï´Ù.

+
+x := {}, y := {}             ; °´Ã¼¸¦ µÎ °³ »ý¼ºÇÕ´Ï´Ù.
+x.child := y, y.parent := x  ; ¼øȯ ÂüÁ¶¸¦ »ý¼ºÇÕ´Ï´Ù.
+
+y.parent := ""               ; ¼øȯ ÂüÁ¶¸¦ ¸ÕÀú Á¦°ÅÇØ¾ß °´Ã¼°¡ ÇعæµÉ ¼ö ÀÖ½À´Ï´Ù.
+x := "", y := ""             ; À§ÀÇ ÁÙÀÌ ¾ø´Ù¸é, ÀÌ Áٷδ °´Ã¼¸¦ Ç®¾îÁÙ ¼ö ¾ø½À´Ï´Ù.
+
+

´õ ÀÚ¼¼ÇÑ ³»¿ë°ú °í±Þ »ç¿ë¹ýÀº ÂüÁ¶ Ƚ¼ö ¼¼±â¸¦ º¸½Ê½Ã¿À.

+ +

³íÆò

+ +

±¸¹®

+

¸ðµç À¯ÇüÀÇ °´Ã¼´Â ¹è¿­ ±¸¹®(°¢°ýÈ£)°ú °´Ã¼ ±¸¹® (Á¡)À» Áö¿øÇÕ´Ï´Ù.

+

°Ô´Ù°¡, °´Ã¼ ÂüÁ¶´Â Ç¥Çö½Ä¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
    +
  • °´Ã¼ ÂüÁ¶¸¦ = == != <>ÁßÀÇ Çϳª¸¦ »ç¿ëÇÏ¿© ´Ù¸¥ °ª°ú ºñ±³ÇÒ ¶§, µÎ °ª ¸ðµÎ °°Àº °´Ã¼¸¦ °¡¸®Å°´Â ÂüÁ¶Á¡ÀÏ °æ¿ì¿¡¸¸ °°´Ù°í °£Áֵ˴ϴÙ.
  • +
  • if obj, !obj ¶Ç´Â obj ? x : y¿¡¼­¿Í °°ÀÌ ºÒ¸®¾ð °ªÀÌ ¿ä±¸µÉ ¶§, °´Ã¼´Â ¾ðÁ¦³ª Âü(true)À¸·Î °£Áֵ˴ϴÙ.
  • +
  • °´Ã¼ÀÇ ÁÖ¼Ò´Â & ÁÖ¼Ò ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. »ý¼º ½ÃÁ¡ºÎÅÍ ¸¶Áö¸· ÂüÁ¶°¡ ÇØÁ¦µÉ ¶§±îÁö ±× °´Ã¼¸¦ À¯ÀÏÇÏ°Ô ½Äº°ÇÕ´Ï´Ù.
  • +
+

°´Ã¼°¡ ¿¹»óÄ¡ ¸øÇÑ ¹®¸Æ¿¡¼­ »ç¿ëÁßÀ̸é, ±× °´Ã¼´Â ºó ¹®ÀÚ¿­·Î Ãë±ÞµË´Ï´Ù. ¿¹¸¦ µé¾î, MsgBox %object% ´Â ºó MsgBox¸¦ º¸¿©ÁÖ°í object + 1´Â ºó ¹®ÀÚ¿­À» »êÃâÇÕ´Ï´Ù. ÀÌ ÇàÀ§´Â ¹Ù²ð ¼ö ÀÖÀ¸¹Ç·Î ¿©±â¿¡ ÀÇÁ¸ÇÏ¸é ¾ÈµË´Ï´Ù.

+

¸Þ½îµå-È£Ãâ ´ÙÀ½¿¡ °ð¹Ù·Î ÇÒ´ç ¿¬»êÀÚ°¡ ¿À¸é, ¸Å°³º¯¼ö·Î Ư¼ºÀ» ÇÒ´çÇÏ´Â °Í°ú µ¿µîÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½Àº ¼­·Î µ¿µîÇÕ´Ï´Ù:

+
obj.item(x) := y
+obj.item[x] := y
+

x.y += 1¿Í --arr[1]°°Àº º¹ÇÕ ¼­¼ú¹®À» Áö¿øÇÕ´Ï´Ù.

+

[v1.1.20+]: Ư¼ºÀ» ¼³Á¤Çϰųª ȹµæÇÒ ¶§ ¸Å°³º¯¼ö¸¦ »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, x[,2]. ½ºÅ©¸³Æ®´Â À̸¦ ÀÌ¿ëÇÏ¿© Ư¼º°ú ¸ÞŸ-ÇÔ¼öÀÇ ¸Å°³º¯¼ö¿¡ ±âº» °ªµéÀ» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. +¸Þ½îµå À̸§µµ x[](a)ó·³ ¿ÏÀüÈ÷ »ý·« °¡´ÉÇÕ´Ï´Ù. ½ºÅ©¸³Æ®´Â À̸¦ ÀÌ¿ëÇÏ¿© __Call ¸ÞŸ-ÇÔ¼öÀÇ ¸Å°³º¯¼ö¿¡ ±âº» °ªÀ» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ±×·¸Áö ¾ÊÀ¸¸é °ªÀÌ Á¦°øµÇÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. + +ÀÌ°ÍÀº x.(a)¿Í ´Ù¸£¸ç, x[""](a)°ú µ¿µîÇÑ °Í¿¡ ÁÖ¸ñÇϽʽÿÀ. COM °´Ã¼¸¦ È£ÃâÇÒ ¶§ Ư¼ºÀ̳ª ¸Þ½îµå À̸§ÀÌ »ý·«µÇ¸é, ±×ÀÇ "±âº» ¸â¹ö"°¡ È£ÃâµË´Ï´Ù.

+ +

Å°

+

+[], {} ¶Ç´Â new ¿¬»êÀÚ·Î »ý¼ºµÈ °´Ã¼¿¡ ¾î´À °ªÀ» »ç¿ëÇÒ ¼ö ÀÖ´ÂÁö´Â ¾à°£ Á¦ÇÑÀÌ ÀÖ½À´Ï´Ù :

+
    +
  • Á¤¼ö Å°´Â °íÀ¯ÀÇ ºÎÈ£ÀÖ´Â Á¤¼ö À¯ÇüÀ¸·Î ÀúÀåµË´Ï´Ù. ¿ÀÅäÇÖÅ° 32-ºñÆ® ¹öÀüÀº -2147483648 ºÎÅÍ 2147483647±îÁö ¹üÀ§ÀÇ Á¤¼öÅ°¸¦ Áö¿øÇÕ´Ï´Ù. ¿ÀÅäÇÖÅ°´Â 64-ºñÆ® Á¤¼ö¸¦ Áö¿øÇÕ´Ï´Ù. ±×·¯³ª ¿ÀÁ÷ ¿ÀÅäÇÖÅ° 64-ºñÆ® ¹öÀü¸¸ °´Ã¼¿¡ ¿ÏÀüÇÑ ¹üÀ§ÀÇ Á¤¼ö¸¦ Å°·Î Áö¿øÇÕ´Ï´Ù.
  • +
  • À§¿¡ ¾ð±ÞÇÑ °á°ú·Î, Á¤¼ö °ªÀÇ ¹®ÀÚ¿­ Çü½ÄÀº À¯ÁöµÇÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, x[0x10], x[16] ±×¸®°í x[00016]´Â µ¿µîÇÕ´Ï´Ù. ÀÌ°ÍÀº ¶Ç ½ÊÁø ¼Ò¼öÁ¡ÀÌ ¾ø´Â ¼ýÄ¡ ¹®ÀÚ¿­¿¡µµ Àû¿ëµË´Ï´Ù.
  • +
  • ÀοëºÎÈ£ ºÙÀº ±âÈ£ ¹®ÀÚ¿­Àº v1.x¿¡¼­ ¼ø¼öÇÏ°Ô ºñ-¼ýÀÚ·Î °£Áֵ˴ϴÙ. ±×·¡¼­ x[1]°úx["1"]´Â µ¿µîÇÏÁö ¾Ê½À´Ï´Ù. °Ô´Ù°¡, ÀοëºÎÈ£ ºÙÀº ±âÈ£ ¹®ÀÚ¿­Àº ( "0x" x¿¡¼­ ó·³) ¶Ç´Ù¸¥ °ª°ú °áÇÕÇÕ´Ï´Ù. ±× °á°ú´Â ¼ø¼öÇÏ°Ô ºñ-¼ýÀÚ·Î Ãë±ÞµË´Ï´Ù. ±×·¸Áö¸¸, ÀÌ°ÍÀº º¯¼ö¿¡ Àû¿ëµÇÁö ¾Ê½À´Ï´Ù. ±×·¡¼­ x[1]¿Í x[y:="1"]´Â µ¿µîÇÕ´Ï´Ù. ÀÌ ¹®Á¦´Â v2¿¡¼­ ÇØ°áµÉ °ÍÀÔ´Ï´Ù. ±×·¡¼­ ½ºÅ©¸³Æ®´Â ÀοëºÎÈ£ ºÙÀº ¼ýÄ¡ ±âÈ£¸¦ Å°·Î »ç¿ëÇÏ´Â °ÍÀ» ÇÇÇØ¾ß ÇÕ´Ï´Ù.
  • +
  • ºÎµ¿ ¼Ò¼öÁ¡¼ö´Â Å°·Î Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. - ´ë½Å¿¡ ¹®ÀÚ¿­·Î º¯È¯µË´Ï´Ù. v1.x¿¡¼­, ºÎµ¿ ¼Ò¼öÁ¡ ±âÈ£´Â ¿ø·¡ÀÇ Çü½ÄÀ» À¯ÁöÇÏ´Â ¹Ý¸é¿¡ (0+1.0³ª Sqrt(y)ÀÇ °á°ú °°ÀÌ) ¼ø¼öÇÑ ºÎµ¿ ¼Ò¼öÁ¡ ¼ö´Â °­Á¦·Î ÇöÀçÀÇ ºÎµ¿ ¼Ò¼öÁ¡ ¼ö Çü½ÄÀ¸·Î º¯È¯µË´Ï´Ù. ÀÏ°ü¼º°ú ¸í·áÇÔÀ» À§ÇÏ¿©, ½ºÅ©¸³Æ®´Â ºÎµ¿ ¼Ò¼öÁ¡ ±âÈ£¸¦ Å°·Î »ç¿ëÇÏÁö ¸»¾Æ¾ß ÇÕ´Ï´Ù.
  • +
  • ¹®ÀÚ¿­ Å°·Î¼­ "base"´Â Insert¿¡ »ç¿ëµÉ ¶§¸¦ Á¦¿ÜÇÏ°í Ưº°ÇÑ Àǹ̰¡ ÀÖ½À´Ï´Ù.
  • +
+ +

È®Àå »ç¿ë¹ý

+

ÇÔ¼ö ÂüÁ¶ [v1.1.00+]

+

+º¯¼ö func¿¡ ÇÔ¼ö À̸§ÀÌ µé¾î ÀÖ´Ù¸é, ±× ÇÔ¼ö´Â µÎ °¡Áö ¹æ¹ýÀ¸·Î È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù: %func%() ¶Ç´Â func.(). ±×·¸Áö¸¸, ÀÌ·¸°Ô ÇÏ·Á¸é ¸Å¹ø ÇÔ¼ö À̸§À» °áÁ¤ÇØ¾ß Çϴµ¥, ÇÔ¼ö°¡ ¿©·¯¹ø È£ÃâµÈ´Ù¸é È¿À²ÀûÀÌÁö ¸øÇÕ´Ï´Ù. ¼öÇ༺´ÉÀ» °³¼±Çϱâ À§ÇØ, ½ºÅ©¸³Æ®´Â ÇÔ¼ö¿¡ ´ëÇÑ ÂüÁ¶¸¦ ¿­¶÷ÇØ ±×°ÍÀ» ÀúÀåÇØ ³ªÁß¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
Func := Func("MyFunc")
+

ÇÔ¼ö´Â ´ÙÀ½°ú °°Àº ±¸¹®À» »ç¿ëÇÏ¿© ÂüÁ¶·Î È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
+RetVal := %Func%(Params)     ; v1.1.07+À» ¿ä±¸ÇÕ´Ï´Ù
+RetVal := Func.Call(Params)  ; v1.1.19+À» ¿ä±¸ÇÕ´Ï´Ù
+RetVal := Func.(Params)      ; ±ÇÀåÇÏÁö ¾Ê½À´Ï´Ù
+
+

ÇÔ¼ö ÂüÁ¶ÀÇ Ãß°¡ Ư¼ºµé¿¡ °üÇÑ Á¤º¸´Â Func Object¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

¹è¿­ÀÇ ¹è¿­

+

¿ÀÅäÇÖÅ°´Â "´Ù-Â÷¿ø" ¹è¿­À» Áö¿øÇÕ´Ï´Ù. ´Ù¸¥ ¹è¿­ ¾È¿¡ ¹è¿­À» Åõ¸íÇÏ°Ô ÀúÀåÇÏ¸é µË´Ï´Ù. ¿¹¸¦ µé¾î, Å×À̺íÀº ÇàÀÇ ¹è¿­·Î Ç¥ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹Ý¸é¿¡ °¢ Çà ÀÚü´Â ¿­ÀÇ ¹è¿­ÀÔ´Ï´Ù. ±× °æ¿ì, xÇà y¿­ÀÇ ³»¿ëÀº ¾Æ·¡ÀÇ ¹æ¹ýÁß Çϳª¸¦ »ç¿ëÇÏ¿© ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
table[x][y] := content  ; A
+table[x, y] := content  ; B
+

+table[x]°¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, A¿Í B´Â µÎ °¡Áö Á¡¿¡¼­ ´Ù¸¨´Ï´Ù:

+
    +
  • A´Â ½ÇÆÐÇÏ´Â ¹Ý¸é B´Â ÀÚµ¿À¸·Î °´Ã¼¸¦ ¸¸µé¾î ±×°ÍÀ» table[x] ¾È¿¡ ÀúÀåÇÕ´Ï´Ù.
  • +
  • tableÀÇ base´Â ¸ÞŸ-ÇÔ¼ö¸¦ Á¤ÀÇÇÕ´Ï´Ù. ´ÙÀ½°ú °°ÀÌ È£ÃâÇÕ´Ï´Ù: +
    table.base.__Get(table, x)[y] := content   ; A
    +table.base.__Set(table, x, y, content)     ; B
    + + °á°úÀûÀ¸·Î, B´Â °´Ã¼°¡ ÀüüÀûÀÎ ÇÒ´ç¿¡ ´ëÇÏ¿© ¸ÂÃã ÇàÀ§¸¦ Á¤ÀÇÇϵµ·Ï Çã¿ëÇÕ´Ï´Ù.
  • +
+

table[a, b, c, d] := value¿Í °°Àº ´Ù-Â÷¿ø ÇÒ´çÀº ´ÙÀ½°ú °°ÀÌ Ã³¸®µË´Ï´Ù:

+
    +
  • ¿ÀÁ÷ ÇϳªÀÇ Å°¸¸ ³²¾Æ ÀÖ´Ù¸é, ÇÒ´çÀ» ¼öÇàÇÏ°í ¹ÝȯµÈ´Ù. ±×·¸Áö ¾ÊÀ¸¸é:
  • +
  • °´Ã¼¿¡¼­ ¸ñ·Ï¿¡ Àִ ù ¹ø° Å°¸¦ ã´Â´Ù.
  • +
  • ºñ-°´Ã¼°¡ ¹ß°ßµÇ¸é, ½ÇÆÐÇÑ´Ù.
  • +
  • °´Ã¼°¡ ¹ß°ßµÇÁö ¾ÊÀ¸¸é, Çϳª¸¦ ¸¸µé¾î ÀúÀåÇÑ´Ù.
  • +
  • Àç±ÍÀûÀ¸·Î ÇÏÀ§-°´Ã¼¸¦ ¿äûÇϸ鼭, ³²¾Æ ÀÖ´Â Å°¿Í °ªÀ» °Ç³Ù´Ù. - À§¿¡¼­ ¾Æ·¡·Î ¹Ýº¹ÇÑ´Ù.
  • +
+

´ÙÀ½ ÇàÀ§´Â ¿ÀÁ÷ ½ºÅ©¸³Æ®·Î-¸¸µç °´Ã¼¿¡¸¸ Àû¿ëµË´Ï´Ù. Á» ´õ Àü¹®È­µÈ À¯ÇüÀÇ °´Ã¼, COM °´Ã¼³ª COM ¹è¿­Àº Àû¿ëµÇÁö ¾Ê½À´Ï´Ù.

+ +

ÇÔ¼ö ¹è¿­

+

ÇÔ¼ö ¹è¿­Àº ´Ü¼øÈ÷ ÇÔ¼ö À̸§À̳ª ÂüÁ¶¸¦ ´ã°í ÀÖ´Â ¹è¿­ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î:

+
array := [Func("FirstFunc"), Func("SecondFunc")]
+
+; °¢ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù, "foo"¸¦ ¸Å°³º¯¼ö·Î °Ç³Ù´Ù:
+Loop 2
+    array[A_Index].("foo")
+
+; °¢ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ¹¬½ÃÀûÀ¸·Î ¹è¿­ ÀÚü¸¦ ¸Å°³º¯¼ö·Î °Ç³Ù´Ù:
+Loop 2
+    array[A_Index]()
+
+FirstFunc(param) {
+    MsgBox % A_ThisFunc ": " (IsObject(param) ? "object" : param)
+}
+SecondFunc(param) {
+    MsgBox % A_ThisFunc ": " (IsObject(param) ? "object" : param)
+}
+

ÇÏÀ§-ȣȯÀ» À§ÇØ, array[A_Index]¿¡ ÇÔ¼ö ÂüÁ¶°¡ ¾Æ´Ï¶ó ÇÔ¼ö À̸§ÀÌ µé¾î ÀÖ´Ù¸é, µÎ ¹ø° ÇüÅ´ ¹è¿­(array)À» ¸Å°³º¯¼ö·Î °Ç³×Áö ¾Ê½À´Ï´Ù. ±×·¸Áö¸¸, array[A_Index]°¡ array.base[A_Index]À¸·ÎºÎÅÍ »ó¼ÓµÇ¾ú´Ù¸é, ¹è¿­(array)ÀÌ ¸Å°³º¯¼ö·Î °Ç³×Áý´Ï´Ù.

+ +

¸ÂÃã °´Ã¼

+

½ºÅ©¸³Æ®·Î ¸¸µç °´Ã¼´Â ¹Ì¸® Á¤ÀÇµÈ ±¸Á¶¸¦ °¡Áú ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ´ë½Å¿¡, °¢ °´Ã¼´Â Ư¼º°ú ¸Þ½îµå¸¦ ±×ÀÇ base °´Ã¼·ÎºÎÅÍ »ó¼Ó¹Þ¾Æ¾ß ÇÕ´Ï´Ù (±×·¸Áö ¾ÊÀ¸¸é "ÇÁ·ÎÅäŸÀÔ" ¶Ç´Â "class"¶ó°í ¾Ë·ÁÁø). Ư¼º°ú ¸Þ½îµå´Â ¾ðÁ¦µçÁö °´Ã¼¿¡ Ãß°¡ÇÒ ¼öµµ (Á¦°ÅÇÒ ¼öµµ) ÀÖ½À´Ï´Ù. ÀÌ·± º¯°æÀº À̷κÎÅÍ ÆÄ»ýµÈ ¸ðµç °´Ã¼¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù. º¸´Ù º¹ÀâÇÏ°í ÀüÈ­µÈ »óȲÀ» À§ÇØ, º£À̽º °´Ã¼´Â ÀÚ½ÅÀ» »ó¼Ó¹ÞÀº °´Ã¼µéÀÇ Ç¥ÁØ ÇàÀ§¸¦ ¿À¹ö¶óÀ̵å ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸ÞŸ-ÇÔ¼ö¸¦ Á¤ÀÇÇØ ¿À¹ö¶óÀ̵å ÇÕ´Ï´Ù.

+

Base °´Ã¼´Â ±×³É Æò¹üÇÑ °´Ã¼À̸ç, ÀüÇüÀûÀ¸·Î µÎ °¡Áö ¹æ½ÄÀ¸·Î »ý¼ºµË´Ï´Ù:

+
class baseObject {
+    static foo := "bar"
+}
+; ¶Ç´Â
+baseObject := {foo: "bar"}
+

+°´Ã¼¸¦ ¶Ç´Ù¸¥ °´Ã¼·ÎºÎÅÍ ÆÄ»ý½ÃÄÑ »ý¼ºÇϱâ À§ÇØ, ½ºÅ©¸³Æ®´Â base Ư¼º¿¡ ÇÒ´çÇϰųª new Å°¿öµå¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
obj1 := Object(), obj1.base := baseObject
+obj2 := {base: baseObject}
+obj3 := new baseObject
+MsgBox % obj1.foo " " obj2.foo " " obj3.foo
+

+¾ðÁ¦µçÁö ÇÑ °´Ã¼ÀÇ base¸¦ ÀçÇÒ´çÇÒ ¼ö ÀÖ½À´Ï´Ù. °´Ã¼°¡ »ó¼Ó¹ÞÀº ¸ðµç Ư¼º°ú ¸Þ½îµå¸¦ È¿°úÀûÀ¸·Î ±³Ã¼ÇÕ´Ï´Ù.

+ +

ÇÁ·ÎÅäŸÀÔ

+

+ÇÁ·ÎÅäŸÀÔ ¶Ç´Â base °´Ã¼´Â ´Ù¸¥ °´Ã¼¿Í ¸¶Âù°¡Áö·Î ±¸¼ºÇÏ°í Á¶ÀÛÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, Ư¼º Çϳª¿Í ¸Þ½îµå Çϳª¸¦ °¡Áø Æò¹üÇÑ °´Ã¼´Â ´ÙÀ½°ú °°ÀÌ ±¸¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
; °´Ã¼¸¦ »ý¼ºÇÑ´Ù.
+thing := {}
+; Store a value.
+thing.foo := "bar"
+; ÇÔ¼ö ÂüÁ¶¸¦ ÀúÀåÇÔÀ¸·Î½á ¸Þ½îµå¸¦ »ý¼ºÇÑ´Ù.
+thing.test := Func("thing_test")
+; ¸Þ½îµå¸¦ È£ÃâÇÑ´Ù.
+thing.test()
+
+thing_test(this) {
+   MsgBox % this.foo
+}
+

+thing.test()°¡ È£ÃâµÇ¸é, thing´Â ÀÚµ¿À¸·Î ¸Å°³º¯¼ö ¸®½ºÆ®ÀÇ Ã¹¹ø°·Î »ðÀԵ˴ϴÙ. ±×·¸Áö¸¸, ÇÏÀ§ ȣȯÀ» À§ÇØ, ÀÌ·± ÀÏÀº ÇÔ¼ö°¡ (ÂüÁ¶°¡ ¾Æ´Ï¶ó) À̸§À¸·Î (º£À̽º °´Ã¼·ÎºÎÅÍ »ó¼Ó¹Þ´Â °ÍÀÌ ¾Æ´Ï¶ó) Á÷Á¢ÀûÀ¸·Î °´Ã¼¿¡ ÀúÀåµÉ °æ¿ì¿¡¸¸ ÀϾ´Ï´Ù. °ü·ÊÀûÀ¸·Î ÇÔ¼ö´Â °´Ã¼ÀÇ À¯Çü°ú ¸Þ½îµåÀÇ À̸§À» °áÇÕÇØ Áþ½À´Ï´Ù.

+

+°´Ã¼´Â ¶Ç´Ù¸¥ °´Ã¼°¡ ±×·ÎºÎÅÍ ÆÄ»ýÇØ ³ª°¡¸é ÇÁ·ÎÅäŸÀÔ(prototype) ¶Ç´Â º£À̽º(base)°¡ µË´Ï´Ù:

+
other := {}
+other.base := thing
+other.test()
+

+ÀÌ °æ¿ì, other´Â foo¸¦ »ó¼Ó¹Þ°í test´Â thingÀ¸·ÎºÎÅÍ »ó¼ÓÀ» ¹Þ½À´Ï´Ù. ÀÌ·± »ó¼Ó °ü°è´Â ¿ªµ¿ÀûÀÔ´Ï´Ù. ±×·¡¼­ thing.foo°¡ º¯°æµÇ¸é, ±× º¯°æÀÌ other.foo¿¡ ¹Ý¿µµË´Ï´Ù. ½ºÅ©¸³Æ®°¡ other.foo¿¡ ÇÒ´çÇϸé, ±× °ªÀº other¿¡ ÀúÀåµË´Ï´Ù. thing.foo¿¡ º¯°æÀ» ´õ °¡ÇÏ´õ¶óµµ other.foo¿¡´Â ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù. other.test()°¡ È£ÃâµÇ¸é, ±×ÀÇ this ¸Å°³º¯¼ö¿¡´Â thingÀÌ ¾Æ´Ï¶ó other¸¦ °¡¸®Å°´Â ÂüÁ¶°¡ µé¾î°©´Ï´Ù. +

+ +

Ŭ·¡½º [v1.1.00+]

+

+¾î¿øÀ¸·Î ¸»ÇÏÀÚ¸é "Ŭ·¡½º"¶õ °øÅëÀÇ Æ¯¼ºÀ̳ª ¼Ó¼ºÀ» °¡Áö°í ÀÖ´Â °ÍµéÀÇ ÇÑ ¹üÁÖ ¶Ç´Â ÁýÇÕÀÔ´Ï´Ù. base °´Ã¼³ª prototype °´Ã¼´Â °´Ã¼ ÁýÇÕ¿¡ ´ëÇÏ¿© Ư¼º°ú ÇàÀ§¸¦ Á¤ÀÇÇϱ⠶§¹®¿¡, Ŭ·¡½º(class) °´Ã¼¶ó°í ºÎ¸¦ ¼öµµ ÀÖ½À´Ï´Ù. ÆíÀǸ¦ À§ÇØ, º£À̽º °´Ã¼´Â ¾Æ·¡¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ "class" Å°¿öµå¸¦ »ç¿ëÇÏ¿© Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù:

+ +
class ClassName extends BaseClassName
+{
+    InstanceVar := Expression
+    static ClassVar := Expression
+
+    class NestedClass
+    {
+        ...
+    }
+
+    Method()
+    {
+        ...
+    }
+
+    Property[]  ; °¢°ýÈ£´Â ¼±ÅÃÀûÀÌ´Ù
+    {
+        get {
+            return ...
+        }
+        set {
+            return ... := value
+        }
+    }
+}
+
+

½ºÅ©¸³Æ®°¡ ÀûÀçµÉ ¶§, ÀÌ ÄÚµå´Â °´Ã¼¸¦ Çϳª ±¸¼ºÇÏ°í ±×°ÍÀ» Àü¿ª º¯¼ö (¶Ç´Â v1.1.05+À̶ó¸é ¼öÆÛ-Àü¿ª º¯¼ö) ClassName¿¡ ÀúÀåÇÕ´Ï´Ù. v1.1.05 ÀÌÀüÀ̶ó¸é, ÀÌ Å¬·¡½º¸¦ ÇÔ¼ö ¾È¿¡¼­ ÂüÁ¶ÇÏ·Á¸é, ±× ÇÔ¼ö°¡ assume-globalÀÌ ¾Æ´Ñ ÇÑ, global ClassName¿Í °°Àº ¼±¾ðÀÌ ÇÊ¿äÇÕ´Ï´Ù. extends BaseClassName°¡ ÀÖÀ¸¸é, BaseClassNameÀº ¹Ýµå½Ã ¶Ç´Ù¸¥ Ŭ·¡½ºÀÇ ¿ÏÀüÇÑ À̸§À̾î¾ß ÇÕ´Ï´Ù (±×·¯³ª v1.1.11¿¡¼­´Â Á¤ÀÇµÈ ¼ø¼­´Â ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù). °¢ Ŭ·¡½ºÀÇ ¿ÏÀüÇÑ À̸§ÀÌ object.__Class¿¡ ÀúÀåµË´Ï´Ù.

+

+ÀÌ ¹®¼­ ¾È¿¡¼­ Ŭ·¡½º("class")¶ó´Â ´Ü¾î´Â ±× ÀÚü·Î º¸Åë class Å°¿öµå·Î ±¸¼ºµÈ Ŭ·¡½º °´Ã¼¸¦ ÀǹÌÇÕ´Ï´Ù.

+

Ŭ·¡½º Á¤ÀÇ´Â º¯¼ö ¼±¾ð, ¸Þ½îµå Á¤ÀÇ, ³»Æ÷ Ŭ·¡½º Á¤ÀǸ¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

½Çü º¯¼ö [v1.1.01+]

+

+½Çü º¯¼ö´Â Ŭ·¡½ºÀÇ °¢ ½Çü°¡ ÀڽŸ¸ÀÇ Å¬·¡½º »çº»À» °¡Áø °ÍÀÔ´Ï´Ù. º¸ÅëÀÇ ÇÒ´çó·³ ¼±¾ðµÇÁö¸¸, this. Á¢µÎ»ç°¡ »ý·«µÇ¾î ÀÖ½À´Ï´Ù (Ŭ·¡½º ¸öü ¾È¿¡¼­ Á÷Á¢ÀûÀ¸·Î »ç¿ëµÉ °æ¿ì¿¡¸¸ »ý·«ÇÕ´Ï´Ù):

+
InstanceVar := Expression
+

+ÀÌ·± ¼±¾ðÀº Ŭ·§ÀÇ »õ ½Çü°¡ new Å°¿öµå·Î »ý¼ºµÉ ¶§¸¶´Ù ¸Å¹ø Æò°¡µË´Ï´Ù. ¸Þ½îµå À̸§ __InitÀº ÀÌ·± ¸ñÀûÀ» À§ÇØ ¿¹¾àµÇ¾î ÀÖÀ¸¸ç, ´Ù¸¥ ½ºÅ©¸³Æ®¿¡¼­ »ç¿ëÇÏ¸é ¾ÈµË´Ï´Ù. __New() ¸Þ½îµå´Â º£À̽º Ŭ·¡½º¿¡ Á¤ÀÇµÈ ¼±¾ðÀ» Æ÷ÇÔÇÏ¿© ±× ¸ðµç ¼±¾ðÀÌ Æò°¡µÈ ÈÄ¿¡ È£ÃâµË´Ï´Ù. Ç¥Çö½ÄÀº ´Ù¸¥ ½Çü º¯¼ö¿Í ¸Þ¼Òµå¿¡ this¸¦ ÅëÇÏ¿© Á¢±ÙÇÒ ¼ö ÀÖÁö¸¸, ¸ðµç ´Ù¸¥ º¯¼ö ÂüÁ¶´Â Àü¿ªÀûÀ̶ó°í °£Áֵ˴ϴÙ.

+

+½Çü º¯¼ö¿¡ Á¢±ÙÇÏ·Á¸é (¸Þ½îµå ¾È¿¡¼­µµ ¸¶Âù°¡Áö·Î), ¾ðÁ¦³ª ¸ñÇ¥ °´Ã¼¸¦ ÁöÁ¤ÇÕ´Ï´Ù; ¿¹¸¦ µé¾î, this.InstanceVar.

+

[v1.1.08+]: ÀÌ Å¬·¡½º¿¡ x°¡ ¹Ì¸® ¼±¾ðµÇ¾î ÀÖ´Ù¸é x.y := z¿Í °°Àº ¼±¾ðµµ Áö¿øµË´Ï´Ù. ¿¹¸¦ µé¾î, x := {}, x.y := 42´Â x¸¦ ¼±¾ðÇÏ°í ¶Ç this.x.y¸¦ ÃʱâÈ­ÇÕ´Ï´Ù.

+ +

Á¤Àû/Ŭ·¡½º º¯¼ö [v1.1.00.01+]

+

+Á¤Àû/Ŭ·¡½º º¯¼ö´Â Ŭ·¡½º ÀÚü¿¡ ¼ÓÇÏÁö¸¸, (ÇÏÀ§-Ŭ·¡½º¸¦ Æ÷ÇÔÇÏ¿©) ÆÄ»ý °´Ã¼°¡ »ó¼Ó¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. ½Çü º¯¼öó·³ ¼±¾ðµÇÁö¸¸, static Å°¿öµå¸¦ »ç¿ëÇÕ´Ï´Ù:

+
static ClassVar := Expression
+

+Á¤Àû ¼±¾ðÀº ¿ÀÁ÷ ÀÚµ¿-½ÇÇà ¼½¼Ç Àü¿¡ ÇÑ ¹ø¸¸ Æò°¡µË´Ï´Ù. ±×¸®°í ¼ø¼­´ë·Î ½ºÅ©¸³Æ®¿¡ ³ªÅ¸³³´Ï´Ù. °¢ ¼±¾ðÀº °ªÀ» object Ŭ·¡½º¿¡ ÀúÀåÇÕ´Ï´Ù. Ç¥Çö½Ä ¾ÈÀÇ ¸ðµç º¯¼ö ÂüÁ¶´Â Àü¿ªÀûÀ̶ó°í °£Áֵ˴ϴÙ.

+

+Ŭ·¡½º º¯¼ö¿¡ Á¢±ÙÇÏ·Á¸é, ¾ðÁ¦³ª Ŭ·¡½º³ª ÆÄ»ý °´Ã¼¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ClassName.ClassVar.

+

[v1.1.08+]: ÀÌ Å¬·¡½º¿¡ x°¡ ¹Ì¸® Á¤ÀǵǾî ÀÖ´Ù¸é static x.y := z¿Í °°Àº Ç¥Çöµµ Áö¿øÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, static x := {}, x.y := 42´Â x¸¦ ¼±¾ðÇÏ°í ¶Ç ClassName.x.y¸¦ ÃʱâÈ­ÇÕ´Ï´Ù.

+ +

³»Æ÷ Ŭ·¡½º

+

³»Æ÷ Ŭ·¡½º Á¤ÀǴ Ŭ·¡½º °´Ã¼¸¦ ¶Ç´Ù¸¥ Àü¿ª º¯¼ö°¡ ¾Æ´Ï¶ó ¶Ç´Ù¸¥ Ŭ·¡½º °´Ã¼ ¾È¿¡ ÀúÀåµÇµµ·Ï Çã¿ëÇÕ´Ï´Ù. À§ÀÇ ¿¹Á¦¿¡¼­, class NestedClass´Â °´Ã¼¸¦ ±¸¼ºÇÏ°í ±×°ÍÀ» ClassName.NestedClass¿¡ ÀúÀåÇÕ´Ï´Ù. ÇÏÀ§-Ŭ·¡½º´Â NestedClass¸¦ »ó¼Ó¹Þ°Å³ª ÀÚ½ÅÀÇ ³»Æ÷ Ŭ·¡½º·Î ±×°ÍÀ» ¿À¹ö¶óÀ̵åÇÒ ¼ö ÀÖ½À´Ï´Ù (ÀÌ °æ¿ì new this.NestedClass¸¦ »ç¿ëÇÏ¿© ÀûÀýÇÑ Å¬·¡½º¸¦ ½ÇüȭÇÒ ¼ö ÀÖ½À´Ï´Ù).

+
+class NestedClass
+{
+    ...
+}
+
+ +

¸Þ½îµå

+

¸Þ½îµå Á¤ÀÇ´Â ÇÔ¼ö Á¤ÀÇ¿Í ¸ð½ÀÀÌ ¶È °°½À´Ï´Ù. °¢ ¸Þ½îµå´Â ¼ûÀº ¸Å°³º¯¼ö·Î this°¡ Àִµ¥, ÀÌ°ÍÀº ÀüÇüÀûÀ¸·Î Ŭ·¡½º·ÎºÎÅÍ »ó¼Ó¹ÞÀº °´Ã¼¸¦ °¡¸®Å°´Â ÂüÁ¶Á¡À» ´ã°í ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ¸Þ½îµå°¡ ¾î¶»°Ô È£ÃâµÇ´Â °¡¿¡ µû¶ó Ŭ·¡½º ÀÚü³ª »ó¼Ó¹ÞÀº Ŭ·¡½º¸¦ °¡¸®Å°´Â ÂüÁ¶Á¡À» ´ãÀ» ¼öµµ ÀÖ½À´Ï´Ù. ¸Þ½îµå´Â ÀÌ Å¬·¡½º °´Ã¼¿¡ ÂüÁ¶·Î ÀúÀåµË´Ï´Ù.

+
+Method()
+{
+    ...
+}
+
+ +

¸Þ½îµå ¾È¿¡¼­, ÀÇ»ç-Å°¿öµå base¸¦ »ç¿ëÇϸé, ÆÄ»ý Ŭ·¡½º ¾È¿¡ ¿À¹ö¶óÀ̵åµÈ ¼öÆÛ-Ŭ·¡½ºÀÇ ¸Þ½îµå³ª Ư¼º¿¡ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. +¿¹¸¦ µé¾î, À§¿¡ Á¤ÀÇµÈ Å¬·¡½º¿¡¼­ base.Method()´Â BaseClassName¿¡ Á¤ÀÇµÈ Method ¹öÀüÀ» È£ÃâÇÕ´Ï´Ù. ¸ÞŸ-ÇÔ¼ö´Â È£ÃâµÇÁö ¾Ê½À´Ï´Ù; +±×·¸Áö ¾ÊÀ¸¸é, base.Method()´Â ¸¶Ä¡ BaseClassName.Method.(this)ó·³ ÇàÀ§ÇÕ´Ï´Ù. ´Ù½Ã ¸»ÇØ,

+
    +
  • base.Method()´Â ¾ðÁ¦³ª ÇöÀç ¸Þ¼Òµå°¡ Á¤ÀǵǾî Àִ Ŭ·¡½ºÀÇ º£À̽º¸¦ ¿äûÇÕ´Ï´Ù. this°¡ ÀüÀûÀ¸·Î ±× Ŭ·¡½º ¶Ç´Â ´Ù¸¥ Ŭ·¡½ºÀÇ sub-class·ÎºÎÅÍ ÆÄ»ýµÇ¾úÀ»Áö¶óµµ ¸»ÀÔ´Ï´Ù.
  • +
  • base.Method()´Â ¹¬½ÃÀûÀ¸·Î this¸¦ ù (¼ûÀº) ¸Å°³º¯¼ö·Î °Ç³Ü´Ï´Ù.
  • +
+

+base´Â ´ÙÀ½¿¡ Á¡. ¶Ç´Â °¢°ýÈ£ []°¡ µû¶ó¿À¸é Ưº°ÇÑ Àǹ̸¦ °¡Áý´Ï´Ù. ±×·¡¼­ obj := base, obj.Method()¿Í °°Àº ÄÚµå´Â ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù. ½ºÅ©¸³Æ®´Â baseÀÇ Æ¯º°ÇÑ ÇàÀ§¸¦ ºÒ´ÉÀ¸·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù. °Å±â¿¡´Ù ºñ¾îÀÖÁö-¾ÊÀº °ªÀ» ÇÒ´çÇÏ¸é µË´Ï´Ù; ±×·¸Áö¸¸, ÀÌ°ÍÀº ±ÇÀåÇÏÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇÏ¸é º¯¼ö base´Â ²À ºñ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù. ½ºÅ©¸³Æ®°¡ #NoEnv¸¦ »©¸ÔÀ¸¸é ¼öÇ༺´ÉÀÌ ÀúÇ쵃 ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.

+ +

Properties [v1.1.16+]

+

+Ư¼º Á¤ÀÇ´Â ½ºÅ©¸³Æ®°¡ ƯÁ¤ÇÑ Å°¸¦ ¼³Á¤Çϰųª ¿­¶÷ÇÒ ¶§¸¶´Ù ¸Þ½îµå¸¦ ½ÇÇàÇϵµ·Ï Çã¿ëÇÕ´Ï´Ù.

+
Property[]
+{
+    get {
+        return ...
+    }
+    set {
+        return ... := value
+    }
+}
+

+Property´Â ±×³É È£ÃâÇÏ´Â µ¥ »ç¿ëµÇ´Â Ư¼ºÀÇ À̸§ÀÏ »ÓÀÔ´Ï´Ù. ¿¹¸¦ µé¸é, obj.Property´Â getÀ» È£ÃâÇÏ´Â ¹Ý¸é¿¡ obj.Property := value´Â setÀ» È£ÃâÇÕ´Ï´Ù. getÀ̳ª set ¾È¿¡¼­, this´Â ¿äû ÁßÀÎ °´Ã¼¸¦ °¡¸®Åµ´Ï´Ù. set ¾È¿¡¼­, value¿¡´Â ÇÒ´çµÈ °ªÀÌ ´ã±é´Ï´Ù.

+

+¸Å°³º¯¼ö´Â Ư¼º À̸§ÀÇ ¿À¸¥ÂÊ¿¡ °¢°ýÈ£·Î µÑ·¯½Î °Ç³Ú ¼ö ÀÖ½À´Ï´Ù. Ư¼ºÀ» Á¤ÀÇÇÒ ¶§¿Í È£ÃâÇÒ ¶§ ¸ðµÎ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. °¢°ýÈ£¸¦ »ç¿ëÇÏ´Â ¿Ü¿¡µµ, Ư¼ºÀÇ ¸Å°³º¯¼ö´Â ¸Þ½îµåÀÇ ¸Å°³º¯¼ö¿Í °°Àº ¹æ½ÄÀ¸·Î Á¤Àǵ˴ϴ٠- ¼±ÅÃÀû, ByRef ±×¸®°í °¡º¯ ¸Å°³º¯¼ö¸¦ Áö¿øÇÕ´Ï´Ù.

+

+getÀ̳ª setÀÇ ¹Ýȯ°ªÀº ÇØ´ç Ư¼ºÀ» ¿äûÇÑ ÇÏÀ§-Ç¥Çö½ÄÀÇ °á°ú°¡ µË´Ï´Ù. ¿¹¸¦ µé¾î, val := obj.Property := 42´Â setÀÇ ¹Ýȯ °ªÀ» val¿¡ ÀúÀåÇÕ´Ï´Ù.

+

+°¢ Ŭ·¡½º´Â Ư¼ºÀÇ Àý¹Ý¸¸ ¶Ç´Â µÑ ´Ù ¿ÂÀüÇÏ°Ô Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù (Ư¼º=¼Ó¼º). Ŭ·¡½º°¡ Ư¼ºÀ» ¿À¹ö¶óÀ̵å Çϸé base.Property¸¦ »ç¿ëÇÏ¿© ÀÚ½ÅÀÇ ±âº» Ŭ·¡½º¿¡ Á¤ÀÇµÈ Æ¯¼º¿¡ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. getÀ̳ª setÀÌ Á¤ÀǵǾî ÀÖÁö ¾ÊÀ¸¸é, ±âº» Ŭ·¡½º°¡ ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. setÀÌ Á¤ÀǵǾî ÀÖÁö ¾Ê°í ¸ÞŸ-ÇÔ¼ö³ª ±âº» Ŭ·¡½º¿¡ ÀÇÇÏ¿© 󸮵ÇÁö ¾ÊÀº °æ¿ì, °ªÀ» °´Ã¼¿¡ ÀúÀåÇÏ¸é ±× Æ¯¼ºÀÌ ºÒ´ÉÀÌ µÇ´Â È¿°ú°¡ ÀÖ½À´Ï´Ù.

+

+³»ºÎÀûÀ¸·Î, get°ú setÀº µÎ °³ÀÇ ´Ù¸¥ ¸Þ½îµåÀÔ´Ï´Ù. ±×·¡¼­ º¯¼ö¸¦ °øÀ¯ÇÒ ¼ö ¾ø½À´Ï´Ù (this¿¡ ÀúÀåÇÑ º¯¼ö´Â °¡´ÉÇÕ´Ï´Ù).

+

¸ÞŸ-ÇÔ¼ö´Â °´Ã¼ÀÇ ¸Þ½îµå¿Í Ư¼º¿¡ Á¢±ÙÀ» º¸´Ù ³Ð°Ô Á¦¾îÇÕ´Ï´Ù. ±×·¯³ª ´õ º¹ÀâÇÏ°í ¿¡·¯¸¦ ÀÏÀ¸Å°´Â °æÇâÀÌ ´õ ³ô½À´Ï´Ù.

+ +

±¸¼º°ú Æı«

+

+ÆÄ»ý °´Ã¼°¡ new Å°¿öµå·Î »ý¼ºµÉ ¶§¸¶´Ù [requires v1.1.00+], ±×ÀÇ ±â¹Ý Ŭ·¡½º¿¡ Á¤ÀÇµÈ __New ¸Þ½îµå°¡ È£ÃâµË´Ï´Ù. ÀÌ ¸Þ½îµå´Â ¸Å°³º¯¼ö¸¦ ¹Þ¾Æ, ±× °´Ã¼¸¦ ÃʱâÈ­ÇÏ°í new ¿¬»êÀÚÀÇ °á°ú¸¦ °ªÀ» µ¹·ÁÁÜÀ¸·Î½á ¿À¹ö¶óÀ̵åÇÒ ¼ö ÀÖ½À´Ï´Ù. + +°´Ã¼°¡ Æı«µÉ ¶§, __Delete°¡ È£ÃâµË´Ï´Ù. ¿¹¸¦ µé¾î:

+
m1 := new GMem(0, 20)
+m2 := {base: GMem}.__New(0, 30)
+
+class GMem
+{
+    __New(aFlags, aSize)
+    {
+        this.ptr := DllCall("GlobalAlloc", "uint", aFlags, "ptr", aSize, "ptr")
+        if !this.ptr
+            return ""
+        MsgBox % "New GMem of " aSize " bytes at address " this.ptr "."
+        return this  ; 'new' ¿¬»êÀÚ¸¦ »ç¿ëÇϸé ÀÌ ÁÙÀº »ý·«ÇÒ ¼ö ÀÖ´Ù.
+    }
+
+    __Delete()
+    {
+        MsgBox % "Delete GMem at address " this.ptr "."
+        DllCall("GlobalFree", "ptr", this.ptr)
+    }
+}
+

__Delete´Â "__Class"¸¦ Å°·Î °¡Áö´Â °´Ã¼¿¡ È£ÃâµÇÁö ¾Ê½À´Ï´Ù. Ŭ·¡½º °´Ã¼°¡ ÀÌ Å°¸¦ ±âº»°ªÀ¸·Î °¡Áý´Ï´Ù.

+ +

¸ÞŸ-ÇÔ¼ö

+
+¸Þ½îµå ±¸¹®:
+class ClassName {
+    __Get([Key, Key2, ...])
+    __Set([Key, Key2, ...], Value)
+    __Call(Name [, Params...])
+}
+
+ÇÔ¼ö ±¸¹®:
+MyGet(this [, Key, Key2, ...])
+MySet(this [, Key, Key2, ...], Value)
+MyCall(this, Name [, Params...])
+
+ClassName := { __Get: Func("MyGet"), __Set: Func("MySet"), __Call: Func("MyCall") }
+
+

+¸ÞŸ-ÇÔ¼ö´Â ¸ñÇ¥ °´Ã¼ ¾È¿¡ Å°¸¦ ¿äûÇßÁö¸¸ ¾È¿¡¼­ ¹ß°ßÇÒ ¼ö ¾øÀ» ¶§ ÀϾ ÇàÀ§¸¦ Á¤ÀÇÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, obj.key¿¡ °ªÀÌ ÇÒ´çµÇÁö ¾Ê¾Ò´Ù¸é, __Get ¸ÞŸ-ÇÔ¼ö¸¦ ¿äûÇÕ´Ï´Ù. ºñ½ÁÇÏ°Ô, obj.key := value´Â __Set¸¦ ¿äûÇÏ°í obj.key()´Â __Call¸¦ È£ÃâÇÕ´Ï´Ù. ÀÌ ¸ÞŸ-ÇÔ¼öµé (¶Ç´Â ¸Þ½îµåµé)Àº obj.base, obj.base.base µîµî¿¡ Á¤ÀÇÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.

+

+½ºÅ©¸³Æ®°¡ ¸ñÇ¥ °´Ã¼ ¾È¿¡ Á¸ÀçÇÏÁö ¾Ê´Â Å°¸¦ ¿­¶÷Çϰųª ¼³Á¤Çϰųª ¶Ç´Â È£ÃâÇϸé, º£À̽º °´Ã¼°¡ ´ÙÀ½°ú °°ÀÌ ¿äûµË´Ï´Ù:

+
    +
  • ÀÌ º£À̽º °´Ã¼°¡ ÀûÀýÇÑ ¸ÞŸ-ÇÔ¼ö¸¦ Á¤ÀÇÇÏ°í ÀÖÀ¸¸é ±×°ÍÀ» È£ÃâÇÕ´Ï´Ù. ¸ÞŸ-ÇÔ¼ö°¡ ¸í½ÃÀûÀ¸·Î ¹Ýȯ(return)µÇ¸é, (±× ¸ÞŸ-ÇÔ¼ö°¡ ¹«¾ù ¶§¹®¿¡ È£ÃâµÇ¾ú´ÂÁö¿Í »ó°ü¾øÀÌ) ±× ¹Ýȯ °ªÀ» ¿¬»êÀÇ °á°ú·Î »ç¿ëÇÕ´Ï´Ù ±×¸®°í ½ºÅ©¸³Æ®¿¡ Á¦¾î¸¦ ¹ÝȯÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ¾Æ·¡¿¡ ±â¼úµÈ ´ë·Î °è¼Ó ÁøÇàÇÕ´Ï´Ù. +

    + Set: ¸ÞŸ-ÇÔ¼ö°¡ ÇÒ´çÀ» ó¸®Çϸé, ±× ÇÒ´ç °ªÀ» ¹ÝȯÇØ¾ß ÇÕ´Ï´Ù. ÀÌ·¸°Ô Çϸé a.x := b.y := z¿Í °°ÀÌ ÇÒ´çÀ» ¿¬¼âÀûÀ¸·Î ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹Ýȯ °ªÀº zÀÇ ¿ø·¡ °ª°ú ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù (¿¹¸¦ µé¾î, ¾î´À °ªÀ» ÇÒ´çÇÒ ¼ö ÀÖ´ÂÁö Á¦ÇÑÀÌ ºÎ°úµÈ °æ¿ì).

  • +
  • º£À̽º °´Ã¼ÀÇ Çʵ忡¼­ ÀÏÄ¡ÇÏ´Â Å°¸¦ ã½À´Ï´Ù.
  • +
  • [v1.1.16+]: Ư¼º¿¡ »óÀÀÇÏ´Â Å°°¡ ¹ß°ßµÇ°í °Å±â¿¡ getÀ̳ª setÀÌ (ÀûÀýÇÏ°Ô) ±¸ÇöµÇ¾î ÀÖ´Ù¸é, ±× Ư¼ºÀ» ¿äûÇÏ°í ¹ÝȯÇÕ´Ï´Ù. ÀÌ°ÍÀÌ ¸Þ½îµå È£ÃâÀ̸é, getÀ» ¿äûÇÕ´Ï´Ù.
  • +
  • ¾Æ¹« Å°µµ ¹ß°ßµÇÁö ¾ÊÀ¸¸é, Àç±ÍÀûÀ¸·Î ÀÌ º£À̽º °´Ã¼ÀÇ º£À̽º¸¦ ¿äûÇÕ´Ï´Ù + (ÀÌ ¸®½ºÆ®ÀÇ »ó´Ü¿¡¼­ ½ÃÀÛÇØ, Â÷·Ê·Î °¢ ´Ü°è¸¶´Ù Àû¿ëÇÕ´Ï´Ù). + + ¾ÆÁ÷ ¿Ï·áÇÏÁö ¸øÇß´Ù¸é, Å°°¡ ¸ÞŸ-ÇÔ¼ö¿¡ ÀÇÇÏ¿© Ãß°¡µÈ °æ¿ì ÀÌ ¹ÙÅÁ °´Ã¼¸¦ °Ë»öÇØ ´Ù½Ã ºÎÇÕÇÏ´Â Å°¸¦ ã½À´Ï´Ù. +

    + ÇÏÀ§ ȣȯÀÇ ¹®Á¦ ¶§¹®¿¡, ÀÌ ´Ü°è´Â Å°°¡ ¹ß°ß µÇ¾úÀ»Áö¶óµµ set ¿¬»ê¿¡ ´ëÇؼ­¸¸ ¼öÇàµË´Ï´Ù + (´Ü, setÀ» ±¸ÇöÇÑ Æ¯¼ºÀ» Á¤ÀÇÇß´Ù¸é ¿¹¿ÜÀÔ´Ï´Ù).

  • +
  • ¿©·¯ ¸Å°³º¯¼ö°¡ getÀ̳ª set¿¡ ÁÖ¾îÁö°í Å°°¡ ¹ß°ßµÇ¸é, ±×ÀÇ °ªÀ» Á¡°ËÇÕ´Ï´Ù. ±× °ªÀÌ °´Ã¼À̸é, ±×°ÍÀ» ¿äûÇÏ¿© ³ª¸ÓÁö ¸Å°³º¯¼öµéÀ» ó¸®ÇÕ´Ï´Ù. ±×¸®°í ´õ ÀÌ»ó ÁøÇàÇÏÁö ¾Ê½À´Ï´Ù.
  • +
  • Å°°¡ ¹ß°ßµÇ¸é,
    + Get: ±× °ªÀ» µ¹·ÁÁÝ´Ï´Ù.
    + Call: ±× °ªÀÌ ÇÔ¼ö À̸§À̰ųª ÂüÁ¶À̸é, ±×°ÍÀ» È£ÃâÇÕ´Ï´Ù. ´ë»ó °´Ã¼¸¦ ù ¸Å°³º¯¼ö·Î °Ç³Ü´Ï´Ù (this).

  • +
+

+ÀÏÄ¡ÇÏ´Â Å°¸¦ ¸ÞŸ-ÇÔ¼ö°¡ °´Ã¼¿¡ ÀúÀåÇÏÁö¸¸ ¹Ýȯ(return)ÇÏÁö ¾ÊÀ¸¸é, ±× ÇàÀ§´Â ¸¶Ä¡ Å°°¡ óÀ½ºÎÅÍ ±× °´Ã¼¿¡ Á¸ÀçÇÑ °Í°ú °°½À´Ï´Ù. __SetÀ» »ç¿ëÇÏ´Â ¿¹Á¦´Â ¹è¿­ÀÇ ¹è¿­ ¼­ºê-Ŭ·¡½ÌÇϱ⸦ ÂüÁ¶ÇϽʽÿÀ.

+

¿¬»êÀÌ ¿©ÀüÈ÷ 󸮵ÇÁö ¾Ê¾Ò´Ù¸é, ÀÌ°ÍÀÌ ³»Àå ÇÔ¼öÀÎÁö ¾Æ´Ï¸é ³»Àå Ư¼ºÀÎÁö Á¡°ËÇϽʽÿÀ:

+
    +
  • Get: ±âÄ« "base"À̸é, ±× °´Ã¼ÀÇ base¸¦ µ¹·ÁÁÝ´Ï´Ù.
  • +
  • Set: Å°°¡ "base"À̸é, ±× °´Ã¼ÀÇ base¸¦ ¼³Á¤ÇÕ´Ï´Ù (¶Ç´Â ±× °ªÀÌ °´Ã¼°¡ ¾Æ´Ï¸é Á¦°ÅÇÕ´Ï´Ù).
  • +
  • Call: Àû¿ëÇÒ ¼ö ÀÖÀ¸¸é ³»Àå ¸Þ½îµå¸¦ È£ÃâÇÕ´Ï´Ù.
  • +
+

¿©ÀüÈ÷ ¿¬»êÀÌ Ã³¸®µÇÁö ¾Ê¾Ò´Ù¸é,

+
    +
  • Get ±×¸®°í Call: ºó ¹®ÀÚ¿­À» µ¹·ÁÁÝ´Ï´Ù.
  • +
  • Set: ÇÑ °³ÀÇ Å° ¸Å°³º¯¼ö¸¸ ÁÖ¾îÁ³´Ù¸é, ±× Å°¿Í °ªÀ» ¸ñÇ¥ °´Ã¼¿¡ ÀúÀåÇÏ°í ÇÒ´çµÈ °ªÀ» µ¹·ÁÁÝ´Ï´Ù. ¿©·¯ ¸Å°³º¯¼ö°¡ ÁÖ¾îÁö¸é, »õ °´Ã¼¸¦ ¸¸µé°í °Å±â¿¡ ù ¹ø° ¸Å°³º¯¼ö¸¦ Å°·Î »ç¿ëÇÏ¿© ÀúÀåÇÕ´Ï´Ù. ±× ´ÙÀ½, ±× »õ °´Ã¼¸¦ ¿äûÇØ ³ª¸ÓÁö ¸Å°³º¯¼ö¸¦ ó¸®ÇÕ´Ï´Ù. (¹è¿­ÀÇ ¹è¿­ ÂüÁ¶.)
  • + +
+ +

¾Ë·ÁÁø ÇÑ°è:

+
  • ¹Ýȯ°ª ¾øÀÌ returnÀ» »ç¿ëÇϸé return ""°ú µ¿µîÇÕ´Ï´Ù. ÀÌ ÇàÀ§´Â ¹Ì·¡ ¹öÀü¿¡¼­´Â ¹Ù²ð ¼ö ÀÖ½À´Ï´Ù. ±âº» ÇàÀ§¸¦ ¿À¹ö¶óÀ̵ùÇÏÁö ¾Ê°í, ¸ÞŸ-ÇÔ¼ö·ÎºÎÅÍ "ÇǽÅ"Çϱâ À§ÇÏ¿© returnÀ» »ç¿ëÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.
+ +

µ¿Àû Ư¼º

+

+__Get°ú __Set¸¦ »ç¿ëÇÏ¿© °ªµéÀ» ƯÁ¤ ¹æ½ÄÀ¸·Î °è»êÇϰųª Á¦ÇÑÇÒ ¼ö Àִ Ư¼ºÀ» ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, R, G, B ±×¸®°í RGB Ư¼ºÀ» °¡Áö°í "Color" °´Ã¼¸¦ ±¸Çö ÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿©±â¿¡¼­ ¿ÀÁ÷ RGB °ª¸¸ ½ÇÁ¦·Î ÀúÀåµË´Ï´Ù:

+
red  := new Color(0xff0000), red.R -= 5
+cyan := new Color(0x00ffff)
+
+MsgBox % "red: " red.R "," red.G "," red.B " = " red.RGB
+MsgBox % "cyan: " cyan.R "," cyan.G "," cyan.B " = " cyan.RGB
+
+class Color
+{
+    __New(aRGB)
+    {
+        this.RGB := aRGB
+    }
+
+    __Get(aName)
+    {
+        if (aName = "R")
+            return (this.RGB >> 16) & 255
+        if (aName = "G")
+            return (this.RGB >> 8) & 255
+        if (aName = "B")
+            return this.RGB & 255
+    }
+
+    __Set(aName, aValue)
+    {
+        if aName in R,G,B
+        {
+            aValue &= 255
+
+            if      (aName = "R")
+                this.RGB := (aValue << 16) | (this.RGB & ~0xff0000)
+            else if (aName = "G")
+                this.RGB := (aValue << 8)  | (this.RGB & ~0x00ff00)
+            else  ; (aName = "B")
+                this.RGB :=  aValue        | (this.RGB & ~0x0000ff)
+
+            ; 'Return'À» »ç¿ëÇÏ¿© »õ Å°-°ª ½ÖÀÌ ¸¸µé¾îÁöÁö ¾Ê¾ÒÀ½À» ¾Ë·Á¾ß ÇÕ´Ï´Ù.
+            ; ¶ÇÇÑ 'x := clr[name] := val'¿¡¼­ ¹«¾ùÀ» 'x'¿¡ ÀúÀåÇÒÁö Á¤ÀÇÇÕ´Ï´Ù:
+            return aValue
+        }
+    }
+}
+ +

ÇÔ¼ö·Î¼­ÀÇ °´Ã¼

+

+obj.func(param)¿Í °°ÀÌ È£ÃâÇϸé, obj.func´Â ÇÔ¼ö À̸§À̳ª °´Ã¼¸¦ ´ãÀ» ¼ö ÀÖ½À´Ï´Ù. obj.func¿¡ °´Ã¼°¡ µé¾î ÀÖ´Ù¸é, ±× °´Ã¼´Â ±× ¸Þ½îµå À̸§ ´ë½Å¿¡ (obj.func)[obj]()ó·³ obj·Î ¿äûÇÒ ¼ö ÀÖ½À´Ï´Ù. + +´ëºÎºÐÀÇ °æ¿ì obj.func[obj]´Â Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ´ë½Å¿¡ obj.func's __Call ¸ÞŸ-ÇÔ¼ö°¡ ¿äûµË´Ï´Ù. À̸¦ ÀÌ¿ëÇÏ¸é ¾Æ·¡ ¿¹Á¦¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ ÇÔ¼ö È£ÃâÀÇ ÇàÀ§¸¦ Ãß»óÀûÀÎ ¹æ½ÄÀ¸·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù:

+ +
; ÇÔ¼ö ¹è¿­À» À§ÇÑ ÇÁ·ÎÅäŸÀÔÀ» »ý¼ºÇÑ´Ù.
+FuncArrayType := {__Call: "FuncType_Call"}
+; ÇÔ¼ö ¹è¿­À» »ý¼ºÇÑ´Ù.
+funcArray := {1: "One", 2: "Two", base: FuncArrayType}
+; ¹è¿­À» ¸Þ½îµå·Î »ç¿ëÇÏ´Â °´Ã¼¸¦ »ý¼ºÇÑ´Ù.
+obj := {func: funcArray}
+; ¸Þ½îµå¸¦ È£ÃâÇÑ´Ù.
+obj.func("foo", "bar")
+
+FuncType_Call(func, obj, params*)
+{
+    ; ÇÔ¼ö ¸®½ºÆ®¸¦ È£ÃâÇÑ´Ù.
+    Loop % ObjMaxIndex(func)
+        func[A_Index](params*)
+}
+
+One(param1, param2) {
+    ListVars
+    Pause
+}
+Two(param1, param2) {
+    ListVars
+    Pause
+}
+

+ÀÌ Å×Å©´ÐÀ» »ç¿ëÇÏ¸é ¸ÞŸ-ÇÔ¼öó·³ ÇàÀ§ÇÏ´Â °´Ã¼¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ÀÌÀü ¼½¼Ç¿¡¼­ ´Ù·é Ư¼º°ú ºñ½ÁÇÏ°Ô µ¿Àû Ư¼ºµéÀ» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. +(±×·¸Áö¸¸, ÀÌ ¿¹Á¦´Â Ư¼º Áö¿øÀ¸·Î ´ëüµÇ¾úÀ½À» ÁÖÀÇÇϽʽÿÀ.) ¿¹¸¦ µé¾î:

+
blue := new Color(0x0000ff)
+MsgBox % blue.R "," blue.G "," blue.B
+
+class Properties
+{
+    __Call(aTarget, aName, aParams*)
+    {
+        ; ÀÌ Æ¯¼º °´Ã¼¿¡ ÀÌ Àý¹Ý-Ư¼º¿¡ ´ëÇÑ Á¤ÀÇ°¡ µé¾î ÀÖ´Ù¸é, ±×°ÍÀ» È£ÃâÇÕ´Ï´Ù. 
+        ; this.HasKey(aName)¸¦ »ç¿ëÇÏÁö ¾Êµµ·Ï ÁÖÀÇÇÕ´Ï´Ù. ÀÌ°ÍÀ» »ç¿ëÇϸé __Call ¾ÈÀ¸·Î Àç±Í°¡ ÀϾ´Ï´Ù.
+        if IsObject(aTarget) && ObjHasKey(this, aName)
+            return this[aName].(aTarget, aParams*)
+    }
+}
+
+class Color
+{
+    __New(aRGB)
+    {
+        this.RGB := aRGB
+    }
+
+    class __Get extends Properties
+    {
+        R() {
+            return (this.RGB >> 16) & 255
+        }
+        G() {
+            return (this.RGB >> 8) & 255
+        }
+        B() {
+            return this.RGB & 255
+        }
+    }
+
+    ;...
+}
+ +

¹è¿­ÀÇ ¹è¿­À» ¼­ºê-Ŭ·¡½ÌÇϱâ

+

+ table[x, y] := content¿Í °°ÀÌ ´ÙÁß-¸Å°³º¯¼ö ÇÒ´ç ¶§¹®¿¡ ¹¬½ÃÀûÀ¸·Î »õ·Î¿î °´Ã¼°¡ »ý¼ºµÉ ¶§, ±× »õ °´Ã¼´Â º¸Åë º£À̽º°¡ ¾ø°í ±×·¯¹Ç·Î ¸ÂÃã ¸Þ½îµåµµ ¾ø°í Ưº°ÇÑ ÇàÀ§µµ ¾ø½À´Ï´Ù. __Set´Â ¾Æ·¡¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ ÀÌ·± °´Ã¼µéÀ» ÃʱâÈ­ÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+
x := {base: {addr: Func("x_Addr"), __Set: Func("x_Setter")}}
+
+; °ªÀ» ÇÒ´çÇÑ´Ù. ¹¬½ÃÀûÀ¸·Î x_Setter¸¦ »ç¿ëÇÏ¿© ÇÏÀ§-°´Ã¼¸¦ ¸¸µç´Ù.
+x[1,2,3] := "..."
+
+; °ªÀ» ¿­¶÷ÇÏ°í ¿¹Á¦ ¸Þ½îµå¸¦ È£ÃâÇÑ´Ù.
+MsgBox % x[1,2,3] "`n" x.addr() "`n" x[1].addr() "`n" x[1,2].addr()
+
+x_Setter(x, p1, p2, p3) {
+    x[p1] := new x.base
+}
+
+x_Addr(x) {
+    return &x
+}
+

+x_Setter´Â ³× °³ÀÇ Çʼö ¸Å°³º¯¼ö°¡ Àֱ⠶§¹®¿¡, µÎ °³ ÀÌ»óÀÇ Å°°¡ ÀÖÀ» °æ¿ì¿¡¸¸ È£ÃâµË´Ï´Ù. À§ÀÇ ÇÒ´çÀÌ ÀϾ ¶§, ´ÙÀ½°ú °°Àº ÀÏÀÌ ÀϾ´Ï´Ù:

+
    +
  • x[1]´Â Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ±×·¡¼­ x_Setter(x,1,2,3)°¡ È£ÃâµË´Ï´Ù ("..."´Â °Ç³×ÁöÁö ¾Ê½À´Ï´Ù. ¸Å°³º¯¼ö°¡ ÅξøÀÌ ¸ðÀÚ¶ó±â ¶§¹®ÀÔ´Ï´Ù). +
      +
    • x[1]´Â x¿Í º£À̽º°¡ °°Àº °´Ã¼°¡ »õ·Î ÇÒ´çµË´Ï´Ù.
    • +
    • ¹Ýȯ°ªÀº ¾ø½À´Ï´Ù – ÇÒ´çÀº °è¼ÓµË´Ï´Ù.
    • +
  • +
  • x[1][2]´Â Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ±×·¡¼­ x_Setter(x[1],2,3,"...")ÀÌ È£ÃâµË´Ï´Ù. +
      +
    • x[1][2]¿¡ x[1]¿Í º£À̽º°¡ °°Àº °´Ã¼°¡ »õ·Î ÇÒ´çµË´Ï´Ù.
    • +
    • ¹Ýȯ°ªÀº ¾ø½À´Ï´Ù – ÇÒ´çÀº °è¼ÓµË´Ï´Ù.
    • +
  • +
  • x[1][2][3]Àº Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ±×·¯³ª x_Setter´Â ³× °³ÀÇ ¸Å°³º¯¼ö¸¦ ¿ä±¸ÇÏ°í ¼¼ °³ ¹Û¿¡ ¾øÀ¸¹Ç·Î (x[1][2], 3, "..."), È£ÃâµÇÁö ¾Ê°í ÇÒ´çÀº ¿©´À ¶§Ã³·³ ¿Ï·áµË´Ï´Ù.
  • +
+ +

±âº» º£À̽º °´Ã¼

+

+ºñ-°´Ã¼ °ªÀÌ °´Ã¼ ±¸¹®°ú ÇÔ²² »ç¿ëµÉ ¶§, ±âº» º£À̽º °´Ã¼°¡ ¿äûµË´Ï´Ù. +ÀÌ°ÍÀº µð¹ö±ë¿¡ »ç¿ëÇϰųª ¶Ç´Â ¹®ÀÚ¿­À̳ª, ¼ýÀÚ, ±×¸®°í/¶Ç´Â º¯¼ö¿¡ ´ëÇÏ¿© °´Ã¼-·ùÀÇ ÇàÀ§¸¦ Àü¿ªÀûÀ¸·Î Á¤ÀÇÇϴµ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±âº» º£À̽º´Â ºñ-°´Ã¼ °ªÀ» °¡Áö°í .base¸¦ »ç¿ëÇÏ¿© Á¢±ÙÀÌ °¡´ÉÇÕ´Ï´Ù; ¿¹¸¦ µé¸é, "".base. + +±âº» º£À̽º´Â "".base := Object()ó·³ ¼³Á¤(set)ÇÒ ¼ö ¾øÁö¸¸, ±âº» º£À̽º´Â "".base.base := Object()ó·³ ±× ÀÚü·Î º£À̽º°¡ ÀÖ½À´Ï´Ù.

+ +

ÀÚµ¿ º¯¼ö ÃʱâÈ­

+

+set ¿¬»êÀÇ ¸ñÇ¥·Î ºó º¯¼ö°¡ »ç¿ëµÉ ¶§, Á÷Á¢ÀûÀ¸·Î __Set meta-ÇÔ¼ö¿¡ °Ç³×Áý´Ï´Ù. ±×·¡¼­ »õ °´Ã¼¸¦ º¯¼ö¿¡ »ðÀÔÇÒ ±âȸ°¡ ÀÖ½À´Ï´Ù. °£·«ÇÏ°Ô Çϱâ À§ÇØ, ´ÙÀ½ ¿¹Á¦´Â ´ÙÁß ¸Å°³º¯¼ö¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù; ¹°·Ð °¡º¯ ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é °¡´ÉÇÕ´Ï´Ù.

+
"".base.__Set := Func("Default_Set_AutomaticVarInit")
+
+empty_var.foo := "bar"
+MsgBox % empty_var.foo
+
+Default_Set_AutomaticVarInit(ByRef var, key, value)
+{
+    if (var = "")
+        var := Object(key, value)
+}
+ +

ÀÇ»ç-Ư¼º

+

+°´Ã¼ÀÇ "»çÅÁ ±¸¹®"À» ¹®ÀÚ¿­°ú ¼ýÀÚ¿¡ Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+
"".base.__Get := Func("Default_Get_PseudoProperty")
+"".base.is    := Func("Default_is")
+
+MsgBox % A_AhkPath.length " == " StrLen(A_AhkPath)
+MsgBox % A_AhkPath.length.is("integer")
+
+Default_Get_PseudoProperty(nonobj, key)
+{
+    if (key = "length")
+        return StrLen(nonobj)
+}
+
+Default_is(nonobj, type)
+{
+    if nonobj is %type%
+        return true
+    return false
+}
+

³»Àå ÇÔ¼öµµ ¿ª½Ã »ç¿ëÇÒ ¼ö ÀÖÁö¸¸, ÀÌ °æ¿ì °ýÈ£¸¦ »©¸ÔÀ¸¸é ¾ÈµË´Ï´Ù. ÁÖÀÇÇϽʽÿÀ:

+
"".base.length := Func("StrLen")
+MsgBox % A_AhkPath.length() " == " StrLen(A_AhkPath)
+ +

µð¹ö±ë

+

+°ªÀ» °´Ã¼Ã³·³ Ãë±ÞµÇµµ·Ï Çã¿ëÇÏ¸é ¹Ù¶÷Á÷ÇÏÁö ¾Ê½À´Ï´Ù. ºñ-°´Ã¼ °ªÀÌ ¿äûµÉ ¶§¸¶´Ù °æ°í »óÀÚ°¡ ³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù:

+
"".base.__Get := "".base.__Set := "".base.__Call := Func("Default__Warn")
+
+empty_var.foo := "bar"
+x := (1 + 1).is("integer")
+
+Default__Warn(nonobj, p1="", p2="", p3="", p4="")
+{
+    ListLines
+    MsgBox ºñ-°´Ã¼ °ªÀÌ ºÎÀûÀýÇÏ°Ô ¿äûµÇ¾ú½À´Ï´Ù.`n`nƯÈ÷: %nonobj%
+}
+ +

±¸Çö

+

ÂüÁ¶È½¼ö-¼¼±â

+

+¿ÀÅäÇÖÅ°´Â ±âº»ÀûÀÎ ÂüÁ¶È½¼ö-¼¼±â ¸ÅÄ¿´ÏÁòÀ» »ç¿ëÇÏ¿© ÇÑ °´Ã¼°¡ »ç¿ëÇÏ´Â ÀÚ¿øÀÌ ´õ ÀÌ»ó ÂüÁ¶µÇÁö ¾ÊÀ» ¶§ ÀÚµ¿À¸·Î ÇØÁ¦ÇÕ´Ï´Ù. ½ºÅ©¸³Æ® ÀúÀÚ´Â ÀÌ ¸ÞÄ¿´ÏÁòÀ» ¸í½ÃÀûÀ¸·Î ¿äûÇÏ¸é ¾ÈµË´Ï´Ù. ´Ü °´Ã¼¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ°¡ °ü¸®µÇÁö ¾Ê¾Æ¼­ Á÷Á¢ ó¸®ÇÒ °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ObjAddRef¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +
; °´Ã¼ÀÇ ÂüÁ¶ Ƚ¼ö¸¦ Áõ°¡½ÃÄÑ "»ì¾Æ ÀÖµµ·Ï À¯ÁöÇÑ´Ù":
+ObjAddRef(address)
+...
+; °³Ã¼ÀÇ ÂüÁ¶ Ƚ¼ö¸¦ °¨¼Ò½ÃÄÑ ÇØÁ¦µÇµµ·Ï ÇÑ´Ù:
+ObjRelease(address)
+
+

+±×·¸Áö¸¸, ObjAddRef´Â Object(obj)¸¦ ÅëÇÏ¿© ÁÖ¼Ò¸¦ ÃÖÃʷΠȹµæÇÒ ¶§´Â »ç¿ëÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+ÀϹÝÀûÀ¸·Î ÇÑ °´Ã¼ÀÇ ÁÖ¼ÒÀÇ °¢ »õ »çº»Àº °´Ã¼ ÂüÁ¶·Î °£ÁÖÇØ¾ß ÇÕ´Ï´Ù. ´Ü, ±× ½ºÅ©¸³Æ®°¡ ObjAddRef ±×¸®°í/¶Ç´Â ObjRelease¸¦ ÀûÀýÇÏ°Ô È£ÃâÇÒ Ã¥ÀÓÀÌ ÀÖ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù. + +¿¹¸¦ µé¸é, x := address¿Í °°Àº °ÍÀ» ÅëÇÏ¿© ÁÖ¼Ò°¡ º¹»çµÉ ¶§¸¶´Ù, ObjAddRef °¡ È£ÃâµÇ¾î ÂüÁ¶ Ƚ¼ö¸¦ Áõ°¡½ÃÄÑ¾ß ÇÕ´Ï´Ù. + +ºñ½ÁÇÏ°Ô, ½ºÅ©¸³Æ®°¡ ±× °´Ã¼ÀÇ ÁÖ¼ÒÀÇ Æ¯º°ÇÑ »çº»°úÀÇ ÀÛ¾÷ÀÌ ³¡³¯ ¶§¸¶´Ù, ObjRelease¸¦ È£ÃâÇØ¾ß ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ±×ÀÇ ¸¶Áö¸· ÂüÁ¶°¡ »ç¶óÁú ¶§ È®½ÇÇÏ°Ô °´Ã¼°¡ ÇØÁ¦µË´Ï´Ù - ±× Àü¿¡´Â ÇØÁ¦µÇÁö ¾Ê½À´Ï´Ù.

+

+°´Ã¼ÀÇ ¸¶Áö¸· ÂüÁ¶°¡ ÇØÁ¦µÉ ¶§ Äڵ带 ½ÇÇàÇÏ·Á¸é, __Delete ¸ÞŸ-ÇÔ¼ö¸¦ ±¸ÇöÇÕ´Ï´Ù.

+ +

¾Ë·ÁÁø ÇÑ°è:

+
    +
  • ¼øȯ ÂüÁ¶¸¦ ¸ÕÀú ±ú¾ß °´Ã¼¸¦ Ç® ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸¿Í ¿¹´Â °´Ã¼ ÇØÁ¦Çϱ⸦ ÂüÁ¶ÇÕ´Ï´Ù.
  • +
  • ÇÁ·Î±×·¥ÀÌ ³¡³¯ ¶§ Á¤Àû º¯¼ö¿Í Àü¿ª º¯¼öÀÇ ÂüÁ¶´Â ÀÚµ¿À¸·Î ÇØÁ¦µÇÁö¸¸, ºñ-Á¤Àû Áö¿ª º¯¼ö³ª Ç¥Çö½Ä Æò°¡ ½ºÅÿ¡ ÀÖ´Â ÂüÁ¶µéÀ» ÀÚµ¿À¸·Î ÇØÁ¦µÇÁö ¾Ê½À´Ï´Ù. ÀÌ·± ÂüÁ¶´Â ÇÔ¼ö³ª Ç¥Çö½ÄÀÌ Á¤»óÀ¸·Î ³¡³»µµ·Ï Çã¿ëÇؾ߸¸ ÇØÁ¦°¡ µË´Ï´Ù.
  • +
+

ÇÁ·Î±×·¥ÀÌ Á¾·áÇÒ ¶§ °´Ã¼°¡ »ç¿ëÇÏ´Â ¸Þ¸ð¸®¸¦ ¿î¿µÃ¼Á¦°¡ ¿ä±¸ÇÔ¿¡µµ ºÒ±¸ÇÏ°í, ±× °´Ã¼¸¦ °¡¸®Å°´Â ¸ðµç ÂüÁ¶°¡ Ç®¸®Áö ¾Ê´Â ÇÑ, __Delete´Â È£ÃâµÇÁö ¾Ê½À´Ï´Ù. ÀÌ°ÍÀº Àӽà ÆÄÀÏ°ú °°ÀÌ, ¿î¿µ üÁ¦°¡ ÀÚµ¿À¸·Î ¿ä±¸ÇÏÁö ¾Ê´Â ´Ù¸¥ ÀÚ¿øÀ» Ç®¾î¹ö¸®¸é ¹®Á¦°¡ µÉ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.

+ +

°´Ã¼¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ

+

+¾î¶² °æ¿ì´Â DllCallÀ» ÅëÇÏ¿© °´Ã¼¸¦ ¿ÜºÎ Äڵ忡 °Ç³Ú ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ¶Ç´Â ±×°ÍÀ» ÀÌÁø µ¥ÀÌÅÍ ±¸Á¶·Î ÀúÀåÇÏ¿© ³ªÁß¿¡ ¿­¶÷ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. °´Ã¼ÀÇ ÁÖ¼Ò´Â x := &obj·Î ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù; ±×·¸Áö¸¸, º¯¼ö obj°¡ ¼Ò°ÅµÇ¸é, ±× °´Ã¼´Â ÀÏÂî±â ÇØÁ¦µÇ¾î ¹ö¸± ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± ÀÏÀÌ ÀϾÁö ¾Êµµ·Ï È®ÀÎÇÏ·Á¸é, À§¿¡ º¸¿©ÁØ ¹Ù¿Í °°ÀÌ ObjAddRef¸¦ »ç¿ëÇϰųª ¾Æ·¡¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ Object() ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù:

+
address := Object(object)
+

+°Ô´Ù°¡, ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ÁÖ¼Ò¸¦ ´Ù½Ã ÂüÁ¶·Î º¯È¯ÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
object := Object(address)
+

+¾î´À °æ¿ìµç °´Ã¼ÀÇ ÂüÁ¶-Ƚ¼ö´Â ÀÚµ¿À¸·Î Áõ°¡µË´Ï´Ù. ±×·¡¼­ °´Ã¼´Â ³Ê¹« À̸£°Ô ÇØÁ¦µÇÁö ¾Ê½À´Ï´Ù.

+

+ÀÌ ÇÔ¼ö´Â ¿¹¸¦ µé¾î COM °´Ã¼ ·¡ÆÛ³ª ÆÄÀÏ °´Ã¼¿Í °°ÀÌ Object()·Î »ý¼ºµÇÁö ¾ÊÀº °´Ã¼¿¡µµ ¶È °°ÀÌ Àû¿ëµÇ´Â °Í¿¡ ÁÖ¸ñÇϽʽÿÀ.

+ + + diff --git a/src/docs/Scripts.htm b/src/docs/Scripts.htm new file mode 100644 index 0000000..2ecab09 --- /dev/null +++ b/src/docs/Scripts.htm @@ -0,0 +1,415 @@ + + +AutoHotkey Scripts and Macros + + + + + + + +

½ºÅ©¸³Æ®

+ +

¸ñÂ÷

+ + +

µé¾î°¡´Â ¸»

+

+°¢ ½ºÅ©¸³Æ®´Â Æò¹üÇÑ ÅؽºÆ® ÆÄÀϷμ­ ¾È¿¡ ÀÖ´Â ÁÙµéÀ» ÇÁ·Î±×·¥ÀÌ ½ÇÇàÇÕ´Ï´Ù (AutoHotkey.exe). ½ºÅ©¸³Æ®´Â ¶Ç ÇÖÅ°¿Í ÇÖ½ºÆ®¸µ ½ÉÁö¾î ¸ðÁ¶¸® ±×°Íµé·Î ±¸¼ºµÇ±âµµ ÇÕ´Ï´Ù. ±×·¸Áö¸¸, ÇÖÅ°¿Í ÇÖ½º¸µÀÌ ¾ø´Ù¸é ½ºÅ©¸³Æ®´Â ±âµ¿µÈ ¼ø°£ ±×ÀÇ ¸í·É¾îµéÀ» ¼ø¼­´ë·Î À§¿¡¼­ºÎÅÍ ¾Æ·¡·Î ¼öÇàÇÕ´Ï´Ù.

+

+ÇÁ·Î±×·¥Àº ½ºÅ©¸³Æ®¸¦ ¸Þ¸ð¸® ¾ÈÀ¸·Î ÇÑ ÁÙ¾¿ ÀûÀçÇÕ´Ï´Ù. °¢ ÁÙÀº ±æÀÌ°¡ 16,383 ¹®ÀÚÀÔ´Ï´Ù. ÀûÀçÇÏ´Â µ¿¾È, ½ºÅ©¸³Æ®´Â ÃÖÀûÈ­µÇ°í Æò°¡µË´Ï´Ù. ±¸¹® ¿¡·¯´Â È­¸é¿¡ º¸¿©Áö°í ±× ¿¡·¯¸¦ ¹Ýµå½Ã ¼öÁ¤ÇØ¾ß ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

½ºÅ©¸³Æ®ÀÇ »ó´Ü (ÀÚµ¿-½ÇÇà ¼½¼Ç)

+

+½ºÅ©¸³Æ®°¡ ÀûÀçµÈ ÈÄ, Á¦ÀÏ À­ ÁÙºÎÅÍ ½ÇÇàÀ» ½ÃÀÛÇØ Return, Exit, ÇÖÅ°/ÇÖ½ºÆ®¸µ ¶óº§, ¶Ç´Â ¹°¸®ÀûÀ¸·Î ³¡¿¡ ´Ù´Ù¸¦ ¶§±îÁö ½ÇÇàÀ» °è¼ÓÇÕ´Ï´Ù (¼ø¼­¿¡ »ó°üÀÌ ¾ø½À´Ï´Ù). ½ºÅ©¸³Æ®¿¡¼­ ÀÌ »ó´Ü ºÎºÐÀ» ÀÚµ¿-½ÇÇà ¼½¼ÇÀ̶ó°í ÁöĪÇÕ´Ï´Ù.

+

+¿µ¼ÓÀûÀÌÁö ¾ÊÀº ±×¸®°í hotkeys, hotstrings, OnMessage, ±×¸®°í GUI°¡ ¾ø´Â ½ºÅ©¸³Æ®´Â ÀÚµ¿-½ÇÇà ¼½¼ÇÀÌ ¿Ï·áµÇ¸é ¹Ù·Î ³¡³³´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ÈÞ½Ä »óÅ·Π½ÇÇàÀ» °è¼ÓÇϸ鼭, ÇÖÅ°³ª ÇÖ½ºÆ®¸µ, GUI À̺¥Æ®, ¸ÂÃã ¸Þ´º Ç׸ñ, ±×¸®°í ŸÀÌ¸Ó °°Àº À̺¥Æ®¿¡ ¹ÝÀÀÇÕ´Ï´Ù.

+

+ÇÖÅ°, ÇÖ½ºÆ®¸µ, ¸Þ´º Ç׸ñ, GUI À̺¥Æ®, ¶Ç´Â ŸÀ̸Ӱ¡ ±âµ¿ÇÏ´Â ¾²·¹µå¸¶´Ù »õ·Ó°Ô ±âº» °ªÀ» °¡Áö°í ½ÃÀÛÇÕ´Ï´Ù. ´ÙÀ½°ú °°Àº ¼Ó¼ºµéÀÌ ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡ ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù. ¾ð¼ÂÇϸé, (°¢ ÆäÀÌÁö ¹®¼­¿¡ ±âÀçµÈ ´ë·Î) Ç¥ÁØ ±âº» °ªÀÌ Àû¿ëµË´Ï´Ù: DetectHiddenWindows, DetectHiddenText, SetTitleMatchMode, SetBatchLines, SendMode, SetKeyDelay, SetMouseDelay, + SetWinDelay, + SetControlDelay, + SetDefaultMouseSpeed, + CoordMode, + SetStoreCapslockMode, +AutoTrim, SetFormat, StringCaseSense, Thread, ±×¸®°í Critical.

+

+ÀÚµ¿-½ÇÇà ¼½¼ÇÀ» ¿Ï·áÇϴµ¥ ½Ã°£ÀÌ ¸¹ÀÌ °É¸°´Ù¸é (¶Ç´Â ¿Ï·áµÇÁö ¾Ê´Â´Ù¸é), À§ÀÇ ¼³Á¤¿¡ ´ëÇÑ ±âº»°ªÀº 100 ¹Ð¸®ÃÊ ÈÄ¿¡ È¿°ú¸¦ ¹ßÈÖÇÕ´Ï´Ù. ÀÚµ¿-½ÇÇà ¼½¼ÇÀÌ ¸¶Ä§³» ¿Ï·áµÉ ¶§, ±âº» °ªÀº ÀÚµ¿-½ÇÇà ¼½¼ÇÀÇ ³¡¿¡¼­ È¿°ú°¡ ÀÖ´ø °ªµé·Î ´Ù½Ã °»½ÅµË´Ï´Ù. +±×¸®ÇÏ¿©, º¸Åë Á¦ÀÏ ÁÁÀº ¹æ¹ýÀº ½ºÅ©¸³Æ®ÀÇ »ó´Ü¿¡ ÀÖ´Â ±âº» °ªµéÀ» º¯°æÇÏ´Â °ÍÀÔ´Ï´Ù. ¿©±â¿¡ ÇÖÅ°, ÇÖ½ºÆ®¸µ, ŸÀ̸Ó, ¶Ç´Â ¸ÂÃã ¸Þ´º Ç׸ñÀÌ µé¾î ÀÖ½À´Ï´Ù. ¶Ç °¢ ¾²·¹µå¸¶´Ù µû·Î À§ÀÇ ¼³Á¤À» º¸À¯ÇÏ°í ÀÖ´Ù´Â °ÍÀ» ÁÖ¸ñÇϽʽÿÀ. ±×·± ¼³Á¤Àº º¯°æÇصµ ´Ù¸¥ ¾²·¹µå¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù.

+ +

ÇǽŠ¿¬¼Ó¿­

+

+¿ÀÅäÇÖÅ°ÀÇ ±âº» ÇǽŠ¹®ÀÚ´Â ¾×¼¾Æ®/¹éƽ(`)ÀÔ´Ï´Ù. ¿µ¹® Å°º¸µåÀÇ Á»ó ¸ð¼­¸®¿¡ ÀÖ½À´Ï´Ù. ¿ª»ç¼±º¸´Ù ÀÌ ¹®ÀÚ¸¦ »ç¿ëÇϸé ÆÄÀÏ °æ·Î¿¡ ÀÌÁßÀ¸·Î ¿ª»ç¼±À» ¹èÄ¡ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+½°Ç¥¿Í ÆÛ¼¾Æ® ±âÈ£´Â ¿ÀÅäÇÖÅ°¿¡¼­ Ưº°ÇÑ Àǹ̸¦ °¡Áö±â ¶§¹®¿¡, `,À» »ç¿ëÇØ ¹®ÀÚ ±×´ë·ÎÀÇ ½°Ç¥¸¦ ÁöÁ¤ÇÏ°í `%¸¦ »ç¿ëÇØ ¹®ÀÚ ±×´ë·ÎÀÇ ÆÛ¼¾Æ® ±âÈ£¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÇÑ °¡Áö ¿¹¿Ü´Â MsgBoxÀÔ´Ï´Ù. ½°Ç¥¸¦ ÇǽŽÃÅ°Áö ¾Ê¾Æµµ µË´Ï´Ù. ¶Ç´Ù¸¥ ¿¹¿Ü´Â ¸í·É¾îÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö¿¡ ÀÖ´Â ½°Ç¥ÀÔ´Ï´Ù: ÇǽŽÃų ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ÇǽŠ¿¬¼Ó¿­ÀÇ ¿ÏÀüÇÑ ¸ñ·ÏÀº #EscapeChar¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+¾î¶² Ư¼ö ¹®ÀÚ´Â ÇǽŠ¿¬¼Ó¿­À» »ç¿ëÇÏ¿© ¸¸µé±âµµ ÇÕ´Ï´Ù. °¡Àå ÈçÇÑ ¿¹´Â `t (tab), `n (¶óÀÎÇǵå), ±×¸®°í `r (ij¸®Áö ¸®ÅÏ)ÀÔ´Ï´Ù.

+

+ÆÁ: ¸í·É¾îÀÇ Ã¹ ¹ø° ½°Ç¥´Â »ý·«Çصµ µË´Ï´Ù (ù ¸Å°³º¯¼ö°¡ ºñ¾î Àְųª :=³ª =·Î ½ÃÀÛÇÒ ¶§, ¶Ç´Â ±× ¸í·É¾î°¡ °è¼Ó ¼½¼ÇÀÇ »ó´Ü¿¡ Ȧ·Î ÀÖÀ» ¶§´Â Á¦¿ÜÇÕ´Ï´Ù.). ¿¹¸¦ µé¾î:

+
MsgBox ÀÌ°ÍÀº ±¦Âú½À´Ï´Ù.
+MsgBox, ÀÌ ¿ª½Ã ±¦Âú½À´Ï´Ù (¸í½ÃÀûÀ¸·Î ½°Ç¥¸¦ »ç¿ëÇÕ´Ï´Ù).
+ +

½ºÅ©¸³Æ® ¾ÈÀÇ ÁÖ¼®

+

½ºÅ©¸³Æ®´Â ÁÙÀÇ Ã³À½¿¡ ½Ö¹ÝÁ¡À» µÎ¾î ÁÖ¼® ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
; ÀÌ ÁÙÀº Àüü°¡ ÁÖ¼®ÀÔ´Ï´Ù.
+

+ÁÖ¼®Àº ¸í·É¾îÀÇ ³¡¿¡ Ãß°¡Çصµ µË´Ï´Ù. ÀÌ °æ¿ì ½Ö¹ÝÁ¡Àº Àû¾îµµ ÇϳªÀÇ °ø°£ ¶Ç´Â ÅÇÀÌ ¿ÞÂÊ¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
Run Notepad  ; ÀÌ°ÍÀº ¸í·É¾î¿Í °°Àº ÁÙ¿¡ ÀÖ´Â ÁÖ¼®ÀÔ´Ï´Ù.
+

+°Ô´Ù°¡, /* and */ ½Éº¼Àº Àüü ¼½¼Ç¿¡ ÁÖ¼®À» ºÙÀ̴µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ÁÙÀÌ ½ÃÀÛÇÏ´Â °÷¿¡ ³ªÅ¸³ª¾ß ÇÕ´Ï´Ù:

+
/*
+MsgBox, ÀÌ ÁÙÀº ÁÖ¼® 󸮵Ǿî ÀÖ½À´Ï´Ù (ºÒ´É»óÅÂ).
+MsgBox, ÀÌ ÁÙµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. 
+*/
+

+ÁÖ¼®Àº ½ºÅ©¸³Æ®°¡ ½ÃÀÛÇÏ¸é ¹«½ÃµË´Ï´Ù. ±×·¡¼­ ¼öÇ༺´ÉÀ̳ª ¸Þ¸ð¸® »ç¿ë¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù.

+

+±âº» ÁÖ¼® ¹®ÀÚ (½Ö¹ÝÁ¡)Àº #CommentFlagÀ» ÅëÇÏ¿© ´Ù¸¥ ¹®ÀÚ³ª ¹®ÀÚ¿­·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+ +

±ä ÁÙÀ» ¿©·¯ °³ÀÇ ÂªÀº ÁÙ·Î °¡¸£±â

+

+±ä ÁÙÀº ÀÛÀº ÁÙµé·Î ÂÉ°³¾î °¡µ¶¼º°ú À¯Áö°ü¸®¼ºÀ» Çâ»ó½Ãų ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ´õ¶óµµ ½ºÅ©¸³Æ®ÀÇ ½ÇÇà ¼Óµµ´Â °¨¼ÒÇÏÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ±×·± ÁÙµéÀº ½ºÅ©¸³Æ®°¡ ±âµ¿ÇÏ´Â ¼ø°£ ¸Þ¸ð¸®¿¡¼­ ÇÕº´µÇ±â ¶§¹®ÀÔ´Ï´Ù.

+

+¹æ¹ý #1: ÁÙÀÌ "and", "or", ||, &&, ½°Ç¥, ¶Ç´Â ¸¶Ä§Ç¥·Î ½ÃÀÛÇϸé ÀÚµ¿À¸·Î À­ ÁÙ°ú ÇÕº´µË´Ï´Ù (v1.0.46+¿¡¼­, ++¿Í --¸¦ Á¦¿ÜÇÏ°í ´Ù¸¥ ¸ðµç Ç¥Çö½Ä ¿¬»êÀÚ¿¡µµ ¸¶Âù°¡Áö·Î Àû¿ëµË´Ï´Ù). +´ÙÀ½ ¿¹Á¦¿¡¼­, µÎ ¹ø° ÁÙÀº ù ¹ø° ÁÙ¿¡ ºÙ´Âµ¥ ½°Ç¥·Î ½ÃÀÛÇϱ⠶§¹®ÀÔ´Ï´Ù:

+
FileAppend, ÀÌ°ÍÀº Ãß°¡ÇÒ ÅؽºÆ®ÀÔ´Ï´Ù.`n   ; ¿©±â¿¡ ÁÖ¼®ÀÌ Çã¿ëµË´Ï´Ù.
+    , %A_ProgramFiles%\SomeApplication\LogFile.txt  ; ÁÖ¼®ÀÔ´Ï´Ù.
+

+ºñ½ÁÇÏ°Ô, ´ÙÀ½ÀÇ ÁÙµéÀº ÇϳªÀÇ ÁÙ·Î ÇÕº´µÉ °ÍÀÔ´Ï´Ù. ¿Ö³ÄÇÏ¸é ¸¶Áö¸· µÎ ÁÙÀÌ "and" ¶Ç´Â "or"·Î ½ÃÀÛÇϱ⠶§¹®ÀÔ´Ï´Ù:

+
if (Color = "Red" or Color = "Green"  or Color = "Blue"   ; ÁÖ¼®.
+    or Color = "Black" or Color = "Gray" or Color = "White")   ; ÁÖ¼®.
+    and ProductIsAvailableInColor(Product, Color)   ; ÁÖ¼®.
+

+»ïÁø ¿¬»êÀÚµµ ÈǸ¢ÇÑ Èĺ¸ÀÔ´Ï´Ù:

+
ProductIsAvailable := (Color = "Red")
+    ? false  ; ¿ì¸®´Â ¹ÙÀÌ·¯½º Á¦Ç°ÀÌ ¾ø½À´Ï´Ù. ±×·¯´Ï °ÆÁ¤ÇÏÁö ¸»°í ÇÔ¼ö¸¦ È£ÃâÇϽʽÿÀ.
+    : ProductIsAvailableInColor(Product, Color)
+

+À§ÀÇ ¿¹Á¦¿¡ »ç¿ëµÈ µé¿©¾²±â´Â ¼±ÅÃÀûÀÌÁö¸¸, ¾î´À ÁÙÀÌ À§ÀÇ ¾î´À ÁÙ¿¡ ¼ÓÇÏ´ÂÁö º¸¿©Áֱ⠶§¹®¿¡ °¡µ¶¼ºÀÌ Çâ»óµË´Ï´Ù. ¶Ç, "AND" ±×¸®°í "OR" °°Àº ´Ü¾î·Î ½ÃÀÛÇÏ´Â ÁÙµéÀº µû·Î ´õ ½ºÆäÀ̽º¸¦ Æ÷ÇÔÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù; ¿ÀÅäÇÖÅ°°¡ ÀÚµ¿À¸·Î Ãß°¡ÇØ ÁÝ´Ï´Ù. +¸¶Áö¸·À¸·Î, ºó ÁÙÀ̳ª ÁÖ¼®Àº À§ÀÇ ¿¹Á¦¿¡¼­ ÁÙ »çÀÌ ¶Ç´Â ÁÙ ³¡¿¡ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+¹æ¹ý #2: ¾öû³ª°Ô ¸¹Àº ÁÙÀ» º´ÇÕÇÏ·Á¸é ¶Ç´Â ¹æ¹ý #1ÀÌ Àû´çÇÏÁö ¾ÊÀ» ¶§ ÀÌ ¹æ¹ýÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ÀÚµ¿-±³Ã¼ ÇÖ½ºÆ®¸µ¿¡ ÀÌ ¹æ¹ýÀÌ Æ¯º°È÷ À¯¿ëÇÏÁö¸¸, ¸í·É¾î ¶Ç´Â Ç¥Çö½Ä¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
; ¿¹Á¦ #1:
+Var =
+(
+1 ¹ø ÁÙ ÅؽºÆ®
+2 ¹ø ÁÙ ÅؽºÆ®. ±âº»°ªÀ¸·Î, ¶óÀÎÇǵå(`n)°¡ ÁÙ »çÀÌ¿¡ Á¸ÀçÇÕ´Ï´Ù.
+)
+
+; ¿¹Á¦ #2:
+FileAppend,  ; ÀÌ °æ¿ì´Â ½°Ç¥°¡ ÇÊ¿äÇÕ´Ï´Ù.
+(
+ÅؽºÆ® ÇÑ ÁÙ.
+±âº»°ªÀ¸·Î, ÀÌ ÁÙ°ú ÀÌÀü ÁÙ »çÀÌÀÇ Çϵå ij¸®Áö ¸®ÅÏ (Enter)ÀÌ ÆÄÀÏ¿¡ ¶óÀÎÇǵå (`n)·Î ¾º¿©Áú °ÍÀÔ´Ï´Ù.
+    ±âº»°ªÀ¸·Î, ÀÌ ÁÙÀÇ ¿ÞÂÊ¿¡ ÀÖ´Â Åǵµ ÆÄÀÏ¿¡ ¾º¿©Áú °ÍÀÔ´Ï´Ù (½ºÆäÀ̽º¿¡ ´ëÇؼ­µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù).
+±âº»°ªÀ¸·Î, %Var%°ú °°Àº º¯¼ö ÂüÁ¶´Â º¯¼öÀÇ ³»¿ëÀ¸·Î °áÁ¤µË´Ï´Ù.
+), C:\My File.txt
+

+À§ÀÇ ¿¹Á¦¿¡¼­, ÀÏ·ÃÀÇ ÁÙµéÀº ÇÑ ½ÖÀÇ °ýÈ£·Î »ó´Ü°ú ÇÏ´Ü¿¡ °æ°è°¡ ÀÖ½À´Ï´Ù. ÀÌ·± °ÍÀ» °è¼Ó ¼½¼ÇÀ̶ó°í ºÎ¸¨´Ï´Ù. ÇÏ´Ü ÁÙ¿¡ ´Ý´Â °ýÈ£ ´ÙÀ½¿¡ FileAppendÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö°¡ ÀÖÀ½¿¡ ÁÖ¸ñÇϽʽÿÀ. ÀÌ °ü·Ê´Â ¼±ÅÃÀûÀÔ´Ï´Ù; ÀÌ¿Í °°Àº °æ¿ì¿¡ ½°Ç¥´Â ¹®ÀÚ ±×´ë·ÎÀÇ ½°Ç¥°¡ ¾Æ´Ï¶ó ¸Å°³º¯¼ö-°¡¸§ÀÚ·Î º¸ÀÌ°Ô µË´Ï´Ù.

+

+°è¼Ó ¼½¼ÇÀÇ ±âº» ÇàÀ§¸¦ ¿À¹ö¶óÀ̵å ÇÒ ¼ö ÀÖ½À´Ï´Ù. °è¼Ó ¼½¼ÇÀÇ ¿©´Â °ýÈ£ÀÇ ¿À¸¥ÂÊ¿¡ ´ÙÀ½ ¿É¼Ç Áß Çϳª ¶Ç´Â ¿©·¯°³¸¦ Æ÷ÇÔÇÏ¸é µË´Ï´Ù. ¿É¼ÇÀÌ ¿©·µ Á¸ÀçÇϸé, ½ºÆäÀ̽º·Î ¾ÕÀÇ ¿É¼Ç°ú °¢°¢ ±¸º°ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: ( LTrim Join| %.

+

+Join: ¾î¶»°Ô ÁÙÀ» ¿¬°áÇÒÁö ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀÌ »ý·«µÇ¸é, °¢ ÁÙÀº ¸¶Áö¸· ÁÙÀ» Á¦¿ÜÇÏ°í ´ÙÀ½¿¡ ÁÙ³Ñ±è ¹®ÀÚ (`n)°¡ µû¶ó¿É´Ï´Ù. +´Ü¾î Join ÀÚü¸¸ ÁöÁ¤Çϸé, ÁÙµéÀº Á÷Á¢ÀûÀ¸·Î ±× »çÀÌ¿¡ ¾Æ¹« ¹®ÀÚ ¾øÀÌ ¼­·Î °áÇÕÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ´Ü¾î Join ´ÙÀ½¿¡ Áï½Ã 15°³ ±îÁöÀÇ ¹®ÀÚ°¡ µû¶ó¿Í¾ß ÇÕ´Ï´Ù. +

+¿¹¸¦ µé¾î, Join`s´Â ¸¶Áö¸· ÁÙÀ» Á¦¿ÜÇÏ°í °¢ ÁÙ µÚ¿¡ ½ºÆäÀ̽º¸¦ »ðÀÔÇÕ´Ï´Ù -- ¿À·ÎÁö Join¸¸ ÀνÄÇϴ Ưº°ÇÑ ÇǽŠ¿¬¼Ó¿­ÀÔ´Ï´Ù). + +¶Ç´Ù¸¥ ¿¹´Â Join`r`nÀε¥, ÀÌ°ÍÀº ÁÙ°ú ÁÙ »çÀÌ¿¡ CR+LF¸¦ »ðÀÔÇÕ´Ï´Ù. ºñ½ÁÇÏ°Ô, Join|´Â ÁÙ »çÀÌ¿¡ ÆÄÀÌÇÁ¸¦ »ðÀÔÇÕ´Ï´Ù. °è¼Ó ¼½¼ÇÀÇ ¸¶Áö¸· ÁÙµµ ¿¬°á-¹®ÀÚ·Î ³¡³»·Á¸é, °è¼Ó ¼½¼ÇÀÇ ´Ý´Â °ýÈ£ ¹Ù·Î À§¿¡ Áï½Ã ºóÁÙÀ» Æ÷ÇÔ½Ãŵ´Ï´Ù.

+

+¾Ë·ÁÁø ÇÑ°è: ¹®ÀÚ¿­ JoinÀÌ ½ÖÁ¡À¸·Î ³¡³ª¸é, ±× ÁÙ¿¡¼­ ¸¶Áö¸· ¿É¼ÇÀ¸·Î Ãë±ÞÇÏ¸é ¾ÈµË´Ï´Ù. +¿¹¸¦ µé¾î, (Join:Àº ¶óº§ "(Join"À¸·Î Ãë±ÞµÇ°í (LTrim Join:Àº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ±×·¯³ª (Join: C´Â ÁÁ½À´Ï´Ù.

+

+LTrim: °¢ ÁÙÀÇ ¼±µÎ¿¡¼­ ½ºÆäÀ̽º¿Í ÅÇÀ» °È¾î³À´Ï´Ù. ½ºÆäÀ̽º¿Í ÅÇÀº ÁÖ·Î °è¼Ó ¼½¼ÇÀ» µé¿©¾²±â ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ¶Ç, ÀÌ ¿É¼ÇÀº ¿©·¯ °è¼Ó ¼½¼Ç¿¡ ´ëÇؼ­µµ È°¼ºÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÑ ÁÙ¿¡ #LTrim¸¸ ÁöÁ¤ÇÏ¸é µË´Ï´Ù. +#LTrimÀº À§Ä¡¿¡ ¿µÇâÀ» ¹Þ½À´Ï´Ù: ¹°¸®ÀûÀ¸·Î ±× ¾Æ·¡¿¡ ÀÖ´Â ¸ðµç °è¼Ó ¼½¼Ç¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù. +#LTrim Off¸¦ ÅëÇÏ¿© ¼³Á¤À» ²ø ¼ö ÀÖ½À´Ï´Ù.

+

+RTrim0 (RTrim ´ÙÀ½¿¡ 0): °¢ ÁÙÀÇ ³¡À¸·ÎºÎÅÍ ½ºÆäÀ̽º¿Í ÅÇÀ» °È¾î³»Áö ¸øÇÏ°Ô ¸·½À´Ï´Ù.

+

+Comments (¶Ç´Â Comment ¶Ç´Â Com ¶Ç´Â C) [v1.0.45.03+]: + +½Ö¹ÝÁ¡ ÁÖ¼®À» °è¼Ó ¼½¼Ç ¾È¿¡ Çã¿ëÇÕ´Ï´Ù (±×·¯³ª /*..*/ ¾È¿¡´Â Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù). ±×·± ÁÖ¼®µéÀº (¿ÞÂÊ¿¡ ÀÖ´Â ½ºÆäÀ̽º¿Í ÅÇ°ú ÇÔ²²) °áÇÕµÈ °á°ú·ÎºÎÅÍ ¸ðÁ¶¸® Á¦°ÅµË´Ï´Ù. ±âÈ£ ÅؽºÆ®·Î Ãë±ÞµÇÁö ¾Ê½À´Ï´Ù. °¢ ÁÖ¼®Àº ÁÙÀÇ ¿À¸¥ÂÊ ¶Ç´Â ±× ÀÚü·Î »õ ÁÙ¿¡ ³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù.

+

+% (ÆÛ¼¾Æ® »çÀÎ): ÆÛ¼¾Æ® »çÀÎÀ» º¯¼ö ÂüÁ¶°¡ ¾Æ´Ï¶ó ±âÈ£ ±×´ë·Î Ãë±ÞÇÕ´Ï´Ù. ±×·¡¼­ °¢ ÆÛ¼¾Æ® »çÀÎÀ» ±âÈ£ ±×´ë·Î ¸¸µé±â À§ÇØ ÇǽŽÃų ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ÀÚµ¿-±³Ã¼ ÇÖ½ºÆ®¸µ°ú °°ÀÌ, ÀÌ¹Ì ÆÛ¼¾Æ® »çÀÎÀÌ ±âÈ£ÀÎ °æ¿ì¿¡ ÀÌ ¿É¼ÇÀº ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù.

+

+, (½°Ç¥): ½°Ç¥¸¦ ¹®ÀÚ ±×´ë·ÎÀÇ ½°Ç¥°¡ ¾Æ´Ï¶ó °¡¸§ÀÚ·Î Ãë±ÞÇÕ´Ï´Ù. º°·Î »ç¿ëµÇÁö ¾Ê´Â ÀÌ ¿É¼ÇÀº ¸í·É¾î ¸Å°³º¯¼ö »çÀÌÀÇ ½°Ç¥¿¡ ´ëÇؼ­¸¸ ²À ÇÊ¿äÇÕ´Ï´Ù. ¿Ö³ÄÇϸé ÇÔ¼ö È£Ãâ¿¡¼­, ½°Ç¥ÀÇ Á¾·ù´Â ¹®Á¦°¡ µÇÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ¶Ç ÀÌ ¿É¼ÇÀº ½ÇÁ¦·Î ¸Å°³º¯¼ö »çÀ̸¦ °¡¸£´Â ½°Ç¥µé¸¸ º¯ÇüÇÕ´Ï´Ù. ´Ù¸¥ ¸»·Î Çϸé, ÀÏ´Ü ¸í·É¾îÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö¿¡ ´Ù´Ù¸£¸é (Áï, ´õ ÀÌ»ó ¸Å°³º¯¼ö°¡ ¾øÀ¸¸é), ¿¬ÀÌ¾î ³ª¿À´Â ½°Ç¥´Â ÀÌ ¿É¼Ç¿¡ »ó°ü ¾øÀÌ ¹®ÀÚ ±×´ë·Î ½°Ç¥·Î Ãë±ÞµË´Ï´Ù.

+

+` (¾×¼¾Æ®): °¢ ¹éƽ ¹®ÀÚ¸¦ ÇǽŠ¹®ÀÚ°¡ ¾Æ´Ï¶ó ¹®ÀÚ ±×´ë·Î Ãë±ÞÇÕ´Ï´Ù. ÀÌ°ÍÀº ¶Ç ½°Ç¥¿Í ÆÛ¼¾Æ® »çÀÎÀÌ ¸í½ÃÀûÀ¸·Î ±×¸®°í °³º°ÀûÀ¸·Î ÇǽŵÇÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù. °Ô´Ù°¡, `r ±×¸®°í `t¿Í °°ÀÌ ¸í½ÃÀûÀ¸·Î ÁöÁ¤µÈ ÇǽŠ¿¬¼Ó¿­À» º¯È¯ÇÏÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù.

+

+) [v1.1.01+]: +´Ý´Â °ýÈ£°¡ °è¼Ó ¼½¼ÇÀÇ ¿É¼Ç¿¡ ³ªÅ¸³ª¸é (Join ¿É¼ÇÀÇ ¸Å°³º¯¼ö·Î ³ªÅ¸³ª¸é Á¦¿Ü), ±× ÁÙÀº °è¼Ó ¼½¼ÇÀÇ ½ÃÀÛÀÌ ¾Æ´Ï¶ó Ç¥Çö½ÄÀ¸·Î Àç¹ø¿ªµË´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¿©´Â °ýÈ£¸¦ ÇǽŽÃų ÇÊ¿ä ¾øÀÌ (x.y)[z]()¿Í °°Àº Ç¥Çö½ÄÀ» ÀÛµ¿½Ãų ¼ö ÀÖ½À´Ï´Ù.

+ +

³íÆò

+

+`n (Áٳѱè)¿Í `t (ÅÇ) °°Àº ÇǽŠ¿¬¼Ó¿­Àº °è¼Ó ¼½¼Ç ¾È¿¡¼­ Áö¿øµË´Ï´Ù. ´Ü accent (`) ¿É¼ÇÀÌ ÁöÁ¤µÇ¾î ÀÖ´Â °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù.

+

+ÁÖ¼® ¿É¼ÇÀÌ ¾øÀ¸¸é, ½Ö¹ÝÁ¡°ú /*..*/ ÁÖ¼®ÀÌ °è¼Ó ¼½¼Ç ¾È¿¡¼­ Áö¿øµÇÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ±âÈ£ ÅؽºÆ®·Î º¸À̱⠶§¹®ÀÔ´Ï´Ù. ±×·¸Áö¸¸, ÁÖ¼®Àº °è¼Ó ¼½¼ÇÀÇ »ó´Ü ÁÙ°ú ÇÏ´Ü ÁÙ¿¡ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
FileAppend,   ; ÁÖ¼®ÀÔ´Ï´Ù.
+; Comment.
+( LTrim Join    ; ÁÖ¼®ÀÔ´Ï´Ù.
+     ; ÀÌ°ÍÀº ÁÖ¼®ÀÌ ¾Æ´Õ´Ï´Ù; ¹®ÀÚ ±×´ë·ÎÀÔ´Ï´Ù. À­ ÁÙ¿¡ ´Ü¾î Comments¸¦ Æ÷ÇÔÇϸé ÁÖ¼®ÀÌ µË´Ï´Ù.
+), C:\File.txt   ; ÁÖ¼®ÀÔ´Ï´Ù.
+

+À§ÀÇ °á°ú·Î, ½Ö¹ÝÁ¡Àº °è¼Ó ¼½¼Ç ¾È¿¡¼­ ÇǽŽÃų ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+°è¼Ó ¼½¼ÇÀº 16,383 ¹®ÀÚ°¡ ³Ñ´Â ÁÙÀ» »ý»êÇÏÁö ¸øÇÕ´Ï´Ù (½ÃµµÇϸé, ÇÁ·Î±×·¥Àº ½ºÅ©¸³Æ®°¡ ±âµ¿ÇÏ´Â ¼ø°£ °æ°í¸¦ º¸³À´Ï´Ù). À̸¦ µ¹¾Æ°¡´Â ÇÑ °¡Áö ¹æ¹ýÀº ÀÏ·Ä·Î °áÇÕÇؼ­ º¯¼ö¿¡ ³Ö´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î:

+
Var =
+(
+...
+)
+Var = %Var%`n  ; ¶Ç´Ù¸¥ °è¼Ó ¼½¼ÇÀ» ÅëÇÏ¿© º¯¼ö¿¡ ´õ ¸¹Àº ÅؽºÆ®¸¦ Ãß°¡ÇÕ´Ï´Ù.
+(
+...
+)
+FileAppend, %Var%, C:\My File.txt
+

+´Ý´Â °ýÈ£´Â ¿¬¼Ó ¼½¼ÇÀÇ ³¡À» ³ªÅ¸³»±â ¶§¹®¿¡, ÁÙÀ» ´Ý´Â °ýÈ£·Î ½ÃÀÛÇÏ·Á¸é, ¾Õ¿¡´Ù ¾×¼¾Æ®/¹éƽÀ» ¹èÄ¡ÇØ¾ß ÇÕ´Ï´Ù: `).

+

+°è¼Ó ¼½¼Ç ´ÙÀ½¿¡ Áï½Ã µû¶ó¿À´Â ÁÙ¿¡ ¶Ç´Ù¸¥ °è¼Ó ¼½¼ÇÀ» ¿©´Â °ýÈ£°¡ ´ã±æ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô Çϸé ÇÑ °³ÀÇ ÁÙÀ» ±¸¼ºÇÏ´Â µ¿¾È À§¿¡ ¾ð±ÞÇÑ ¿É¼ÇµéÀÌ ´Þ¶óÁú ¼ö ÀÖ½À´Ï´Ù.

+

+#Include¸¦ ÀÌ¿ëÇÏ¿© °è¼Ó ¼½¼ÇÀ» ±¸¼ºÇÏ´Â ¹æ¹ýÀº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.

+ +

½ºÅ©¸³Æ®¸¦ EXE (ahk2exe)·Î º¯È¯Çϱâ

+

+½ºÅ©¸³Æ® ÄÄÆÄÀÏ·¯ (fincs Á¦°ø)°¡ ÇÁ·Î±×·¥¿¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.

+

+½ºÅ©¸³Æ®°¡ ÄÄÆÄÀϵǸé, µ¶¸³ ½ÇÇàÈ­ÀÏÀÌ µË´Ï´Ù; Áï, ¿ÀÅäÇÖÅ°°¡ ¼³Ä¡µÇ¾î ÀÖÁö ¾ÊÀº ¸Ó½Å¿¡¼­µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù (±×·± EXE ½ÇÇà ÆÄÀÏÀº ¾Æ¹« Á¦ÇÑ ¾øÀÌ ¹èÆ÷Çϰųª ÆǸÅÇÒ ¼ö ÀÖ½À´Ï´Ù). ÄÄÆÄÀÏ °úÁ¤À» ÅëÇØ ½ÇÇà ÆÄÀÏÀÌ »ý¼ºµË´Ï´Ù. ¾È¿¡ ´ÙÀ½°ú °°ÀÌ Æ÷ÇԵ˴ϴÙ. ¿ÀÅäÇÖÅ° ÀÎÅÍÇÁ¸®ÅÍ, ½ºÅ©¸³Æ®, ±×¸®°í ±âŸ Æ÷ÇÔµÈ ÆÄÀÏ, ±×¸®°í FileInstall ¸í·É¾î¸¦ ÅëÇÏ¿© º´ÇÕÇÑ ÆÄÀϵé.

+

+Ahk2Exe´Â ´ÙÀ½°ú °°Àº ¹æ½ÄÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
    +
  1. GUI ÀÎÅÍÆäÀ̽º: ½ÃÀÛ ¸Þ´º¿¡¼­ "Convert .ahk to .exe" Ç׸ñÀ» ¼±ÅÃÇÕ´Ï´Ù.
  2. +
  3. ¿ìŬ¸¯: ÀͽºÇ÷η¯ â ¾È¿¡¼­ .ahk ÆÄÀÏ¿¡ ¿ìŬ¸¯ÇÏ°í "Compile Script"¸¦ ¼±ÅÃÇÕ´Ï´Ù (¿ÀÅäÇÖÅ°¸¦ ¼³Ä¡ÇÒ ¶§ ½ºÅ©¸³Æ® ÄÄÆÄÀÏ ¿É¼ÇÀ» ¼±ÅÃÇßÀ» °æ¿ì¿¡¸¸ ¸Þ´º°¡ ÀÖ½À´Ï´Ù). ÀÌ·¸°Ô ÇÏ¸é ½ºÅ©¸³Æ®¿Í ±âº» À̸§ÀÌ °°Àº EXE ÆÄÀÏÀÌ »ý¼ºµË´Ï´Ù. Àá½Ã ÈÄ¿¡ °°Àº µð·ºÅ丮¿¡ ³ªÅ¸³³´Ï´Ù. ÁÖÀÇ: EXE ÆÄÀÏÀº À§ÀÇ ¹æ¹ý #1¿¡ ÀÇÇÏ¿© ¸¶Áö¸·À¸·Î »ç¿ëµÈ °Í°ú °°Àº ¾ÆÀÌÄÜ, .bin ÆÄÀÏ ±×¸®°í MPRESS ¼³Á¤À» »ç¿ëÇÏ¿© »ý¼ºµË´Ï´Ù.
  4. +
  5. ¸í·É ÁÙ: ÄÄÆÄÀÏ·¯¸¦ ´ÙÀ½ ¸Å°³º¯¼ö¸¦ °¡Áö°í ¸í·É ÁÙ¿¡¼­ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù: +
    Ahk2Exe.exe /in MyScript.ahk [/out MyScript.exe] [/icon MyIcon.ico] [/bin AutoHotkeySC.bin] [/mpress 0or1]
    + ¿¹¸¦ µé¾î: +
    Ahk2Exe.exe /in "MyScript.ahk" /icon "MyIcon.ico"
    +»ç¿ë¹ý: +
      +
    • ½ºÆäÀ̽º°¡ µé¾î ÀÖ´Â ¸Å°³º¯¼ö´Â °ãµû¿ÈÇ¥·Î µÑ·¯½Î¾ß ÇÕ´Ï´Ù.
    • +
    • "out" ÆÄÀÏÀ» »ý·«Çϸé, EXE ÆÄÀÏÀº ½ºÅ©¸³Æ®¿Í ±âº» ÆÄÀÏÀ̸§ÀÌ °°½À´Ï´Ù.
    • +
  6. +
+

ÁÖÀÇ:

+
    +
  • ÄÄÆÄÀϸµÀº ÀüÇüÀûÀ¸·Î ½ºÅ©¸³Æ®ÀÇ ¼öÇ༺´ÉÀ» °³¼±ÇÏÁö ¾Ê½À´Ï´Ù.
  • +
  • v1.1.01 ¹öÀü¿¡¼­, ¾ÏÈ£ º¸È£¿Í /NoDecompile ½ºÀ§Ä¡¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.
  • +
  • mpress.exe°¡ ¿ÀÅäÇÖÅ°°¡ ¼³Ä¡µÇ¾î ÀÖ´Â "Compiler" ÇÏÀ§Æú´õ¿¡ Á¸ÀçÇϸé, ½ºÅ©¸³Æ® ½ÇÇàÆÄÀÏÀ» ¾ÐÃàÇϴµ¥ »ç¿ëµË´Ï´Ù. /mpress 0 ¶Ç´Â GUI ¼³Á¤À¸·Î ²¨¹ö¸± ¼ö ÀÖ½À´Ï´Ù. ÀÌ´Â ¶ÇÇÑ ½ºÅ©¸³Æ® ¼Ò½º Äڵ嵵 (ÁÖ¼®Àº Á¦¿ÜÇÏ°í) ¾ÐÃàÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é PE ¸®¼Ò½º ¿¡µðÅ͸¦ »ç¿ëÇÏ¿© ½ÇÇà ÆÄÀϷκÎÅÍ ¼Ò½º¸¦ ÃßÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • +
  • ¸í·É¾î #NoTrayIcon ±×¸®°í "Menu, Tray, ShowMainWindow" ´Â ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®ÀÇ ÇàÀ§¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.
  • +
  • ¸ÂÃã ¹öÀü Á¤º¸´Â (ÀͽºÇ÷η¯ÀÇ ÆÄÀÏ-Ư¼º ´ëÈ­»óÀÚ¿¡ ³ªÅ¸³ª´Âµ¥) ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®¿¡ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸®¼Ò½º ÇØÄ¿ °°Àº À¯Æ¿À» »ç¿ëÇÏ¿© "AutoHotkeySC.bin". ÆÄÀÏÀ» ÆíÁýÇÏ¸é µË´Ï´Ù. ÀÌ ÆÄÀÏÀº ¿ÀÅäÇÖÅ°°¡ ¼³Ä¡µÈ "Compiler" ÇÏÀ§ Æú´õ¿¡ µé¾î ÀÖ½À´Ï´Ù. Compile_AHK II¸¦ »ç¿ëÇϸé ÀÌ °úÁ¤À» ¼Õ½±°Ô ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. v1.1.01¹öÀü¿¡¼­, AutoHotkeySC.bin ´ë½Å¿¡ ÄÄÆÄÀÏ ½ºÅ©¸³Æ®¸¦ ÆíÁýÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • +
  • À§ÀÇ ¹æ¹ýÀ» »ç¿ëÇÏ¸é ¶Ç ±âÁ¸ÀÇ ¾ÆÀÌÄÜÀ» ¹Ù²Ù°Å³ª ¸ðµç ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®¿¡ »õ·Î¿î ¾ÆÀÌÄÜÀ» Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • +
  • ½ºÅ©¸³Æ®°¡ ÄÄÆÄÀÏµÈ ÇüÅ·Π½ÇÇà ÁßÀÌ¸é ³»Àå º¯¼ö A_IsCompiled¿¡ 1ÀÌ ´ã±é´Ï´Ù. ¾Æ´Ï¸é ºñ¾î ÀÖ½À´Ï´Ù.
  • +
  • ¸Å°³º¯¼ö¸¦ Ahk2Exe¿¡ °Ç³×¸é, ÄÄÆÄÀÏ °úÁ¤ÀÇ ¼ºÆÐ ¿©ºÎ¸¦ ¾Ë¸®´Â ¸Þ½ÃÁö°¡ Ç¥ÁØÃâ·ÂÀ¸·Î ³ªÅ¸³³´Ï´Ù. ¸Þ½ÃÁö°¡ ¸í·É¾î ÇÁ·ÒÇÁÆ®¿¡ ³ªÅ¸³ªÁö ¾Ê´õ¶óµµ, Ãâ·ÂÀ» ÆÄÀÏ·Î ¹æÇâ ÀüȯÇÏ´Â °Í°ú °°Àº ¼ö´ÜÀ» ½á¼­ "ÀâÀ» ¼ö ÀÖ½À´Ï´Ù" [v1.0.43+]
  • +
  • Ãß°¡·Î ½ÇÆÐÇÒ °æ¿ì, Ahk2Exe´Â Á¾·á Äڵ忡 ÀϾ ¿¡·¯ÀÇ Á¾·ù¸¦ ¾Ë·ÁÁÝ´Ï´Ù. ÀÌ·± ¿¡·¯ ÄÚµå´Â GitHub (ErrorCodes.md)¿¡¼­ º¸½Ç ¼ö ÀÖ½À´Ï´Ù. [v1.1.22.03+]
  • +
+

ÄÄÆÄÀÏ·¯ÀÇ ¼Ò½º ÄÚµå¿Í »õ ¹öÀüÀº GitHub¿¡¼­ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.

+ +

½ºÅ©¸³Æ®¿¡ ¸í·É ÁÙ ¸Å°³º¯¼ö °Ç³×±â

+

+½ºÅ©¸³Æ®´Â ¸í·ÉÁÙ ¸Å°³º¯¼ö¸¦ Áö¿øÇÕ´Ï´Ù. Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù:

+
AutoHotkey.exe [Switches] [Script Filename] [Script Parameters]
+

+±×¸®°í ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®¶ó¸é ±× Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù:

+
CompiledScript.exe [½ºÀ§Ä¡] [½ºÅ©¸³Æ® ¸Å°³º¯¼ö]
+

+½ºÀ§Ä¡: ´ÙÀ½ Áß Çϳª ¶Ç´Â ±× ÀÌ»ó:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
½ºÀ§Ä¡ÀǹÌ
/f ¶Ç´Â /force¹«Á¶°Ç ±âµ¿ÇÕ´Ï´Ù. °æ°í ´ëÈ­»óÀÚ¸¦ ÀüºÎ ¹«½ÃÇÕ´Ï´Ù.
/r ¶Ç´Â /restart½ºÅ©¸³Æ®°¡ Àç½ÃÀÛ ÁßÀ̶ó°í ¾Ë¸³´Ï´Ù (ÀÌ´Â ¶ÇÇÑ ³»ºÎÀûÀ¸·Î Reload ¸í·É¾î°¡ »ç¿ëÇÕ´Ï´Ù).
/ErrorStdOut½ºÅ©¸³Æ®¸¦ ±âµ¿½ÃÅ°Áö ¸øÇÏ°Ô ¹æÇØÇÏ´Â ±¸¹® ¿¡·¯¸¦ ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÖ´Â ´ë½Å¿¡ Ç¥ÁØ¿¡·¯(stderr)·Î Àü¼ÛÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº #ErrorStdOut¸¦ ÂüÁ¶ÇϽʽÿÀ. ÀÌ°ÍÀ» /iLib¿Í Á¶ÇÕÇÏ¸é ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏÁö ¾Ê°í Æò°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®°¡ Áö¿øÇÏÁö ¾Ê´Â °Í:
/Debug[AHK_L 11+]: µð¹ö±ë Ŭ¶óÀ̾ðÆ®¿¡ Á¢¼ÓÇÕ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ °ÍÀº »óÈ£´ëÈ­ µð¹ö±ëÀ» ÂüÁ¶ÇÕ´Ï´Ù.
/CPn[AHK_L 51+]: ½ºÅ©¸³Æ® ÆÄÀÏÀ» Àд µ¥ »ç¿ëµÈ ±âº» ÄÚµåÆäÀÌÁö¸¦ ¿À¹ö¶óÀ̵å ÇÕ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ºÅ©¸³Æ® ÆÄÀÏ ÄÚµåÆäÀÌÁö¸¦ ÂüÁ¶ÇϽʽÿÀ.
/iLib "OutFile" +

[v1.0.47+]: AutoHotkey´Â ½ºÅ©¸³Æ®¸¦ ÀûÀçÇÏÁö¸¸ ½ÇÇàÇÏÁö´Â ¾Ê½À´Ï´Ù. ¶óÀ̺귯¸® ¸ÞÄ¿´ÏÁòÀ» ÅëÇÏ¿© ÀÚµ¿À¸·Î-Æ÷ÇÔµÈ °¢ ½ºÅ©¸³Æ® ÆÄÀÏ¿¡ ´ëÇÏ¿©, OutFileÀÌ ÁöÁ¤ÇÑ ÆÄÀÏ¿¡ µÎ ÁÙÀÌ ¾º¿©Áý´Ï´Ù. ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î ÀÛ¼ºµË´Ï´Ù. LibDirÀº Lib Æú´õÀÇ ¿ÏÀüÇÑ °æ·ÎÀÌ°í LibFileÀº ±× ¶óÀ̺귯¸®ÀÇ ÆÄÀÏÀ̸§ÀÔ´Ï´Ù:

+
#Include LibDir\
+#IncludeAgain LibDir\LibFile.ahk
+

+ Ãâ·Â ÆÄÀÏ¿¡ Á¸ÀçÇϸé, µ¤¾î¾¹´Ï´Ù. OutFileÀÌ *À̸é Ç¥ÁØÃâ·Â(stdout)¿¡ ¾¹´Ï´Ù.

+

½ºÅ©¸³Æ®¿¡ ±¸¹®¿¡·¯°¡ ÀÖ´Ù¸é, Ãâ·Â ÆÄÀÏÀº ºñ¾î ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ÇÁ·Î¼¼½º Á¾·á Äڵ带 »ç¿ëÇϸé ÀÌ »óȲÀ» ŽÁöÇÒ ¼ö ÀÖ½À´Ï´Ù; ±¸¹®¿¡·¯°¡ ÀÖ´Ù¸é, Á¾·á ÄÚµå´Â 2ÀÔ´Ï´Ù. /ErrorStdOut ½ºÀ§Ä¡¸¦ »ç¿ëÇÏ¸é ¿¡·¯ ¸Þ½ÃÁö¸¦ ´©¸£°Å³ª ³ªÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+
+ +

½ºÅ©¸³Æ® ÆÄÀÏÀ̸§: +½ºÅ©¸³Æ® ¸Å°³º¯¼ö°¡ ¾ø´Ù¸é »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. »ý·«µÇ¸é (¿¹¸¦ µé¾î ¿ÀÅäÇÖÅ°¸¦ ½ÃÀÛ ¸Þ´º·ÎºÎÅÍ Á÷Á¢ ½ÇÇàÇϸé), ÇÁ·Î±×·¥Àº AutoHotkey.ahk¸¦ ´ÙÀ½ À§Ä¡¿¡¼­ ¼ø¼­´ë·Î ã½À´Ï´Ù:

+ +

ÆÄÀÏÀ̸§ AutoHotkey.ahk´Â ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ´Â µ¥ »ç¿ëµÈ ½ÇÇàÆÄÀÏÀÇ À̸§¿¡ µû¶ó ´Ù¸¨´Ï´Ù. ¿¹¸¦ µé¾î, AutoHotkey.exe¸¦ MyScript.exe·Î À̸§À» ¹Ù²Ù¾ú´Ù¸é, MyScript.ahk¸¦ ãÀ¸·Á°í ½ÃµµÇÕ´Ï´Ù. AutoHotkeyU32.exe¸¦ ¸Å°³º¯¼ö ¾øÀÌ ½ÇÇàÇϸé AutoHotkeyU32.ahk¸¦ ã½À´Ï´Ù.

+

+ÁÖÀÇ: revision 51 ÀÌÀüÀÇ ¹öÀü¿¡¼­´Â AutoHotkey.ini¸¦ ÀÛ¾÷ µð·ºÅ丮¿¡¼­ ã°Å³ª AutoHotkey.ahk¸¦ ³ªÀÇ ¹®¼­¿¡¼­ ã¾Ò½À´Ï´Ù.

+

[v1.1.17+]: º°Ç¥(*)¸¦ ÆÄÀÏÀ̸§¿¡ ÁöÁ¤ÇØ Ç¥ÁØ ÀÔ·Â(stdin)À¸·ÎºÎÅÍ ½ºÅ©¸³Æ® ÅؽºÆ®¸¦ ÀÐ¾î µéÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ExecScript()¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+½ºÅ©¸³Æ® ¸Å°³º¯¼ö: ½ºÅ©¸³Æ®¿¡ °Ç³×°í ½ÍÀº ¹®ÀÚ¿­(µé), °¢°¢ ½ºÆäÀ̽º·Î ±¸ºÐµË´Ï´Ù. ½ºÆäÀ̽º°¡ Æ÷ÇÔµÈ ¸Å°³º¯¼ö´Â ÀοëºÎÈ£·Î µÑ·¯½Î¾ß ÇÕ´Ï´Ù. ±âÈ£ ±×´ë·ÎÀÇ ÀοëºÎÈ£´Â ¿ª»ç¼±(\")À» ¾Õ¿¡ ºÙ¿©¼­ °Ç³Ú ¼ö ÀÖ½À´Ï´Ù. °á°úÀûÀ¸·Î, ÀοëºÎÈ£ ¸Å°³º¯¼ö¿¡ µÚµû¸£´Â ¿ª»ç¼±Àº (¿¹¸¦ µé¾î "C:\My Documents\") ±âÈ£ ±×´ë·ÎÀÇ ÀοëºÎÈ£·Î Ãë±ÞµË´Ï´Ù (Áï, ½ºÅ©¸³Æ®´Â ¹®ÀÚ¿­ C:\My Documents"¸¦ ¹Þ½À´Ï´Ù). ±×·± µû¿ÈÇ¥¸¦ Á¦°ÅÇÏ·Á¸é, StringReplace, 1, 1, ",, All¸¦ »ç¿ëÇϽʽÿÀ.

+

+½ºÅ©¸³Æ®´Â µé¾î¿À´Â ¸Å°³º¯¼ö¸¦ º¯¼ö %1%, %2%, µîµîÀ¸·Î º¾´Ï´Ù. °Ô´Ù°¡, %0%¿¡´Â °Ç³×¾îÁø ¸Å°³º¯¼öÀÇ °³¼ö°¡ ´ã°Ü ÀÖ½À´Ï´Ù (¾øÀ¸¸é 0). ±×·¸Áö¸¸, ÀÌ·± º¯¼öµéÀº Ç¥Çö½Ä ¾È¿¡¼­ Á÷Á¢ÀûÀ¸·Î ÂüÁ¶ÇÒ ¼ö ¾ø½À´Ï´Ù. ¿Ö³ÄÇÏ¸é º¯¼ö°¡ ¾Æ´Ï¶ó ¼ýÀÚ·Î º¸À̱⠶§¹®ÀÔ´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â ³Ê¹« ¸Å°³º¯¼ö°¡ Àû°Ô °Ç³×¾îÁö¸é ½ºÅ©¸³Æ®¸¦ Á¾·áÇÕ´Ï´Ù:

+ +
if 0 < 3  ; ºñ-Ç¥Çö½Ä if-¼­¼ú¹®ÀÇ ¿ÞÂÊÀº ¾ðÁ¦³ª º¯¼öÀÇ À̸§ÀÔ´Ï´Ù.
+{
+    MsgBox ÀÌ ½ºÅ©¸³Æ®´Â Àû¾îµµ 3 °³ÀÇ ¸Å°³º¯¼ö°¡ µé¾î¿À±â¸¦ ¿ä±¸ÇÏÁö¸¸, °Ü¿ì %0% °³¸¦ ¹Þ¾Ò½À´Ï´Ù.
+    ExitApp
+}
+

+½ºÅ©¸³Æ®·Î °Ç³×Áö´Â ¸Å°³º¯¼öÀÇ °³¼ö°¡ ´Þ¶óÁö¸é (»ç¿ëÀÚ°¡ ½ºÅ©¸³Æ®¿¡ ÆÄÀϵéÀ» ²ø¾î ¶³±¸´Â °æ¿ì), ´ÙÀ½ ¿¹Á¦´Â ¸Å°³º¯¼ö¸¦ Çϳª¾¿ ÃßÃâÇÕ´Ï´Ù:

+
Loop, %0%  ; °¢ ¸Å°³º¯¼ö¿¡ ´ëÇÏ¿©:
+{
+    param := %A_Index%  ; A_Index¿¡ Æ÷ÇÔµÈ À̸§ÀÇ º¯¼öÀÇ ³»¿ëÀ» °¡Á®¿É´Ï´Ù.
+    MsgBox, 4,, ¸Å°³º¯¼ö ¹øÈ£ %A_Index%´Â %param%ÀÔ´Ï´Ù. °è¼ÓÇϽðڽÀ´Ï±î?
+    IfMsgBox, No
+        break
+}
+

+¸Å°³º¯¼ö°¡ ÆÄÀÏ À̸§À̸é, ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ±× À̸§À» ¿ÏÀüÇÑ/Àý´ë °æ·Î¸¦ Æ÷ÇÔÇÏ¿© ´ë¼Ò¹®ÀÚ¸¦ ±³Á¤ÇÑ ±â´Ù¶õ À̸§À¸·Î º¯È¯ÇÒ ¼ö ÀÖ½À´Ï´Ù (ÆÄÀÏ ½Ã½ºÅÛ¿¡ ÀúÀåµÈ °Í°ú °°Àº):

+
Loop %0%  ; °¢ ¸Å°³º¯¼ö¿¡ ´ëÇÏ¿© (¶Ç´Â ½ºÅ©¸³Æ®¿¡ ¶³±º °¢ ÆÄÀÏ¿¡ ´ëÇÏ¿©):
+{
+    GivenPath := %A_Index%  ;  A_Index¿¡ Æ÷ÇÔµÈ À̸§À» °¡Áø º¯¼öÀÇ ³»¿ëÀ» °¡Á®¿É´Ï´Ù.
+    Loop %GivenPath%, 1
+        LongPath = %A_LoopFileLongPath%
+    MsgBox ´ë¼Ò¹®ÀÚ¸¦ ±³Á¤ÇÑ ±â´Ù¶õ °æ·ÎÀÇ ÆÄÀÏÀ̸§Àº`n%GivenPath%`n´ÙÀ½°ú °°½À´Ï´Ù:`n%LongPath%
+}
+

¾Ë·ÁÁø ÇÑ°è: ÆÄÀÏÀ» ²ø¾î .ahk ½ºÅ©¸³Æ®¿¡ ¶³¾îÆ®¸± ¶§ NTFS ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ 8-Á¡-3 (ªÀº) À̸§ÀÌ ²¨Á® ÀÖÀ¸¸é Á¦´ë·Î ÀÛµ¿ÇÏÁö ¸øÇÒ °¡´É¼ºÀÌ ³ô½À´Ï´Ù. ÇÑ °¡Áö ¿ìȸåÀº ½ºÅ©¸³Æ®¸¦ ÄÄÆÄÀÏÇÑ ´ÙÀ½ ±× °á°ú ÆÄÀÏÀ» ±× °á°ú EXE ÆÄÀÏ À§¿¡ ²ø¾î ¶³±¸´Â °ÍÀÔ´Ï´Ù.

+ +

½ºÅ©¸³Æ® ÆÄÀÏ ÄÚµåÆäÀÌÁö [AHK_L 51+]

+

½ºÅ©¸³Æ® ÆÄÀÏ¿¡ Æ÷ÇԵǴ ¹®ÀÚ´Â ±× ÆÄÀÏÀ» ÀûÀçÇϴµ¥ »ç¿ëµÈ ÄÚµåÆäÀÌÁö¿¡ Á¦Çѵ˴ϴÙ.

+
    +
  • ÆÄÀÏÀÌ UTF-8 ¶Ç´Â UTF-16 (LE) ¹ÙÀÌÆ® ¼ø¼­ Ç¥½ÄÀ¸·Î ½ÃÀÛÇϸé, ÀûÀýÇÑ ÄÚµå ÆäÀÌÁö°¡ »ç¿ëµÇ°í /CPn ½ºÀ§Ä¡´Â ¹«½ÃµË´Ï´Ù.
  • +
  • /CPn ½ºÀ§Ä¡°¡ ¸í·É¾î ÁÙ¿¡ °Ç³×Áö¸é, ÄÚµåÆäÀÌÁö nÀÌ »ç¿ëµË´Ï´Ù. À¯È¿ÇÑ ÄÚµå ÆäÀÌÁö ½Äº°ÀÚ ¹øÈ£´Â MSDNÀ» ÂüÁ¶ÇϽʽÿÀ.
  • +
  • ´Ù¸¥ °æ¿ì´Â ¸ðµÎ ½Ã½ºÅÛ ±âº» ANSI ÄÚµå ÆäÀÌÁö°¡ »ç¿ëµË´Ï´Ù.
  • +
+

ÀÌ ¿øÄ¢Àº ¿ÀÅäÇÖÅ°°¡ ÀûÀçÇÏ´Â ½ºÅ©¸³Æ® ÆÄÀÏ¿¡¸¸ Àû¿ëµË´Ï´Ù. ½ºÅ©¸³Æ® ÀÚüÀÇ ÆÄÀÏ I/O¿¡´Â Àû¿ëµÇÁö ¾Ê´Â´Ù´Â °ÍÀ» ÁÖÀÇÇϽʽÿÀ. ÆÄÀÏÀÎÄÚµùÀº ½ºÅ©¸³Æ®°¡ ÀÐ°í ¾²´Â ±âº» ÀÎÄÚµùÀ» Á¦¾îÇÕ´Ï´Ù. ¹Ý¸é¿¡ IniRead¿Í IniWrite´Â ¾ðÁ¦³ª UTF-16 ¶Ç´Â ANSI¸¦ Ãë±ÞÇÕ´Ï´Ù.

+

¸ðµç ÅؽºÆ®°¡ (ÇÊ¿äÇϸé) °íÀ¯ÀÇ ¹®ÀÚ¿­ Çü½ÄÀ¸·Î º¯È¯µÇ¹Ç·Î, À¯È¿ÇÏÁö ¾Ê°Å³ª °íÀ¯ÀÇ ÄÚµåÆäÀÌÁö¿¡ Á¸ÀçÇÏÁö ¾Ê´Â ¹®ÀÚ´Â À§Ä¡º¸À¯ÀÚ·Î ±³Ã¼µË´Ï´Ù: ANSI¶ó¸é '?'·Î ±³Ã¼µÇ°í Unicode´Â '�'·Î ±³Ã¼µË´Ï´Ù. À¯´ÏÄÚµå ºôµåº»Àº ¿ÀÁ÷ ½ºÅ©¸³Æ® ÆÄÀÏ¿¡ ÀÎÄÚµù ¿¡·¯°¡ ÀÖÀ» °æ¿ì ¶Ç´Â ÆÄÀÏÀ» ÀûÀçÇÏ°í ÀúÀåÇÏ´Â µ¥ »ç¿ëµÈ ÄÚµå ÆäÀÌÁö°¡ ÀÏÄ¡ÇÏÁö ¾ÊÀ» °æ¿ì¿¡¸¸ ±³Ã¼°¡ ÀϾ´Ï´Ù.

+

RegWrite´Â ÀͽºÇ÷η¯·Î ±âµ¿µÈ ½ºÅ©¸³Æ®¿¡ ´ëÇÏ¿© ±âº»°ªÀ» ¼³Á¤ÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù(¿¹, ´õºíŬ¸¯ ½ÇÇà):

+
; ¾Æ·¡ÀÇ ÀûÀýÇÑ ÁÙ¿¡ ÁÖ¼®À» °È¾î³»°í ¸ðµÎ ÁÖ¼® ó¸®Çؼ­
+; ÇöÀç ºôµåÀÇ ±âº»°ªÀ¸·Î ¸®¼ÂÇÕ´Ï´Ù. ÇÊ¿äÇÑ ´ë·Î º¯°æÇÕ´Ï´Ù:
+; codepage = 0        ; ½Ã½ºÅÛ ±âº» ANSI ÄÚµåÆäÀÌÁö
+; codepage = 65001    ; UTF-8
+; codepage = 1200     ; UTF-16
+; codepage = 1252     ; ANSI ¶óƾ 1; ¼­±¸ À¯·´ (À©µµ¿ìÁî)
+if (codepage != "")
+    codepage := " /CP" . codepage
+cmd="%A_AhkPath%"%codepage% "`%1" `%*
+key=AutoHotkeyScript\Shell\Open\Command
+if A_IsAdmin    ; ¸ðµç »ç¿ëÀÚ¸¦ À§ÇØ ¼³Á¤ÇÕ´Ï´Ù.
+    RegWrite, REG_SZ, HKCR, %key%,, %cmd%
+else            ; ÇöÀç »ç¿ëÀÚ¿¡ ´ëÇؼ­¸¸ ¼³Á¤ÇÕ´Ï´Ù.
+    RegWrite, REG_SZ, HKCU, Software\Classes\%key%,, %cmd%
+

ÀÌ¹Ì ¿ÀÅäÇÖÅ°°¡ ¼³Ä¡µÇ¾î ÀÖ´Ù°í °¡Á¤ÇÕ´Ï´Ù. ±×·¸Áö ¾Ê´Ù¸é °á°ú°¡ ºÒ¸¸Á·½º·¯¿ï ¼öµµ ÀÖ½À´Ï´Ù.

+ +

½ºÅ©¸³Æ® µð¹ö±ëÇϱâ

+

+ListVars¿Í Pause°°Àº ¸í·É¾îµéÀº ½ºÅ©¸³Æ®¸¦ µð¹ö±×ÇÏ´Â µ¥ µµ¿òÀ» ÁÙ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ÀÇ µÎ ÁÙÀ» ÁÖÀÇ ±í°Ô ¼±ÅÃµÈ À§Ä¡¿¡ Àӽ÷Π»ðÀÔÇϸé, ½ºÅ©¸³Æ®¿¡ "Á¤Áö Á¡"À» ¸¸µì´Ï´Ù:

+
ListVars
Pause
+

+½ºÅ©¸³Æ®°¡ ÀÌ µÎ ÁÙÀ» ¸¸³ª¸é, ¸ðµç º¯¼öÀÇ ÇöÀç ³»¿ëÀ» È­¸é¿¡ º¸¿©ÁֹǷΠÁ¶»çÇÒ ¼ö ÀÖ½À´Ï´Ù. Àç°³ÇÒ Áغñ°¡ µÇ¸é, FileÀ̳ª Tray ¸Þ´º¸¦ ÅëÇÏ¿© Àç°³ÇÕ´Ï´Ù. ±×·¯¸é ½ºÅ©¸³Æ®´Â (Ȥ ÀÖ´Ù¸é) ´ÙÀ½ "Á¤Áö Á¡"¿¡ µµ´ÞÇÒ ¶§±îÁö °è¼Ó ÁøÇàÇÕ´Ï´Ù.

+

+ÀϹÝÀûÀ¸·Î ÀÌ·± "Á¤Áö Á¡"µéÀ» È°¼º âÀÌ ½ºÅ©¸³Æ®¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê´Â °÷¿¡ ¹èÄ¡ÇÏ´Â °ÍÀÌ Á¦ÀÏ ÁÁ½À´Ï´Ù. ¿¹¸¦ µé¾î WinActivate ¸í·É¾î ¹Ù·Î ´ÙÀ½ÀÌ ÁÁ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ½ºÅ©¸³Æ®´Â ÀûÀýÇÏ°Ô ¿¬»êÀ» Àç°³ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+´ÙÀ½ ¸í·É¾îµéµµ ¶ÇÇÑ µð¹ö±ë¿¡ À¯¿ëÇÕ´Ï´Ù: ListLines, KeyHistory, ±×¸®°í OutputDebug.

+

+¾ÆÁÖ ÈçÇÑ ¿¡·¯·Î, öÀÚ ¿À·ù³ª "global" ¼±¾ðÀ» »©¸Ô´Â °æ¿ì, °æ°í¸¦ ÄѸé ŽÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

»óÈ£´ëÈ­ µð¹ö±ë [AHK_L 11+]

+

+»óÈ£´ëÈ­ µð¹ö±ëÀº Áö¿øµÇ´Â DBGp Ŭ¶óÀ̾ðÆ®·Î °¡´ÉÇÕ´Ï´Ù. ÀüÇüÀûÀ¸·Î ´ÙÀ½ Á¶Ä¡°¡ °¡´ÉÇÕ´Ï´Ù:

+
    +
  • ÁÙ¿¡ Á¤ÁöÁ¡À» ¼³Ä¡ÇÏ°í Á¦°ÅÇÕ´Ï´Ù - Á¤ÁöÁ¡¿¡ µµ´ÞÇÏ¸é ½ÇÇàÀ» Á¤ÁöÇÕ´Ï´Ù.
  • +
  • ÁÙ ´ÜÀ§·Î Äڵ带 ¹â¾Æ°©´Ï´Ù - ÇÔ¼ö¿Í ¼­ºê·çƾ ¾ÈÀ¸·Î µé¾î°¡°í, °Ç³Ê ¶Ù°í, ³ª¿É´Ï´Ù.
  • +
  • ¸ðµç º¯¼ö ¶Ç´Â ƯÁ¤ º¯¼ö¸¦ °Ë»çÇÕ´Ï´Ù.
  • +
  • ½ÇÇàÁßÀÎ ¼­ºê·çƾ°ú ÇÔ¼öÀÇ ½ºÅÃÀ» º¾´Ï´Ù.
  • +
+

ÀÌ ±â´ÉÀº ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®¿¡´Â ²¨Á® ÀÖÀ½¿¡ À¯ÀÇÇϽʽÿÀ.

+

+»óÈ£´ëÈ­ µð¹ö±ëÀ» ÄÑ·Á¸é, ¸ÕÀú Áö¿øµÇ´Â µð¹ö°Å Ŭ¶óÀ̾ðÆ®¸¦ ±âµ¿ÇÑ ´ÙÀ½, ±× ½ºÅ©¸³Æ®¸¦ /Debug ¸í·É¾î ÁÙ ½ºÀ§Ä¡¿Í ÇÔ²² ±âµ¿ÇÕ´Ï´Ù.

+
AutoHotkey.exe /Debug[=SERVER:PORT] ...
+

+SERVER¿Í PORT´Â »ý·«Çصµ µË´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½Àº µ¿µîÇÕ´Ï´Ù:

+
AutoHotkey /Debug "myscript.ahk"
+AutoHotkey /Debug=localhost:9000 "myscript.ahk"
+ +

[AHK_L 59+]: +µð¹ö°Å¸¦ ÀÌ¹Ì ½ÇÇàÁßÀÎ ½ºÅ©¸³Æ®¿¡ ºÙÀÌ·Á¸é, ¾Æ·¡¿Í °°Àº ¸Þ½ÃÁö¸¦ Àü¼ÛÇϽʽÿÀ:

+
ScriptPath = ; ¿©±â¿¡ ½ºÅ©¸³Æ®ÀÇ Àüü °æ·Î¸¦ ¼³Á¤ÇϽʽÿÀ
+DetectHiddenWindows On
+ifWinExist %ScriptPath% ahk_class AutoHotkey
+    ; ¼±ÅÃÀû ¸Å°³º¯¼ö:
+    ;   wParam  = µð¹ö°Å Ŭ¶óÀ̾ðÆ®ÀÇ  IPv4 ÁÖ¼Ò, 32-ºñÆ® Á¤¼ö.
+    ;   lParam  = µð¹ö°Å Ŭ¶óÀ̾ðÆ®°¡ ÁÖ½ÃÇÏ°í ÀÖ´Â Æ÷Æ®.
+    PostMessage DllCall("RegisterWindowMessage", "str", "AHK_ATTACH_DEBUGGER")
+
+

+µð¹ö°Å Ŭ¶óÀ̾ðÆ®°¡ Á¢¼ÓµÇ¸é, ½ºÅ©¸³Æ®¸¦ Á¾·áÇÏÁö ¾Ê°íµµ ¶¿ ¼ö ÀÖ½À´Ï´Ù. "detach" DBGp ¸í·É¾î¸¦ Àü¼ÛÇÏ¸é µË´Ï´Ù.

+ +

AutoHotkey.exeÀÇ È£È¯¼º

+

+AutoHotkey.exe ÆÄÀϸ¸ ÀÖÀ¸¸é ¾î¶² .ahk ½ºÅ©¸³Æ®µµ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

[AHK_L 51+]: +AutoHotkey.exe À̸§À» ¹Ù²Ù¸é ±âº»°ªÀ¸·Î ½ÇÇàµÇ´Â ½ºÅ©¸³Æ®ÀÇ À̸§µµ ¹Ù²ò´Ï´Ù. ¿ÀÅäÇÖÅ°¸¦ ¼³Ä¡ÇÏÁö ¾Ê°í ÄÄÇ»ÅÍ¿¡ »ç¿ëÇϱâ À§ÇØ ½ºÅ©¸³Æ®¸¦ ÄÄÆÄÀÏÇÏ´Â ¹æ¹ýÀÇ ´ë¾ÈÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é, MyScript.exe´Â ÆÄÀÏÀ̸§ÀÌ ÁÖ¾îÁöÁö ¾ÊÀ¸¸é ÀÚµ¿À¸·Î MyScript.ahk¸¦ ½ÇÇàÇÕ´Ï´Ù. ±×·¯³ª ´Ù¸¥ ½ºÅ©¸³Æ®µµ ¿ª½Ã ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

¼³Ä¡ ¿É¼Ç

+

+Á¶¿ëÇÏ°Ô ¿ÀÅäÇÖÅ°´Â ±âº» µð·ºÅ丮¿¡ ¼³Ä¡ÇÏ·Á¸é (À¯/¼ÒÀ½ ¸ðµå¿¡¼­ º¸¿©ÁÖ´Â µð·ºÅ丮), ¸Å°³º¯¼ö /S¸¦ ¼³Ä¡±â¿¡ °Ç³×¸é µË´Ï´Ù. ¿¹¸¦ µé¾î:

+
AutoHotkey110800_Install.exe /S
+

+±âº» µð·ºÅ丮 ¸»°í ´Ù¸¥ µð·ºÅ丮¿¡ ¼³Ä¡ÇÏ·Á¸é /D ¸Å°³º¯¼ö·Î ÁöÁ¤ÇÕ´Ï´Ù ( /S°¡ ¾øÀ» °æ¿ì, ¼³Ä¡±â°¡ º¸¿©ÁÖ´Â ±âº» µð·ºÅ丮°¡ º¯°æµË´Ï´Ù). ¿¹¸¦ µé¾î:

+ +
AutoHotkey110800_Install.exe /S /D=C:\Program Files\AutoHotkey
+

+¿ÀÅäÇÖÅ°°¡ ¹ú½á ¼³Ä¡µÇ¾î ÀÖ´Ù¸é, ÀÚµ¿À¸·Î ¾î´À ¹öÀüÀÇ AutoHotkey.exeÀÎÁö ŽÁöÇÏ¿© ±âº»°ªÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ±âº»°ªÀº À¯´ÏÄÚ 32-ºñÆ® ¶Ç´Â À¯´ÏÄÚµå 64-ºñÆ®·Î¼­ OS°¡ 64-ºñÆ®Àΰ¡ ¾Æ´Ñ°¡¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù. ±âº»°ªÀ¸·Î ¼³Á¤µÈ AutoHotkey.exe ¹öÀüÀ» ¿À¹ö¶óÀ̵å ÇÏ·Á¸é, ´ÙÀ½ ½ºÀ§Ä¡ Áß Çϳª¸¦ °Ç³×¸é µË´Ï´Ù:

+
    +
  • /A32 ¶Ç´Â /ANSI: ANSI 32-ºñÆ®.
  • +
  • /U64 ¶Ç´Â /x64: À¯´ÏÄÚµå 64-ºñÆ® (64-ºñÆ® ¿î¿µÃ¼Á¦¿¡¼­¸¸ À¯È¿ÇÔ).
  • +
  • /U32: À¯´ÏÄÚµå 32-bit.
  • +
+

¿¹¸¦ µé¾î, ´ÙÀ½Àº Á¶¿ëÇÏ°Ô ANSI 32-ºñÆ®¸¦ ±âº»°ªÀ¸·Î ¼³Á¤ÇÏ°í ¼³Ä¡ÇÕ´Ï´Ù:

+
AutoHotkey110800_Install.exe /S /A32
+

+Á¶¿ëÇÏ°Ô AutoHotkey¸¦ Á¦°ÅÇÏ·Á¸é, /Uninstall ¸Å°³º¯¼ö¸¦ Installer.ahk¿¡ °Ç³Ü´Ï´Ù. ¿¹¸¦ µé¾î:

+
"C:\Program Files\AutoHotkey\AutoHotkey.exe" "C:\Program Files\AutoHotkey\Installer.ahk" /Uninstall
+

+AutoHotkey°¡ 1.1.08.00 ÀÌÀü ¹öÀüÀ̶ó¸é, uninst.exe /S¸¦ »ç¿ëÇϽʽÿÀ. ¿¹¸¦ µé¾î:

+ +
"C:\Program Files\AutoHotkey\uninst.exe" /S
+

+ÁÖÀÇ: Installer.ahk´Â °ü¸®ÀÚ ±ÇÇÑÀ¸·Î ½ÇÇàÇØ¾ß Á¦´ë·Î ÀÛµ¿ÇÕ´Ï´Ù.

+

+ÀÌÈÄ ¹öÀüÀº ¿ìÇÏ ¸ð¼­¸®¿¡ ¸µÅ©°¡ Æ÷ÇԵǾî À־ ¼³Ä¡ÇÒ ÇÊ¿ä ¾øÀÌ ¼³Á¤ ÆÄÀÏÀ» ÃßÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ±â´ÉÀÌ ÀÖÀ¸¸é /E ½ºÀ§Ä¡¸¦ »ç¿ëÇØ ¸í·É ÁÙ¿¡¼­ ÃßÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
AutoHotkey110903_Install.exe /D=F:\AutoHotkey /E
+

+Á¶¿ëÇÑ ¼³Ä¡/Á¦°Å ¸ðµå¿¡¼­ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇϸé ÇÊ¿äÇÑ °æ¿ì ÀÚµ¿À¸·Î ´ÝÈü´Ï´Ù. /R ½ºÀ§Ä¡¸¦ °Ç³×¸é (v1.1.19.02+ ÇÊ¿ä) ½ÇÇà ÁßÀÎ EXE¸¦ ÀÌ¿ëÇÏ¿© ÀÚµ¿À¸·Î ÀÌ·± ½ºÅ©¸³Æ®¸¦ ÀçÀûÀçÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸í·É¾î ÁÙ ÀÎÀÚ°¡ ÇÊ¿ä ¾ø½À´Ï´Ù. +Installer.ahk¸¦ »ç¿ëÇÏ¿© ¼³Á¤À» º¯°æÇÒ ¶§ ÀÌ ¿É¼ÇÀº ÇöÀç Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.

+ +

½ºÅ©¸³Æ® ¿¹Á¦

+

À¯¿ëÇÑ ½ºÅ©¸³Æ®´Â ÀÌ ÆäÀÌÁö¿¡¼­ º¸½Ç ¼ö ÀÖ½À´Ï´Ù.

+ + diff --git a/src/docs/Tutorial.htm b/src/docs/Tutorial.htm new file mode 100644 index 0000000..c3086fc --- /dev/null +++ b/src/docs/Tutorial.htm @@ -0,0 +1,1203 @@ + + + + + + + + + AutoHotkey Beginner Tutorial + + + + + +
+

¿ÀÅäÇÖÅ° Ãʺ¸ÀÚ ÀÚ½À¼­, ÀÛ¼º ƼµåºñÆ®(tidbit)

+ +
+
+

1 - ±âº» Áö½Ä

+

+ ¿©ÇàÀ» ½ÃÀÛÇϱâ Àü¿¡, Á¶¾ðÀ» ÇÑ ¸¶µð ÇÒ±î ÇÕ´Ï´Ù. + ÀÌ ÀÚ½À¼­¿¡¼­ ¿©·¯ºÐÀº ²Ï ¸¹Àº ÅؽºÆ®¿Í Äڵ带 º¸½Ã°Ô µË´Ï´Ù. + ¹è¿ì´Â ÈûÀ» Å°¿ì·Á¸é, ÅؽºÆ®¸¦ Àаí Äڵ带 ½ÃÇèÇØ º¾´Ï´Ù. + ´ÙÀ½ ±× Äڵ带 ¿¬±¸ÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù. +
ÀÌ ÆäÀÌÁö¿¡¼­ ´ëºÎºÐÀÇ ¿¹Á¦¸¦ º¹»çÇØ ºÙ¿© ³ÖÀ» ¼ö ÀÖ½À´Ï´Ù. +
Àß ¸ð¸£°Ú´Ù¸é, ´Ù½Ã ÀÐ¾î º¸½Ê½Ã¿À. +

+ +

a. ¿ÀÅäÇÖÅ°¸¦ ³»·Á¹Þ¾Æ ¼³Ä¡Çϱâ

+ + +

+ AutoHotkey (AHK)ÀÇ »ç¿ë¹ýÀ» ¹è¿ì±â¿¡ ¾Õ¼­, ³»·Á ¹Þ¾Æ¾ß ÇÏ°Ú½À´Ï´Ù. + ³»·Á ¹Þ¾ÒÀ¸¸é, ¼³Ä¡ÇØ¾ß °ÚÁö¿ä. ±×·¯³ª ±×°ÍÀº ¿øÇÏ´Â ¹öÀüÀÌ ¹«¾ùÀΰ¡¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù. + ÀÌ Áöħ¼­¿¡¼­´Â ¼³Ä¡±â¸¦ »ç¿ëÇÏ°Ú½À´Ï´Ù. °¡Àå ½±°Ô ¼³Ä¡ÇÒ ¼ö ÀÖÀ¸´Ï±î¿ä. +

+ + +

ÅؽºÆ® Áö½Ã:

+
    +
  1. AutoHotkey ȨÆäÀÌÁö·Î °©´Ï´Ù. + http://ahkscript.org/ +
  2. +
  3. ³»·Á¹Þ½À´Ï´Ù. + http://ahkscript.org/download/ahk-install.exe +
  4. +
  5. + AutoHotkey¸¦ ¼³Ä¡ÇÏ´Â µ¿¾È UNICODE ¶Ç´Â ANSI Áß Çϳª¸¦ °ñ¶ó¾ß ÇÕ´Ï´Ù. + ª°Ô ¸»ÇØ, ¾Æ¸¶µµ UNICODE¸¦ ¼±ÅÃÇÏ´Â ÆíÀÌ ÁÁ½À´Ï´Ù. + ¿µ¹®ÀÚ-¾Æ´Ñ ¹®ÀÚ¿Í ¼ýÀÚµéÀ» Áö¿øÇϰŵç¿ä. + ¼³Ä¡ ¹öÆ°ÀÌ ³ª¿Ã ¶§±îÁö °è¼Ó ÁøÇàÇÕ´Ï´Ù. +
  6. +
  7. ÀÏ´Ü ³¡³µÀ¸¸é, ¼º°øÀÔ´Ï´Ù! ¼½¼Ç b¿¡¼­ °è¼ÓÇÕ´Ï´Ù.
  8. +
+

µ¿¿µ»ó Áö½Ã:
+ Frankie's "Install and Hello World"
+ http://www.autohotkey.com/forum/viewtopic.php?t=77674 +

+ +

b. ½ºÅ©¸³Æ® ¸¸µå´Â ¹ý

+

+ ¿ÀÅäÇÖÅ°¸¦ ¼³Ä¡ÇßÀ¸¸é, ¹º°¡ ÀÏÀ» ½ÃÅ°°í ½Í°ÚÁö¿ä. + ¿ÀÅäÇÖÅ°°¡ ¸¶¹ýÀº ¾Æ´Õ´Ï´Ù. ¿ì¸® ¸ðµÎ°¡ ±×·¸±â¸¦ ¹Ù¶óÁö¸¸, ½ÇÁ¦·Î´Â ¾Æ´Õ´Ï´Ù. + ±×·¡¼­ ¹«½¼ ÀÏÀ» Ç϶ó°í Áö½ÃÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. + ÀÌ·± ÀýÂ÷¸¦ "½ºÅ©¸³ÆÃ(Scripting)"À̶ó°í ºÎ¸¨´Ï´Ù. +

+ +

ÅؽºÆ® Áö½Ã:

+
    +
  • 1. µ¥½ºÅ©Å¾¿¡ ¿ìŬ¸¯ÇÕ´Ï´Ù.
  • +
  • 2. ¸Þ´º¿¡¼­ "New"¸¦ ã½À´Ï´Ù.
  • +
  • 3. "New" ¸Þ´º ¾È¿¡ "AutoHotkey Script"¸¦ Ŭ¸¯ÇÕ´Ï´Ù.
  • +
  • 4. ½ºÅ©¸³Æ®¿¡ »õ À̸§À» ÁÝ´Ï´Ù. ÁÖÀÇ: È®ÀåÀÚ´Â .ahk·Î ³¡³ª¾ß ÇÕ´Ï´Ù. ¿¹. MyScript.ahk
  • +
  • 5. µ¥½ºÅ©Å¾¿¡ »õ·Î ¸¸µé¾îÁø ÆÄÀÏÀ» ã¾Æ ¿ìŬ¸¯ÇÕ´Ï´Ù.
  • +
  • 6. "Edit Script"¸¦ Ŭ¸¯ÇÕ´Ï´Ù.
  • +
  • 7. âÀÌ ¿­¸± °Ì´Ï´Ù. ¾Æ¸¶µµ ³ëÆ®ÆеåÀÌ°ÚÁö¿ä. ±×·¸´Ù¸é, ¼º°øÀÔ´Ï´Ù! +
    +

    + ÀÌÁ¦ ½ºÅ©¸³Æ®¸¦ ¸¸µé¾úÀ¸¹Ç·Î, ÆÄÀÏ ¾È¿¡ ³»¿ëÀ» ä¿ö ³Ö¾î¾ß ÇÏ°Ú½À´Ï´Ù. + ¸ðµç ³»Àå ¸í·É¾î¿Í ÇÔ¼ö ±×¸®°í º¯¼ö ¸ñ·ÏÀº + section 5¿¡¼­ º¸½Ç ¼ö ÀÖ½À´Ï´Ù.
    +

    +

    + ´ÙÀ½Àº ÇÖÅ°¸¦ ´ã°í ÀÖ´Â ¾ÆÁÖ °£´ÜÇÑ ½ºÅ©¸³Æ®ÀÔ´Ï´Ù. + ±× ÇÖÅ°°¡ ´­¸®¸é Send ¸í·É¾î¸¦ »ç¿ëÇÏ¿© ÅؽºÆ®¸¦ ŸÀÚÇÕ´Ï´Ù. +

    + +
    +^j::
    +   Send, ³ªÀÇ Ã¹ ¹ø° ½ºÅ©¸³Æ®
    +Return
    +
    +

    + ³ªÁß¿¡ ´õ ±íÀÌ µé¾î°¡ º¸°Ú½À´Ï´Ù. ±× ¶§±îÁö, ¿©±â¿¡¼­´Â À§ÀÇ Äڵ带 ¼³¸íÇÕ´Ï´Ù.
    + + - ù ÁÙ. ^j::°¡ ¹Ù·Î ÇÖÅ°ÀÔ´Ï´Ù. + ^´Â CTRLÀ» ÀǹÌÇÏ°í, j´Â ±âÈ£¹®ÀÚ jÀÔ´Ï´Ù. + ::ÀÇ ¿ÞÂÊ¿¡ ÀÖ´Â °ÍÀº ¸ðµÎ ´©¸¦ ÇÊ¿ä°¡ ÀÖ´Â Å°µéÀÔ´Ï´Ù.
    + + - µÑ° ÁÙ. Send, My First Script´Â Å°µéÀ» Àü¼ÛÇÏ´Â(SEND) ¹ýÀ» º¸¿©ÁÝ´Ï´Ù. + SEND´Â ¸í·É¾îÀÌ°í, ½°Ç¥(,) ´ÙÀ½¿¡ ¿À´Â °ÍµéÀÌ ¸ðµÎ ŸÀڵ˴ϴÙ.
    + + - ¼Â° ÁÙ. Return. ReturnÀº ¾ÕÀ¸·Î °¡Àå ¸¹ÀÌ Á¢ÇÏ°Ô µÇ½Ç °Ì´Ï´Ù. + ¹®ÀÚ ±×´ë·Î Äڵ带 ¸ØÃä´Ï´Ù. ¾Æ·¡·Î ´õ ÀÌ»ó ÁøÇàÇÏÁö ¾Ê½À´Ï´Ù. + ÀÌ·¸°Ô ÇÏ¸é ½ºÅ©¸³Æ®¿¡ ¸¹Àº ³»¿ëÀÌ ÀÖÀ» ¶§ ¹®Á¦¸¦ ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù. +

    +
    +
  • 8. ÆÄÀÏÀ» ÀúÀåÇÕ´Ï´Ù.
  • +
  • 9. µ¥½ºÅ©Å¾ÀÇ ±× ÆÄÀÏÀ» ´õºíŬ¸¯ÇÏ¿© ½ÇÇàÇÕ´Ï´Ù. ³ëÆ®Æе带 ¿±´Ï´Ù (¹«¾ùÀ̵ç ŸÀÚÇØ ³ÖÀ» ¼ö ÀÖ½À´Ï´Ù). + ±×¸®°í Ctrl and J¸¦ ´©¸¨´Ï´Ù.
  • +
  • 10. ¸ÚÁöÁö¿ä, ¼º°øÀÔ´Ï´Ù! ù ½ºÅ©¸³Æ®°¡ ½ÇÇàµÇ¾ú½À´Ï´Ù. °¡¼­ Àá½Ã ½¬°í µ¹¾Æ¿Í ÀÌ ÀÚ½À¼­¸¦ °è¼Ó Àо½Ê½Ã¿À..
  • +
+ +

+ ºñµð¿À Áö½Ã:
+ Frankie's "Install and Hello World"
http://www.autohotkey.com/forum/viewtopic.php?t=77674 + +

+

c. ¸í·É¾î´Â º´ÇÕÇÒ ¼ö ¾ø½À´Ï´Ù

+

+ Äڵ带 ¸¸µé ¶§, ¿©·¯ ¸í·É¾îµéÀ» ÇÑ ÁÙ¿¡ ¶Ç´Â ÇÑ ¸í·É¾î ¾È¿¡ ´Ù¸¥ ¸í·É¾î¸¦ ¹èÄ¡ÇÏ°í ½ÍÀº À¯È¤¿¡ ºüÁú °æ¿ì°¡ ¸¹À» °ÍÀÔ´Ï´Ù. + Àý´ë ±×·¸°Ô ÇÏÁö ¸¶½Ê½Ã¿À. ¼½¼Ç 5¿¡¼­ ¿Ö ¿¹»óÇÑ´ë·Î ÀÛµ¿ÇÏÁö ¾Ê´ÂÁö ±×¸®°í ´ë½Å¿¡ ¾î¶»°Ô Çϸé ÁÁÀºÁö ¸»¾¸µå¸®°Ú½À´Ï´Ù. +

+ +

d. ±âŸ ±âº»ÀûÀÎ Á¤º¸µé

+
+ µµ¿ò¸» ÆÄÀÏ Ã£´Â ¹ý:
+ ¸î °¡Áö ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. µµ¿ò¸»ÀÌ ±âº» À§Ä¡¿¡ ¼³Ä¡µÇ¾î ÀÖ´Ù°í °¡Á¤ÇÏ°Ú½À´Ï´Ù..

+ ¹æ¹ý 1: +
    +
  1. ½ÃÀÛ ¸Þ´º¸¦ ã°Å³ª È­¸é¿¡¼­ Start Orb¸¦ ¿±´Ï´Ù. º¸Åë ÁÂÇÏ¿¡ ÀÖ½À´Ï´Ù.
  2. +
  3. ÇÁ·Î±×·¥ ¶Ç´Â ¸ðµç ÇÁ·Î±×·¥À» ¼±ÅÃÇÕ´Ï´Ù.
  4. +
  5. ¸ñ·Ï¿¡¼­ AutoHotkey¸¦ ã½À´Ï´Ù.
  6. +
  7. ã¾ÒÀ¸¸é AutoHotkey µµ¿ò¸» ÆÄÀÏÀÌ º¸ÀÏ °Ì´Ï´Ù. ±×°ÍÀ» Ŭ¸¯ÇÕ´Ï´Ù.
  8. +
  9. ³¡ÀÔ´Ï´Ù!
  10. +
+ ¹æ¹ý 2: +
    +
  1. µ¥½ºÅ©Å¾À¸·Î °©´Ï´Ù.
  2. +
  3. ³» ÄÄÇ»ÅÍ ¶Ç´Â ÄÄÇ»Å͸¦ ã½À´Ï´Ù. ±×°ÍÀ» ¿±´Ï´Ù.
  4. +
  5. AutoHotkey°¡ µé¾îÀÖ´Â ÇÏµå µå¶óÀ̺ê·Î °©´Ï´Ù. ¾Æ¸¶µµ C:\ µå¶óÀ̺êÀÌ°ÚÁö¿ä.
  6. +
  7. Program Files Æú´õ ¾È¿¡¼­ AutoHotkey¸¦ °Ë»öÇÕ´Ï´Ù.
  8. +
  9. AutoHotkey.chm¸¦ ã°Å³ª À̸§ÀÌ AutoHotkeyÀÎ ÆÄÀÏÀ» ã½À´Ï´Ù. ±× À§¿¡ ³ë¶õ»ö ¹°À½Ç¥°¡ ÀÖ½À´Ï´Ù.
  10. +
  11. ³¡ÀÔ´Ï´Ù!
  12. +
+
+

+ ¿Â¶óÀÎ ¸µÅ©:
+ ¹®¼­
+ ¸í·É¾î ¸®½ºÆ®
+ ÇÔ¼ö
+ º¯¼ö +

+
+
+

2 - ÇÖÅ° & ÇÖ½ºÆ®¸µ

+ +

+ ÇÖÅ°¶õ ¹«¾ùÀΰ¡? ÇÖÅ°´Â ¼Õ±æ¿¡ ¹ÝÀÀÇÏ´Â Å°ÀÔ´Ï´Ù. ... ³ó´ãÀÔ´Ï´Ù. ÇÖÅ°´Â »ç¿ëÀÚ°¡ Å°º¸µå¸¦ ´­·¯ ¾î¶² ÇàÀ§¸¦ Ã˹߽ÃÅ°´Â Å° ¶Ç´Â Å°ÀÇ Á¶ÇÕÀÔ´Ï´Ù.
+ ÇÖ½ºÆ®¸µÀ̶õ ¹«¾ùÀΰ¡? ÇÖ½ºÆ®¸µÀº ÁַΠŸÀÚÇÏ´Â µ¿¾È ¾àÀÚ¸¦ È®´ëÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù (ÀÚµ¿-ġȯ). ¶Ç ½ºÅ©¸³Æ® ÇàÀ§¸¦ Ã˹߽ÃÅ°´Â µ¥¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. +

+ +

´ÙÀ½Àº ÇÖÅ°ÀÔ´Ï´Ù:

+ +
+^j::
+   Send, ³ªÀÇ Ã¹ ¹ø° ½ºÅ©¸³Æ®
+Return
+
+ +

´ÙÀ½Àº ÇÖ½ºÆ®¸µÀÔ´Ï´Ù:

+ +
+::ftw::Free the whales
+
+ +

µÎ ¿¹Á¦ »çÀÌÀÇ Â÷ÀÌ´Â ÇÖÅ°°¡ CTRL & J¸¦ ´©¸¦ ¶§ Ã˹ߵÇÁö¸¸ ÇÖ½ºÆ®¸µÀº "ftw"¸¦ ŸÀÚÇÏ¸é ¹Ù·Î "Free the whales"·Î ġȯÇÕ´Ï´Ù.

+

+ "±×·¡¼­, Á¤È®ÇÏ°Ô ¾î¶»°Ô ÇÖÅ°¸¦ ¸¸µå´Â°¡?" + ÁÁÀº Áú¹®ÀÔ´Ï´Ù. ÇÖÅ°´Â ÇÑ ½ÖÀÇ ::·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù. Å°³ª Å° Á¶ÇÕÀÇ ¿À¸¥ÂÊ¿¡ ::ÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ±×¸®°í ³»¿ëÀº ¾Æ·¡¿¡ ÀÖ¾î¾ß ÇÏ°í, ¹Ù·Î µû¶ó¼­ ¾Æ·¡¿¡ ReturnÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù.
+

+

ÁÖÀÇ: ¿¹¿Ü°¡ ÀÖÁö¸¸, ±×·± °ÍµéÀº È¥¶õ¸¸ °¡Áß ½Ãų »ÓÀÔ´Ï´Ù. ±×·¡¼­ ±×·± °ÍµéÀº ÀÌ ÀÚ½À¼­¿¡¼­ ´Ù·çÁö ¾Ê½À´Ï´Ù. Àû¾îµµ Áö±ÝÀº ¾Æ´Õ´Ï´Ù.

+
+esc::
+   MsgBox Escape!!!!
+Return
+
+

ÇÖ ½ºÆ®¸µÀº ÇÑ ½ÖÀÇ ::·Î ¸¸µì´Ï´Ù. ±× »çÀÌ¿¡ ÅؽºÆ® ±³Ã¼¸¦ Ã˹ßÇÏ°í ½ÍÀº ÅؽºÆ®¸¦ ³Ö½À´Ï´Ù. + ¹Ý¸é¿¡ ŸÀÚµÈ ÅؽºÆ®¸¦ ´ë½ÅÇÒ ÅؽºÆ®´Â µÎ ¹ø° :: ½ÖÀÇ ¿À¸¥ÂÊ¿¡ ¹èÄ¡ÇÕ´Ï´Ù.

+

ÇÖ½ºÆ®¸µÀº À§¿¡ ¾ð±ÞÇÑ ¹Ù¿Í °°ÀÌ ½ºÅ©¸³Æ®µÈ ÇàÀ§¸¦ Ã˹ßÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÖÅ°¿Í ¶È °°ÀÌ "¸ÚÁö°Ô ÀÏÀ» ÇϰŶó"¿Í °°Àº ¸¶¹ýÀÇ ÁÖ¹®ÀÔ´Ï´Ù.

+
+::btw::
+   MsgBox You typed "btw".
+Return
+
+ +

+ ¾Ë¾Æ¾ß ÇÒ ¸ÚÁø ÀÏÀº °¢ ÇÖÅ°, ÇÖ ½ºÆ®¸µ, ¶óº§ ±×¸®°í ¾ÆÁ÷ ¾ð±ÞÇÏÁö ¾ÊÀº ¸¹Àº °Íµé¸¶´Ù + ¸¹Àº ÁÙÀÇ Äڵ带 °¡Áú ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. +

+ +
+^j::
+   MsgBox Wow!
+   MsgBox this is
+   Run, Notepad.exe
+   winactivate, Untitled - Notepad
+   WinWaitActive, Untitled - Notepad
+   send, 7 lines{!}{enter}
+   sendinput, inside the ctrl{+}j hotkey
+Return
+
+ +

a. Å°¿Í ±×ÀÇ ½ÅºñÇÑ ½Éº¼

+ +
+ ±Ã±ÝÇÏ½Ç °Ì´Ï´Ù. "µµµ¥Ã¼ ¾î¶»°Ô ^ÀÌ CTRLÀ» ¶æÇÑ´Ù´Â °É ¾Ë ¼ö ÀÖÁö?!". À½, ÁÁÀº Áú¹®ÀÔ´Ï´Ù. + ^¿Í ±âŸ ½Éº¼ÀÌ ¹«¾ùÀ» ¶æÇÏ´ÂÁö µ½±â À§ÇØ, ´ÙÀ½ Ç¥¿¡ ¸ð¾Æ º¸¾Ò½À´Ï´Ù:
+ + + + + + + + + + +
½Éº¼¼³¸í
#Win (À©µµ¿ìÁî ·Î°í Å°)
!Alt
^Control
+Shift
+ & + + ¾ÚÆÛ¼¾µå´Â µÎ °³ÀÇ Å° ¶Ç´Â ¸¶¿ì½º ¹öÆ° »çÀÌ¿¡ »ç¿ëµÇ¾î ¸ÂÃã ÇÖÅ°·Î Á¶ÇÕÇØ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. +
+

+ + (¿ÏÀüÇÑ ½Éº¼ ¸ñ·ÏÀº ÇÖÅ° ÆäÀÌÁö¸¦ ÂüÁ¶ÇÕ´Ï´Ù) + +

+
+

+ Ãß°¡·Î, ´ÙÀ½Àº ÇÖÅ°ÀÇ ¿ÞÂÊ¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ¸ðµç/°ÅÀÇ ´ëºÎºÐÀÇ ÇÖÅ° À̸§ ¸ñ·ÏÀÔ´Ï´Ù:
KeyList.htm +

+

+ µÎ °³ÀÇ Å°¸¦ (¿ÀÁ÷ µÎ °³±îÁö¸¸) Á¶ÇÕÇØ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù (Á¶À̽ºÆ½ ¹öÆ° Á¦¿Ü). + ±× »çÀÌ¿¡ &¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù. + ¾Æ·¡ÀÇ ¿¹Á¦¿¡¼­, Numpad0¸¦ ´©¸¥ ´ÙÀ½ + µÎ ¹ø° Å°¸¦ ´­·¯¼­ ÇÖÅ°¸¦ Ã˹߽ÃÄÑ º¸°Ú½À´Ï´Ù: +

+ +
+Numpad0 & Numpad1::
+   MsgBox Numpad0À» ´©¸£°í ÀÖ´Â µ¿¾È Numpad1¸¦ ´­·¶½À´Ï´Ù.
+Return
+
+Numpad0 & Numpad2::
+	Run Notepad
+Return
+
+ +

+ ±×·¯³ª ÀÌÁ¦ ÇÖ½ºÆ®¸µÀº ÇÖÅ°°¡ ±×·± °Íó·³ ¸ÚÁø ¼ö½ÄÅ°µéÀÌ ÀÖÀ»±î ±Ã±ÝÇÏ½Ç °Ì´Ï´Ù. ¹°·Ð ÀÖ½À´Ï´Ù!
+ ÇÖ½ºÆ®¸µ ¼ö½ÄÅ°´Â ù ¹ø° :: ½Ö »çÀÌ¿¡ µé¾î°©´Ï´Ù. ´ÙÀ½°ú °°ÀÌ: +

+ +
+:*:ftw::Free the whales
+
+ +

+ ÇÖÅ°¿Í ÇÖ½ºÆ®¸µ ¼ö½ÄÅ°¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸¿Í ¿¹Á¦´Â ´ÙÀ½À» ÂüÁ¶ÇÕ´Ï´Ù:
+ ÇÖÅ°
+ ÇÖ½ºÆ®¸µ +

+

b. â Àü¿ë ÇÖÅ°/ÇÖ½ºÆ®¸µ

+ +

Á¾Á¾ ÇÖÅ°³ª ÇÖ½ºÆ®¸µÀÌ Æ¯Á¤ â¿¡¼­¸¸ ÀÛµ¿ÇßÀ¸¸é (¶Ç´Â ÀÛµ¿ÇÏÁö ¸»¾ÒÀ¸¸é) ÇÏ°í ¹Ù¶ö °æ¿ì°¡ ÀÖ½À´Ï´Ù. ¾Õ¿¡ #¸¦ µÎ°í ´ÙÀ½ÀÇ È¯»óÀûÀÎ ¸í·É¾î¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù.

+

#IfWinActive
+ #IfWinExist

+

+ (±â¼úÀûÀ¸·Î "Áö½Ã¾î"¶ó°í ºÒ¸®¿ì´Â) ÀÌ Æ¯º°ÇÑ ¸í·É¾îµéÀº ¹®¸ÆÀ»-°¨ÁöÇÏ´Â ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀ» ¸¸µì´Ï´Ù. ±×³É â Á¦¸ñÀ» ÁöÁ¤ÇÏ¸é µË´Ï´Ù. ±×·¯³ª ¾î¶² °æ¿ì´Â HWND³ª ±×·ì ¶Ç´Â Ŭ·¡½º¸¦ ÁöÁ¤ÇÏ°í ½ÍÀ» °æ¿ìµµ ÀÖ½À´Ï´Ù. ±×·± °ÍµéÀº Á» °í±Þ ÁÖÁ¦À̹ǷΠ´ÙÀ½¿¡¼­ ´õ ±í°Ô ´Ù·ì´Ï´Ù: #IfWinActive. +

+
+#IfWinActive Untitled - Notepad
+#space::
+   MsgBox ³ëÆ®Æе忡¼­ Win+Spacebar¸¦ ´­·¶½À´Ï´Ù.
+Return
+#IfWinActive
+
+

¹®¸Æ °¨Áö¸¦ ²ô·Á¸é, #IfWin ¸í·É¾î´Â ÁöÁ¤Ç쵂 ±×ÀÇ ¸ðµç ¸Å°³º¯¼ö¸¦ ºó ä·Î µÎ¸é µË´Ï´Ù. ¿¹¸¦ µé¾î:

+
+; Notepad
+#IfWinActive untitled - Notepad
+!q::
+   MsgBox, ³ëÆ®Æе忡¼­  Alt ¿Í Q¸¦ ´­·¶½À´Ï´Ù.
+Return
+#IfWinActive
+
+; Untitled - Notepad°¡ ¾Æ´Ñ ¸ðµç â
+!q::
+   MsgBox, ¾î¶² âÀÎÁö´Â ¸ð¸£Áö¸¸ Alt¿Í Q¸¦ ´­·¶½À´Ï´Ù.
+Return
+
+

#IfWin ¸í·É¾î°¡ ²¨Á® ÀÖÀ¸¸é (¶Ç´Â ½ºÅ©¸³Æ® ¾È¿¡¼­ ÀüÇô »ç¿ëµÇÁö ¾ÊÀ¸¸é), ¸ðµç ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀº ¸ðµç â¿¡ ¹ÝÀÀÇÕ´Ï´Ù.


+

#IfWin ¸í·É¾î´Â À§Ä¡¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù: ¹°¸®ÀûÀ¸·Î ÀÌ ¸í·É¾î ¾Æ·¡¿¡ ÀÖ´Â ¸ðµç ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀº ¸ðµÎ ¿µÇâÀ» ¹Þ½À´Ï´Ù.

+ +
+; Notepad
+#IfWinActive ahk_class Notepad
+#space::
+   MsgBox, ³ëÆ®Æе忡¼­ Win+Spacebar¸¦ ´­·¶½À´Ï´Ù.
+Return
+::msg::You typed msg in Notepad
+#IfWinActive
+
+; MSPaint
+#IfWinActive untitled - Paint
+#space::
+   MsgBox, MSPaint¿¡¼­ Win+Spacebar¸¦ ´­·¶½À´Ï´Ù!
+Return
+::msg::You typed msg in MSPaint!
+#IfWinActive
+
+

´õ ±íÀº Á¤º¸°ú ºñ½ÁÇÑ ¸í·É¾îµéÀ» º¸·Á¸é, ´ÙÀ½À» ÂüÁ¶ÇÕ´Ï´Ù:
+ #IfWinActive

+

c. ÆÄÀÏ´ç ´ÙÁß ÇÖÅ°/ÇÖ½ºÆ®¸µ

+

¾î¶² ÀÌÀ¯·Î ÀÌ·± »ý°¢ÀÌ µå½ÇÁö ¸ð¸£°Ú½À´Ï´Ù. + ±×·¡¼­, ¸íÈ®ÇÏ°Ô ¹àÇô µÓ´Ï´Ù: + ¿ÀÅäÇÖÅ°´Â ÆÄÀÏ Çϳª´ç ¾ó¸¶µçÁö ¸¹Àº ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀ» °¡Áú ¼ö ÀÖ½À´Ï´Ù. 1À̵ç 3253À̵ç (±× ÀÌ»óÀ̵ç) »ó°ü¾ø½À´Ï´Ù.

+
+#i::
+   run, http://www.google.com/
+Return
+
+^p::
+   run, notepad.exe
+Return
+
+~j::
+   send, ack
+Return
+
+:*:acheiv::achiev
+::achievment::achievement
+::acquaintence::acquaintance
+:*:adquir::acquir
+::aquisition::acquisition
+:*:agravat::aggravat
+:*:allign::align
+::ameria::America
+
+ +

À§ÀÇ Äڵ带 ¿Ïº®ÇÏ°Ô ¹Þ¾ÆµéÀÏ ¼öÀÖ´Â ´ÙÁß ÇÖÅ°¿Í ´ÙÁß ÇÖ½ºÆ®¸µÀÔ´Ï´Ù. ¸ðµÎ°¡ Çϳª·Î ¹¶¶×±×·ÁÁø ÇູÇÑ ½ºÅ©¸³Æ® ÆÄÀÏÀ̳׿ä.

+ + +

d. ¿¹Á¦

+
::btw::By the way                          ; EndChar¸¦ ´©¸£¸é ¹Ù·Î "btw"¸¦ "By the way"·Î ±³Ã¼ÇÕ´Ï´Ù.
+:*:btw::By the way                         ; "btw"¸¦ "By the way"·Î ¹Ù²ß´Ï´Ù.  EndChar°¡ ÇÊ¿ä ¾ø½À´Ï´Ù.
+
+^n::                                       ; Ctrl & n Hotkey
+   run, notepad.exe                        ; Ctrl & nÀ» ´©·Á¸é ¹Ù·Î notepad.exe¸¦ ½ÇÇàÇÕ´Ï´Ù
+Return                                     ; ÇÖÅ°°¡ ³¡³³´Ï´Ù. ÀÌ ¾Æ·¡ÀÇ ÄÚµå´Â ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù.
+
+^b::                                       ; Ctrl & b Hotkey
+   send, {ctrl down}c{ctrl up}             ; ¼±ÅÃµÈ ÅؽºÆ®¸¦ º¹»çÇÕ´Ï´Ù. ^cµµ »ç¿ëÇÒ ¼ö ÀÖÁö¸¸, ÀÌ ¹æ¹ýÀÌ ´õ ¾ÈÀüÇÕ´Ï´Ù.
+   SendInput, [b]{ctrl down}v{ctrl up}[/b] ; ¼±ÅÃµÈ ÅؽºÆ®¸¦ bbcode (forum) Bold ÅÂ±× ¾È¿¡ ½Î ³Ö½À´Ï´Ù.
+Return                                     ; ÇÖÅ°°¡ ³¡³³´Ï´Ù. ÀÌ ¾Æ·¡ÀÇ ÄÚµå´Â ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù.
+
+ + + + +
+
+

3 - Å° ´­¸² Àü¼ÛÇϱâ

+

+ ±×·¡¼­ ÀÌÁ¦ Å°µéÀ» ÇÁ·Î±×·¥À¸·Î Àü¼Û(ŸÀÚ)Çϱâ·Î °áÁ¤ÇÕ´Ï´Ù. + Send ¸í·É¾î¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù. + ¹®ÀÚ ±×´ë·Î Å°µéÀ» Àü¼ÛÇÕ´Ï´Ù. ¸¶Ä¡ Å°¸¦ ŸÀÚÇϰųª ´©¸¥ °Íó·³ Èä³» ³À´Ï´Ù.

+ ´õ ±í°Ô µé¾î°¡±â Àü¿¡, ¸ÕÀú ¾à°£ÀÇ ÀϹÝÀûÀÎ ¹®Á¦µéÀ» ´Ù·ì´Ï´Ù:
+ ÇÖŰó·³, Send¿¡µµ Ư¼öÇÑ Å°°¡ ÀÖ½À´Ï´Ù. ¾ÆÁÖ ¸¹½À´Ï´Ù.
+ ´ÙÀ½Àº °¡Àå ¸¹ÀÌ »ç¿ëÇÏ´Â ½Éº¼ ³× °¡ÁöÀÔ´Ï´Ù: +

+
+
+

!: ALT Å°¸¦ Àü¼ÛÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, Send This is text!a´Â "This is text" Å°µéÀ» ´©¸¥ ´ÙÀ½ ALT+a¸¦ ´©¸¥ °Í°ú °°½À´Ï´Ù. + ÁÖÀÇ: !A ´Â ´Ù¸¥ ÇÁ·Î±×·¥¿¡¼­´Â !a¿Í ÀüÇô ´Ù¸¥ È¿°ú¸¦ ³À´Ï´Ù. ÀÌ°ÍÀº !A°¡ ALT+SHIFT+A¸¦ ´©¸¥ °ÍÀÎ ¹Ý¸é !a´Â ALT+a¸¦ ´©¸¥ °ÍÀ̱⠶§¹®ÀÔ´Ï´Ù. + Àß ¸ð¸£°Ú´Ù¸é, ¼Ò¹®ÀÚ¸¦ »ç¿ëÇϽʽÿÀ.

+

+: SHIFT Å°¸¦ Àü¼ÛÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, Send +abC ´Â ÅؽºÆ® "AbC"¸¦ Àü¼ÛÇÏ°í, Send !+a´Â ALT+SHIFT+a¸¦ ´©¸¨´Ï´Ù.

+

^: CONTROL (Ctrl) Å°¸¦ Àü¼ÛÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, Send ^!a´Â CTRL+ALT+a¸¦ ´©¸¥ °Í°ú °°°í, Send ^{Home}Àº CONTROL+HOMEÀ» Àü¼ÛÇÕ´Ï´Ù. ÁÖÀÇ: ^A´Â ¾î¶² ÇÁ·Î±×·¥¿¡¼­ ^a¿Í ÀüÇô ´Ù¸¥ È¿°ú¸¦ ³À´Ï´Ù. ÀÌ°ÍÀº ^A°¡ CONTROL+SHIFT+A¸¦ ´©¸¥ °ÍÀÌ°í ^a´Â CONTROL+a¸¦ ´©¸¥ °ÍÀ̱⠶§¹®ÀÔ´Ï´Ù. + Àß ¸ð¸£°Ú´Ù¸é, ¼Ò¹®ÀÚ¸¦ »ç¿ëÇϽʽÿÀ.

+

#: WIN Å°¸¦ Àü¼ÛÇÕ´Ï´Ù (À©µµ¿ìÁî ·Î°í°¡ ±×·ÁÁø Å°) ±×·¯¹Ç·Î Send #e´Â À©µµ¿ìÁî Å°¸¦ ´©¸¥ ´ÙÀ½ ±âÈ£ "e"¸¦ Àü¼ÛÇÕ´Ï´Ù.

+
+

´ÙÀ½ µÎ ¹®´Ü¿¡¼­ Àü¼Û ÆäÀÌÁö¿¡ °üÇÑ Å×ÀÌºí¿¡ °üÇÏ¿© ¾ð±ÞÇÕ´Ï´Ù.

+

+ ÁÖÀÇ:
ÀÌ Å×À̺íÀº ÇÖÅ°¿¡ Àû¿ëµÇÁö ¾Ê½À´Ï´Ù. ÇÖÅ°¸¦ ¸¸µé ¶§ CTRL ¶Ç´Â ENTER (¶Ç´Â ±âŸ ¾î¶² Å°À̵ç) {} ¾È¿¡ ½Î ³ÖÁö ¸øÇÑ´Ù´Â ¶æÀÔ´Ï´Ù. +


+ +
+ ´ÙÀ½ ¿¹Á¦¿¡¼­ ÇÖÅ°¿¡ Çؼ­´Â ¾ÈµÇ´Â °ÍµéÀ» º¸¿©ÁÝ´Ï´Ù: +
+; ÇÖÅ°¸¦ ¸¸µé ¶§...
+; À߸øµÊ
+{LCtrl}::
+   send, AutoHotkey
+Return
+
+; ¿Ã¹Ù¸§
+LCtrl::
+   send, AutoHotkey
+Return
+
+
+
+
+

À§ÀÇ °Å´ëÇÑ Å×ÀÌºí¿¡ ¾ÆÁÖ ¸¹Àº Ư¼ö Å°µéÀÌ AHK¿¡ ³»ÀåµÇ¾î ÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: {enter} ±×¸®°í {space}.
+ ¸¹Àº »ç¶÷µéÀÌ È°°ýÈ£°¡ ±×³É Àç¹Ì·Î ¹èÄ¡µÇ¾î ÀÖ´Ù°í »ý°¢ÇÕ´Ï´Ù. ±×·¯³ª »ç½Ç ²À ÇÊ¿äÇÕ´Ï´Ù. ±×·¸°Ô ÇØ¾ß AHK°¡ {!}ÀÌ "´À³¦Ç¥"ÀÏ »Ó "Alt Å°¸¦ ´©¸£¶ó"´Â ¶æÀÌ ¾Æ´ÔÀ» ÀÌÇØÇÕ´Ï´Ù. + ±×·¡¼­ send ÆäÀÌÁö¿¡ ÀÖ´Â Å×À̺íÀ» ²À ¾Ï±âÇÏ½Ã°í °ýÈ£¸¦ Á¦ ÀÚ¸®¿¡ ¹èÄ¡ÇϽʽÿÀ.

+
+;  !°¡ {} ¾È¿¡ ÀÖ´Â °Í¿¡ ÁÖ¸ñÇϽʽÿÀ. ±×·¸Áö ¾ÊÀ¸¸é  AHK°¡
+;  ALT Å°¸¦ ´­·¯ ¹ö¸®±â ¶§¹®ÀÔ´Ï´Ù.
+send, This text has been typed{!}
+
+ +
+; À§¿Í °°Áö¸¸,  ÀÌ ¹ø¿¡´Â ENTER Å°ÀÔ´Ï´Ù. AHK´Â "enter"¸¦ ŸÀÚÇØ ¹ö¸³´Ï´Ù...
+; ... {} ¾È¿¡ ½Î¿© ÀÖÁö ¾Ê´Ù¸é ¸»ÀÔ´Ï´Ù.
+send, Multiple enter lines have enter been sent. ; À߸øµÊ
+send, Multiple{enter}lines have{enter}been sent. ; ¿Ã¹Ù¸§
+
+
+ ¶Ç´Ù¸¥ ¹®Á¦´Â »ç¶÷µéÀÌ send ¸í·É¾î¿¡¼­ ¸ðµç °ÍµéÀº °ýÈ£¿¡ ½Î ³Ö¾î¾ß ÇÑ´Ù°í »ý°¢ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. + ±×·¸Áö ¾Ê½À´Ï´Ù. Ç¥¿¡ ¾øÀ¸¸é °ýÈ£°¡ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù. + ÀϹÝÀûÀÎ ±âÈ£¿Í ¼ýÀÚ ½ÉÁö¾î ¾î¶² ½Éº¼µéÀº °ýÈ£¿¡ ½Î ³ÖÀ» ÇÊ¿ä°¡ ¾ø½À´Ï´Ù (¿¹¸¦ µé¾î {}'s.¿¡¼­ Á¡)
+ ¶ÇÇÑ, Send ¸í·É¾î·Î 1 °³ ÀÌ»óÀÇ ±âÈ£³ª ¼ýÀÚ ¶Ç´Â ½Éº¼À» ´Ü ¹ø¿¡ º¸³¾ ¼ö ÀÖ½À´Ï´Ù. + ±×·¡¼­ 1 °³ÀÇ ±âÈ£¸¶´Ù µû·Îµû·Î ¼ö ¸¹Àº Send ¸í·É¾î¸¦ »ç¿ëÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. + +
+; À§¿¡ ¾ð±ÞÇÑ Å×ÀÌºí¿¡ ¾ø´Â ±âÈ£³ª ´Ü¾îµéÀ» µû·Î °ýÈ£¿¡ ½Î ³ÖÁö ¸¶½Ê½Ã¿À.
+send, {a}       ; À߸øµÊ
+send, {b}       ; À߸øµÊ
+send, {c}       ; À߸øµÊ
+send, {a}{b}{c} ; À߸øµÊ
+send, {abc}     ; À߸øµÊ
+send, abc       ; ¿Ã¹Ù¸§
+
+
+
+ Å°¸¦ ´©¸£°Å³ª ¶¼·Á¸é, Å° À̸§À» °ýÈ£·Î µÑ·¯ ½Î°í UPÀ̳ª DOWNÀ» »ç¿ëÇÕ´Ï´Ù. + +
+; ´ÙÀ½Àº Å° Çϳª¸¦ ´©¸§°ú µ¿½Ã¿¡ ¶Ç´Ù¸¥ Å° (¶Ç´Â Å°µé)À» ´©¸£´Â ¹æ¹ýÀÔ´Ï´Ù.
+; ÇÑ°¡Áö ¹æ¹ýÀÌ ÀÛµ¿ÇÏÁö ¾ÊÀ¸¸é, ´Ù¸¥ ¹æ¹ýÀ» ½ÃµµÇØ º¸½Ê½Ã¿À.
+send, ^s                     ; µÑ ´Ù CTRL+s¸¦ Àü¼ÛÇÕ´Ï´Ù.
+send, {ctrl down}s{ctrl up}  ; µÑ ´Ù CTRL+s¸¦ Àü¼ÛÇÕ´Ï´Ù.
+Send, {ctrl down}c{ctrl up}
+Send, {b down}{b up}
+Send, {TAB down}{TAB up}
+Send, {Up down}  ; À§ È­»ìÇ¥ Å°¸¦ ´©¸¨´Ï´Ù.
+Sleep, 1000      ; ÀÏ ÃÊ µ¿¾È ´©¸£°í ÀÖ½À´Ï´Ù.
+Send, {Up up}    ; À§ È­»ìÇ¥ Å°¸¦ ¶Á´Ï´Ù.
+
+
+
+
+ ±×·¯³ª ÀÌÁ¦ ±Ã±ÝÇÏ½Ç °Ì´Ï´Ù. + "Á¤¸» ±ä send ¸í·É¾îµéÀ» ¾î¶»°Ô Àß ÀÐÀ» ¼ö ÀÖÁö?". + ½±½À´Ï´Ù. °è¼Ó ¼½¼ÇÀ» »ç¿ëÇÏ¸é µË´Ï´Ù. + ±×³É »õ ÁÙ¿¡ ¹Ý°ýÈ£¸¦ ¿­°í, ³»¿ëÀ» ³Ö°í, ¸¶Áö¸·À¸·Î ¹Ý°ýÈ£·Î ÁÙÀ» ´Ý½À´Ï´Ù. + ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â °è¼Ó ¼½¼ÇÀ» ÂüÁ¶ÇÕ´Ï´Ù. +
+send,
+(
+ù ¹ø° ÁÙ
+µÎ ¹ø° ÁÙ
+¿øÇÏ´Â ¸¸Å­ ÁÙÀ» ¹èÄ¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+)
+
+ +
+

+ ÁÖÀÇ: ´Ù¾çÇÑ ÇüÅÂÀÇ Àü¼Û ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. + °¢ÀÚ µû·Î Ưº°ÇÑ Æ¯Â¡ÀÌ ÀÖ½À´Ï´Ù. + ÀÌ Áß¿¡ Çϳª·Î ¿©·¯ºÐÀÇ Çʿ並 ÃæÁ·ÇÏÁö ¸øÇϸé, ¶Ç´Ù¸¥ Á¾·ùÀÇ Àü¼Û ÇüŸ¦ ½ÃµµÇØ º¾´Ï´Ù. + ±×³É ¸í·É¾î À̸§À» "send"¿¡¼­ "sendPlay" ¶Ç´Â ¿øÇÏ´Â ¾Æ¹«°ÍÀ̳ª ½ÃµµÇØ º¾´Ï´Ù.
+ ´ÙÀ½Àº ÅؽºÆ®¸¦ Àü¼ÛÇÏ´Â °¡Àå ÈçÇÑ ¹æ¹ýÀÔ´Ï´Ù:
+ Send
+ SendRaw
+ SendInput
+ SendPlay
+ SendEvent
+ °¢ÀÚ ¾î¶² ÀÏÀ» ÇÏ´ÂÁö¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ¿©±â¸¦ ÀÐ¾î º¸½Ê½Ã¿À. +

+

a. °ÔÀÓ

+

+ Áß¿äÇÕ´Ï´Ù!
+ ¸¹Àº °ÔÀÓÀº, ƯÈ÷ Çö´ëÀÇ °ÔÀÓÀº, ¼ÓÀÌ´Â °ÍÀ» ¹æÁöÇÏ´Â ±â´ÉÀÌ ÀÖ½À´Ï´Ù. + ¿¹¸¦ µé¾î, ÀÌ·± Á¾·ùÀÇ °ÔÀÓÀ¸·Î´Â GameGuard, Hackshield, PunkBuster, µîµîÀÌ ÀÖ½À´Ï´Ù. + °ÔÀÓÀÌ ¼ÓÀÓ ¹æÁö ½Ã½ºÅÛÀÌ ÀÖ°í ÇÖÅ°¿Í ÇÖ½ºÆ®¸µ ±×¸®°í send ¸í·É¾î°¡ ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù¸é, ¾ÈŸ±î¿î ÀÏÀÔ´Ï´Ù.
+ ÀÌ·± ½Ã½ºÅÛÀ» ¿ìȸÇÏ´Â ÀÏÀº °ÔÀÓ»çÀÇ Á¤Ã¥À» À§¹ÝÇÏ´Â °ÍÀÌ¸ç ±×·¯¸é ¿©·¯ºÐÀº Á¦¸í ´çÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇØ°áÃ¥Àº ´ë´ÜÈ÷ º¹ÀâÇÕ´Ï´Ù. + ¾î¶² °ÔÀÓ¿¡¼­´Â ÀÛµ¿ÀÇ ±âȸ¸¦ ³ôÀÏ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ÀÖÁö¸¸, ¸¶¹ýÀÇ "´çÀå °ÔÀÓ¿¡¼­ ÀÛµ¿Ç϶ó" ¹öÆ°Àº ¾ø½À´Ï´Ù. + ±×·¡¼­ Æ÷±âÇϱâ Àü¿¡ ÀÌ ¸ðµç °ÍµéÀ» ½ÃµµÇØ º¸½Ê½Ã¿À.
+

+ +

+ DirectX¿Í °ü·ÃµÈ ¹®Á¦µµ ÀÖ½À´Ï´Ù. ¹®Á¦°¡ ÀÖ°í °ÔÀÓÀÌ DirectX¸¦ »ç¿ëÇÑ´Ù¸é, ¾Æ·¡ÀÇ ¹æ¹ýÀ» ½ÃµµÇØ º¸½Ê½Ã¿À. + °¡´ÉÇϸé â(Windowed ¿ªÁÖ: ÀÔ·Â ¹æ½ÄÀ» ÀüÀûÀ¸·Î ¿î¿µÃ¼Á¦¿¡ ¸Ã±è) ¸ðµå¿¡¼­ ½ÃÇèÇØ º¸½Ê½Ã¿À. ±×·¯¸é DirectX ¹®Á¦°¡ ÇØ°áµÉ Áöµµ ¸ð¸¨´Ï´Ù.
+ Çȼ¿À̳ª À̹ÌÁö ¸í·É¾î¸¦ »ç¿ëÇÒ ¶§, DirectX ¹®Á¦°¡ ´õ ¸¹ÀÌ ÀϾ ¼öµµ ÀÖ½À´Ï´Ù. + ¾î¶² »öÀ» ¾òÀ¸·Á°í ½ÃµµÇÏ´ÂÁö¿¡ »ó°ü¾øÀÌ »ö±òÀÌ °ËÁ¤»öÀ¸·Î ¹Ù²ð ¼ö ÀÖ½À´Ï´Ù (0x000000). + ±×°ÍÀº ÇØ°áÇϱ⠾î·Á¿î ¶Ç´Ù¸¥ ¹®Á¦ÀÔ´Ï´Ù. + µÇµµ·ÏÀ̸é Windowed ¸ðµå¿¡¼­ ½ÇÇàÇØ º¸½Ê½Ã¿À. +

+

+ AutoHotkey¸¦ ¸ðµç ÇÁ·Î±×·¥¿¡¼­ ÀÛµ¿ÇϽÃÅ°´Â ´Ü ÇÑ°¡Áö ÇØ°áÃ¥Àº ¾ø½À´Ï´Ù. + ½ÃµµÇÑ ¸ðµç °ÍÀÌ ½ÇÆÐÇÑ´Ù¸é, ¾ÈŸ±õ°Ôµµ AutoHotkey·Î´Â ¿©·¯ºÐÀÇ ¿ä±¸¸¦ ¸¸Á·½Ãų ¼ö ¾ø´Â °ÍÀÔ´Ï´Ù. +

+
+
+ FAQ ÆäÀÌÁö¿¡¼­ ÀοëÇÕ´Ï´Ù:
+ ¾î¶² °ÔÀÓÀº DirectInput¸¦ ´Üµ¶À¸·Î »ç¿ëÇÕ´Ï´Ù. ±× ºÎÀÛ¿ëÀ¸·Î, ¸ðµç ½Ã¹Ä·¹ÀÌ¼Ç Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯À» ¹«½ÃÇØ ¹ö¸³´Ï´Ù. + À̸¦ ÇØ°áÇÏ·Á¸é, ´ÙÀ½ Áß Çϳª¸¦ (¶Ç´Â Á¶ÇÕÇؼ­) ½ÃµµÇØ º¸½Ê½Ã¿À: +
    +
  • ´ÙÀ½À» ÅëÇÏ¿© SendPlay¸¦ »ç¿ëÇÕ´Ï´Ù. + : 1) SendPlay ¸í·É¾î¸¦ »ç¿ëÇÕ´Ï´Ù; + 2) SendMode¸¦ »ç¿ëÇÕ´Ï´Ù; + ±×¸®°í/¶Ç´Â 3) ÇÖ½ºÆ®¸µ ¿É¼ÇÀÎ SP¸¦ »ç¿ëÇÕ´Ï´Ù.
  • +
  • SetKeyDelayÀÇ Áö¿¬½Ã°£À» ´Ã·Á º¾´Ï´Ù. ¿¹¸¦ µé¾î:
  • +
  • SetKeyDelay, 0, 50
  • +
  • SetKeyDelay, 150, 150, Play
  • +
  • ControlSend¸¦ ½ÃµµÇØ º¾´Ï´Ù. ´Ù¸¥ Send ¸ðµå°¡ ¸ðµÎ ½ÇÆÐÇÏ´õ¶óµµ ÀÌ ¹æ¹ýÀº ÀÛµ¿ÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.
  • +
+
+ + + +
+
+

4 - ÇÁ·Î±×·¥ & À¥»çÀÌÆ® ½ÇÇàÇϱâ

+
+ Mspaint.exe, Calc.exe, script.ahk ½ÉÁö¾î Æú´õ °°Àº ÇÁ·Î±×·¥À» ½ÇÇàÇÏ·Á¸é, Run ¸í·É¾î¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. + ½ÉÁö¾î http://ahkscript.org/°ú °°ÀÌ URL¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿øÇÏ´Â ÇÁ·Î±×·¥ÀÇ À¯ÇüÀ» ½ÇÇàÇϵµ·Ï ÄÄÇ»ÅÍ°¡ ȯ°æÀÌ ¼³Á¤µÇ¾î ÀÖ´Ù¸é, ¾ÆÁÖ °£´ÜÇÕ´Ï´Ù: + +
+; ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù. ÁÖÀÇ: ´ëºÎºÐÀÇ ÇÁ·Î±×·¥Àº Àüü ÆÄÀÏ °æ·Î¸¦ ¿ä±¸ÇÕ´Ï´Ù.
+Run, %A_ProgramFiles%\Some_Program\Program.exe
+
+; À¥ »çÀÌÆ®¸¦ ½ÇÇàÇÕ´Ï´Ù
+Run, http://ahkscript.org
+
+
+
+ ¸í·É¾î-ÁÙ ¸Å°³º¯¼ö¿Í CLSID¿Í °°Àº ´Ù¸¥ °í±Þ Ư¡µéµµ ¿ª½Ã ÀÖ½À´Ï´Ù.
+ ´õ ¾Ë°í ½Í´Ù¸é ÀÌ ÆäÀÌÁö¸¦ ÂüÁ¶ÇÕ´Ï´Ù. +
+ ´ÙÀ½¿¡ ¸î °¡Áö ¿¹¸¦ ´õ º¸¿©ÁÝ´Ï´Ù: +
+;  À©µµ¿ìÁîÀÇ Ç¥ÁØ ÇÁ·Î±×·¥µé°ú °°ÀÌ Àüü °æ·Î°¡ ÇÊ¿äÇÏÁö ¾ÊÀº ÇÁ·Î±×·¥ÀÌ ÀÖ½À´Ï´Ù.
+Run, Notepad.exe
+Run, MsPaint.exe
+
+; ³»Àå AHK º¯¼ö¸¦ »ç¿ëÇÏ¿© "My Documents" Æú´õ¸¦ ¿±´Ï´Ù.
+Run, %A_MyDocuments%
+
+; À¥ »çÀÌÆ®¸¦ ½ÇÇàÇÕ´Ï´Ù
+Run, http://ahkscript.org
+Run, http://www.google.com
+
+
+

´õ ±íÀº Á¤º¸¿Í ´õ ¸¹Àº ¿¹Á¦´Â ´ÙÀ½À» ÂüÁ¶ÇÕ´Ï´Ù:
commands/Run.htm.

+
+ + + + + +
+
+

5 - ¸í·É¾î vs. ÇÔ¼ö

+
+ ¿ÀÅäÇÖÅ°´Â Äڵ带 ¸¸µå´Âµ¥ »ç¿ëµÇ´Â Å©°Ô µÎ °¡Áö À¯ÇüÀÌ ÀÖ½À´Ï´Ù:
+ ¸í·É¾î¿Í ÇÔ¼ö°¡ ±×°ÍÀÔ´Ï´Ù
+

µµ¿òÀÌ µÇ´Â ¸µÅ©:
+ ¸ðµç ¸í·É¾î ¸ñ·Ï: commands/index.htm
+ ¸ðµç ³»Àå ÇÔ¼ö ¸ñ·Ï: Functions.htm#BuiltIn

+
+

¸í·É¾î

+

+ ±×ÀÇ ±¸¹®À» º¸¸é (±×ÀÇ °Ñ ¸ð½ÀÀ¸·Î) ¸í·É¾îÀÎÁö ¾Æ´ÑÁö ±¸ºÐÇÒ ¼ö ÀÖ½À´Ï´Ù. + ¸í·É¾î´Â ¸Å°³º¯¼ö¿¡ ¹Ý°ýÈ£"()"¸¦ »ç¿ëÇÏÁö ¾ÊÁö¸¸ ÇÔ¼ö´Â »ç¿ëÇÕ´Ï´Ù. + ±×·¡¼­ ¸í·É¾î´Â ´ÙÀ½°ú °°ÀÌ º¸ÀÔ´Ï´Ù:
+ Command, parameter1, parameter2, parameter3
+ +
¸í·É¾î¸¦ »ç¿ëÇÒ ¶§, ´Ù¸¥ ¸í·É¾î¸¦ °°Àº ÁÙ¿¡ ³õÀ» ¼ö ¾ø½À´Ï´Ù (¿¹¿Ü: ifEqual).
+ ¸í·É¾î¸¦ ´Ù¸¥ ¸í·É¾îÀÇ ¸Å°³º¯¼ö ¾È¿¡ ³õÀ» ¼ö ¾ø½À´Ï´Ù. +

+ +
+Msgbox, Hello Run, Notepad.exe   ; À߸øµÊ
+Msgbox, Hello, Run, Notepad.exe  ; À߸øµÊ
+
+Msgbox, Hello      ; ¿Ã¹Ù¸§
+Run, Notepad.exe
+
+ + ¸í·É¾î´Â ¶Ç "ÀüÅëÀûÀÎ ±¸¹®"À» »ç¿ëÇÑ´Ù´Â Á¡¿¡¼­ ÇÔ¼ö¿Í ´Ù¸¨´Ï´Ù. + ±× Àǹ̴Â: º¯¼ö¸¦ »ç¿ëÇÒ ¶§, ±× µÑ·¹¿¡ %¸¦ »ç¿ëÇÒ ÇÊ¿ä°¡ ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù. %variable%. + ÅؽºÆ®¿Í ¼ýÀÚ´Â "ÀÎ¿ë ºÎÈ£" ¾È¿¡ ÀÖÀ» ÇÊ¿ä°¡ ¾ø½À´Ï´Ù: ¿¹, This is some text. + °Ô´Ù°¡, ÇÔ¼ö¿Í´Â ´Ù¸£°Ô ¸Å°³º¯¼ö ¾È¿¡¼­ ¼öÇнÄÀ» »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. +

+ ¸Å°³º¯¼ö¿¡ ¼öÇнÄÀ» »ç¿ëÇÒ ¼ö´Â ÀÖ½À´Ï´Ù. °­Á¦·Î % ±âÈ£·Î Ç¥Çö½ÄÀ» ¸¸µé¸é µÇÁö¸¸, ÀÌ¿¡ °üÇؼ­´Â ´Ù·çÁö ¾Ê°Ú½À´Ï´Ù. +

+

ÇÔ¼ö

+
+ À§¿¡ ¾ð±ÞÇÑ ¹Ù¿Í °°ÀÌ, ÇÔ¼ö´Â ¹Ý°ýÈ£¸¦ »ç¿ëÇϱ⠶§¹®¿¡ ´Ù¸¨´Ï´Ù. ÀüÇüÀûÀÎ ÇÔ¼öÀÇ ¸ð½ÀÀº ´ÙÀ½°ú °°½À´Ï´Ù:
+ Function(parameter1, parameter2, parameter3)

+ ÇÔ¼ö´Â ¸î °¡Áö Å« Â÷ÀÌÁ¡ÀÌ ÀÖ½À´Ï´Ù: +
    +
  1. + ±× ¾È¿¡ ¼öÇнÄÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
    + -- SubStr(37*12, 1, 2)
    + -- SubStr(A_Hour-12, 2) +
  2. +
  3. + º¯¼ö´Â ÆÛ¼¾Æ® ±âÈ£·Î µÑ·¯½Ò ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.
    + -- SubStr(A_Now, 7, 2) +
  4. +
  5. + ÇÔ¼ö´Â ÇÔ¼ö ¾È¿¡ µé¾î°¥ ¼ö ÀÖ½À´Ï´Ù.
    + -- SubStr(A_AHKPath, inStr(A_AHKPath, "AutoHotkey")) +
  6. +
  7. + ÅؽºÆ®´Â ÀοëºÎÈ£·Î µÑ·¯½Î¾ß ÇÕ´Ï´Ù.
    + -- SubStr("I'm scripting, awesome!", 16) +
  8. +
+ + ÇÔ¼ö´Â ¸í·É¾î¿Í ´Ù¸£°Ô º¸Åë °ªÀ» µ¹·ÁÁÝ´Ï´Ù. ¸í·É¾î´Â OutputVar ¸Å°³º¯¼ö°¡ ÇÊ¿äÇÏÁö¸¸, ÇÔ¼ö´Â ±×·¸Áö ¾Ê½À´Ï´Ù. + º¯¼ö¸¦ ÇÔ¼öÀÇ °ª¿¡ ÇÒ´çÇÏ´Â °¡Àå ÀϹÝÀûÀÎ ¹æ½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù:
+ MyVariable:=Function(Parameters) + +
+MyVariable:=SubStr("I'm scripting, awesome!", 16)
+
+

À̰͸¸ÀÌ À¯ÀÏÇÑ ¹æ¹ýÀº ¾Æ´Õ´Ï´Ù. ±×·¯³ª °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â ¹æ¹ýÀÔ´Ï´Ù. + MyVariable º¯¼ö¸¦ :=ÀÇ ¿À¸¥ÂÊ¿¡ ÀÖ´Â ÇÔ¼öÀÇ °ªÀ¸·Î ÇÒ´çÇÏ°í ÀÖ½À´Ï´Ù (ÀÌ °æ¿ì, SubStr(...)).
+ ÇÔ¼ö¿¡ °üÇÏ¿© ´õ ÀÚ¼¼ÇÑ °ÍÀº ¿©±â¸¦ ÂüÁ¶ÇÕ´Ï´Ù.

+
+
+ ª°Ô ¸»ÇØ: + +
+; ´ÙÀ½Àº ¸í·É¾îÀÔ´Ï´Ù
+Msgbox, ÀÌ°ÍÀº ÅؽºÆ®ÀÔ´Ï´Ù.
+StringReplace, Output, Input, AutoHotKey, AutoHotkey, ALL
+SendInput, ÀÌ°Å Á¤¸» ±²ÀåÇϳ׿ä{!}{!}{!}
+
+; ´ÙÀ½Àº ÇÔ¼öÀÔ´Ï´Ù
+SubStr("½ºÅ©¸³ÆÃÀ» ÇÏ°í ÀÖ¾î¿ä, Á¤¸» Á׿©Áֳ׿ä!", 16)
+FileExist(VariableContainingPath)
+Output:=SubStr("½ºÅ©¸³ÆÃÀ» ÇÏ°í ÀÖ¾î¿ä, Á¤¸» Á׿©Áֳ׿ä!", 16)
+
+ +
+

a. ÄÚµå ºí·Ï

+

+ ÄÚµå ºí·ÏÀº È°°ýÈ£ ¾È¿¡ ÀÖ´Â °ÍµéÀÔ´Ï´Ù ({ ±×¸®°í }). + ÇÑ ±×·ìÀÇ ´ÜÀ§·Î ¹­¾î ÁֹǷΠAutoHotkey´Â ±×°ÍÀ» ÇÔ²² ÀÖ¾î¾ß ÇÏ´Â ÇϳªÀÇ Ä¿´Ù¶õ °¡Á·À¸·Î ÀνÄÇÕ´Ï´Ù. + If ±×¸®°í Loop¿Í ÇÔ²² °¡Àå ¸¹ÀÌ »ç¿ëµË´Ï´Ù. + ÀÌ°ÍÀÌ ¾ø´Ù¸é, ºí·Ï¿¡¼­ ù ÁÙ¸¸ È£ÃâµË´Ï´Ù.

+

+
+ ´ÙÀ½ Äڵ忡¼­, µÎ ÁÙ ¸ðµÎ var°¡ 5¿Í °°Àº °æ¿ì¿¡¸¸ ½ÇÇàµË´Ï´Ù. +
+if (var=5)
+{
+   MsgBox, var equals %var%!!
+   Exitapp
+}
+

+ + ´ÙÀ½ Äڵ忡¼­, msgbox´Â var°¡ 5ÀÏ °æ¿ì¿¡¸¸ º¸ÀÔ´Ï´Ù. ÄÚµå´Â var°¡ 5°¡ ¾Æ´ÒÁö¶óµµ ¾ðÁ¦³ª ½ºÅ©¸³Æ®´Â Á¾·áÇÕ´Ï´Ù. + +
+if (var=5)
+   MsgBox, var´Â %var%¿Í °°½À´Ï´Ù!!
+   Exitapp
+

+ + ÀÌ°ÍÀº ù ¹ø° ÁÙÀÇ ÄÚµå¿Í ¿¬°üµÇ¾î ÀÖÀ» °æ¿ì¿¡¸¸ ¿Ïº®ÇÏ°Ô ÁÁ½À´Ï´Ù. + Á¤È®ÇÏ°Ô À§¿Í ¶È°°Áö¸¸, µÎ ¹ø° ÁÙÀº ³»¾î ½èÀ¸¹Ç·Î if¿Í ºÐÇҵǾî ÀÖÀ½À» ¾Ë ¼ö ÀÖ½À´Ï´Ù. + +
+if (var=5)
+   MsgBox, var´Â %var%¿Í °°½À´Ï´Ù!!
+MsgBox, ÀÌÁ¦ if ¼­¼ú¹® '¹Û¿¡' ÀÖ½À´Ï´Ù. ¾Æ·¡¿¡ ÇÑ ÁÙ¸¸ Àֱ⠶§¹®¿¡ {}ÀÌ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù.
+
+
+ + + +
+
+

6 - º¯¼ö

+

+ º¯¼ö´Â ÀÛÀº Æ÷½ºÆ®ÀÕ ¸Þ¸ðÁöó·³ ±× ¾È¿¡ Á¤º¸¸¦ ´ã½À´Ï´Ù. + ÅؽºÆ®³ª, ¼ýÀÚ, ±×¸®°í ÇÔ¼ö³ª ¸í·É¾î ½ÉÁö¾î ¼öÇÐ ¹æÁ¤½ÄÀ¸·ÎºÎÅÍ ¾òÀº µ¥ÀÌÅ͸¦ ÀúÀåÇÏ´Â µ¥ »ç¿ëÇÕ´Ï´Ù. + º¯¼ö°¡ ¾ø´Ù¸é ÇÁ·Î±×·¡¹Ö & ½ºÅ©¸³ÆÃÀº Á¤¸» Â¥Áõ³ª´Â ÀÏÀÌ µÉ °ÍÀÔ´Ï´Ù. +

+
+
+ º¯¼ö´Â ¸î °¡Áö ¹æ¹ýÀ¸·Î ÇÒ´çÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿©±â¿¡¼­´Â °¡Àå ÈçÇÑ ¹æ¹ýÀ» ´Ù·ç°Ú½À´Ï´Ù. + µîÈ£ ±âÈ£(=)¿¡ ÁÖ¸ñÇØ ÁֽʽÿÀ. +
    +
  1. variable=text
    +
    °¡Àå °£´ÜÇÑ ÇüÅ·Î, ÀüÅëÀûÀÎ ÇÒ´ç ¹æ½ÄÀÔ´Ï´Ù. ±×³É ÅؽºÆ®¸¦ ŸÀÚÇØ ³ÖÀ¸¸é ±×°É·Î ³¡ÀÔ´Ï´Ù.
    +
  2. +
  3. variable=%variable2%
    +
    À§¿Í °°Áö¸¸, º¯¼ö¸¦ ´Ù¸¥ º¯¼ö °ª¿¡ ÇÒ´çÇÏ°í ÀÖ½À´Ï´Ù.
    +
  4. +
  5. variable:="text"
    +
    = ¾Õ¿¡ ÀÖ´Â : ¶§¹®¿¡ Ç¥Çö½Ä ÇÒ´çÀ̶ó°í ºÎ¸¨´Ï´Ù. ÅؽºÆ®´Â "ÀοëºÎÈ£" ó¸®ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù.
    +
  6. +
  7. variable:=variable2
    +
    Ç¥Çö½Ä ¸ðµå¿¡¼­ º¯¼ö´Â %°¡ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù.
    +
  8. +
  9. variable:=6+8/3*2-sqrt(9)
    +
    Ç¥Çö½Ä ´öºÐ¿¡, ¼öÇÐ °è»êÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù!
    +
  10. +
+ ¼ýÀÚ 1 & 2 ¸¦ °áÇÕÇØ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. var=%var2% some text %var3%.
+ 3, 4 & 5 µµ ¿ª½Ã °áÇÕÇÒ ¼ö ÀÖ½À´Ï´Ù. var:="The value of 5+ " Variable " is: " 5+Variable +
+
+ +

+ ¾Õ¿¡ ½Éº¼ÀÌ ÀÖ´Â ¸ðµç µîÈ£ ±âÈ£(=)´Â ÇÒ´ç ¿¬»êÀÚ¶ó°í ºÎ¸¨´Ï´Ù. ¾ðÁ¦³ª Ç¥Çö½ÄÀÔ´Ï´Ù. ] + ±×·¡¼­ := += -= .= µîµîÀº ¾ðÁ¦³ª Ç¥Çö½ÄÀ» »ç¿ëÇÕ´Ï´Ù. +

+

a. ÆÛ¼¾Æ® ±âÈ£¸¦ »ç¿ëÇØ¾ß ÇÒ ¶§

+

+ º¯¼ö¿Í °ü·ÃÇÏ¿© ¿ÀÅäÇÖÅ°¿¡¼­ °¡Àå ¸¹ÀÌ Á¦±âµÇ´Â ¹®Á¦Áß Çϳª´Â ¾ðÁ¦ ÆÛ¼¾Æ® ±âÈ£ (%)¸¦ »ç¿ëÇϴ°¡ ÇÏ´Â °ÍÀÔ´Ï´Ù. + ´ÙÀ½ ¼³¸íÀ¸·Î ±ò²ûÇÏ°Ô È¥¶õÀÌ Á¦°ÅµÇ±â¸¦ ¹Ù¶ø´Ï´Ù. +

+
+ %¸¦ »ç¿ëÇØ¾ß ÇÒ ¶§: +
    +
  1. ¸í·É¾î¸¦ »ç¿ëÇÒ ¶§ (À§ ÂüÁ¶) ÆÛ¼¾Æ® ±âÈ£¸¦ »ç¿ëÇÕ´Ï´Ù.
    + -- ¸Å°³º¯¼ö°¡ OutputVarÀ̰ųª InputVarÀÏ °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù.
  2. +
  3. ÀüÅëÀûÀÎ ¸ðµå¸¦ »ç¿ëÇÏ´Â º¯¼ö¿¡ º¯¼ö¸¦ ÇÒ´çÇÒ ¶§ (¾Õ¿¡ ½Éº¼ÀÌ ¾ø´Â µîÈ£ ±âÈ£).
  4. +
+ + %¸¦ »ç¿ëÇÏ¸é ¾ÈµÉ ¶§: +
    +
  1. ¸Å°³º¯¼ö°¡ ÀԷº¯¼öÀ̰ųª Ãâ·Â º¯¼öÀÏ °æ¿ì, ¿¹¸¦ µé¾î: StringLen, OutputVar, InputVar
  2. +
  3. ÇÒ´çÀÇ ¿ÞÂÊ¿¡ ÀÖÀ» ¶§: Var = 123abc
  4. +
  5. ÀüÅëÀû (ºñ-Ç¥Çö½Ä) if-¼­¼ú¹®ÀÇ ¿ÞÂÊ¿¡: If Var1 < %Var2%
  6. +
  7. Ç¥Çö½Ä ¾È¿¡. ¿¹¸¦ µé¾î: +
    +If (Var1 != Var2)
    +   Var1 := Var2 + 100
    +
    +
  8. +
+
+ + + +

b. »ç¿ëÀÚ ÀÔ·Â ¾ò±â

+
+ Á¾Á¾ »ç¿ëÀÚ°¡ °ªÀ» ä¿ö ³Ö¾îÁֱ⸦ ¹Ù¶ö °æ¿ì°¡ ÀÖ½À´Ï´Ù. ¿©·¯ °¡Áö ¹æ¹ýÀÌ ÀÖÁö¸¸, °¡Àå °£´ÜÇÑ ¹æ¹ýÀº InputboxÀÔ´Ï´Ù. + ´ÙÀ½Àº °£´ÜÇÑ ¿¹ÀÔ´Ï´Ù. »ç¿ëÀÚ¿¡°Ô µÎ °¡Áö Áú¹®À» ÇÏ°í ±× ´äÀ» °¡Áö°í ¹«½¼ ÀÏÀ» ÇÕ´Ï´Ù. + +
+InputBox, OutputVar, Question 1, À̸§ÀÌ ¹«¾ùÀԴϱî?
+if (OutputVar="Bill")
+   MsgBox, ¸ÚÁø À̸§À̱º¿ä, %OutputVar%.
+
+InputBox, OutputVar2, Question 2, ¿ÀÅäÇÖÅ°¸¦ ÁÁ¾ÆÇմϱî?
+if (OutputVar2="yes")
+   MsgBox, %OutputVar2%`¶ó°í ´äÇØ Áּż­ °í¸¿½À´Ï´Ù. %OutputVar%! ¿©·¯ºÐÀÇ ÈǸ¢ÇÑ Ä£±¸°¡ µÇ¾î µå¸®°Ú½À´Ï´Ù.
+else
+   MsgBox, %OutputVar%`, Á¤¸» ½½ÇÁ±º¿ä.
+
+
+ +

c. ´Ù¸¥ ¿¹Á¦µé?

+
+
+MsgBox, 4, , °è¼ÓÇϽðڽÀ´Ï±î?
+IfMsgBox, No
+   Return                ; NoÀ̸é, Äڵ带 ¸ØÃä´Ï´Ù.
+MsgBox ´ç½ÅÀº YES¸¦ ´­·¶½À´Ï´Ù.  ; ±×·¸Áö ¾ÊÀ¸¸é, »ç¿ëÀÚ´Â yes¸¦ °í¸¥ °ÍÀÔ´Ï´Ù.
+
+
+; ÆÛ¼¾Æ® ±âÈ£¸¦ »ç¿ëÇØ¾ß ÇÒ ¶§¿Í ÇÏÁö ¸»¾Æ¾ß ÇÒ ¶§´Â º¸¿©ÁÖ´Â ¸î °¡Áö ¿¹µé
+Variable=text                      ; º¯¼ö¿¡ ÅؽºÆ®¸¦ ÇÒ´çÇÕ´Ï´Ù. 'ÀüÅëÀûÀÎ' ÇÒ´ç¹æ½ÄÀÔ´Ï´Ù.
+VariableNumber:=6                  ; º¯¼ö¿¡ ¼ýÀÚ¸¦ ÇÒ´çÇÕ´Ï´Ù. 'Ç¥Çö½Ä' ÇÒ´çÀÔ´Ï´Ù.
+Variable2=%Variable%               ; º¯¼ö¸¦ ¶Ç´Ù¸¥ º¯¼ö¿¡ ÇÒ´çÇÕ´Ï´Ù. ÀüÅëÀûÀÎ ÇÒ´çÀ» »ç¿ëÇÕ´Ï´Ù.
+Variable3:=Variable                ; º¯¼ö¸¦ ¶Ç´Ù¸¥ º¯¼ö¿¡ ÇÒ´çÇÕ´Ï´Ù. Ç¥Çö½Ä ÇÒ´çÀÔ´Ï´Ù.
+Variable4.=Variable                ; º¯¼ö¸¦ ¶Ç´Ù¸¥ º¯¼öÀÇ ³¡¿¡ Ãß°¡ÇÕ´Ï´Ù. Ç¥Çö½Ä ÇÒ´çÀÔ´Ï´Ù.
+Variable5+=VariableNumber          ; º¯¼öÀÇ °ªÀ» ¶Ç´Ù¸¥ º¯¼ö¿¡ Ãß°¡ÇÕ´Ï´Ù. Ç¥Çö½Ä ÇÒ´çÀÔ´Ï´Ù.
+Variable5-=VariableNumber          ; º¯¼öÀÇ °ªÀ» ¶Ç´Ù¸¥ º¯¼ö·ÎºÎÅÍ »®´Ï´Ù. Ç¥Çö½Ä ÇÒ´çÀÔ´Ï´Ù.
+Variable6:=SubStr(Variable, 2, 2)  ; ÇÔ¼ö ¾ÈÀÇ º¯¼öÀÔ´Ï´Ù. ÀÌ°ÍÀº ¾ðÁ¦³ª Ç¥Çö½Ä ÇÒ´çÀÔ´Ï´Ù.
+Variable7=%Variable% Text          ; º¯¼ö¸¦ ¶Ç´Ù¸¥ º¯¼ö¿¡ ¾à°£ÀÇ ÅؽºÆ®¿À ÇÔ²² ÇÒ´çÇÕ´Ï´Ù. ÀüÅëÀûÀÎ ÇÒ´çÀ» »ç¿ëÇÕ´Ï´Ù.
+Variable8:=Variable " Text"        ; º¯¼ö¸¦ ¶Ç´Ù¸¥ º¯¼ö¿¡ ¾à°£ÀÇ ÅؽºÆ®¿Í ÇÔ²² ÇÒ´çÇÕ´Ï´Ù. Ç¥Çö½Ä ÇÒ´çÀ» »ç¿ëÇÕ´Ï´Ù.
+MsgBox, %Variable%                 ; ¸í·É¾î ¾ÈÀÇ º¯¼öÀÔ´Ï´Ù. 
+StringSplit, Variable, Variable, x ; InputVar¿Í OutputVar¸¦ »ç¿ëÇÏ´Â ¸í·É¾î ¾ÈÀÇ º¯¼öÀÔ´Ï´Ù.
+if (VariableNumber=6)              ; IF¿¡ °ýÈ£°¡ ÀÖÀ» ¶§¸¶´Ù, ±×°ÍÀº Ç¥Çö½ÄÀÔ´Ï´Ù. ±×·¡¼­  %¸¦ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù.
+If (Variable != VariableNumber)    ; IF¿¡ °ýÈ£°¡ ÀÖÀ» ¶§¸¶´Ù, ±×°ÍÀº Ç¥Çö½ÄÀÔ´Ï´Ù. ±×·¡¼­  %¸¦ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù.
+if VariableNumber=6                ; °ýÈ£°¡ ¾øÀ¸¸é, ±× if´Â ÀüÅëÀûÀÔ´Ï´Ù. ±×·¸Áö¸¸, '¿À¸¥ÂÊ¿¡ ÀÖ´Â' º¯¼ö¸¸ %°¡ ÇÊ¿äÇÕ´Ï´Ù. 
+If Var1 < %Var2%                   ; °ýÈ£°¡ ¾øÀ¸¸é, ±× if´Â ÀüÅëÀûÀÔ´Ï´Ù. ±×·¸Áö¸¸, '¿À¸¥ÂÊ¿¡ ÀÖ´Â' º¯¼ö¸¸ %°¡ ÇÊ¿äÇÕ´Ï´Ù. 
+
+
+ + + +
+
+

7 - °´Ã¼

+

+ °´Ã¼´Â Á» ´õ È¿À²ÀûÀ¸·Î »ç¿ëÇϱâ À§ÇØ µ¥ÀÌÅ͸¦ Á¶Á÷ÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. Á¾Á¾ °´Ã¼´Â ¹è¿­À̶ó°í ÁöĪµÇ±âµµ ÇÕ´Ï´Ù. + ±×·¯³ª ¸ðµç ¹è¿­Àº ±×³É °´Ã¼ÀÏ »ÓÀ̶ó´Â »ç½ÇÀ» ÀνÄÇÏ´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù. + °´Ã¼¸¦ ¾îµð¿¡ »ç¿ëÇÏ·Á°í Çϴ°¡¿¡ µû¶ó ´Ù¸£°Ô ºÎ¸£±âµµ ÇÏÁö¸¸, ±× ¸ðµç °´Ã¼´Â °°Àº °ÍÀÔ´Ï´Ù. +

+
+ °´Ã¼´Â ±âº»ÀûÀ¸·Î º¯¼ö ÁýÇÕÀÔ´Ï´Ù. + º¯¼ö À̸§Àº "Å°"¶ó°í ¾Ë·ÁÁ® ÀÖ°í, ±× º¯¼öÀÇ ³»¿ëÀº "°ª"À̶ó°í ÇÕ´Ï´Ù.
+
+ °´Ã¼¸¦ ¹è¿­ ¶Ç´Â À妽º ¹è¿­À̶ó°í ºÎ¸¥´Ù¸é, º¸Åë ¸ðµç Å°°¡ 1ºÎÅÍ ½ÃÀÛÇؼ­ ¿¬¼ÓÀûÀ¸·Î Áõ°¡ÇÏ´Â ¼ýÀÚ¶ó´Â ¶æÀÔ´Ï´Ù.
+ °´Ã¼¸¦ ¿¬°ü ¹è¿­À̶ó°í ºÎ¸¥´Ù¸é, Å°°¡ ¹®ÀÚ¿­(ÅؽºÆ®)À̰ųª ¾Æ´Ï¸é ºñ-¿¬¼Ó ¼ýÀÚµéÀ̶ó´Â ¶æÀÔ´Ï´Ù. + Á¾Á¾, ±× µÑÀº È¥¿ëµË´Ï´Ù. ¿¬¼Ó ¼ýÀÚµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù!
+
+ Å°³ª °ªÀÌ ¹«¾ùÀÎÁö´Â Á¦ÇÑÀÌ ¾ø½À´Ï´Ù. ½ÉÁö¾î ´Ù¸¥ ¹è¿­ÀÌ µÉ ¼öµµ ÀÖ½À´Ï´Ù! +
+ °ªÀÌ ¶Ç ¹è¿­À̸é, ÀÌ°ÍÀ» ³»Æ÷ ¹è¿­À̶ó°í ºÎ¸¨´Ï´Ù. ÀÌ¿¡ °üÇؼ­´Â ³ªÁß¿¡ ¼³¸íµå¸®°Ú½À´Ï´Ù. +
+
+ °´Ã¼¸¦ »ç¿ëÇÏ°í ½ÍÀº ÀÌÀ¯°¡ ¸¹ÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é:
+
    +
  1. ¹øÈ£ ¸®½ºÆ®¸¦ »ç¿ëÇÏ°í ½Í½À´Ï´Ù. ¿¹¸¦ µé¾î, À庸±â ¸ñ·Ï °°Àº °æ¿ìÀÌ°ÚÁö¿ä (ÀÌ°ÍÀº À妽º ¹è¿­À̶ó°í ÁöĪµË´Ï´Ù)
  2. +
  3. °ÝÀÚ¸¦ Ç¥ÇöÇÏ°í ½Í½À´Ï´Ù. ¾Æ¸¶µµ º¸µå °ÔÀÓ¿¡ »ç¿ëÇÏ½Ç »ý°¢ÀÌ°ÚÁö¿ä (ÀÌ°ÍÀº ³»Æ÷ °´Ã¼·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù)
  4. +
  5. °¢°¢¿¡ À̸§ÀÌ ÀÖ´Â ¹°Ç° ¸ñ·ÏÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î °úÀÏÀÇ Æ¯Â¡¿¡ ¸ÂÃß¾î À̸§À» Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù (ÀÌ°ÍÀº ¿¬°ü ¹è¿­À̶ó°í ºÎ¸¨´Ï´Ù)
  6. +
+
+

a. °´Ã¼ ¸¸µé±â

+
+ °´Ã¼¸¦ ¸¸µé·Á¸é ¸î °¡Áö ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. °¡Àå ÈçÇÑ ¹æ¹ýÀº ¾Æ·¡¿Í °°½À´Ï´Ù.
+
    +
  1. MyObject := ["one", "two", "three", 17]
    +
    + °¢°ýÈ£ ±¸¹®ÀÔ´Ï´Ù. + ÀÌ°ÍÀ¸·Î "À妽º ¹è¿­"À» ¸¸µé ¼ö ÀÖ½À´Ï´Ù. + À妽º ¹è¿­Àº Ç׸ñ ¸®½ºÆ®¸¦ 1ºÎÅÍ ÂÞ¿í ³ª¿­ÇØ º¸¿©ÁÖ´Â °´Ã¼ÀÔ´Ï´Ù. + ÀÌ ¿¹Á¦¿¡¼­, °ª "one"Àº °´Ã¼ Å°1¿¡ ÀúÀåµË´Ï´Ù (À妽º 1), ±×¸®°í °ª 17Àº °´Ã¼ Å° 4¿¡ ÀúÀåµË´Ï´Ù (À妽º 4). +
    +
  2. +
  3. Banana := {"Shape": "Elongated", "Color": "Yellow", "Taste": "Delicious", "Price": 3}
    +
    + È°°ýÈ£ ±¸¹®ÀÔ´Ï´Ù. + ÀÌ°ÍÀ¸·Î "¿¬°ü ¹è¿­"À» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. + ¿¬°ü ¹è¿­Àº °¢ Ç׸ñ¿¡ À̸§ÀÌ ÀÖ´Â µ¥ÀÌÅÍ ÁýÇÕÀÔ´Ï´Ù. + ÀÌ ¿¹Á¦¿¡¼­ °ª "yellow"´Â °´Ã¼ Å° "color"¿¡ ÀúÀåµË´Ï´Ù. ¶Ç, °ª 3Àº °´Ã¼ Å° "Price"¿¡ ÀúÀåµË´Ï´Ù. +
    +
  4. +
  5. MyObject := Array("one", "two", "three", 17)
    +
    + "¹è¿­" »ý¼º ÇÔ¼öÀÔ´Ï´Ù. ÀÌ ÇÔ¼ö´Â °¢°ýÈ£ ±¸¹®°ú µ¿µîÇÏÁö¸¸, ÇÔ¼ö¿¡ ½Î¿© ÀÖ½À´Ï´Ù. +
    +
  6. +
  7. Banana := Object("Shape", "Elongated", "Color", "Yellow", "Taste", "Delicious", "Price", 3)
    +
    + °´Ã¼ »ý¼º ÇÔ¼öÀÔ´Ï´Ù. ÀÌ ÇÔ¼ö´Â È°°ýÈ£¿Í µ¿µîÇÏÁö¸¸, ÇÔ¼ö¿¡ ½Î¿© ÀÖ½À´Ï´Ù. +
    +
  8. +
+ + ÀÌ ¸ðµç Á¤ÀÇ°¡ °°Àº °Í(°´Ã¼)À» ¸¸µé¾î ³½´Ù´Â °ÍÀ» ±â¾ïÇÏ´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù. ´ÜÁö Å°°¡ ´Ù¸¦ »ÓÀÔ´Ï´Ù. + +
+ +

b. °´Ã¼ »ç¿ëÇϱâ

+ °´Ã¼¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ ¿©·¯°¡Áö°¡ ÀÖ½À´Ï´Ù. °ªÀ» ¿­¶÷Çϱâ, °ªÀ» ¼³Á¤Çϱâ, °ªÀ» Ãß°¡Çϱâ, µîµîÀÌ Æ÷ÇԵ˴ϴÙ. +
+
+ °ªÀ» ¼³Á¤ÇÏ·Á¸é: +
+ °´Ã¼¿¡ °ªÀ» ¼³Á¤ÇÏ´Â ÀÏÀº º¯¼ö¿¡ °ªÀ» ¼³Á¤ÇÏ´Â °Í ¸¸Å­À̳ª ´Ü¼øÇÕ´Ï´Ù.
+ ±×³É (¿­¶÷ ¼½¼Ç¿¡¼­ º¸½ÃµíÀÌ) Ç¥Çö½Ä ÇÒ´ç ½Éº¼ :=ÀÇ ¿ÞÂÊ¿¡.
+ °¢°ýÈ£³ª Á¡ Ç¥±â¹ýÀ» ¹èÄ¡Çϱ⸸ ÇÏ¸é µË´Ï´Ù. +
+ ¿¹¸¦ µé¾î:
+ Banana.Consistency := "Mushy"
+ Banana["Pickled"] := True ; ÀÌ ¹Ù³ª³ª´Â ÀýÀÎ ¹Ù³ª³ªÀÔ´Ï´Ù. ¿ìÀ¡. +
+
+ °ªÀ» ¿­¶÷ÇÏ·Á¸é: +
    +
  1. Value := Banana["Color"]
    +
    °¢°ýÈ£ Ç¥±â¹ýÀÔ´Ï´Ù. Ç¥Çö½ÄÀ» Å°·Î »ç¿ëÇÏ¿© °´Ã¼·ÎºÎÅÍ °ªÀ» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. + ÀÌ °æ¿ì, °£´ÜÇÑ Ç¥Çö½Ä "Color"¸¦ »ç¿ëÇß½À´Ï´Ù. ÀÌ°ÍÀÌ (´ç¿¬È÷) Å° ColorÀÔ´Ï´Ù. + ¸Þ½ÃÁö ¹Ú½º¿¡ "Yellow"¶ó´Â ´Ü¾î°¡ ³ªÅ¸³¯ ÅÙµ¥, ÀÌ°ÍÀº ¾Õ ¼½¼Ç¿¡¼­ Å° Color¿¡ ÇÒ´çÇß´ø °ªÀÔ´Ï´Ù. +
    +
  2. +
  3. Value := Banana.Color
    +
    + Á¡ Ç¥±â¹ýÀÔ´Ï´Ù. ÀÌ ¹æ¹ýÀº ±âÈ£ ¹®ÀÚ¿­¸¸ Å°·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. º¯¼ö´Â Å°·Î »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. +
    +
  4. +
+
+ »õ Å°¿Í °ªÀ» Ãß°¡ÇÏ·Á¸é: +
    +
  1. Á÷Á¢ÀûÀ¸·Î °ªÀ» Ãß°¡Çϱâ +
    + Á÷Á¢ÀûÀ¸·Î Å°¿Í °ªÀ» Ãß°¡ÇÏ·Á¸é, ±×³É Á¸ÀçÇÏÁö ¾Ê´Â Å°¸¦ ¼³Á¤Çϱ⸸ ÇÏ¸é µË´Ï´Ù. + ¿¹¸¦ µé¾î:
    + MyObject.NewKey := "Shiny"
    + MyObject["NewerKey"] := 3.1415 +
    +
  2. +
  3. °ªÀ» »ðÀÔÇϱâ +
    + °´Ã¼¿¡ Å°¿Í °ªÀ» Ãß°¡ÇÏ´Â ¶Ç´Ù¸¥ ¹æ¹ýÀº ´ÙÀ½ ¹æ¹ý Áß Çϳª¸¦ »ç¿ëÇÕ´Ï´Ù.
    +
    + MyObject.InsertAt(Index, Value1, Value2, Value3...)
    + Index´Â Á¤¼ö Å°ÀÔ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é »ðÀÔÇÒ ¶§¸¶´Ù ÀÌ °ªº¸´Ù ´õ ³ôÀº ¸ðµç Å°µéÀÌ À§·Î À̵¿ÇÕ´Ï´Ù. Æ´ÀÌ À־ À̵¿ÇÕ´Ï´Ù. + (¿¹¸¦ µé¾î, Å°°¡ 1ºÎÅÍ 100 ±îÁö¸¸ Á¸ÀçÇÏ°í, °ªÀ» Å° 50¿¡ »ðÀÔÇϸé, 100Àº 101·Î À̵¿ÇÕ´Ï´Ù).
    +
    + MyObject.Push(Value1, Value2, Value3...)
    + ÀÌ·¸°Ô Çϸé MyObject¹è¿­ÀÇ ³¡¿¡ °ªÀÌ "Ãß°¡µË´Ï´Ù". ´Ù¸¥ ¸»·Î Çؼ­, °ªÀ» °¡Àå ³ôÀº Á¤¼öÅ°º¸´Ù Çϳª ´õ Å« À§Ä¡¿¡ »ðÀÔÇÕ´Ï´Ù.
    +
    +
  4. +
+
+ Å°¿Í °ªÀ» »èÁ¦ÇÏ·Á¸é: +
    +
  1. °ªÀ» Á¦°ÅÇϱâ.
    +
    + °¡Àå ½±°Ô °ªÀ» Á¦°ÅÇÏ´Â ¹æ¹ýÀº ±×³É ¾ø¾Ö ¹ö¸®´Â °ÍÀÔ´Ï´Ù. + ±×³É ""·Î ¼³Á¤ÇÏ¸é µË´Ï´Ù. ºó ¹®ÀÚ¿­À̶ó°í ºÎ¸¨´Ï´Ù. ÀÌ°ÍÀ¸·Î´Â Å°°¡ Á¦°ÅµÇÁö ¾ÊÁö¸¸, °ªÀÌ ¼³Á¤µÇÁö ¾ÊÀº °ª°ú µ¿ÀÏÇÏ°Ô º¸À̵µ·Ï ¸¸µì´Ï´Ù.
    + HasKey ¸Þ½îµå¸¦ »ç¿ëÇϸé Å°°¡ ¿©ÀüÈ÷ Á¸ÀçÇÑ´Ù°í ¾Ë·ÁÁÙ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¸é ¿©ÀüÈ÷ for ȸµ¹ÀÌ¿¡ ³ªÅ¸³¯ °ÍÀÔ´Ï´Ù. (ȸµ¹ÀÌ¿¡ °üÇؼ­´Â ³ªÁß¿¡ ÀÚ¼¼È÷ ¸»¾¸µå¸®°Ú½À´Ï´Ù) +
    +
  2. +
  3. Å°¸¦ Á¦°ÅÇϱâ
    +
    + Å°¿Í °ªÀ» Á¦°ÅÇÏ´Â ¸î °¡Áö ´Ù¸¥ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù: +
    +
      +
    1. RemovedValue := MyObject.Delete(AnyKey) +
      + MyObject[AnyKey]ÀÇ ÀÌÀü °ªÀº RemovedValue¿¡ ÀúÀåµË´Ï´Ù. +
      +
    2. +
    3. NumberOfRemovedKeys := MyObject.Delete(FirstKey, LastKey) +
      + ÀÌ·±½ÄÀ¸·Î Á¦°ÅÇϸé FirstKey¿Í LastKey »çÀÌÀÇ ¼ýÀÚ/Á¤¼ö ¶Ç´Â ¹®ÀÚ¿­ Å°¸¦ ¸ù¶¥ Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù.
      +
      + µ¹·Á¹Þ´Â °ªÀº Á¦°ÅµÈ Å°ÀÇ °³¼öÀÔ´Ï´Ù. ÀÌ°ÍÀº Å° »çÀÌ¿¡ Æ´ÀÌ ÀÖÀ» ¶§ À¯¿ëÇÕ´Ï´Ù + (¿¹¸¦ µé¾î, Å°¸¦ 1ºÎÅÍ 4±îÁö ÁöÁ¤ÇßÁö¸¸, Å° 2´Â Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é, NumberOfRemovedKeys°¡ 3À¸·Î ¼³Á¤µÇ°í ¼¼ °³ÀÇ Å°¸¸ Á¦°ÅµË´Ï´Ù) +
      +
    4. +
    5. MyObject.Pop() +
      + °¡Àå ³ôÀº Á¤¼ö Å°°¡ Á¦°ÅµÇ°í, ±× °ªÀ» µ¹·ÁÁÝ´Ï´Ù. ¿µÇâÀ» ¹ÞÀ» ´õ ³ôÀº Å°´Â ÀüÇô ¾ø½À´Ï´Ù. +
      +
    6. +
    7. RemovedValue := MyObject.RemoveAt(Index)
      + NumberOfRemovedKeys := MyObject.RemoveAt(Index, Length) +
      + IndexºÎÅÍ Index + Length - 1 (Æ÷ÇÔe)±îÁö ¸ðµç Å°µéÀÌ »èÁ¦µË´Ï´Ù. Length¸¦ »ý·«Çϸé 1ÀÌ ±âº»°ªÀÔ´Ï´Ù. + Å°¸¦ Á¦°ÅÇÑ ´ÙÀ½ ÀÌ º¸´Ù ³ôÀº ¸ðµç ¼ýÀÚ/Á¤¼ö Å°µéÀ» À§·Î ¿Ã·Á¼­ Æ´À» ¸Þ¿ó´Ï´Ù. + ±×·¡¼­ °ªÀÌ Index + Length¿¡ ÀÖ¾ú´Ù¸é ÀÌÁ¦ ±× °ªÀº Index¿¡ ÀÖ½À´Ï´Ù. + ÀÌ ¹æ½ÄÀº ¿©·¯ °ªÀÌ ÁöÁ¤µÈ InsertAt ¸Þ½îµåÀÇ ÀÛµ¿ ¹æ½Ä°ú ºñ½ÁÇÕ´Ï´Ù. +
      +
    8. +
    +
  4. +
+
+ + + + +
+
+

8 - ±âŸ µîµî µµ¿ò

+

+ ÀÌÁ¦ ¿©ÇàÀÇ ¸·¹ÙÁö¿¡ ´Ù´Ù¶ú½À´Ï´Ù. ¸ðÂÉ·Ï ¹«¾ð°¡¸¦ ¹è¿ü±â¸¦ ¹Ù¶ø´Ï´Ù. + ±×·¯³ª ³¡³»±â Àü¿¡, ¿©·¯ºÐÀÌ ²À ¾Ë¾Æ¾ß ÇÑ´Ù°í »ý°¢ÇÏ´Â ´Ù¸¥ °ÍµéÀ» ¿©±â¿¡ Á¦½ÃÇÕ´Ï´Ù. Áñ°Å¿î ½Ã°£ µÇ½Ã±â¸¦! +

+

a. ½ÅºñÇÑ []

+
+ ¹®¼­¸¦ ÅëÇÏ¿©, ´ÙÀ½ µÎ ½Éº¼ÀÌ º¸ÀÏ °Ì´Ï´Ù ([ ±×¸®°í ]). °ÅÀÇ ¸ðµç ÆäÀÌÁö »ó´Ü¿¡ ³ë¶õ»ö ±¸¹® ¹Ú½º ¾È¿¡¼­ Äڵ带 µÑ·¯ ½Î°í ÀÖÁö¿ä. + + ÀÌ °¢È°È£ ¾È¿¡ µç ¸ðµç °ÍµéÀº ¼±ÅÃÀûÀÔ´Ï´Ù. ±× ¾È¿¡ µç °ÍµéÀº ÇÊ¿ä ¾øÀ¸¸é »ý·«Çصµ µÈ´Ù´Â ¶æÀÔ´Ï´Ù. + Äڵ带 ÀÛ¼ºÇÒ ¶§, [] ´Â Àý´ë·Î ŸÀÚÇÏÁö ¾Ê½À´Ï´Ù.

+ ControlGetText ÆäÀÌÁö¿¡¼­ ÀÌ°ÍÀ» º¸½Ç ¼ö ÀÖ½À´Ï´Ù (»ö±ò ¾øÀÌ):
+ ControlGetText, OutputVar [, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]

+ ±×·¡¼­ ±×³É ¿øÇÏ´Ù¸é ÀÌ·¸°Ô Çصµ µË´Ï´Ù:
+ ControlGetText, OutputVar

+ + ¶Ç´Â Á» ´õ ¼¼¹ÐÇÏ°Ô ÀÌ·¸°Ô Çصµ µË´Ï´Ù:
+ ControlGetText, OutputVar, Control, WinTitle

+ + ExcludeTitle¸¦ »ç¿ëÇÏ°í ½ÍÁö¸¸ WinText³ª WinTitleÀº ä¿ì°í ½ÍÁö ¾Ê´Ù¸é? °£´ÜÇÕ´Ï´Ù!
+ ControlGetText, OutputVar, Control,,, ExcludeTitle

+

+ ¸Å°³º¯¼ö´Â ¹«½ÃÇÒ ¼ö ¾ø½À´Ï´Ù. ±×³É ºó ä·Î ³õ¾Æ µÎ´Â °ÍÀº ±¦Âú½À´Ï´Ù.
+ "WinTitle, WinText"¸¦ ¹«½ÃÇØ ¹ö¸®¸é, ´ÙÀ½°ú °°ÀÌ º¸ÀÏ °ÍÀÌ°í ¹®Á¦¸¦ ÀÏÀ¸Åµ´Ï´Ù:
+ ControlGetText, OutputVar, Control, ExcludeTitle
+ ´ÙÀ½Àº À¯È¿ÇÕ´Ï´Ù.
+ ControlGetText, OutputVar, Control,,, ExcludeTitle +

+
+

b. AHK ¹öÀü ¾Ë¾Æ³»±â

+
+ ´ÙÀ½ Äڵ带 ½ÇÇàÇϸé AHK ¹öÀüÀ» º¼ ¼ö ÀÖ½À´Ï´Ù: +
+MsgBox, %A_AHKVersion%
+
+ + ¶Ç´Â "AutoHotkey µµ¿ò¸» ÆÄÀÏ" ¶Ç´Â "AutoHotkey.chm"À» ½ÃÀÛ ¸Þ´º³ª ¼³Ä¡ µð·ºÅ丮¿¡¼­ ã¾Æ º¸½Ê½Ã¿À. +
+ +

c. ½ÃÇà Âø¿À

+

+ ½ÃÇà Âø¿À´Â ¹è¿ò¿¡¼­ ¾ÆÁÖ ÈçÇÏ°í È¿°úÀûÀÎ ¹æ¹ýÀÔ´Ï´Ù. + ¸ðµç °Íµé¿¡ µµ¿òÀ» ±¸ÇÏ´Â ´ë½Å¿¡, Á» È¥ÀÚ¸¸ÀÇ ½Ã°£À» °¡Áö°í (¸î ½Ã°£À̳ª ¸î ÀÏ µ¿¾È) ÀÛµ¿½ÃÄÑ º¸·Á°í ½ÃµµÇÏ´Â °ÍÀÌ ´õ »¡¸® ¹è¿ì´Âµ¥ µµ¿òÀÌ µÇ½Ç °Ì´Ï´Ù. +

+

+ ¹º°¡¸¦ ½ÃµµÇØ º¸°í ¿¡·¯¸¦ ¸ÂÀÌÇØ º¸¸é¼­, ±× ¿¡·¯¸¦ ¿¬±¸ÇÕ´Ï´Ù. ´ÙÀ½ Äڵ带 ¼öÁ¤ÇÑ ´ÙÀ½, ´Ù½Ã ½ÃµµÇØ º¾´Ï´Ù. + ¿©ÀüÈ÷ ¿¡·¯¸¦ ¸ÂÀÌÇÑ´Ù¸é, Äڵ带 Á» ´õ ¼öÁ¤ÇÕ´Ï´Ù. Äڵ尡 ´õ ÀÌ»ó ½ÇÆÐÇÏÁö ¾ÊÀ» ¶§±îÁö °è¼Ó ½Ãµµ¿Í ½ÇÆи¦ °ÅµìÇÕ´Ï´Ù. + ¹®¼­¸¦ Àаí, ¿¡·¯¸¦ ÀÐ°í ¹«¾ùÀÌ ÀÛµ¿ÇÏ°í ¹«¾ùÀÌ ÀÛµ¿ÇÏÁö ¾Ê´ÂÁö ¹è¿ì¸é¼­ ¸¹Àº °ÍÀ» ¹è¿ì½Ç °Ì´Ï´Ù. + ½Ãµµ, ½ÇÆÐ, ½Ãµµ, ½ÇÆÐ,½Ãµµ, ½ÇÆÐ, ½Ãµµ, ½ÇÆÐ, ¼º°ø! +

+

+ ÀÌ ¹æ¹ýÀ¸·Î ¼ö ¸¹Àº "ÇÁ·ÎµéÀÌ" ¹è¿ü½À´Ï´Ù. ±×·¯³ª µµ¿òÀ» ±¸ÇÏ´Â µ¥ µÎ·Á¿öÇÏÁö ¸¶½Ê½Ã¿À. ¸é¹Ú´çÇÏÁö ¾Ê½À´Ï´Ù. + ¹è¿ì´Â µ¥´Â ½Ã°£ÀÌ ÇÊ¿äÇϸç, ¿©·¯ºÐÀÌ ¸¸³ª´Â "ÇÁ·Î"°¡ ´Ü ¸î ½Ã°£ ¸î ÀÏ ¸¸¿¡ ¹è¿ö¼­ ¸¶½ºÅÍ°¡ µÈ °ÍÀÌ ¾Æ´Õ´Ï´Ù. +

+

"óÀ½¿¡´Â ¼º°øÇÏÁö ¸øÇÏ´õ¶óµµ, ´Ù½Ã ½Ãµµ, ¶Ç ½Ãµµ, ½ÃµµÇ϶ó." - Hickson, William E.

+

d. µé¿©¾²±â

+
+ µé¿©¾²±â´Â ¾ÆÁÖ Áß¿äÇÕ´Ï´Ù! ÄÚµå´Â ¿Ïº®ÇÏ°Ô ½ÇÇàµÇÁö¸¸, Äڵ带 ÀÐÀ» ¶§ ½É°¢ÇÑ µÎÅë°Å¸®°¡ µÉ °ÍÀÔ´Ï´Ù. + ÀÛÀº ÄÚµå¶ó¸é (25 ÁÙ ÀÌÇÏ) ¾Æ¸¶µµ µé¿©¾²±â°¡ ¾ø´õ¶óµµ Àдµ¥ ¹®Á¦°¡ ¾ø°ÚÁö¸¸, Á¶¸¸°£ ¾î·Á¿öÁú °Ì´Ï´Ù. + µÇµµ·ÏÀÌ¸é ºü¸® µé¿©¾²±â¸¦ ¹è¿ì´Â ÆíÀÌ Á¦ÀÏ ÁÁ½À´Ï´Ù.
+ µé¿©¾²±â´Â Ưº°ÇÑ ½ºÅ¸ÀÏÀÌ ¾øÁö¸¸, ÀÏ°ü¼ºÀ» À¯ÁöÇÏ´Â °ÍÀÌ Á¦ÀÏ ÁÁ½À´Ï´Ù.
+ "µé¿©¾²±â¶õ ¹«¾ùÀΰ¡?" ¾Æ¸¶µµ ÀÌ·¸°Ô ¹¯°í ½Í°ÚÁö¿ä? + ¹«¾ùÀÌ ¹«¾ù¿¡ ¼ÓÇØ ÀÖ´ÂÁö º¸±â À§ÇØ Äڵ带 °£°ÝÀ» µÎ¾î ÂÉ°³´Â °ÍÀÔ´Ï´Ù. + »ç¶÷µéÀº ÇÑ ·¹º§ ´ç º¸Åë 3 À̳ª 4 °³ÀÇ °ø¹é ¶Ç´Â ÇÑ °³ÀÇ ÅÇÀ» »ç¿ëÇÕ´Ï´Ù.

+ µé¿©¾²±â ¾øÀ½: + +
+if (car="old")
+{
+msgbox, the car is really old
+if (wheels="flat")
+{
+msgbox, this car is not safe to drive.
+Return
+}
+else
+{
+msgbox, Be careful! This old car will be dangerous to drive.
+}
+}
+else
+{
+msgbox, My`, what a shiny new vehicle you have there.
+}
+
+ + µé¿©¾²±âÇÔ: + +
+if (car="old")
+{
+   msgbox, ÀÚµ¿Â÷°¡ Á¤¸» ¿À·¡µÇ¾ú½À´Ï´Ù
+   if (wheels="flat")
+   {
+      msgbox, ÀÌ ÀÚµ¿Â÷´Â ¿îÀüÇϱ⿡ ¾ÈÀüÇÏÁö ¾Ê½À´Ï´Ù.
+      Return
+   }
+   else
+   {
+      msgbox, ÁÖÀÇÇϼ¼¿ä! ÀÌ ±¸Çü ÀÚµ¿Â÷´Â ¿îÀüÇϱ⿡ À§ÇèÇÕ´Ï´Ù.
+   }
+}
+else
+{
+   msgbox, ¿Í¿ì`, Á¤¸» ¸ÚÁø ÀÚµ¿Â÷¸¦ °¡Áö¼Ì±º¿ä.
+}
+
+ Wiki¿¡ ´Ù¾çÇÑ ½ºÅ¸ÀÏ°ú ¿¹Á¦°¡ ÀÖ½À´Ï´Ù. ¿©·¯ºÐÀÌ Àб⿡ °¡Àå ½±´Ù°í »ý°¢ÇÏ´Â ½ºÅ¸ÀÏÀ» °ñ¶ó µé¿©¾²±â ÇÏ´Â ¹ýÀ» ¹è¿ì½Ê½Ã¿À.
+ http://en.wikipedia.org/wiki/Indent_style +
+ +

e. µµ¿ò ¿äûÇϱâ

+ ¹°¾îº¸±â Àü¿¡, ¸ÕÀú ½º½º·Î ¿¬±¸ÇØ º¾´Ï´Ù. ¶Ç´Â ½º½º·Î ÄÚµåÇØ º¾´Ï´Ù. + °á°ú°¡ ¸¸Á·½º·´Áö ¸øÇÏ´Ù¸é, ¾Æ·¡¸¦ ÀÐ¾î º¸½Ê½Ã¿À. +
    +
  • µÎ·Á¿ö ÇÏÁö ¸»°í µµ¿òÀ» ûÇÕ´Ï´Ù. °¡Àå ¶È¶ÈÇÑ »ç¶÷µéÁ¶Â÷ ´Ù¸¥ ÀÌ¿¡°Ô µµ¿òÀ» ±¸ÇÕ´Ï´Ù.
  • +
  • ¹«¾ùÀ» ½ÃµµÇÏ°í ÀÖ´ÂÁö µÎ·Á¿ö ÇÏÁö ¸»°í º¸¿©ÁÝ´Ï´Ù. ½ÉÁö¾î ¸»µµ ¾ÈµÇ´Â °ÍÀ̶ó°í »ý°¢ÇÒÁö¶óµµ ¸»ÀÔ´Ï´Ù.
  • +
  • ½ÃµµÇØ º» °ÍµéÀ» ¸ðµÎ °Ô½ÃÇÕ´Ï´Ù.
  • +
  • ¿©·¯ºÐÀ» Á¦¿ÜÇÏ°í ´©±¸µç ¸ÛûÇؼ­ ¾Æ¹«°Íµµ ¸ð¸¥´Ù°í »ý°¢ÇϽʽÿÀ. µÇµµ·ÏÀÌ¸é ¸¹Àº Á¤º¸¸¦ Á־ ¹Ùº¸µé¿¡°Ô ¹«¾ùÀ» ÇÏ·Á°í ÇÏ´ÂÁö Àϱú¿ö ÁֽʽÿÀ. ¿ì¸®¸¦ µ½´Â °ÍÀÌ ¹Ù·Î ¿©·¯ºÐÀ» µ½´Â °ÍÀÔ´Ï´Ù.
  • +
  • Àγ» ÇϽʽÿÀ.
  • +
  • Á¤Áß ÇϽʽÿÀ.
  • +
  • ´ÙÀ½À» ¿©½Ê½Ã¿À.
  • +
  • Ä£Àý ÇϽʽÿÀ.
  • +
  • Áñ±â½Ê½Ã¿À
  • +
+ + ¹Ù·Î ´äÀ» ¾òÁö ¸øÇÏ´õ¶óµµ, Àû¾îµµ ÇÏ·ç (24 ½Ã°£)Àº ±â´Ù¸° ÈÄ¿¡ µµ¿òÀ» ´õ ¿äûÇÕ´Ï´Ù. ¿ì¸®µµ ±â²¨ÀÌ µµ¿ÍÁÖ°í ½ÍÁö¸¸, ½Ã°£ÀÌ ³ª¾ß µµ¿ÍÁÙ ¼ö ÀÖ½À´Ï´Ù. + ÀÏÀ» ÇÏ°í ÀÖÀ» ¼öµµ ÀÖ°í, ÀáÀڰųª, °ÔÀÓÇϰųª, °¡Á·°ú ÇÔ²²À̰ųª ¾Æ´Ï¸é ±×³É ¹Ù»Ü ¼ö ÀÖ½À´Ï´Ù.
+ µµ¿òÀ» ±â´Ù¸®´Â µ¿¾È, ½º½º·Î ½ÃµµÇϸ鼭 ¹è¿ï ¼ö ÀÖ½À´Ï´Ù. + µµ¿ò¾øÀÌ ½º½º·Î ¹º°¡¸¦ ÀÌ·ç¸é Å« º¸¶÷À» ´À³¢½Ç °ÍÀÔ´Ï´Ù. + +

f. ´Ù¸¥ ¸µÅ©µé

+

+ ÀÚÁÖ ¹¯´Â Áú¹®µé (FAQ) +

+
+
+
+ + diff --git a/src/docs/Variables.htm b/src/docs/Variables.htm new file mode 100644 index 0000000..61bc9cc --- /dev/null +++ b/src/docs/Variables.htm @@ -0,0 +1,893 @@ + + +Variables and Expressions + + + + + + + +

º¯¼ö¿Í Ç¥Çö½Ä

+ +

¸ñÂ÷

+ +

º¯¼ö

+

º¯¼ö À¯Çü: ¿ÀÅäÇÖÅ°´Â ¸í½ÃÀûÀ¸·Î Á¤ÀÇµÈ º¯¼ö À¯ÇüÀÌ ¾ø½À´Ï´Ù. ±×·¸Áö¸¸, ¼ýÀÚ¸¸ µé¾î ÀÖ´Â º¯¼ö´Â (¼±ÅÃÀûÀ¸·Î ¼Ò¼öÁ¡ÀÌ ÀÖÀ¸¸é) ¼öÇÐ ¿¬»êÀ̳ª ºñ±³°¡ ÇÊ¿äÇÒ °æ¿ì ÀÚµ¿À¸·Î ¼ýÀÚ·Î ÀÌÇØÇÕ´Ï´Ù (¼öÇ༺´ÉÀ» °³¼±Çϱâ À§ÇØ, ¼ýÀÚ´Â ³»ºÎÀûÀ¸·Î ij½¬¸¦ Çؼ­ ¹®ÀÚ¿­°úÀÇ »óÈ£º¯È¯À» ÇÇÇÕ´Ï´Ù.)

+

º¯¼ö ¿µ¿ª°ú ¼±¾ð: ÇÔ¼ö¿¡¼­ Áö¿ª º¯¼ö¸¦ Á¦¿ÜÇÏ°í, ¸ðµç º¯¼ö´Â Àü¿ªÀûÀÔ´Ï´Ù; Áï, ½ºÅ©¸³Æ®ÀÇ ¾îµð¿¡¼­µç ±× ³»¿ëÀ» Àаųª º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÔ¼ö ÆäÀÌÁö¿¡ Àû½ÃÇÑ ¶§¸¦ Á¦¿ÜÇÏ°í, º¯¼ö´Â ¼±¾ðÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù; ±×³É »ç¿ëÇϸé Á¸ÀçÇÕ´Ï´Ù (°¢ º¯¼ö´Â ºó »óÅ·Π½ÃÀÛÇÕ´Ï´Ù).

+

º¯¼ö À̸§: º¯¼ö À̸§Àº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê½À´Ï´Ù (¿¹¸¦ µé¾î, CurrentDate´Â currentdate¿Í µ¿ÀÏÇÕ´Ï´Ù). º¯¼ö À̸§Àº ±æÀÌ°¡ 253 ¹®ÀÚ±îÁö Çã¿ëµÇ°í ±âÈ£¿Í ¼ýÀÚ ±×¸®°í ´ÙÀ½ ±¸µÎÁ¡ Ç¥½Ãµµ Çã¿ëµË´Ï´Ù: # _ @ $

+

½ºÅ¸ÀÏ °ü·Ê ¶§¹®¿¡, ÀϹÝÀûÀ¸·Î º¯¼ö´Â ±âÈ£¿Í ¼ýÀÚ ±×¸®°í ¹ØÁÙ ¹®ÀÚ¸¸ »ç¿ëÇÏ´Â ÆíÀÌ ´õ ÁÁ½À´Ï´Ù (¿¹¸¦ µé¾î: CursorPosition, Total_Items, ±×¸®°í entry_is_valid). ÀÌ ½ºÅ¸ÀÏÀ» »ç¿ëÇÏ¸é ´Ù¸¥ ¾ð¾î¿¡ Ä£¼÷ÇÑ »ç¶÷µéÀÌ ¿ÀÅäÇÖÅ° ½ºÅ©¸³Æ®¸¦ ´õ ½±°Ô ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ,  ¿ÀÅäÇÖÅ°¿Í °°Àº °ü·Ê¸¦  ´Ù¸¥ ¾ð¾î¿¡ »ç¿ëÇϸé, ¿©·¯ºÐ ÀÚ½ÅÀÇ ½ºÅ©¸³Æ®¸¦ ´Ù½Ã ÀбⰡ ´õ ½±´Ù´Â °ÍÀ» ¾Æ½Ã°Ô µÉ °ÍÀÔ´Ï´Ù.

+

+º¯¼ö À̸§À» ÀüÀûÀ¸·Î ¼ýÀÚ·Î ±¸¼ºÇÒ ¼öµµ ÀÖÁö¸¸, ÀÌ°ÍÀº ÀϹÝÀûÀ¸·Î µé¾î¿À´Â ¸í·É¾î ÁÙ ¸Å°³º¯¼ö¿¡¸¸ »ç¿ëµË´Ï´Ù. ±×·± ¼ýÀÚ À̸§Àº Ç¥Çö½Ä¿¡ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ¿Ö³ÄÇÏ¸é º¯¼ö°¡ ¾Æ´Ï¶ó ¼ýÀÚ·Î ÀνĵDZ⠶§¹®ÀÔ´Ï´Ù.

+

+´Ü¾î AND¿Í OR ±×¸®°í NOTÀº Ç¥Çö½Ä¿¡ ¿¬»êÀÚ·Î »ç¿ëµÇ±â ¶§¹®¿¡, ÀϹÝÀûÀ¸·Î º¯¼ö À̸§À¸·Î »ç¿ëÇÏ¸é ¾ÈµË´Ï´Ù. ±×·± À̸§À» Ç¥Çö½Ä¿¡ »ç¿ëÇϸé ÀûÀýÇÏ°Ô Æò°¡µÇÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù.

+

º¯¼ö ¾È¿¡ º¯¼ö¸¦ ÀúÀåÇϱâ: ¹®ÀÚ¿­À̳ª ¼ýÀÚ¸¦ º¯¼ö¿¡ ÀúÀåÇÏ·Á¸é, ÀüÅëÀû ÇÒ´ç°ú Ç¥Çö½Ä ÇÒ´çÀÇ µÎ °¡Áö ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. +ÀüÅëÀû ¹æ¹ýÀº µîÈ£ ±âÈ£ ¿¬»êÀÚ(=)¸¦ »ç¿ëÇÏ¿© °ãµû¿ÈÇ¥ ¾ø´Â ±âÈ£ ¼ýÀÚ¿­À̳ª ÆÛ¼¾Æ® »çÀο¡ µÑ·¯½ÎÀÎ º¯¼ö¸¦ ÇÒ´çÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
MyNumber = 123
+MyString = ÀÌ°ÍÀº ¹®ÀÚ¿­ÀÔ´Ï´Ù.
+CopyOfVar = %Var%  ; º¯¼öÀÇ ³»¿ëÀ» ¿­¶÷ÇÏ·Á¸é µîÈ£(=) ¿¬»êÀÚ¿Í ÇÔ²² ÆÛ¼¾Æ® »çÀÎÀÌ ÇÊ¿äÇÕ´Ï´Ù.
+

´ëÁ¶ÀûÀ¸·Î, Ç¥Çö½Ä ÇÒ´çÀº ½ÖÁ¡-µîÈ£ ¿¬»êÀÚ (:=)¸¦ »ç¿ëÇÏ¿©, ¼ýÀÚ¿Í °ãµû¿ÈÇ¥ ºÙÀÎ ¹®ÀÚ¿­ ±×¸®°í ±âŸ À¯ÇüÀÇ Ç¥Çö½ÄÀ» ÀúÀåÇÕ´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â ±â´ÉÀûÀ¸·Î ¾ÕÀÇ ¿¹Á¦¿Í µ¿ÀÏÇÕ´Ï´Ù:

+
MyNumber := 123
+MyString := "ÀÌ°ÍÀº ±âÈ£ ¹®ÀÚ¿­ÀÔ´Ï´Ù."
+CopyOfVar := Var  ; ¾ÕÀÇ ¿¹¿Í ´Ù¸£°Ô, ÆÛ¼¾Æ® »çÀÎÀÌ  := ¿¬»êÀÚ¿¡ »ç¿ëµÇÁö ¾Ê½À´Ï´Ù.
+

´õ ¸í·áÇϱ⠶§¹®¿¡ Ç¥Çö½Ä ÇÒ´çÀ» ¸¹Àº »ç¶÷µéÀÌ ¼±È£ÇÕ´Ï´Ù. ±×¸®°í Ç¥Çö½Ä ÇÒ´çÀÌ Áö¿øÇϴ ǥÇö½Ä ±¸¹®ÀÌ ´Ù¸¥ ¸¹Àº ¾ð¾îÀÇ Ç¥Çö½Ä ±¸¹®°ú °ÅÀÇ µ¿ÀÏÇϱ⠶§¹®ÀÔ´Ï´Ù.

+

+À§¿¡¼­ ´«Ä¡ ä¼Ì°ÚÁö¸¸ º¯¼öÀÇ ³»¿ëÀ» Áö¿ì´Â µ¥¿¡µµ µÎ °¡Áö ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù (Áï, º¯¼ö¸¦ ºñ¿ì·Á¸é):

+
MyVar =
+MyVar := ""
+

+À§¿¡¼­ ºó °ãµû¿ÈÇ¥ ½ÖÀº := ¿¬»êÀÚ¿¡¸¸ »ç¿ëÇØ¾ß Çϴµ¥ = ¿¬»êÀÚ¿Í »ç¿ëÇÏ¸é º¯¼ö ¾È¿¡ µÎ °³ÀÇ °ãµû¿ÈÇ¥ ¹®ÀÚ°¡ ±âÈ£ ±×´ë·Î ÀúÀåµÇ¾î ¹ö¸®±â ¶§¹®ÀÔ´Ï´Ù.

+

º¯¼öÀÇ ³»¿ë ¿­¶÷Çϱâ: °ªÀ» ÀúÀåÇÏ´Â µÎ °¡Áö ¹æ¹ý°ú ¸¶Âù°¡Áö·Î, °ªÀ» ¿­¶÷ÇÏ´Â ¹æ¹ýµµ ¿ª½Ã ÀüÅëÀû ¿­¶÷°ú Ç¥Çö½Ä ¿­¶÷ µÎ °¡ÁöÀÇ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ÀüÅëÀû ¿­¶÷Àº °¢ º¯¼ö À̸§À» ÆÛ¼¾Æ® »çÀÎÀ¸·Î µÑ·¯ ½Î±â¸¦ ¿ä±¸ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
MsgBox Var º¯¼öÀÇ °ªÀº %Var% ÀÔ´Ï´Ù.
+CopyOfVar = %Var%
+

+´ëÁ¶ÀûÀ¸·Î, Ç¥Çö½Ä ¿­¶÷Àº º¯¼ö À̸§ µÑ·¹¿¡ ÆÛ¼¾Æ® ±âÈ£¸¦ »ý·«ÇÏÁö¸¸, ±âÈ£ ¹®ÀÚ¿­Àº °ãµû¿ÈÇ¥·Î µÑ·¯¾ß ÇÕ´Ï´Ù. ±×·¡¼­, ´ÙÀ½Àº ¾Õ ¿¡Á¦ÀÇ µ¿µîÇÑ Ç¥Çö½ÄÀÔ´Ï´Ù:

+
MsgBox % "The value in the variable named Var is " . Var . "."  ; µÎ °³ÀÇ ¹®ÀÚ¿­À» °áÇÕÇϴµ¥ ¸¶Ä§Ç¥°¡ »ç¿ëµÇ¾ú½À´Ï´Ù.
+CopyOfVar := Var
+

À§ÀÇ MsgBox ÁÙ¿¡¼­, ÆÛ¼¾Æ® »çÀΰú ½ºÆäÀ̽º°¡ ¸Å°³º¯¼ö¸¦ ÀüÅëÀû ¸ðµå¿¡¼­ Ç¥Çö½Ä ¸ðµå·Î ¹Ù²Ù´Âµ¥ »ç¿ëµÇ¾ú½À´Ï´Ù. ÀÌ°ÍÀº ²À ÇÊ¿äÇѵ¥ ÀüÅëÀû ¹æ¹ýÀÌ ¸ðµç ¸í·É¾î¿¡ ±âº»°ªÀ¸·Î »ç¿ëµÇ±â ¶§¹®ÀÔ´Ï´Ù (¹®¼­¿¡ Àû½ÃµÈ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù). ±×·¸Áö¸¸, ¾î¶² ¸í·É¾îÀÇ ¸Å°³º¯¼öµéÀº Ç¥Çö½ÄÀ» ¹Þ¾Æ µéÀÎ´Ù°í ¹®¼­¿¡ Àû½ÃµÇ¾î ÀÖ½À´Ï´Ù. ±×·± °æ¿ì ¾ÕÀÇ ÆÛ¼¾Æ® »çÀÎÀº Çã¿ëµÇÁö¸¸ Çʼö´Â ¾Æ´Õ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ÀÇ ¸ðµç ¿¹´Â È¿°ú°¡ ¶È °°½À´Ï´Ù. ¿Ö³ÄÇϸé SleepÀÇ Ã¹ ¹ø° ¸Å°³º¯¼ö°¡ Ç¥Çö½ÄÀ» Çã¿ëÇϱ⠶§¹®ÀÔ´Ï´Ù:

+
Sleep MillisecondsToWait
+Sleep %MillisecondsToWait%
+Sleep % MillisecondsToWait
+

+º¯¼ö ºñ±³Çϱâ: ´Ù¾çÇÑ Á¾·ùÀÇ ºñ±³¿¡ °üÇÑ Áß¿äÇÑ °íÁö »çÇ×, ƯÈ÷ ¾ðÁ¦ °ýÈ£¸¦ »ç¿ëÇØ¾ß Çϴ°¡¿¡ °üÇÑ Á¤º¸´Â ¾Æ·¡ÀÇ Ç¥Çö½Ä ¼½¼ÇÀ» ÀÐ¾î º¸½Ê½Ã¿À.

+ +

Ç¥Çö½Ä

+

+Ç¥Çö½ÄÀº ÀÏ·ÃÀÇ º¯¼ö, ±âÈ£ ¹®ÀÚ¿­, ±×¸®°í/¶Ç´Â ±âÈ£ ¼ýÀÚ¿¡ Çϳª ÀÌ»óÀÇ ¿¬»êÀ» ¼öÇàÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.

+

+º¯¼ö À̸§Àº Ç¥Çö½Ä¿¡¼­ ÆÛ¼¾Æ® »çÀÎÀ¸·Î µÑ·¯½ÎÁö ¾Ê½À´Ï´Ù (ÀÇ»ç-¹è¿­°ú ±âŸ ÀÌÁß ÂüÁ¶´Â Á¦¿ÜÇÕ´Ï´Ù). °á°úÀûÀ¸·Î, ±âÈ£ ¹®ÀÚ¿­Àº °ãµû¿ÈÇ¥·Î µÑ·¯½Î¼­ º¯¼ö¿Í ±¸º°ÇØ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
if (CurrentSetting > 100 or FoundColor <> "Blue")
+    MsgBox ¼³Á¤ÀÌ ³Ê¹« ³ô°Å³ª À߸øµÈ »öÀÌ Á¸ÀçÇÕ´Ï´Ù.
+

+À§ÀÇ ¿¹Á¦¿¡¼­, "Blue"´Â °ãµû¿ÈÇ¥ ¾È¿¡ Àִµ¥ ¿Ö³ÄÇÏ¸é ±âÈ£ ¹®ÀÚ¿­À̱⠶§¹®ÀÔ´Ï´Ù. ½ÇÁ¦·Î Àοë-¹®ÀÚ¸¦ ±âÈ£ ¹®ÀÚ¿­ ¾È¿¡ Æ÷ÇÔÇÏ·Á¸é, µÎ °³ÀÇ °ãµû¿ÈÇ¥¸¦ ¿¬¼ÓÀ¸·Î ÁöÁ¤ÇÕ´Ï´Ù. ´ÙÀ½ ¿¹¿Í °°ÀÌ µÎ ¹ø ³ªÅ¸³ª¾ß ÇÕ´Ï´Ù: "She said, ""An apple a day.""".

+

+Áß¿ä: Ç¥Çö½ÄÀÌ µé¾î ÀÖ´Â if-¼­¼ú¹®Àº ¿¹¸¦ µé¾î If FoundColor <> Blue¿Í °°Àº ÀüÅëÀûÀÎ if-¼­¼ú¹®°ú ´Ù¸¨´Ï´Ù. ´Ü¾î "if" µÚÀÇ ¹®ÀÚ¸¦ ¿©´Â-°ýÈ£·Î ¸¸µì´Ï´Ù. +ÀÌ°ÍÀº º¸Åë Àüü Ç¥Çö½ÄÀ» °ýÈ£·Î µÑ·¯½Î¸é ÇØ°áµÇÁö¸¸, if (x > 0) and (y > 0)¿Í °°ÀÌ Çصµ µË´Ï´Ù. + +°Ô´Ù°¡, ¿©´Â-°ýÈ£´Â ´Ü¾î "if" ´ÙÀ½ÀÇ Ã¹ Ç׸ñÀÌ ÇÔ¼ö È£Ã⠶Ǵ "not" ¶Ç´Â "!"¿Í °°Àº ¿¬»êÀÚÀÏ °æ¿ì ¿ÏÀüÈ÷ »ý·«Çصµ µË´Ï´Ù.

+

ºó ¹®ÀÚ¿­: ºó ¹®ÀÚ¿­À» Ç¥Çö½Ä¿¡ ÁöÁ¤ÇÏ·Á¸é, ºó °ãµû¿ÈÇ¥ ÇÑ ½ÖÀ» »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, if (MyVar <> "") ¼­¼ú¹®Àº MyVar°¡ ºñ¾î ÀÖÁö ¾ÊÀ¸¸é ÂüÀÔ´Ï´Ù. ±×·¸Áö¸¸, ÀüÅëÀûÀÎ-if¿¡¼­, ÇÑ ½ÖÀÇ ºó °ãµû¿ÈÇ¥´Â ±âÈ£ ±×´ë·Î °£ÁÖÇÕ´Ï´Ù. ¿¹¸¦ µé¾î if MyVar = ""´Â MyVar¿¡ ½ÇÁ¦·Î °ãµû¿ÈÇ¥ ½ÖÀÌ ´ã°Ü ÀÖÀ» °æ¿ì¿¡¸¸ ÂüÀÔ´Ï´Ù. ±×·¡¼­, º¯¼ö°¡ ºñ¾îÀÖ´ÂÁö ÀüÅëÀûÀÎ-if·Î Á¡°ËÇÏ·Á¸é, ´ÙÀ½ ¿¹¿Í °°ÀÌ ¿À¸¥ÂÊ¿¡ ¾Æ¹«°Íµµ ¾øÀÌ = ¶Ç´Â <>¸¦ »ç¿ëÇϽʽÿÀ: if Var =.

+

+°ü·ÃÇؼ­ ¸»¾¸ µå¸®ÀÚ¸é, (x +* 3)¿Í °°ÀÌ ¹«È¿ÇÑ ½ÄÀº ºó ¹®ÀÚ¿­À» »êÃâÇÕ´Ï´Ù.

+

Ç¥Çö½ÄÀÇ °á°ú¸¦ ÀúÀåÇϱâ: °á°ú¸¦ º¯¼ö¿¡ ÀúÀåÇÏ·Á¸é, := ¿¬»êÀÚ¸¦ »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
NetPrice := Price * (1 - Discount/100)
+

ºÒ¸®¾ð °ª: +Ç¥Çö½ÄÀ» ÂüÀ̳ª °ÅÁþÀ¸·Î Æò°¡ÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§ (IF-¼­¼ú¹®Ã³·³), ºó ¶Ç´Â 0ÀÎ °á°ú´Â °ÅÁþÀ¸·Î °£ÁÖµÇ°í ´Ù¸¥ ¸ðµç °á°ú´Â ÂüÀ¸·Î °£Áֵ˴ϴÙ. ¿¹¸¦ µé¾î, ¼­¼ú¹® if ItemCount´Â ItemCount°¡ ºñ¾î Àְųª 0ÀÏ °æ¿ì¿¡¸¸ °ÅÁþÀÔ´Ï´Ù. ºñ½ÁÇÏ°Ô, Ç¥Çö½Ä if not ItemCount´Â ±× ¹Ý´ë °á°ú¸¦ »êÃâÇÕ´Ï´Ù.

+

+NOT/AND/OR/>/=/<¿Í °°Àº ¿¬»êÀÚ´Â ÀÚµ¿À¸·Î Âü ¶Ç´Â °ÅÁþ °ªÀ» »ý»êÇÕ´Ï´Ù: Âü¿¡´Â 1 ±×¸®°í °ÅÁþ¿¡´Â 0À» »êÃâÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ Ç¥Çö½Ä¿¡¼­, º¯¼ö DoneÀº µÎ Á¶°ÇÁß Çϳª¶óµµ ÂüÀÏ °æ¿ì 1ÀÌ ÇÒ´çµË´Ï´Ù.:

+
Done := A_Index > 5 or FoundIt
+

+À§¿¡¼­ ¾Ï½ÃÇϵíÀÌ, º¯¼ö´Â ±×³É ºñ¿ì°Å³ª 0À» ÇÒ´çÇÏ¸é °ÅÁþ°ªÀ» ´ã´Âµ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. À̸¦ ÀÌ¿ëÇÏ¿©, ´ÜÃà ¼­¼ú¹® if DoneÀ» »ç¿ëÇÏ¸é º¯¼ö DoneÀÌ ÂüÀÎÁö °ÅÁþÀÎÁö Á¡°ËÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

´Ü¾î true¿Í false´Â ³»Àå º¯¼ö·Î¼­ °¢°¢ 1°ú 0À» ´ã°í ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ½ºÅ©¸³Æ®¸¦ Á» ´õ Àб⠽±°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù:

+
CaseSensitive := false
+ContinueSearch := true
+

Á¤¼ö¿Í ºÎµ¿ ¼Ò¼öÁ¡ ¼ö: Ç¥Çö½Ä ¾È¿¡¼­, ¼ýÀÚ´Â ¾È¿¡ ¼Ò¼öÁ¡ÀÌ ÀÖÀ¸¸é ºÎµ¿ ¼Ò¼öÁ¡ ¼ö·Î °£Áֵ˴ϴÙ; ±×·¸Áö ¾ÊÀ¸¸é Á¤¼ö·Î Ãë±ÞÇÕ´Ï´Ù. ´ëºÎºÐÀÇ ¿¬»êÀÚ¿¡ ´ëÇÏ¿© -- ¿¹¸¦ µé¾î µ¡¼À°ú °ö¼À -- µÎ ÀÔ·ÂÁß Çϳª¶óµµ ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀ̸é, ±× °á°úµµ ¿ª½Ã ºÎµ¿ ¼Ò¼öÁ¡ ¼ö°¡ µË´Ï´Ù.

+

+Ç¥Çö½Ä°ú ºñ-Ç¥Çö½Ä ¾È¿¡¼­ ºñ½ÁÇÏ°Ô Á¤¼ö´Â 16Áø¼ö³ª ½ÊÁø¼ö Çü½ÄÀ¸·Î ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. 16Áø¼ö´Â ¸ðµÎ Á¢µÎ»ç 0x·Î ½ÃÀÛÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, Sleep 0xFF´Â Sleep 255¿Í µ¿µîÇÕ´Ï´Ù. v1.0.46.11+¿¡¼­, °úÇÐÀû Ç¥±â¹ýÀ¸·Î ÀÛ¼ºµÈ ºÎµ¿ ¼Ò¼öÁ¡ ¼ö¸¦ ÀÎÁöÇÕ´Ï´Ù; ±×·¯³ª ¾È¿¡ ¼Ò¼öÁ¡ÀÌ Æ÷ÇԵǾî ÀÖÀ» °æ¿ì¿¡¸¸ ÀÎÁöÇÕ´Ï´Ù (¿¹, 1.0e4 ±×¸®°í -2.1E-4).

+

°­Á¦·Î Ç¥Çö½ÄÀ¸·Î ¸¸µé±â: Ç¥Çö½ÄÀº ¸Å°³º¯¼ö¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Á÷Á¢ÀûÀ¸·Î Áö¿øÇÏÁö ¾Ê´õ¶óµµ (OutputVar ¸Å°³º¯¼ö Á¦¿Ü) Ç¥Çö½Ä ¾Õ¿¡ ÆÛ¼¾Æ® »çÀΰú ½ºÆäÀ̽º ¶Ç´Â ÆÛ¼¾Æ® »çÀΰú ÅÇÀ» µÎ¸é µË´Ï´Ù. [v1.1.21+]¿¡¼­, ÀüÅëÀûÀÎ IF ¸í·É¾î¸¦ Á¦¿ÜÇÏ°í ¸ðµç ¸í·É¾îÀÇ InputVar ¸Å°³º¯¼ö¿¡ ÀÌ Á¢µÎ»ç¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù (´ë½Å¿¡ If (Ç¥Çö½Ä)À» »ç¿ëÇϽʽÿÀ). + +ÀÌ Å×Å©´ÐÀº Á¾Á¾ ¹è¿­¿¡ Á¢±ÙÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î:

+
FileAppend, % MyArray[i], My File.txt
+FileAppend, % MyPseudoArray%i%, My File.txt
+MsgBox % "The variable MyVar contains " . MyVar . "."
+Loop % Iterations + 1
+WinSet, Transparent, % X + 100
+Control, Choose, % CurrentSelection - 1
+

Ç¥Çö½Ä ¾ÈÀÇ ¿¬»êÀÚ

+

+°ö¼À(*)°ú ³ª´°¼À(/)°ú °°ÀÌ ¿ì¼±¼øÀ§°¡ °°Àº ¿¬»êÀÚ´Â ¿ÞÂÊ¿¡¼­ ¿À¸¥ÂÊ ¼ø¼­·Î Æò°¡µË´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, µ¡¼À (+)°ú °°ÀÌ ¿ì¼± ¼øÀ§°¡ ³·Àº ¿¬»êÀÚ´Â °ö¼À(*)°ú °°ÀÌ ´õ ³ôÀº ¿¬»êÀÚ ´ÙÀ½¿¡ Æò°¡µË´Ï´Ù. ¿¹¸¦ µé¾î, 3 + 2 * 2´Â 3 + (2 * 2)À¸·Î Æò°¡µË´Ï´Ù. °ýÈ£¸¦ »ç¿ëÇÏ¸é ´ÙÀ½ ¿¹¿Í °°ÀÌ ¿ì¼± ¼øÀ§¸¦ ¿À¹ö¶óÀ̵åÇÒ ¼ö ÀÖ½À´Ï´Ù: (3 + 2) * 2

+

+¾Æ·¡¿¡ Àû½ÃÇÑ ¶§¸¦ Á¦¿ÜÇÏ°í, ¼öÇÐ ¿¬»ê°ú °ü·ÃµÈ ºó °ª (ºó ¹®ÀÚ¿­)Àº ¸ðµÎ 0À¸·Î °£ÁÖµÇÁö ¾Ê½À´Ï´Ù. ´ë½Å¿¡, ¿¡·¯·Î Ãë±ÞÇÕ´Ï´Ù. ±× ¶§¹®¿¡ Ç¥Çö½ÄÀÇ ÀϺΰ¡ ºó ¹®ÀÚ¿­·Î Æò°¡µË´Ï´Ù. ¿¹¸¦ µé¾î, º¯¼ö X°¡ ºñ¾î ÀÖÀ¸¸é, Ç¥Çö½Ä X+1Àº 1ÀÌ ¾Æ´Ï¶ó ºó °ªÀ» »êÃâÇÕ´Ï´Ù.

+ +

Ç¥Çö½Ä ¿¬»êÀÚ (¿ì¼±¼øÀ§°¡ ³ôÀº ¼ø¼­ºÎÅÍ ³ª¿­ÇÕ´Ï´Ù)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
%Var%

º¯¼ö°¡ Ç¥Çö½Ä ¾È¿¡¼­ ÆÛ¼¾Æ® »çÀο¡ µÑ·¯ ½Î¿© ÀÖÀ¸¸é (¿¹, %Var%), ±× º¯¼ö¿¡ µé¾î ÀÖ´Â °ÍÀº ¾î¶² °ÍÀÌµç ¶Ç´Ù¸¥ º¯¼öÀÇ À̸§À̳ª ºÎºÐ À̸§À¸·Î °£ÁÖÇÕ´Ï´Ù (±×·± º¯¼ö°¡ ¾ø´Ù¸é, %Var%´Â ºó ¹®ÀÚ¿­·Î °áÁ¤µË´Ï´Ù). ÀÌ·± ÀÏÀº ´ÙÀ½ ¿¹¿Í °°ÀÌ ÀÇ»ç-¹è¿­À» ÂüÁ¶ÇÏ´Â µ¥ ÀÚÁÖ »ç¿ëµË´Ï´Ù:

+
Var := MyArray%A_Index% + 100
+

+ ÇÏÀ§ ȣȯÀ» À§ÇØ, "Ç¥Çö½ÄÀÏ ¼ö ÀÖÀ½"À¸·Î ¹®¼­È­µÇ¾î ÀÖ´Â ¸í·É¾î ¸Å°³º¯¼ö´Â ÆÛ¼¾Æ® ±âÈ£ ¾È¿¡ À̸§¸¸ ÀÖ´Â º¯¼ö¿¡¼­ ¸¶Ä¡ ÆÛ¼¾Æ® »çÀÎÀÌ ¾ø´Â °Íó·³ Ãë±ÞÇÕ´Ï´Ù (¿¹, %Var%, ±×·¯³ª Array%i%´Â ¾Æ´Ô). °ýÈ£ ¾È¿¡ ±× ÂüÁ¶¸¦ µÑ·¯½Î¸é ÀÌ·± ÀÏÀ» ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù; ¿¹, Sleep (%Var%).

+

[AHK_L 52+]: º¸Åë º¯¼ö ¿Ü¿¡µµ, %Var%´Â ȯ°æ º¯¼ö, Ŭ¸³º¸µå, ¶Ç´Â ¿¹¾à/Àбâ-Àü¿ë º¯¼ö·Î °áÁ¤µÉ ¼ö ÀÖ½À´Ï´Ù. revision 52ÀÌÀü¿¡¼­, ÀÌ·± °æ¿ì %Var%´Â ºó ¹®ÀÚ¿­À» »êÃâÇß¾ú½À´Ï´Ù.

x.y[AHK_L 31+]: °´Ã¼ Á¢±Ù. x °´Ã¼¿¡ ¸Þ½îµå¸¦ È£ÃâÇϰųª °ªÀ» ¼³Á¤ÇÏ°í ¾ò½À´Ï´Ù. ¿©±â¿¡¼­ y´Â ±âÈ£ ±×´ë·ÎÀÇ °ªÀÔ´Ï´Ù. °´Ã¼ ±¸¹®À» ÂüÁ¶ÇϽʽÿÀ.
new[v1.1.00+]: ¶Ç´Ù¸¥ °´Ã¼·ÎºÎÅÍ »ó¼Ó¹Þ¾Æ »õ °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, x := new y´Â Á¾Á¾ x := {base: y}¿Í µ¿µîÇÕ´Ï´Ù. new´Â ´ÙÀ½¿¡ GlobalClass.NestedClassÀÇ ÇüÅ·Πº¯¼ö³ª °£´ÜÇÑ Å¬·¡½º À̸§ÀÌ µû¶ó¿Í¾ß ÇÕ´Ï´Ù. ±×¸®°í ¼±ÅÃÀûÀ¸·Î x := new y(z)¿¡¼­¿Í °°ÀÌ ¸Å°³º¯¼ö°¡ µû¶ó ¿É´Ï´Ù (¿©±â¿¡¼­ y´Â »ç¿ë°¡´ÉÇÏÁö¸¸, ÇÔ¼ö À̸§Àº ¾Æ´Õ´Ï´Ù). + ÀÚ¼¼ÇÑ °ÍÀº ¸ÂÃã °´Ã¼¸¦ ÂüÁ¶ÇϽʽÿÀ.
++
+ --
ÀüÀ§/ÈÄÀ§ Áõ°¨. º¯¼ö¿¡¼­ 1À» ´õÇϰųª »®´Ï´Ù (±×·¯³ª 1.0.46 ÀÌÀü ¹öÀüÀ̸é, ÀÌ°ÍÀº ¿ÀÁ÷ ±× ÀÚü·Î ÇÑ ÁÙ¿¡ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù; ´Ù¸¥ ¿¬»êÀÚ°¡ ¾ø¾î¾ß ÇÕ´Ï´Ù). ¿¬»êÀÚ´Â º¯¼ö À̸§ÀÇ ¾ÕÀ̳ª µÚ¿¡ ³ªÅ¸³³´Ï´Ù. À̸§ ¾Õ¿¡ ³ªÅ¸³ª¸é, ¿¬»êÀÌ Áï½Ã ¼öÇàµÇ°í ±× °á°ú°¡ ´ÙÀ½ ¿¬»ê¿¡ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î, Var := ++X´Â X¸¦ Áï½Ã Áõ°¡½ÃŲ ´ÙÀ½ ±×ÀÇ °ªÀ» Var¿¡ ÇÒ´çÇÕ´Ï´Ù. ¹Ý´ë·Î, Áõ°¨ ¿¬»êÀÚ°¡ º¯¼ö À̸§ µÚ¿¡ ÀÖÀ¸¸é ±× º¯¼ö°¡ ´ÙÀ½ ¿¬»ê¿¡ »ç¿ëµÇ°í ³­ ÈÄ¿¡ ¿¬»êÀÌ ¼öÇàµË´Ï´Ù. ¿¹¸¦ µé¾î, Var := X++´Â ÇöÀç X°ªÀ» Var¿¡ ÇÒ´çÇÏ°í ³­ ÈÄ¿¡ X¸¦ Áõ°¡½Ãŵ´Ï´Ù. ÇÏÀ§ ȣȯÀÇ ¹®Á¦ ¶§¹®¿¡, ++ °ú -- Áõ°¨ ¿¬»êÀÚ´Â ºó º¯¼ö¸¦ 0À¸·Î Ãë±ÞÇÕ´Ï´Ù. ±×·¯³ª ÇÑ ÁÙ¿¡ Ȧ·Î ÀÖÀ» ¶§¸¸ ±×·¸½À´Ï´Ù; ¿¹¸¦ µé¾î, y:=1, ++x ±×¸®°í MsgBox % ++x´Â µÑ ´Ù x °¡ ºñ¾î ÀÖÀ» ¶§ ºó °á°ú¸¦ »êÃâÇÕ´Ï´Ù.
**Power. ¹Ø¼ö¿Í Áö¼ö ¸ðµÎ ½ÊÁø ¼Ò¼öÁ¡À» ´ãÀ» ¼ö ÀÖ½À´Ï´Ù. Áö¼ö°¡ À½¼öÀ̸é, ±× °á°ú´Â ºÎµ¿ ¼Ò¼öÁ¡ ¼ö·Î Æ÷¸ËµË´Ï´Ù. ¹Ø¼ö¿Í Áö¼ö µÑ ¸ðµÎ Á¤¼öÀÏÁö¶óµµ ±×·¸½À´Ï´Ù. **´Â ¿ì¼± ¼øÀ§°¡ ´ÜÇ× ¸¶À̳ʽº º¸´Ù ³ô±â ¶§¹®¿¡, -2**2´Â -(2**2)·Î Æò°¡µÇ°í ±×·¡¼­ -4¸¦ »êÃâÇÕ´Ï´Ù. ±×·¯¹Ç·Î, ±âÈ£ À½¼ö¸¦ Á¦°öÇÏ·Á¸é, (-2)**2¿Í °°ÀÌ °ýÈ£·Î µÑ·¯½Î½Ê½Ã¿À. ÁÖÀÇ: (-2)**0.5¿Í °°ÀÌ À½ÀÇ ¹Ø¼ö°¡ ºÐ¼ö Áö¼ö¿Í °áÇÕÇÏ´Â °ÍÀº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù; ºó ¹®ÀÚ¿­ÀÌ »êÃâµÉ °ÍÀÔ´Ï´Ù. ±×·¯³ª (-2)**2¿Í (-2)**2.0´Â µÑ ¸ðµÎ Áö¿øÇÕ´Ï´Ù.
-
+ !
+ ~
+ & *

Unary minus (-): »¬¼À ¿¬»êÀÚ¿Í °°Àº ½Éº¼À» »ç¿ëÇÏÁö¸¸, ´ÜÇ× ¸¶À̳ʽº´Â ¿ÀÁ÷ ÇϳªÀÇ Ç׸ñ¿¡¸¸ Àû¿ëµË´Ï´Ù. ¶Ç´Â ´ÙÀ½ µÎ ¿¹Á¦¿¡¼­ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ ºÎºÐ-Ç¥Çö½Ä¿¡¸¸ Àû¿ëµË´Ï´Ù: -(3 / -x). °ü·ÃÇÏ¿© µ¡ºÙÀδٸé, Ç¥Çö½Ä ¾È¿¡¼­ ´ÜÇ× Ç÷¯½º »çÀÎ(+)Àº ¹«½ÃµË´Ï´Ù.

+

Logical-not (!): ÇÇ¿¬»êÀÚ°¡ ºñ¾î Àְųª 0À̸é, ³í¸®Àû-notÀ» Àû¿ëÇÑ °á°ú´Â 1ÀÔ´Ï´Ù. Âü("true")À̶ó´Â ¶æÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ±× °á°ú´Â 0ÀÔ´Ï´Ù (false). ¿¹¸¦ µé¾î: !x or !(y and z). ÁÖÀÇ: ´Ü¾î NOTÀº !¿Í µ¿ÀǾîÀÔ´Ï´Ù. ´Ü !°¡ ´õ ¿ì¼± ¼øÀ§°¡ ³ô½À´Ï´Ù. v1.0.46+¿¡¼­, !!Var¿Í °°ÀÌ ¿¬¼ÓÀûÀÎ ´ÜÇ× ¿¬»êÀÚ°¡ Çã¿ëµË´Ï´Ù. ¿Ö³ÄÇÏ¸é ¿À¸¥ÂÊ¿¡¼­ ¿ÞÂÊ ¼ø¼­·Î Æò°¡µÇ±â ¶§¹®ÀÔ´Ï´Ù.

+

Bitwise-not (~): ÇÇ¿¬»êÀÚÀÇ °¢ ºñÆ®¸¦ µÚÁý½À´Ï´Ù. ÇÇ¿¬»êÀÚ°¡ ºÎµ¿¼Ò¼öÁ¡ °ªÀ̸é, ¸ÕÀú Á¤¼ö·Î ÀÚ¸£°í ³ª¼­ °è»êÇÕ´Ï´Ù. ÇÇ¿¬»êÀÚ°¡ 0ºÎÅÍ 4294967295 (0xffffffff) »çÀÌÀ̸é, ºÎÈ£ ¾ø´Â 32-ºñÆ® °ªÀ¸·Î Ãë±ÞµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ºÎÈ£ ÀÖ´Â 64-ºñÆ® °ªÀ¸·Î Ãë±ÞµË´Ï´Ù. ¿¹¸¦ µé¾î, ~0xf0f´Â 0xfffff0f0 (4294963440)À¸·Î Æò°¡µË´Ï´Ù.

+

Address (&): &MyVar´Â ¸Þ¸ð¸®¿¡¼­ MyVarÀÇ ³»¿ëÀÌ ÀÖ´Â ÁÖ¼Ò¸¦ ¿­¶÷ÇÕ´Ï´Ù. ÀÌ ÁÖ¼Ò´Â ÀüÇüÀûÀ¸·Î DllCall ±¸Á¶¿¡ »ç¿ëµË´Ï´Ù. &MyVar´Â ¶Ç ±× º¯¼ö¿¡ ´ëÇÑ ÀÌÁø ¼ýÀÚ¸¦ ij½ÌÇÏ´Â °ÍÀ» ºÒ´ÉÀ¸·Î ¸¸µì´Ï´Ù. ¼öÇÐ °è»êÀ̳ª ¼ýÄ¡ ºñ±³¿¡ »ç¿ëµÇ±â¶óµµ ÇÏ¸é ¼öÇ༺´ÉÀÌ ¶³¾îÁú ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ij½ÌÀº ±×ÀÇ ÁÖ¼Ò°¡ ¹Ù²ð ¶§¸¶´Ù (¿¹, VarSetCapacity()¸¦ ÅëÇÏ¿©) ÀçÈ°¼ºÈ­µË´Ï´Ù.

+

Dereference (*): *Expression´Â ExpressionÀÌ ¼ýÄ¡Çü ¸Þ¸ð¸® ÁÖ¼Ò·Î °áÁ¤µÉ °ÍÀ̶ó°í °£ÁÖÇÕ´Ï´Ù; ±× ÁÖ¼ÒÀÇ ¹ÙÀÌÆ®¸¦ 0ºÎÅÍ 255 »çÀÌÀÇ ¼ýÀÚ·Î ¿­¶÷ÇÕ´Ï´Ù (ÁÖ¼Ò°¡ 0ÀÌ¸é ¾ðÁ¦³ª 0ÀÌ ¿­¶÷µË´Ï´Ù; ±×·¯³ª ´Ù¸¥ ¹«È¿ÇÑ ÁÖ¼Ò´Â ¸ðµÎ ½ºÅ©¸³Æ®°¡ Ãæµ¹ÇÒ ¼ö Àֱ⠶§¹®¿¡ ÇÇÇØ¾ß ÇÕ´Ï´Ù). ±×·¸Áö¸¸, NumGet()Àº ÀϹÝÀûÀ¸·Î ÀÌÁø ¼ýÀÚ¸¦ ¿­¶÷ÇÒ ¶§ ÈξÀ ´õ ¼öÇ༺´ÉÀÌ ÁÁ½À´Ï´Ù.

*
+ /
+ // +

°ö¼À (*): ÀÔ·ÂÀÌ ¸ðµÎ Á¤¼öÀÌ¸é ±× °á°úµµ Á¤¼öÀÔ´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é, ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀÔ´Ï´Ù.

+

½Ç¼ö ³ª´°¼À (/): EnvDiv¿Í ´Ù¸£°Ô, ½Ç¼ö ³ª´°¼À(true division)Àº µÎ ÀÔ·ÂÀÌ ¸ðµÎ Á¤¼ö¶óµµ ºÎµ¿ ¼Ò¼öÁ¡ ¼ö¸¦ °á°ú·Î »êÃâÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, 3/2´Â 1ÀÌ ¾Æ´Ï¶ó 1.5¸¦ »êÃâÇÏ°í, 4/2´Â 2°¡ ¾Æ´Ï¶ó 2.0À» »êÃâÇÕ´Ï´Ù.

+

¹Ù´Ú ³ª´°¼À (//): ÀÌÁß-Á¤»ç¼± ¿¬»êÀÚ´Â µÎ ÀÔ·ÂÀÌ ¸ðµÎ Á¤¼öÀÌ¸é ¼º´ÉÀÌ ³ôÀº Á¤¼ö ³ª´°¼ÀÀ» ¼öÇàÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, 5//3´Â 1ÀÌ°í 5//-3Àº -1ÀÔ´Ï´Ù. ÀÔ·Â Áß Çϳª°¡ ºÎµ¿ ¼Ò¼öÁ¡ Çü½ÄÀ̸é, ºÎµ¿ ¼Ò¼öÁ¡ ³ª´°¼ÀÀÌ ¼öÇàµÇ°í ±× °á°ú´Â ¿ÞÂÊÀ¸·Î °¡Àå °¡±î¿î Á¤¼ö·Î À߶ó³À´Ï´Ù. ¿¹¸¦ µé¸é, 5//3.0Àº 1.0ÀÌ°í 5.0//-3Àº -2.0ÀÔ´Ï´Ù. ÀÌ ºÎµ¿ ¼Ò¼öÁ¡ ³ª´©¼ÀÀÌ °á°ú°¡ Á¤¼öÀÓ¿¡µµ ºÒ±¸ÇÏ°í, ºÎµ¿ ¼Ò¼öÁ¡ Çü½ÄÀ¸·Î ÀúÀåµË´Ï´Ù. ±×·¡¼­ ±× °ªÀ» »ç¿ëÇÏ´Â °ÍµéÀº ¸ðµÎ ºÎµ¿ ¼Ò¼öÁ¡ ¼ö¶ó°í ÀνÄÇÕ´Ï´Ù. ³ª¸ÓÁö ¿¬»êÀÚ(modulo)¿¡ °üÇÑ °ÍÀº mod()¸¦ ÂüÁ¶ÇÕ´Ï´Ù.

+

+ *= ¿¬»êÀÚ¿Í /= ¿¬»êÀÚ´Â °£·«ÇÏ°Ô ÇÑ º¯¼ö ¾ÈÀÇ °ªÀ» ´Ù¸¥ °ªÀ¸·Î °öÇϰųª ³ª´©´Â ¹æ¹ýÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, Var*=2´Â Var:=Var*2¿Í °°Àº °á°ú¸¦ »êÃâÇÕ´Ï´Ù (±×·¸Áö¸¸ ÀüÀÚ°¡ ¼öÇ༺´ÉÀÌ ´õ ÁÁ½À´Ï´Ù).

+

0À¸·Î ³ª´©¸é ºó °á°ú (ºó ¹®ÀÚ¿­)ÀÌ »êÃâµË´Ï´Ù.

+
+ -

´õÇÏ°í(+) »®´Ï´Ù (-). °ü·ÃÇؼ­ ¸»¾¸ µå¸®ÀÚ¸é, += ±×¸®°í -= ¿¬»êÀÚ´Â °£·«ÇÏ°Ô º¯¼ö¸¦ Áõ°¡½ÃÅ°°Å³ª °¨¼Ò½ÃÅ°´Â ¹æ¹ýÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, Var+=2´Â Var:=Var+2¿Í °°Àº °á°ú¸¦ »ý»êÇÕ´Ï´Ù (±×·¸Áö¸¸ ÀüÀÚ°¡ ´õ ¼öÇ༺´ÉÀÌ ÁÁ½À´Ï´Ù). ºñ½ÁÇÏ°Ô, Var++, Var--, ++Var, ¶Ç´Â --VarÀ» »ç¿ëÇÏ¸é º¯¼ö¸¦ 1¾¿ Áõ°¡½ÃÅ°°Å³ª °¨¼Ò½Ãų ¼ö ÀÖ½À´Ï´Ù.

+
<<
+ >>
¿ÞÂÊÀ¸·Î ºñÆ® À̵¿ (<<) ±×¸®°í ¿À¸¥ÂÊÀ¸·Î ºñÆ® À̵¿ (>>). »ç¿ë ¹æ¹ý: Value1 << Value2. ºÎµ¿ ¼Ò¼öÁ¡ ¼ö ÀÔ·ÂÀº ¸ÕÀú Á¤¼ö·Î Àß¶ó³»°í ³ª¼­ °è»êµË´Ï´Ù. + + ¿ÞÂÊÀ¸·Î À̵¿ (<<)Àº Value1À» "Value2ÀÇ Á¦°ö". ¸¸Å­ °öÇÏ´Â °Í°ú µ¿µîÇÕ´Ï´Ù. + + ¿À¸¥ÂÊÀ¸·Î À̵¿Àº (>>) Value1À» "Value2ÀÇ Á¦°ö" ¸¸Å­ ³ª´©°í ±× °á°ú¸¦ ¿ÞÂÊÀ¸·Î °¡Àå °¡±î¿î Á¤¼ö·Î °áÁ¤ÇÏ´Â °Í°ú µ¿µîÇÕ´Ï´Ù; + ¿¹¸¦ µé¾î, -3>>1Àº -2ÀÔ´Ï´Ù.
&
+ ^
+ | +
ºñÆ®º°-and (&), ºñÆ®º°-¹èŸÀû-or (^), ±×¸®°í ºñÆ®º°-or (|). °èÅëµµ¿¡¼­, &°¡ ¿ì¼± ¼øÀ§°¡ Á¦ÀÏ ³ô°í |°¡ Á¦ÀÏ ³·½À´Ï´Ù. ºÎµ¿ ¼Ò¼öÁ¡ ¼ö´Â ¸ÕÀú Á¤¼ö·Î ÀÚ¸¥ ´ÙÀ½¿¡ °è»êÇÕ´Ï´Ù.
.

°áÇÕ. Á¡(dot) ¿¬»êÀÚ´Â µÎ °³ÀÇ Ç׸ñÀ» ÇϳªÀÇ ¹®ÀÚ¿­·Î °áÇÕÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù (Á¡ÀÇ ¾çÂÊ¿¡ Àû¾îµµ ÇϳªÀÇ °ø°£ÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù). + + Á¡À» »ý·«Çصµ °°Àº °á°ú¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù (´Ü x -y¿Í °°ÀÌ ¾Ö¸ÅÇϰųª, ¿À¸¥ÂÊ¿¡ ÀÖ´Â Ç׸ñ ¾Õ¿¡ ++ ¶Ç´Â --ÀÌ ÀÖ´Â °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù.). + + Á¡ÀÌ »ý·«µÇ¸é, º´ÇÕµÉ Ç׸ñ »çÀÌ¿¡ Àû¾îµµ °ø°£ Çϳª°¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù.
+ ¿¹Á¦ (Ç¥Çö½Ä ¹æ¹ý): Var := "The color is " . FoundColor
+ ¿¹Á¦ (ÀüÅëÀû ¹æ¹ý): Var = The color is %FoundColor%

+

ÇÏÀ§-Ç¥Çö½Äµµ ¿ª½Ã °áÇÕÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: Var := "The net price is " . Price * (1 - Discount/100).

+

Á¡À¸·Î (¶Ç´Â ±âŸ ´Ù¸¥ ¿¬»êÀÚ·Î) ½ÃÀÛÇÏ´Â ÁÙÀº ÀÚµ¿À¸·Î À­ ÁÙ¿¡ Ãß°¡µË´Ï´Ù.

~=[AHK_L 31+]: RegExMatch¿¡ ´ëÇÑ ¾àÀÚÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, "abc123" ~= "\d"´Â ErrorLevelÀ» 0À¸·Î ¼³Á¤ÇÏ°í (ù ¹ø° ¼ýÀÚÀÇ À§Ä¡) 4¸¦ »êÃâÇÕ´Ï´Ù. v1.1.03 ÀÌÀü ¹öÀü¿¡¼­, ÀÌ ¿¬»êÀÚ´Â µîÈ£ (=) ¿¬»êÀÚ¿Í ¿ì¼±¼øÀ§°¡ °°¾Ò°í ¿Ïº®ÇÏ°Ô ¹®¼­È­µÇ¾î ÀÖÁö ¾Ê¾Ò½À´Ï´Ù.
>   <
+ >= <=
ÃÊ°ú (>), ¹Ì¸¸ (<), ÀÌ»ó (>=), ±×¸®°í ÀÌÇÏ (<=). + + ÀÔ·Â Áß Çϳª¶óµµ ¼ýÀÚ°¡ ¾Æ´Ï¸é, µÑÀº ¾ËÆĺª ¼øÀ¸·Î ºñ±³µË´Ï´Ù ("55"¿Í °°ÀÌ °ãµû¿ÈÇ¥°¡ ºÙÀº ¹®ÀÚ¿­Àº ÀÌ ¹®¸Æ¿¡¼­ ¾ðÁ¦°¡ ¼ýÀÚ°¡ ¾Æ´Ñ °ÍÀ¸·Î °£Áֵ˴ϴÙ). ºñ±³´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê½À´Ï´Ù. StringCaseSense°¡ ÄÑÁ® ÀÖÀ¸¸é ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇؼ­ ºñ±³ÇÕ´Ï´Ù. ´ÙÀ½µµ ÂüÁ¶ÇϽʽÿÀ: Sort
=
+ ==
+ <> !=
µîÈ£ (=), ´ë¼Ò¹®ÀÚ-±¸ºÐ-µîÈ£ (==), ±×¸®°í °°Áö-¾ÊÀ½ (<> ¶Ç´Â !=). + + ¿¬»êÀÚ !=¿Í <>´Â ±â´É¸é¿¡¼­ µ¿ÀÏÇÕ´Ï´Ù. == ¿¬»êÀÚ´Â =¿Í µ¿ÀÏÇÏ°Ô ÇàÀ§ÇÕ´Ï´Ù. ÀÔ·Â Áß Çϳª¶óµµ ¼ýÀÚ°¡ ¾Æ´Ñ °æ¿ì´Â Á¦¿ÜÇϴµ¥, ±× °æ¿ì ==´Â ¾ðÁ¦³ª ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏ°í =´Â ¾ðÁ¦³ª ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê½À´Ï´Ù (´ë¼Ò¹®ÀÚÀÇ ±¸ºÐÀº StringCaseSense¿¡ ´Þ·Á ÀÖ½À´Ï´Ù). ´ëÁ¶ÀûÀ¸·Î, <>¿Í !=´Â StringCaseSense¿¡ ¼øÁ¾ÇÕ´Ï´Ù. ÁÖÀÇ: "55"¿Í °°ÀÌ °ãµû¿ÈÇ¥ ºÙÀº ±âÈ£ ¹®ÀÚ¿­Àº ¾ðÁ¦³ª ÀÌ ¹®¸Æ¿¡¼­ ¼ýÀÚ°¡ ¾Æ´Ñ °ÍÀ¸·Î °£Áֵ˴ϴÙ.
NOT³í¸®Àû-NOT. ¿ì¼± ¼øÀ§°¡ ³·Àº Á¡À» »©°í´Â ! ¿¬»êÀÚ¿Í µ¿ÀÏÇÕ´Ï´Ù ¿¹¸¦ µé¾î, not (x = 3 or y = 3)´Â !(x = 3 or y = 3)¿Í °°½À´Ï´Ù.
AND
+ &&
µÑ ¸ðµÎ ³í¸®Àû-ANDÀÔ´Ï´Ù. ¿¹¸¦ µé¾î: x > 3 and x < 10. ¼öÇ༺´ÉÀ» °³¼±Çϱâ À§ÇØ, ´ÜÃà-ȸ·Î Æò°¡°¡ Àû¿ëµË´Ï´Ù. ¶ÇÇÑ, AND/OR/&&/|| (¶Ç´Â ±âŸ ´Ù¸¥ ¿¬»êÀÚ)·Î ½ÃÀÛÇÏ´Â ÁÙÀº ÀÚµ¿À¸·Î À­ ÁÙ¿¡ Ãß°¡µË´Ï´Ù.
OR
+ ||
µÑ ¸ðµÎ ³í¸®Àû-ORÀÔ´Ï´Ù. ¿¹¸¦ µé¾î: x <= 3 or x >= 10. ¼öÇ༺´ÉÀ» °³¼±Çϱâ À§ÇØ, ´ÜÃà-ȸ·Î Æò°¡°¡ Àû¿ëµË´Ï´Ù.
?:»ïÁø ¿¬»êÀÚ [v1.0.46+]. ÀÌ ¿¬»êÀÚ´Â if-else ¼­¼ú¹®À» °£·«ÇÏ°Ô ±³Ã¼ÇÑ °ÍÀÔ´Ï´Ù. ¿ÞÂÊÀÇ Á¶°ÇÀ» Æò°¡ÇØ º¸°í µÎ ºÐ±â Áß¿¡¼­ ¾î´À ÂÊÀ» ÃÖÁ¾ °á°ú·Î ÇÒÁö °áÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, var := x>y ? 2 : 3´Â x°¡ yº¸´Ù Å©¸é 2¸¦ Var¿¡ ÀúÀåÇÏ°í; ±×·¸Áö ¾ÊÀ¸¸é 3À» ÀúÀåÇÕ´Ï´Ù. ¼öÇà ¼º´ÉÀ» °³¼±Çϱâ À§ÇÏ¿©, ¿ÀÁ÷ ÂüÀÎ ºÐ±â¸¸ Æò°¡µË´Ï´Ù (´ÜÃà-ȸ·Î Æò°¡¸¦ ÂüÁ¶ÇϽʽÿÀ).
:=
+ +=
+ -=
+ *=
+ /=
+ //=
+ .=
+ |=
+ &=
+ ^=
+ >>=
+ <<=
+

ÇÒ´ç. º¯¼öÀÇ ³»¿ë¿¡ ¿¬»êÀ» ¼öÇàÇÏ°í ±× °á°ú¸¦ ´Ù½Ã °°Àº º¯¼ö¿¡ ÀúÀåÇÕ´Ï´Ù (±×·¯³ª 1.0.46 ÀÌÀü ¹öÀü¿¡¼­´Â ÇÑ ÁÙ À§¿¡¼­ °¡Àå ¿ÞÂÊ ¿¬»êÀڷθ¸ »ç¿ëÇÒ ¼ö ÀÖ¾ú½À´Ï´Ù. ±×¸®°í ¿¬»êÀÚ¸¦ ¾ÕÂÊ ´Ù¼¸ °³±îÁö¸¸ Áö¿øÇß½À´Ï´Ù.). °¡Àå ´Ü¼øÇÑ ÇÒ´ç ¿¬»êÀÚ´Â ½ÖÁ¡-µîÈ£ (:=)ÀÔ´Ï´Ù. Ç¥Çö½ÄÀÇ °á°ú¸¦ º¯¼ö¿¡ ÀúÀåÇÕ´Ï´Ù. ´Ù¸¥ ¿¬»êÀÚµéÀÌ ¾î¶² ÀÏÀ» ÇÏ´ÂÁö ±× ¼³¸íÀº ÀÌ Ç¥¿¡¼­ °ü·Ã ¿£Æ®¸®¸¦ ÂüÁ¶ÇϽʽÿÀ. ¿¹¸¦ µé¾î, Var //= 2´Â ¹Ù´Ú ³ª´°¼ÀÀ» ¼öÇàÇÏ¿© Var¸¦ 2·Î ³ª´« ´ÙÀ½, ±× °á°ú¸¦ ´Ù½Ã Var¿¡ ÀúÀåÇÕ´Ï´Ù. ºñ½ÁÇÏ°Ô, Var .= "abc"´ÂVar := Var . "abc"¸¦ °£·«ÇÏ°Ô ÀÛ¼ºÇÑ °ÍÀÔ´Ï´Ù.

+

+ ´ëºÎºÐÀÇ ´Ù¸¥ ¿¬»êÀÚ¿Í ´Ù¸£°Ô, ÇÒ´çÀº ¿À¸¥ÂÊ¿¡¼­ ¿ÞÂÊÀ¸·Î Æò°¡µË´Ï´Ù. °á°úÀûÀ¸·Î Var1 := Var2 := 0¿Í °°Àº ÁÙÀº Á¦ÀÏ ¸ÕÀú 0À» Var2¿¡ ÇÒ´çÇÑ ´ÙÀ½ Var2¸¦ Var1¿¡ ÇÒ´çÇÕ´Ï´Ù.

+

+ ÇÒ´çÀ» ´Ù¸¥ ¿¬»êÀÚÀÇ ÀÔ·ÂÀ¸·Î »ç¿ëÇϸé, ±×ÀÇ °ªÀº º¯¼ö ÀÚüÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, Ç¥Çö½Ä (Var+=2) > 50´Â Var¿¡ »õ·Î-Áõ°¡µÈ °ªÀÌ 50À» ÃÊ°úÇÒ °æ¿ì¿¡¸¸ ÂüÀÔ´Ï´Ù. + ÀÌ·¸°Ô Çϸé ÇÒ´çÀ» ByRef·Î °Ç³Ú ¼ö Àִµ¥, Áï, ±×ÀÇ ÁÖ¼Ò·Î °Ç³Ú ¼ö ÀÖ½À´Ï´Ù; + ¿¹¸¦ µé¾î: &(x:="abc").

+

+ ÇÒ´ç ¿¬»êÀÚÀÇ ¿ì¼±¼øÀ§´Â ±¸¹® ¿¡·¯¸¦ ÇÇÇϰųª º¸´Ù Á÷°üÀûÀÎ ÇàÀ§¸¦ Á¦°øÇϸé ÀÚµ¿À¸·Î ³ô¾ÆÁý´Ï´Ù. ¿¹¸¦ µé¾î: not x:=y´Â not (x:=y)·Î Æò°¡µË´Ï´Ù. ºñ½ÁÇÏ°Ô, ++Var := X´Â ++(Var := X)À¸·Î Æò°¡µË´Ï´Ù; ±×¸®°í Z>0 ? X:=2 : Y:=2´Â Z>0 ? (X:=2) : (Y:=2)À¸·Î Æò°¡µË´Ï´Ù.

+

+ ÇÏÀ§ ȣȯÀÇ ¹®Á¦ ¶§¹®¿¡ ¾ß±âµÇ´Â ¾Ë·ÁÁø Á¦ÇÑÀÌ ÀÖ½À´Ï´Ù (¹Ì·¡ÀÇ ¹öÀü¿¡¼­´Â ÇØ°áµÉ ¼ö ÀÖ½À´Ï´Ù): +

    +
  1. /=°¡ Ç¥Çö½Ä¿¡¼­ °¡Àå ¿ÞÂÊÀÇ ¿¬»êÀÚÀÌ°í ´ÙÁß-¼­¼ú¹® Ç¥Çö½ÄÀÇ ÀϺΰ¡ ¾Æ´Ï¸é, ¹Ù´Ú ³ª´°¼À(floor division)À» ¼öÇàÇÕ´Ï´Ù. ÀÔ·Â Áß Çϳª¶óµµ ºÎµ¿ ¼Ò¼öÁ¡ ¼ö°¡ ¾Æ´Ï¾î¾ß ÇÕ´Ï´Ù (´Ù¸¥ °æ¿ì´Â ¸ðµÎ, /=´Â ½Ç¼ö ³ª´°¼À(true division)À» ÇÕ´Ï´Ù.); +
  2. ³¯Â¥/½Ã°£ °è»êÀ» +=°ú -= ÀÌ Áö¿øÇÕ´Ï´Ù. ±×·¯³ª ¿ÀÁ÷ ±× ¿¬»êÀÚ°¡ ÇÑ ÁÙÀÇ °¡Àå ¿ÞÂÊ¿¡ Ȧ·Î ÀÖÀ» ¶§¸¸ Áö¿øÇÕ´Ï´Ù; +
  3. ¿¬»êÀÚ +=, -=, ±×¸®°í *= ´Â ºó º¯¼ö¸¦ 0À¸·Î Ãë±ÞÇÕ´Ï´Ù. ±×·¯³ª ÇÑ ÁÙ¿¡ Ȧ·Î ÀÖÀ» °æ¿ì¿¡¸¸ ±×·¸½À´Ï´Ù; ¿¹¸¦ µé¾î, y:=1, x+=1¿Í MsgBox % x-=3´Â µÑ ´Ù x°¡ ºñ¾î ÀÖÀ» ¶§ ºó °á°ú¸¦ »êÃâÇÕ´Ï´Ù. +
+

,

½°Ç¥ (´ÙÁß-¼­¼ú¹®) [v1.0.46+]. ½°Ç¥¸¦ »ç¿ëÇÏ¸é ¿©·¯ ÇÏÀ§ Ç¥Çö½ÄÀ» ÇÑ ÁÙ¿¡ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÁß ÇÒ´çÀ̳ª ÇÔ¼ö È£ÃâÀ» ±×·ìÁþ´Âµ¥ ÀÚÁÖ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î: x:=1, y+=2, ++index, func(). ±×·± ¼­¼ú¹®µéÀº ¿ÞÂÊ¿¡¼­ ¿À¸¥ÂÊÀ¸·Î ¼ø¼­´ë·Î ½ÇÇàµË´Ï´Ù. ÁÖÀÇ: ½°Ç¥·Î (¶Ç´Â ´Ù¸¥ ¿¬»êÀÚ·Î) ½ÃÀÛÇÏ´Â ÁÙÀº ÀÚµ¿À¸·Î À­ ÁÙ¿¡ Ãß°¡µË´Ï´Ù. ´ÙÀ½µµ ÂüÁ¶ÇϽʽÿÀ: ½°Ç¥ÀÇ ¿¬»ê ¼º´É.

+

v1.0.46.01+¿¡¼­, ½°Ç¥ ´ÙÀ½¿¡ °ð¹Ù·Î º¯¼ö°¡ µû¶ó ¿À°í ´ÙÀ½¿¡ µîÈ£ »çÀÎÀÌ ¿À¸é, ±× µîÈ£ »çÀÎÀº ÀÚµ¿À¸·Î ÇÒ´ç (:=)À¸·Î Ãë±ÞµË´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½Àº ¸ðµÎ ÇÒ´çÀÔ´Ï´Ù: x:=1, y=2, a=b=c. »õ ½ºÅ©¸³Æ®´Â ÀÌ ÇàÀ§¿¡ ÀÇÁ¸ÇÏ¸é ¾ÈµË´Ï´Ù. ³ªÁß¿¡ º¯°æµÉ ¼öµµ Àֱ⠶§¹®ÀÔ´Ï´Ù. ±ÔÄ¢Àº ¿ÀÁ÷ Æò¹üÇÑ º¯¼ö¿¡¸¸ Àû¿ëµÉ »Ó ÀÌÁß-ÂüÁ¶(double-derefs)¿¡´Â Àû¿ëµÇÁö ¾Ê½À´Ï´Ù. ±×·¡¼­ ´ÙÀ½Àº ¿ÀÁ÷ ÇϳªÀÇ ÇҴ縸 ´ã°Ü ÀÖ½À´Ï´Ù: x:=1, %y%=2

mod()
+ round()
+ abs()

ÀÌ°Í°ú ´õºÒ¾î ´Ù¸¥ ³»Àå ¼öÇÐ ÇÔ¼ö´Â ¿©±â¿¡ ±â¼úµÇ¾î ÀÖ½À´Ï´Ù.
func.()

[AHK_L 48+]: °´Ã¼ func¿¡¼­ ºó À̸§ÀÇ ¸Þ½îµå¸¦ È£ÃâÇÏ·Á°í ½ÃµµÇÕ´Ï´Ù. °ü·ÊÀûÀ¸·Î, °´Ã¼ÀÇ "±âº»" ¸Þ½îµå°¡ È£ÃâµË´Ï´Ù. func¿¡ °´Ã¼°¡ ¾ø´Ù¸é, ´ë½Å¿¡ ±âº» º£À̽º °´Ã¼°¡ ¿äûµË´Ï´Ù.

+

[v1.0.95+]: func¿¡ ÇÔ¼ö À̸§ÀÌ ÀÖ´Ù¸é, ±× ÇÔ¼ö°¡ È£ÃâµË´Ï´Ù.

F(p*)[AHK_L 60+]:°¡º¯ ÇÔ¼ö¸¦ ÂüÁ¶ÇϽʽÿÀ.
x[y][AHK_L 31+]: °´Ã¼ Á¢±Ù. °´Ã¼ xÀÇ ¸Þ½îµå¸¦ È£ÃâÇϰųª ¼³Á¤Çϰųª ¾ò½À´Ï´Ù. ¿©±â¿¡¼­ y´Â ¸Å°³º¯¼ö ¸®½ºÆ®À̰ųª °è»êµÈ ¸Þ½îµå À̸§ÀÔ´Ï´Ù. ¹è¿­ ±¸¹®°ú °´Ã¼ ±¸¹®À» ÂüÁ¶ÇÕ´Ï´Ù.
+
+

¼öÇà ¼º´É: v1.0.48+¿¡¼­, ½°Ç¥ ¿¬»êÀÚ´Â º¸Åë º°µµÀÇ Ç¥Çö½ÄÀ» ÀÛ¼ºÇÏ´Â °Íº¸´Ù ´õ ºü¸¨´Ï´Ù. ƯÈ÷ ÇÑ º¯¼ö¸¦ ¶Ç´Ù¸¥ º¯¼ö¿¡ ÇÒ´çÇÒ ¶§ ±×·¸½À´Ï´Ù (¿¹, x:=y, a:=b). Ç¥Çö½ÄÀÌ ¸ðÀÌ°í ¸ð¿© ÇϳªÀÇ Ç¥Çö½ÄÀ¸·Î °áÇÕµÉ ¼ö·Ï ¼öÇ༺´ÉÀÌ Çâ»óµË´Ï´Ù; ¿¹¸¦ µé¾î, ´Ù¼¸°³³ª ¿­ °³ÀÇ ´Ü¼øÇÑ Ç¥Çö½ÄÀ» ÇϳªÀÇ Ç¥Çö½ÄÀ¸·Î °áÇÕÇϸé 5% Á¤µµ ´õ ºü¸¨´Ï´Ù.

+ +

³»Àå º¯¼ö

+

´ÙÀ½ º¯¼öµéÀº ÇÁ·Î±×·¥ ¾È¿¡ ³»ÀåµÇ¾î ÀÖÀ¸¸ç ½ºÅ©¸³Æ®·Î ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù. Clipboard, ErrorLevel, ±×¸®°í ¸í·ÉÁÙ ¸Å°³º¯¼ö´Â Á¦¿ÜÇÏ°í, ÀÌ·± º¯¼öµéÀº Àбâ Àü¿ëÀÔ´Ï´Ù; Áï, ½ºÅ©¸³Æ®°¡ ±× ³»¿ëÀ» Á÷Á¢ÀûÀ¸·Î ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù.

+

¸ñÂ÷

+ +

Ư¼ö ¹®ÀÚ

+ + + + + + + + + +
A_SpaceÀÌ º¯¼ö´Â ½ºÆäÀ̽º ¹®ÀÚ°¡ Çϳª ´ã°Ü ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº AutoTrimÀ» ÂüÁ¶ÇϽʽÿÀ.
A_TabÀÌ º¯¼ö´Â ÅÇ ¹®ÀÚ Çϳª°¡ ´ã°Ü ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº AutoTrim À» ÂüÁ¶ÇϽʽÿÀ.
+

½ºÅ©¸³Æ® Ư¼º

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1, 2, 3, µîµî.ÀÌ º¯¼öµéÀº ½ºÅ©¸³Æ®°¡ ¸í·É¾îÁÙ ¸Å°³º¯¼ö¿Í ÇÔ²² ±âµ¿ÇÒ ¶§¸¶´Ù ÀÚµ¿À¸·Î »ý¼ºµË´Ï´Ù. ¸¶Ä¡ º¸ÅëÀÇ º¯¼ö À̸§Ã³·³ ¶È°°ÀÌ ÂüÁ¶ÇÏ°í º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù (¿¹: %1%). º¯¼ö %0%¿¡´Â °Ç³×¾îÁø ¸Å°³º¯¼öÀÇ °³¼ö°¡ ´ã°Ü ÀÖ½À´Ï´Ù (¾Æ¹«°Íµµ ¾øÀ¸¸é 0ÀÔ´Ï´Ù). ÀÚ¼¼ÇÑ °ÍÀº ¸í·É¾î ÁÙ ¸Å°³º¯¼ö¸¦ ÂüÁ¶ÇϽʽÿÀ.
A_WorkingDir½ºÅ©¸³Æ®ÀÇ ÇöÀç ÀÛ¾÷ µð·ºÅ丮·Î¼­, ±âº»°ªÀ¸·Î ¿©±â¿¡¼­ ÆÄÀÏ¿¡ Á¢±ÙÇÕ´Ï´Ù. ¸¶Áö¸·ÀÇ ¿ª»ç¼±Àº ·çÆ® µð·ºÅ丮°¡ ¾Æ´Ñ ÇÑ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù. ´ÙÀ½Àº µÎ °³ÀÇ ¿¹ÀÔ´Ï´Ù: C:\ ±×¸®°í C:\My Documents. + SetWorkingDir¸¦ »ç¿ëÇϸé ÀÛ¾÷ µð·ºÅ丮¸¦ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.
A_ScriptDirÇöÀç ½ºÅ©¸³Æ®°¡ À§Ä¡ÇÑ µð·ºÅ丮ÀÇ ¿ÏÀüÇÑ °æ·ÎÀÔ´Ï´Ù. ¸¶Áö¸·ÀÇ ¿ª»ç¼±Àº »ý·«ÇÕ´Ï´Ù (·çÆ® µð·ºÅ丮µµ ¸¶Âù°¡Áö·Î »ý·«ÇÕ´Ï´Ù).
A_ScriptNameÇöÀç ½ºÅ©¸³Æ®ÀÇ ÆÄÀÏ À̸§ÀÔ´Ï´Ù. °æ·Î°¡ ¾ø½À´Ï´Ù. ¿¹, MyScript.ahk.
A_ScriptFullPathÀ§ÀÇ µÎ º¯¼ö¸¦ Á¶ÇÕÇØ ½ºÅ©¸³Æ®¸¦ ¿ÏÀüÇÏ°Ô ÁöÁ¤ÇÕ´Ï´Ù. ¿¹, C:\My Documents\My Script.ahk
A_ScriptHwnd
[v1.1.01+]
½ºÅ©¸³Æ®ÀÇ ¼ûÀº ¸ÞÀΠâÀÇ À¯ÀÏÇÑ ID (HWND/handle)ÀÔ´Ï´Ù.
A_LineNumber

½ºÅ©¸³Æ® ¾È¿¡¼­ ÇöÀç ½ÇÇàÁßÀÎ ÁÙÀÇ ¹øÈ£ÀÔ´Ï´Ù (¶Ç´Â ±×ÀÇ #Include ÆÄÀÏ Áß ÇϳªÀÔ´Ï´Ù). ÀÌ ÁÙ ¹øÈ£´Â ListLinesÀÌ º¸¿©ÁÖ´Â ÁÙ ¹øÈ£¿Í ÀÏÄ¡ÇÕ´Ï´Ù; ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¿¡·¯¸¦ º¸°íÇÒ °æ¿ì¿¡ À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù: MsgBox ·Î±× ÆÄÀÏ¿¡ ±â·ÏÇÒ ¼ö ¾ø¾úÀ½ (ÁÙ ¹øÈ£: %A_LineNumber%).

+

+ ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®´Â ÀÚ½ÅÀÇ ¸ðµç #Include ÆÄÀϵéÀ» ÇϳªÀÇ Ä¿´Ù¶õ ½ºÅ©¸³Æ®·Î º´ÇÕÇØ ³Ö±â ¶§¹®¿¡, ºñ-ÄÄÆÄÀÏ ¸ðµå¿¡¼­ ½ÇÇàÇÒ ¶§¿Í ÁÙ ¹øÈ£°¡ ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù.

A_LineFileA_LineNumber°¡ ¼ÓÇØ ÀÖ´Â ÆÄÀÏÀÇ Àüü °æ·Î¿Í À̸§ÀÔ´Ï´Ù. A_ScriptFullPath¿Í µ¿ÀÏÇÕ´Ï´Ù. ¹°·Ð + ±× ÁÙÀÌ ºñ-ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®ÀÇ #Include ÆÄÀÏ Áß Çϳª¿¡ ¼ÓÇØ ÀÖÁö ¾Ê¾Æ¾ß ÇÕ´Ï´Ù.
A_ThisFunc
+ [v1.0.46.16+]
ÇöÀç ½ÇÇà ÁßÀÎ »ç¿ëÀÚ-Á¤ÀÇ ÇÔ¼öÀÇ À̸§ÀÔ´Ï´Ù (¾øÀ¸¸é ºñ¾î ÀÖ½À´Ï´Ù); ¿¹¸¦ µé¾î: MyFunction. ´ÙÀ½µµ ÂüÁ¶ÇϽʽÿÀ: IsFunc()
A_ThisLabel
+ [v1.0.46.16+]
ÇöÀç ½ÇÇà ÁßÀÎ ¶óº§ (¼­ºê·çƾ)ÀÇ À̸§ÀÔ´Ï´Ù (¾øÀ¸¸é ºñ¾î ÀÖ½À´Ï´Ù); ¿¹¸¦ µé¾î: MyLabel. ½ºÅ©¸³Æ®°¡ Gosub/Return ¶Ç´Â Goto¸¦ ½ÇÇàÇÒ ¶§¸¶´Ù °»½ÅµË´Ï´Ù. ¶Ç ÀÚµ¿À¸·Î-È£ÃâµÇ´Â ¶óº§¿¡ ´ëÇؼ­µµ °»½ÅµË´Ï´Ù. ¿©±â¿¡´Â ŸÀ̸Ó, GUI ¾²·¹µå, ¸Þ´º Ç׸ñ, ÇÖÅ°, ÇÖ½ºÆ®¸µ, OnClipboardChange (¶óº§), ±×¸®°í OnExitÀÌ ÀÖ½À´Ï´Ù. + ±×·¸Áö¸¸, ½ÇÇàÀÌ À§ÀÇ ÀÚµ¿-È£Ã⠶󺧷κÎÅÍ ¶Ç´Ù¸¥ ¶óº§·Î "¶³¾îÁö´Â"°æ¿ì A_ThisLabel´Â °»½ÅµÇÁö ¾Ê½À´Ï´Ù; ±×·± ÀÏÀÌ ÀϾ¸é, A_ThisLabelÀº ÀÌÀüÀÇ °ªÀ» À¯ÁöÇÕ´Ï´Ù. ´ÙÀ½µµ ÂüÁ¶ÇϽʽÿÀ: A_ThisHotkey ±×¸®°í IsLabel()
A_AhkVersion1.0.22 ÀÌÀü ¹öÀü¿¡¼­, ÀÌ º¯¼ö´Â ºñ¾î ÀÖ½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ°í ÀÖ´Â ¿ÀÅäÇÖÅ°ÀÇ ¹öÀüÀÌ ´ã±é´Ï´Ù. ¿¹, 1.0.22. ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®ÀÇ °æ¿ì, ¿ø·¡ ÄÄÆÄÀÏ¿¡ »ç¿ëµÈ ¹öÀüÀÌ º¸°íµË´Ï´Ù. ¹öÀü ¹øÈ£ÀÇ Çü½ÄÀ» º¸°í ½ºÅ©¸³Æ®´Â A_AhkVersionÀÌ ´ÙÀ½ ¿¹¿Í °°ÀÌ > ¶Ç´Â >=·Î ÃÖ¼ÒÇÑÀÇ ¹öÀü ¹øÈ£º¸´Ù Å«Áö Á¡°ËÇÒ ¼ö ÀÖ½À´Ï´Ù: if A_AhkVersion >= 1.0.25.07.
A_AhkPath

ºñ-ÄÄÆÄÀÏ ½ºÅ©¸³Æ®¶ó¸é: ÇöÀç ½ºÅ©¸³Æ®¸¦ ½ÇÁ¦·Î ½ÇÇàÁßÀÎ EXE ÆÄÀÏÀÇ À̸§°ú Àüü °æ·ÎÀÔ´Ï´Ù. ¿¹¸¦ µé¾î: C:\Program Files\AutoHotkey\AutoHotkey.exe

+

ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®¶ó¸é: À§¿Í °°Áö¸¸ ¿¹¿Ü´Â AutoHotkey µð·ºÅ丮°¡ ·¹Áö½ºÆ®¸® HKEY_LOCAL_MACHINE\SOFTWARE\AutoHotkey\InstallDir ¿£Æ®¸®¸¦ ÅëÇÏ¿© ¹ß°ßµÈ´Ù´Â °ÍÀÔ´Ï´Ù. ±×·± ¿£Æ®¸®°¡ ¾ø´Ù¸é, A_AhkPath´Â ºñ¾î ÀÖ½À´Ï´Ù.

A_IsUnicode¹®ÀÚ¿­ÀÌ À¯´ÏÄÚµå (16-ºñÆ®)À̸é 1ÀÌ ANSI (8-ºñÆ®)ÀÌ¸é ºó ¹®ÀÚ¿­ÀÌ ´ã±é´Ï´Ù (°ÅÁþÀ¸·Î °£ÁÖµÊ). ¹®ÀÚ¿­ÀÇ Çü½ÄÀº ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ´Â µ¥ »ç¿ëµÈ AutoHotkey.exe ¹öÀü¿¡ µû¶ó ´Ù¸¨´Ï´Ù. ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®¶ó¸é, ÄÄÆÄÀÏ¿¡ »ç¿ëµÈ ½ÇÇàÆÄÀÏ¿¡ µû¶ó ´Ù¸¨´Ï´Ù.
A_IsCompiled½ºÅ©¸³Æ®°¡ ÄÄÆÄÀÏ µÈ EXE·Î ½ÇÇàµÇ¸é 1ÀÌ ±×·¸Áö ¾ÊÀ¸¸é ºó ¹®ÀÚ¿­ÀÌ ´ã±é´Ï´Ù (°ÅÁþÀ¸·Î °£ÁÖ).
A_ExitReason½ºÅ©¸³Æ®¸¦ ³¡³»°Ô µÈ °¡Àå ÃÖ±ÙÀÇ ÀÌÀ¯ÀÔ´Ï´Ù. ÀÌ º¯¼ö´Â ½ºÅ©¸³Æ®¿¡ OnExit ¼­ºê·çƾÀÌ ÀÖ°í ±× ¼­ºê·çƾÀÌ ÇöÀç ½ÇÇàÁßÀ̰ųª Á¾·á ½Ãµµ·Î Àû¾îµµ ÇÑ ¹ø È£ÃâµÈ ÀûÀÌ ¾ø´Â ÇÑ, ºñ¾î ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº OnExitÀ» ÂüÁ¶ÇϽʽÿÀ.
+

³¯Â¥¿Í ½Ã°£

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
A_YYYYÇöÀçÀÇ 4-ÀÚ¸® ³âµµÀÔ´Ï´Ù (¿¹, 2004). A_Year¿Í µ¿ÀǾîÀÔ´Ï´Ù. ÁÖÀÇ: ¿©·¯ºÐÀÇ ·ÎÄÉÀÏ°ú ¾ð¾î¿¡ ´ëÇÏ¿© ÀûÀýÇÏ°Ô Æ÷¸ËµÈ ³¯Â¥¿Í ½Ã°£À» ¿­¶÷ÇÏ·Á¸é, FormatTime, OutputVar (½Ã°£°ú ±ä ³¯Â¥) ¶Ç´Â FormatTime, OutputVar,, LongDate (±ä-Çü½ÄÀÇ ³¯Â¥¸¦ ¿­¶÷)¸¦ »ç¿ëÇϽʽÿÀ.
A_MMÇöÀçÀÇ 2-ÀÚ¸® ¿ùÀÔ´Ï´Ù (01-12). A_Mon¿Í µ¿ÀÏÇÕ´Ï´Ù.
A_DDÇöÀç 2-ÀÚ¸® ¿ùº° ³¯Â¥ÀÔ´Ï´Ù (01-31). A_MDay¿Í µ¿ÀÏÇÕ´Ï´Ù.
A_MMMMÇöÀç »ç¿ëÀÚ ¾ð¾î·Î ÇöÀç ´ÞÀÇ Àüü À̸§ÀÔ´Ï´Ù. ¿¹, July
A_MMMÇöÀç »ç¿ëÀÚ ¾ð¾î·Î ÇöÀç ´ÞÀÇ ¾àÀÚÀÔ´Ï´Ù. ¿¹, Jul
A_DDDDÇöÀç »ç¿ëÀÚ ¾ð¾î·Î ÇöÀç ¿äÀÏÀÇ Àüü À̸§ÀÔ´Ï´Ù. ¿¹, Sunday
A_DDDÇöÀç »ç¿ëÀÚ ¾ð¾î·Î ÇöÀç ¿äÀÏÀÇ 3-¹®ÀÚ ¾à¾îÀÔ´Ï´Ù. ¿¹, Sun
A_WDayÇöÀç ¿äÀÏÀÇ 1-ÀÚ¸® ¼öÀÔ´Ï´Ù (1-7). 1Àº ¸ðµç ·ÎÄÉÀÏ¿¡¼­ ÀÏ¿äÀÏÀÔ´Ï´Ù.
A_YDay¿¬º° ÇöÀç ³¯Â¥ÀÔ´Ï´Ù (1-366). °ªÀº 0À¸·Î ä¿öÁöÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, 0ÀÌ ¿­¶÷µÇÁö, 009°¡ ¿­¶÷µÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. 0À¸·Î µ¡´ë¾îÁø °ªÀ» ¿­¶÷ÇÏ·Á¸é, ´ÙÀ½À» »ç¿ëÇÕ´Ï´Ù: FormatTime, OutputVar,, YDay0.
A_YWeekISO 8601¿¡ µû¸¥ ÇöÀç ³âµµ¿Í ÁÖ ¹øÈ£ (¿¹. 200453). ³âµµ¿Í ÁÖ¸¦ °¡¸£·Á¸é StringLeft, Year, A_YWeek, 4 ±×¸®°í StringRight, Week, A_YWeek, 2¸¦ »ç¿ëÇÕ´Ï´Ù. +

+ A_YWeekÀÇ Á¤¹ÐÇÑ Á¤ÀÇ: 1¿ù 1ÀÏÀ» ´ã°í ÀÖ´Â ÁÖ°¡ »õ ÇØ¿¡¼­ 4ÀÏ ÀÌ»óÀ» °¡Áö¸é, ±×°ÍÀ» 1 ¹ø ÁÖ·Î °£ÁÖÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ÀÌÀü ³âµµÀÇ ¸¶Áö¸· ÁÖÀÌ°í, ´ÙÀ½ ÁÖ°¡ 1 ¹ø ÁÖÀÔ´Ï´Ù.

A_Hour24½Ã°£Á¦·Î ÇöÀçÀÇ 2-ÀÚ¸® ½Ã (00-23) (¿¹¸¦ µé¾î, 17´Â ¿ÀÈÄ 5½Ã). AM/PM Ç¥½Ã¿Í ÇÔ²² 12½Ã°£Á¦·Î ¿­¶÷ÇÏ·Á¸é, ´ÙÀ½ ¿¹¸¦ µû¸£½Ê½Ã¿À: FormatTime, OutputVar, , h:mm:ss tt
A_Min

ÇöÀç 2-ÀÚ¸® ºÐ (00-59).

A_SecÇöÀç 2-ÀÚ¸® ÃÊ (00-59).
A_MSecÇöÀç 3-ÀÚ¸® ¹Ð¸®ÃÊ (000-999). ¾ÕÀÇ 0À» Á¦°ÅÇÏ·Á¸é ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À: Milliseconds := A_MSec + 0.
A_NowYYYYMMDDHH24MISS Çü½ÄÀ¸·Î ÇöÀç ·ÎÄà ½Ã°£ ÀÔ´Ï´Ù. ÁÖÀÇ: ³¯Â¥¿Í ½Ã°£ ¿¬»êÀº EnvAdd ±×¸®°í EnvSub·Î ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶Ç, FormatTimeÀ¸·Î ³¯Â¥¿Í ½Ã°£À» ¿©·¯ºÐÀÇ ·ÎÄÉÀÏ ¶Ç´Â ±âÈ£¿¡ ¸Â°Ô Æ÷¸ËÇÒ ¼ö ÀÖ½À´Ï´Ù.
A_NowUTCÇöÀçÀÇ ÇùÁ¤ ¼¼°è½Ã(Coordinated Universal Time (UTC))ÀÔ´Ï´Ù. Çü½ÄÀº YYYYMMDDHH24MISSÀÔ´Ï´Ù. + UTC´Â º»ÁúÀûÀ¸·Î ±×¸®´ÏÄ¡ Ç¥ÁؽÃ(Greenwich Mean Time (GMT))°ú ¶È°°½À´Ï´Ù.
A_TickCount

ÄÄÇ»ÅÍ°¡ ¸®ºÎÆÃµÈ ÀÌÈÄ·Î °æ°úÇÑ ¹Ð¸®ÃÊÀÇ °³¼ö. A_TickCount¸¦ º¯¼ö¿¡ ÀúÀåÇØ µÎ°í ³ªÁß¿¡ °¡Àå ¸¶Áö¸· A_TickCount °ª¿¡¼­ »©¾î¼­ °æ°úÇÑ ½Ã°£À» ÃøÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
StartTime := A_TickCount
+Sleep, 1000
+ElapsedTime := A_TickCount - StartTime
+MsgBox,  %ElapsedTime% ¹Ð¸®ÃÊ°¡ °æ°úÇÏ¿´½À´Ï´Ù.
+

+A_TickCountÀÇ ¹Ð¸®Ãʺ¸´Ù ´õ Á¤¹ÐÇØ¾ß ÇÑ´Ù¸é, QueryPerformanceCounter()¸¦ »ç¿ëÇÕ´Ï´Ù.

+
+

Script Settings

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
A_IsSuspended½ºÅ©¸³Æ®°¡ º¸·ùÁßÀ̸é(suspended) 1ÀÌ ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ´ã±é´Ï´Ù.
A_IsPaused
+ [v1.0.48+]
ÇöÀç ¾²·¹µå ¹Ù·Î ¾Æ·¡ÀÇ ¾²·¹µå°¡ Á¤ÁöµÇ¾î ÀÖÀ¸¸é 1ÀÌ ´ã±é´Ï´Ù. ±×·¸Áö¸¸ 0ÀÌ ´ã±é´Ï´Ù.
A_IsCritical
+ [v1.0.48+]
ÇöÀç ¾²·¹µå¿¡ ´ëÇÏ¿© ÀӰ豸¿ª ¹ÛÀ̸é 0ÀÌ ´ã±é´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0º¸´Ù Å« Á¤¼ö°ªÀÌ ´ã±é´Ï´Ù. + + Áï, Critical¿¡¼­ ¸Þ½ÃÁö-Á¡°Ë ºóµµ¸¦ »ç¿ëÁßÀÔ´Ï´Ù. + + Critical 0À̸é ÀÓ°è ±¸¿ª Á¡°ËÀ» ²ô±â ¶§¹®¿¡, ÀÓ°è ±¸¿ªÀÇ ÇöÀç »óŸ¦ ÀúÀåÇÏ°í ³ªÁß¿¡ Old_IsCritical := A_IsCritical¸¦ ÇÑ ´ÙÀ½¿¡ Critical %Old_IsCritical%¸¦ ÅëÇÏ¿© º¹±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.
A_BatchLines(A_NumBatchLines¿Í µ¿ÀǾî) SetBatchLines¿¡ ÀÇÇÏ¿© ¼³Á¤µÈ ÇöÀç °ªÀÔ´Ï´Ù. ¿¹Á¦: 200 ¶Ç´Â 10ms (Æ÷¸Ë¿¡ µû¶ó ´Ù¸§).
A_TitleMatchModeSetTitleMatchMode°¡ ¼³Á¤ÇÑ ÇöÀç ºÎÇÕ¸ðµåÀÔ´Ï´Ù: 1, 2, 3, ¶Ç´Â RegEx.
A_TitleMatchModeSpeedSetTitleMatchMode°¡ ¼³Á¤ÇÑ ÇöÀç ÀÏÄ¡ ¼ÓµµÀÔ´Ï´Ù (fast ¶Ç´Â slow) .
A_DetectHiddenWindowsDetectHiddenWindows°¡ ¼³Á¤ÇÑ ÇöÀç ¸ðµåÀÔ´Ï´Ù (On ¶Ç´Â Off).
A_DetectHiddenTextDetectHiddenText°¡ ¼³Á¤ÇÑ ÇöÀç ¸ðµåÀÔ´Ï´Ù (On ¶Ç´Â Off).
A_AutoTrimAutoTrimÀÌ ¼³Á¤ÇÑ ÇöÀç ¸ðµåÀÔ´Ï´Ù (On ¶Ç´Â Off) .
A_StringCaseSenseStringCaseSense°¡ ¼³Á¤ÇÑ ÇöÀç ¸ðµåÀÔ´Ï´Ù (On, Off, ¶Ç´Â Locale) .
A_FileEncoding[AHK_L 46+] ´Ù¾çÇÑ ¸í·É¾î¿¡ ´ëÇÏ¿© ±âº» ÀÎÄÚµùÀÌ ´ã°Ü ÀÖ½À´Ï´Ù; FileEncoding¸¦ ÂüÁ¶ÇϽʽÿÀ.
A_FormatIntegerSetFormatÀÌ ¼³Á¤ÇÑ ÇöÀç Á¤¼ö Çü½Ä (H ¶Ç´Â D). [AHK_L 42+]: ÀÌ°ÍÀº ¼Ò¹®ÀÚ h¸¦ ´ãÀ» ¼öµµ ÀÖ½À´Ï´Ù.
A_FormatFloatSetFormatÀÌ ¼³Á¤ÇÑ ÇöÀç ºÎµ¿ ¼Ò¼öÁ¡ ¼ö Çü½Ä.
A_KeyDelaySetKeyDelay°¡ ¼³Á¤ÇÑ ÇöÀç Áö¿¬ ½Ã°£ (¾ðÁ¦³ª 10Áø¼ö¸¦ »ç¿ëÇÕ´Ï´Ù). ÀÌ Áö¿¬ ½Ã°£Àº ÀüÅëÀûÀÎ SendEvent ¸ðµå¸¦ À§ÇÑ °ÍÀ̸ç, SendPlay¸¦ À§ÇÑ °ÍÀÌ ¾Æ´Õ´Ï´Ù.
A_WinDelaySetWinDelay°¡ ¼³Á¤ÇÑ ÇöÀç Áö¿¬ ½Ã°£ (¾ðÁ¦³ª ½ÊÁø¹ýÀ» »ç¿ëÇÕ´Ï´Ù).
A_ControlDelaySetControlDelay°¡ ¼³Á¤ÇÑ ÇöÀç Áö¿¬ ½Ã°£ (¾ðÁ¦³ª 10Áø¼ö¸¦ »ç¿ëÇÕ´Ï´Ù).
A_MouseDelaySetMouseDelay°¡ ¼³Á¤ÇÑ ÇöÀç Áö¿¬ ½Ã°£ (¾ðÁ¦³ª ½ÊÁö¼ö¸¦ »ç¿ëÇÕ´Ï´Ù). ÀÌ Áö¿¬Àº ÀüÅëÀûÀÎ SendEvent ¸ðµå¸¦ À§ÇÑ °ÍÀ̸ç, SendPlay¸¦ À§ÇÑ °ÍÀÌ ¾Æ´Õ´Ï´Ù.
A_DefaultMouseSpeedSetDefaultMouseSpeed°¡ ¼³Á¤ÇÑ ÇöÀç ¼Óµµ (¾ðÁ¦³ª ½ÊÁø¹ýÀ» »ç¿ëÇÕ´Ï´Ù. ½ÊÀ°Áø¹ýÀº »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù).
A_RegView[v1.1.08+]: SetRegView°¡ ¼³Á¤ÇÑ ÇöÀç ·¹Áö½ºÆ®¸® ºäÀÔ´Ï´Ù.
A_IconHiddenÆ®·¹ÀÌ ¾ÆÀÌÄÜÀÌ ÇöÀç º¸ÀÌÁö ¾ÊÀ¸¸é 1 ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ´ã±é´Ï´Ù. ¾ÆÀÌÄÜÀº #NoTrayIconÀ̳ª Menu ¸í·É¾î¸¦ ÅëÇÏ¿© °¨Ãâ ¼ö ÀÖ½À´Ï´Ù.
A_IconTipÆ®·¹ÀÌ ¾ÆÀÌÄÜ¿¡ ¸ÂÃã ÅøÆÁÀÌ Menu, Tray, TipÀ» ÅëÇÏ¿© ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀº ÇÑ, ºñ¾î ÀÖ½À´Ï´Ù -- ÁöÁ¤µÇ¾î ÀÖÀ¸¸é ÅøÆÁ ÅؽºÆ®°¡ ´ã±é´Ï´Ù.
A_IconFile¸ÂÃã Æ®·¹ÀÌ ¾ÆÀÌÄÜÀÌ Menu, tray, iconÀ» ÅëÇÏ¿© ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀº ÇÑ ºñ¾î ÀÖ½À´Ï´Ù --ÁöÁ¤ µÇ¾î ÀÖÀ» °æ¿ì ±× ¾ÆÀÌÄÜ ÆÄÀÏÀÇ Àüü °æ·Î¿Í À̸§ÀÌ ´ã±é´Ï´Ù. +

+ ¾Ë·ÁÁø ÇÑ°Ô: ½ºÅ©¸³Æ®°¡ óÀ½ºÎÅÍ »ó´ëÀûÀÎ °æ·Î¸¦ ½Ã½ºÅÛ DLL¿¡ °Ç³Þ´Ù¸é ÀÌ °æ·Î´Â ¿Ã¹Ù¸£Áö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù; ¿¹¸¦ µé¾î, Menu, Tray, Icon, user32.dll, 2.

A_IconNumberA_IconFileÀÌ ºñ¾î ÀÖÀ¸¸é ºñ¾î ÀÖ½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, A_IconFileÀÇ ¾ÆÀÌÄÜ ¹øÈ£ÀÔ´Ï´Ù (ÀüÇüÀûÀ¸·Î 1).
+

User Idle Time

+ + + + + + + + + +
A_TimeIdleÅ°º¸µå³ª ¸¶¿ì½º ¶Ç´Â ±âŸ ÀÔ·ÂÀ¸·ÎºÎÅÍ ½Ã½ºÅÛÀÌ ÀÔ·ÂÀ» ¹ÞÀº ÀÌÈÄ·Î °æ°úÇÑ ½Ã°£ÀÇ ¹Ð¸®ÃÊ °³¼öÀÔ´Ï´Ù. »ç¿ëÀÚ°¡ ÄÄÇ»ÅÍ ¾Õ¿¡ ÀÖ´ÂÁö ÆÇ´ÜÇϴµ¥ À¯¿ëÇÕ´Ï´Ù. »ç¿ëÀڷκÎÅÍ ¹Þ´Â ¹°¸®Àû ÀԷ°ú ´õºÒ¾î ÇÁ·Î±×·¥À̳ª ½ºÅ©¸³Æ®°¡ ¸¸µé¾î ³»´Â ÀÎÀ§ÀûÀÎ ÀÔ·ÂÀº (Send ¶Ç´Â MouseMove ¸í·É¾î) ÀÌ °ªÀ» ´Ù½Ã 0À¸·Î Àç¼³Á¤ÇÕ´Ï´Ù. ÀÌ °ªÀº 10¾¿ Áõ°¡ÇÏ´Â °æÇâÀÌ Àֱ⠶§¹®¿¡, ´Ù¸¥ °ª°ú °°ÀºÁö ºñ±³ÇÏ¸é ¾ÈµË´Ï´Ù. ´ë½Å¿¡, ´Ù¸¥ °ªº¸´Ù Å«Áö ÀÛÀºÁö·Î ºñ±³ÇϽʽÿÀ. ¿¹¸¦ µé¾î: IfGreater, A_TimeIdle, 600000, MsgBox, ¸¶Áö¸· Å°º¸µå³ª ¸¶¿ì½º È°µ¿ÀÌ Àû¾îµµ 10 ºÐ ÀüÀ̾ú½À´Ï´Ù.
A_TimeIdlePhysical

À§¿Í ºñ½ÁÇÏÁö¸¸ »óÀÀÇÏ´Â °¥°í¸®°¡ ¼³Ä¡µÇ¾î ÀÖÀ¸¸é ÀÎÀ§ÀûÀÎ Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯À» ¹«½ÃÇÕ´Ï´Ù. (keyboard ¶Ç´Â mouse); Áï, ¿ÀÁ÷ ¹°¸®Àû À̺¥Æ®¿¡¸¸ ÀÀ´äÇÕ´Ï´Ù. (¸¶Ä¡ »ç¿ëÀÚ°¡ Á¸ÀçÇÏ´Â µíÀÌ Å°º¸µå³ª ¸¶¿ì½º Ŭ¸¯À» Èä³»³»´Â °ÍÀ» ¹æÁöÇÕ´Ï´Ù.) °¥°í¸®°¡ ¼³Ä¡µÇ¾î ÀÖÁö ¾ÊÀ¸¸é, ÀÌ °ªÀº A_TimeIdle°ú µ¿µîÇÕ´Ï´Ù. µÑ Áß¿¡ ÇϳªÀÇ °¥°í¸®¸¸ ¼³Ä¡µÇ¾î ÀÖÀ¸¸é, ¹°¸®Àû ÀÔ·ÂÀÇ À¯Çü¸¸ A_TimeIdlePhysical¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù (´Ù¸¥/¼³Ä¡-¾ÈµÈ °¥°í¸®ÀÇ ÀÔ·ÂÀº, ¹°¸®Àû ÀԷ°ú ÀÎÀ§Àû ÀԷ¿¡ ¸ðµÎ ¿µÇâÀÌ ¾ø½À´Ï´Ù).

+

GUI â°ú ¸Þ´º ¹Ù

+ + + + + + + + + + + + + + + + + + + + + + + + + +
A_GuiÇöÀç ¾²·¹µå¸¦ ±âµ¿ÇÑ GUIÀÇ À̸§À̳ª ¹øÈ£ÀÔ´Ï´Ù. ÀÌ º¯¼ö´Â Gui ÄÜÆ®·Ñ, ¸Þ´º ¹Ù Ç׸ñ, ¶Ç´Â GuiClose/GuiEscape¿Í °°Àº À̺¥Æ®°¡ ÇöÀç ¾²·¹µå¸¦ ±âµ¿ÇÏÁö ¾Ê¾Ò´Ù¸é ºñ¾î ÀÖ½À´Ï´Ù.
A_GuiControlÇöÀç ¾²·¹µå¸¦ ±âµ¿ÇÑ ±¸ÀÌ ÄÜÆ®·Ñ¿¡ ¿¬°üµÈ º¯¼öÀÇ À̸§ÀÔ´Ï´Ù. ±¸ÀÌ ÄÜÆ®·Ñ¿¡ ¿¬°ü º¯¼ö°¡ ¾øÀ¸¸é, ´ë½Å¿¡ A_GuiControl¿¡´Â ÇØ´ç ÄÜÆ®·ÑÀÇ ÅؽºÆ®/ĸ¼ÇÀÇ ¾ÕÂÊ 63°³ÀÇ ¹®ÀÚ°¡ ´ã±é´Ï´Ù (°¢ ¹öÆ°¿¡ º¯¼ö À̸§À» ºÎ¿©ÇÏÁö ¾Ê±â À§ÇØ ÀÚÁÖ »ç¿ëµË´Ï´Ù). A_GuiControlÀº ´ÙÀ½°ú °°Àº °æ¿ì ºñ¾î ÀÖ½À´Ï´Ù: +
    +
  1. A_Gui°¡ ºñ¾î ÀÖ´Ù; +
  2. GUI ¸Þ´º ¹Ù Ç׸ñÀ̳ª GuiClose/GuiEscape°ú °°Àº À̺¥Æ®°¡ ÇöÀç ¾²·¹µå¸¦ ±âµ¿½ÃÄ×´Ù; +
  3. ÄÜÆ®·Ñ¿¡ ¿¬°ü º¯¼ö°¡ ¾øÀ¸¸ç ĸ¼Çµµ ¾ø´Ù; +
  4. ¶Ç´Â ÇöÀç ¾²·¹µå¸¦ ±âµ¿½ÃŲ ÃÖÃÊÀÇ ÄÜÆ®·ÑÀÌ (¾Æ¸¶µµ Gui Destroy ¶§¹®¿¡ ´õ ÀÌ»ó Á¸ÀçÇÏÁö ¾Ê´Â´Ù). +
+
A_GuiWidth
+ A_GuiHeight
GuiSize ¼­ºê·çƾ¿¡¼­ ÂüÁ¶ÇÒ ¶§ GUI âÀÇ ³Êºñ¿Í ³ôÀÌ°¡ ´ã±é´Ï´Ù. âÀÇ Å¬¶óÀ̾ðÆ® ±¸¿ª¿¡ Àû¿ëµË´Ï´Ù. Ŭ¶óÀ̾ðÆ® ±¸¿ªÀº ŸÀÌƲ ¹Ù¿Í ¸Þ´º ¹Ù ±×¸®°í Å׵θ®¸¦ Á¦¿ÜÇÑ ±¸¿ªÀÔ´Ï´Ù. [v1.1.11+]: ÀÌ °ªµéÀº DPI ½ºÄÉÀϸµ¿¡ ¿µÇâÀ» ¹Þ½À´Ï´Ù.
A_GuiX
+ A_GuiY
GuiContextMenu À̺¥Æ®¿Í GuiDropFiles À̺£Æ®°¡ ÀϾ ¶§ X ÁÂÇ¥¿Í Y ÁÂÇ¥¸¦ ´ã°í ÀÖ½À´Ï´Ù. ÁÂÇ¥´Â âÀÇ Á»ó ¸ð¼­¸®¿¡ »ó´ëÀûÀÔ´Ï´Ù. [v1.1.11+]: ÀÌ °ªµéÀº DPI ½ºÄÉÀϸµ¿¡ ¿µÇâÀ» ¹Þ½À´Ï´Ù.
A_GuiEvent
¶Ç´Â A_GuiControlEvent

+ + ÇöÀç ¾²·¹µå¸¦ ±âµ¿ÇÑ À̺¥Æ®ÀÇ Á¾·ù. ¾²·¹µå°¡ GUI ÇàÀ§¸¦ ÅëÇÏ¿© ±âµ¿µÇÁö ¾Ê¾Ò´Ù¸é, ÀÌ º¯¼ö´Â ºñ¾î ÀÖ½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ´ÙÀ½ ¹®ÀÚ¿­ Áß Çϳª°¡ ´ã±é´Ï´Ù:

+

Normal: À̺¥Æ®°¡ ¿ÞŬ¸¯ ¶Ç´Â Å°´­¸²À¸·Î ±âµ¿µÇ¾ú½À´Ï´Ù (È­»ìÇ¥ Å°, TAB Å°, ½ºÆäÀ̽º¹Ù, ¹ØÁÙ ´ÜÃàÅ° µîµî.). ÀÌ °ªÀº ¶ÇGuiClose ±×¸®°í GuiEscape¿Í °°Àº Ư¼öÇÑ À̺¥Æ® ±×¸®°í ¸Þ´º ¹Ù Ç׸ñ¿¡µµ »ç¿ëµË´Ï´Ù.

+

DoubleClick: À̺¥Æ®°¡ ´õºíŬ¸¯À¸·Î Ã˹ߵǾú½À´Ï´Ù. ÁÖÀÇ: Ŭ¸¯-½Ö Áß¿¡ ù Ŭ¸¯Àº ¸ÕÀú Normal À̺¥Æ®¸¦ ¹Þ½À´Ï´Ù. ´Ù½Ã ¸»ÇØ, ¼­ºê·çƾÀº µÎ ¹ø ±âµ¿µË´Ï´Ù: ÇÑ ¹øÀº ù Ŭ¸¯¿¡ ±×¸®°í ´Ù½Ã µÎ ¹ø° Ŭ¸¯¿¡ ±âµ¿µË´Ï´Ù.

+

RightClick: ¿ÀÁ÷ GuiContextMenu, ListViews, ±×¸®°í TreeViews¿¡¸¸ ÀϾ´Ï´Ù.

+

¹®¸Æ-°¨Áö °ª: ÀÚ¼¼ÇÑ °ÍÀº GuiContextMenu, GuiDropFiles, Slider, MonthCal, ListView, ±×¸®°í TreeView¸¦ ÂüÁ¶ÇϽʽÿÀ.

+
A_EventInfo

´ÙÀ½ À̺¥Æ®µé¿¡ ´ëÇÑ Ãß°¡ Á¤º¸¸¦ ´ã°í ÀÖ½À´Ï´Ù:

+
+

ÁÖÀÇ: A_ThisHotkey¿Í °°Àº º¯¼ö¿Í ´Ù¸£°Ô, °¢ ¾²·¹µå¸¶´Ù A_Gui, A_GuiControl, A_GuiX/Y, A_GuiEvent, ±×¸®°í A_EventInfo¿¡ ´ëÇÏ¿© ÀÚ½ÅÀÇ °ªÀ» À¯ÁöÇÕ´Ï´Ù. ±×·¯¹Ç·Î, ¾²·¹µå°¡ ´Ù¸¥ ¾²·¹µå¿¡ ÀÇÇØ ÀÎÅÍ·´Æ® µÇ´õ¶óµµ, ½ÇÇàÀ» Àç°³ÇÏ¸é ¿©ÀüÈ÷ ÀÌ °ªµé¿¡¼­ ÀÚ½ÅÀÇ ¿ø·¡/¿Ã¹Ù¸¥ °ªÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.

+ +

ÇÖÅ°, ÇÖ½ºÆ®¸µ, ±×¸®°í ¸ÂÃã ¸Þ´º Ç׸ñ

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
A_ThisMenuItem°¡Àå ÃÖ±Ù¿¡ ¼±ÅÃµÈ ¸ÂÃã ¸Þ´º Ç׸ñÀÇ À̸§ÀÔ´Ï´Ù (¾øÀ¸¸é ºñ¾î ÀÖ½À´Ï´Ù).
A_ThisMenuA_ThisMenuItem°¡ ¼±ÅÃµÈ °÷ÀÇ ¸Þ´º À̸§ÀÔ´Ï´Ù.
A_ThisMenuItemPos¾È¿¡¼­ A_ThisMenuItemÀÇ ÇöÀç À§Ä¡¸¦ °¡¸®Å°´Â ¹øÈ£ÀÔ´Ï´Ù. ¸Þ´º¿¡¼­ ù ¹ø° Ç׸ñÀº 1ÀÌ°í, µÎ ¹ø° Ç׸ñÀº 2, µîµîÀÔ´Ï´Ù. ¸Þ´º °¡¸§ÀÚ ÁÙµµ °è»ê¿¡ µé¾î °©´Ï´Ù. ÀÌ º¯¼ö´Â A_ThisMenu¸Þ´º ¾È¿¡ A_ThisMenuItemÀÌ ºñ¾î Àְųª ´õ ÀÌ»ó Á¸ÀçÇÏÁö ¾ÊÀ¸¸é ºñ¾î ÀÖ½À´Ï´Ù. ¶Ç A_ThisMenu ÀÚü°¡ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì¿¡µµ ºñ¾î ÀÖ½À´Ï´Ù.
A_ThisHotkey

°¡Àå ÃÖ±Ù¿¡ ½ÇÇàµÈ ÇÖÅ° ¶Ç´Â ºñ-ÀÚµ¿-±³Ã¼ ÇÖ½ºÆ®¸µÀÔ´Ï´Ù (¾øÀ¸¸é ºñ¾î ÀÖ½À´Ï´Ù). ¿¹, #z. ÀÌ °ªÀº ÇöÀç ¾²·¹µå°¡ ¶Ç´Ù¸¥ ÇÖÅ°·Î ÀÎÅÍ·´Æ® µÇ¸é º¯ÇÕ´Ï´Ù. ±×·¡¼­ ³ªÁß¿¡ ¼­ºê·çƾ¿¡¼­ »ç¿ëÇϱâ À§ÇØ ¿ø·¡ °ªÀÌ ÇÊ¿äÇÏ´Ù¸é Áï½Ã ¶Ç´Ù¸¥ º¯¼ö¿¡ º¹»çÇϽʽÿÀ.

+

ÇÖÅ°°¡ óÀ½À¸·Î - ½ºÅ©¸³Æ®¿¡¼­ ÇÖÅ° ¸í·É¾î³ª ÀÌÁß-½ÖÁ¡ ¶óº§·Î -- ¸¸µé¾îÁú ¶§, ±×ÀÇ Å° À̸§°ú ±×ÀÇ ¼ö½Ä ½Éº¼ÀÇ ¼ø¼­°¡ ±× ÇÖÅ°ÀÇ ¿µ±¸ÀûÀÎ À̸§ÀÌ µË´Ï´Ù. ±× À̸§À» ÇÖÅ°ÀÇ ¸ðµç º¯ÇüµéÀÌ °øÀ¯ÇÕ´Ï´Ù.

+

´ÙÀ½µµ ÂüÁ¶ÇϽʽÿÀ: A_ThisLabel

A_PriorHotkeyÀ§¿Í °°Áö¸¸ ÀÌÀüÀÇ ÇÖÅ°´Â Á¦¿ÜÇÕ´Ï´Ù. ¾øÀ¸¸é ºñ¾î ÀÖ½À´Ï´Ù.
A_PriorKey[v1.1.01+]: °¡Àå ÃÖ±ÙÀÇ Å°-´©¸§À̳ª Å°-¶Àº¸´Ù ¾Õ¿¡ ´­¸° ¸¶Áö¸· Å°ÀÇ À̸§ÀÔ´Ï´Ù. ¾Æ´Ï¸é Å° È÷½ºÅ丮¿¡¼­ Àû¿ë°¡´ÉÇÑ Å°-´©¸§À» ¹ß°ßÇÒ ¼ö ¾øÀ» °æ¿ì ºñ¾î ÀÖ½À´Ï´Ù. + + ¿ÀÅäÇֱ⠽ºÅ©¸³Æ®°¡ »ý¼ºÇÑ ¸ðµç ÀÔ·ÂÀº ¹èÁ¦µË´Ï´Ù. ÀÌ º¯¼ö¸¦ »ç¿ëÇÏ·Á¸é, Å°º¸µå °¥°í¸®³ª ¸¶¿ì½º °¥°í¸®°¡ ¹Ýµå½Ã ¼³Ä¡µÇ¾î ÀÖ¾î¾ß ÇÏ°í Å° È÷½ºÅ丮°¡ È°¼ºÈ­µÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù.
A_TimeSinceThisHotkey A_ThisHotkey°¡ ´­¸° ÀÌÈÄ·Î °æ°úÇÑ ¹Ð¸®ÃÊÀÇ °³¼öÀÔ´Ï´Ù. A_ThisHotkey°¡ ºô ¶§¸¶´Ù -1ÀÌ µË´Ï´Ù.
A_TimeSincePriorHotkeyA_PriorHotkey°¡ ´­¸° ÀÌÈÄ·Î °æ°úÇÑ ¹Ð¸®ÃÊÀÇ °³¼öÀÔ´Ï´Ù. A_PriorHotkey°¡ ºô ¶§¸¶´Ù -1ÀÌ µË´Ï´Ù.
A_EndChar°¡Àå ÃÖ±ÙÀÇ ºñ-ÀÚµ¿-±³Ã¼-ÇÖ½ºÆ®¸µÀ» Ã˹߽ÃÅ°±â À§ÇØ »ç¿ëÀÚ°¡ ´©¸¥ Á¾·á ¹®ÀÚ(ending character)ÀÔ´Ï´Ù. Á¾·á ¹®ÀÚ¸¦ ( * ¿É¼Ç ¶§¹®¿¡) ¿ä±¸ÇÏÁö ¾Ê¾Ò´Ù¸é, ÀÌ °ªÀº ºñ¾î ÀÖ½À´Ï´Ù.
+

¿î¿µ üÁ¦¿Í »ç¿ëÀÚ Á¤º¸

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ComSpec
+ [v1.0.43.08+]
ComSpec ȯ°æ º¯¼ö¿Í °°Àº ¹®ÀÚ¿­À» ´ã°í ÀÖ½À´Ï´Ù(¿¹, C:\Windows\system32\cmd.exe). Á¾Á¾ Run/RunWait¿Í ÇÔ²² »ç¿ëµË´Ï´Ù. ÁÖÀÇ: ÀÌ º¯¼ö¿¡´Â A_ prefix°¡ ºÙÁö ¾Ê½À´Ï´Ù.
A_Temp
+ [v1.0.43.09+]
Àӽà ÆÄÀÏÀ» º¸À¯Çϵµ·Ï ÁöÁ¤µÈ Æú´õÀÇ Àüü °æ·Î¿Í À̸§ (¿¹, C:\DOCUME~1\UserName\LOCALS~1\Temp). (¼ø¼­´ë·Î) ´ÙÀ½ À§Ä¡ Áß Çϳª¿¡¼­ ¿­¶÷ÇÕ´Ï´Ù: 1) ȯ°æ º¯¼ö TMP, TEMP, ¶Ç´Â USERPROFILE; 2) Windows µð·ºÅ丮.
A_OSType½ÇÇà ÁßÀÎ ¿î¿µ üÁ¦ÀÇ Á¾·ùÀÔ´Ï´Ù. AutoHotkey 1.1Àº ¿ÀÁ÷ NT-±â¹ÝÀÇ ¿î¿µ üÁ¦¸¸ Áö¿øÇϱ⠶§¹®¿¡, ÀÌ °ªÀº ¾ðÁ¦³ª WIN32_NTÀÔ´Ï´Ù. ¿¹Àü ¹öÀüÀº Windows 95/98/ME¿¡¼­ ½ÇÇàµÉ ¶§ WIN32_WINDOWS¸¦ µ¹·ÁÁÝ´Ï´Ù.
A_OSVersion

´ÙÀ½ ¹®ÀÚ¿­ Áß ÇϳªÀÔ´Ï´Ù: WIN_7 [requires AHK_L 42+], WIN_8 [requires v1.1.08+], WIN_8.1 [requires v1.1.15+], WIN_VISTA, WIN_2003, WIN_XP, WIN_2000.

+

+ ȣȯ¼º ¼³Á¤À» ¿ÀÅäÇÖÅ° ½ÇÇàÆÄÀÏÀ̳ª ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®ÀÇ Æ¯¼º¿¡ Àû¿ëÇÏ¸é ¿î¿µÃ¼Á¦°¡ ´Ù¸¥ ¹öÀü ¹øÈ£¸¦ µ¹·ÁÁÝ´Ï´Ù. ÀÌ°ÍÀÌ A_OSVersion¿¡ ¹Ý¿µµË´Ï´Ù.

+

[v1.1.20+]: OS ¹öÀüÀ» À§¿¡ ¾ð±ÞÇÑ ¸®½ºÆ®¿¡¼­ ãÀ» ¼ö ¾øÀ¸¸é, ¹®ÀÚ¿­ÀÌ "major.minor.build" ÇüÅ·Π¹ÝȯµË´Ï´Ù. ¿¹¸¦ µé¾î 10 TP´Â 6.4.9841ÀÔ´Ï´Ù.

+
; ÀÌ ¿¹Á¦´Â Æó±âµÇ¾ú½À´Ï´Ù. ÀÌ ¿î¿µÃ¼Á¦´Â ´õ ÀÌ»ó Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.
+if A_OSVersion in WIN_NT4,WIN_95,WIN_98,WIN_ME  ; ÁÖÀÇ: ½°Ç¥ µÑ·¹¿¡ ½ºÆäÀ̽º°¡ ¾øÀ½¿¡ ÁÖÀÇÇÕ´Ï´Ù.
+{
+    MsgBox ÀÌ ½ºÅ©¸³Æ®´Â Windows 2000/XP ÀÌ»óÀ» ¿ä±¸ÇÕ´Ï´Ù.
+    ExitApp
+}
+
A_Is64bitOS[v1.1.08+]: ¿î¿µÃ¼Á¦°¡ 64ºñÆ®À̸é 1 (true) ¶Ç´Â ¿î¿µÃ¼Á¦°¡ 32ºñÆ®À̸é 0 (false)À» ´ã°í ÀÖ½À´Ï´Ù.
A_PtrSize[AHK_L 42+]: Æ÷ÀÎÅÍÀÇ Å©±â¸¦ ¹ÙÀÌÆ® ´ÜÀ§·Î ´ã°í ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº 4 (32-bit) ¶Ç´Â 8 (64-bit)ÀÔ´Ï´Ù. ¾î¶² À¯ÇüÀÇ ½ÇÇàÆÄÀÏÀ» (EXE) ½ºÅ©¸³Æ®°¡ ½ÇÇàÇϴ°¡¿¡ µû¶ó ´Ù¸¨´Ï´Ù.
A_Language½Ã½ºÅÛÀÇ ±âº» ¾ð¾îÀÔ´Ï´Ù ´ÙÀ½ 4-ÀÚ¸® ÄÚµåÁß ÇϳªÀÔ´Ï´Ù.
A_ComputerName³×Æ®¿öÅ©¿¡ º¸¿©Áö´Â ÄÄÇ»ÅÍ À̸§ÀÔ´Ï´Ù.
A_UserNameÀÌ ½ºÅ©¸³Æ®¸¦ ±âµ¿ÇÑ »ç¿ëÀÚÀÇ ·Î±×¿Â À̸§ÀÔ´Ï´Ù.
A_WinDirÀ©µµ¿ìÁî µð·ºÅ丮ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î: C:\Windows
A_ProgramFiles
+ ¶Ç´Â ProgramFiles
ÇÁ·Î±×·¥ ÆÄÀÏ µð·ºÅ丮ÀÔ´Ï´Ù (¿¹, C:\Program Files). v1.0.43.08+¿¡¼­, A_ prefix¸¦ »ý·«Çصµ °¡´ÉÇÕ´Ï´Ù. ±×·¯¸é ½±°Ô #NoEnvÀÌÀüÇÏ´Â µ¥ µµ¿òÀÌ µË´Ï´Ù.
A_AppData
+ [v1.0.43.09+]
ÇöÀç »ç¿ëÀÚ ¾îÇø®ÄÉÀ̼ÇÀÇ Æ¯Á¤ÇÑ µ¥ÀÌÅ͸¦ ´ã°í ÀÖ´Â Æú´õÀÇ Àüü °æ·Î¿Í À̸§ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î: C:\Documents and Settings\Username\Application Data
A_AppDataCommon
+ [v1.0.43.09+]
¸ðµç-»ç¿ëÀÚ ¾îÇø®ÄÉÀ̼ÇÀÇ Æ¯Á¤ÇÑ µ¥ÀÌÅ͸¦ ´ã°í ÀÖ´Â Æú´õÀÇ Àüü °æ·Î¿Í À̸§ÀÔ´Ï´Ù.
A_DesktopÇöÀç »ç¿ëÀÚ µ¥½ºÅ©Å¾ ÆÄÀÏÀ» ´ã°í ÀÖ´Â Æú´õÀÇ Àüü °æ·Î¿Í À̸§ÀÔ´Ï´Ù.
A_DesktopCommon¸ðµç-»ç¿ëÀÚ µ¥½ºÅ©Å¾ ÆÄÀÏÀ» ´ã°í ÀÖ´Â Æú´õÀÇ Àüü °æ·Î¿Í À̸§ÀÔ´Ï´Ù.
A_StartMenuÇöÀç »ç¿ëÀÚÀÌ ½ÃÀÛ ¸Þ´º Æú´õÀÇ Àüü °æ·Î¿Í À̸§ÀÔ´Ï´Ù.
A_StartMenuCommon¸ðµç-»ç¿ëÀÚ ½ÃÀÛ ¸Þ´º Æú´õÀÇ Àüü °æ·Î¿Í À̸§ÀÔ´Ï´Ù.
A_ProgramsÇöÀç »ç¿ëÀÚ ½ÃÀÛ ¸Þ´º¿¡ ÀÖ´Â ÇÁ·Î±×·¥ Æú´õÀÇ Àüü °æ·Î¿Í À̸§ÀÔ´Ï´Ù.
A_ProgramsCommon¸ðµç »ç¿ëÀÚ ½ÃÀÛ ¸Þ´º¿¡ ÀÖ´Â ÇÁ·Î±×·¥ Æú´õÀÇ Àüü °æ·Î¿Í À̸§ÀÔ´Ï´Ù.
A_StartupÇöÀç »ç¿ëÀÚ ½ÃÀÛ ¸Þ´º¿¡ ÀÖ´Â ½ÃÀÛ Æú´õÀÇ Àüü °æ·Î¿Í À̸§ÀÔ´Ï´Ù.
A_StartupCommon¸ðµç-»ç¿ëÀÚ ½ÃÀÛ ¸Þ´º¿¡ ÀÖ´Â ½ÃÀÛ Æú´õÀÇ Àüü °æ·Î¿Í À̸§ÀÔ´Ï´Ù.
A_MyDocumentsÇöÀç »ç¿ëÀÚÀÇ "³ªÀÇ ¹®¼­" Æú´õÀÇ Àüü °æ·Î¿Í À̸§ÀÔ´Ï´Ù. ´ëºÎºÐÀÇ ºñ½ÁÇÑ º¯¼ö¿Í ´Ù¸£°Ô, ÀÌ Æú´õ°¡ µå¶óÀ̺êÀÇ ·çÆ®À̸é, ¸¶Áö¸· ¿ª»ç¼±À» Æ÷ÇÔÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, M:\°¡ ¾Æ´Ï¶ó M:ÀÌ µË´Ï´Ù.
A_IsAdmin

ÇöÀç »ç¿ëÀÚ°¡ °ü¸®ÀÚ ±ÇÇÑÀÌ ÀÖÀ¸¸é, ÀÌ º¯¼ö´Â 1, ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ´ã±é´Ï´Ù.

+

À©µµ¿ìÁî ºñ½ºÅ¸ ÀÌÈÄ¿¡¼­ ¾î¶² ½ºÅ©¸³Æ®´Â ÀûÀýÇÏ°Ô ±â´ÉÀ» ¹ßÈÖÇϱâ À§ÇØ °ü¸®ÀÚ ±ÇÇÑÀ» ¿ä±¸ÇÕ´Ï´Ù (¿¹¸¦ µé¾î ÇÁ·Ô½º³ª â°ú »óÈ£ÀÛ¿ëÇÏ´Â ½ºÅ©¸³Æ®´Â °ü¸®ÀÚ ±ÇÇÑÀ¸·Î ½ÇÇàµË´Ï´Ù). ÀÌ·¸°Ô ÇÏ·Á¸é, ´ÙÀ½À» ½ºÅ©¸³Æ®ÀÇ »ó´Ü¿¡ Ãß°¡ÇϽʽÿÀ:

+
if not A_IsAdmin
+{
+   Run *RunAs "%A_ScriptFullPath%"  ; Requires v1.0.92.01+
+   ExitApp
+}

A_ScreenWidth
+ A_ScreenHeight

±âº» ¸ð´ÏÅÍÀÇ ³Êºñ¿Í ³ôÀÌ, Çȼ¿ ´ÜÀ§ (¿¹, 1024 ±×¸®°í 768).

+

´ÙÁß ¸ð´ÏÅÍ ½Ã½ºÅÛ¿¡¼­ ´Ù¸¥ ¸ð´ÏÅÍÀÇ Å©±â¸¦ ¾Ë·Á¸é, SysGet¸¦ »ç¿ëÇÕ´Ï´Ù.

+

´ë½Å¿¡ (´ÙÁß ¸ð´ÏÅÍ¿¡ °ÉÃÄ ÀÖ´õ¶óµµ) Àüü µ¥½ºÅ©Å¾ÀÇ ³Êºñ¿Í ³ôÀ̸¦ ¾Ë·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ »ç¿ëÇÕ´Ï´Ù:

+
+SysGet, VirtualWidth, 78
+SysGet, VirtualHeight, 79
+
+

°Ô´Ù°¡, SysGetÀ» »ç¿ëÇÏ¸é ¸ð´ÏÀÇ ÀÛ¾÷ ¿µ¿ªÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ¸ð´ÏÅÍÀÇ Àüü ¿µ¿ªº¸´Ù ´õ ÀÛÀ» ¼ö ÀÖ½À´Ï´Ù. ¿Ö³ÄÇϸé ŽºÅ©¹Ù¿Í ±âŸ µî·ÏµÈ µ¥½ºÅ©Å¾ Åø¹Ù°¡ ¹èÁ¦µÇ¾î Àֱ⠶§¹®ÀÔ´Ï´Ù.

A_ScreenDPI [v1.1.11+]È­¸é ³Êºñ¸¦ µû¶ó ³í¸®Àû ÀÎÄ¡´ç Çȼ¿ÀÇ °³¼öÀÔ´Ï´Ù. ´ÙÁß ¸ð´ÏÅÍ ½Ã½ºÅÛ¿¡¼­, ÀÌ °ªÀº ¸ðµç ¸ð´ÏÅÍ¿¡ ´ëÇÏ¿© °°½À´Ï´Ù. ´ëºÎºÐÀÇ ½Ã½ºÅÛ¿¡ ÀÌ °ªÀº 96ÀÔ´Ï´Ù; ±×·¸Áö¸¸ ½Ã½ºÅÛÀÇ ÅؽºÆ® Å©±â(DPI) ¼³Á¤¿¡ µû¶ó ´Ù¸¨´Ï´Ù. ¶Ç Gui -DPIScaleÀ» ÂüÁ¶ÇϽʽÿÀ.
A_IPAddress1 through 4ÄÄÇ»ÅÍ¿¡¼­ ³×Æ®¿öÅ© ¾î´ðÅÍÀÇ IP ÁÖ¼ÒÀÇ ¾ÕÂÊ 4 ÀÚ¸®ÀÔ´Ï´Ù.
+

±âŸ

+ + + + + + + + + + + + + + + + + + + + + + + + + +
A_Cursor

ÇöÀç È­¸é¿¡ º¸¿©Áö´Â ¸¶¿ì½º Ä¿¼­ÀÇ À¯ÇüÀÔ´Ï´Ù. ´ÙÀ½ ´Ü¾î Áß ÇϳªÀÔ´Ï´Ù:
AppStarting, Arrow, Cross, Help, IBeam, Icon, No, Size, SizeAll, SizeNESW, SizeNS, SizeNWSE, SizeWE, UpArrow, Wait, Unknown. +

+ Size-À¯ÇüÀÇ Ä¿¼­¿¡ »ç¿ëµÈ ¾àÀÚ´Â ¹æÀ§¸¦ ³ªÅ¸³À´Ï´Ù. ¿¹, NESW = NorthEast+SouthWest. + ¼Õ-¸ð¾çÀÇ Ä¿¼­´Â (Âï±â¿Í Àâ±â)´Â UnknownÀ¸·Î ºÐ·ùµÇ¾î ÀÖ½À´Ï´Ù.

A_CaretX
+ A_CaretY

ÇöÀç ij·µ(ÅؽºÆ® »ðÀÔ À§Ä¡)ÀÇ X¿Í Y ÁÂÇ¥ÀÔ´Ï´Ù. ÀÌ ÁÂÇ¥´Â È°¼º â¿¡ »ó´ëÀûÀÔ´Ï´Ù. CoordMode¸¦ »ç¿ëÇÏ¿© Àüü È­¸é¿¡ ´ëÇÏ¿© »ó´ëÀûÀ¸·Î ¸¸µéÁö ¾Ê´Â ÇÑ ¸»ÀÔ´Ï´Ù. È°¼º âÀÌ ¾ø°Å³ª ij·µ À§Ä¡¸¦ °áÁ¤ÇÒ ¼ö ¾øÀ¸¸é, ÀÌ º¯¼ö´Â ºñ¾î ÀÖ½À´Ï´Ù.

+

´ÙÀ½ ½ºÅ©¸³Æ®·Î ij·µÀ» À̵¿½ÃÄѼ­ ±×ÀÇ ÇöÀç À§Ä¡°¡ ÀÚµ¿-°»½Å ÅøÆÁ¿¡ ³ªÅ¸³ª´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. ¾î¶² âÀº (¿¹, MS Word) ½ÇÁ¦ À§Ä¡¿¡ »ó°ü ¾øÀÌ °°Àº ij·µ À§Ä¡¸¦ º¸°íÇÕ´Ï´Ù.

+
+#Persistent
+SetTimer, WatchCaret, 100
+return
+WatchCaret:
+  ToolTip, X%A_CaretX% Y%A_CaretY%, A_CaretX, A_CaretY - 20
+return
+
+
Clipboard¿î¿µÃ¼Á¦ÀÇ Å¬¸³º¸µå¿¡ ÀÖ´Â ³»¿ëÀÔ´Ï´Ù. ÀÐ°í ¾µ ¼ö ÀÖ½À´Ï´Ù. Ŭ¸³º¸µå ¼½¼ÇÀ» ÂüÁ¶ÇϽʽÿÀ.
ClipboardAllŬ¸³º¸µåÀÇ Àüü ³»¿ëÀÔ´Ï´Ù (Æ÷¸Ë°ú ÅؽºÆ® °°Àº). ClipboardAllÀ» ÂüÁ¶ÇϽʽÿÀ.
ErrorLevelErrorLevelÀ» ÂüÁ¶ÇϽʽÿÀ.
A_LastErrorOSÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú ¶Ç´Â COM °´Ã¼ ¿äûÀÇ ÃÖÁ¾ °á°ú. ÀÚ¼¼ÇÑ °ÍÀº DllCall() ±×¸®°í Run/RunWait¸¦ ÂüÁ¶ÇÕ´Ï´Ù.
+

ȸµ¹ÀÌ

+ + + + + + + + + + + + + + + + + + + + + +
A_IndexÇöÀç ȸµ¹ÀÌÀÇ ¹Ýº¹ Ƚ¼öÀÔ´Ï´Ù (64-ºñÆ® Á¤¼ö). ¿¹¸¦ µé¾î, ½ºÅ©¸³Æ®°¡ ȸµ¹ÀÌÀÇ ¸öü¸¦ óÀ½ ½ÇÇàÇϸé, ÀÌ º¯¼ö´Â ¼ýÀÚ 1ÀÌ ´ã±é´Ï´Ù. ´õ ÀÚ¼¼ÇÑ °ÍÀº ȸµ¹ÀÌ ¶Ç´Â While-ȸµ¹À̸¦ ÂüÁ¶ÇϽʽÿÀ.
A_LoopFileName, µîµî.ÀÌ º¯¼ö¿Í ±âŸ °ü·Ã º¯¼öµéÀº ÆÄÀÏ-ȸµ¹ÀÌ ¾È¿¡¼­¸¸ À¯È¿ÇÕ´Ï´Ù.
A_LoopRegName, µîµî.ÀÌ º¯¼ö¿Í ±âŸ °ü·Ã º¯¼öµéÀº ·¹Áö½ºÆ®¸®-ȸµ¹ÀÌ ¾È¿¡¼­¸¸ À¯È¿ÇÕ´Ï´Ù.
A_LoopReadLineÆÄÀÏ-Àбâ ȸµ¹À̸¦ ÂüÁ¶ÇϽʽÿÀ.
A_LoopFieldȸµ¹ÀÌ ÆĽÌÇϱ⸦ ÂüÁ¶ÇϽʽÿÀ.
+ +

ȯ°æ º¯¼ö ´ë. "º¸Åë" º¯¼ö

+

+ȯ°æ º¯¼ö´Â ¿î¿µ üÁ¦°¡ °ü¸®ÇÕ´Ï´Ù. ¸í·É¾î ÇÁ·ÒÇÁÆ®¿¡¼­ SETÀ» ŸÀÚÇÏ°í ¿£Å͸¦ Ä¡¸é ±× ¸ñ·ÏÀ» º¸½Ç ¼ö ÀÖ½À´Ï´Ù.

+

½ºÅ©¸³Æ®´Â EnvSetÀ¸·Î »õ ȯ°æ º¯¼ö¸¦ ¸¸µé°Å³ª ±âÁ¸ÀÇ º¯¼ö ³»¿ëÀ» ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ±×·¸°Ô Ãß°¡ÇÏ°í º¯°æÇÏ´Â °ÍÀº »çÀûÀÔ´Ï´Ù; ³ª¸ÓÁö ½Ã½ºÅÛ¿¡ º¸ÀÌÁö ¾Ê½À´Ï´Ù. ÇÑ °¡Áö ¿¹¿Ü´Â ½ºÅ©¸³Æ®°¡ RunÀ̳ª RunWait¸¦ »ç¿ëÇÏ¿© ÇÁ·Î±×·¥À» (¶Ç´Ù¸¥ ½ºÅ©¸³Æ®) ±âµ¿½ÃÄ×À» ¶§ÀÔ´Ï´Ù: ±×·± ÇÁ·Î±×·¥Àº ºÎ¸ð ½ºÅ©¸³Æ®ÀÇ È¯°æ º¯¼ö »çº»À» »ó¼Ó¹Þ½À´Ï´Ù. »çÀûÀΠȯ°æ º¯¼öµµ ´ç¿¬È÷ Æ÷ÇԵ˴ϴÙ.

+

v1.0.43.08+¿¡¼­, ¸ðµç »õ ½ºÅ©¸³Æ®´Â Path¿Í °°Àº ȯ°æ º¯¼ö¸¦ ´ÙÀ½°ú °°ÀÌ ¿­¶÷Çϱ⸦ ±ÇÀåÇÕ´Ï´Ù:

+
EnvGet, OutputVar, Path  ; For explanation, see #NoEnv.
+

º¯¼öÀÇ °¡¿ë¼º°ú ¸Þ¸ð¸®

+
    +
  • °¢ º¯¼ö´Â ÃÖ´ë 64 MB ÅؽºÆ®¸¦ ´ãÀ» ¼ö ÀÖ½À´Ï´Ù (ÀÌ Á¦ÇÑÀº #MaxMemÀ» Áõ°¡½Ãų ¼ö ÀÖ½À´Ï´Ù).
  • +
  • º¯¼ö¿¡ ÇöÀç ³»¿ëº¸´Ù ´õ ±ä »õ ¹®ÀÚ¿­ÀÌ ÁÖ¾îÁö¸é, Ãß°¡ ½Ã½ºÅÛ ¸Þ¸ð¸®°¡ ÀÚµ¿À¸·Î ÇÒ´çµË´Ï´Ù.
  • +
  • °Å´ëÇÑ ¸Þ¸ð¸®°¡ Á¡À¯ÇÑ ¸Þ¸ð¸®´Â ºñ¿ö ¹ö¸®¸é ÇØÁ¦µË´Ï´Ù. ¿¹, var := "".
  • +
  • ½ºÅ©¸³Æ®¿¡ ¾ó¸¶³ª ¸¹Àº º¯¼ö¸¦ »ý¼ºÇÒ ¼ö ÀÖ´ÂÁö´Â Á¦ÇÑÀÌ ¾ø½À´Ï´Ù. Àû¾îµµ ¼ö ¹é¸¸°³ÀÇ º¯¼ö¸¦ ¼öÇ༺´ÉÀÇ ÀúÇÏ ¾øÀÌ Áö¿øÇϵµ·Ï ¼³°èµÇ¾î ÀÖ½À´Ï´Ù.
  • +
  • ¼ýÄ¡ ÀÔ·ÂÀ» ¹Þ´Â ¸í·É¾î, ÇÔ¼ö, ±×¸®°í Ç¥Çö½ÄÀº ÀϹÝÀûÀ¸·Î ºÎµ¿ ¼Ò¼öÁ¡ ¼ö¿¡ ´ëÇÏ¿© 15 ÀÚ¸®¼öÀÇ Á¤¹Ðµµ¸¦ Áö¿øÇÕ´Ï´Ù. Á¤¼ö¿¡ ´ëÇؼ­´Â, 64-ºñÆ® ºÎÈ£ÀÖ´Â °ªÀ» Áö¿øÇÕ´Ï´Ù. ±× ¹üÀ§´Â -9223372036854775808 (-0x8000000000000000)ºÎÅÍ 9223372036854775807 (0x7FFFFFFFFFFFFFFF)±îÁöÀÔ´Ï´Ù. ÀÌ ¹üÀ§¸¦ ¹þ¾î³ª´Â Á¤¼ö »ó¼ö´Â Áö¿øÇÏÁö ¾ÊÀ¸¸ç ÀÏ°ü¼º ¾ø´Â °á°ú¸¦ »êÃâÇÕ´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, Á¤¼ö »ê¼ú ¿¬»êÀº ºù µ¹¾Æ ¹ü¶÷ÇØ ¹ö¸³´Ï´Ù (¿¹, 0x7FFFFFFFFFFFFFFF + 1 = -0x8000000000000000).
  • +
+ + diff --git a/src/docs/Welcome.htm b/src/docs/Welcome.htm new file mode 100644 index 0000000..6ee2925 --- /dev/null +++ b/src/docs/Welcome.htm @@ -0,0 +1,45 @@ + + + + + + Welcome to AutoHotkey + + + + + + + + +
+

ȯ¿µÇÕ´Ï´Ù...

+ +

½ÃÀÛÇϱâ

+

AutoHotkey·Î ¹º°¡¸¦ ÇÒ ¼ö ÀÖÀ¸·Á¸é, ¸ÕÀú ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇØ ¹«¾ùÀ» ÇÒÁö ¾Ë·ÁÁÖ¾î¾ß ÇÕ´Ï´Ù.
+ ÀÚ½À¼­¸¦ Àаųª ¾Æ´Ï¸é °ðÀå ¶Ù¾î µé¾î°¡¸é ±× ¹æ¹ýÀ» ¹è¿ï ¼ö ÀÖ½À´Ï´Ù.

+

µµ¿òÀ» ¾ò°Å³ª ¸¹Àº À¯¿ëÇÑ ½ºÅ©¸³Æ®¸¦ ¹ß°ßÇÒ ¼ö ÀÖ½À´Ï´Ù: ¿ì¸®ÀÇ Åä·Ð Æ÷·³¿¡ ¿À½Ê½Ã¿À.

+ +

¿Ö ³»°¡ ÀÌ ÆäÀÌÁö¸¦ º¸°í ÀÖ³ª¿ä?

+
+

¾î´À ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒÁö ¾Ë·ÁÁÖÁö ¾Ê°í ¿ÀÅäÇÖÅ°¸¦ ½ÇÇàÇߴµ¥ ±âº» À§Ä¡¿¡¼­ ½ºÅ©¸³Æ®¸¦ ãÀ» ¼ö ¾ø¾ú±â ¶§¹®ÀÔ´Ï´Ù.

+
+ +
+ + + \ No newline at end of file diff --git a/src/docs/commands/AutoTrim.htm b/src/docs/commands/AutoTrim.htm new file mode 100644 index 0000000..fa7d347 --- /dev/null +++ b/src/docs/commands/AutoTrim.htm @@ -0,0 +1,53 @@ + + + + +AutoTrim + + + + + + + +

AutoTrim

+ +

Var1 = %Var2% ¼­¼ú¹®¿¡¼­ Var2ÀÇ ¾Õ µÚ·ÎºÎÅÍ ½ºÆäÀ̽º¿Í ÅÇ ¹®ÀÚ¸¦ °È¾î³¾Áö ¸»Áö °áÁ¤ÇÕ´Ï´Ù.

+ +
AutoTrim, On|Off
+

¸Å°³º¯¼ö

+
+ +
On|Off
+

On: Var1 = %Var2%¿Í °°Àº ¼­¼ú¹®¿¡¼­, ÅÇ°ú ½ºÆäÀ̽º°¡ Var2ÀÇ ¾Õ µÚ¿¡ ÀÖÀ¸¸é Var1À¸·ÎºÎÅÍ °È¾î³À´Ï´Ù. ÀÌ°ÍÀÌ ±âº»°ªÀÔ´Ï´Ù.

+

Off: ÅÇ°ú ½ºÆäÀ̽º¸¦ °È¾î³»Áö ¾Ê½À´Ï´Ù.

+

+ ±âÈ£ ±×´ë·ÎÀÇ ÅÇ°ú ½ºÆäÀ̽º´Â ÀÌ ¼³Á¤¿¡ »ó°ü¾øÀÌ »ý·«µË´Ï´Ù. v1.1.06ÀÌÀü¿¡´Â, ¿©±â¿¡ `t ¶Ç´Â ±âŸ ÇÇ½ÅµÈ ±âÈ£ ±×´ë·ÎÀÇ ½ºÆäÀ̽º³ª ÅÇÀÌ Æ÷ÇԵǾú½À´Ï´Ù. ¿¹¸¦ µé¾î AutoTrimÀÌ OffÀÏ ¶§, ¼­¼ú¹® Var = `t´Â v1.1.06¿¡¼­´Â ÅÇ ¹®ÀÚ¸¦ ÇÒ´çÇÏ°í ±× ÀÌÀü ¹öÀüÀº ºó ¹®ÀÚ¿­ÀÌ ÇÒ´çµË´Ï´Ù.

+ +
+ +

³íÆò

+

+ÀÌ ¸í·É¾î°¡ ½ºÅ©¸³Æ®¿¡ ¾øÀ¸¸é, ¼³Á¤Àº ONÀÌ ±âº»°ªÀÔ´Ï´Ù.

+

+³»Àå º¯¼ö A_AutoTrim¿¡´Â ÇöÀç ¼³Á¤ÀÌ ´ã°Ü ÀÖ½À´Ï´Ù (On ¶Ç´Â Off).

+

+³»Àå º¯¼ö A_Space ±×¸®°í A_Tab¿¡´Â ´ÜÀÏ ½ºÆäÀ̽º¿Í ´ÜÀÏ ÅÇ ¹®ÀÚ°¡ °¢°¢ µé¾î ÀÖ½À´Ï´Ù.

+

+AutoTrimÀº Var := " string "¿Í °°Àº Ç¥Çö½Ä ÇÒ´ç¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù. ´Ù¸¥ ¸»·Î Çϸé, ±× °æ¿ì ¼±µÎ ÈĹÌÀÇ ½ºÆäÀ̽º¿Í ÅÇÀº ¾ðÁ¦³ª ±×´ë·Î À¯ÁöµË´Ï´Ù.

+

+»õ·Î ±âµ¿µÈ ¾²·¹µå¸¶´Ù (ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾ) ÀÌ ¸í·É¾î¿¡ ´ëÇÑ ±âº»°ªÀ» °¡Áö°í »õ·Î ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ¼³Á¤Àº ÀÌ ¸í·É¾î¸¦ ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡ (½ºÅ©¸³Æ®ÀÇ »ó´Ü ºÎºÐ) »ç¿ëÇÏ¸é ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+SetEnv

+ +

¿¹Á¦

+
AutoTrim, off
+NewVar1 = %OldVar%  ; OldVar¿¡ ¼±µÎ¿Í ÈĹ̿¡ ½ºÆäÀ̽º°¡ µé¾î ÀÖÀ¸¸é, NewVarµµ ¿ª½Ã ±×´ë·Î °¡Áý´Ï´Ù.
+NewVar2 = %A_Space%  ; AutoTrimÀÌ ²¨Á® ÀÖÀ¸¸é, ´ÜÀÏ ½ºÆäÀ̽º¸¦ ÀÌ·± ½ÄÀ¸·Î ÇÒ´çÇÒ ¼ö ÀÖ½À´Ï´Ù.
+
+Var1 := "`t" . Var2 . " "  ; Ç¥Çö½ÄÀ̱⠶§¹®¿¡ AutoTrimÀÇ ¼³Á¤Àº ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù.
+ + + diff --git a/src/docs/commands/Block.htm b/src/docs/commands/Block.htm new file mode 100644 index 0000000..8d62b4a --- /dev/null +++ b/src/docs/commands/Block.htm @@ -0,0 +1,84 @@ + + + + +Blocks + + + + + + + +

{...} (block)

+ +

ÇÑ ½ÖÀÇ È°°ýÈ£´Â ºí·ÏÀ» ¶æÇÕ´Ï´Ù. ºí·ÏÀº ÀüÇüÀûÀ¸·Î ÇÔ¼ö, Else, Loop, While-loop, ±×¸®°í IF-¸í·É¾î¿Í ÇÔ²² »ç¿ëµË´Ï´Ù.

+ +
+{
+0°³ ÀÌ»óÀÇ ¸í·É¾î ³ª¿­
+}
+ +

³íÆò

+

+ºí·ÏÀº µÎ °³ ÀÌ»óÀÇ ¸í·É¾îµéÀ» Çϳª·Î ¹­´Â µ¥ »ç¿ëµË´Ï´Ù. ¶Ç ¾î´À IF¿¡ ELSE°¡ ¼ÓÇÏ´ÂÁö ¹Ù²Ù´Â µ¥¿¡µµ »ç¿ëµË´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ºí·ÏÀº ELSE¸¦ µÎ ¹ø°°¡ ¾Æ´Ï¶ó ù ¹ø° IF¿¡ ¼ÓÇÏ°Ô ¸¸µì´Ï´Ù:

+
if var1 = 1
+{
+    if var2 = abc
+        sleep, 1
+}
+else
+    return
+

+ºí·ÏÀº ¾Æ¹«µ¥³ª »ç¿ëÇÒ ¼ö ÀÖÁö¸¸, ÇöÀç´Â ¿ÀÁ÷ functions, Else, Loop, ¶Ç´Â IF-À¯ÇüÀÇ ¸í·É¾îµé (¿¹¸¦ µé¾î IfEqual ¶Ç´Â IfWinExist)°ú »ç¿ëµÉ ¶§¸¸ Àǹ̰¡ ÀÖ½À´Ï´Ù.

+

+¸¸¾à IF, ELSE, Loop, While-ȸµ¹ÀÌ, ¶Ç´Â For-ȸµ¹ÀÌ¿¡ ¸í·É¾î°¡ Çϳª ¹Û¿¡ ¾ø´Ù¸é, ±× ¸í·É¾î´Â ºí·Ï¿¡ ½Ò ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ±×·¸Áö¸¸, ½ºÅ©¸³Æ®ÀÇ °¡µ¶¼ºÀ» Çâ»ó½ÃÅ°°í À¯Áö°ü¸®¼ºÀ» ¿ëÀÌÇÏ°Ô Çϱâ À§ÇØ ±×·¡¾ß ÇÒ °æ¿ì°¡ ÀÖ½À´Ï´Ù.

+

+ºí·ÏÀº ºñ¾î À־ µË´Ï´Ù (¸í·É¾î°¡ ¾øÀ½). ÀÌ °æ¿ì´Â ºí·Ï ÀÚü¸¦ Á¦°ÅÇÏÁö ¾Ê°í ºí·ÏÀÇ ³»¿ëÀ» ÁÖ¼® ó¸®ÇÏ°í ½ÍÀ» ¶§ À¯¿ëÇÕ´Ï´Ù.

+

+One True Brace (OTB, K&R ½ºÅ¸ÀÏ): OTB ½ºÅ¸ÀÏÀ» ¼±ÅÃÀûÀ¸·Î ´ÙÀ½°ú °°Àº °æ¿ì¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù: if-¼­¼ú¹®ÀÇ Ç¥Çö½Ä, else Å°¿öµå, while-ȸµ¹ÀÌ, For-ȸµ¹ÀÌ, º¸Åë ȸµ¹ÀÌ, ÇÔ¼ö Á¤ÀÇ, Try, Catch, ±×¸®°í Finally. ÀÌ ½ºÅ¸ÀÏÀº ºí·ÏÀÇ ½ÃÀÛ È°°ýÈ£¸¦ ºí·ÏÀÇ Á¦¾î ¼­¼ú¹®°ú °°Àº ÁÙ¿¡ ¹èÄ¡ÇÕ´Ï´Ù. ±× ÁÙ ¾Æ·¡ µû·Î µÎÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
if (x < y) {
+    ...
+} else {
+    ...
+}
+While x < y {
+    ...
+}
+For k,v in obj {
+    ...
+}
+Loop %RepeatCount% {
+    ...
+}
+MyFunction(x, y) {
+    ...
+}
+Try {
+    ...
+} Catch e {
+    ...
+} Finally {
+    ....
+}
+

ºñ½ÁÇÏ°Ô, ¸í·É¾î ¶Ç´Â ±âŸ Á¶Ä¡´Â È°°ýÈ£ ¿ìÃø¿¡ Á¸ÀçÇÕ´Ï´Ù (´Ü, One True Brace ½ºÅ¸ÀÏÀÇ ¿©´Â °ýÈ£´Â Á¦¿ÜÇÕ´Ï´Ù). ¿¹¸¦ µé¾î:

+
if x = 1
+{ MsgBox ÀÌ ÁÙÀº ¿©´Â °ýÈ£ÀÇ ¿À¸¥ÂÊ¿¡ ³ªÅ¸³³´Ï´Ù. IF-¼­¼ú¹®ÀÌ ÂüÀÏ ¶§¸¶´Ù ½ÇÇàµË´Ï´Ù.
+    MsgBox ÀÌ ÁÙÀº ´ÙÀ½ ÁÙÀÔ´Ï´Ù.
+} MsgBox ÀÌ ÁÙÀº ´Ý´Â °ýÈ£ÀÇ ¿À¸¥ÂÊ¿¡ ³ªÅ¸³³´Ï´Ù. ¹«Á¶°Ç ½ÇÇàµË´Ï´Ù.
+ +

°ü·Ã Ç׸ñ

+

+Functions, While-ȸµ¹ÀÌ, Loop, Else, If, If(Expression)

+ +

¿¹Á¦

+
if x = 1
+{
+    MsgBox, test1
+    Sleep, 5
+}
+else
+    MsgBox, test2
+ + + diff --git a/src/docs/commands/BlockInput.htm b/src/docs/commands/BlockInput.htm new file mode 100644 index 0000000..12fa4a6 --- /dev/null +++ b/src/docs/commands/BlockInput.htm @@ -0,0 +1,72 @@ + + + + +BlockInput + + + + + + + +

BlockInput

+ +

»ç¿ëÀÚ°¡ ÄÄÇ»ÅÍ¿Í Å°º¸µå¿Í ¸¶¿ì½º¸¦ ÅëÇÏ¿© »óÈ£ÀÛ¿ë ÇÒÁö ¸»Áö ¿©ºÎ¸¦ ÄÑ°í ²ü´Ï´Ù.

+ +
BlockInput, Mode
+

¸Å°³º¯¼ö

+
+ +
Mode
+

Mode 1: ´ÙÀ½ ´Ü¾î Áß Çϳª:

+

On: »ç¿ëÀÚ°¡ ÄÄÇ»ÅÍ¿Í »óÈ£ÀÛ¿ëÇÏÁö ¸øÇÕ´Ï´Ù (¸¶¿ì½º¿Í Å°º¸µå ÀÔ·ÂÀº È¿°ú°¡ ¾ø½À´Ï´Ù).

+

Off: ÀÔ·ÂÀ» °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù.

+

Mode 2: ÀÌ ¸ðµå´Â ´Ù¸¥ µÎ °³¿Í µ¶¸³ÀûÀ¸·Î ÀÛµ¿ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, BlockInput OnÀ̸é BlockInput OffÀÌ »ç¿ëµÉ ¶§±îÁö ÀÔ·ÂÀ» ¸·½À´Ï´Ù. ¾Æ·¡ÀÇ ¿É¼ÇÀÌ È¿°ú¸¦ ¹ßÈÖÇصµ »ó°ü¾ø½À´Ï´Ù.

+

+ Send: Send ¶Ç´Â SendRaw°¡ ÁøÇà ÁßÀÎ µ¿¾È »ç¿ëÀÚÀÇ Å°º¸µå¿Í ¸¶¿ì½º ÀÔ·ÂÀ» ¹«½ÃÇÕ´Ï´Ù (ÀüÅëÀûÀÎ SendEvent ¸ðµå¸¸ Çã¿ëÇÕ´Ï´Ù). »ç¿ëÀÚÀÇ Å° ÀÔ·Â ¶§¹®¿¡ Èä³»³½ Å°´­¸²ÀÇ È帧ÀÌ ¹æÇعÞÁö ¾Êµµ·Ï ¸·½À´Ï´Ù. Send°¡ ³¡³¯ ¶§, ÀÔ·ÂÀÌ ´Ù½Ã °¡´ÉÇØÁý´Ï´Ù (¾Õ¿¡¼­ BlockInput OnÀ¸·Î ¸·°í ÀÖ´Â °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù).

+

+ Mouse: »ç¿ëÀÚÀÇ Å°º¸µå¿Í ¸¶¿ì½º ÀÔ·ÂÀº Click, MouseMove, MouseClick, ¶Ç´Â MouseClickDragÀÌ ÁøÇà ÁßÀÏ ¶§ ¹«½ÃµË´Ï´Ù (ÀüÅëÀûÀÎ SendEvent ¸ðµå¸¸ Çã¿ëÇÕ´Ï´Ù). »ç¿ëÀÚÀÇ ¸¶¿ì½º À̵¿°ú Ŭ¸¯ ¶§¹®¿¡ Èä³»³½ ¸¶¿ì½º À̺¥Æ® È帧ÀÌ ¹æÇعÞÁö ¾Êµµ·Ï ¸·½À´Ï´Ù. ¸¶¿ì½º ¸í·É¾î°¡ ³¡³¯ ¶§ (ÀÌÀü¿¡ BlockInput OnÀÌ »ç¿ëµÇ¿© ¿©ÀüÈ÷ ÀÔ·ÂÀ» ¸·°í ÀÖÁö¸¸ ¾Ê´Ù¸é) ÀÔ·ÂÀÌ ´Ù½Ã °¡´ÉÇØÁý´Ï´Ù.

+

SendAndMouse: À§ µÎ ¹æ¹ýÀ» Á¶ÇÕ.

+

Default: Send¿Í Mouse ¸ðµå¸¦ ¸ðµÎ ²ôÁö¸¸, ÀÔ·Â ¹æÁöÀÇ ÇöÀç »óŸ¦ ¹Ù²ÙÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, BlockInput OnÀÌ ÇöÀç È¿°ú°¡ ÀÖ´Ù¸é, BlockInput Default¸¦ »ç¿ëÇصµ ²¨ÁöÁö ¾Ê½À´Ï´Ù.

+

+ Mode 3 (v1.0.43.11+ ¿ä±¸): ÀÌ ¸ðµå´Â ´Ù¸¥ µÎ ¹æ¹ý°ú µ¶¸³ÀûÀ¸·Î ÀÛµ¿ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, BlockInput On°ú BlockInput MouseMove°¡ µÑ ´Ù ÄÑÁ® ÀÖÀ¸¸é, ¸¶¿ì½º À̵¿Àº µÑ ´Ù ²¨Áú ¶§±îÁö ¸·Èü´Ï´Ù.

+

MouseMove: ¸¶¿ì½º Ä¿¼­´Â »ç¿ëÀÚÀÇ ¹°¸®Àû ¸¶¿ì½º À̵¿¿¡ ¹ÝÀÀÇÏÁö ¾Ê½À´Ï´Ù (DirectInput ¾îÇÃÀº ¿¹¿ÜÀûÀ¸·Î °¡´ÉÇÕ´Ï´Ù). ½ºÅ©¸³Æ®°¡ ÀÌ ¸í·É¾î¸¦ óÀ½ »ç¿ëÇÒ ¶§, (¾ÆÁ÷ ¼³Ä¡µÇÁö ¾Ê¾Ò´Ù¸é) ¸¶¿ì½º °¥°í¸®°¡ ¼³Ä¡µË´Ï´Ù. °Ô´Ù°¡, ½ºÅ©¸³Æ®´Â ¿µ¼ÓÀûÀÌ µË´Ï´Ù. ExitApp¸¦ »ç¿ëÇؾ߸¸ Á¾·áÇÒ ¼ö ÀÖ´Ù´Â ¶æÀδÙ. ¸¶¿ì½º °¥°í¸®´Â ´ÙÀ½ Suspend ¶Ç´Â Hotkey ¸í·É¾î¸¦ »ç¿ëÇÒ ¶§±îÁö ¿©ÀüÈ÷ ¼³Ä¡µÇ¾î ÀÖÀ» °ÍÀÔ´Ï´Ù. ±× ¼ø°£ ÇÖÅ°³ª ÇÖ½ºÆ®¸µÀ» ¿ä±¸ÇÏÁö ¾ÊÀ¸¸é Á¦°ÅµË´Ï´Ù (#Hotstring NoMouse ÂüÁ¶).

+

MouseMoveOff: »ç¿ëÀÚ¿¡°Ô ¸¶¿ì½º Ä¿¼­¸¦ À̵¿Çϵµ·Ï Çã¿ëÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+BlockInputº¸´Ù, Á¾Á¾ SendMode Input ¶Ç´Â SendMode PlayÀ» »ç¿ëÇÏ´Â ÆíÀÌ ´õ ÁÁÀ» °æ¿ì°¡ ¸¹½À´Ï´Ù. ¿Ö³ÄÇϸé Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯À» ÀÎÅÍ·´Æ®ÇÒ ¼ö ¾ø±â ¶§¹®ÀÔ´Ï´Ù. BlockInput°ú ´Ù¸£°Ô, À§ ¸ðµå´Â Àü¼Û Áß »ç¿ëÀÚ°¡ ŸÀÚÇÑ °ÍÀ» ¹ö¸®Áö ¾Ê½À´Ï´Ù; ´ë½Å¿¡, ¹öÆÛ Ã³¸®Çß´Ù°¡ ³ªÁß¿¡ Àü¼ÛÇÕ´Ï´Ù. BlockInputÀ» ÇÇÇÏ¸é ´ÙÀ½ ¹®´Ü¿¡¼­ ±â¼úÇÏ´Â ¹Ù¿Í °°ÀÌ Å°°¡ ´­·¯ºÙ´Â °ÍÀ» ¿ìȸÇÒ ÇÊ¿äµµ ¾ø¾îÁý´Ï´Ù.

+

+»ç¿ëÀÚ°¡ Å°¸¦ ´©¸£°í ÀÖ´Â µ¿¾È¿¡ BlockInputÀÌ È°¼ºÈ­µÈ´Ù¸é, ±×·± Å°µéÀº "´­·¯ ºÙ¾î¹ö¸³´Ï´Ù". ÀÌ°ÍÀº ±× Å°°¡ ³õÀÏ ¶§±îÁö ±â´Ù·È´Ù°¡ BlockInputÀ» ÄѸé ÇØ°áµË´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ:

+ +
^!p::
+KeyWait Control  ; Å°¸¦ ¶¼±â¸¦ ±â´Ù¸³´Ï´Ù. °¢°¢ÀÇ ÇÖÅ° ¼ö½ÄÀÚ¸¶´Ù KeyWait¸¦ Çϳª¾¿ »ç¿ëÇÕ´Ï´Ù.
+KeyWait Alt
+BlockInput On
+; ... Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯À» Àü¼ÛÇÕ´Ï´Ù ...
+BlockInput Off
+return
+

+ÀÔ·Â ¹æÁö´Â ALT À̺¥Æ®°¡ Àü¼ÛµÉ ¶§¸¶´Ù ÀÚµ¿À¸·Î ±×¸®°í Àӽ÷Π²¨Áý´Ï´Ù (³ªÁß¿¡ ´Ù½Ã È°¼ºÈ­µË´Ï´Ù).

+

+BlockInputÀÌ ÄÑÁ® ÀÖÀ» ¶§, »ç¿ëÀÚ ÀÔ·ÂÀº ¸·È÷Áö¸¸ ¿ÀÅäÇÖÅ°´Â Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯À» Èä³»³¾ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, Ctrl+Alt+DelÀ» ´©¸£¸é Windows API Ư¡ ¶§¹®¿¡ ÀÔ·ÂÀÌ ´Ù½Ã °¡´ÉÇØÁý´Ï´Ù.

+

+¾î¶² À¯ÇüÀÇ °¥°í¸® ÇÖÅ°´Â BlockInputÀÌ ÄÑÁ® À־ ¿©ÀüÈ÷ ÃË¹ßµÉ ¼ö ÀÖ½À´Ï´Ù. ¿¹·Î´Â MButton (¸¶¿ì½º °¥°í¸®) ±×¸®°í LWin & Space (¼ö½Ä ½Éº¼ $#ÀÌ ¾Æ´Ï¶ó ¸í½ÃÀûÀ¸·Î Á¢µÎ ½Éº¼ÀÌ ºÙÀº Å°º¸µå °¥°í¸®)°¡ ÀÖ½À´Ï´Ù.

+

+½ºÅ©¸³Æ®°¡ ³¡³¯ ¶§ ÀÚµ¿À¸·Î ÀÔ·ÂÀÌ ´Ù½Ã °¡´ÉÇØÁý´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

SendMode, Send, Click, MouseMove, MouseClick, MouseClickDrag

+ +

¿¹Á¦

+
BlockInput, on
+Run, notepad
+WinWaitActive, Untitled - Notepad
+Send, {F5} ; ³¯Â¥¿Í ½Ã°£À» ºÙ¿© ³Ö½À´Ï´Ù
+BlockInput, off
+ + + diff --git a/src/docs/commands/Break.htm b/src/docs/commands/Break.htm new file mode 100644 index 0000000..b7ac0e3 --- /dev/null +++ b/src/docs/commands/Break.htm @@ -0,0 +1,51 @@ + + + + +Break + + + + + + + +

Break

+ +

ȸµ¹À̸¦ ºüÁ® ³ª¿É´Ï´Ù. ¸ðµç Á¾·ùÀÇ È¸µ¹ÀÌ¿¡ Àû¿ëµË´Ï´Ù.

+ +
Break [, LoopLabel]
+

[AHK_L 59+]: ÁöÁ¤µÇ¸é, LoopLabelÀº ÀÌ ¼­¼ú¹®À» Àû¿ëÇØ¾ß ÇÒ È¸µ¹À̸¦ ½Äº°ÇÕ´Ï´Ù; ¶óº§ À̸§ ¶Ç´Â ¼ýÄ¡·Î ÁöÁ¤µÈ ³»Æ÷ ·¹º§. +»ý·«Çϰųª 1À̸é , ÀÌ ¼­¼ú¹®Àº °¡Àå ¾ÈÂÊ È¸µ¹ÀÌ¿¡ Àû¿ëµË´Ï´Ù. LoopLabelÀº »ó¼ö °ªÀ̾î¾ß ÇÕ´Ï´Ù - º¯¼ö¿Í Ç¥Çö½ÄÀº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ¶óº§ÀÌ ÁöÁ¤µÇ¸é, Á÷Á¢ÀûÀ¸·Î ȸµ¹ÀÌ ¸í·É¾î¸¦ °¡¸®ÄÑ¾ß ÇÕ´Ï´Ù.

+

+gotoº¸´Ù Break¿Í ContinueÀÇ »ç¿ëÀ» ±ÇÀåÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é º¸Åë ½ºÅ©¸³Æ®¸¦ ´õ Àб⠽±°í ´õ °ü¸®Çϱ⠽±°Ô ¸¸µé¾îÁֱ⠶§¹®ÀÔ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

Continue, Loop, While-ȸµ¹ÀÌ, For-ȸµ¹ÀÌ, ºí·Ï, ¶óº§

+

¿¹Á¦

+
Loop
+{
+    ...
+    if var > 25
+        break
+    ...
+    if var <= 5
+        continue
+}
+
; ³»Æ÷ ȸµ¹ÀÌ ¾ÈÀ¸·ÎºÎÅÍ ¹Ù±ù ȸµ¹ÀÌ·Î ºüÁ® ³ª¿É´Ï´Ù.
+outer:
+Loop 3
+{
+    x := A_Index
+    Loop 3
+    {
+        if (x*A_Index = 6)
+            break outer  ; break 2 ¶Ç´Â goto break_outer¿Í µ¿µîÇÕ´Ï´Ù.
+        MsgBox %x%,%A_Index%
+    }
+}
+break_outer: ; goto¸¦ À§ÇÑ ¶óº§.
+
+ + + diff --git a/src/docs/commands/Catch.htm b/src/docs/commands/Catch.htm new file mode 100644 index 0000000..cd723d6 --- /dev/null +++ b/src/docs/commands/Catch.htm @@ -0,0 +1,57 @@ + + + + +Catch + + + + + + + +

Catch [v1.1.04+]

+ +

try¼­¼ú¹®ÀÇ ½ÇÇà Áß¿¡ ¿¹¿Ü°¡ ÀϾ¸é ½ÇÇàÇÒ Äڵ带 ÁöÁ¤ÇÕ´Ï´Ù.

+ +
Catch [, OutputVar]
+    Statement
+
Catch [, OutputVar]
+{
+    Statements
+}
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

(¼±ÅÃÀû) ¿¹¿ÜÀÇ °ªÀ» ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
Statement(s)
+

¿¹¿Ü°¡ ÀϾ¸é ½ÇÇàÇÒ ¸í·É¾î ¶Ç´Â Ç¥Çö½Ä.

+ +
+ +

³íÆò

+

+catch°¡ »ç¿ëµÇ¸é ¹Ù·Î À§ try ¼­¼ú¹®¿¡ Á¾¼ÓµË´Ï´Ù. catch´Â ¾ðÁ¦³ª ¹Ù·Î À§ °¡Àå °¡±î¿î try ¼­¼ú¹®¿¡ ¼ÓÇÕ´Ï´Ù. ´Ü, ºí·ÏÀ» »ç¿ëÇÏ¿© ±× ÇàÀ§¸¦ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+

+One True Brace (OTB) ½ºÅ¸ÀÏÀ» ¼±ÅÃÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
try {
+    ...
+} catch e {
+    ...
+}
+ +

½ÇÇà½Ã°£ ¿¡·¯

+

+try-catch ¼­¼ú¹®Àº ½ÇÇà ½Ã°£ ¿¡·¯¸¦ ó¸®ÇÏ´Â µ¥¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. µÎ °¡Áö Á¾·ùÀÇ ½ÇÇà½Ã°£ ¿¡·¯°¡ ÀÖ½À´Ï´Ù: º¸Åë ErrorLevelÀ» ¼³Á¤ÇÏ´Â ¿¡·¯¿Í, º¸Åë ¿¡·¯ ¸Þ½ÃÁö¸¦ º¸¿©ÁØ ÈÄ¿¡ ÇöÀç ¾²·¹µå¸¦ Á¾·á½ÃÅ°´Â ¿¡·¯°¡ ÀÖ½À´Ï´Ù. ÀûÀç½Ã°£ ¿¡·¯´Â 󸮰¡ ºÒ°¡´ÉÇÕ´Ï´Ù. ¿Ö³ÄÇϸé try ¼­¼ú¹®ÀÌ ½ÇÇàµÇ±â Àü¿¡ ÀϾ±â ¶§¹®ÀÔ´Ï´Ù. ÇÏÀ§ ȣȯÀ» À§ÇØ (±×¸®°í ¾î¶² °æ¿ì´Â ÆíÀǸ¦ À§ÇØ), ½ÇÇà½Ã°£ ¿¡·¯´Â try ºí·ÏÀÌ ½ÇÇàµÇ´Â µ¿¾È ¿ÀÁ÷ ¿¹¿Ü¸¸ ´øÁý´Ï´Ù. ´ëºÎºÐÀÇ ¸í·É¾î´Â try-catchÀÇ »ç¿ëÀ» Áö¿øÇÕ´Ï´Ù; ±×·¸Áö¸¸, ErrorLevelÀº ¸í·É¾î°¡ ¼º°øÇÏ¸é ¿©ÀüÈ÷ 0À¸·Î ¼³Á¤µË´Ï´Ù.

+

+OutputVar¿¡ ÀúÀåµÈ °ªÀº (Á¸ÀçÇϸé) ¿¹¿Ü °´Ã¼ÀÔ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

Try, Throw, Finally, Blocks

+

¿¹Á¦

+

Try ÂüÁ¶.

+ + + diff --git a/src/docs/commands/Click.htm b/src/docs/commands/Click.htm new file mode 100644 index 0000000..95956ff --- /dev/null +++ b/src/docs/commands/Click.htm @@ -0,0 +1,100 @@ + + + + +Click + + + + + + + +

Click [v1.0.43+]

+ +

+ÁöÁ¤µÈ ÁÂÇ¥¿¡ ¸¶¿ì½º ¹öÆ°À» Ŭ¸¯ÇÕ´Ï´Ù. ¶Ç ¸¶¿ì½º ¹öÆ°À» ´©¸£°í ÀÖÀ» ¼ö ÀÖÀ¸¸ç ÈÙÀ» µ¹¸± ¼ö ÀÖ½À´Ï´Ù. ¸¶¿ì½º¸¦ À̵¿ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

+

+ÀÚÁÖ »ç¿ëµÇ´Â ¹æ¹ýÀÔ´Ï´Ù (¸ðµç ½°Ç¥´Â ¼±ÅÃÀûÀÔ´Ï´Ù):

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Click (´Üµ¶)¿ÞÂÊ ¸¶¿ì½º ¹öÆ°À» ÇöÀç Ä¿¼­ À§Ä¡¿¡ ÇÑ ¹ø Ŭ¸¯ÇÕ´Ï´Ù.
Click 44, 55¿Þ¹öÆ°À» ÁÂÇ¥ 44, 55¿¡ ÇÑ ¹ø Ŭ¸¯ÇÕ´Ï´Ù (CoordMode¿¡ ±â¹Ý).
Click right 44, 55À§¿Í µ¿µîÇÏÁö¸¸ ¿ì¹öÆ°À» Ŭ¸¯ÇÕ´Ï´Ù.
Click 2¿Þ ¹öÆ°À» Ä¿¼­ÀÇ ÇöÀç À§Ä¡¿¡ µÎ ¹ø Ŭ¸¯ÇÕ´Ï´Ù (Áï, ´õºí-Ŭ¸¯).
Click down¿Þ¹öÆ°À» ´©¸£°í ±×´ë·Î ÀÖ½À´Ï´Ù.
Click up right¿ì¹öÆ°À» ¶Á´Ï´Ù.
Click %x% %y%Ŭ¸¯Àº Ç¥Çö½ÄÀ» Áö¿øÇÏÁö ¾Ê±â ¶§¹®¿¡, º¯¼ö´Â ÆÛ¼¾Æ® »çÀÎÀ¸·Î µÑ·¯½Î¾ß ÇÕ´Ï´Ù.
+

+0°³ ÀÌ»óÀÇ ´ÙÀ½ Ç׸ñµéÀÌ ´Ü¾î Click ´ÙÀ½¿¡ ¿Ã ¼ö ÀÖ½À´Ï´Ù. °¢ Ç׸ñÀº ´ÙÀ½ Ç׸ñ°ú Àû¾îµµ ÇϳªÀÇ ½ºÆäÀ̽º, ÅÇ ¶Ç´Â ½°Ç¥·Î ºÐ¸®ÇϽʽÿÀ. Ç׸ñµéÀº ¼ø¼­¿¡ »ó°ü¾øÀÌ ³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù. ClickCount´Â Á¦¿ÜÇϴµ¥, (ÁÂÇ¥°¡ ÇöÀç Á¸ÀçÇÑ´Ù¸é) ÁÂÇ¥ÀÇ ¿À¸¥ÂÊ ¾îµò°¡¿¡ ³ªÅ¸³ª¾ß Çϱ⠶§¹®ÀÔ´Ï´Ù.

+

+X, Y: ¸¶¿ì½º Ä¿¼­°¡ Ŭ¸¯Çϱâ Àü¿¡ À̵¿ÇØ¾ß ÇÒ x/y ÁÂÇ¥. ÁÂÇ¥´Â È°¼º â¿¡ »ó´ëÀûÀÔ´Ï´Ù. ´Ü, CoordMode°¡ »ç¿ëµÇ¾î ÁÂÇ¥°¡ º¯°æµÈ °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù. »ý·«Çϸé, Ä¿¼­ÀÇ ÇöÀç À§Ä¡°¡ »ç¿ëµË´Ï´Ù.

+

+Button Name: Left (±âº»°ª), Right, Middle (¶Ç´Â ±×³É ù ¹®ÀÚ); ¶Ç´Â ´Ù¼¸ ¿©¼¸ ¹ø° ¸¶¿ì½º ¹öÆ° (X1 ¶Ç´Â X2). ÁÖÀÇ: MouseClick°ú ´Ù¸£°Ô, ¿Þ¹öÆ°°ú ¿ì¹öÆ°Àº ¸ðµç ½Ã½ºÅÛ¿¡ °ÉÃÄ ÇàÀ§¿¡ ÀÏ°ü¼ºÀÌ ÀÖ½À´Ï´Ù. »ç¿ëÀÚ°¡ ½Ã½ºÅÛ Á¦¾îÆÇÀ» ÅëÇÏ¿© ¹öÆ°À» ¼­·Î ¹Ù²Ù¾ú´Ù°í ÇÒÁö¶óµµ ¸»ÀÔ´Ï´Ù.

+

+Mouse Wheel: WheelUp ¶Ç´Â WU¸¦ ÁöÁ¤ÇØ ÈÙÀ» À§·Î µ¹¸³´Ï´Ù (¸Ö¾îÁö°Ô); WheelDown ¶Ç´Â WD¸¦ ÁöÁ¤ÇØ ÈÙÀ» ¾Æ·¡·Î µ¹¸³´Ï´Ù (°¡±î¿öÁö°Ô). v1.0.48+¿¡¼­, WheelLeft (WL) ¶Ç´Â WheelRight (WR)À» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù (±×·¯³ª À©µµ¿ìÁî ºñ½ºÅ¸ ÀÌÀüÀÇ ±¸Çü ¹öÀü¿¡¼­´Â ¾Æ¹« È¿°úµµ ¾ø½À´Ï´Ù). (¾Æ·¡ÀÇ) ClickCount¿¡ ´ëÇÏ¿© µ¹¸± ÈÙÀÇ ´«±ÝÀ» ÁöÁ¤ÇÕ´Ï´Ù. ±×·¸Áö¸¸, ¾î¶² ¾îÇø®ÄÉÀ̼ÇÀº ¸¶¿ì½º ÈÙ¿¡ ´ëÇÏ¿© 1 º¸´Ù Å« ClickCount¸¦ Á¸ÁßÇÏÁö ¾Ê½À´Ï´Ù. ±×·± °æ¿ì¶ó¸é ´ÙÀ½°ú °°ÀÌ È¸µ¹À̸¦ »ç¿ëÇÕ´Ï´Ù:

+
Loop 5
+    Click WheelUp
+

+ClickCount: ¸¶¿ì½º¸¦ Ŭ¸¯ÇÒ È½¼ö (¿¹Á¦: Click 2, Click 100, 200, 2). »ý·«Çϸé, ¹öÆ°Àº ÇÑ ¹ø Ŭ¸¯µË´Ï´Ù. ÁÂÇ¥°¡ ÁöÁ¤µÇ¸é, ClickCount´Â ±× ´ÙÀ½¿¡ ³ªÅ¸³ª¾ß ÇÕ´Ï´Ù. ¿µ (0)À» ÁöÁ¤ÇÏ¸é ¸¶¿ì½º¸¦ Ŭ¸¯ÇÏÁö ¾Ê°í À̵¿ÇÒ ¼ö ÀÖ½À´Ï´Ù (¿¹¸¦ µé¾î: Click 100, 200, 0).

+

+Down ¶Ç´Â Up: ÀÌ ´Ü¾îµéÀº º¸Åë »ý·«µË´Ï´Ù. ÀÌ °æ¿ì °¢ Ŭ¸¯¸¶´Ù ´Ù¿î-À̺¥Æ®¿Í ´ÙÀ½¿¡ ¾÷-À̺¥Æ®°¡ µû¶ó¿É´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, DownÀ» (¶Ç´Â D) ÁöÁ¤ÇÏ¸é ¸¶¿ì½º ¹öÆ°À» ¶¼Áö ¾Ê°í ´©¸£°í ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ³ªÁß¿¡, Up (¶Ç´Â U)¸¦ »ç¿ëÇÏ¸é ¸¶¿ì½º ¹öÆ°À» ¶¿ ¼ö ÀÖ½À´Ï´Ù.

+

+Relative: ´Ü¾î Rel ¶Ç´Â Relative´Â ÁöÁ¤µÈ X¿Í Y ÁÂÇ¥¸¦ ÇöÀç ¸¶¿ì½º À§Ä¡·ÎºÎÅÍ »ó´ë °Å¸®·Î Ãë±ÞÇÕ´Ï´Ù. ´Ù¸¥ ¸»·Î, Ä¿¼­´Â ±×ÀÇ ÇöÀç À§Ä¡·ÎºÎÅÍ X Çȼ¿¸¸Å­ ¿À¸¥ÂÊÀ¸·Î (À½ÀÇ Á¤¼öÀÌ¸é ¿ÞÂÊÀ¸·Î) ±×¸®°í Y Çȼ¿¸¸Å­ ¾Æ·¡·Î (À½ÀÇ Á¤¼öÀ̸é À§·Î) À̵¿ÇÕ´Ï´Ù.

+ +

³íÆò

+

+ÀϹÝÀûÀ¸·Î MouseClickº¸´Ù ClickÀ» ¼±È£ÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ½Ã½ºÅÛÀÇ Á¦¾îÆÇÀ» ÅëÇÏ¿© »ç¿ëÀÚ°¡ ÁÂ¿ì ¸¶¿ì½º ¹öÆ°À» ¹Ù²Ù´õ¶óµµ ÀÚµ¿À¸·Î º¸»óÇØ Áֱ⠶§¹®ÀÔ´Ï´Ù.

+

+ClickÀº SendMode°¡ ¼³Á¤ÇÑ Àü¼Û ¸Þ½îµå¸¦ »ç¿ëÇÕ´Ï´Ù. ƯÁ¤ÇÑ Å¬¸¯¿¡ ´ëÇÏ¿© ÀÌ ¸ðµå¸¦ ¿À¹ö¶óÀ̵å ÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ±¸Ã¼ÀûÀÎ Send ¸í·É¾î¸¦ »ç¿ëÇϽʽÿÀ: + +SendEvent {Click, 100, 200}.

+

+¿ÞŬ¸¯À̳ª ÄÜÆ®·Ñ-Ŭ¸¯À» ¼öÇàÇÏ·Á¸é, ÀϹÝÀûÀ¸·Î Send {Click} ¸Þ½îµå°¡ °¡Àå ½±½À´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
Send +{Click 100, 200}  ; Shift+LeftClick
+Send ^{Click 100, 200, right}  ; Control+RightClick
+

+Send¿Í ´Ù¸£°Ô, ClickÀº ÀÚµ¿À¸·Î ¼ö½Ä Å°¸¦ ¶¼Áö ¾Ê½À´Ï´Ù (Control, Alt, Shift, ±×¸®°í Win). ¿¹¸¦ µé¾î, Control Å°°¡ ÇöÀç ´­·Á ÀÖÀ¸¸é, ClickÀº control-clickÀ» »ý»êÇÏÁö¸¸ Send {Click}´Â º¸ÅëÀÇ Å¬¸¯À» »ý»êÇÕ´Ï´Ù.

+

+SendPlay ¸ðµå´Â ´Ù¸¥ ¸ðµåµé º¸´Ù ´õ ±¤¹üÀ§ÇÑ °ÔÀÓ¿¡ ¼º°øÀûÀ¸·Î ¸¶¿ì½º À̺¥Æ®¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. °Ô´Ù°¡, ¾î¶² ¾îÇø®ÄÉÀ̼ǰú °ÔÀÓÀº ³Ê¹« »¡¸® ¿òÁ÷À̸é ÃßÀû¿¡ ¾î·Á¿òÀÌ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ±×·± °æ¿ì SetDefaultMouseSpeed¸¦ »ç¿ëÇÏ¸é ¼Óµµ¸¦ ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù (±×·¯³ª SendEvent ¸ðµå Àü¿ëÀÔ´Ï´Ù).

+

+BlockInput ¸í·É¾î¸¦ »ç¿ëÇÏ¸é »ç¿ëÀÚÀÇ ¹°¸®ÀûÀÎ ¸¶¿ì½º È°µ¿ ¶§¹®¿¡ ¸¶¿ì½º ¸í·É¾î·Î »ý»êµÇ´Â Èä³»³½ ¸¶¿ì½º À̺¥Æ®µéÀÌ ¾îÁú·¯Áö´Â °ÍÀ» ¸·À» ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ÀÌ´Â ÀϹÝÀûÀ¸·Î SendInput ¸ðµå¿Í SendPlay ¸ðµå¿¡ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇϸé ÀÚµ¿À¸·Î »ç¿ëÀÚÀÇ ¹°¸®Àû ¸¶¿ì½º ¿òÁ÷ÀÓÀ» µÚ·Î Áö¿¬Çϱ⠶§¹®ÀÔ´Ï´Ù.

+

+¸¶¿ì½º¸¦ Ŭ¸¯Çؼ­ ´©¸£°í ¶¿ ¶§¸¶´Ù µÚ¿¡ ÀÚµ¿À¸·Î Áö¿¬½Ã°£ÀÌ ÀÖ½À´Ï´Ù (SendInput ¸ðµå¿Í ¸¶¿ì½º ÈÙ µ¹¸®±â´Â Á¦¿ÜÇÕ´Ï´Ù). SetMouseDelay¸¦ »ç¿ëÇϸé Áö¿¬½Ã°£À» º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

Send {Click}, SendMode, CoordMode, SetDefaultMouseSpeed, SetMouseDelay, MouseClick, MouseClickDrag, MouseMove, ControlClick, BlockInput

+ +

¿¹Á¦

+
Click  ; ¿Þ¹öÆ°À» ¸¶¿ì½º Ä¿¼­ÀÇ ÇöÀç À§Ä¡¿¡ Ŭ¸¯ÇÕ´Ï´Ù.
+Click 100, 200  ; ¿Þ¹öÆ°À» ÁöÁ¤µÈ ÁÂÇ¥¿¡ Ŭ¸¯ÇÕ´Ï´Ù.
+Click 100, 200, 0  ; ¸¶¿ì½º¸¦ Ŭ¸¯¾øÀÌ À̵¿ÇÕ´Ï´Ù.
+Click 100, 200 right  ; ¿ì¹öÆ°À» Ŭ¸¯ÇÕ´Ï´Ù.
+Click 2  ; ´õºí-Ŭ¸¯À» ¼öÇàÇÕ´Ï´Ù.
+Click down  ; ¿Þ¹öÆ°À» ´©¸£°í ±×´ë·Î À¯ÁöÇÕ´Ï´Ù.
+Click up right  ; ¿ì¹öÆ°À» ¶Á´Ï´Ù.
+ + + diff --git a/src/docs/commands/ClipWait.htm b/src/docs/commands/ClipWait.htm new file mode 100644 index 0000000..29ebea0 --- /dev/null +++ b/src/docs/commands/ClipWait.htm @@ -0,0 +1,62 @@ + + + + +ClipWait + + + + + + + +

ClipWait

+ +

Ŭ¸³º¸µå¿¡ µ¥ÀÌÅÍ°¡ ´ã±â±â¸¦ ±â´Ù¸³´Ï´Ù.

+ +
ClipWait [, SecondsToWait, 1]
+

¸Å°³º¯¼ö

+
+ +
SecondsToWait
+

»ý·«Çϸé, ¹«ÇÑÁ¤ ±â´Ù¸³´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÁöÁ¤ÇÑ ÃÊ °³¼ö ¸¸Å­¸¸ ±â´Ù¸³´Ï´Ù (¼Ò¼öÁ¡À» Æ÷ÇÔÇÒ ¼ö ÀÖ°í Ç¥Çö½ÄÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù). 0À» ÁöÁ¤Çϸé 0.5¸¦ ÁöÁ¤ÇÑ °Í°ú °°½À´Ï´Ù.

+ +
1
+

ÀÌ ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, ´õ ¼±ÅÃÀÇ ¹üÀ§°¡ ³Ð¾îÁý´Ï´Ù. ƯÈ÷ ÅؽºÆ®³ª ÆÄÀÏÀÌ ³ªÅ¸³ª±â¸¦ ±â´Ù¸³´Ï´Ù ("ÅؽºÆ®"´Â ¹«¾ùÀÌµç ³ëÆ®Æе忡 ºÙ¿© ³ÖÀ» ¶§ ÅؽºÆ®¸¦ »ý»êÇϱ⸸ ÇÏ¸é µË´Ï´Ù.). + ÀÌ ¸Å°³º¯¼ö°¡ 1À̸é (Ç¥Çö½Ä °¡´É), Á¾·ù¿¡ »ó°ü¾øÀÌ µ¥ÀÌÅÍ°¡ Ŭ¸³º¸µå¿¡ ³ªÅ¸³ª±â¸¦ ±â´Ù¸³´Ï´Ù.

+ +
+ +

ErrorLevel

+

+´ë±â ½Ã°£ÀÌ °æ°úÇϸé, ErrorLevel´Â 1·Î ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é (Áï, Ŭ¸³º¸µå¿¡ µ¥ÀÌÅÍ°¡ ÀÖÀ¸¸é), ErrorLevelÀº 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+Ŭ¸³º¸µå°¡ ºñ¾î ÀÖ´ÂÁö ¾Ë¾Æ º¸±â À§ÇØ È¸µ¹À̺¸´Ù ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ´Â ÆíÀÌ ´õ ÁÁ½À´Ï´Ù. ¿Ö³ÄÇϸé Ŭ¸³º¸µå´Â ÀÌ ¸í·É¾î·Î ¿­¸®Áö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ±×·¡¼­ ´õ ¼öÇ༺´ÉÀÌ ÁÁ°í Ŭ¸³º¸µå¸¦ »ç¿ëÇÏ°í ÀÖ´Â ´Ù¸¥ ¾îÇø®ÄÉÀ̼ǰú ¼­·Î °£¼·ÇÒ °¡´É¼ºÀ» ÇÇÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.

+

+ÀÌ ¸í·É¾î´Â ÅؽºÆ®·Î º¯È¯ °¡´ÉÇÑ °ÍÀÌ¸é ¹«¾ùÀ̵ç (¿¹, HTML) ÅؽºÆ®·Î °£ÁÖÇÕ´Ï´Ù. ¶ÇÇÑ Å½»ö±â â¿¡¼­ Control-C¸¦ ÅëÇÏ¿© º¹»çÇÒ ¼ö ÀÖ´Â ÆÄÀϵµ ÅؽºÆ®·Î °£ÁÖÇÕ´Ï´Ù. Ŭ¸³º¸µå º¯¼ö (%clipboard%)°¡ ½ºÅ©¸³Æ®¿¡¼­ ÂüÁ¶µÉ ¶§¸¶´Ù ±×·± ÆÄÀÏÀº (Àüü °æ·Î¿Í ÇÔ²²) ±×ÀÇ ÆÄÀÏÀ̸§À¸·Î ÀÚµ¿À¸·Î º¯È¯µË´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº Clipboard¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+1ÀÌ Ã¹ ¹ø° ¸Å°³º¯¼ö·Î Á¸ÀçÇϸé, ¾î¶² Á¾·ùÀÌµç µ¥ÀÌÅÍ°¡ Ŭ¸³º¸µå¿¡ ³ªÅ¸³ª¸é ¸í·É¾î¸¦ ¸¸Á·½Ãŵ´Ï´Ù. ÀÌ°ÍÀº ClipboardAll°ú ÇÔ²² »ç¿ëµÇ¾î ±×¸²°ú °°ÀÌ ÅؽºÆ®°¡ ¾Æ´Ñ µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ÀÌ ¸í·É¾î°¡ ´ë±â »óÅ¿¡ ÀÖ´Â µ¿¾È¿¡, ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀ̸Ӹ¦ ÅëÇÏ¿© »õ ¾²·¹µå°¡ ±âµ¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+Clipboard, WinWait, KeyWait

+ +

¿¹Á¦

+ +
clipboard = ; Ŭ¸³º¸µå¸¦ ºñ¿ó´Ï´Ù
+Send, ^c
+ClipWait, 2
+if ErrorLevel
+{
+    MsgBox, Ŭ¸³º¸µå¿¡ ÅؽºÆ®¸¦ º¹»çÇÏ·Á´Â ½Ãµµ°¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù.
+    return
+}
+MsgBox, clipboard = %clipboard%
+return
+ + + diff --git a/src/docs/commands/ComObjActive.htm b/src/docs/commands/ComObjActive.htm new file mode 100644 index 0000000..7296303 --- /dev/null +++ b/src/docs/commands/ComObjActive.htm @@ -0,0 +1,154 @@ + + + + +ComObjActive() + + + + + + + +

ComObjActive() [AHK_L 53+]

+ +

OLE·Î µî·ÏµÇ¾î ½ÇÇà ÁßÀÎ °´Ã¼¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+
ComObject := ComObjActive(CLSID)
+ +

¸Å°³º¯¼ö³ª ¹Ýȯ °ª¿¡ °Ç³Ú À¯Çü ÀÖ´Â °ªÀ» ³ªÅ¸³»´Â °´Ã¼¸¦ ¸¸µì´Ï´Ù.

+
ParamObj := ComObject(VarType, Value [, Flags])
+ +

Àý´ë ºñÃßõ:

+

+¾Æ·¡¿¡ º¸¿©ÁÖ´Â »ç¿ë¹ýÀº ÃßõÇÏÁö ¾Ê½À´Ï´Ù. ¾ÕÀ¸·Î´Â »ç¿ëÀÌ ºÒ°¡´ÉÇϰųª ¹Ù²ð ¼ö ÀÖ½À´Ï´Ù.

+

COM °´Ã¼ÀÇ ¸Þ½îµå¸¦ È£ÃâÇÒ ¶§ ¼±ÅÃÀûÀÎ ¸Å°³º¯¼öÀÇ ±âº» °ª ´ë½Å¿¡ »ç¿ëÇÒ °´Ã¼¸¦ ¸¸µì´Ï´Ù. v1.1.12ºÎÅÍ Æó±âµÇ¾ú½À´Ï´Ù: ´ë½Å¿¡ ±×³É µÎ °³ÀÇ ½°Ç¥¸¦ ¿¬¼ÓÀûÀ¸·Î »ç¿ëÇϽʽÿÀ. ´ÙÀ½°ú °°ÀÌ: Obj.Method(1,,3)

+
ParamObj := ComObjMissing()
+ +

IDispatch Æ÷ÀÎÅ͸¦ °´Ã¼¿¡ ½Î ³Ö°í ÀÚµ¿À¸·Î AddRef¸¦ È£ÃâÇÕ´Ï´Ù.

+ +
ComObject := ComObjEnwrap(DispPtr)
+DispPtr := ComObjUnwrap(ComObject)
+

+¹Ì·¡¸¦ º¸ÀåÇÏ´Â Äڵ带 ÀÛ¼ºÇÏ·Á¸é, ´ë½Å ´ÙÀ½°ú °°ÀÌ »ç¿ëÇϽʽÿÀ:

+ +
ComObject := ComObject(9, DispPtr, 1), ObjAddRef(DispPtr)
+DispPtr := ComObjValue(ComObject), ObjAddRef(DispPtr)
+ +

¸Å°³º¯¼ö

+
+ +
CLSID
+

CLSID ¶Ç´Â »ç¶÷ÀÌ-ÀÐÀ» ¼ö ÀÖ´Â COM °´Ã¼ÀÇ Prog ID.

+ +
ComObject
+

°´Ã¼ ±¸¹®¿¡ »ç¿ë°¡´ÉÇÑ COM °´Ã¼.

+ +
VarType
+

°ªÀÇ À¯ÇüÀ» ³ªÅ¸³»´Â Á¤¼ö. À¯Çü ¸ñ·ÏÀº ComObjType()À» ÂüÁ¶ÇϽʽÿÀ.

+ +
Value
+

Æ÷ÀåÇÒ °ª. ÇöÀç ¿ÀÁ÷ Á¤¼ö¿Í Æ÷ÀÎÅÍ °ª¸¸ Áö¿øÇÕ´Ï´Ù.

+ +
Flags
+

ÀÌ ÇÔ¼öÀÇ ÇàÀ§¿Í Æ÷Àå °´Ã¼ÀÇ ÇàÀ§¿¡ ¿µÇâÀ» ÁÖ´Â Ç÷¡±×; ¾Æ·¡ ÂüÁ¶.

+ +
DispPtr
+

³¯ IDispatch Æ÷ÀÎÅÍ.

+ +
+ +

Ç÷¡±×

+ + + + + + + + + +
 0  +

±âº» ÇàÀ§. AddRef´Â IUnknown°ú IDispatch Æ÷ÀÎÅÍ¿¡ ´ëÇÏ¿© ÀÚµ¿À¸·Î È£ÃâµË´Ï´Ù. ±×·¡¼­ È£ÃâÀÚ´Â ObjRelease¸¦ »ç¿ëÇÏ¿© ÀûÀýÇÏ°Ô Æ÷ÀÎÅÍ »çº»À» ³õ¾Æ ÁÖ¾î¾ß ÇÕ´Ï´Ù.

+

±âº» ÇàÀ§´Â ¾ÕÀ¸·Î ¹Ù²ð ¼ö ÀÖÀ¸¹Ç·Î, ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅ͸¦ Æ÷ÀåÇÒ ¶§ ¾ðÁ¦³ª Flags¸¦ 1·Î ¼³Á¤Çϱ⸦ ±ÇÀåÇÕ´Ï´Ù. ±×¸®°í ÇÊ¿äÇϸé ObjAddRef()¸¦ È£ÃâÇϱ⸦ ±ÇÀåÇÕ´Ï´Ù.

+
 1 IUnknown, IDispatch ¶Ç´Â SAFEARRAY Æ÷ÀÎÅÍÀÇ ¼ÒÀ¯±ÇÀ» ȹµæÇÕ´Ï´Ù. AddRef´Â È£ÃâµÇÁö ¾Ê½À´Ï´Ù. Æ÷Àå °´Ã¼¿¡ SAFEARRAY°¡ µé¾î ÀÖÀ¸¸é (VT_BYREF´Â Á¦¿Ü), Æ÷Àå °´Ã¼°¡ ÇØÁ¦µÉ ¶§ SafeArrayDestroy°¡ ÀÚµ¿À¸·Î È£ÃâµË´Ï´Ù.
+ +

ByRef [v1.1.17+]

+

+Æ÷Àå °´Ã¼ÀÇ VarType¿¡ VT_BYREF (0x4000) Ç÷¡±×°¡ µé¾î ÀÖÀ¸¸é, ºó °¢°ýÈ£[]¸¦ »ç¿ëÇÏ¿© ÂüÁ¶µÈ °ªÀ» Àаųª ¾µ ¼ö ÀÖ½À´Ï´Ù.

+

+ÂüÁ¶¸¦ »ý¼ºÇÒ ¶§, Value´Â ¹Ýµå½Ã ÁÖ¾îÁø À¯ÇüÀÇ °ªÀ» ÀúÀåÇϱ⿡ ÃæºÐÇÑ °¡¿ë ´É·ÂÀÌ ÀÖ´Â º¯¼ö³ª ¹öÆÛÀÇ ¸Þ¸ð¸® ÁÖ¼ÒÀ̾î¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½À» »ç¿ëÇϸé VBScript ÇÔ¼ö°¡ ¾µ ¼ö ÀÖ´Â º¯¼ö¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù:

+ +
VarSetCapacity(var, 24, 0)
+vref := ComObject(0x400C, &var)  ; 0x400C´Â VT_BYREF¿Í VT_VARIANTÀÇ Á¶ÇÕÀÔ´Ï´Ù.
+
+vref[] := "in value"
+sc.Run("Example", vref)  ; sc´Â ¹Ýµå½Ã ¾Æ·¡ÀÇ ¿¹Á¦¿Í °°ÀÌ ÃʱâÈ­µÇ¾î¾ß ÇÕ´Ï´Ù.
+MsgBox % vref[]
+ +

ÃÑÆò

+

+ÇöÀç ¹öÀü¿¡¼­, "ComObj"·Î ½ÃÀÛÇÏ´Â ÇÔ¼ö°¡ ´Ù¸¥ COM ÇÔ¼ö Áß Çϳª¿Í ÀÏÄ¡ÇÏÁö ¾ÊÀ¸¸é ½ÇÁ¦·Î´Â ComObjActive¸¦ È£ÃâÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ComObjEnwrap(DispPtr)¿Í ComObjActive(DispPtr)´Â ¸ðµÎ ComObject(DispPtr)¿Í µ¿µîÇÕ´Ï´Ù (¹¬½ÃÀûÀ¸·Î VarTypeÀº 9ÀÔ´Ï´Ù). ±×·¸Áö¸¸, ÀÌ ÇàÀ§´Â ¾ÕÀ¸·Î »ç¿ëÇÏÁö ¸øÇÒ °ÍÀÔ´Ï´Ù. ±×·¡¼­ ÀÌ ÆäÀÌÁö¿¡¼­ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ ComObject()¿Í ComObjActive()¸¸ »ç¿ëÇÏ´Â °ÍÀÌ Á¦ÀÏ ÁÁ½À´Ï´Ù.

+

+IDispatch³ª IUnknown ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅ͸¦ Æ÷ÀåÇϰųª ¿­¶÷ÇÏ´Â µ¥ ÀÌ ÇÔ¼ö°¡ »ç¿ëµÉ ¶§, ±âº» ÇàÀ§´Â COM °´Ã¼ÀÇ ÂüÁ¶ Ƚ¼ö¸¦ ´Ã¸®´Â °ÍÀÔ´Ï´Ù. ±×·¯¹Ç·Î, ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅÍ´Â ´õ ÀÌ»ó ÇÊ¿äÇÏÁö ¾ÊÀ» ¶§ ¼öµ¿À¸·Î ÇØÁ¦ÇØ¾ß ÇÕ´Ï´Ù. Æ÷Àå °´Ã¼°¡ ÇØÁ¦µÉ ¶§, ±× ¾È¿¡ µç ÂüÁ¶´Â ÀÚµ¿À¸·Î ÇØÁ¦µË´Ï´Ù.

+

+¾Ë·ÁÁø ÇÑ°è: COM °´Ã¼°¡ Æ÷ÀåµÉ ¶§¸¶´Ù, »õ Æ÷Àå °´Ã¼°¡ »ý¼ºµË´Ï´Ù. obj1 == obj2 ±×¸®°í array[obj1] := value¿Í °°Àº ºñ±³¿Í ÇÒ´çÀº °°Àº COM °´Ã¼¸¦ Æ÷ÇÔÇÏ°í ÀÖÀ» Áö¶óµµ µÎ °³ÀÇ Æ÷Àå °´Ã¼¸¦ À¯ÀÏÇÑ °ÍÀ¸·Î Ãë±ÞÇÕ´Ï´Ù.

+ + +

ComObjCreate, ComObjGet, ComObjConnect, ComObjError, ComObjFlags, ObjAddRef/ObjRelease, ComObjQuery, GetActiveObject (MSDN)

+ +

¿¹Á¦

+

ComObjUnwrap: ´ÙÀ½ ÂüÁ¶ ComObjConnect.

+ +
+; ¿©´Â ¸»- ScriptControlÀº 32-ºñÆ® ¹öÀüÀÇ ¿ÀÅäÇÖÅ°¸¦ ¿ä±¸ÇÕ´Ï´Ù.
+code =
+(
+Sub Example(Var)
+    MsgBox Var
+    Var = "out value!"
+End Sub
+)
+sc := ComObjCreate("ScriptControl"), sc.Language := "VBScript", sc.AddCode(code)
+
+
+; ¿¹Á¦: VARIANT ByRef¸¦ COM ÇÔ¼ö¿¡ °Ç³Ü´Ï´Ù.
+var := ComVar()
+var[] := "in value"
+sc.Run("Example", var.ref)
+MsgBox % var[]
+
+
+; ComVar: °ªÀ» ByRef·Î °Ç³×´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ´Â °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù.
+;   ComVar[] °ªÀ» ¿­¶÷ÇÕ´Ï´Ù
+;   ComVar[] := ValÀº °ªÀ» ¼³Á¤ÇÕ´Ï´Ù
+;   ComVar.ref´Â COM ÇÔ¼ö¿¡ °Ç³×±â À§ÇØ ByRef °´Ã¼¸¦ ¿­¶÷ÇÕ´Ï´Ù.
+ComVar(Type=0xC)
+{
+    static base := { __Get: "ComVarGet", __Set: "ComVarSet", __Delete: "ComVarDel" }
+    ; 1 VARIANTÀÇ ¹è¿­À» ¸¸µì´Ï´Ù.  ÀÌ ¹æ¹ýÀ¸·Î ¸ðµç ³»Àå ÄÚµå´Â 
+    ; VARIANT¿Í AutoHotkey ³»ºÎ À¯Çü »çÀÌÀÇ ¸ðµç º¯È¯À» ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+    arr := ComObjArray(Type, 1)
+    ; ±× ¹è¿­À» Àá±×°í VARIANT¸¦ °¡¸®Å°´Â Æ÷ÀÎÅ͸¦ ¿­¶÷ÇÕ´Ï´Ù.
+    DllCall("oleaut32\SafeArrayAccessData", "ptr", ComObjValue(arr), "ptr*", arr_data)
+    ; ±× ¹è¿­À» ÀúÀåÇÕ´Ï´Ù. ±×¸®°í VARIANT ByRef¸¦ °Ç³×´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ´Â °´Ã¼¸¦ ÀúÁ¤ÇÕ´Ï´Ù.
+    return { ref: ComObject(0x4000|Type, arr_data), _: arr, base: base }
+}
+
+ComVarGet(cv, p*) { ; ½ºÅ©¸³Æ®°¡ ¹ÌÁöÀÇ Çʵ忡 Á¢±ÙÇϸé È£ÃâµË´Ï´Ù.
+    if p.MaxIndex() = "" ; À̸§/¸Å°³º¯¼ö ¾øÀ½. Áï, cv[]
+        return cv._[0]
+}
+
+ComVarSet(cv, v, p*) { ; ½ºÅ©¸³Æ®°¡ ¹ÌÁöÀÇ Çʵ带 ¼³Á¤ÇÒ ¶§ È£ÃâµË´Ï´Ù.
+    if p.MaxIndex() = "" ; À̸§/¸Å°³º¯¼ö ¾øÀ½. Áï, cv[]:=v
+        return cv._[0] := v
+}
+
+ComVarDel(cv) { ; °´Ã¼°¡ ÇØÁ¦µÉ ¶§ È£ÃâµË´Ï´Ù.
+    ; ÀÌ°ÍÀÌ ¼º°øÇØ¾ß ³»ºÎ ¹è¿­ÀÌ ÇØÁ¦µÉ ¼ö ÀÖ½À´Ï´Ù.
+    DllCall("oleaut32\SafeArrayUnaccessData", "ptr", ComObjValue(cv._))
+}
+
+ + + diff --git a/src/docs/commands/ComObjArray.htm b/src/docs/commands/ComObjArray.htm new file mode 100644 index 0000000..a3ad6ec --- /dev/null +++ b/src/docs/commands/ComObjArray.htm @@ -0,0 +1,96 @@ + + + + +ComObjArray() + + + + + + + +

ComObjArray() [v1.0.91+]

+ +

COM¿¡ »ç¿ëÇÒ SafeArray¸¦ »ý¼ºÇÕ´Ï´Ù.

+ +
ArrayObj := ComObjArray(VarType, Count1 [, Count2, ... Count8])
+ +

¸Å°³º¯¼ö

+
+ +
VarType
+
+ ¹è¿­ÀÇ ±âº» À¯Çü (¹è¿­ÀÇ °¢ ¿ø¼ÒÀÇ VARTYPE). VARTYPEÀº variant À¯ÇüÀÇ ºÎºÐÁýÇÕÀ¸·Î Á¦Çѵ˴ϴÙ. VT_ARRAYµµ VT_BYREF Ç÷¡±×µµ ¼³Á¤ÇÒ ¼ö ¾ø½À´Ï´Ù. VT_EMPTY¿Í VT_NULLÀº ¹è¿­¿¡ ´ëÇÏ¿© À¯È¿ÇÑ ±âº» À¯ÇüÀÌ ¾Æ´Õ´Ï´Ù. ´Ù¸¥ ¸ðµç À¯ÇüÀº Àû¹ýÇÕ´Ï´Ù. +

°¡´ÉÇÑ °ªÀÇ ¸ñ·ÏÀº ComObjType¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +
CountN
+

°¢ Â÷¿øÀÇ Å©±â. ¹è¿­Àº 8 Â÷¿ø±îÁö Áö¿øµË´Ï´Ù.

+ +
ArrayObj
+

SafeArray¸¦ ´ã°í ÀÖ´Â Æ÷Àå °´Ã¼.

+ +
+ +

¸Þ½îµå

+

+¹è¿­ Æ÷Àå °´Ã¼´Â ´ÙÀ½ ¸Þ½îµå¸¦ Áö¿øÇÕ´Ï´Ù:

+

Array.MaxIndex(n): n¹ø° Â÷¿øÀÇ »óÇÑ °ªÀ» µ¹·ÁÁÝ´Ï´Ù. nÀÌ »ý·«µÇ¸é ±âº»°ªÀº 1ÀÔ´Ï´Ù.

+

Array.MinIndex(n): n¹ø° Â÷¿øÀÌ ÇÏÇÑ °ªÀ» µ¹·ÁÁÝ´Ï´Ù. nÀÌ »ý·«µÇ¸é, ±âº»°ªÀº 1ÀÔ´Ï´Ù.

+

Array.Clone() [v1.0.96.00+]: ¹è¿­ÀÇ »çº»À» µ¹·ÁÁÝ´Ï´Ù.

+

Array._NewEnum() [v1.0.96.00+]: º¸Åë ½ºÅ©¸³Æ®°¡ È£ÃâÇÏÁö ¾Ê½À´Ï´Ù; for-ȸµ¹À̸¦ SafeArrays¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

ÃÑÆò

+

+COM ¸Þ½îµå¿Í ComObjActive´Â ¾î¶°ÇÑ Æ÷Àå °´Ã¼µµ µ¹·ÁÁÙ ¼ö ÀÖÀ¸¸ç ½ºÅ©¸³Æ®´Â °ªÀÌ ¹è¿­ÀÎÁö ´ÙÀ½°ú °°ÀÌ ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù:

+ +
if ComObjType(obj) & 0x2000
+    MsgBox % "Array subtype: " . ComObjType(obj) & 0xfff
+else
+    MsgBox Not an array.
+

+ÃÖ´ë 8 Â÷¿ø±îÁö Áö¿øµË´Ï´Ù.

+

+[v1.0.96.00+]: ¾ÈÀü¹è¿­(SafeArrays)´Â ´ÙÁß ÂüÁ¶¸¦ Áö¿øÇϵµ·Ï ¼³°èµÇ¾î ÀÖÁö ¾Ê±â ¶§¹®¿¡, ÇÑ ¾ÈÀü¹è¿­ÀÌ ¶Ç´Ù¸¥ ¾ÈÀü¹è¿­ÀÇ ¿ø¼Ò·Î ÇÒ´çµÉ ¶§, »çº»ÀÌ µû·Î »ý¼ºµË´Ï´Ù. ±×·¸Áö¸¸, ÀÌ·± ÀÏÀº ±× Æ÷Àå °´Ã¼¿¡ F_OWNVALUE Ç÷¡±×°¡ ÀÖÀ» °æ¿ì¿¡¸¸ ÀϾ´Ï´Ù. ÀÌ Ç÷¡±×´Â ±× ¹è¿­À» Æı«ÇÒ Ã¥ÀÓÀÌ ÀÖ´Ù´Â ¶æÀ» ³ªÅ¸³À´Ï´Ù. ComObjFlags¸¦ »ç¿ëÇϸé ÀÌ Ç÷¡±×¸¦ Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

[v1.1.17.00+]: COM Ŭ¶óÀ̾ðÆ®¿¡ ÀÇÇÏ¿© È£ÃâµÇ´Â ÇÔ¼ö³ª ¸Þ½îµå°¡ F_OWNVALUE¸¦ °¡Áø ¾ÈÀü¹è¿­À» µ¹·ÁÁÖ¸é, ´ë½Å¿¡ »çº»ÀÌ »ý¼ºµÇ°í ¹ÝȯµË´Ï´Ù. ¿ø·¡ÀÇ SafeArray´Â ÀÚµ¿À¸·Î Æı«µË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

ComObjType, ComObjValue, ComObjActive, ComObjFlags, ¹è¿­ Á¶ÀÛ ÇÔ¼ö (MSDN)

+ +

¿¹Á¦

+
; ¿¹Á¦ #1: °£´ÜÇÑ »ç¿ë¹ý.
+
+arr := ComObjArray(VT_VARIANT:=12, 3)
+arr[0] := "Auto"
+arr[1] := "Hot"
+arr[2] := "key"
+Loop % arr.MaxIndex() + 1
+   t .= arr[A_Index-1]
+MsgBox % t
+
+ +
; ¿¹Á¦ #2: ´Ù Â÷¿ø.
+
+arr := ComObjArray(VT_VARIANT:=12, 3, 4)
+
+; Â÷¿øÀÇ °³¼ö¸¦ ¾ò½À´Ï´Ù:
+dim := DllCall("oleaut32\SafeArrayGetDim", "ptr", ComObjValue(arr))
+
+; °¢ Â÷¿øÀÇ »óÇÑ°ª°ú ÇÏÇÑ°ªÀ» ¾ò½À´Ï´Ù:
+Loop %dim%
+    dims .= arr.MinIndex(A_Index) " .. " arr.MaxIndex(A_Index) "`n"
+MsgBox %dims%
+
+; °£´ÜÇÑ »ç¿ë¹ý:
+Loop 3 {
+    x := A_Index-1
+    Loop 4 {
+        y := A_Index-1
+        arr[x, y] := x * y
+    }
+}
+MsgBox % arr[2, 3]
+
+ + + diff --git a/src/docs/commands/ComObjConnect.htm b/src/docs/commands/ComObjConnect.htm new file mode 100644 index 0000000..c3ce70d --- /dev/null +++ b/src/docs/commands/ComObjConnect.htm @@ -0,0 +1,85 @@ + + + + +ComObjConnect() + + + + + + + +

ComObjConnect() [AHK_L 53+]

+

°´Ã¼ÀÇ À̺¥Æ® ¼Ò½º¸¦ ÁÖ¾îÁø Á¢µÎ»ç¸¦ °¡Áø ÇÔ¼ö¿¡ ¿¬°áÇÕ´Ï´Ù.

+
ComObjConnect(ComObject [, Prefix])
+ +

¸Å°³º¯º¯¼ö

+
+ +
ComObject
+
+

À̺¥Æ®¸¦ ÀÏÀ¸Å°´Â °´Ã¼.

+

°´Ã¼°¡ IConnectionPointContainer ÀÎÅÍÆäÀ̽º¸¦ Áö¿øÇÏÁö ¾Ê°Å³ª ¶Ç´Â °´Ã¼ÀÇ Å¬·¡½º¿¡ °üÇÑ À¯ÇüÁ¤º¸¸¦ ¿­¶÷ÇÒ ¼ö ¾øÀ¸¸é, ¿¡·¯ ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù. ÀÌ°ÍÀº ComObjError ¶Ç´Â try/catchÀ¸·Î ¾ï´©¸£°Å³ª ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

[v1.1.22]+¿¡¼­, IProvideClassInfo ÀÎÅÍÆäÀ̽º¸¦ °´Ã¼°¡ Áö¿øÇÏ¸é ±× Å¬·¡½ºÀÇ °üÇÑ À¯ÇüÁ¤º¸¸¦ ¿­¶÷ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ComObjConnect´Â °´Ã¼ÀÇ IDispatch ÀÎÅÍÆäÀ̽º¸¦ ÅëÇÏ À¯Çü Á¤º¸¸¦ ¿­¶÷ÇÏ·Á°í ½ÃµµÇϴµ¥, ÀÌ°ÍÀº ½Å·Ú¼ºÀÌ ¶³¾îÁý´Ï´Ù.

+
+ +
Prefix
+
+

À̺¥Æ® À̸§ ¾Õ¿¡ ºÙÀÏ ¹®ÀÚ¿­. À̺¥Æ®°¡ ÀϾ ¶§ È£ÃâÇÒ ÇÔ¼ö¸¦ °áÁ¤ÇÕ´Ï´Ù.

+

»ý·«Çϸé, °´Ã¼°¡ "¿¬°áÀÌ ²÷±é´Ï´Ù"; Áï, ½ºÅ©¸³Æ®´Â ´õ ÀÌ»ó ±×ÀÇ À̺¥Æ® °íÁö¸¦ ¹ÞÁö ¾Ê½À´Ï´Ù.

+

[v1.1.01+]: ÀÌ ¸Å°³º¯¼ö´Â ½ºÅ©¸³Æ®°¡ ÁöÁ¤ÇÑ °´Ã¼ÀÏ ¼ö ÀÖ½À´Ï´Ù. À̺¥Æ®°¡ ÀϾ¸é, ±×¿¡ »óÀÀÇÏ´Â ¸Þ½îµå°¡ È£ÃâµË´Ï´Ù. ù ¸Å°³º¯¼ö´Â º¸Åë ¼ûÀº this ¸Å°³º¯¼öÀÔ´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â COM °´Ã¼ ¸»°í ½ºÅ©¸³Æ®¿¡-Á¤ÀÇµÈ °´Ã¼¸¦ ÂüÁ¶ÇÕ´Ï´Ù. °¢ À̺¥Æ®¸¶´Ù ¸Þ½îµå¸¦ Á¤ÀÇÇÏÁö ¾Ê°í ¸ðµç À̺¥Æ®¸¦ ³ªÆ÷ÇÏ·Á¸é __Call ¸ÞŸ-ÇÔ¼ö¸¦ Á¤ÀÇÇϽʽÿÀ.

+
+ +
+ +

»ç¿ë¹ý

+

+È¿°úÀûÀ¸·Î ComObjConnect¸¦ »ç¿ëÇÏ·Á¸é, ¸ÕÀú °ü½ÉÀ» µÐ À̺¥Æ®¸¦ ó¸®ÇÒ ÇÔ¼ö¸¦ ½ºÅ©¸³Æ®¿¡ ÀÛ¼ºÇØ¾ß ÇÕ´Ï´Ù. "À̺¥Æ®-ó¸®ÀÚ"¶ó°í ÇÏ´Â ±×·± ÇÔ¼ö´Â ±¸Á¶°¡ ´ÙÀ½°ú °°½À´Ï´Ù:

+
PrefixEventName([Params..., ComObject])
+{
+    ... event-handling code ...
+    return returnValue
+}
+

Prefix´Â ¿©·¯ºÐÀÌ °í¸¥ Á¢µÎ»çÀÔ´Ï´Ù. ¹Ý¸é¿¡ EventNameÀº ÇÔ¼ö°¡ ó¸®ÇØ¾ß ÇÏ´Â À̺¥Æ®ÀÇ À̸§ÀÔ´Ï´Ù.

+

Params´Â À̺¥Æ®°¡ °¡Áø ¸Å°³º¯¼ö¿¡ »óÀÀÇÕ´Ï´Ù. À̺¥Æ®¿¡ ¸Å°³º¯¼ö°¡ ¾øÀ¸¸é, Paramsµµ ¿ÏÀüÈ÷ »ý·«µÇ¾î¾ß ÇÕ´Ï´Ù. ComObject´Â ¼±ÅÃÀûÀÔ´Ï´Ù. ±×¸®°í ParamsÀÇ °³¼ö°¡ ¿Ã¹Ù¸£°Ô Á¤ÀǵǾî ÀÖÀ» °æ¿ì¿¡¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù; ±× ¾È¿¡ ComObjConnect¿¡ °Ç³Þ´ø ¿ø·¡ Æ÷Àå °´Ã¼¸¦ °¡¸®Å°´Â ÂüÁ¶°¡ µé¾î ÀÖ½À´Ï´Ù. "ComObject"´Â ¿©·¯ºÐÀÇ ½ºÅ©¸³Æ® ¹®¸Æ¿¡ ¸Â°Ô º¸´Ù ÀǹÌÀÖ´Â À̸§À¸·Î ±³Ã¼µÇ¾î¾ß ÇÕ´Ï´Ù.

+

+À̺¥Æ® ó¸®ÀÚ´Â ¹Ýȯ °ªÀÌ ÀÖÀ» ¼ö ÀÖ´Ù´Â »ç½Ç¿¡ ÁÖ¸ñÇϽʽÿÀ. COM-Á¾¼ÓÀû À¯ÇüÀÇ °ªÀ» µ¹·ÁÁÖ·Á¸é, ComObject(type, value)¸¦ »ç¿ëÇϽʽÿÀ. ¿¹¸¦ µé¾î, return ComObject(0,0)´Â variant À¯ÇüÀÇ VT_EMPTY¸¦ µ¹·ÁÁÝ´Ï´Ù. ÀÌ°ÍÀº ÀÚ¹Ù½ºÅ©¸³Æ®¿¡¼­ undefined¸¦ µ¹·ÁÁÖ´Â °Í (¶Ç´Â ¾Æ¹«°Íµµ µ¹·ÁÁÖÁö ¾Ê´Â °Í)°ú µ¿µîÇÕ´Ï´Ù.

+

+À̺¥Æ® 󸮸¦ ÄÑ·Á¸é ComObjConnect(yourObject, "Prefix")¸¦ È£ÃâÇÕ´Ï´Ù.

+

+°´Ã¼¿Í ¿¬°áÀ» ²÷À¸·Á¸é (À̺¥Æ® 󸮸¦ ÁßÁöÇÏ·Á¸é) ComObjConnect(yourObject)¸¦ È£ÃâÇÕ´Ï´Ù.

+

+¸Å°³º¯¼ö °³¼ö¸¦ ¾ËÁö ¸øÇϸé, °¡º¯ ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

ComObjCreate, ComObjGet, ComObjActive, ComObjError, WScript.ConnectObject (MSDN)

+ +

¿¹Á¦

+
+ie := ComObjCreate("InternetExplorer.Application")
+
+; »óÀÀÇÏ´Â ½ºÅ©¸³Æ® ÇÔ¼ö¿¡ Á¢µÎ»ç¸¦ "IE_"·Î ÇÏ¿© À̺¥Æ®¸¦ ¿¬°áÇÕ´Ï´Ù.
+ComObjConnect(ie, "IE_")
+
+ie.Visible := true  ; ÀÌ°ÍÀº IE7¿¡¼­ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù°í ¾Ë·ÁÁ® ÀÖ½À´Ï´Ù.
+ie.Navigate("http://ahkscript.org/")
+#Persistent
+
+IE_DocumentComplete(ieEventParam, url, ieFinalParam) {
+    global ie
+    if (ie != ieEventParam)
+        s .= "ù ¸Å°³º¯¼ö´Â »õ Æ÷Àå °´Ã¼ÀÔ´Ï´Ù.`n"
+    if (ie == ieFinalParam)
+        s .= "¸¶Áö¸· ¸Å°³º¯¼ö´Â ¿ø·¡ Æ÷Àå °´Ã¼ÀÔ´Ï´Ù.`n"
+    if ((disp1:=ComObjUnwrap(ieEventParam)) == (disp2:=ComObjUnwrap(ieFinalParam)))
+        s .= "µÎ Æ÷Àå °´Ã¼ ¸ðµÎ °°Àº IDispatch ½Çü¸¦ °¡¸®Åµ´Ï´Ù.`n"
+    ObjRelease(disp1), ObjRelease(disp2)
+    MsgBox % s . "Finished loading " ie.Document.title " @ " url
+    ie.Quit()
+    ExitApp
+}
+
+ + + diff --git a/src/docs/commands/ComObjCreate.htm b/src/docs/commands/ComObjCreate.htm new file mode 100644 index 0000000..bf14d15 --- /dev/null +++ b/src/docs/commands/ComObjCreate.htm @@ -0,0 +1,49 @@ + + + + +ComObjCreate() + + + + + + + +

ComObjCreate() [AHK_L 53+]

+

COM °´Ã¼¸¦ ¸¸µì´Ï´Ù.

+
ComObject := ComObjCreate(CLSID [, IID])
+ +

¸Å°³º¯¼ö

+
+ +
CLSID
+

CLSID ¶Ç´Â Àΰ£ÀÌ-ÀÐÀ» ¼ö ÀÖ´Â COM °´Ã¼ÀÇ Prog ID.

+ +
IID
+

[v1.0.96.00+]: °´Ã¼°¡ Áö¿øÇÏ´Â ÀÎÅÍÆäÀ̽ºÀÇ ½Äº°ÀÚ.

+ +
+ +

¹Ýȯ °ª

+

+¿¡·¯°¡ ÀϾ¸é, ºó ¹®ÀÚ¿­ÀÌ ¹ÝȯµË´Ï´Ù.

+

+IID°¡ ÁöÁ¤µÇ¸é, ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅÍ°¡ ¹ÝȯµË´Ï´Ù. ½ºÅ©¸³Æ®´Â Æ÷ÀÎÅÍ ÀÛ¾÷ÀÌ ³¡³ª¸é ÀüÇüÀûÀ¸·Î ObjRelease¸¦ È£ÃâÇÕ´Ï´Ù.

+

+±×·¸Áö ¾ÊÀ¸¸é, ½ºÅ©¸³Æ®°¡ »ç¿ëÇÒ ¼ö ÀÖ´Â Æ÷Àå °´Ã¼°¡ ¹ÝȯµË´Ï´Ù. °´Ã¼ ±¸¹®À» ÂüÁ¶ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+ComObjGet, ComObjActive, ComObjConnect, ComObjArray, ComObjError, ComObjQuery, CreateObject (MSDN) + +

¿¹Á¦

+

+°è¼ÓÇؼ­ Áõ°¡ÇÏ´Â ¸®½ºÆ®ÀÇ ¿¹´Â ´ÙÀ½ Æ÷·³ÀÇ ÅäÇÈÀ» ÂüÁ¶ÇϽʽÿÀ: http://www.autohotkey.com/forum/topic61509.html.

+
+ie := ComObjCreate("InternetExplorer.Application")
+ie.Visible := true  ; IE7¿¡ ´ëÇؼ­´Â Àß ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù°í ¾Ë·ÁÁ® ÀÖ½À´Ï´Ù.
+ie.Navigate("http://ahkscript.org/")
+
+ + + diff --git a/src/docs/commands/ComObjError.htm b/src/docs/commands/ComObjError.htm new file mode 100644 index 0000000..af3b8d1 --- /dev/null +++ b/src/docs/commands/ComObjError.htm @@ -0,0 +1,37 @@ + + + + +ComObjError() + + + + + + + +

ComObjError() [AHK_L 53+]

+ +

COM ¿¡·¯ÀÇ °íÁö¸¦ ÄÑ°í ²ü´Ï´Ù.

+ +
Enabled := ComObjError([Enable])
+

Parameters

+
+ +
Enable
+

ºÒ¸®¾ð °ª (true ¶Ç´Â false). ¼±ÅÃÀû.

+ +
Enabled
+

[v1.0.91+]: ÀÌ ÇÔ¼ö°¡ È£ÃâµÇ±â Àü¿¡ È¿°ú°¡ ÀÖ´ø °ªÀ»¹Þ½À´Ï´Ù.

+ +
+ +

ÃÑÆò

+

+COM °´Ã¼¿¡ Á¢±ÙÇÏ°í ³ª¸é, A_LastError¿¡´Â COM °´Ã¼ÀÇ IDispatch::Invoke ÇÔ¼ö°¡ µ¹·ÁÁÖ´Â HRESULT Äڵ尡 ´ã±é´Ï´Ù. ½ºÅ©¸³Æ®´Â ÀڽŸ¸ÀÇ ¿¡·¯-󸮸¦ ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù. ComObjError(false)¸¦ È£ÃâÇÏ¿© ¿¡·¯ °íÁö¸¦ ²ô°í A_LastErrorÀÇ °ªÀ» Âü°íÇÏ¸é µË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

ComObjCreate, ComObjGet, ComObjActive, ComObjConnect

+ + + diff --git a/src/docs/commands/ComObjFlags.htm b/src/docs/commands/ComObjFlags.htm new file mode 100644 index 0000000..b3ee198 --- /dev/null +++ b/src/docs/commands/ComObjFlags.htm @@ -0,0 +1,80 @@ + + + + +ComObjFlags() + + + + + + + + +

ComObjFlags() [v1.0.96.00+]

+

COM Æ÷Àå °´Ã¼ÀÇ ÇàÀ§¸¦ Á¦¾îÇÏ´Â Ç÷¡±×¸¦ ¿­¶÷Çϰųª ¹Ù²ß´Ï´Ù.

+
Flags := ComObjFlags(ComObject [, NewFlags, Mask])
+ +

¸Å°³º¯¼ö

+
+ +
ComObject
+

COM Æ÷Àå °´Ã¼.

+ +
NewFlags
+

Mask·Î ½Äº°µÇ´Â ÇÁ·¡±×¿¡ ´ëÇÑ »õ °ª, ¶Ç´Â Ãß°¡Çϰųª ´õÇÒ Ç÷¡±×.

+ +
Mask
+

¹Ù²Ü ºñÆ®¸¶½ºÅ© Ç÷¡±×.

+ +
Flags
+

ComObject°´Ã¼ÀÇ ¸ðµç Ç÷¡±× (ÁöÁ¤Çϸé, NewFlags°¡ Àû¿ëµÈ ÈÄÀÇ).

+ +
+ +

Flags

+ + + + + +
F_OWNVALUE
1
+ ÇöÀç´Â ¿ÀÁ÷ SafeArrays¿¡¸¸ ¿µÇâÀ» ÁÝ´Ï´Ù. ÀÌ Ç÷¡±×°¡ ¼³Á¤µÇ¸é, SafeArray´Â Æ÷Àå °´Ã¼°¡ ÇØÁ¦µÉ ¶§ Æı«µË´Ï´Ù. SafeArrays´Â ÂüÁ¶ Ƚ¼ö ¼¼±â ¸ÞÄ¿´ÏÁòÀÌ ¾øÀ¸¹Ç·Î, ¸¸¾à ÀÌ Ç÷¡±×¸¦ °¡Áø SafeArray°¡ ¶Ç´Ù¸¥ SafeArrayÀÇ ÇÑ ¿ø¼Ò¿¡ ÇÒ´çµÇ¸é, µû·Î »çº»ÀÌ »ý¼ºµË´Ï´Ù.
+ +

ÃÑÆò

+

+Mask¸¦ »ý·«Çϸé, NewFlags´Â (¾ç¼öÀ̸é) ´õÇÒ Ç÷¡±×, (À½¼öÀ̸é) Á¦°ÅÇÒ Ç÷¡±×¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ComObjFlags(obj, -1)´Â F_OWNVALUE Ç÷¡±×¸¦ Á¦°ÅÇÕ´Ï´Ù. Mask¿¡´Â 0À̳ª 1¸»°í ´Ù¸¥ °ªÀ» ÁöÁ¤ÇÏÁö ¸¶½Ê½Ã¿À; ´Ù¸¥ ¸ðµç ºñÆ®´Â ¹Ì·¡¿¡ »ç¿ëÇÒ ¸ñÀûÀ¸·Î ¿¹¾àµÇ¾î ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

ComObjActive, ComObjArray

+ +

¿¹Á¦

+
; ¿¹Á¦: F_OWNVALUE Çñ׷¡°¡ ÀÖ´ÂÁö Á¡°ËÇÕ´Ï´Ù.
+
+arr := ComObjArray(0xC, 1)
+if ComObjFlags(arr) & 1
+    MsgBox arrÀº ÀÚµ¿À¸·Î Æı«µË´Ï´Ù.
+else
+    MsgBox arr´Â ÀÚµ¿À¸·Î Æı«µÇÁö ¾Ê½À´Ï´Ù.
+
+ +
; ¿¹Á¦: ¹è¿­-¾ÈÀÇ ¹è¿­ ÇàÀ§ ¹Ù²Ù±â.
+
+arr1 := ComObjArray(0xC, 3)
+arr2 := ComObjArray(0xC, 1)
+arr2[0] := "original value"
+arr1[0] := arr2         ; ¹¬½ÃÀû »çº»À» ÇÒ´çÇÕ´Ï´Ù.
+ComObjFlags(arr2, -1)   ; F_OWNVALUE¸¦ Á¦°ÅÇÕ´Ï´Ù.
+arr1[1] := arr2         ; ¿øº» ¹è¿­À» ÇÒ´çÇÕ´Ï´Ù.
+arr1[2] := arr2.Clone() ; ¸í½ÃÀû »çº»À» ÇÒ´çÇÕ´Ï´Ù.
+arr2[0] := "new value"
+for arr in arr1
+    MsgBox % arr[0]
+
+arr1 := ""
+; arr2 == arr1[1]À̱⠶§¹®¿¡ À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ¹Ì Æı«µÇ¾ú½À´Ï´Ù: 
+;  arr2[0] := "foo"
+
+ + + diff --git a/src/docs/commands/ComObjGet.htm b/src/docs/commands/ComObjGet.htm new file mode 100644 index 0000000..445fef3 --- /dev/null +++ b/src/docs/commands/ComObjGet.htm @@ -0,0 +1,51 @@ + + + + +ComObjGet() + + + + + + + +

ComObjGet() [AHK_L 53+]

+

COM ÄÄÆ÷³ÍÆ®°¡ Á¦°øÇÑ °´Ã¼¸¦ °¡¸®Å°´Â ÂüÁ¶¸¦ µ¹·ÁÁÝ´Ï´Ù.

+
ComObject := ComObjGet(Name)
+ +

¸Å°³º¯¼ö

+
+ +
Name
+

¿­¶÷ °¡´ÉÇÑ °´Ã¼ÀÇ À̸§. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â MkParseDisplayName (MSDN)À» ÂüÁ¶ÇϽʽÿÀ.

+ +
+ +

°ü·Ã Ç׸ñ

+ComObjCreate, ComObjActive, ComObjConnect, ComObjError, ComObjQuery, CoGetObject (MSDN) + +

¿¹Á¦

+
; ¿¹Á¦: Shift+Escape¸¦ ´©¸£¸é È°¼º âÀÇ ÇÁ·Î¼¼½º¸¦
+;   ±âµ¿½ÃÅ°´Â µ¥ »ç¿ëµÈ ¸í·ÉÁÙ À» º¼ ¼ö ÀÖ½À´Ï´Ù.
++Esc::
+    WinGet pid, PID, A
+    ; WMI ¼­ºñ½º °´Ã¼¸¦ ¾ò½À´Ï´Ù.
+    wmi := ComObjGet("winmgmts:")
+    ; ÁúÀǸ¦ ½ÇÇàÇØ ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º(µé)¸¦ ¿­¶÷ÇÕ´Ï´Ù.
+    queryEnum := wmi.ExecQuery(""
+        . "Select * from Win32_Process where ProcessId=" . pid)
+        ._NewEnum()
+    ; ù ¹ø°·Î ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º¸¦ ¾ò½À´Ï´Ù.
+    if queryEnum[process]
+        MsgBox 0, Command line, % process.CommandLine
+    else
+        MsgBox Process not found!
+    ; ¸ðµç Àü¿ª °´Ã¼¸¦ Ç®¾îÁÝ´Ï´Ù (Áö¿ª º¯¼ö¸¦ »ç¿ëÇÒ ¶§´Â ÇÊ¿äÄ¡ ¾ÊÀ½).
+    wmi := queryEnum := process := ""
+return
+; Win32_Process: http://msdn.microsoft.com/en-us/library/aa394372.aspx
+
+ + + diff --git a/src/docs/commands/ComObjQuery.htm b/src/docs/commands/ComObjQuery.htm new file mode 100644 index 0000000..9434587 --- /dev/null +++ b/src/docs/commands/ComObjQuery.htm @@ -0,0 +1,121 @@ + + + + +ComObjQuery() + + + + + + + +

ComObjQuery() [v1.0.96.00+]

+

COM °´Ã¼¿¡ ÀÎÅÍÆäÀ̽º³ª ¼­ºñ½º°¡ ÀÖ´ÂÁö ÁúÀÇÇÕ´Ï´Ù.

+ +
InterfacePointer := ComObjQuery(ComObject, [SID,] IID)
+ +

¸Å°³º¯¼ö

+
+ +
ComObject
+

COM Æ÷Àå °´Ã¼ ¶Ç´Â ³¯ ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅÍ.

+ +
IID
+

ÀÎÅÍÆäÀ̽º ½Äº°ÀÚ (GUID). Çü½Ä "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}".

+ +
SID
+

¼­ºñ½º ½Äº°ÀÚ. IID¿Í Çü½ÄÀÌ °ª½À´Ï´Ù. ÀÌ ¸Å°³º¯¼ö°¡ »ý·«µÇ¸é, ½°Ç¥µµ »ý·«µË´Ï´Ù.

+ +
+ +

ÃÑÆò

+

+±×ÀÇ µÎ-¸Å°³º¯¼ö ¸ðµå¿¡¼­, ÀÌ ÇÔ¼ö´Â IUnknown::QueryInterface¿Í µ¿µîÇÕ´Ï´Ù. SID¿Í IID ¸ðµÎ ÁöÁ¤µÇ¸é, ³»ºÎÀûÀ¸·Î IServiceProvider ÀÎÅÍÆäÀ̽º¿¡ ÁúÀÇÇÑ ´ÙÀ½, IServiceProvider::QueryService¸¦ È£ÃâÇÕ´Ï´Ù. ¾î´À °æ¿ìµç, ¹Ýȯ °ªÀº 0 À̰ųª ¾Æ´Ï¸é ¿äûµÈ ÀÎÅÍÆäÀ̽º¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍÀÔ´Ï´Ù. ÀϹÝÀûÀ¸·Î ÀÌ Æ÷ÀÎÅÍ´Â ¹Ýµå½Ã ½ºÅ©¸³Æ®°¡ ÀÏÀ» ¸¶Ä¥ ¶§ ÇØÁ¦µÇ¾î¾ß ÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+ObjRelease, ComObjCreate, ComObjGet, ComObjActive, ComObjError + +

¿¹Á¦

+ +
; ¿¹Á¦: °´Ã¼ÀÇ Å¬·¡½º À̸§À» ¾Ë¾Æ³À´Ï´Ù
+
+obj := ComObjCreate("Scripting.Dictionary")
+
+MsgBox % "Interface name: " ComObjType(obj, "name")
+
+IID_IProvideClassInfo := "{B196B283-BAB4-101A-B69C-00AA00341D07}"
+
+; ±× °´Ã¼ÀÇ IProvideClassInfo ÀÎÅÍÆäÀ̽º¸¦ °¡¸®Å°´Â Æ÷ÀÎÅ͸¦ ¿ä±¸ÇÕ´Ï´Ù.
+if !(pci := ComObjQuery(obj, IID_IProvideClassInfo))
+{
+    MsgBox IProvideClassInfo interface not supported.
+    return
+}
+
+; GetClassInfo¸¦ È£ÃâÇØ ITypeInfo ÀÎÅÍÆäÀ̽º¸¦ °¡¸®Å°´Â Æ÷ÀÎÅ͸¦ ¿­¶÷ÇÕ´Ï´Ù.
+DllCall(vtable(pci, 3), "ptr", pci, "ptr*", ti)
+
+; GetDocumentationÀ» È£ÃâÇÏ¿© ±× °´Ã¼ÀÇ ¿ÏÀüÇÑ À¯Çü À̸§À» ¾ò½À´Ï´Ù.
+DllCall(vtable(ti, 12), "ptr", ti, "int", -1, "ptr*", name, "ptr", 0, "ptr", 0, "ptr", 0)
+
+; BSTR Æ÷ÀÎÅ͸¦ ¾µ¸ðÀÖ´Â ¹®ÀÚ¿­·Î º¯È¯ÇÕ´Ï´Ù.
+name := StrGet(name, "UTF-16")
+
+; ³¯ ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅ͵éÀ» ÇØÁ¦ÇÕ´Ï´Ù.
+ObjRelease(ti)
+ObjRelease(pci)
+
+; À¯Çü À̸§À» º¸¿©ÁÝ´Ï´Ù!
+MsgBox % "Class name: " name
+
+vtable(ptr, n) {
+    ; NumGet(ptr+0)Àº ±× °´Ã¼ÀÇ °¡»ó ÇÔ¼ö Å×À̺íÀÇ (¾àÀÚ·Î vtable)
+    ; ÁÖ¼Ò¸¦ µ¹·ÁÁÝ´Ï´Ù. Ç¥Çö½ÄÀÇ ³ª¸ÓÁö´Â n¹ø° ÇÔ¼öÀÇ ÁÖ¼Ò¸¦
+    ; vtable·ÎºÎÅÍ ¿­¶÷ÇÕ´Ï´Ù.
+    return NumGet(NumGet(ptr+0), n*A_PtrSize)
+}
+
+ +
; ¿¹Á¦: ±âÁ¸ÀÇ ÀÎÅÍ³Ý ÀͽºÇ÷η¯ âÀ» ÀÚµ¿È­Çϱâ.
+
+sURL := "http://ahkscript.org/boards/"
+if webBrowser := GetWebBrowser()
+   webBrowser.Navigate(sURL)
+return
+
+GetWebBrowser()
+{
+    ; ÃÖ»óÀ§ IE âÀÇ ¹®¼­ °´Ã¼¸¦ °¡¸®Å°´Â ³¯ Æ÷ÀÎÅ͸¦ ¾ò½À´Ï´Ù.
+    static msg := DllCall("RegisterWindowMessage", "str", "WM_HTML_GETOBJECT")
+    SendMessage msg, 0, 0, Internet Explorer_Server1, ahk_class IEFrame
+    if ErrorLevel = FAIL
+        return  ; IE°¡ ¹ß°ßµÇÁö ¾ÊÀ½.
+    lResult := ErrorLevel
+    DllCall("oleacc\ObjectFromLresult", "ptr", lResult
+        , "ptr", GUID(IID_IHTMLDocument2,"{332C4425-26CB-11D0-B483-00C04FD90119}")
+        , "ptr", 0, "ptr*", pdoc)
+    
+    ; WebBrowserApp ¼­ºñ½º¿¡ ÁúÀÇÇÕ´Ï´Ù. ÀÌ Æ¯º°ÇÑ °æ¿ì´Â
+    ; SID¿Í IID°¡ °°½À´Ï´Ù. ±×·¯³ª ¾ðÁ¦³ª ÀÌ·± °ÍÀº ¾Æ´Õ´Ï´Ù.
+    static IID_IWebBrowserApp := "{0002DF05-0000-0000-C000-000000000046}"
+    static SID_SWebBrowserApp := IID_IWebBrowserApp
+    pweb := ComObjQuery(pdoc, SID_SWebBrowserApp, IID_IWebBrowserApp)
+    
+    ; ¹®¼­ °´Ã¼ Æ÷ÀÎÅ͸¦ Ç®¾îÁÝ´Ï´Ù.
+    ObjRelease(pdoc)
+    
+    ; WebBrowser °´Ã¼¸¦, »ç¿ëÀ» À§ÇØ Æ÷ÀåÇؼ­, ¹ÝȯÇÕ´Ï´Ù:
+    static VT_DISPATCH := 9, F_OWNVALUE := 1
+    return ComObject(VT_DISPATCH, pweb, F_OWNVALUE)
+}
+
+GUID(ByRef GUID, sGUID) ; ¹®ÀÚ¿­À» ÀÌÁø GUID·Î º¯È¯ÇÏ°í ±×ÀÇ ÁÖ¼Ò¸¦ µ¹·ÁÁÝ´Ï´Ù.
+{
+    VarSetCapacity(GUID, 16, 0)
+    return DllCall("ole32\CLSIDFromString", "wstr", sGUID, "ptr", &GUID) >= 0 ? &GUID : ""
+}
+
+ + + diff --git a/src/docs/commands/ComObjType.htm b/src/docs/commands/ComObjType.htm new file mode 100644 index 0000000..a5f676b --- /dev/null +++ b/src/docs/commands/ComObjType.htm @@ -0,0 +1,98 @@ + + + + +ComObjType() + + + + + + + +

ComObjType() [v1.0.91+]

+ +

À¯Çü Á¤º¸¸¦ COM °´Ã¼·ÎºÎÅÍ ¿­¶÷ÇÕ´Ï´Ù.

+ +
VarType := ComObjType(ComObject)
+Name    := ComObjType(ComObject, "Name")
+IID     := ComObjType(ComObject, "IID")
+ +

¸Å°³º¯¼ö

+
+ +
ComObject
+

COM °´Ã¼ ¶Ç´Â À¯Çü ÀÖ´Â °ªÀ» ´ã°í ÀÖ´Â Æ÷Àå °´Ã¼.

+ +
VarType
+

°ªÀÇ À¯ÇüÀ» ³ªÅ¸³»´Â Á¤¼ö. ¾Æ·¡ ÂüÁ¶.

+ +
Name
+

ÀÎÅÍÆäÀ̽º À¯Çü À̸§.

+ +
IID
+

ÀÎÅÍÆäÀ̽º À¯ÇüÀ» ³ªÅ¸³»´Â Àü¿ªÀûÀ¸·Î À¯ÀÏÇÑ ½Äº°ÀÚ (GUID)

+ +
+ +

¹Ýȯ °ª

+

+µÎ ¹ø° ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, Æ÷Àå °´Ã¼¿¡ ´ã±ä variant À¯ÇüÀÇ °ªÀÌ ¹ÝȯµË´Ï´Ù.

+

+µÎ ¹ø° ¸Å°³º¯¼ö°¡ "Name" ¶Ç´Â "IID"ÀÌ°í Æ÷Àå °´Ã¼¿¡ COM °´Ã¼°¡ µé¾î ÀÖÀ¸¸é (variant À¯Çü VT_DISPATCH), ±× COM °´Ã¼ÀÇ À¯Çü À̸§ ¶Ç´Â ±×ÀÇ Ã¹ ÀÎÅÍÆäÀ̽ºÀÇ ½Äº°ÀÚ°¡ ¹ÝȯµË´Ï´Ù.

+

¸Å°³º¯¼ö°¡ À¯È¿ÇÏÁö ¾Ê°Å³ª ¿¡·¯°¡ ÀϾ¸é, ºó ¹®ÀÚ¿­ÀÌ ¹ÝȯµË´Ï´Ù.

+ +

Variant À¯ÇüÀÇ »ó¼öµé

+
+VT_EMPTY     =      0  ; °ª ¾øÀ½
+VT_NULL      =      1  ; SQL-½ºÅ¸ÀÏÀÇ ³Î
+VT_I2        =      2  ; 16-ºñÆ® À¯ºÎÈ£ Á¤¼ö
+VT_I4        =      3  ; 32-ºñÆ® À¯ºÎÈ£ Á¤¼ö
+VT_R4        =      4  ; 32-ºñÆ® ºÎµ¿ ¼Ò¼öÁ¡ ¼ö 
+VT_R8        =      5  ; 64-ºñÆ® ºÎµ¿ ¼Ò¼öÁ¡ ¼ö
+VT_CY        =      6  ; È­Æó
+VT_DATE      =      7  ; ³¯Â¥
+VT_BSTR      =      8  ; COM ¹®ÀÚ¿­ (°íÁ¤ ±æÀÌÀÇ À¯´ÏÄÚµå ¹®ÀÚ¿­)
+VT_DISPATCH  =      9  ; COM °´Ã¼
+VT_ERROR     =    0xA  ; ¿¡·¯ ÄÚµå (32-ºñÆ® Á¤¼ö)
+VT_BOOL      =    0xB  ; ºÒ¸®¾ð True (-1) ¶Ç´Â False (0)
+VT_VARIANT   =    0xC  ; VARIANT (¹Ýµå½Ã VT_ARRAY ¶Ç´Â VT_BYREF¿Í Á¶ÇÕÇØ »ç¿ëÇØ¾ß ÇÔ)
+VT_UNKNOWN   =    0xD  ; IUnknown ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅÍ
+VT_DECIMAL   =    0xE  ; (Áö¿ø ¾ÈÇÔ)
+VT_I1        =   0x10  ; 8-ºñÆ® À¯ºÎÈ£ Á¤¼ö
+VT_UI1       =   0x11  ; 8-ºñÆ® ¹«ºÎÈ£ Á¤¼ö
+VT_UI2       =   0x12  ; 16-ºñÆ® ¹«ºÎÈ£ Á¤¼ö
+VT_UI4       =   0x13  ; 32-ºñÆ® ¹«ºÎÈ£ Á¤¼ö
+VT_I8        =   0x14  ; 64-ºñÆ® À¯ºÎÈ£ Á¤¼ö
+VT_UI8       =   0x15  ; 64-ºñÆ® ¹«ºÎÈ£ Á¤¼ö
+VT_INT       =   0x16  ; À¯ºÎÈ£ ¸Ó½Å Á¤¼ö
+VT_UINT      =   0x17  ; ¹«ºÎÈ£ ¸Ó½Å Á¤¼ö
+VT_RECORD    =   0x24  ; »ç¿ëÀÚ-Á¤ÀÇ À¯Çü -- Áö¿øÇÏÁö ¾ÊÀ½
+VT_ARRAY     = 0x2000  ; SAFEARRAY
+VT_BYREF     = 0x4000  ; ¶Ç´Ù¸¥ À¯ÇüÀÇ °ªÀ» °¡¸®Å°´Â Æ÷ÀÎÅÍ
+/*
+ VT_ARRAY¿Í VT_BYREF´Â ¶Ç´Ù¸¥ °ª°ú Á¶ÇÕÇÏ¿© (ºñÆ®º° ORÀ» »ç¿ë) Á¤È®ÇÑ À¯ÇüÀ» ÁöÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¸é, 0x2003´Â 32-ºñÆ® À¯ºÎÈ£ Á¤¼ö·Î ±¸¼ºµÈ SAFEARRAY·Î ½Äº°µÇ°í 0x400C´Â  VARIANT¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ·Î ½Äº°µË´Ï´Ù.
+*/
+
+ +

ÃÑÆò

+

+´ëºÎºÐÀÇ °æ¿ì, COM °´Ã¼ÀÇ ¸Þ½îµå³ª Ư¼ºÀ¸·ÎºÎÅÍ ¹ÝȯµÈ °ªÀº ¿ÀÅäÇÖÅ°°¡ Áö¿øÇÏ´Â ÀûÀýÇÑ µ¥ÀÌÅÍ À¯ÇüÀ¸·Î º¯È¯µË´Ï´Ù. ±¸Ã¼ÀûÀ¸·Î 󸮰¡ µÇÁö ¾Ê´Â À¯ÇüÀº VariantChangeType¸¦ ÅëÇÏ¿© °­Á¦·Î ¹®ÀÚ¿­·Î º¯È¯µË´Ï´Ù; ÀÌ°ÍÀÌ ½ÇÆÐÇϰųª variant À¯Çü¿¡ VT_ARRAY ¶Ç´Â VT_BYREF Ç÷¡±×°¡ µé¾î ÀÖ´Ù¸é, ´ë½Å¿¡ °ª°ú ±×ÀÇ À¯ÇüÀ» ¸ðµÎ ´ã°í ÀÖ´Â °´Ã¼°¡ ¹ÝȯµË´Ï´Ù.

+

+¸ðµç º¯¼ö x¿¡ ´ëÇÏ¿©, ¸¸¾à ComObjType(x)°¡ Á¤¼ö¸¦ µ¹·ÁÁÖ¸é, x¿¡´Â COM °´Ã¼ Æ÷ÀåÀÚ°¡ µé¾î ÀÖ½À´Ï´Ù.

+ + +

°ü·Ã Ç׸ñ

+

ComObjValue, ComObjCreate, ComObjGet, ComObjActive

+ +

¿¹Á¦

+
+d := ComObjCreate("Scripting.Dictionary")
+VarType := ComObjType(d)          ; ¾ðÁ¦³ª 9´Â ½ºÅ©¸³Æ®¸¦ È£ÃâÇÒ ¼ö ÀÖ´Â °´Ã¼¸¦ ¶æÇÕ´Ï´Ù.
+Name    := ComObjType(d, "Name")  ; ½ºÅ©¸³Æ² È£ÃâÇÒ ¼ö ÀÖ´Â °´Ã¼¿¡¸¸ À¯È¿ÇÕ´Ï´Ù.
+IID     := ComObjType(d, "IID")   ; À§¿Í °°½À´Ï´Ù.
+MsgBox Variant type:`t%VarType%`nType name:`t%Name%`nInterface ID:`t%IID%
+
+ + + diff --git a/src/docs/commands/ComObjValue.htm b/src/docs/commands/ComObjValue.htm new file mode 100644 index 0000000..6272478 --- /dev/null +++ b/src/docs/commands/ComObjValue.htm @@ -0,0 +1,40 @@ + + + + +ComObjValue() + + + + + + + +

ComObjValue() [v1.0.91+]

+ +

COM Æ÷Àå °´Ã¼¿¡ ÀúÀåµÈ °ªÀ̳ª Æ÷ÀÎÅ͸¦ ¿­¶÷ÇÕ´Ï´Ù.

+ +
Value := ComObjValue(ComObject)
+ +

¸Å°³º¯¼ö

+
+ +
Value
+

64-ºñÆ® ºÎÈ£ÀÖ´Â Á¤¼ö.

+ +
ComObject
+

COM °´Ã¼ ¶Ç´Â À¯ÇüÀÌ ÀÖ´Â °ªÀ» ´ã°í ÀÖ´Â Æ÷Àå °´Ã¼.

+ +
+ +

ÃÑÆò

+

+ÀÌ ÇÔ¼ö´Â ¹ü¿ë ¸ñÀûÀÌ ¾Æ´Õ´Ï´Ù.

+

+ComObjValue¸¦ È£ÃâÇÏ´Â °ÍÀº variant.llVal¿Í µ¿µîÇÕ´Ï´Ù. ¿©±â¿¡¼­ ComObject´Â VARIANT ±¸Á¶Ã¼·Î Ãë±ÞµË´Ï´Ù. ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â ½ºÅ©¸³Æ®´Â ¸ðµÎ ¹Ýµå½Ã ¾î¶² À¯ÇüÀÇ °ªÀ» Æ÷Àå °´Ã¼°¡ °¡Áö°í ÀÖ´ÂÁö ±×¸®°í ¾î¶»°Ô Ãë±ÞÇØ¾ß ÇÒÁö ¾Ë°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅÍ°¡ ¹ÝȯµÇ¸é, Release´Â È£ÃâÇÏÁö ¸»¾Æ¾ß ÇÕ´Ï´Ù. ±×·¯³ª AddRef´Â ½ºÅ©¸³Æ®°¡ ±× Æ÷ÀÎÅ͸¦ °¡Áö°í ¹«¾ùÀ» Çϴ°¡¿¡ µû¶ó ÇÊ¿äÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

ComObjType, ComObjCreate, ComObjGet, ComObjActive

+ + + diff --git a/src/docs/commands/Continue.htm b/src/docs/commands/Continue.htm new file mode 100644 index 0000000..42ba2d8 --- /dev/null +++ b/src/docs/commands/Continue.htm @@ -0,0 +1,60 @@ + + + + +Continue + + + + + + + +

Continue

+ +

+ÇöÀç ³²Àº ȸµ¹ÀÌ ¹Ýº¹À» °Ç³Ê ¶Ù°í »õ ¹Ýº¹À» ½ÃÀÛÇÕ´Ï´Ù. ¾î¶² Á¾·ùÀÇ È¸µ¹ÀÌ ¾È¿¡µµ À¯È¿ÇÕ´Ï´Ù.

+ +
Continue [, LoopLabel]
+

+[AHK_L 59+]: ÁöÁ¤µÇ¸é, LoopLabelÀº ´ÙÀ½ ¼­¼ú¹®À» Àû¿ëÇØ¾ß ÇÒ È¸µ¹À̸¦ ½Äº°ÇÕ´Ï´Ù; ¶óº§ À̸§ ¶Ç´Â ¼ýÀÚ·Î ³»Æ÷ ·¹º§À» ÁöÁ¤ÇÕ´Ï´Ù. »ý·«Çϰųª 1À̸é, ÀÌ ¼­¼ú¹®Àº °¡Àå ¾ÈÂÊ È¸µÉÀÌ¿¡ Àû¿ëµË´Ï´Ù. LoopLabelÀº »ó¼ö °ªÀ̾î¾ß ÇÕ´Ï´Ù - º¯¼ö³ª Ç¥Çö½ÄÀº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ¶óº§À» ÁöÁ¤Çϸé, ȸµ¹ÀÌ ¸í·É¾î¸¦ Á÷Á¢ °¡¸®ÄÑ¾ß ÇÕ´Ï´Ù.

+

Continue´Â ȸµ¹ÀÌÀÇ ´Ý´Â ¹Ý°ýÈ£¿¡ µµ´ÞÇÑ °Í°ú °°ÀÌ ÇàÀ§ÇÕ´Ï´Ù:

+
    +
  1. A_Index¸¦ 1¸¸Å­ Áõ°¡½Ãŵ´Ï´Ù.
  2. +
  3. ȸµÉÀÌ ¸öüÀÇ ³ª¸ÓÁö¸¦ °Ç³Ê ¶Ý´Ï´Ù.
  4. +
  5. ȸµ¹ÀÌ Á¶°ÇÀ» ¸¸Á·ÇÏ´ÂÁö (ÀÖ´Ù¸é) Á¡°ËÇÕ´Ï´Ù. ¸¸Á·Çϸé, »õ ¹Ýº¹À» ½ÃÀÛÇÕ´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é ȸµ¹À̸¦ ³¡³À´Ï´Ù.
  6. +
+

+goto º¸´Ù Break¿Í ContinueÀÇ »ç¿ëÀ» ±ÇÀåÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ½ºÅ©¸³Æ®¸¦ Àб⠴õ ½±°í °ü¸®Çϱ⠴õ ½±±â ¶§¹®ÀÔ´Ï´Ù

+ +

°ü·Ã Ç׸ñ

+

Break, Loop, Until, While-ȸµ¹ÀÌ, For-ȸµ¹ÀÌ, ºí·Ï, ¶óº§

+ +

¿¹Á¦

+
; ÀÌ ¿¹Á¦´Â 5°³ÀÇ MsgBox¸¦ º¸¿©ÁÝ´Ï´Ù. °¢°¢ 6ºÎÅÍ 10±îÁö ´ã°í ÀÖ½À´Ï´Ù.
+; ȸµ¹ÀÌÀÇ ¾ÕÂÊ 5ȸ¿¡, "continue" ¸í·É¾î ¶§¹®¿¡
+; ȸµ¹ÀÌ°¡ MsgBox ÁÙ¿¡ µµÂøÇϱâ Àü¿¡ ´Ù½Ã ½ÃÀÛÇÏ´Â °ÍÀ» ÁÖ¸ñÇϽʽÿÀ.
+Loop, 10
+{
+    if A_Index <= 5
+        continue
+    MsgBox %A_Index%
+}
+
; ³»Æ÷ ȸµ¹ÀÌ ¾È¿¡¼­ ¹Ù±ù ȸµ¹À̸¦ °è¼ÓÇÕ´Ï´Ù.
+outer:
+Loop 3
+{
+    x := A_Index
+    Loop 3
+    {
+        if (x*A_Index = 4)
+            continue outer  ; continue 2 ¶Ç´Â goto continue_outer¿Í µ¿µîÇÕ´Ï´Ù.
+        MsgBox %x%,%A_Index%
+    }
+    continue_outer: ; goto¸¦ À§ÇÔ.
+    ErrorLevel:=ErrorLevel ; °³Á¤ÆÇ 57 ÀÌÀü¿¡¼­, ¶óº§Àº ºí·ÏÀÇ ³¡À» °¡¸®Å³ ¼ö ¾ø¾ú½À´Ï´Ù.
+}
+
+ + + diff --git a/src/docs/commands/Control.htm b/src/docs/commands/Control.htm new file mode 100644 index 0000000..c3e604d --- /dev/null +++ b/src/docs/commands/Control.htm @@ -0,0 +1,96 @@ + + + + +Control + + + + + + + +

Control

+ +

ÄÜÆ®·Ñ¿¡ ´Ù¾çÇÑ º¯°æÀ» ÇÕ´Ï´Ù.

+ +
Control, Cmd [, Value, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
Cmd, Value
+

¾Æ·¡ ¸®½ºÆ® ÂüÁ¶.

+ +
Control
+

ClassNN (ÄÜÆ®·ÑÀÇ Å¬·¡½ºÀ̸§°ú ½Çü ¹øÈ£) ¶Ç´Â ÄÜÆ®·ÑÀÇ ÅؽºÆ®ÀÏ ¼ö ÀÖ½À´Ï´Ù. µÑ ´Ù Window Spy¸¦ ÅëÇÏ¿© ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ÅؽºÆ®¸¦ »ç¿ëÇÒ ¶§, ºÎÇÕÇÏ´Â ÇàÀ§´Â SetTitleMatchMode·Î ¾Ë¾Æ³À´Ï´Ù. ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î ÀÖÀ¸¸é, ¸ñÇ¥ âÀÇ ÃÖ»óÀ§ ÄÜÆ®·ÑÀÌ »ç¿ëµË´Ï´Ù.

+

+ ÄÜÆ®·ÑÀÇ HWND (â ÇÚµé)¿¡ ÀÛµ¿ÇÏ°Ô ÇÏ·Á¸é, Control ¸Å°³º¯¼ö¸¦ ºó ä·Î µÎ°í ahk_id %ControlHwnd%¸¦ WinTitle ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇϽʽÿÀ (ÀÌ ¹æ¹ýÀº ¼ûÀº ÄÜÆ®·Ñ¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù. ½ÉÁö¾î DetectHiddenWindows°¡ ²¨Á® À־ µË´Ï´Ù). ÄÜÆ®·ÑÀÇ HWND´Â ÀüÇüÀûÀ¸·Î ControlGet Hwnd, MouseGetPos, ¶Ç´ÂDllCallÀ» ÅëÇÏ¿© ¿­¶÷ÇÕ´Ï´Ù.

+ +
WinTitle
+

â Á¦¸ñ ¶Ç´Â ¸ñÇ¥ âÀ» ½Äº°ÇÏ´Â ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

+ +
+ +

Cmd, Value

+

+Cmd¿Í Value ¸Å°³º¯¼ö´Â ¼­·Î ÀÇÁ¸ÇÕ´Ï´Ù. ±×¸®°í ±× »ç¿ë¹ýÀº ¾Æ·¡¿¡ ±â¼úÇÕ´Ï´Ù.

+

Check: ¶óµð¿À ¹öÆ°À̳ª üũ ¹Ú½º¸¦ ÄÕ´Ï´Ù (üũ Ç¥½Ã¸¦ ÇÔ).

+

Uncheck: ¶óµð¿À ¹öÆ°À̳ª üũ ¹Ú½º¸¦ ²ü´Ï´Ù.

+

Enable: ÀÌÀü¿¡ ²¨Á® ÀÖ´Ù¸é ÄÜÆ®·ÑÀ» ÄÕ´Ï´Ù.

+

Disable: ÄÜÆ®·ÑÀ» ºÒ´ÉÈ­ÇÕ´Ï´Ù ("ȸ»ö 󸮸¦ ÇÔ").

+

Show: ÀÌÀü¿¡ ¼û¾î ÀÖ¾ú´Ù¸é ÄÜÆ®·ÑÀ» º¸¿©ÁÝ´Ï´Ù.

+

Hide: ÄÜÆ®·ÑÀ» °¨Ãä´Ï´Ù. ÄÜÆ®·ÑÀÇ ´ÜÃà Å°(¹ØÁÙ ¹®ÀÚ)¸¦ ÀÛµ¿ÇÏÁö ¸øÇϵµ·Ï ¸·°í ½Í´Ù¸é, Control DisableÀ» ÅëÇÏ¿© ÄÜÆ®·ÑÀ» ²ô½Ê½Ã¿À.

+

Style, N ¶Ç´Â ExStyle, N: ÄÜÆ®·ÑÀÇ ½ºÅ¸ÀÏÀ̳ª È®Àå ½ºÅ¸ÀÏÀ» º¯°æÇÕ´Ï´Ù. N ù ¹®ÀÚ°¡ Ç÷¯½º ¶Ç´Â ¸¶À̳ʽº »çÀÎÀ̸é N¿¡ ÀÖ´Â ½ºÅ¸ÀÏÀÌ Ãß°¡µÇ°Å³ª Á¦°ÅµË´Ï´Ù. ù ¹®ÀÚ°¡ ij·µ (^)À̸é, N¿¡ ÀÖ´Â ½ºÅ¸ÀϵéÀÌ °¢°¢ ¹Ý´ë »óÅ·ΠÅä±ÛµË´Ï´Ù. ù ¹®ÀÚ°¡ ¼ýÀÚÀ̸é, ±× ÄÜÆ®·ÑÀÇ ½ºÅ¸ÀÏÀÌ ¿ÏÀüÈ÷ µ¤¿© ¾º¿©Áý´Ï´Ù; Áï, NÀÌ µË´Ï´Ù. ErrorLevelÀº ¸ñÇ¥ â/ÄÜÆ®·ÑÀÌ ¹ß°ßµÇÁö ¾ÊÀ¸¸é ¶Ç´Â ½ºÅ¸ÀÏÀÌ Àû¿ëµÇÁö ¾ÊÀ¸¸é 1ÀÌ ¼³Á¤µË´Ï´Ù.

+

+¾î¶² ½ºÅ¸ÀÏ º¯°æÀº WinSet Redraw¸¦ »ç¿ëÇÏ¿© Àüü âÀ» ´Ù½Ã ±×¸®±â¸¦ ¿ä±¸ÇÕ´Ï´Ù. ¶Ç, ½ºÅ¸ÀÏ Å×ÀÌºí¿¡ ½ºÅ¸ÀÏ ¹øÈ£µéÀ» ³ª¿­ÇÏ°í ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
Control, Style, ^0x800000, Edit1, WinTitle  ; WS_BORDER ½ºÅ¸ÀÏÀ» ±×ÀÇ ¹Ý´ë »óÅ·Π¼³Á¤ÇÕ´Ï´Ù.
+

+ShowDropDown: ¼±ÅÃÀÌ º¸À̵µ·Ï ComboBox ¸Þ´º¸¦ ³»¸³´Ï´Ù.

+

+HideDropDown: À§¸¦ ¹Ý´ë·Î ÇÕ´Ï´Ù.

+

+TabLeft [, Count] ±×¸®°í TabRight [, Count]: SysTabControl32¿¡¼­ Çϳª ÀÌ»óÀÇ ÅǸ¸Å­ ¿À¸¥ÂÊ ¿ÞÂÊÀ¸·Î À̵¿ÇÕ´Ï´Ù. Count´Â »ý·«Çϰųª ºñ¾î ÀÖÀ¸¸é 1·Î °£Áֵ˴ϴÙ. ´ë½Å¿¡ ÅÇÀ» Á÷Á¢ÀûÀ¸·Î ¹øÈ£·Î ¼±ÅÃÇÏ·Á¸é, ¾Æ·¡ÀÇ ¼ýÀÚ 5¸¦ ÀÌ º¸´Ù ÀÛÀº ¼ýÀÚ·Î ±³Ã¼ÇϽʽÿÀ. ¿øÇÏ´Â ÅÇ ¹øÈ£·Î ±³Ã¼ÇÏ½Ã¸é µË´Ï´Ù. ´Ù¸¥ ¸»·Î Çϸé, 0Àº ù ¹ø° ÅÇÀ» ¼±ÅÃÇÏ°í, 1Àº µÎ ¹ø° ÅÇÀ» ¼±ÅÃÇÕ´Ï´Ù. µîµî:

+
SendMessage, 0x1330, 5,, SysTabControl321, WinTitle  ; 0x1330 is TCM_SETCURFOCUS.
+Sleep 0  ; ÀÌ ÁÙ°ú ´ÙÀ½ ÁÙÀº ¾î¶² ÅÇ ÄÜÆ®·Ñ¿¡´Â ²À ÇÊ¿äÇÕ´Ï´Ù.
+SendMessage, 0x130C, 5,, SysTabControl321, WinTitle  ; 0x130C is TCM_SETCURSEL.
+

+Add, String: ¹®ÀÚ¿­(String)À» »õ ¿£Æ®¸®·Î ListBox, ComboBox (±×¸®°í °¡´ÉÇÑ ´Ù¸¥ À¯Çüµé) ¾Æ·¡¿¡ Ãß°¡ÇÕ´Ï´Ù.

+

+Delete, N: N¹ø° ¿£Æ®¸®¸¦ ListBox ¶Ç´Â ComboBox·ÎºÎÅÍ Á¦°ÅÇÕ´Ï´Ù. NÀº ù ¿£Æ®¸®¿¡ ´ëÇÏ¿© 1ÀÌ µÇ°í µÎ ¹ø° ¿£Æ®¸®´Â 2°¡ µË´Ï´Ù. µîµî.

+

+Choose, N: ListBox ¶Ç´Â ComboBox¿¡¼­ N¹ø° ¿£Æ®¸®¸¦ ¼±ÅÃÇÕ´Ï´Ù. NÀº ù ¿£Æ®¸®¿¡ 1, µÎ ¹ø° ¿£Æ®¸®¿¡ 2°¡ µË´Ï´Ù. µîµî. ´ÙÁß-¼±Åà ¸®½ºÆ®¹Ú½º¿¡¼­ ¸ðµç Ç׸ñÀ» ¼±ÅÃÇϰųª ÇØÁ¦ÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:

+ +
PostMessage, 0x185, 1, -1, ListBox1, WinTitle  ; Select all listbox items. 0x185 is LB_SETSEL.
+

+ChooseString, String: ¾Õ ºÎºÐÀÌ String¿¡ ºÎÇÕÇϴ ù ¹ø° ¿£Æ®¸®¸¦ ListBox ¶Ç´Â ComboBox¿¡¼­ ¼±ÅÃÇÕ´Ï´Ù. °Ë»öÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, ListBox/ComboBox¿¡ "UNIX Text"¶ó´Â Ç׸ñÀÌ µé¾î ÀÖ´Ù¸é, ´Ü¾î¸¦ unix (¼Ò¹®ÀÚ)·Î ÁöÁ¤Çصµ ÃæºÐÈ÷ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+EditPaste, String: Edit ÄÜÆ®·Ñ¿¡¼­ StringÀ» ij·µ/»ðÀÔ À§Ä¡¿¡ ºÙ¿© ³Ö½À´Ï´Ù (Ŭ¸³º¸µåÀÇ ³»¿ëÀº ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù).

+

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆÐÇÏ¸é ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1ÀÌ ¼³Á¤µÇ°í ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+½Å·Ú¼ºÀ» °³¼±Çϱâ À§ÇÏ¿©, ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÒ ¶§¸¶´Ù ÀÚµ¿À¸·Î Áö¿¬ ½Ã°£ÀÌ ÀÖ½À´Ï´Ù (Style°ú ExStyle Á¦¿Ü). ±× Áö¿¬ ½Ã°£Àº SetControlDelay¸¦ ÅëÇÏ¿© º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ÇöÀç ¸¶¿ì½º°¡ ¿Ã¶ó¿Í ÀÖ´Â ÄÜÆ®·ÑÀÇ ClassNN ¶Ç´Â HWND¸¦ ¾Ë¾Æ³»·Á¸é, MouseGetPos¸¦ »ç¿ëÇϽʽÿÀ.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¿¡ ¹Î°¨ÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

SetControlDelay, ControlGet, GuiControl, ControlGetText, ControlSetText, ControlMove, ControlGetPos, ControlClick, ControlFocus, ControlSend, WinSet

+ +

¿¹Á¦

+
Control, HideDropDown, , ComboBox1, Some Window Title
+

+ + diff --git a/src/docs/commands/ControlClick.htm b/src/docs/commands/ControlClick.htm new file mode 100644 index 0000000..6d3f248 --- /dev/null +++ b/src/docs/commands/ControlClick.htm @@ -0,0 +1,107 @@ + + + + +ControlClick + + + + + + + +

ControlClick

+ +

¸¶¿ì½º ¹öÆ°À̳ª ¸¶¿ì½º ÈÙ À̺¥Æ®¸¦ ÄÜÆ®·Ñ¿¡ º¸³À´Ï´Ù.

+ +
ControlClick [, Control-or-Pos, WinTitle, WinText, WhichButton, ClickCount, Options, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
Control-or-Pos
+

ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î ÀÖÀ¸¸é, ¸ñÇ¥ âÀÇ ÃÖ»óÀ§ ÄÜÆ®·ÑÀÌ Å¬¸¯µË´Ï´Ù (¶Ç´Â ÄÜÆ®·ÑÀÌ ¾øÀ¸¸é ¸ñÇ¥ â ÀÚü°¡ Ŭ¸¯µË´Ï´Ù). ±×·¸Áö ¾ÊÀ¸¸é, ¾Æ·¡ÀÇ µÎ ¸ðµå Áß Çϳª°¡ »ç¿ëµË´Ï´Ù.

+

+ Mode 1 (Position): ¸ñÇ¥ âÀÇ Á»ó ¸ð¼­¸®¿¡ »ó´ëÀûÀÎ X¿Í Y ÁÂÇ¥¸¦ ÁöÁ¤ÇϽʽÿÀ. X ÁÂÇ¥°¡ Y ÁÂÇ¥º¸´Ù ¸ÕÀú ³ª¿Í¾ß ÇÏ°í Àû¾îµµ ÇϳªÀÇ ÅÇÀ̳ª ½ºÆäÀ̽º°¡ ±× »çÀÌ¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: X55 Y33. ÁöÁ¤µÈ ÁÂÇ¥¿¡ ÄÜÆ®·ÑÀÌ ÀÖ´Ù¸é, ±× ÁÂÇ¥¿¡ Á¤È®ÇÏ°Ô Å¬¸¯ À̺¥Æ®°¡ Àü¼ÛµË´Ï´Ù. ÄÜÆ®·ÑÀÌ ¾ø´Ù¸é, ¸ñÇ¥ â ÀÚü¿¡ ±× À̺¥Æ®°¡ Àü¼ÛµË´Ï´Ù (âÀÇ ¼ºÁú¿¡ µû¶ó ¾Æ¹« È¿°ú°¡ ¾øÀ» ¼ö ÀÖ½À´Ï´Ù). ÁÖÀÇ: ÀÌ ¸ðµå¿¡¼­, Options ¸Å°³º¯¼öÀÇ X¿Í Y ¿É¼Ç ±âÈ£´Â ¹«½ÃµË´Ï´Ù.

+

+ Mode 2 (ClassNN ¶Ç´Â Text): ClassNN (ÄÜÆ®·ÑÀÇ Å¬·¡½ºÀ̸§°ú ½Çü ¹øÈ£) ¶Ç´Â ÄÜÆ®·ÑÀÇ À̸§/ÅؽºÆ®¸¦ ÁöÁ¤ÇϽʽÿÀ. µÑ ¸ðµÎ Window Spy·Î ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. À̸§/ÅؽºÆ®¸¦ »ç¿ëÇÒ ¶§, ºÎÇÕÇϴ âÀº SetTitleMatchMode·Î °áÁ¤µË´Ï´Ù.

+

+ ±âº»°ªÀ¸·Î ¸ðµå 2°¡ ¸ðµå 1º¸´Ù ¿ì¼± ¼øÀ§°¡ ³ô½À´Ï´Ù. + + ¿¹¸¦ µé¾î, Ȥ½Ã¶óµµ ÇÑ ÄÜÆ®·ÑÀÇ ÅؽºÆ®³ª ClassNNÀÌ "Xnnn Ynnn" Çü½ÄÀ̶ó¸é, ±×·¯¸é Mode 2ÀÎ °Íó·³ ÀÛµ¿ÇÒ °ÍÀÔ´Ï´Ù. + + À̸¦ ¿À¹ö¶óÀ̵åÇؼ­ ¹«Á¶°Ç ¸ðµå 1À» »ç¿ëÇÏ·Á¸é, ´Ü¾î Pos¸¦ Options¿¡ ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ÁöÁ¤ÇϽʽÿÀ: ControlClick, x255 y152, WinTitle,,,, Pos.

+

+ ÄÜÆ®·ÑÀÇ HWND (â ÇÚµé)¿¡ ÀÛµ¿½ÃÅ°¶ó¸é, ÀÌ ¸Å°³º¯¼ö¸¦ ºó ä·Î µÎ°í ahk_id %ControlHwnd%¸¦ WinTitle ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇϽʽÿÀ (ÀÌ°ÍÀº ¶ÇÇÑ ¼ûÀº â¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù. DetectHiddenWindows°¡ ²¨Á® À־ µË´Ï´Ù). ÄÜÆ®·ÑÀÇ HWND´Â ÀüÇüÀûÀ¸·ÎControlGet Hwnd, MouseGetPos, ¶Ç´Â DllCallÀ» ÅëÇÏ¿© ¿­¶÷µË´Ï´Ù.

+ +
WinTitle
+

â Á¦¸ñ ¶Ç´Â ¸ñÇ¥ âÀ» ½Äº°ÇÏ´Â ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +
WhichButton
+

Ŭ¸¯ÇÒ ¹öÆ°: LEFT, RIGHT, MIDDLE (¶Ç´Â ±×³É °¢ ù ¹®ÀÚ). »ý·«Çϰųª ºñ¾î ÀÖÀ¸¸é, LEFT ¹öÆ°ÀÌ »ç¿ëµË´Ï´Ù.

+

X1 (XButton1, ³× ¹ø° ¸¶¿ì½º ¹öÆ°) ±×¸®°í X2 (XButton2, ´Ù¼¸ ¹ø° ¸¶¿ì½º ¹öÆ°)µµ Áö¿øµË´Ï´Ù.

+

WheelUp (¶Ç´Â WU) ±×¸®°í WheelDown (¶Ç´Â WD)µµ Áö¿øµË´Ï´Ù. ÀÌ °æ¿ì, ClickCount´Â ÈÙÀ» µ¹¸± ´«±ÝÀÇ °³¼öÀÔ´Ï´Ù.

+

Windows Vista ÀÌ»ó [v1.0.48+]: WheelLeft (¶Ç´Â WL) and WheelRight (¶Ç´Â WR)µµ Áö¿øµË´Ï´Ù (¿¹Àü ¿î¿µ üÁ¦¿¡¼­´Â ¾Æ¹« È¿°úµµ ¾ø½À´Ï´Ù). ÀÌ °æ¿ì, ClickCount´Â ÈÙÀ» µ¹¸± ´«±ÝÀÇ °³¼öÀÔ´Ï´Ù.

+
+ +
ClickCount
+

º¸³¾ Ŭ¸¯ Ƚ¼ö, Ç¥Çö½ÄÀÌ °¡´ÉÇÕ´Ï´Ù. »ý·«µÇ°Å³ª ºñ¾î ÀÖÀ¸¸é, 1 Ŭ¸¯ÀÌ Àü¼ÛµË´Ï´Ù.

+ +
Options
+

´ÙÀ½ ±âÈ£µéÀÌ ¿É¼ÇÀ¸·Î »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î: d x50 y25.

+

NA [v1.0.45+]: ½Å·Ú¼ºÀ» °³¼±ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ÀÇ ½Å·Ú¼ºÀ» ÂüÁ¶ÇϽʽÿÀ.

+

D: ¸¶¿ì½º ¹öÆ°À» ´©¸£Áö¸¸ ¶¼Áö ¾Ê½À´Ï´Ù (Áï, ´©¸£±â-À̺¥Æ® ¹ß»ý). D¿Í U ¿É¼ÇÀÌ ¸ðµÎ ¾øÀ¸¸é, (´©¸£°í ¶¾) ¿ÏÀüÇÑ Å¬¸¯ÀÌ Àü¼ÛµË´Ï´Ù.

+

U: ¸¶¿ì½º ¹öÆ°À» ¶Á´Ï´Ù (Áï ¶À-À̺¥Æ® ¹ß»ý). ÀÌ ¿É¼ÇÀº D ¿É¼ÇÀÌ ÀÌ¹Ì ÀÖÀ¸¸é ³ªÅ¸³ª¸é ¾ÈµË´Ï´Ù (±× ¹Ý´ëµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù).

+

Pos: ´Ü¾î Pos¸¦ Options ¾Æ¹«µ¥³ª ÁöÁ¤Çϸé, À§ÀÇ Control-or-Pos ¸Å°³º¯¼ö¿¡ ±â¼úµÇ¾î ÀÖµíÀÌ ¹«Á¶°Ç X/Y À§Ä¡ ÁöÁ¤ ¸ðµå¸¦ »ç¿ëÇÕ´Ï´Ù.

+

Xn: n¿¡´Ù Ŭ¸¯ÇÒ X À§Ä¡¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ À§Ä¡´Â ÄÜÆ®·ÑÀÇ Á»ó ¸ð¼­¸®¿¡ »ó´ëÀûÀÔ´Ï´Ù. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, Ŭ¸¯ÀÌ ÄÜÆ®·ÑÀÇ ¼öÆò-Áß¾Ó¿¡ ÀϾ´Ï´Ù.

+

Yn: n¿¡´Ù Ŭ¸¯ÇÒ Y À§Ä¡¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ À§Ä¡´Â ÄÜÆ®·ÑÀÇ Á»ó ¸ð¼­¸®¿¡ »ó´ëÀûÀÔ´Ï´Ù. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é Ŭ¸¯ÀÌ ¼öÁ÷-Áß¾Ó¿¡ ÀϾ´Ï´Ù.

+

X¿Í Y ¿É¼Ç¿¡ ½ÊÁø¼ö¸¦ »ç¿ëÇÕ´Ï´Ù (½ÊÀ°Áø¼ö ºÒ°¡).

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

+ +
+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆÐÇÏ¸é ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1, ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

½Å·Ú¼º

+

+½Å·Ú¼ºÀ» °³¼±ÇÏ·Á¸é -- ƯÈ÷ ControlClickÀÌ ÀÛµ¿ÇÏ´Â µ¿¾È »ç¿ëÀÚ°¡ ¹°¸®ÀûÀ¸·Î ¸¶¿ì½º¸¦ ¿òÁ÷À̸é -- ´ÙÀ½ ¹æ¹ýÀÌ µµ¿òÀÌ µÉ °ÍÀÔ´Ï´Ù:

+

1) ControlClick Àü¿¡ SetControlDelay -1¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ·¸°Ô Çϸé Ŭ¸¯ÇÏ´Â µ¿¾È ¸¶¿ì½º¸¦ ´©¸£°í ÀÖÀ» ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ÀÌ ´öºÐ¿¡ »ç¿ëÀÚÀÇ ¹°¸®Àû ¸¶¿ì½º À̵¿°úÀÇ °£¼· °¡´É¼ºÀÌ ÁÙ¾îµì´Ï´Ù.

+

2) ¾Æ·¡¿Í °°ÀÌ ¹®ÀÚ¿­ NA¸¦ ¿©¼¸ ¹ø° ¸Å°³º¯¼ö ¾Æ¹«µ¥³ª (Options) ÁöÁ¤ÇÕ´Ï´Ù:

+
SetControlDelay -1
+ControlClick, Toolbar321, WinTitle,,,, NA
+

+NA¸¦ ÁöÁ¤ÇÏ¸é ¸ñÇ¥ âÀ» È°¼ºÈ­ »óÅ·Πǥ½ÄÀ» ÇÒ ÇÊ¿ä°¡ ¾ø°í ±×ÀÇ ÀԷ ó¸®¸¦ ½ºÅ©¸³Æ®ÀÌ ÀԷ ó¸®¿Í º´ÇÕÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ÀÌ ´öºÐ¿¡ ¸¶¿ì½ºÀÇ ¹°¸®Àû À̵¿ ¶§¹®¿¡ °£¼· ¹ÞÁö ¾Ê¾Æµµ µË´Ï´Ù (±×·¯³ª º¸Åë ¸ñÇ¥ âÀÌ ºñÈ°¼ºÈ­ »óÅÂÀÏ °æ¿ì¿¡¸¸ ±×·¸½À´Ï´Ù). ±×·¸Áö¸¸, ÀÌ ¹æ¹ýÀº ¸ðµç À¯ÇüÀÇ Ã¢°ú ÄÜÆ®·Ñ¿¡ ÀÛµ¿ÇÏ´Â °ÍÀº ¾Æ´Õ´Ï´Ù.

+ +

³íÆò

+

+¸ðµç ¾îÇø®ÄÉÀ̼ÇÀÌ ¸¶¿ì½º ÈÙÀ» µ¹¸± ¶§ 1º¸´Ù Å« ClickCount¸¦ ÁؼöÇÏ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ±×·± ¾îÇø®ÄÉÀ̼ÇÀ̶ó¸é Loop¸¦ »ç¿ëÇØ ÇÑ ´«±Ý ÀÌ»ó ÈÙÀ» µ¹¸®½Ê½Ã¿À. ´ÙÀ½ ¿¹Á¦´Â ´Ù¼¸ ´«±ÝÀ» µ¹¸®°í ÀÖ½À´Ï´Ù:

+
Loop, 5
+    ControlClick, Control, WinTitle, WinText, WheelUp
+

+â Á¦¸ñ ¶Ç´Â ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¿¡ ¹Î°¨ÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+SetControlDelay, Control, ControlGet, ControlGetText, ControlMove, ControlGetPos, ControlFocus, ControlSetText, ControlSend, Click

+ +

¿¹Á¦

+
ControlClick, OK, Some Window Title  ; OK ¹öÆ°À» Ŭ¸¯ÇÕ´Ï´Ù
+ControlClick, x55 y77, WinTitle  ; ÁÂÇ¥ ¼¼Æ®¸¦ Ŭ¸¯ÇÕ´Ï´Ù. X¿Í Y »çÀÌ¿¡ ½°Ç¥°¡ ¾ø´Â °Í¿¡ ÁÖ¸ñÇϽʽÿÀ.
+
+; ´ÙÀ½ ¹æ¹ýÀº ½Å·Ú¼ºÀ» °³¼±ÇÏ°í ºÎÀÛ¿ëÀ» ÁÙ¿©ÁÝ´Ï´Ù:
+SetControlDelay -1
+ControlClick, Toolbar321, WinTitle,,,, NA x192 y10  ; ÁöÁ¤ÇÑ À̸§ÀÇ ÄÜÆ®·Ñ¿¡ »ó´ëÀûÀÎ ÁÂÇ¥¸¦ NA ¸ðµå¿¡¼­ Ŭ¸¯ÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/ControlFocus.htm b/src/docs/commands/ControlFocus.htm new file mode 100644 index 0000000..b521ce9 --- /dev/null +++ b/src/docs/commands/ControlFocus.htm @@ -0,0 +1,62 @@ + + + + +ControlFocus + + + + + + + +

ControlFocus

+ +

ÀÔ·Â ÃÊÁ¡À» ÇÑ Ã¢ÀÇ ÁÖ¾îÁø ÄÜÆ®·Ñ¿¡ Àü¼ÛÇÕ´Ï´Ù.

+ +
ControlFocus [, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
Control
+

ClassNN (ÄÜÆ®·ÑÀÇ Å¬·¡½ºÀ̸§°ú ½Çü ¹øÈ£) ¶Ç´Â ÄÜÆ®·ÑÀÇ ÅؽºÆ®ÀÏ ¼ö ÀÖ½À´Ï´Ù. µÑ ¸ðµÎ Window Spy·Î ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ÅؽºÆ®¸¦ »ç¿ëÇÒ ¶§, ºÎÇÕÇÏ´Â ÇàÀ§´Â SetTitleMatchMode·Î °áÁ¤µË´Ï´Ù. ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾îÀְųª »ý·«µÇ¸é, ¸ñÇ¥ âÀÇ ÃÖ»óÀ§ ÄÜÆ®·ÑÀÌ »ç¿ëµË´Ï´Ù.

+

+ ÄÜÆ®·ÑÀÇ HWND (â ÇÚµé)¿¡ ÀÛµ¿½ÃÅ°·Á¸é, Control ¸Å°³º¯¼ö¸¦ ºó ä·Î µÎ°í ahk_id %ControlHwnd%¸¦ WinTitle ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇϽʽÿÀ (ÀÌ°ÍÀº ¼ûÀº â¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù. DetectHiddenWindows°¡ ²¨Á® À־ »ó°ü ¾ø½À´Ï´Ù). ÄÜÆ®·ÑÀÇ HWND´Â ÀüÇüÀûÀ¸·Î ControlGet Hwnd, MouseGetPos, ¶Ç´Â DllCallÀ» ÅëÇÏ¿© ¿­¶÷µË´Ï´Ù.

+ +
WinTitle
+

â Á¦¸ñ ¶Ç´Â ¸ñÇ¥ âÀ» ½Äº°ÇÏ´Â ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ®(ON) ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯ ÂüÁ¶.

+

ErrorLevel´Â ¹®Á¦°¡ ÀÖÀ¸¸é 1, ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+È¿°ú°¡ ÀÖÀ¸·Á¸é, ÄÜÆ®·ÑÀÇ Ã¢ÀÌ ÀϹÝÀûÀ¸·Î ÃÖ¼ÒÈ­µÇ¾î Àְųª ¼û¾î ÀÖÀ¸¸é ¾ÈµË´Ï´Ù.

+

+½Å·Ú¼ºÀ» °³¼±Çϱâ À§ÇÏ¿©, ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÒ ¶§¸¶´Ù ÀÚµ¿À¸·Î Áö¿¬ ½Ã°£ÀÌ ÀÖÀ¾´Ï´Ù. ÀÌ Áö¿¬ ½Ã°£Àº SetControlDelay¸¦ ÅëÇÏ¿© ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+

+ÇöÀç ¸¶¿ì½º°¡ ¶° ÀÖ´Â ÄÜÆ®·ÑÀÇ ClassNN ¶Ç´Â HWND¸¦ ¹ß°ßÇÏ·Á¸é, MouseGetPos¸¦ »ç¿ëÇϽʽÿÀ.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¿¡ ¹Î°¨ÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+SetControlDelay, ControlGetFocus, Control, ControlGet, ControlMove, ControlGetPos, ControlClick, ControlGetText, ControlSetText, ControlSend

+ +

¿¹Á¦

+
ControlFocus, OK, Some Window Title  ; ÃÊÁ¡À» OK ¹öÆ°¿¡ ¼³Á¤ÇÕ´Ï´Ù
+ + + diff --git a/src/docs/commands/ControlGet.htm b/src/docs/commands/ControlGet.htm new file mode 100644 index 0000000..850ce21 --- /dev/null +++ b/src/docs/commands/ControlGet.htm @@ -0,0 +1,165 @@ + + + + +ControlGet + + + + + + + +

ControlGet

+ +

ÄÜÆ®·Ñ¿¡ °üÇÏ¿© ´Ù¾çÇÑ À¯ÇüÀÇ Á¤º¸¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+ +
ControlGet, OutputVar, Cmd [, Value, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

Cmd ¸í·ÉÀÇ °á°ú¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
Cmd, Value
+
¾Æ·¡ ¸®½ºÆ® ÂüÁ¶ +
+ +
Control
+

ClassNN (ÄÜÆ®·ÑÀÇ Å¬·¡½ºÀ̸§°ú ½Çü ¹øÈ£) ¶Ç´Â ÄÜÆ®·ÑÀÇ ÅؽºÆ®ÀÏ ¼ö ÀÖ½À´Ï´Ù. µÑ ¸ðµÎ Window Spy¸¦ ÅëÇÏ¿© ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ÅؽºÆ®¸¦ »ç¿ëÇÒ ¶§, ºÎÇÕÇÏ´Â ÇàÀ§´Â SetTitleMatchMode·Î °áÁ¤µË´Ï´Ù. ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î ÀÖÀ¸¸é, ¸ñÇ¥ âÀÇ ÃÖ»óÀ§ ÄÜÆ®·ÑÀÌ »ç¿ëµË´Ï´Ù.

+

+ ÄÜÆ®·ÑÀÇ HWND (â ÇÚµé)¿¡ ÀÛµ¿½ÃÅ°·Á¸é, Control ¸Å°³º¯¼ö¸¦ ºó ä·Î µÎ°í ahk_id %ControlHwnd%¸¦ WinTitle ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇϽʽÿÀ (ÀÌ°ÍÀº ¼ûÀº ÄÜÆ®·Ñ¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù. DetectHiddenWindows°¡ ²¨Á® À־ »ó°ü¾ø½À´Ï´Ù). ÄÜÆ®·ÑÀÇ HWND´Â ÀüÇüÀûÀ¸·Î ControlGet Hwnd, MouseGetPos, ¶Ç´Â DllCallÀ» ÅëÇÏ¿© ¿­¶÷ÇÕ´Ï´Ù.

+ +
WinTitle
+

â Á¦¸ñ ¶Ç´Â ¸ñÇ¥ âÀ» ½Äº°ÇÏ´Â ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇÏ¸é ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ®(ON) ÀÖ¾î¾ß ³ëÃâµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

Cmd, Value

+

+Cmd¿Í Value ¸Å°³º¯¼ö´Â ¼­·Î ÀÇÁ¸ÇÕ´Ï´Ù. ±× »ç¿ë¹ýÀº ¾Æ·¡¿¡ ±â¼úÇÕ´Ï´Ù.

+

+List: ListView, ListBox, ComboBox, ¶Ç´Â DropDownList·ÎºÎÅÍ Ç׸ñ ¸®½ºÆ®¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+

+ListView: ListView¸¦ ¿­¶÷ÇÏ´Â ±¸¹®Àº ´ÙÀ½°ú °°½À´Ï´Ù:

+ +
ControlGet, OutputVar, List, Options, SysListView321, WinTitle, WinText
+

+Options ¸Å°³º¯¼ö°¡ ºñ¾î Àְųª »ý·«µÇ¸é, ÄÜÆ®·Ñ¿¡ ÀÖ´Â ¸ðµç ÅؽºÆ®°¡ ¿­¶÷µË´Ï´Ù. ¸¶Áö¸· ÇàÀ» Á¦¿ÜÇÏ°í °¢ Çึ´Ù ¶óÀÎÇÇµå ¹®ÀÚ·Î ³¡³³´Ï´Ù (`n). °¢ Çà ¾È¿¡¼­, °¢ Çʵå (Ä÷³)Àº ¸¶Áö¸·À» Á¦¿ÜÇÏ°í ÅÇ ¹®ÀÚ·Î ³¡³³´Ï´Ù (`t).

+

+Options¿¡ ´ÙÀ½ ´Ü¾îµéÀ» ÁöÁ¤ÇϽʽÿÀ. °¢ ¿É¼ÇÀº ´ÙÀ½ ¿É¼Ç°ú ½ºÆäÀ̽º ¶Ç´Â ÅÇÀ¸·Î ±¸ºÐµË´Ï´Ù:

+

Selected: ¸ðµç Çà ¸»°í ¼±ÅÃµÈ (°­Á¶µÈ) Çàµé¸¸ ¿­¶÷ÇÕ´Ï´Ù. ¾Æ¹«°Íµµ ¾øÀ¸¸é, OutputVar´Â ºñ¿öÁý´Ï´Ù.
+ Focused: ÃÊÁ¡ Çุ ¿­¶÷ÇÕ´Ï´Ù. ¾øÀ¸¸é, OutputVar´Â ºñ¿öÁý´Ï´Ù.
+ Col4: ¸ðµç Ä÷³ ¸»°í ³× ¹ø° Ä÷³(Çʵå)¸¸ ¿­¶÷ÇÕ´Ï´Ù (4¸¦ ¿øÇÏ´Â ¹øÈ£·Î ±³Ã¼).
+ Count: ÄÜÆ®·Ñ¿¡ ÀÖ´Â Àüü ÇàÀÇ °³¼ö¸¦ ¿­¶÷ÇÕ´Ï´Ù.
+ Count Selected: ¼±ÅÃµÈ (°­Á¶µÈ) ÇàÀÇ °³¼ö¸¦ ¿­¶÷ÇÕ´Ï´Ù.
+ Count Focused: ÃÊÁ¡ ÇàÀǹøÈ£(À§Ä¡)¸¦ ¿­¶÷ÇÕ´Ï´Ù (¾øÀ¸¸é 0).
+Count Col: ÄÜÆ®·Ñ¿¡ ÀÖ´Â Ä÷³ÀÇ °³¼ö¸¦ ¿­¶÷ÇÕ´Ï´Ù (¶Ç´Â °³¼ö¸¦ ¼¿ ¼ö ¾øÀ¸¸é -1).

+

+ÁÖÀÇ: ¾î¶² ¾îÇø®ÄÉÀ̼ÇÀº ListView ÅؽºÆ®¸¦ µû·Î º¸°üÇÕ´Ï´Ù. ±× ¶§¹®¿¡ ÅؽºÆ®¸¦ ¿­¶÷ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ·± °æ¿ì, ErrorLevelÀº º¸Åë 0À¸·Î ¼³Á¤µË´Ï´Ù (¼º°øÀ» ¶æÇÔ). ±×·¯³ª ¿­¶÷µÈ Çʵå´Â ºñ¾î ÀÖÀ» °ÍÀÔ´Ï´Ù. ¶ÇÇÑ ListView ÅؽºÆ® ¿­¶÷Àº #MaxMemÀ¸·Î Á¦ÇѵÇÁö ¾Ê½À´Ï´Ù.

+

+¼º°øÇϸé, ErrorLevelÀº 0ÀÌ ¼³Á¤µË´Ï´Ù. ½ÇÆÐÇϸé 1·Î ¼³Á¤µÇ°í OutputVar´Â ºñ¿öÁý´Ï´Ù. ½ÇÆд ´ÙÀ½°ú °°Àº °æ¿ì ÀϾ´Ï´Ù: +

    +
  1. ¸ñÇ¥ âÀ̳ª ÄÜÆ®·ÑÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù; +
  2. ¸ñÇ¥ âÀÌ SysListView32 À¯ÇüÀÌ ¾Æ´Ï´Ù; +
  3. ListView¸¦ ¼ÒÀ¯ÇÑ ÇÁ·Î¼¼½º¸¦ ¿­ ¼ö ¾ø´Ù. ¾Æ¸¶µµ »ç¿ëÀÚ°¡ ±ÇÇÑÀÌ ¾ø°Å³ª Àá°Ü Àֱ⠶§¹®ÀÏ °ÍÀÌ´Ù; +
  4. ColN ¿É¼Ç¿¡ Á¸ÀçÇÏÁö ¾Ê´Â Ä÷³À» ÁöÁ¤Çß´Ù. +
+

+

+ListView·ÎºÎÅÍ °³º°ÀûÀ¸·Î Çà°ú Çʵ带 ÃßÃâÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ÆÄ½Ì È¸µ¹À̸¦ »ç¿ëÇϽʽÿÀ:

+ +
ControlGet, List, List, Selected, SysListView321, WinTitle
+Loop, Parse, List, `n  ; ÇàÀº ¶óÀÎÇǵå·Î ±¸ºÐµË´Ï´Ù (`n).
+{
+    RowNumber := A_Index
+    Loop, Parse, A_LoopField, %A_Tab%  ; °¢ ÇàÀÇ Çʵå (Ä÷³)Àº ÅÇÀ¸·Î ±¸ºÐµË´Ï´Ù (A_Tab).
+        MsgBox Row #%RowNumber% Col #%A_Index% is %A_LoopField%.
+}
+

+°ü·ÃÇÏ¿© ¸»¾¸ µå¸®ÀÚ¸é, ListViewÀÇ Ä÷³Àº SendMessage¸¦ ÅëÇÏ¿© Å©±â¸¦ º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡ º¸¿©ÁÝ´Ï´Ù:

+ +
SendMessage, 4126, 0, 80, SysListView321, WinTitle  ; 4126Àº ¸Þ½ÃÁö LVM_SETCOLUMNWIDTHÀÔ´Ï´Ù.
+; À§¿¡¼­, 0Àº ù Ä÷³À» ³ªÅ¸³À´Ï´Ù (1Àº µÎ ¹ø°, 2´Â ¼¼ ¹ø°, µîµî.)  ¶ÇÇÑ, 80Àº »õ ³ÊºñÀÔ´Ï´Ù.
+; 80À» -1·Î ¹Ù²Ù¸é Ä÷³ÀÇ Å©±â°¡ ÀÚµ¿À¸·Î Á¶ÀýµË´Ï´Ù. -2·Î ±³Ã¼Çϸé Çì´õ ÅؽºÆ® ³Êºñ±îÁö °í·ÁÇÏ¿© Å©±â¸¦ Á¶ÀýÇØ ÁÝ´Ï´Ù.
+

+ListBox, ComboBox, DropDownList: ÄÜÆ®·Ñ·ÎºÎÅÍ ¸ðµç ÅؽºÆ®°¡ ¿­¶÷µË´Ï´Ù (Áï, À§ÀÇCount°ú Selected°°Àº ListView ¿É¼ÇÀº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù).

+

+°¢ ÇàÀº ¸¶Áö¸·À» Á¦¿ÜÇÏ°í ¶óÀÎÇǵå·Î ³¡³³´Ï´Ù (`n). Ç׸ñ¿¡ °³º°ÀûÀ¸·Î Á¢±ÙÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ÆÄ½Ì È¸µ¹À̸¦ »ç¿ëÇϽʽÿÀ:

+ +
ControlGet, List, List,, ComboBox1, WinTitle
+Loop, Parse, List, `n
+    MsgBox Item number %A_Index% is %A_LoopField%.
+

+Checked: üũ¹Ú½º³ª ¶óµð¿À ¹öÆ°ÀÌ Ã¼Å©µÇ¾î ÀÖÀ¸¸é OutputVar¿¡ 1À» ¼³Á¤ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0À» ¼³Á¤ÇÕ´Ï´Ù.

+

Enabled: ControlÀÌ È°¼ºÈ­µÇ¾î ÀÖÀ¸¸é OutputVar¿¡ 1À» ¼³Á¤ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0À» ¼³Á¤ÇÕ´Ï´Ù.

+

+Visible: ControlÀÌ º¸À̸é OutputVar¿¡ 1À» ¼³°øÇÏ°í, ¼û¾î ÀÖÀ¸¸é 0À» ¼³Á¤ÇÕ´Ï´Ù.

+

+Tab: OutputVar¿¡ SysTabControl32 ÄÜÆ®·ÑÀÇ ÅÇ ¹øÈ£¸¦ ¼³Á¤ÇÕ´Ï´Ù. ù ÅÇÀº 1, µÎ ¹ø° ÅÇÀº 2ÀÔ´Ï´Ù, µîµî. ´ë½Å¿¡ ¾ó¸¶³ª ¸¹Àº ÅÇ(ÆäÀÌÁö)°¡ ÅÇ ÄÜÆ®·Ñ¿¡ ÀÖ´ÂÁö ¾Ë¾Æ º¸·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:

+ +
SendMessage, 0x1304,,, SysTabControl321, WinTitle  ; 0x1304´Â TCM_GETITEMCOUNTÀÔ´Ï´Ù.
+TabCount = %ErrorLevel%
+

+FindString, String: ListBox ¶Ç´Â ComboBox¿¡¼­ String¿¡ Á¤È®ÇÏ°Ô ÀÏÄ¡ÇÑ ¿£Æ®¸®ÀÇ °¹¼ö¸¦ OutputVar¿¡ ¼³Á¤ÇÕ´Ï´Ù. ÄÜÆ®·ÑÀÇ Ã¹ ¿£Æ®¸®´Â 1ÀÌ°í, µÎ ¹ø° ¿£Æ®¸®´Â 2ÀÔ´Ï´Ù, µîµî. ÀÏÄ¡°¡ ¾øÀ¸¸é, OutputVar´Â ºñ¿öÁö°í ErrorLevelÀº 1·Î ¼³Á¤µË´Ï´Ù.

+

+Choice: ListBox ¶Ç´Â ComboBoxSet¿¡¼­ ÇöÀç ¼±ÅÃµÈ ¿£Æ®¸®ÀÇ À̸§À» OutputVar¿¡ ¼³Á¤ÇÕ´Ï´Ù. ´ë½Å¿¡ ¼±ÅÃµÈ Ç׸ñÀÇ À§Ä¡¸¦ ¿­¶÷ÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À (¾ÕÀÇ µÎ ÁÙ¸¸ »ç¿ëÇÕ´Ï´Ù):

+ +
SendMessage, 0x188, 0, 0, ListBox1, WinTitle  ; 0x188Àº LB_GETCURSELÀÔ´Ï´Ù (ListBox).
+SendMessage, 0x147, 0, 0, ComboBox1, WinTitle  ; 0x147Àº CB_GETCURSELÀÔ´Ï´Ù (DropDownList ¶Ç´Â ComboBox).
+ChoicePos = %ErrorLevel%  ; Ç׸ñÀÌ ¼±ÅõǾî ÀÖÁö ¾ÊÀ¸¸é -1ÀÌ ¼³Á¤µË´Ï´Ù.
+ChoicePos += 1  ; 0-±â¹Ý¿¡¼­ 1-±â¹ÝÀ¸·Î º¯È¯ÇÕ´Ï´Ù. ±×·¡¼­ ù Ç׸ñÀº 0ÀÌ ¾Æ´Ï¶ó, 1ÀÔ´Ï´Ù.
+

+LineCount: Edit ÄÜÆ®·ÑÀÇ ÁÙÀÇ °³¼ö¸¦ OutputVar¿¡ ¼³Á¤ÇÕ´Ï´Ù. ¸ðµç Edit ÄÜÆ®·ÑÀº ÄÜÆ®·ÑÀÌ ºñ¾î ÀÖÀ»Áö¶óµµ Àû¾îµµ 1 ÁÙÀÌ ÀÖ½À´Ï´Ù.

+

+CurrentLine: Edit ÄÜÆ®·Ñ¿¡¼­ ÇöÀç ij·µÀÌ ÀÖ´Â (»ðÀÔ ÁöÁ¡) ÁÙÀÇ ¹øÈ£¸¦ OutputVar¿¡ ¼³Á¤ÇÕ´Ï´Ù. ù ÁÙÀº 1ÀÔ´Ï´Ù. ÄÜÆ®·Ñ¿¡ ¼±ÅÃµÈ ÅؽºÆ®°¡ ÀÖ´Ù¸é, ¼±ÅÃÀÌ ½ÃÀÛÇÏ´Â °÷ÀÇ ÁÙ ¹øÈ£¸¦ OutputVar¿¡ ¼³Á¤ÇÕ´Ï´Ù.

+

+CurrentCol: Edit ÄÜÆ®·Ñ¿¡¼­ ÇöÀç ij·µÀÌ ÀÖ´Â (ÅؽºÆ® »ðÀÔ ÁöÁ¡) ¿­ ¹øÈ£¸¦ OutputVar¿¡ ¼³Á¤ÇÕ´Ï´Ù. ù ¿­Àº 1ÀÔ´Ï´Ù. ¼±ÅÃµÈ ÅؽºÆ®°¡ ÄÜÆ®·Ñ¿¡ ÀÖ´Ù¸é, OutputVar¿¡ ¼±ÅÃÀÌ ½ÃÀ۵Ǵ °÷ÀÇ ¿­ ¹øÈ£°¡ ¼³Á¤µË´Ï´Ù.

+

+Line, N: Edit ÄÜÆ®·Ñ¿¡¼­ N ¹ø ÁÙÀÇ ÅؽºÆ®¸¦ OutputVar¿¡ ¼³Á¤ÇÕ´Ï´Ù. Line 1Àº ù ÁÙÀÔ´Ï´Ù. ÄÜÆ®·ÑÀÇ Æ¯¼º¿¡ µû¶ó, OutputVar´Â ij¸®Áö ¸®ÅÏ (`r) ¶Ç´Â ij¸®Áö ¸®ÅÏ + ¶óÀÎÇǵå (`r`n)·Î ³¡³¯ ¼ö ÀÖ½À´Ï´Ù. ÁöÁ¤µÈ ÁÙ ¹øÈ£°¡ ºñ¾î Àְųª Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ErrorLevel ¿¡ 1ÀÌ ¼³Á¤µÇ°í OutputVar´Â ºñ¿öÁý´Ï´Ù.

+

+Selected: Edit ÄÜÆ®·Ñ¿¡¼­ ¼±ÅÃµÈ ÅؽºÆ®¸¦ OutputVar¿¡ ¼³Á¤ÇÕ´Ï´Ù. ¾Æ¹« ÅؽºÆ®µµ ¼±ÅõǾî ÀÖÁö ¾ÊÀ¸¸é, OutputVar´Â ºñ¿öÁö°í ErrorLevel¿¡´Â 0ÀÌ ¼³Á¤µË´Ï´Ù (Áï, ¿¡·¯ ¾øÀ½). ¾î¶² À¯ÇüÀÇ ÄÜÆ®·ÑÀº RichEdit20A¿Í °°ÀÌ ¾î¶² °æ¿ì ¿Ã¹Ù¸£°Ô ÅؽºÆ®¸¦ »ý»êÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù (¿¹, Metapad).

+

+Style: ÄÜÆ®·ÑÀÇ ½ºÅ¸ÀÏÀ» ³ªÅ¸³»´Â 8-ÀÚ¸® ½ÊÀ°Áø ¼ö¸¦ ¿­¶÷ÇÕ´Ï´Ù. ½ºÅ¸ÀÏ ¸ñ·ÏÀº ½ºÅ¸ÀÏ Å×À̺íÀ» ÂüÁ¶ÇϽʽÿÀ.

+

+ExStyle: ÄÜÆ®·ÑÀÇ È®Àå ½ºÅ¸ÀÏÀ» ³ªÅ¸³»´Â 8-ÀÚ¸® ½ÊÀ°Áø ¼ö¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+

+Hwnd [v1.0.43.06+]: ÁöÁ¤µÈ ÄÜÆ®·ÑÀÇ Ã¢ ÇÚµé(HWND)À» ¿­¶÷ÇÕ´Ï´Ù: ControlGet, OutputVar, Hwnd,, Edit1, WinTitle. ÄÜÆ®·ÑÀÇ HWND´Â PostMessage, SendMessage, ±×¸®°í DllCall¿¡ ÀÚÁÖ »ç¿ëµË´Ï´Ù. °ü·ÃÇÏ¿© ¸»¾¸ µå¸®ÀÚ¸é, ÄÜÆ®·ÑÀÇ HWND´Â MouseGetPos¸¦ ÅëÇؼ­ ¿­¶÷ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¸¶Áö¸·À¸·Î, ÄÜÆ®·ÑÀÇ HWND¸¦ ahk_id WinTitle·Î Á÷Á¢ÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù (ÀÌ°ÍÀº ¼ûÀº ÄÜÆ®·Ñ¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù. DetectHiddenWindows°¡ ²¨Á® À־ »ó°ü¾ø½À´Ï´Ù).

+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

¼º°øÇϸé, ErrorLevelÀº 0ÀÌ ¼³Á¤µË´Ï´Ù. ¹®Á¦°¡ ¹ß»ýÇϸé -- Á¸ÀçÇÏÁö ¾Ê´Â âÀ̳ª ÄÜÆ®·Ñ °°Àº °æ¿ì -- ErrorLevelÀº 1ÀÌ ¼³Á¤µÇ°í OutputVar´Â ºñ¿öÁý´Ï´Ù.

+ +

³íÆò

+

+ÄÜÆ®·ÑÀ» º¯°æÇÏ´Â ¸í·É¾î¿Í ´Ù¸£°Ô, ControlGetÀº ÀÚµ¿ Áö¿¬ÀÌ ¾ø½À´Ï´Ù; Áï, SetControlDelay¿¡ ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù.

+

+ÇöÀç ¸¶¿ì½º°¡ ¶° ÀÖ´Â ÄÜÆ®·ÑÀÇ ClassNN ¶Ç´Â HWND¸¦ ¾Ë¾Æ³»·Á¸é, MouseGetPos¸¦ »ç¿ëÇϽʽÿÀ. âÀÇ ÄÜÆ®·Ñ ¸ñ·ÏÀ» ¾òÀ¸·Á¸é, WinGet ControlList¸¦ »ç¿ëÇϽʽÿÀ.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

Control, GuiControlGet, ControlMove, ControlGetText, ControlSetText, ControlGetPos, ControlClick, ControlFocus, ControlSend, WinGet

+ +

¿¹Á¦

+ +
ControlGet, OutputVar, Line, 1, Edit1, Some Window Title
+
+ControlGet, WhichTab, Tab, , SysTabControl321, Some Window Title
+if ErrorLevel
+    MsgBox There was a problem.
+else
+    MsgBox Tab #%WhichTab% is active.
+ + + diff --git a/src/docs/commands/ControlGetFocus.htm b/src/docs/commands/ControlGetFocus.htm new file mode 100644 index 0000000..1207e86 --- /dev/null +++ b/src/docs/commands/ControlGetFocus.htm @@ -0,0 +1,63 @@ + + + + +ControlGetFocus + + + + + + + +

ControlGetFocus

+ +

¸ñÇ¥ â¿¡¼­ ÃÊÁ¡ÀÌ ÀÖ´Â ÄÜÆ®·ÑÀ» ¿­¶÷ÇÕ´Ï´Ù.

+ +
ControlGetFocus, OutputVar [, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

ÄÜÆ®·ÑÀÇ ½Äº°ÀÚ¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§. ±× ±¸¼ºÀº Ŭ·¡½ºÀ̸§ ´ÙÀ½¿¡ ±×ÀÇ ºÎ¸ð ¾È¿¡¼­ÀÇ ¿¬¼Ó ¹øÈ£°¡ µû¶ó¿É´Ï´Ù. ¿¹, Button12.

+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖ¾î¾ß(ON) ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ÀÔ·Â ÃÊÁ¡ÀÌ ÀÖ´Â ÄÜÆ®·ÑÀ» ¼º°øÀûÀ¸·Î ¿­¶÷Çϸé 0ÀÌ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é (¿¹, ¸ñÇ¥ âÀÌ Á¸ÀçÇÏÁö ¾Ê°Å³ª ÀÔ·Â ÃÊÁ¡ÀÌ ÀÖ´Â ÄÜÆ®·ÑÀÌ ¾ø´Â °æ¿ì) 1·Î ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+ÀÌ ¸í·É¾î·Î ¿­¶÷ÇÑ ÄÜÆ®·ÑÀº Å°º¸µå ÃÊÁ¡ÀÌ ÀÖ½À´Ï´Ù. ´Ù½Ã ¸»ÇØ, »ç¿ëÀÚ°¡ ŸÀÚ¸¦ Çϸé Å°´­¸²À» ¹Þ¾ÆµéÀÔ´Ï´Ù.

+

+¸ñÇ¥ âÀÌ ÃÊÁ¡ÀÌ ÀÖ´Â ÄÜÆ®·ÑÀ» °¡Áö·Á¸é È°¼ºÈ­µÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù. âÀÌ È°¼ºÈ­µÇ¾î ÀÖÁö ¾ÊÀ¸¸é, OutputVar´Â ºñ¿öÁý´Ï´Ù.

+

+v1.1.19.03ÀÌÀü¿¡¼­, ControlGetFocus¸¦ ³ôÀº ºóµµ·Î (Áï, 500 ms º¸´Ù ºü¸£°Ô) ¹Ýº¹ÀûÀ¸·Î ½ÇÇàÇϸé, º¸Åë »ç¿ëÀÚÀÇ ´õºí-Ŭ¸¯À» ¹æÇØÇß½À´Ï´Ù. ÀÌ ¹®Á¦´Â ÀÌÁ¦ ÇØ°áµÇ¾ú½À´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¿¡ ¹Î°¨ÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

ControlFocus, ControlMove, ControlClick, ControlGetText, ControlSetText, ControlSend

+ +

¿¹Á¦

+
ControlGetFocus, OutputVar, Untitled - Notepad
+if ErrorLevel
+    MsgBox, The target window doesn't exist or none of its controls has input focus.
+else
+    MsgBox, Control with focus = %OutputVar%
+ + + diff --git a/src/docs/commands/ControlGetPos.htm b/src/docs/commands/ControlGetPos.htm new file mode 100644 index 0000000..17e282e --- /dev/null +++ b/src/docs/commands/ControlGetPos.htm @@ -0,0 +1,75 @@ + + + + +ControlGetPos + + + + + + + +

ControlGetPos

+ +

ÄÜÆ®·ÑÀÇ À§Ä¡¿Í Å©±â¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+ +
ControlGetPos [, X, Y, Width, Height, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]
+ +

¸Å°³º¯¼ö

+
+ +
X, Y
+

ControlÀÇ Á»ó ¸ð¼­¸®ÀÇ X¿Í Y ÁÂÇ¥¸¦ ÀúÀåÇÒ º¯¼ö À̸§ (Çȼ¿ ´ÜÀ§). ÀÌ ÁÂÇ¥´Â ¸ñÇ¥ âÀÇ Á»ó ¸ð¼­¸®¿¡ »ó´ëÀûÀÌ¸ç ±×·¡¼­ ControlMove°¡ »ç¿ëÇÏ´Â ÁÂÇ¥¿Í °°½À´Ï´Ù.

+

X³ª Y¸¦ »ý·«Çϸé, »óÀÀÇÏ´Â °ªÀÌ ÀúÀåµÇÁö ¾Ê½À´Ï´Ù.

+ +
Width/Height
+

ControlÀÇ ³Êºñ¿Í ³ôÀ̸¦ (Çȼ¿ ´ÜÀ§·Î) ÀúÀåÇÒ º¯¼öÀÇ À̸§. »ý·«Çϸé, »óÀÀÇÏ´Â °ªÀÌ ÀúÀåµÇÁö ¾Ê½À´Ï´Ù.

+ +
Control
+

ClassNN (ÄÜÆ®·ÑÀÇ Å¬·¡½ºÀ̸§°ú ½Çü ¹øÈ£) ¶Ç´Â ÄÜÆ®·ÑÀÇ ÅؽºÆ®. µÑ ¸ðµÎ Window Spy¸¦ ÅëÇÏ¿© ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ÅؽºÆ®¸¦ »ç¿ëÇÒ ¶§, ºÎÇÕÇÏ´Â ÇàÀ§´Â SetTitleMatchMode·Î °áÁ¤µË´Ï´Ù. ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î ÀÖÀ¸¸é, ¸ñÇ¥ âÀÇ ÃÖ»óÀ§ ÄÜÆ®·ÑÀÌ »ç¿ëµË´Ï´Ù.

+

+ ÄÜÆ®·ÑÀÇ HWND (â ÇÚµé)¿¡ ÀÛµ¿½ÃÅ°·Á¸é, Control ¸Å°³º¯¼ö¸¦ ºó ä·Î µÎ°í ahk_id %ControlHwnd%¸¦ WinTitle ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇϽʽÿÀ (ÀÌ°ÍÀº ¼ûÀº ÄÜÆ®·Ñ¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù. DetectHiddenWindows°¡ ²¨Á® À־ »ó°ü ¾ø½À´Ï´Ù). ÄÜÆ®·ÑÀÇ HWND´Â ÀüÇüÀûÀ¸·Î ControlGet Hwnd, MouseGetPos, ¶Ç´Â DllCall¸¦ ÅëÇÏ¿© ¿­¶÷ÇÕ´Ï´Ù.

+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ®(ON) ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+ºÎÇÕÇϴ âÀ̳ª ÄÜÆ®·ÑÀÌ ¹ß°ßµÇÁö ¾ÊÀ¸¸é, Ãâ·Â º¯¼ö´Â ºñ¿öÁý´Ï´Ù.

+

+ÄÜÆ®·ÑÀ» º¯°æÇÏ´Â ¸í·É¾î¿Í ´Ù¸£°Ô, ControlGetPos´Â ÀÚµ¿ Áö¿¬ÀÌ ¾ø½À´Ï´Ù (SetControlDelay¿¡ ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù).

+

+ÇöÀç ¸¶¿ì½º°¡ ¶° ÀÖ´Â ÄÜÆ®·ÑÀÇ ClassNNÀ̳ª HWND¸¦ ¹ß°ßÇÏ·Á¸é MouseGetPos¸¦ »ç¿ëÇϽʽÿÀ. âÀÇ ¸ðµç ÄÜÆ®·Ñ ¸ñ·ÏÀ» ¿­¶÷ÇÏ·Á¸é WinGetÀ» »ç¿ëÇϽʽÿÀ.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+ControlMove, WinGetPos, Control, ControlGet, ControlGetText, ControlSetText, ControlClick, ControlFocus, ControlSend

+ +

¿¹Á¦

+ +
; ´ÙÀ½ÀÇ ÀÛµ¿ÇÏ´Â ¿¹Á¦´Â °è¼Ó °»½ÅÇϸ鼭
+; ÇöÀç ¸¶¿ì½º ¾Æ·¡ÀÇ ÄÜÆ®·ÑÀÇ À§Ä¡¿Í À̸§À» º¸¿©ÁÝ´Ï´Ù:
+Loop
+{
+    Sleep, 100
+    MouseGetPos, , , WhichWindow, WhichControl
+    ControlGetPos, x, y, w, h, %WhichControl%, ahk_id %WhichWindow%
+    ToolTip, %WhichControl%`nX%X%`tY%Y%`nW%W%`t%H%
+}
+ + + diff --git a/src/docs/commands/ControlGetText.htm b/src/docs/commands/ControlGetText.htm new file mode 100644 index 0000000..892c2b6 --- /dev/null +++ b/src/docs/commands/ControlGetText.htm @@ -0,0 +1,69 @@ + + + + +ControlGetText + + + + + + + +

ControlGetText

+ +

ÄÜÆ®·Ñ·ÎºÎÅÍ ÅؽºÆ®¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+ +
ControlGetText, OutputVar [, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]
+ +

¸Å°³º¯¼ö

+
+ +
OutputVar
+

¿­¶÷µÈ ÅؽºÆ®¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
Control
+

ClassNN (ÄÜÆ®·ÑÀÇ Å¬·¡½ºÀ̸§°ú ½Çü ¹øÈ£) ¶Ç´Â ÄÜÆ®·ÑÀÇ ÅؽºÆ®ÀÏ ¼ö ÀÖ½À´Ï´Ù. µÑ ´Ù Window Spy¸¦ ÅëÇÏ¿© ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ÅؽºÆ®¸¦ »ç¿ëÇÒ ¶§, ºÎÇÕ ÇàÀ§´Â SetTitleMatchMode·Î °áÁ¤µË´Ï´Ù. ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î Àְųª »ý·«µÇ¸é, ¸ñÇ¥ âÀÇ ÃÖ»óÀ§ ÄÜÆ®·ÑÀÌ »ç¿ëµË´Ï´Ù.

+

+ ÄÜÆ®·ÑÀÇ HWND (â ÇÚµé)¿¡ ÀÛµ¿½ÃÅ°·Á¸é, Control ¸Å°³º¯¼ö¸¦ ºñ¿öµÎ°í ahk_id %ControlHwnd%¸¦ WinTitle ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇϽʽÿÀ (ÀÌ°ÍÀº ¼ûÀº ÄÜÆ®·Ñ¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù. DetectHiddenWindows°¡ ²¨Á® À־ »ó°ü¾ø½À´Ï´Ù). ÄÜÆ®·ÑÀÇ HWND´Â ÀüÇüÀûÀ¸·Î ControlGet Hwnd, MouseGetPos, ¶Ç´Â DllCallÀ» ÅëÇÏ¿© ¿­¶÷ÇÕ´Ï´Ù.

+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñÀ̳ª ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ®(ON) ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1ÀÌ ¼³Á¤µÇ°í ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+ÁÖÀÇ: ÅؽºÆ®¸¦ ListView, ListBox, ¶Ç´Â ComboBoxÀ¸·ÎºÎÅÍ ¿­¶÷ÇÏ·Á¸é, ´ë½Å¿¡ ControlGet List¸¦ »ç¿ëÇϽʽÿÀ.

+

+¿­¶÷µÈ ÅؽºÆ®°¡ Àß·Á ³ª°£ °Í °°À¸¸é (ºÒ¿ÏÀüÇϸé), ControlGetText ¸»°í VarSetCapacity(OutputVar, 55)¸¦ »ç¿ëÇØ º¸½Ê½Ã¿À [55¸¦ Àß·Á³ª°£ ÅؽºÆ®º¸´Ù »ó´çÈ÷ ´õ ±ä Å©±â·Î ±³Ã¼ÇϽʽÿÀ]. ¾îÇø®ÄÉÀ̼ÇÀÌ WM_GETTEXTLENGTH ¸Þ½ÃÁö¿¡ Á¦´ë·Î ÀÀ´äÇÏÁö ¾Ê´Â °æ¿ì, AutoHotkey°¡ Ãâ·Â º¯¼ö¸¦ ³Ê¹« ÀÛ°Ô ¸¸µé¾î ¸ðµç ÅؽºÆ®¸¦ ´ãÁö ¸øÇϱ⠶§¹®ÀÔ´Ï´Ù.

+

+¿­¶÷µÈ ÅؽºÆ®ÀÇ ¾çÀº º¯¼öÀÇ ÃÖ´ë °¡¿ë ´É·ÂÀ¸·Î Á¦Çѵ˴ϴ٠(ÀÌ´Â #MaxMem Áö½Ã¾î¸¦ ÅëÇÏ¿© º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù). °á°úÀûÀ¸·Î, ¸ñÇ¥ ÄÜÆ®·Ñ¿¡ ¹æ´ëÇÑ ¾çÀÇ ÅؽºÆ®°¡ ´ã°Ü ÀÖÀ¸¸é (¿¹¸¦ µé¾î, ÆíÁý±â¿¡ ¹æ´ëÇÑ ¹®¼­°¡ ¿­·Á ÀÖ´Â °æ¿ì) ÀÌ ¸í·É¾î´Â ¹æ´ëÇÑ ¾çÀÇ ·¥À» »ç¿ëÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, º¯¼öÀÇ ¸Þ¸ð¸®´Â ¾Æ¹«°Íµµ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ¼Õ½±°Ô ÇØÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù. Áï, OutputVar =.

+

+´ëºÎºÐÀÇ ÄÜÆ®·Ñ À¯ÇüÀ¸·ÎºÎÅÍ ¿­¶÷µÈ ÅؽºÆ®´Â °¢ ÁÙÀÇ ³¡À» Ç¥½ÃÇϱâ À§ÇØ È¦·Î ¶óÀÎÇǵå(`n)¸¦ »ç¿ëÇÏÁö ¾Ê°í ij¸®Áö ¸®ÅÏ°ú ¶óÀÎÇǵå (`r`n)¸¦ »ç¿ëÇÕ´Ï´Ù.

+

+SetTitleMatchMode Slow¸¦ ó¸®ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ¿Ö³ÄÇϸé ControlGetText´Â ¾ðÁ¦³ª ÅؽºÆ®¸¦ ´À¸° ¹æ¹ýÀ¸·Î ¹Þ±â ¶§¹®ÀÔ´Ï´Ù (±× ¶§¹®¿¡ ±¤¹üÀ§ÇÑ ¹üÀ§ÀÇ ÄÜÆ®·Ñ À¯Çü¿¡ ÀÛµ¿ÇÕ´Ï´Ù).

+

+âÀÇ ¸ðµç ÄÜÆ®·Ñ ¸ñ·ÏÀ» ¿­¶÷ÇÏ·Á¸é, WinGet ControlList¸¦ »ç¿ëÇϽʽÿÀ.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+

°ü·Ã Ç׸ñ

+

ControlSetText, WinGetText, Control, ControlGet, ControlMove, ControlFocus, ControlClick, ControlSend, #MaxMem

+

¿¹Á¦

+
ControlGetText, OutputVar, Edit1, Untitled -
+ + + diff --git a/src/docs/commands/ControlMove.htm b/src/docs/commands/ControlMove.htm new file mode 100644 index 0000000..b830822 --- /dev/null +++ b/src/docs/commands/ControlMove.htm @@ -0,0 +1,76 @@ + + + + +ControlMove + + + + + + + +

ControlMove

+ +

ÄÜÆ®·ÑÀ» À̵¿Çϰųª Å©±â¸¦ º¯°æÇÕ´Ï´Ù.

+ +
ControlMove, Control, X, Y, Width, Height [, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
Control
+

ClassNN (ÄÜÆ®·ÑÀÇ Å¬·¡½ºÀ̸§°ú ½Çü ¹øÈ£) ¶Ç´Â ÄÜÆ®·ÑÀÇ ÅؽºÆ®ÀÔ´Ï´Ù. µÑ ¸ðµÎ Window Spy¸¦ ÅëÇÏ¿© ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ÅؽºÆ®¸¦ »ç¿ëÇÒ ¶§, ºÎÇÕ ÇàÀ§´ÂSetTitleMatchMode·Î °áÁ¤µË´Ï´Ù. ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î ÀÖÀ¸¸é, ¸ñÇ¥ âÀÇ ÃÖ»óÀ§ ÄÜÆ®·ÑÀÌ »ç¿ëµË´Ï´Ù.

+

+ ÄÜÆ®·ÑÀÇ HWND (â ÇÚµé)¿¡ ÀÛµ¿½ÃÅ°·Á¸é, Control ¸Å°³º¯¼ö¸¦ ºñ¿öµÎ°í ahk_id %ControlHwnd%¸¦ WinTitle ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇϽʽÿÀ (ÀÌ°ÍÀº ¼ûÀº ÄÜÆ®·Ñ¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù. DetectHiddenWindows±â ²¨Á® À־ »ó°üÀÌ ¾ø½À´Ï´Ù). ÄÜÆ®·ÑÀÇ HWNDÀº ÀüÇüÀûÀ¸·Î ControlGet Hwnd, MouseGetPos, ¶Ç´Â DllCallÀ» ÅëÇÏ¿© ¿­¶÷ÇÕ´Ï´Ù.

+ +
X, Y
+

+ ControlÀÇ »õ À§Ä¡ÀÇ Á»ó ¸ð¼­¸®ÀÇ X¿Í Y ÁÂÇ¥ (Çȼ¿ ´ÜÀ§), Ç¥Çö½Ä °¡´É. ÁÂÇ¥°¡ ºñ¾î ÀÖÀ¸¸é, ControlÀÇ ±× Â÷¿øÀÇ À§Ä¡´Â º¯°æµÇÁö ¾Ê½À´Ï´Ù. ÁÂÇ¥´Â ControlÀÇ ºÎ¸ð âÀÇ Á»ó ¸ð¼­¸®¿¡ »ó´ëÀûÀÔ´Ï´Ù; ControlGetPos ¶Ç´Â Window Spy¸¦ »ç¿ëÇÏ¸é ±× ÁÂÇ¥¸¦ ¾Ë ¼ö ÀÖ½À´Ï´Ù.

+ +
Width, Height
+

ControlÀÇ »õ ³Êºñ¿Í ³ôÀÌ (Çȼ¿ ´ÜÀ§), Ç¥Çö½Äµµ °¡´É. ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î Àְųª »ý·«µÇ¸é, ±× Â÷¿øÀÇ ControlÀÇ Å©±â´Â º¯°æµÇÁö ¾Ê½À´Ï´Ù.

+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñÀ̳ª ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ®(ON) ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

+ +
+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1ÀÌ ¼³Á¤µÇ°í ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

³íÆò

+

+½Å·Ú¼ºÀ» °³¼±Çϱâ À§ÇØ, ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÒ ¶§¸¶´Ù ÀÚµ¿À¸·Î Áö¿¬µË´Ï´Ù. ÀÌ Áö¿¬ ½Ã°£Àº SetControlDelayÀ» ÅëÇÏ¿© º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+ControlGetPos, WinMove, SetControlDelay, Control, ControlGet, ControlGetText, ControlSetText, ControlClick, ControlFocus, ControlSend

+ +

¿¹Á¦

+
SetTimer, ControlMoveTimer
+InputBox, OutputVar, My Input Box
+return
+
+ControlMoveTimer:
+IfWinNotExist, My Input Box
+    return
+; ±×·¸Áö ¾ÊÀ¸¸é À§¿¡¼­ ¿ì¸®¸¦ À§ÇØ "¸¶Áö¸·À¸·Î ¹ß°ßµÈ" âÀ» ¼³Á¤ÇÕ´Ï´Ù:
+SetTimer, ControlMoveTimer, off
+WinActivate
+ControlMove, OK, 10, , 200  ; OK ¹öÆ°À» ¿ÞÂÊÀ¸·Î À̵¿ÇÏ°í ±×ÀÇ ³Êºñ¸¦ ´Ã¸³´Ï´Ù.
+return
+ + + diff --git a/src/docs/commands/ControlSend.htm b/src/docs/commands/ControlSend.htm new file mode 100644 index 0000000..2d4e9dc --- /dev/null +++ b/src/docs/commands/ControlSend.htm @@ -0,0 +1,92 @@ + + + + +ControlSend / ControlSendRaw + + + + + + + +

ControlSend / ControlSendRaw

+ +

Èä³»³½ Å°´­¸²À» âÀ̳ª ÄÜÆ®·Ñ¿¡ º¸³À´Ï´Ù.

+ +
ControlSend [, Control, Keys, WinTitle, WinText, ExcludeTitle, ExcludeText]
+ControlSendRaw: À§¿Í ¸Å°³º¯¼ö µ¿ÀÏ.
+ +

¸Å°³º¯¼ö

+
+ +
Control
+

ClassNN (ÄÜÆ®·ÑÀÇ Å¬·¡½ºÀ̸§°ú ½Çü ¹øÈ£) ¶Ç´Â ÄÜÆ®·ÑÀÇ ÅؽºÆ®ÀÏ ¼ö ÀÖ½À´Ï´Ù. µÑ ¸ðµÎ Window Spy¸¦ ÅëÇÏ¿© ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ÅؽºÆ®¸¦ »ç¿ëÇÒ ¶§, ºÎÇÕ ÇàÀ§´Â SetTitleMatchMode·Î °áÁ¤µË´Ï´Ù. ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î Àְųª »ý·«µÇ¸é, ¸ñÇ¥ âÀÇ ÃÖ»óÀ§ ÄÜÆ®·ÑÀÌ »ç¿ëµË´Ï´Ù. ÀÌ ¸Å°³º¯¼ö°¡ ahk_parentÀ̸é, Å°´­¸²ÀÌ ±×ÀÇ ÄÜÆ®·Ñ Áß Çϳª°¡ ¾Æ´Ï¶ó °ð¹Ù·Î ¸ñÇ¥ âÀ¸·Î Àü¼ÛµË´Ï´Ù (¿¹Á¦´Â Winamp ÀÚµ¿È­Çϱ⸦ ÂüÁ¶ÇϽʽÿÀ).

+

+ ÄÜÆ®·ÑÀÇ HWND (â ÇÚµé)¿¡ ÀÛµ¿½ÃÅ°·Á¸é, Control ¸Å°³º¯¼ö¸¦ ºñ¿öµÎ°í ahk_id %ControlHwnd%¸¦ WinTitle ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇϽʽÿÀ (ÀÌ°ÍÀº ¼ûÀº ÄÜÆ®·Ñ¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù. DetectHiddenWindows°¡ ²¨Á® À־ »ó°üÀÌ ¾ø½À´Ï´Ù). ÄÜÆ®·ÑÀÇ HWND´Â ÀüÇüÀûÀ¸·Î ControlGet Hwnd, MouseGetPos, ¶Ç´Â DllCallÀ» ÅëÇÏ¿© ¿­¶÷ÇÕ´Ï´Ù.

+ +
Keys
+
+

Àü¼ÛÇÒ Å° ¿¬¼Ó (ÀÚ¼¼ÇÑ °ÍÀº Send ¸í·É¾î ÂüÁ¶). ¹®ÀÚ ±×´ë·ÎÀÇ ½°Ç¥¸¦ Àü¼ÛÇÏ·Á¸é, ÇǽŽÃÅ°½Ê½Ã¿À (`,). ¹®ÀÚ¸¦ Àü¼ÛÇÏ´Â ºñÀ²Àº SetKeyDelay·Î °áÁ¤µË´Ï´Ù.

+

+ Send ¸í·É¾î¿Í ´Ù¸£°Ô, ¸¶¿ì½º Ŭ¸¯Àº ControlSend·Î º¸³¾ ¼ö ¾ø½À´Ï´Ù. ¸¶¿ì½º Ŭ¸¯À» º¸³»·Á¸é ControlClickÀ» »ç¿ëÇϽʽÿÀ.

+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñÀ̳ª ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ®(ON) ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹èÁ¦ÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹èÁ¦ÇÕ´Ï´Ù.

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1 ¾øÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+ControlSendRaw´Â Keys ¸Å°³º¯¼ö¿¡ ÀÖ´Â Å°´­¸²À» Á¤È®ÇÏ°Ô ³ªÅ¸³ª´Â ±×´ë·Î Àü¼ÛÇÕ´Ï´Ù. {Enter}¸¦ ENTER Å°´­¸²À¸·Î, ^c¸¦ Control-C·Î, µîµî º¯È¯ÇÏÁö ¾Ê½À´Ï´Ù.

+

+Control ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, ÀÌ ¸í·É¾î´Â ¸ñÇ¥ â¿¡ Á÷Á¢ Àü¼ÛÀ» ½ÃµµÇÕ´Ï´Ù. ±×ÀÇ ÃÖ»óÀ§ ÄÜÆ®·Ñ¿¡ Àü¼ÛÇϰųª (º¸Åë ¿Ã¹Ù¸¥ â) ¶Ç´Â ÄÜÆ®·ÑÀÌ ¾øÀ¸¸é ±× â ÀÚü¿¡ Àü¼ÛÇÕ´Ï´Ù. â¿¡ ÄÜÆ®·ÑÀÌ ÀüÇô ¾ø´Â µí º¸ÀÏ ¶§, ¶Ç´Â ±×³É ÆíÇÏ°Ô ¾î´À ÄÜÆ®·Ñ¿¡ º¸³»¾ß ÇÒÁö °í¹ÎÇÏ°í ½ÍÁö ¾ÊÀ» ¶§ À¯¿ëÇÕ´Ï´Ù.

+

+±âº»°ªÀ¸·Î, ¼ö½Ä Å° (Control, Alt, Shift, ±×¸®°í Win)´Â º¸Åë Send ¸í·É¾î·Î Àü¼ÛµÇ´Â °Í°ú ¶È °°ÀÌ Àü¼ÛµË´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¸í·É¾î ÇÁ·ÒÇÁÆ®¿Í ±âŸ ÄÜ¼Ö Ã¢ÀÌ ´ë¹®ÀÚ, Á¦¾î ¹®ÀÚ µîµîÀ» ÀûÀýÇÏ°Ô Å½ÁöÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶Ç ´Ù¸¥ ¸é¿¡¼­ ½Å·Ú¼ºµµ Çâ»óµË´Ï´Ù.

+

+±×·¸Áö¸¸, ¾î¶² °æ¿ì ÀÌ ¼ö½Ä À̺¥Æ®´Â È°¼º â°ú ¾ôÈú ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ControlSend°¡ ÁøÇà ÁßÀÎ µ¿¾È¿¡ »ç¿ëÀÚ°¡ °Ý·ÄÇÏ°Ô Å¸ÀÚÇÏ°í ÀÖ´Ù¸é ¶Ç´Â Alt Å°°¡ Àü¼Û ÁßÀ̶ó¸é (Alt´Â È°¼º âÀÇ ¸Þ´º ¹Ù¸¦ È°¼ºÈ­ ½ÃÅ°±â ¶§¹®¿¡) °£¼· Çö»óÀÌ ÀϾ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± ÀÏÀº ´ÙÀ½ ¿¹Á¦¿Í °°Àº ¸í½ÃÀûÀ¸·Î ¼ö½Ä Å°¸¦ ´©¸£°í ¶¼´Â À̺¥Æ®¸¦ Àü¼ÛÇϸé ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
ControlSend, Edit1, {Alt down}f{Alt up}, Untitled - Notepad
+

+À§ÀÇ ¹æ¹ýÀº ¶Ç ¿öÅ©½ºÅ×À̼ÇÀÌ Àá°Ü ÀÖ´Â µ¿¾È (·Î±×¿Â ÇÁ·ÒÇÁÆ®·Î º¸È£µÇ¾î ÀÖ´Â µ¿¾È)¿¡µµ ¼ö½ÄÅ° ´­¸² (Control/Alt/Shift/Win)À» Àü¼ÛÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+BlockInput´Â ¸í·É¾î ÇÁ·ÒÇÁÆ®¿Í °°Àº ÄÜ¼Ö Ã¢¿¡ ControlSend¸¦ »ç¿ëÇÒ ¶§ Àý´ë ÇÇÇØ¾ß ÇÕ´Ï´Ù. ¿Ö³ÄÇϸé Control°ú °°Àº ¼ö½ÄÅ°¿Í ´ë¼Ò¹®ÀÚ º¯È¯ÀÌ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¸øÇϱ⠶§¹®ÀÔ´Ï´Ù.

+

+SetKeyDelayÀÇ °ªÀº Å°°¡ Àü¼ÛµÇ´Â ¼Óµµ¸¦ °áÁ¤ÇÕ´Ï´Ù. ¸ñÇ¥ âÀÌ Å° ´­¸²À» Á¦´ë·Î ¹ÞÁö ¾ÊÀ¸¸é, ´ÙÀ½ ¿¹Á¦¿Í °°Àº SetKeyDelayÀÇ µÎ ¹ø° ¸Å°³º¯¼ö¸¦ ÅëÇÏ¿© ´©¸§ Áö¼Ó ½Ã°£À» ´Ã·Á º¸½Ê½Ã¿À:

+ +
SetKeyDelay, 10, 10
+SetKeyDelay, 0, 10
+SetKeyDelay, -1, 0
+

+¸ñÇ¥ ÄÜÆ®·ÑÀÌ Edit ÄÜÆ®·ÑÀ̸é (¶Ç´Â ±× ºñ½ÁÇÑ ÄÜÆ®·ÑÀ̸é), ControlSendº¸´Ù ´ÙÀ½ÀÌ º¸Åë ´õ ¹ÏÀ» ¸¸ÇÏ°í ´õ ºü¸¨´Ï´Ù:

+ +
Control, EditPaste, ÀÌ ÅؽºÆ®´Â ij·µ À§Ä¡¿¡ »ðÀԵ˴ϴÙ., ControlName, WinTitle
+
ControlSetText, ControlName, ÀÌ ÅؽºÆ®´Â ÇöÀç ÅؽºÆ®¸¦ ¿ÏÀüÈ÷ ±³Ã¼ÇÕ´Ï´Ù., WinTitle
+

+ControlSend´Â ÀϹÝÀûÀ¸·Î âÀÇ ¸Þ´º ¹Ù¸¦ Á¶ÀÛÇÒ ¼ö ¾ø½À´Ï´Ù. À̸¦ ¿ìȸÇÏ·Á¸é, WinMenuSelectItemÀ» »ç¿ëÇϽʽÿÀ. ¸Þ´º ¹ÙÀÇ Æ¯¼º ¶§¹®¿¡ ±× ¸¶Àúµµ »ç¿ëÇÒ ¼ö ¾øÀ¸¸é, ¿øÇÏ´Â ¸Þ´º Ç׸ñ¿¡ »óÀÀÇÏ´Â ¸Þ½ÃÁö¸¦ ã¾Æº¸½Ê½Ã¿À. ´ÙÀ½ SendMessage ÀÚ½À¼­¸¦ µû¸£½Ã¸é µË´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¿¡ ¹Î°¨ÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+SetKeyDelay, ÇǽŠ¿¬¼Ó¿­ (¿¹, `%), Control, ControlGet, ControlGetText, ControlMove, ControlGetPos, ControlClick, ControlSetText, ControlFocus, Send, Winamp ÀÚµ¿È­Çϱâ

+ +

¿¹Á¦

+
ControlSend, Edit1, ÀÌ ÁÙÀº ³ëÆ®Æеå â¿¡ ÀÖ´Â ÁÙÀÔ´Ï´Ù., Untitled
+SetTitleMatchMode, 2
+ControlSend, , abc, cmd.exe  ; ¸í·É¾î ÇÁ·ÒÇÁÆ® â¿¡ Á÷Á¢ Àü¼ÛÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/ControlSetText.htm b/src/docs/commands/ControlSetText.htm new file mode 100644 index 0000000..62b64b8 --- /dev/null +++ b/src/docs/commands/ControlSetText.htm @@ -0,0 +1,62 @@ + + + + +ControlSetText + + + + + + + +

ControlSetText

+ +

ÄÜÆ®·ÑÀÇ ÅؽºÆ®¸¦ º¯°æÇÕ´Ï´Ù.

+ +
ControlSetText [, Control, NewText, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
Control
+

ClassNN (ÄÜÆ®·ÑÀÇ Å¬·¡½ºÀ̸§°ú ½Çü ¹øÈ£) ¶Ç´Â ÄÜÆ®·ÑÀÇ ÅؽºÆ®ÀÏ ¼ö ÀÖ½À´Ï´Ù. µÑ ´Ù Window Spy¸¦ ÅëÇÏ¿© ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ÅؽºÆ®¸¦ »ç¿ëÇÒ ¶§, ºÎÇÕ ÇàÀ§´Â SetTitleMatchMode·Î °áÁ¤µË´Ï´Ù. ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î ÀÖÀ¸¸é, ¸ñÇ¥ âÀÇ ÃÖ»óÀ§ ÄÜÆ®·ÑÀÌ »ç¿ëµË´Ï´Ù.

+

+ ÄÜÆ®·ÑÀ¸ HWND (â ÇÚµé)¿¡ ÀÛµ¿ ½ÃÅ°·Á¸é, Control ¸Å°³º¯¼ö¸¦ ºñ¿ö µÎ°í ahk_id %ControlHwnd%¸¦ WinTitle ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇϽʽÿÀ (ÀÌ°ÍÀº ¼ûÀº ÄÜÆ®·Ñ¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù. DetectHiddenWindows°¡ ²¨Á® À־ »ó°ü ¾ø½À´Ï´Ù). ÄÜÆ®·ÑÀÇ HWND´Â ÀüÇüÀûÀ¸·Î ControlGet Hwnd, MouseGetPos, ¶Ç´Â DllCallÀ» ÅëÇÏ¿© ¿­¶÷ÇÕ´Ï´Ù.

+ +
NewText
+

ÄÜÆ®·Ñ ¾È¿¡ ¼³Á¤ÇØ ³ÖÀ» »õ ÅؽºÆ®. ºñ¾î Àְųª »ý·«µÇ¸é, ÄÜÆ®·ÑÀÌ ºñ¿öÁý´Ï´Ù.

+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñÀ̳ª ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ®(ON) ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜµË´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜµË´Ï´Ù.

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹·¯¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ½ÇÆÐÇϸé 1 ¼º°øÇϸé 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+´ëºÎºÐÀÇ ÄÜÆ®·Ñ À¯ÇüÀº Ȧ·Î ¶óÀÎÇǵå (`n) ¸»°í ij¸®Áö ¸®ÅÏ°ú ¶óÀÎÇǵå (`r`n)¸¦ »ç¿ëÇØ °¢ ÁÙÀÇ ³¡À» Ç¥½ÃÇÕ´Ï´Ù. `n ¹®ÀÚ°¡ Æ÷ÇÔµÈ ÅؽºÆ® ºí·ÏÀ» º¯È¯ÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:

+
StringReplace, MyVar, MyVar, `n, `r`n, All
+

+½Å·Ú¼ºÀ» Çâ»ó½ÃÅ°±â À§ÇØ, ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÒ ¶§¸¶´Ù Áö¿¬ ½Ã°£ÀÌ ÀÚµ¿À¸·Î »ðÀԵ˴ϴÙ. ÀÌ Áö¿¬ ½Ã°£Àº SetControlDelay¸¦ ÅëÇÏ¿© ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

SetControlDelay, ControlGetFocus, ControlGetText, ControlGet, Control, ControlMove, ControlGetPos, ControlClick, ControlFocus, ControlSend

+

¿¹Á¦

+
ControlSetText, Edit1, ¿©±â¿¡ »õ ÅؽºÆ® ¼³Á¤, Untitled -
+ + + diff --git a/src/docs/commands/CoordMode.htm b/src/docs/commands/CoordMode.htm new file mode 100644 index 0000000..905098f --- /dev/null +++ b/src/docs/commands/CoordMode.htm @@ -0,0 +1,53 @@ + + + + +CoordMode + + + + + + + +

CoordMode

+ +

´Ù¾çÇÑ ¸í·É¾î¿¡ ´ëÇÏ¿© È­¸é ¶Ç´Â È°¼º â¿¡ ÁÂÇ¥ ¸ðµå°¡ »ó´ëÀûÀÌ µÇµµ·Ï ¼³Á¤ÇÕ´Ï´Ù.

+ +
CoordMode, ToolTip|Pixel|Mouse|Caret|Menu [, Screen|Window|Client]
+

¸Å°³º¯¼ö

+
+ +
Param1
+

ToolTip: ToolTip¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.

+

Pixel: PixelGetColor, PixelSearch, ±×¸®°í ImageSearch¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.

+

Mouse: Affects MouseGetPos, Click, ±×¸®°í MouseMove/Click/Drag¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.

+

Caret: ³»Àå º¯¼ö A_CaretX¿Í A_CaretY¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.

+

Menu: ÁÂÇ¥°¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ» ¶§ Menu Show¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.

+ +
Param2
+

Param2°¡ »ý·«µÇ¸é, ScreenÀÌ ±âº»°ªÀÔ´Ï´Ù.

+

Screen: ÁÂÇ¥´Â ¹ÙÅÁÈ­¸é¿¡ »ó´ëÀûÀÔ´Ï´Ù (Àüü È­¸é).

+

Relative: ÁÂÇ¥´Â È°¼º â¿¡ »ó´ëÀûÀÔ´Ï´Ù.

+

Window [v1.1.05+]: Relative¿Í µ¿µîÇÏ¸ç ¸í·áÇϱ⠶§¹®¿¡ ÀÌ°ÍÀ» ±ÇÀåÇÕ´Ï´Ù.

+

Client [v1.1.05+]: ÁÂÇ¥´Â È°¼º âÀÇ Å¬¶óÀ̾ðÆ® ¿µ¿ª¿¡ »ó´ëÀûÀÔ´Ï´Ù. Ŭ¶óÀ̾ðÆ® ¿µ¿ª¿¡¼­ Á¦¸ñ ¹Ù, ¸Þ´º (Ç¥ÁØ ¸Þ´º¶ó¸é) ±×¸®°í Å׵θ®´Â Á¦¿ÜµË´Ï´Ù. Ŭ¶óÀ̾ðÆ® ÁÂÇ¥´Â OS ¹öÀü¿Í Å׸¶¿¡ ÀÇÁ¸ÇÏÁö ¾Ê½À´Ï´Ù.

+
+ +
+ +

³íÆò

+

+ÀÌ ¸í·É¾î°¡ »ç¿ëµÇÁö ¾ÊÀ¸¸é, ¸ðµç ¸í·É¾î´Â µû·Î ¹®¼­È­µÇ¾î ÀÖ´Â ¸í·É¾î¸¦ Á¦¿ÜÇÏ°í (¿¹, WinMove ±×¸®°í InputBox) È°¼º â¿¡ »ó´ëÀûÀÎ ÁÂÇ¥¸¦ »ç¿ëÇÕ´Ï´Ù.

+

+»õ·Î ±âµ¿µÈ ¾²·¹µå´Â (ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾ) ÀÌ ¸í·É¾î¿¡ ´ëÇÑ ±âº» °ªÀ» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ±× ±âº» °ªÀº ÀÚµ¿-½ÇÇà ¼½¼Ç (½ºÅ©¸³Æ® »ó´Ü)¿¡ ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ¿© ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù).

+ +

°ü·Ã Ç׸ñ

+

+Click, MouseMove, MouseClick, MouseClickDrag, MouseGetPos, PixelGetColor, PixelSearch, ToolTip, Menu

+ +

¿¹Á¦

+
CoordMode, ToolTip, Screen  ; ÅøÆÁÀ» ÀýÀç È­¸é ÁÂÇ¥¿¡ ¹èÄ¡ÇÕ´Ï´Ù:
+CoordMode, ToolTip  ; À§¿Í °°½À´Ï´Ù. ¶È °°ÀÌ "screen"ÀÌ ±âº»°ªÀÔ´Ï´Ù.
+ + + diff --git a/src/docs/commands/Critical.htm b/src/docs/commands/Critical.htm new file mode 100644 index 0000000..f827043 --- /dev/null +++ b/src/docs/commands/Critical.htm @@ -0,0 +1,67 @@ + + + + +Critical + + + + + + + +

ÀÓ°è(Critical)

+ +

ÇöÀç ¾²·¹µå°¡ ´Ù¸¥ ¾²·¹µå¿¡°Ô ÀÎÅÍ·´Æ® µÇÁö ¾Êµµ·Ï ¹æÁöÇÕ´Ï´Ù. ¶Ç´Â ÀÎÅÍ·´Æ® µÇµµ·Ï È°¼ºÈ­ÇÕ´Ï´Ù.

+ +
Critical [, Off]
+Critical 50 ; ¾Æ·¡ÀÇ ³íÆòÀ» º¸½Ê½Ã¿À.
+

+ù ¸Å°³º¯¼ö°¡ »ý·«µÇ¸é (¶Ç´Â ´Ü¾î°¡ OnÀ̸é), ÇöÀç ¾²·¹µå¸¦ ÀÓ°è °ªÀ¸·Î ¸¸µì´Ï´Ù. ´Ù¸¥ ¾²·¹µå°¡ ÀÎÅÍ·´Æ® ÇÒ ¼ö ¾ø´Ù´Â ¶æÀÔ´Ï´Ù. ù ¸Å°³º¯¼ö°¡ OffÀ̸é (¶Ç´Â v1.0.48+¿¡¼­ 0À̸é), ÇöÀç ¾²·¹µå´Â Thread InterruptÀÇ ¼³Á¤¿¡ »ó°üÀÌ ¾øÀÌ Áï½Ã ÀÎÅÍ·´Æ®°¡ °¡´ÉÇØÁý´Ï´Ù.

+ +

ÀÓ°è ¾²·¹µåÀÇ ÇàÀ§

+

+¿ì¼±¼øÀ§°¡-³ôÀº ¾²·¹µå¿Í ´Ù¸£°Ô, ÀÓ°è ¾²·¹µå µ¿¾È ¹ß»ýÇÏ´Â À̺¥Æ®´Â Æó±âµÇÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, ÇöÀç ¾²·¹µå°¡ ÀÓ°è »óÅÂÀÎ µ¿¾È »ç¿ëÀÚ°¡ ÇÖÅ°¸¦ ´©¸£¸é ±× ÇÖÅ°´Â ÇöÀç ¾²·¹µå°¡ Á¾·áÇϰųª ºñÀÓ°è ¾²·¹µå°¡ µÉ ¶§ ±îÁö ¹«ÇÑÁ¤ ¹öÆÛ Ã³¸®µÇ´Ù°¡, Á¾·áÇÏ´Â ±× ¼ø°£ ±× ÇÖÅ°°¡ »õ ¾²·¹µå·Î ±âµ¿µË´Ï´Ù.

+

+ÀÓ°è ¾²·¹µå´Â ºñ»ó ½Ã¿¡¸¸ ÀÎÅÍ·´Æ® µË´Ï´Ù. ºñ»ó ½Ã¶õ ´ÙÀ½°ú °°ÀÌ ±¸¼ºµË´Ï´Ù: +

    +
  1. OnExit ¼­ºê·çƾ; +
  2. 0x312 º¸´Ù ÀÛÀº ¸Þ½ÃÁö ¹øÈ£¸¦ °üÁ¦ÇÏ´Â OnMessage() ÇÔ¼ö (¶Ç´Â ±×·± ¸Þ½ÃÁö°¡ Ã˹ßÇÑ ¿ªÈ£Ãâ ÇÔ¼ö); +
  3. ±×¸®°í ÀÓ°è ¾²·¹µå ÀÚü°¡ °£Á¢ÀûÀ¸·Î Ã˹ßÇÑ ¿ªÈ£Ãâ ÇÔ¼ö (¿¹, SendMessage ¶Ç´Â DllCall¸¦ ÅëÇÏ¿©) +
+ÀÌ·± ÀÎÅÍ·´Æ®¸¦ ÇÇÇÏ·Á¸é, Àӽ÷Π±×·± ÇÔ¼öµéÀ» ºñÈ°¼ºÈ­ ½ÃÅ°½Ê½Ã¿À.

+

+ÀÓ°è ¾²·¹µå´Â MsgBox³ª ±âŸ ´ëÈ­»óÀÚ°¡ È­¸é¿¡ ³ªÅ¸³ª¸é ÀÎÅÍ·´Æ®µÉ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, Thread Interrupt°ú ´Ù¸£°Ô, ÀÌ ¾²·¹µå´Â »ç¿ëÀÚ°¡ ´ëÈ­»óÀÚ¸¦ Ãë¼ÒÇÏ°í ³ª¸é ´Ù½Ã ÀÓ°è ¾²·¹µå°¡ µË´Ï´Ù.

+ +

Critical Off

+

+¹öÆÛ Ã³¸®µÈ À̺¥Æ®°¡ »õ·Î¿î ¾²·¹µå°¡ ½ÃÀ۵DZ⸦ ±â´Ù¸®°í ÀÖÀ» ¶§, Critical Off¸¦ »ç¿ëÇϸé ÇöÀç ¾²·¹µå¸¦ Áï½Ã ÀÎÅÍ·´Æ®ÇÏÁö ¾Ê½À´Ï´Ù. ´ë½Å¿¡, Æò±Õ 5 ¹Ð¸®ÃÊ°¡ Áö³­ ´ÙÀ½ ÀÎÅÍ·´Æ®°¡ ÀϾ´Ï´Ù. ÀÌ·¸°Ô Çϸé Critical Off µÚ¿¡ Àû¾îµµ ÇÑ ÁÙÀÌ ÀÎÅÍ·´Æ® Àü¿¡ ½ÇÇàµÉ È®·üÀÌ 99.999% ÀÌ»óÀÔ´Ï´Ù. °­Á¦·Î ÀÎÅÍ·´Æ®¸¦ Áï½Ã ÀϾ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾ÆÁ÷ Á¸ÀçÇÏÁö ¾Ê´Â â¿¡ ´ëÇÏ¿© Sleep -1 ¶Ç´Â WinWait¿Í °°Àº Áö¿¬À» »ç¿ëÇÏ¸é µË´Ï´Ù.

+

+Critical Off´Â ÇöÀç ¾²·¹µå°¡ ÀÓ°è ¾²·¹µå°¡ ¾Æ´Ï¾ú´õ¶óµµ ±×ÀÇ ÀÎÅÍ·´Æ® ºÒ°¡Ä§¼ºÀ» Ãë¼ÒÇÕ´Ï´Ù. ±×·¯¹Ç·Î GuiSize¿Í °°Àº À̺¥Æ®¸¦ ´õ »¡¸® ´õ ¿¹Ãø °¡´ÉÇÏ°Ô Ã³¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

¾²·¹µå ¼³Á¤

+

+ÀÓ°è°ªÀÇ ÇöÀç ¼³Á¤À» ÀúÀåÇÏ°í º¹±¸ÇÏ´Â ¹ýÀº A_IsCriticalÀ» ÂüÁ¶ÇϽʽÿÀ. ±×·¸Áö¸¸, ÀÓ°è°ªÀº ¾²·¹µå¿¡-Á¾¼ÓÀûÀÎ ¼³Á¤À̹ǷÎ, ÀÓ°è ¾²·¹µå°¡ ³¡³ª¸é, ±× ¾Æ·¡ÀÇ/Àç°³µÈ ¾²·¹µå´Â (ÀÖ´Ù¸é) ÀÚµ¿À¸·Î ºñÀÓ°è ¾²·¹µå°¡ µË´Ï´Ù. °á·ÐÀûÀ¸·Î ¾²·¹µå¸¦ ³¡³»±â ¹Ù·Î Àü¿¡ "Critical Off"¸¦ ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+ÀÚµ¿ ½ÇÇà ¼½¼Ç¿¡ (½ºÅ©¸³Æ®ÀÌ »ó´Ü ºÎºÐ) ÀÓ°è°ªÀÌ »ç¿ëµÇÁö ¾ÊÀ¸¸é, ¸ðµç ¾²·¹µå´Â ºñÀÓ°è °ªÀ¸·Î ½ÃÀÛÇÕ´Ï´Ù (±×·¸Áö¸¸ Thread Interrupt ¼³Á¤À» ¿µÇâÀ» ¹ÌĨ´Ï´Ù). ´ëÁ¶ÀûÀ¸·Î, ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡¼­ ÀÓ°è°ªÀ» ÄÑ°í ´Ù½Ã ²ôÁö ¾ÊÀ¸¸é, »õ·Î ±âµ¿ÇÏ´Â ¸Å ¾²·¹µå¸¶´Ù (ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ½Ã°£ Á¦ÇÑ ¼­ºê·çƾ µîÀº) ÀÓ°è°ªÀ¸·Î ½ÃÀÛÇÕ´Ï´Ù.

+

+¸í·É¾î Thread NoTimers´Â Critical°ú ºñ½ÁÇÏÁö¸¸ ŸÀ̸ÓÀÇ ÀÎÅÍ·´Æ®¸¸ ¹æÁöÇÑ´Ù´Â Á¡ÀÌ ´Ù¸¨´Ï´Ù.

+

+v1.0.47+¿¡¼­, CriticalÀ» Äѵΰí SetBatchLines -1¸¦ ¹èÄ¡Çϸé ÇöÀç ¾²·¹µå¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.

+ +

¸Þ½ÃÁö Á¡°Ë °£°Ý

+

v1.0.47+¿¡¼­, ¾çÀÇ Á¤¼ö¸¦ ù ¸Å°³º¯¼ö·Î ÁöÁ¤Çϸé (¿¹¸¦ µé¾î, Critical 30) ÀÓ°è°ªÀÌ ÄÑÁú »Ó¸¸ ¾Æ´Ï¶ó ³»ºÎ ¸Þ½ÃÁö Å¥¸¦ Á¡°ËÇÏ´Â °£°ÝÀÌ ¼ö ¹Ð¸®ÃÊ·Î º¯°æµË´Ï´Ù. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, ÀÓ°è°ªÀÌ ÄÑÁ® ÀÖ´Â µ¿¾È ¸Þ½ÃÁö´Â ¸Å 16 ¹Ð¸®Ãʸ¶´Ù Á¡°ËµË´Ï´Ù. ±×¸®°í ²¨Á® ÀÖÀ¸¸é ¸Å 5Ãʸ¶´Ù Á¡°ËµË´Ï´Ù. Á¡°Ë °£°ÝÀ» Áõ°¡½ÃÅ°¸é ¸Þ½ÃÁö/À̺¥Æ®ÀÇ µµÂøÀ» Áö¿¬½Ãŵ´Ï´Ù. ±×·¡¼­ ÇöÀç ¾²·¹µå´Â ´õ ½Ã°£À» °¡Áö°í Á¾·áÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô Çϸé "ÀÌ¹Ì ½ÇÇà ÁßÀÎ ¾²·¹µå ¶§¹®¿¡" ¾î¶² OnMessage() ±×¸®°í GUI À̺¥Æ®°¡ ¼Ò½ÇµÉ °¡´É¼ºÀÌ ÁÙ¾îµì´Ï´Ù. ±×·¸Áö¸¸, Sleep¿Í WinWait°°Àº ´ë±â ¸í·É¾î´Â ÀÌ ¼³Á¤¿¡ °ü°è ¾øÀÌ ¸Þ½ÃÁö¸¦ Á¡°ËÇÕ´Ï´Ù (¿ìȸåÀº DllCall("Sleep", Uint, 500)ÀÔ´Ï´Ù). ÁÖÀÇ: ¸Þ½ÃÁö-Á¡°Ë °£°ÝÀ» ³Ê¹« ¸¹ÀÌ ´Ã¸®¸é GUI ⠴ٽà ±×¸®±â¿Í °°Àº ´Ù¾çÇÑ À̺¥Æ®¿¡ ¹ÝÀÀÇÏÁö ¸øÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

Thread (command), Threads, #MaxThreadsPerHotkey, #MaxThreadsBuffer, OnMessage(), RegisterCallback(), Hotkey, Menu, SetTimer

+ +

¿¹Á¦

+
#space::  ; Win+Space ÇÖÅ°.
+Critical
+ToolTip ÀÌ ÅøÆÁÀÌ »ç¶óÁø ÈÄ¿¡¸¸ »õ ¾²·¹µå°¡ ½ÃÀÛÇÕ´Ï´Ù.
+Sleep 3000
+ToolTip  ; ÆÁÀ» ²ü´Ï´Ù.
+return  ; ÇÖÅ° ¼­ºê·çƾÀ¸·ÎºÎÅÍ ¹ÝȯµÇ¸é ¾²·¹µå°¡ Á¾·áµË´Ï´Ù. Àç°³ µÉ ¾Æ·¡ÀÇ ¾²·¹µå´Â Á¤ÀÇ»ó ÀÓ°è°ªÀÌ ¾Æ´Õ´Ï´Ù.
+ + + diff --git a/src/docs/commands/DetectHiddenText.htm b/src/docs/commands/DetectHiddenText.htm new file mode 100644 index 0000000..59f6de2 --- /dev/null +++ b/src/docs/commands/DetectHiddenText.htm @@ -0,0 +1,43 @@ + + + + +DetectHiddenText + + + + + + + +

DetectHiddenText

+ +

+âÀ» ã±â À§ÇÑ ¸ñÀûÀ¸·Î â¿¡¼­ º¸ÀÌÁö ¾ÊÀº ÅؽºÆ®¸¦ "º¸¿©ÁÙÁö ¸»Áö" °áÁ¤ÇÕ´Ï´Ù. ÀÌ°ÍÀº IfWinExist ±×¸®°í WinActivate¿Í °°Àº ¸í·É¾îµé¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.

+ +
DetectHiddenText, On|Off
+

¸Å°³º¯¼ö

+
+ +
On|Off
+

On: ÀÌ°ÍÀÌ ±âº» °ªÀÔ´Ï´Ù. ¼ûÀº ÅؽºÆ®°¡ ŽÁöµË´Ï´Ù.

+

Off: ¼ûÀº ÅؽºÆ®´Â ŽÁöµÇÁö ¾Ê½À´Ï´Ù.

+ +
+ +

³íÆò

+

+"¼ûÀº ÅؽºÆ®"´Â â¿¡¼­ º¸ÀÌÁö ¾Ê´Â ÄÜÆ®·ÑÀ» °¡¸®Å°´Â ¿ë¾îÀÔ´Ï´Ù. ±×·¡¼­ ±×ÀÇ ÅؽºÆ®µµ "¼ûÀº"°ÍÀ¸·Î °£ÁÖÇÕ´Ï´Ù. DetectHiddenText¸¦ ²ô¸é ¸ÖƼ-ÅÇ ´ëÈ­»óÀÚ ¶Ç´Â ´ÙÁß-ÆÇ Ã¢¿¡¼­ ´Ù¸¥ ÆÇ »çÀÌÀÇ Â÷À̸¦ ¹ß°ßÇÏ°í ½ÍÀ» ¶§ À¯¿ëÇÕ´Ï´Ù. Window Spy¸¦ »ç¿ëÇϸé ÇöÀç È°¼º â¿¡¼­ ¼û¾î ÀÖ´Â ÅؽºÆ®¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. WinText¸¦ ¸Å°³º¯¼ö·Î ÇÏ´Â ¸í·É¾î´Â ¸ðµÎ ÀÌ ¼³Á¤¿¡ ¿µÇâÀ» ¹Þ½À´Ï´Ù. ¿©±â¿¡´Â WinActivate, IfWinActive, WinWait, ±×¸®°í IfWinExist°¡ Æ÷ÇԵ˴ϴÙ.

+

+³»Àå º¯¼ö A_DetectHiddenText¿¡ ÇöÀç ¼³Á¤ÀÌ µé¾î ÀÖ½À´Ï´Ù (On ¶Ç´Â Off).

+

+»õ·Î ±âµ¿µÈ ¾²·¹µå´Â (ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾ) ÀÌ ¸í·É¾î¿¡ ´ëÇÑ ±âº» °ªÀ» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ±âº» °ªÀº ÀÚµ¿-½ÇÇà ¼½¼Ç (½ºÅ©¸³Æ® »ó´Ü)¿¡¼­ ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ¿© ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

DetectHiddenWindows

+ +

¿¹Á¦

+
DetectHiddenText, off
+ + + diff --git a/src/docs/commands/DetectHiddenWindows.htm b/src/docs/commands/DetectHiddenWindows.htm new file mode 100644 index 0000000..ba2d1bb --- /dev/null +++ b/src/docs/commands/DetectHiddenWindows.htm @@ -0,0 +1,46 @@ + + + + +DetectHiddenWindows + + + + + + + +

DetectHiddenWindows

+ +

½ºÅ©¸³Æ®¿¡ º¸ÀÌÁö ¾ÊÀº âÀ» "º¸¿©ÁÙÁö ¸»Áö" °áÁ¤ÇÕ´Ï´Ù.

+ +
DetectHiddenWindows, On|Off
+

¸Å°³º¯¼ö

+
+ +
On|Off
+

On: ¼ûÀº âÀ» ŽÁöÇÕ´Ï´Ù.

+

Off: ÀÌ°ÍÀÌ ±âº»°ªÀÔ´Ï´Ù. ¼ûÀº âÀº ŽÁöµÇÁö ¾Ê½À´Ï´Ù. ´Ü,WinShow ¸í·É¾î·Î´Â ŽÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +
+ +

³íÆò

+

+DetectHiddenWindows¸¦ ÄÑ¸é ¾î¶² °æ¿ì ½ºÅ©¸³ÆÃÀÌ Èûµé¾îÁú ¼ö ÀÖ½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ¾î¶² ¼ûÀº ½Ã½ºÅÛ Ã¢ÀÌ ¿ì¹ßÀûÀ¸·Î ¿©·¯ºÐÀÌ ÀÛ¾÷À» ½ÃµµÇÏ´Â ÅؽºÆ® ¶Ç´Â â Á¦¸ñ¿¡ ºÎÇÕÇØ ¹ö¸± ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ±×·¡¼­ ´ëºÎºÐÀÇ ½ºÅ©¸³Æ®´Â ÀÌ ¼³Á¤À» ²ö »óÅ·ΠµÎ¾î¾ß ÇÕ´Ï´Ù. ±×·¸Áö¸¸, ¼ûÀº â°ú Á÷Á¢ÀûÀ¸·Î ÀÛ¾÷À» ÇÏ°í ½Í´Ù¸é ÄÑ´Â°Ô ÁÁ½À´Ï´Ù. ÀÛ¾÷ Àü¿¡ ¸ÕÀú WinShow¸¦ »ç¿ëÇÏ¿© º¸¿©ÁÖ¾î¾ß ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+¸ðµç â ¸í·É¾î´Â WinShow¸¦ Á¦¿ÜÇÏ°í ÀÌ ¼³Á¤¿¡ ¿µÇâÀ» ¹Þ½À´Ï´Ù. ¿©±â¿¡´ÂWinActivate, IfWinActive, WinWait, IfWinExist°¡ Æ÷ÇԵ˴ϴÙ. ´ëÁ¶ÀûÀ¸·Î, WinShow´Â ¾ðÁ¦³ª ¼ûÀº âÀ» º¸¿©ÁÝ´Ï´Ù. ¼ûÀº â ŽÁö°¡ ÄÑÁ® ÀÖÁö ¾Ê´õ¶óµµ »ó°ü¾ø½À´Ï´Ù.

+

+ahk_id method¸¦ ÅëÇÏ¿© ¶Ç´Â ¸¶Áö¸· ¹ß°ß âÀ¸·Î ÄÜÆ®·ÑÀ̳ª ÀÚ¼Õ Ã¢¿¡ Á¢±ÙÇÒ ¶§ DetectHiddenWindowsÀ» ÄÓ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ¶Ç GUI â¿¡ Gui +LastFound¸¦ ÅëÇÏ¿© Á¢±ÙÇÒ ¶§µµ ÇÊ¿ä ¾ø½À´Ï´Ù.

+

+³»Àå ÇÔ¼ö A_DetectHiddenWindows¿¡ ÇöÀç ¼³Á¤ÀÌ ´ã°Ü ÀÖ½À´Ï´Ù (On ¶Ç´Â Off).

+

+»õ·Î ±âµ¿µÈ ¾²·¹µå´Â (ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾ) ÀÌ ¸í·É¾îÀÇ ±âº» °ªÀ» °¡Áö°í »õ·Î ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ±âº» °ªÀº ÀÚµ¿ ½ÇÇà ¼½¼Ç (½ºÅ©¸³Æ® »ó´Ü)¿¡¼­ ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ¿© ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù).

+ +

°ü·Ã Ç׸ñ

+

DetectHiddenText

+ +

¿¹Á¦

+
DetectHiddenWindows, on
+ + + diff --git a/src/docs/commands/DllCall.htm b/src/docs/commands/DllCall.htm new file mode 100644 index 0000000..00e2946 --- /dev/null +++ b/src/docs/commands/DllCall.htm @@ -0,0 +1,439 @@ + + + + +DllCall + + + + + + + +

DllCall()

+ +

Ç¥ÁØ Windows API ÇÔ¼ö °°ÀÌ, DLL¾ÈÀÇ ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù.

+ +
Result := DllCall("[DllFile\]Function" [, Type1, Arg1, Type2, Arg2, "Cdecl ReturnType"])
+

¸Å°³º¯¼ö

+
+ +
Result
+

DllCallÀº ÇÔ¼ö°¡ µ¹·ÁÁÖ´Â ½ÇÁ¦ °ªÀ» µ¹·ÁÁÝ´Ï´Ù. ÇÔ¼ö°¡ °ªÀ» µ¹·ÁÁÖÁö ¾Ê´Â À¯ÇüÀ̶ó¸é, ±× °á°ú´Â Á¤ÀǵÇÁö ¾ÊÀº Á¤¼öÀÔ´Ï´Ù. ¿¡·¯ ¶§¹®¿¡ ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ¾ø´Ù¸é, ±× °á°ú °ªÀº ºñ¾î ÀÖ½À´Ï´Ù(ºó ¹®ÀÚ¿­).

+ +
[DllFile\]Function
+

DLLÀ̳ª EXE ÆÄÀÏ À̸§ ´ÙÀ½¿¡ ¿ª»ç¼± ±×¸®°í ÇÔ¼öÀÇ À̸§ÀÌ µû¶ó¿É´Ï´Ù. ¿¹¸¦ µé¾î: "MyDLL\MyFunction" (È®ÀåÀÚ°¡ »ý·«µÇ¸é ".dll"ÀÌ ±âº»°ªÀÔ´Ï´Ù). Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, DllFileÀº ½Ã½ºÅÛ PATH ¶Ç´Â A_WorkingDir¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ.

+

DllFileÀº User32.dll, Kernel32.dll, ComCtl32.dll, ¶Ç´Â Gdi32.dll¿¡ °ÅÁÖÇÏ´Â ÇÔ¼öµéÀ» È£ÃâÇÒ ¶§ »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, "User32\IsWindowVisible"´Â "IsWindowVisible"¿Í °á°ú°¡ °°½À´Ï´Ù.

+

ÇÔ¼ö°¡ ÁÖ¾îÁø À̸§À¸·Î ¹ß°ßµÇÁö ¾ÊÀ¸¸é, A (ANSI) ¶Ç´Â W (Unicode) Á¢¹Ì»ç¸¦ ¾î´À ¹öÀüÀÇ ¿ÀÅäÇÖÅ°°¡ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÁßÀΰ¡¿¡ ±â¹ÝÇÏ¿© ÀÚµ¿À¸·Î Ãß°¡ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, "MessageBox"´Â ANSI ¹öÀüÀº "MessageBoxA" ±×¸®°í À¯´ÏÄÚµå ¹öÀüÀº "MessageBoxW"¿Í °°½À´Ï´Ù.

+

¹Ýº¹ÀûÀ¸·Î DLL¿¡ È£ÃâÇÒ °æ¿ì ¹Ì¸® ÀûÀçÇÏ¸é ¼öÇ༺´ÉÀ» ±ØÀûÀ¸·Î Çâ»ó½Ãų ¼ö ÀÖ½À´Ï´Ù.

+

v1.0.46.08+¿¡¼­, ÀÌ ¸Å°³º¯¼ö´Â Á¤¼ö ¸¸À¸·Î ±¸¼ºµÉ ¼ö ÀÖ½À´Ï´Ù. È£ÃâÇÒ ÇÔ¼öÀÇ ÁÖ¼Ò·Î ¹ø¿ªµË´Ï´Ù. ±×·± ÁÖ¼ÒÀÇ ¼Ò½º·Î´Â COM ±×¸®°í RegisterCallback()ÀÌ Æ÷ÇԵ˴ϴÙ.

+ +
Type1, Arg1
+

°¢ ½Ö¸¶´Ù ÇÔ¼ö¿¡ °Ç³×Áú ÇϳªÀÇ ¸Å°³º¯¼ö¸¦ ³ªÅ¸³À´Ï´Ù. ½ÖÀÇ °³¼ö´Â Á¦ÇÑÀÌ ¾ø½À´Ï´Ù. Type¿¡ °üÇÑ °ÍÀº ¾Æ·¡ÀÇ À¯Çü Å×À̺íÀ» ÂüÁ¶ÇϽʽÿÀ. Arg¿¡ ´ëÇÏ¿©, ÇÔ¼ö¿¡ °Ç³Ú °ªÀ» ÁöÁ¤ÇÕ´Ï´Ù.

+ +
Cdecl ReturnType
+

´Ü¾î CdeclÀº º¸Åë »ý·«ÇÕ´Ï´Ù. ´ëºÎºÐÀÇ ÇÔ¼ö°¡ Ç¥ÁØ È£Ãâ °ü·Ê¸¦ »ç¿ëÇÏÁö "C" È£Ãâ °ü·Ê¸¦ »ç¿ëÇÏÁö´Â ¾Ê±â ¶§¹®ÀÔ´Ï´Ù (wsprintf ÇÔ¼ö¿Í °°ÀÌ °¡º¯ °³¼öÀÇ ÀÎÀÚ¸¦ ¹Þ´Â ÇÔ¼ö´Â ¿¹¿Ü·Î ÇÕ´Ï´Ù). CdeclÀ» »ý·«ÇßÁö¸¸ È£Ãâ¿¡¼­ ErrorLevel An¸¦ »êÃâÇÑ´Ù¸é -- ¿©±â¿¡¼­ n´Â °Ç³Ù ÀÎÀÚµéÀÇ ÃÑ Å©±âÀÔ´Ï´Ù -- CdeclÀÌ ÇÊ¿äÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ëºÎºÐÀÇ °´Ã¼-ÁöÇâ C++ ÇÔ¼ö´Â thiscall °ü·Ê¸¦ »ç¿ëÇÏÁö¸¸, ÀÌ´Â Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.

+

Á¸ÀçÇÑ´Ù¸é, ´Ü¾î CdeclÀº ¹Ýȯ À¯Çüº¸´Ù (ÀÖ´Ù¸é) ¸ÕÀú ³ªÅ¸³ª¾ß ÇÕ´Ï´Ù. ´ÙÀ½ ´Ü¾î¿Í ½ºÆäÀ̽º³ª ÅÇÀ¸·Î ºÐ¸®ÇϽʽÿÀ. ¿¹¸¦ µé¾î: "Cdecl Str".

+

[AHK_L 53+]: º°µµ·Î "C" È£Ãâ °ü·Ê´Â 64-ºñÆ® Äڵ忡 Á¸ÀçÇÏÁö ¾Ê±â ¶§¹®¿¡, CdeclÀ» ÁöÁ¤Çصµ 64-ºñÆ® ºôµåÀÇ ¿ÀÅäÇÖÅ°¿¡¼­´Â ¾Æ¹« È¿°ú°¡ ¾øÀ» ¼ö ÀÖ½À´Ï´Ù.

+

ReturnType: ÇÔ¼ö°¡ 32-ºñÆ® ºÎÈ£ÀÖ´Â Á¤¼ö (Int), BOOLÀ» µ¹·ÁÁְųª, ¶Ç´Â ¾Æ¹«°Íµµ µ¹·ÁÁÖÁö ¾ÊÀ¸¸é, ReturnTypeÀ» »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ¾Æ·¡ÀÇ À¯Çü Å×ÀÌºí¿¡ ÀÖ´Â ÀÎÀÚ Áß Çϳª¸¦ ÁöÁ¤ÇϽʽÿÀ. º°Ç¥ Á¢¹Ì»çµµ Áö¿øµË´Ï´Ù.

+ +
+ +

ÀÎÀÚÀÇ À¯Çü°ú ¹Ýȯ °ª

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Str

"Blue"³ª MyVar °°Àº ¹®ÀÚ¿­. È£ÃâµÈ ÇÔ¼ö°¡ ±× ¹®ÀÚ¿­À» º¯°æÇÏ°í ÀÎÀÚ°¡ ºñº¸È£ º¯¼öÀ̸é, ±×ÀÇ ³»¿ëÀÌ °»½ÅµË´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ È£ÃâÀº MyVarÀÇ ³»¿ëÀ» ´ë¹®ÀÚ·Î º¯°æÇÕ´Ï´Ù: DllCall("CharUpper", "Str", MyVar).

+

±×·¸Áö¸¸, ÇÔ¼ö°¡ ÇÑ º¯¼öÀÇ ÇöÀç ³»¿ëº¸´Ù ´õ Å« ¹®ÀÚ¿­À» ÀúÀåÇϵµ·Ï ¼³°èµÇ¾ú´Ù¸é, º¯¼ö°¡ ÃæºÐÈ÷ ´õ Å«Áö ¸ÕÀú Á¡°ËÇÑ ´ÙÀ½ ±× ÇÔ¼ö¸¦ È£ÃâÇϽʽÿÀ. VarSetCapacity(MyVar, 123)¸¦ È£ÃâÇØ º¸¸é ¾Ë ¼ö ÀÖ½À´Ï´Ù. ¿©±â¿¡¼­ 123Àº MyVar°¡ º¸À¯ÇÒ ¼ö ÀÖ´Â ±æÀÌÀÔ´Ï´Ù.

+

Str ÀÎÀÚ´Â ¼ýÀÚ·Î Æò°¡µÇ´Â Ç¥Çö½ÄÀÌ µÇ¸é ¾ÈµË´Ï´Ù (¿¹¸¦ µé¾î, i+1). ±×·¸´Ù¸é, ÇÔ¼ö´Â È£ÃâµÇÁö ¾ÊÀ¸¸ç ErrorLevelÀº -2·Î ¼³Á¤µË´Ï´Ù.

+

º°Ç¥ º¯¼ö "Str*"Àº Áö¿øµÇÁö¸¸ °ÅÀÇ »ç¿ëµÇÁö ¾Ê½À´Ï´Ù. "TCHAR **" ¶Ç´Â "LPTSTR *" °°Àº °ÍÀ» ±â´ëÇÏ´Â ÇÔ¼ö¿Í ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

ÁÖÀÇ: ¹®ÀÚ¿­À» ÇÔ¼ö¿¡ °Ç³Ú ¶§, ÇÔ¼ö°¡ ¾î¶² À¯ÇüÀÇ ¹®ÀÚ¿­À» ±â´ëÇÏ´ÂÁö ÀÎÁöÇØ¾ß ÇÕ´Ï´Ù.

AStr
WStr
[AHK_L 42+]: ANSI ¹®ÀÚ¿­ ¶Ç´Â Unicode (Wide character) ¹®ÀÚ¿­. µ¿µîÇÑ Win32 À¯Çü°ú ±âŸ ÀÚ¼¼ÇÑ »çÇ×Àº ½ºÅ©¸³Æ® ȣȯ¼ºÀ» ÂüÁ¶ÇϽʽÿÀ.
Int6464-ºñÆ® Á¤¼ö·Î¼­, ¹üÀ§´Â -9223372036854775808 (-0x8000000000000000)ºÎÅÍ 9223372036854775807 (0x7FFFFFFFFFFFFFFF)±îÁöÀÔ´Ï´Ù.
Int

32-ºñÆ® Á¤¼ö·Î¼­ (ÀϹÝÀûÀÎ Á¤¼ö À¯Çü), ¹üÀ§´Â -2147483648 (-0x80000000)ºÎÅÍ 2147483647 (0x7FFFFFFF)±îÁöÀÔ´Ï´Ù. Int´Â Á¾Á¾ "Long"À̶ó°íµµ ºÎ¸¨´Ï´Ù.

+

Int´Â ¶Ç BOOL ÀÎÀÚ¸¦ ±â´ëÇÏ´Â ÇÔ¼ö¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù (BOOL °ªÀº 1 ¶Ç´Â 0ÀÔ´Ï´Ù).

+

ºÎÈ£¾ø´Â Int (UInt)µµ »ó´çÈ÷ ÀÚÁÖ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î DWORD.

Short16-ºñÆ® Á¤¼ö·Î¼­ ¹üÀ§´Â -32768 (-0x8000)ºÎÅÍ 32767 (0x7FFF)±îÁöÀÔ´Ï´Ù. ºÎÈ£¾ø´Â Short (UShort)´Â WORD¸¦ ±â´ëÇÏ´Â ÇÔ¼ö¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
Char8-ºñÆ® Á¤¼öÀÔ´Ï´Ù. ¹üÀ§´Â -128 (-0x80)ºÎÅÍ 127 (0x7F)±îÁöÀÔ´Ï´Ù. ºÎÈ£¾ø´Â character (UChar)´Â BYTE¸¦ ±â´ëÇÏ´Â ÇÔ¼ö¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
Float32-ºñÆ® ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀÔ´Ï´Ù. Á¤¹Ðµµ´Â 6ÀÚ¸®ÀÔ´Ï´Ù.
Double64-ºñÆ® ºÎµ¿ ¼Ò¼öÁ¡ ¼ö. Á¤¹Ðµµ´Â 15ÀÚ¸®ÀÔ´Ï´Ù.
Ptr

[AHK_L 42+]: Æ÷ÀÎÅÍ-¤»±âÀÇ Á¤¼ö·Î¼­, . ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ´Â ¹öÀüÀÌ 32ºñÆ®Àΰ¡ ¾Æ´Ï¸é 64ºñÆ®Àΰ¡¿¡ µû¶ó Int ¶Ç´Â Int64¿Í µ¿µîÇÕ´Ï´Ù. PtrÀº ¹è¿­À̳ª ±¸Á¶Ã¼¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ (RECT* ¶Ç´Â LPPOINT) ±×¸®°í °ÅÀÇ ¸ðµç ÇÚµé°ú (HWND, HBRUSH ¶Ç´Â HBITMAP) ÇÔ²² »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ¸Å°³º¯¼ö°¡ LPDWORD ¶Ç´Â int*¿Í °°ÀÌ ´ÜÀÏ ¼ýÄ¡ °ªÀ» °¡¸®Å°´Â Æ÷ÀÎÅÍÀ̸é, ÀϹÝÀûÀ¸·Î "Ptr" ´ë½Å¿¡ * ¶Ç´Â P Á¢¹Ì»ç¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

+

PtrÀº ¶Ç * ¶Ç´Â P Á¢¹Ì»ç¿Íµµ »ç¿ë°¡´ÉÇÕ´Ï´Ù; LPVOID* ·ù¸¦ ÅëÇÏ¿© Æ÷ÀÎÅ͸¦ Ãâ·ÂÇÏ´Â ÇÔ¼ö¿Í ÇÔ²² »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

+

UPtrµµ À¯È¿ÇÏÁö¸¸, 32-ºñÆ® ºôµå¿¡¼­´Â ºÎÈ£°¡ ¾ø½À´Ï´Ù. ¿ÀÅäÇÖÅ°°¡ ºÎÈ£¾ø´Â 64-ºñÆ® Á¤¼ö¸¦ Áö¿øÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù.

+

¿¹Àü ¹öÀüÀÇ ¿ÀÅäÇÖÅ°¿Í ȣȯÀÌ ÇÊ¿äÇϸé, ¾Æ·¡¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ º¯¼ö À¯ÇüÀ» »ç¿ëÇϽʽÿÀ:

+
Ptr := A_PtrSize ? "Ptr" : "UInt" ; A_PtrSize°¡ Á¤ÀǵǾî ÀÖÁö ¾ÊÀ¸¸é ´ë½Å UInt¸¦ »ç¿ëÇÕ´Ï´Ù.
+DllCall("DeleteFile", Ptr, &filename) ; Ptr µÑ·¹¿¡ ÀÎ¿ë ºÎÈ£¸¦ »ý·«ÇÕ´Ï´Ù.
+

ÁÖÀÇ: NULL ÇÚµéÀ̳ª Æ÷ÀÎÅ͸¦ °Ç³×·Á¸é, Á¤¼ö 0À» °Ç³×½Ê½Ã¿À.

* or P
+ (suffix)

º°Ç¥¸¦ (¼±ÅÃÀûÀ¸·Î ¾Õ¿¡ ½ºÆäÀ̽º¿Í ÇÔ²²) À§ÀÇ À¯Çü¿¡ Ãß°¡ÇÏ¸é °ª ÀÚü°¡ ¾Æ´Ï¶ó ÀÎÀÚÀÇ ÁÖ¼Ò°¡ °Ç³×Áý´Ï´Ù (È£ÃâµÇ´Â ÇÔ¼ö´Â ±×°ÍÀ» ¹Þ¾ÆµéÀ̵µ·Ï ¼³°èµÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù). ±×·± ÀÎÀÚÀÇ °ªÀº ÇÔ¼ö°¡ º¯°æÇÒ ¼ö Àֱ⠶§¹®¿¡, naked º¯¼ö°¡ ÀÎÀÚ·Î °Ç³×Áú ¶§¸¶´Ù, ±× º¯¼öÀÇ ³»¿ëÀº °»½ÅµË´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ È£ÃâÀº MyVarÀÇ ³»¿ëÀ» MyFunction¿¡ ÁÖ¼Ò·Î °Ç³Ü´Ï´Ù. ±×·¯³ª MyVarµµ °»½ÅµÇ¾î MyFunction ÇÔ¼öÀÇ º¯°æÀ» ¹Ý¿µÇÕ´Ï´Ù: DllCall("MyDll\MyFunction", "Int*", MyVar).

+

+ ÀϹÝÀûÀ¸·Î, º°Ç¥´Â ÇÔ¼ö¿¡ ÀÎÀÚ À¯ÇüÀ̳ª ¹Ýȯ À¯ÇüÀÌ "LP"·Î ½ÃÀÛÇÒ ¶§¸¶´Ù »ç¿ëµË´Ï´Ù. °¡Àå ÈçÇÑ ¿¹´Â LPDWORDÀε¥, ÀÌ´Â DWORD °ªÀ» °¡¸®Å°´Â Æ÷ÀÎÅÍÀÔ´Ï´Ù. DWORD´Â ºÎÈ£ ¾ø´Â 32-ºñÆ® Á¤¼öÀ̱⠶§¹®¿¡ "UInt*"³ª "UintP"¸¦ »ç¿ëÇÏ¿© LPDWORD¸¦ Ç¥ÇöÇϽʽÿÀ. º°Ç¥´Â LPTSTR¿Í °°Àº ¹®ÀÚ¿­ À¯Çü, LPRECT¿Í °°ÀÌ ±¸Á¶Ã¼¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ, ¶Ç´Â ¹è¿­¿¡ »ç¿ëÇÏ¸é ¾ÈµË´Ï´Ù; ¿©±â¿¡ ´ëÇؼ­´Â, º¯¼ö¸¦ °Ç³×´Â°¡ ¾Æ´Ï¸é ±×ÀÇ ÁÖ¼Ò¸¦ °Ç³×´Â°¡¿¡ µû¶ó, "Str"À̳ª "Ptr"À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù..

+

ÁÖÀÇ: "Char*"´Â "Str"°ú °°Áö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇϸé "Char*"´Â 8-ºñÆ® ¼ýÀÚÀÇ ÁÖ¼Ò¸¦ °Ç³×´Â ¹Ý¸é¿¡, "Str"Àº ÀÏ·ÃÀÇ ¹®ÀÚ¿­ÀÇ ÁÖ¼Ò¸¦ °Ç³×±â ¶§¹®ÀÔ´Ï´Ù. ¹®ÀÚ´Â ¿ÀÅäÇÖÅ°ÀÇ ¹öÀü¿¡ µû¶ó, 8-ºñÆ® (ANSI) ¶Ç´Â 16-ºñÆ® (Unicode)ÀÏ ¼ö ÀÖ½À´Ï´Ù. ºñ½ÁÇÏ°Ô, "UInt*"´Â 32-ºñÆ® ¼ýÀÚÀÇ ÁÖ¼Ò¸¦ °Ç³Ü´Ï´Ù. ±×·¡¼­ ÇÔ¼ö°¡ °ªÀÇ ¹è¿­ ¶Ç´Â 32ºñÆ®º¸´Ù ´õ Å« ±¸Á¶¸¦ ±â´ëÇÒ °æ¿ì »ç¿ëÇÏ¸é ¾È µË´Ï´Ù.

+

+ ¿ÀÅäÇÖÅ°ÀÇ º¯¼ö´Â À¯ÇüÀÌ °íÁ¤µÇ¾î ÀÖÁö ¾Ê±â ¶§¹®¿¡, ÇÔ¼ö¿¡ °Ç³×´Â ÁÖ¼Ò´Â º¯¼ö ÀÚü°¡ ¾Æ´Ï¶ó Àӽà ¸Þ¸ð¸®¸¦ °¡¸®Åµ´Ï´Ù. º¯¼ö¿¡ VarSetCapacityÀ» È£ÃâÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ÇÔ¼ö°¡ ¹ÝȯµÇ¸é DllCalÀÌ ¿Ã¹Ù¸£°Ô ±× º¯¼ö¸¦ °»½ÅÇØ ÁÙ °ÍÀ̱⠶§¹®ÀÔ´Ï´Ù.

+
U (prefix)

À§ÀÇ Á¤¼ö À¯Çü ¾Õ¿¡ ¹®ÀÚ U¸¦ ¹èÄ¡ÇÏ¸é ºÎÈ£¾ø´Â Á¤¼ö·Î ¹ø¿ªµË´Ï´Ù (UInt64, UInt, UShort, ±×¸®°í UChar). ¾ö¹ÐÈ÷ ¸»ÇØ, ÀÌ°ÍÀº ¹Ýȯ °ª°ú º°Ç¥ º¯¼ö¿¡¸¸ ÇÊ¿äÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é °ªÀ¸·Î °Ç³×¾îÁø ÀÎÀÚ°¡ ºÎÈ£°¡ ÀÖ´ÂÁö ¾ø´ÂÁö ½Å°æ¾²Áö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù (Int64´Â Á¦¿Ü).

+

ºÎÈ£¾ø´Â ÀÎÀÚ¿¡ À½ÀÇ Á¤¼ö¸¦ ÁöÁ¤Çϸé, µÇ¸é, ±× Á¤¼ö´Â ºÎÈ£¾ø´Â ¿µ¿ªÀ¸·Î º¯È¯µË´Ï´Ù. + ¿¹¸¦ µé¾î, -1À» UInt·Î º¸³»¸é, 0xFFFFFFFFÀÌ µË´Ï´Ù.

+

ÇÔ¼ö°¡ »ý»êÇÏ´Â Unsigned 64-ºñÆ® Á¤¼ö´Â Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ±×·¯¹Ç·Î, 0x8000000000000000 ÀÌ»óÀÇ ¼ö¿Í ÀÛ¾÷ÇÏ·Á¸é, U Á¢µÎ»ç¸¦ »ý·«ÇÏ°í ÇÔ¼ö·ÎºÎÅÍ ¹ÞÀº À½ÀÇ Á¤¼ö °ªÀº °Å´ëÇÑ Á¤¼ö·Î ¹ø¿ªÇϽʽÿÀ. ¿¹¸¦ µé¾î, -1À» Int64·Î »êÃâÇÏ´Â ÇÔ¼ö´Â ½ÇÁ¦·Î 0xFFFFFFFFFFFFFFFFÀ» »ý»êÇÏ°í ÀÖ´Â °ÍÀÔ´Ï´Ù. UInt64¸¦ »êÃâÇϵµ·Ï ¼³°èµÇ¾î ÀÖ´Ù¸é ¸»ÀÔ´Ï´Ù.

+

ÁÖÀÇ: ÀÎÀÚ À¯Çü ¶Ç´Â ¹Ýȯ À¯ÇüÀ» ÁöÁ¤ÇÒ ¶§ ½ºÆäÀ̽º³ª º°Ç¥°¡ µé¾î ÀÖÁö ¾ÊÀ¸¸é, ±× ÁÖÀ§¿¡ ÀοëºÎÈ£¸¦ µÎ·çÁö ¾Ê¾Æµµ µË´Ï´Ù. ¿¹¸¦ µé¾î, StrÀ» "Str" ´ë½Å¿¡ »ç¿ëÇÒ ¼ö ÀÖ°í CDeclÀ» "CDecl" ´ë½Å »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. °Ô´Ù°¡, ¹®ÀÚ P¸¦ º°Ç¥ ´ë½Å »ç¿ëÇصµ ÀοëºÎÈ£¸¦ »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: UIntP.

+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ÇÔ¼ö´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ´ÙÀ½ °ª Áß Çϳª·Î ¼³Á¤µÇ¾î È£ÃâÀÌ ¼º°øÇß´ÂÁö ½ÇÆÐÇß´ÂÁö¸¦ ¾Ë·ÁÁÝ´Ï´Ù.

+

0: ¼º°ø.

+

-1 (À½¼ö 1): [DllFile\]Function ¸Å°³º¯¼ö´Â ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀÔ´Ï´Ù. ¹®ÀÚ¿­ ¶Ç´Â À½¼ö°¡ ÇÊ¿äÇÕ´Ï´Ù.

+

-2: ¹Ýȯ À¯Çü ¶Ç´Â ÁöÁ¤µÈ ÀÎÀÚ À¯ÇüÁß Çϳª°¡ À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ¿¡·¯´Â ¼ýÀÚ·Î Æò°¡µÇ´Â Ç¥Çö½ÄÀ» ¹®ÀÚ¿­¿¡ °Ç³×µµ ÀϾ´Ï´Ù (str).

+

-3: ÁöÁ¤µÈ DllFile¿¡ Á¢±Ù ¶Ç´Â ÀûÀçÇÒ ¼ö ¾ø½À´Ï´Ù. DllFile ÆÄÀÏ¿¡ ¸í½ÃÀûÀ¸·Î °æ·Î°¡ ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù¸é, ±× ÆÄÀÏÀº ½Ã½ºÅÛ¿¡ PATH ¶Ç´Â A_WorkingDir¿¡ Á¸ÀçÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ¿¡·¯´Â »ç¿ëÀÚ°¡ ÆÄÀÏ¿¡ Á¢±Ù±ÇÇÑÀÌ ¾øÀ» °æ¿ì, ¶Ç´Â ¿ÀÅäÇÖÅ°°¡ 32ºñÆ®ÀÌ°í DLLÀÌ 64-ºñÆ® ¶Ç´Â ±× ¹Ý´ëÀÎ °æ¿ì¿¡µµ ÀϾ ¼ö ÀÖ½À´Ï´Ù.

+

-4: ÁöÁ¤µÈ ÇÔ¼ö¸¦ DLL ¾È¿¡¼­ ¹ß°ßÇÒ ¼ö ¾ø½À´Ï´Ù.

+

N (¾çÀÇ Á¤¼ö): ÇÔ¼ö°¡ È£ÃâµÇ¾úÁö¸¸ Ä¡¸íÀûÀÎ ¿¡·¯ ¹øÈ£ N°ú ÇÔ²² ½ÇÆÐÇß½À´Ï´Ù (¿¹¸¦ µé¾î, 0xC0000005´Â "¹«´Ü Á¢±Ù"À» ¶æÇÕ´Ï´Ù). ±×·± °æ¿ì, ÇÔ¼ö´Â ºó °ª(ºó ¹®ÀÚ¿­)À» µ¹·ÁÁÖÁö¸¸, º°Ç¥ º¯¼ö´Â ¸ðµÎ ¿©ÀüÈ÷ °»½ÅµË´Ï´Ù. Ä¡¸íÀûÀÎ ¿¹¿ÜÀÇ ¿¹´Â NULL°ú °°Àº ¹«È¿ÇÑ Æ÷ÀÎÅ͸¦ ÂüÁ¶ÇÏ´Â °ÍÀÔ´Ï´Ù. Cdecl ÇÔ¼ö´Â ´ÙÀ½ ¹®´Ü¿¡¼­ Àý´ë·Î "An" ¿¡·¯¸¦ »ý»êÇÏÁö ¾Ê±â ¶§¹®¿¡, ³Ê¹« ÀÎÀÚ¸¦ Àû°Ô °Ç³×¸é ¿¹¿Ü°¡ ÀϾ ¼öµµ ÀÖ½À´Ï´Ù.

+

An (¹®ÀÚ A ´ÙÀ½¿¡ Á¤¼ö n): ÇÔ¼ö°¡ È£ÃâµÇ¾úÁö¸¸ ÀÎÀÚ¸¦ ³Ê¹« ¸¹°Ô ¶Ç´Â ³Ê¹« Àû°Ô °Ç³Þ½À´Ï´Ù. "n"´Â ÀÎÀÚ ¸®½ºÆ®¿¡¼­ ¿Ã¹Ù¸£Áö ¾ÊÀº ¹ÙÀÌÆ®ÀÇ °³¼öÀÔ´Ï´Ù. nÀÌ ¾ç¼öÀ̸é, ³Ê¹« ¸¹Àº (¶Ç´Â ³Ê¹« Å« ÀÎÀÚ¸¦) ÀÎÀÚ¸¦ °Ç³Þ±â ¶§¹®ÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é CDecl·Î È£ÃâÇØ¾ß ÇÕ´Ï´Ù. nÀÌ À½¼öÀ̸é, ³Ê¹« Àû°Ô ÀÎÀÚ¸¦ °Ç³Þ±â ¶§¹®ÀÔ´Ï´Ù. ÀÌ »óȲÀº ÇÔ¼öÀÇ ¿¬»êÀÇ ½Å·Ú¼ºÀ» À§ÇØ ¹Ýµå½Ã ±³Á¤ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ¿¡·¯ÀÇ Á¸Àç´Â ¶ÇÇÑ ¿¹¿Ü°¡ ÀϾ´Ù´Â °ÍÀ» °¡¸®Åµ´Ï´Ù. ÀÌ °æ¿ì ÇÔ¼ö´Â ºó ¹®ÀÚ¿­À» µ¹·ÁÁÝ´Ï´Ù. x64 È£Ãâ °ü·Ê ¶§¹®¿¡, 64-ºñÆ® ºôµå´Â ErrorLevel¿¡ AnÀ» ¼³Á¤ÇÏÁö ¾Ê½À´Ï´Ù.

+ +

¿¹¿Ü¿Í A_LastError

+

+³»Àå ¿¹¿Ü 󸮿¡µµ ºÒ±¸ÇÏ°í, ¿©ÀüÈ÷ ½ºÅ©¸³Æ®°¡ DllCall°ú Ãæµ¹ÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ÀÌ·± ÀÏÀº ÇÔ¼ö°¡ Á÷Á¢ÀûÀ¸·Î ¿¹¿Ü¸¦ ÀÏÀ¸Å°Áö ¾Ê°í Á¾·áÇÏÁö ¾Ê´Â ¹®ÀÚ¿­À̳ª ³ª»Û Æ÷ÀÎÅÍ °°ÀÌ ¹º°¡ ºÎÀûÀûÇÑ °ÍÀ» »êÃâÇÒ °æ¿ì ÀϾ ¼ö ÀÖ½À´Ï´Ù. ½ºÅ©¸³Æ®°¡ Àû´çÇÏÁö ¾ÊÀº °ªÀ» °Ç³Þ´Ù¸é, ¿¹¸¦ µé¾î, ³ª»Û Æ÷ÀÎÅͳª °¡¿ë ´É·ÂÀÌ ºÒÃæºÐÇÑ "str"À» °Ç³Þ´Ù¸é ÀÌ°ÍÀº ÇÔ¼öÀÇ À߸øÀÌ ¾Æ´Ò ¼ö ÀÖ½À´Ï´Ù. +ºÎÀûÀýÇÑ ÀÎÀÚ À¯ÇüÀ̳ª ¹Ýȯ À¯ÇüÀ» ÁöÁ¤ÇÒ ¶§¿¡µµ ½ºÅ©¸³Æ®°¡ Ãæµ¹ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ÇÔ¼ö°¡ »ý»êÇÑ º¸ÅëÀÇ Á¤¼ö¸¦ º°Ç¥ º¯¼ö ¶Ç´Â strÀ̱⸦ ¿ä±¸Çϸé Ãæµ¹ÇÕ´Ï´Ù.

+

³»Àå º¯¼ö A_LastError¿¡´Â ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú °ªÀÌ ´ã°Ü ÀÖ½À´Ï´Ù. ÀÌ ÇÔ¼ö´Â ÇØ´ç ÇÔ¼ö°¡ È£ÃâµÈ ÈÄ¿¡ ¹Ù·Î È£ÃâµË´Ï´Ù. (ÀÌ ¶§¹®¿¡ ¹Þ´Â ¼öÇ༺´ÉÀÇ Ãæ°ÝÀº ÃøÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù). A_LastError´Â 0ºÎÅÍ 4294967295 »çÀÌÀÇ ¼ýÀÚÀÔ´Ï´Ù (¾ðÁ¦³ª ½ÊÁø¼ö·Î Æ÷¸ËµË´Ï´Ù. ½ÊÀ°Áø¼ö·Î Æ÷¸ËµÇÁö ¾Ê½À´Ï´Ù). ErrorLeveló·³, A_LastErrorÀº ¾²·¹µå¸¶´Ù ¼³Á¤µË´Ï´Ù; Áï, ´Ù¸¥ ¾²·¹µå°¡ ÀÎÅÍ·´Æ® ÇÏ´õ¶óµµ º¯ÇÏÁö ¾Ê½À´Ï´Ù. ±×·¸Áö¸¸, A_LastError´Â Run/RunWait·Îµµ ¼³Á¤µÉ ¼ö ÀÖ½À´Ï´Ù.

+ +

¼öÇ༺´É

+

DLLÀ» ¹Ýº¹ÀûÀ¸·Î È£ÃâÇÒ ¶§, ¸í½ÃÀûÀ¸·Î ÀûÀçÇÏ¸é ¼öÇ༺´ÉÀÌ ±ØÀûÀ¸·Î Çâ»óµË´Ï´Ù ( User32¿Í °°Àº Ç¥ÁØ DLL¿¡´Â ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù. ¾ðÁ¦³ª ¸Þ¸ð¸®¿¡ »óÁÖÇϱ⠶§¹®ÀÔ´Ï´Ù). ÀÌ·± °ü·Ê¸¦ Â÷¿ëÇϸé DllCallÀº ³»ºÎÀûÀ¸·Î ¸Å¹ø LoadLibrary¿Í FreeLibrary¸¦ È£ÃâÇÒ ÇÊ¿ä°¡ ¾ø¾îÁý´Ï´Ù:

+
hModule := DllCall("LoadLibrary", "Str", "MyFunctions.dll", "Ptr")  ; ȸµ¹ÀÌ ¾È¿¡¼­ DllCall()ÀÌ ¶óÀ̺귯¸®¸¦ ÀûÀçÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.
+Loop, C:\My Documents\*.*, , 1
+    result := DllCall("MyFunctions\BackupFile", "Str", A_LoopFileFullPath)
+DllCall("FreeLibrary", "Ptr", hModule)  ; ¸Þ¸ð¸®¸¦ Àý¾àÇϱâ À§ÇØ, DLLÀº »ç¿ëÇÑ ´ÙÀ½ ³»·Áµµ µË´Ï´Ù.
+

+v1.0.46.08+¿¡¼­´Â ÇÔ¼öÀÇ ÁÖ¼Ò¸¦ ¹Ì¸® ã¾Æ³õÀ¸¸é ÈξÀ ´õ ºü¸£°Ô ¼öÇ༺´ÉÀ» °³¼±½Ãų ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
; ´ÙÀ½ ¿¹Á¦¿¡¼­, DLLÀÌ ¾ÆÁ÷ ÀûÀçµÇÁö ¾Ê¾Ò´Ù¸é, GetModuleHandle ´ë½Å LoadLibrary¸¦ »ç¿ëÇÕ´Ï´Ù.
+MulDivProc := DllCall("GetProcAddress", Ptr, DllCall("GetModuleHandle", Str, "kernel32", "Ptr"), AStr, "MulDiv", "Ptr")
+Loop 500
+    DllCall(MulDivProc, Int, 3, Int, 4, Int, 3)
+

[AHK_L 31+]: DllCallÀÇ Ã¹ ¹ø° ¸Å°³º¯¼ö°¡ "MulDiv"¿Í °°Àº ±âÈ£ ¹®ÀÚ¿­ÀÌ°í ±× ÇÔ¼ö¸¦ ´ã°í ÀÖ´Â DLLÀÌ º¸Åë ½ºÅ©¸³Æ®°¡ ½ÇÇàµÇ±â Àü¿¡ ÀûÀçµÇ¾î ÀÖ´Ù¸é, ±× ¹®ÀÚ¿­Àº ÀÚµ¿À¸·Î ÇÔ¼ö ÁÖ¼Ò·Î °áÁ¤µË´Ï´Ù. ÀÌ·± ³»Àå ÃÖÀûÈ­´Â À§¿¡ º¸¿©ÁØ ¿¹Á¦º¸´Ù ´õ È¿°úÀûÀÔ´Ï´Ù.

+

+¶ÇÇÑ, ½ºÅ©¸³Æ®ÀÇ ¾Æ¹«µ¥³ª #NoEnvÁÙÀ» Ãß°¡Çϸé ÀοëºÎÈ£ ¾ø´Â ¸Å°³º¯¼ö À¯ÇüÀÌ »ç¿ëµÉ ¶§ (¿¹, Int vs. "Int") DllCallÀÇ ¼öÇ༺´ÉÀÌ Çâ»óµË´Ï´Ù.

+

+¸¶Áö¸·À¸·Î, ¹®ÀÚ¿­-º¯¼ö¸¦ ÇÔ¼ö¿¡ °Ç³Ú ¶§ ±× ÇÔ¼ö°¡ ¹®ÀÚ¿­ÀÇ ±æÀ̸¦ º¯°æÇÏÁö ¾ÊÀ» °æ¿ì, ±× º¯¼ö¸¦ "str" ÀÌ ¾Æ´Ï¶ó (ƯÈ÷ ¹®ÀÚ¿­ÀÌ ¾ÆÁÖ ±æ ¶§) ÁÖ¼Ò·Î º¸³»¸é (¿¹, &MyVar) ¼öÇ༺´ÉÀ» Çâ»ó½Ãų ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â ¹®ÀÚ¿­À» ´ë¹®ÀÚ·Î º¯È¯ÇÕ´Ï´Ù: DllCall("CharUpper", Ptr, &MyVar, Ptr).

+ +

±¸Á¶Ã¼¿Í ¹è¿­

+

+±¸Á¶Ã¼´Â ¸Þ¸ð¸®¿¡ ¼­·Î ÀÌ¿ôÇØ ÀúÀåµÈ ¸â¹ö (Çʵå) Áý´ÜÀÔ´Ï´Ù. ´ëºÎºÐÀÇ ¸â¹ö´Â Á¤¼öÀÎ °æÇâÀÌ ÀÖ½À´Ï´Ù.

+

+±¸Á¶Ã¼ÀÇ ÁÖ¼Ò¸¦ (¶Ç´Â ¸Þ¸ð¸®-ºí·Ï ¹è¿­À») ¹Þ´Â ÇÔ¼ö´Â ±× ±¸Á¶Ã¼ÀÇ ³¯ ÀÌÁø µ¥ÀÌÅ͸¦ º¸Åë º¯¼ö¿¡ ÀúÀåÇϸé È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀϹÝÀûÀ¸·Î ´ÙÀ½ ´Ü°è¸¦ ¹â½À´Ï´Ù:

+

+1) VarSetCapacity(MyStruct, 123, 0)¸¦ È£ÃâÇÏ¿© ¸ñÇ¥ º¯¼ö°¡ ±× ±¸Á¶Ã¼ÀÇ µ¥ÀÌÅ͸¦ ¼ö¿ëÇÒ ¸¸Å­ ÃæºÐÇÑÁö È®ÀÎÇÕ´Ï´Ù. 123À» Àû¾îµµ ±× ±¸Á¶Ã¼ÀÇ Å©±â¸¸Å­ Å« ¼ýÀÚ·Î ±³Ã¼ÇÕ´Ï´Ù. ¼±ÅÃÀûÀ¸·Î ¸¶Áö¸· ¸Å°³º¯¼ö¿¡ 0À» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù; ¸ðµç ¸â¹ö°¡ ÀÌÁø 0À¸·Î ÃʱâÈ­µË´Ï´Ù. ÀüÇüÀûÀ¸·Î ÀÌ·¸°Ô Çؼ­ ´ÙÀ½ ´Ü°è¿¡¼­ NumPut()ÀÌ ÀÚÁÖ È£ÃâµÇ´Â °ÍÀ» ¸·½À´Ï´Ù.

+

+2) ¸ñÇ¥ ÇÔ¼ö°¡ ±¸Á¶Ã¼¿¡ ÀÖ´Â °ªµéÀ» ÃÖÃÊ·Î »ç¿ëÇÑ´Ù¸é, NumPut(123, MyStruct, 4, "UInt")À» È£ÃâÇØ ¸ðµç ¸â¹öµéÀ» 0¾Æ´Ñ °ªÀ¸·Î ÃʱâÈ­ÇÕ´Ï´Ù. 123À» ¸ñÇ¥ ¸â¹ö ¾È¿¡ ¹èÄ¡µÉ Á¤¼ö·Î ±³Ã¼ÇÕ´Ï´Ù (¶Ç´Â &Var¿¡ º¯¼öÀÇ ÁÖ¼Ò¸¦ ÀúÀåÇϵµ·Ï ÁöÁ¤ÇÕ´Ï´Ù). 4¸¦ ¸ñÇ¥ ¸â¹öÀÇ ¿ÀÇÁ¼ÂÀ¸·Î ±³Ã¼ÇÕ´Ï´Ù ( "¿ÀÇÁ¼Â" ¼³¸íÀº step #4¸¦ ÂüÁ¶ÇÕ´Ï´Ù). "UInt"¸¦ ÀûÀýÇÑ À¯ÇüÀ¸·Î ±³Ã¼Çϰųª ¸â¹ö°¡ Æ÷ÀÎÅͳª ÇÚµéÀ̶ó¸é »ý·«ÇÕ´Ï´Ù.

+

3) ¸ñÇ¥ ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù. MyStructÀÇ ÁÖ¼Ò¸¦ UInt (¶Ç´Â AHK_L 42+¿¡¼­´Â Ptr) ÀÎÀÚ·Î °Ç³Ü´Ï´Ù. ¿¹¸¦ µé¾î, DllCall("MyDll\MyFunc", Ptr, &MyStruct). ÇÔ¼ö´Â ¸â¹öµéÀ» Á¶»çÇØ º¸°í ÇÊ¿äÇÏ¸é º¯°æÇÕ´Ï´Ù.

+

+4) MyInteger := NumGet(MyStruct, 4, "UInt")¸¦ »ç¿ëÇÏ¸é ±¸Á¶Ã¼·ÎºÎÅÍ ¿øÇÏ´Â °ªÀ» ¾ó¸¶µçÁö ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. 4¸¦ ±¸Á¶Ã¼¿¡ ÀÖ´Â ¸ñÇ¥ ¸â¹öÀÇ ¿ÀÇÁ¼ÂÀ¸·Î ±³Ã¼ÇÕ´Ï´Ù. ù ¸â¹ö´Â ¾ðÁ¦³ª 0¿¡ ÀÖ½À´Ï´Ù. µÎ ¹ø° ¸â¹ö´Â ¿ÀÇÁ¼Â 0ºÎÅÍ Ã¹ ¸â¹öÀÇ Å©±â¸¦ ´õÇÑ À§Ä¡¿¡ ÀÖ½À´Ï´Ù (ÀüÇüÀûÀ¸·Î 4). µÎ ¹ø°¸¦ ³Ñ¾î¼± ¸â¹öÀÇ À§Ä¡´Â ¹Ù·Î ¾Õ ¸â¹öÀÇ ¿ÀÇÁ¼ÂÀÇ À§Ä¡¿¡ ±× Å©±â¸¦ ´õÇÑ À§Ä¡¿¡ ÀÖ½À´Ï´Ù. ´ëºÎºÐÀÌ ¸â¹ö´Â -- DWORD, Int, ±×¸®°í ŰŸ 32-ºñÆ® Á¤¼ö À¯Çü -- Å©±â°¡ 4 ¹ÙÀÌÆ®ÀÔ´Ï´Ù. "UInt"¸¦ ÀûÀýÇÑ À¯ÇüÀ¸·Î ±³Ã¼Çϰųª ¸â¹ö°¡ Æ÷ÀÎÅͳª ÇÚµéÀÌ¸é »ý·«ÇϽʽÿÀ.

+

½ÇÁ¦ »ç¿ë¹ýÀº ±¸Á¶Ã¼ ¿¹Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

¾Ë·ÁÁø ÇÑ°è

+

¹è¿­ÀÇ ÁÖ¼Ò¸¦ (¿¹, &MyVar) ÇÔ¼ö¿¡ °Ç³Ú ¶§ ±× ÇÔ¼ö°¡ º¯¼öÀÇ ³»¿ëÀÇ ±æÀ̸¦ º¯°æÇϸé, ±× ´ÙÀ½ºÎÅÍ º¯¼ö¸¦ »ç¿ëÇÏ¸é ¿Ã¹Ù¸£°Ô ÀÛµ¿ÇÏÁö ¾ÊÀ» °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. À̸¦ ÇØ°áÇÏ·Á¸é, ´ÙÀ½ Áß ÇϳªÀÇ Á¶Ä¡¸¦ ¼öÇàÇϽʽÿÀ: 1) MyVar¸¦ Ptr/address°¡ ¾Æ´Ï¶ó "Str" ÀÎÀÚ·Î °Ç³×½Ê½Ã¿À; 2) v1.0.44.03+¿¡¼­, VarSetCapacity(MyVar, -1)¸¦ È£ÃâÇϸé DllCallÀ» È£ÃâÇÑ ÈÄ¿¡ º¯¼öÀÇ ³»ºÎ¿¡ ÀúÀåµÈ ±æÀÌ°¡ °»½ÅµË´Ï´Ù. .

+

ÇÔ¼ö°¡ º¯¼ö¿¡ ÀúÀåÇÑ ÀÌÁø°ª 0Àº ±× ¿À¸¥ÂÊÀÇ ¸ðµç µ¥ÀÌÅ͸¦ °¨Ãß¾î ¹ö¸³´Ï´Ù; Áï, ±×·± µ¥ÀÌÅÍ´Â ´ëºÎºÐÀÇ ¸í·É¾î¿Í ÇÔ¼ö¿¡¼­ Á¢±ÙÇϰųª º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù. ±×·¸Áö¸¸, ÁÖ¼Ò ¿¬»êÀÚ ±×¸®°í NumPut/NumGet, »Ó¸¸ ¾Æ´Ï¶ó DllCall ÀÚü·Î Á¶ÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Àڽſ¡°Ô °Ç³×¾îÁø ¹®ÀÚ¿­ÀÇ ÁÖ¼Ò¸¦ µ¹·ÁÁÖ´Â ÇÔ¼ö´Â ¿¹»ó°ú ´Ù¸£°Ô ´Ù¸¥ ¸Þ¸ð¸® ÁÖ¼Ò¿¡ µ¿ÀÏÇÑ ¹®ÀÚ¿­À» µ¹·ÁÁÙ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î CharLower(CharUpper(MyVar))¸¦ È£ÃâÇϸé MyVarÀÇ ³»¿ëÀÌ ¼Ò¹®ÀÚ·Î º¯È¯µË´Ï´Ù. ±×·¯³ª °°Àº ÀÏÀ» DllCall()·Î Çϸé, MyVar´Â ±× ´ÙÀ½ È£Ãâ µÚ¿¡ ´ë¹®ÀÚ°¡ µË´Ï´Ù. ¿Ö³ÄÇϸé CharLower´Â MyVar¿Í ³»¿ëÀÌ µ¿ÀÏÇÑ ´Ù¸¥/Àӽà ¹®ÀÚ¿­¿¡ ¿¬»êÀ» ¼öÇàÇϱ⠶§¹®ÀÔ´Ï´Ù :

+
MyVar = ABC
+result := DllCall("CharLower", str, DllCall("CharUpper", Str, MyVar, Str), Str)
+

+À̸¦ ¿ìȸÇÏ·Á¸é, À§¿¡¼­ µÎ °³ÀÇ ¹ØÁÙ ºÙÀº "Str" °ªÀ» Ptr·Î º¯°æÇϽʽÿÀ. ÀÌ·¸°Ô Çϸé CharUpperÀÇ ¹Ýȯ °ªÀÌ ¼ø¼öÇÑ ÁÖ¼Ò·Î ¹ø¿ªµË´Ï´Ù. CharLower¿¡ Á¤¼ö·Î °Ç³×¾îÁú °ÍÀÔ´Ï´Ù.

+

+¹®ÀÚ¿­À» ´Ù·ê ¶§ ´Ù¸¥ ÇѰ踦 ¸¶ÁÖÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº ½ºÅ©¸³Æ® ȣȯ¼ºÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

ÄÄÆ÷³ÍÆ® °´Ã¼ ¸ðµ¨ (COM)

+

+COM °´Ã¼´Â VBScript¿Í ºñ½ÁÇÑ ¾ð¾î·Î Á¢±ÙÇÒ ¼ö ÀÖÀ¸¸ç ÀüÇüÀûÀ¸·Î ¿ÀÅäÇÖÅ°ÀÇ ComObjCreate, ComObjGet ¶Ç´Â ComObjActive ±×¸®°í ³»Àå °´Ã¼ ±¸¹®À» ÅëÇÏ¿© Á¢±ÙÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

+

IDispatch¸¦ Áö¿øÇÏÁö ¾Ê´Â COM °´Ã¼´Â DllCall°ú ÇÔ²² »ç¿ëÇÏ·Á¸é ÇÔ¼öÀÇ ÁÖ¼Ò¸¦ ±× °´Ã¼ ÀÎÅÍÆäÀ̽ºÀÇ °¡»ó ÇÔ¼ö Å×ÀÌºí¿¡¼­ ¿­¶÷ÇÕ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ °ÍÀº ¾Æ·¡ÀÇ ¿¹Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

.NET ÇÁ·¹ÀÓ¿öÅ© ´ëºÎºÐµµ COM°ú DllCallÀ» ÅëÇÏ¿© Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½http://www.autohotkey.com/forum/topic26191.htmlÀ» ÂüÁ¶ÇϽʽÿÀ. +

+ +

°ü·Ã

+

½ºÅ©¸³Æ® ȣȯ¼º, PostMessage, OnMessage(), RegisterCallback(), Run, VarSetCapacity, Functions, SysGet, MSDN Library

+ +

¿¹Á¦

+
; ¿¹Á¦: Windows API ÇÔ¼ö "MessageBox"¸¦ È£ÃâÇÏ°í »ç¿ëÀÚ°¡ ´©¸¥ ¹öÆ°À» º¸°íÇÕ´Ï´Ù.
+
+WhichButton := DllCall("MessageBox", "Int", "0", "Str", "Press Yes or No", "Str", "Title of box", "Int", 4)
+MsgBox You pressed button #%WhichButton%.
+ +
; ¿¹Á¦: ¹ÙÅÁÈ­¸é È­¸éÀ» ÁöÁ¤µÈ ºñÆ®¸Ê ÆÄÀÏ·Î ¹Ù²ß´Ï´Ù (.bmp).
+
+DllCall("SystemParametersInfo", UInt, 0x14, UInt, 0, Str, A_WinDir . "\winnt.bmp", UInt, 2)
+ +
; ¿¹Á¦: API ÇÔ¼ö "IsWindowVisible"¸¦ È£ÃâÇØ ³ëÆ®Æеå âÀÌ º¸ÀÌ´ÂÁö ¾Ë¾Æ³À´Ï´Ù.
+
+DetectHiddenWindows On
+if not DllCall("IsWindowVisible", "Ptr", WinExist("Untitled - Notepad"))  ; WinExist() returns an HWND.
+    MsgBox The window is not visible.
+ +
; ¿¹Á¦: APIÀÇ wsprintf()¸¦ È£ÃâÇØ  432 ¼ýÀÚ ¾Õ¿¡ 0À» µ¡´ë¾î 10 ÀÚ¸® ³ÊºñÀÇ ¹®ÀÚ·Î ¸¸µì´Ï´Ù (0000000432).
+
+VarSetCapacity(ZeroPaddedNumber, 20)  ; º¯¼ö°¡ »õ ¹®ÀÚ¿­À» ¹ÞÀ» ¸¸Å­ ÃæºÐÈ÷ Å«Áö È®ÀÎÇÕ´Ï´Ù.
+DllCall("wsprintf", "Str", ZeroPaddedNumber, "Str", "%010d", "Int", 432, "Cdecl")  ; Cdecl È£Ãâ °ü·Ê¸¦ ¿ä±¸ÇÕ´Ï´Ù.
+MsgBox %ZeroPaddedNumber%
+ +
; ¿¹Á¦: QueryPerformanceCounter()ÀÇ »ç¿ë¹ýÀ» º¸¿©ÁÝ´Ï´Ù. A_TickCountÀÇ 10ms º¸´Ù ´õ Á¤¹Ðµµ°¡ ³ô½À´Ï´Ù.
+
+DllCall("QueryPerformanceCounter", "Int64*", CounterBefore)
+Sleep 1000
+DllCall("QueryPerformanceCounter", "Int64*", CounterAfter)
+MsgBox % "Elapsed QPC time is " . CounterAfter - CounterBefore
+ +
; ¿¹Á¦: Àӽ÷Π¸¶¿ì½ºÀÇ ¼Óµµ¸¦ ÁÙ¿©ÁÖ´Â ÇÖÅ°ÀÔ´Ï´Ù. ´õ Á¤¹ÐÇÏ°Ô À§Ä¡¸¦ Àâ´Âµ¥ µµ¿òÀÌ µË´Ï´Ù.
+; F1 Å°¸¦ ´©¸£¸é Ä¿¼­ÀÇ ¼Óµµ°¡ ´À·ÁÁý´Ï´Ù. ¶¼¸é ¿ø·¡ÀÇ ¼Óµµ·Î µ¹¾Æ¿É´Ï´Ù.
+
+F1::
+SPI_GETMOUSESPEED = 0x70
+SPI_SETMOUSESPEED = 0x71
+; ³ªÁß¿¡ º¹±¸ÇÒ ¼ö ÀÖµµ·Ï ÇöÀç ¼Óµµ¸¦ ¿­¶÷ÇÕ´Ï´Ù:
+DllCall("SystemParametersInfo", UInt, SPI_GETMOUSESPEED, UInt, 0, UIntP, OrigMouseSpeed, UInt, 0)
+; ÀÌÁ¦ ¸¶¿ì½º¸¦ ´õ ´À¸° ¼Óµµ·Î ÁöÁ¤ÇÕ´Ï´Ù. °¡Àå ¸¶Áö¸· ¸Å°³º¯¼ö ¹Ù·Î ¾Õ¿¡ ÁöÁ¤µÇ¾î ÀÖ½À´Ï´Ù (¹üÀ§´Â  1-20ÀÌ°í, 10ÀÌ ±âº»°ªÀÔ´Ï´Ù):
+DllCall("SystemParametersInfo", UInt, SPI_SETMOUSESPEED, UInt, 0, Ptr, 3, UInt, 0)
+KeyWait F1  ; Å°º¸µå ÀÚµ¿ ¹Ýº¹ ¶§¹®¿¡ DllCallÀÌ ¹Ýº¹ÀûÀ¸·Î È£ÃâµÇ´Â °ÍÀ» ¹æÁöÇÕ´Ï´Ù.
+return
+
+F1 up::DllCall("SystemParametersInfo", UInt, 0x71, UInt, 0, Ptr, OrigMouseSpeed, UInt, 0)  ; ¿ø·¡ ¼Óµµ¸¦ º¹±¸ÇÕ´Ï´Ù
+ +
; ¿¹Á¦: âÀÇ À¯ÀÏÇÑ ID ±×¸®°í ±×ÀÇ ÄÜÆ®·Ñ Áß ClassNNÀ̳ª ÅؽºÆ®¸¦ °Ç³Ú ¶§,
+; ´ÙÀ½ ÇÔ¼ö´Â ±× ÄÜÆ®·ÑÀÇ HWND (À¯ÀÏÇÑ ID)¸¦ µ¹·ÁÁÝ´Ï´Ù.
+; v1.0.43.06+: ÀÌ ÇÔ¼ö´Â ´ÙÀ½ ¸í·É¾î·Î ±³Ã¼µÇ¾ú½À´Ï´Ù. ÀÌ°ÍÀÌ ´õ Á¤È®ÇÕ´Ï´Ù.
+
+ControlGet, OutputVar, Hwnd,, ClassNN, WinTitle
+ +
; ¿¹Á¦: È°¼º âÀ» °üÁ¦ÇÏ°í ÃÊÁ¡ÀÌ ÀÖ´Â ÄÜÆ®·Ñ ¾È¿¡¼­ ±×ÀÇ ¼öÁ÷ ½ºÅ©·Ñ¹ÙÀÇ À§Ä¡¸¦ (½Ç½Ã°£À¸·Î °»½ÅÇÏ¿©) º¸¿©ÁÝ´Ï´Ù.
+; ÀÌ°ÍÀº v1.0.43.06+À» ¿ä±¸ÇÕ´Ï´Ù. ¿Ö³ÄÇϸé ControlGet Hwnd¸¦ »ç¿ëÇϱ⠶§¹®ÀÔ´Ï´Ù.
+
+#Persistent
+SetTimer, WatchScrollBar, 100
+return
+
+WatchScrollBar:
+ActiveWindow := WinExist("A")
+if not ActiveWindow  ; No active window.
+    return
+ControlGetFocus, FocusedControl, ahk_id %ActiveWindow%
+if not FocusedControl  ; No focused control.
+    return
+; ÅøÆÁ¿¡ ¼öÆò ¶Ç´Â ¼öÁ÷ ½ºÅ©·Ñ¹ÙÀÇ À§Ä¡¸¦ º¸¿©ÁÝ´Ï´Ù:
+ControlGet, ChildHWND, Hwnd,, %FocusedControl%, ahk_id %ActiveWindow%
+ToolTip % DllCall("GetScrollPos", "Ptr", ChildHWND, "Int", 1)  ;  ¸¶Áö¸· ¸Å°³º¯¼ö´Â SB_VERT¿¡ ´ëÇØ 1 for, SB_HORZ¿¡ ´ëÇØ 0ÀÔ´Ï´Ù.
+return
+ +
; ¿¹Á¦: ÀÛµ¿ÇÏ´Â ½ºÅ©¸³Æ®ÀÔ´Ï´Ù. ÅؽºÆ®¸¦ ÆÄÀÏ¿¡ ¾´´ÙÀ½ ´Ù½Ã ¸Þ¸ð¸®·Î ÀÐ¾î µéÀÔ´Ï´Ù (v1.0.34+ ¿ä±¸).
+; ÀÌ ¸Þ½îµå¸¦ »ç¿ëÇÏ¸é ¿©·¯ ÆÄÀÏÀ» µ¿½Ã¿¡ Àаųª ¾µ °æ¿ì ¼öÇ༺´ÉÀÌ Çâ»ó µË´Ï´Ù.
+; AHK_L 42+¿¡¼­´Â FileOpenÀ» »ç¿ëÇϸé, °°Àº ÀÏÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+
+FileSelectFile, FileName, S16,, Create a new file:
+if FileName =
+    return
+GENERIC_WRITE = 0x40000000  ; ÀбⰡ ¾Æ´Ï¶ó ¾²±â ¿ëµµ·Î ÆÄÀÏÀ» ¿±´Ï´Ù.
+CREATE_ALWAYS = 2  ; »õ ÆÄÀÏÀ» ¸¸µì´Ï´Ù (±âÁ¸ÀÇ ÆÄÀÏÀ» µ¤¾î¾¸).
+hFile := DllCall("CreateFile", Str, FileName, UInt, GENERIC_WRITE, UInt, 0, Ptr, 0, UInt, CREATE_ALWAYS, UInt, 0, Ptr, 0, Ptr)
+if not hFile
+{
+    MsgBox Can't open "%FileName%" for writing.
+    return
+}
+TestString = This is a test string.`r`n  ; ÆÄÀÏÀ» ÀÌ·± ½ÄÀ¸·Î ¾µ ¶§,  `n ¸»°í `r`nÀ» »ç¿ëÇÏ¿© »õ ÁÙÀ» ½ÃÀÛÇϽʽÿÀ.
+DllCall("WriteFile", Ptr, hFile, Str, TestString, UInt, StrLen(TestString), UIntP, BytesActuallyWritten, Ptr, 0)
+DllCall("CloseHandle", Ptr, hFile)  ; ÆÄÀÏÀ» ´Ý½À´Ï´Ù.
+
+; ÆÄÀÏ¿¡ ½èÀ¸¹Ç·Î ÀÌÁ¦ ´Ù½Ã ±× ³»¿ëÀ» ¸Þ¸ð¸®·Î ÀÐ¾î µéÀÔ´Ï´Ù.
+GENERIC_READ = 0x80000000  ; ¾²±â ¸»°í Àб⠿뵵·Î ÆÄÀÏÀ» ¿±´Ï´Ù.
+OPEN_EXISTING = 3  ; ÀÌ ¸ðµå´Â ¿­¸± ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇØ¾ß ÇÔÀ» °¡¸®Åµ´Ï´Ù.
+FILE_SHARE_READ = 0x1 ; This and the next are whether other processes can open the file while we have it open.
+FILE_SHARE_WRITE = 0x2
+hFile := DllCall("CreateFile", Str, FileName, UInt, GENERIC_READ, UInt, FILE_SHARE_READ|FILE_SHARE_WRITE, Ptr, 0, UInt, OPEN_EXISTING, UInt, 0, Ptr, 0)
+if not hFile
+{
+    MsgBox Can't open "%FileName%" for reading.
+    return
+}
+; Å×½ºÆ® ¸ñÀûÀ¸·Î º¯¼ö¸¦ ºñ¿ìÁö¸¸, °¡¿ë ´É·ÂÀÌ ÃæºÐÇÑÁö È®ÀÎÇϽʽÿÀ:
+BytesToRead := VarSetCapacity(TestString, StrLen(TestString))
+DllCall("ReadFile", Ptr, hFile, Str, TestString, UInt, BytesToRead, UIntP, BytesActuallyRead, Ptr, 0)
+DllCall("CloseHandle", Ptr, hFile)  ; ÆÄÀÏÀ» ´Ý½À´Ï´Ù.
+MsgBox The following string was read from the file: %TestString%
+ +
; ¿¹Á¦: Win+C¸¦ ´©¸¦ ¶§ ¸¶¿ì½º Ä¿¼­¸¦ °¨Ãä´Ï´Ù. ³ªÁß¿¡ Ä¿¼­¸¦ º¸¿©ÁÖ·Á¸é, ´Ù½Ã Win+C¸¦ ´©¸¨´Ï´Ù.
+; ½ºÅ©¸³Æ®´Â www.autohotkey.com/forum/topic6107.html¿¡¼­ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.
+
+OnExit, ShowCursor  ; ½ºÅ©¸³Æ®°¡ Á¾·áÇÒ ¶§ Ä¿¼­°¡ º¸ÀÌ´ÂÁö È®ÀÎÇÕ´Ï´Ù.
+return
+
+ShowCursor:
+SystemCursor("On")
+ExitApp
+
+#c::SystemCursor("Toggle")  ; Win+C ÇÖÅ°·Î Ä¿¼­¸¦ ÄÑ°í ²ü´Ï´Ù.
+
+SystemCursor(OnOff=1)   ; INIT = "I","Init"; OFF = 0,"Off"; TOGGLE = -1,"T","Toggle"; ON = others
+{
+    static AndMask, XorMask, $, h_cursor
+        ,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 ; ½Ã½ºÅÛ Ä¿¼­
+        , b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13   ; ºó Ä¿¼­
+        , h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13   ; ±âº» Ä¿¼­ÀÇ ÇÚµé
+    if (OnOff = "Init" or OnOff = "I" or $ = "")       ; ¿äûµÉ ¶§ ¶Ç´Â ù ¹ø°·Î È£ÃâµÉ ¶§ ÃʱâÈ­ÇÕ´Ï´Ù
+    {
+        $ = h                                          ; ±âº» Ä¿¼­¸¦ È°¼ºÈ­ÇÕ´Ï´Ù
+        VarSetCapacity( h_cursor,4444, 1 )
+        VarSetCapacity( AndMask, 32*4, 0xFF )
+        VarSetCapacity( XorMask, 32*4, 0 )
+        system_cursors = 32512,32513,32514,32515,32516,32642,32643,32644,32645,32646,32648,32649,32650
+        StringSplit c, system_cursors, `,
+        Loop %c0%
+        {
+            h_cursor   := DllCall( "LoadCursor", "Ptr",0, "Ptr",c%A_Index% )
+            h%A_Index% := DllCall( "CopyImage", "Ptr",h_cursor, "UInt",2, "Int",0, "Int",0, "UInt",0 )
+            b%A_Index% := DllCall( "CreateCursor", "Ptr",0, "Int",0, "Int",0
+                , "Int",32, "Int",32, "Ptr",&AndMask, "Ptr",&XorMask )
+        }
+    }
+    if (OnOff = 0 or OnOff = "Off" or $ = "h" and (OnOff < 0 or OnOff = "Toggle" or OnOff = "T"))
+        $ = b  ; ºó Ä¿¼­¸¦ »ç¿ëÇÕ´Ï´Ù
+    else
+        $ = h  ; ÀúÀåµÈ Ä¿¼­¸¦ »ç¿ëÇÕ´Ï´Ù
+
+    Loop %c0%
+    {
+        h_cursor := DllCall( "CopyImage", "Ptr",%$%%A_Index%, "UInt",2, "Int",0, "Int",0, "UInt",0 )
+        DllCall( "SetSystemCursor", "Ptr",h_cursor, "UInt",c%A_Index% )
+    }
+}
+ +
; ±¸Á¶Ã¼ ¿¹Á¦: RECT ±¸Á¶Ã¼ÀÇ ÁÖ¼Ò¸¦ GetWindowRect()¿¡ °Ç³Ü´Ï´Ù. 
+; ±¸Á¶Ã¼ÀÇ ¸â¹ö°¡ âÀÇ ÁÂ, »ó, ¿ì, ÇÏÀÇ À§Ä¡¿¡ ¼³Á¤µË´Ï´Ù (È­¸é¿¡ »ó´ëÀûÀÓ).
+
+Run Notepad
+WinWait Untitled - Notepad  ; This also sets the "last found window" for use with WinExist() below.
+VarSetCapacity(Rect, 16)  ; A RECT is a struct consisting of four 32-bit integers (i.e. 4*4=16).
+DllCall("GetWindowRect", Ptr, WinExist(), Ptr, &Rect)  ; WinExist() returns an HWND.
+MsgBox % "Left " . NumGet(Rect, 0, "Int") . " Top " . NumGet(Rect, 4, "Int")
+    . " Right " . NumGet(Rect, 8, "Int") . " Bottom " . NumGet(Rect, 12, "Int")
+ +
; ±¸Á¶Ã¼ ¿¹Á¦: FillRect()¿¡ RECT ±¸Á¶Ã¼ÀÇ ÁÖ¼Ò¸¦ °Ç³Ü´Ï´Ù. 
+; ÀÌ ±¸Á¶Ã¼´Â Àӽ÷Π»¡°²°Ô Ä¥ÇÒ È­¸éÀÇ ±¸¿ªÀ» °¡¸®Åµ´Ï´Ù.
+
+VarSetCapacity(Rect, 16, 0)  ; 4-¹ÙÀÌÆ® Á¤¼ö¸¦ ¼ö¿ëÇϵµ·Ï °¡¿ë´É·ÂÀ» ¼³Á¤ÇÏ°í ±× ¸ðµÎ¸¦ 0À¸·Î ÃʱâÈ­ÇÕ´Ï´Ù.
+NumPut(A_ScreenWidth//2, Rect, 8, "Int")  ; ±¸Á¶Ã¼¿¡¼­ ¼¼ ¹ø° Á¤¼ö´Â "rect.right"ÀÔ´Ï´Ù.
+NumPut(A_ScreenHeight//2, Rect, 12, "Int") ; ±¸Á¶Ã¼¿¡¼­ ³× ¹ø° Á¤¼ö´Â "rect.bottom"ÀÔ´Ï´Ù.
+hDC := DllCall("GetDC", "Ptr", 0, "Ptr")  ; 0À» °Ç³× µ¥½ºÅ©Å¾ÀÇ ÀåÄ¡ ¹®¸ÆÀ» ¾ò½À´Ï´Ù.
+hBrush := DllCall("CreateSolidBrush", "UInt", 0x0000FF, "Ptr")  ; »¡°£»ö ºê·¯½¬¸¦ ¸¸µì´Ï´Ù (BGR Çü½ÄÀ¸·Î 0x0000FF ÀÓ).
+DllCall("FillRect", "Ptr", hDC, "Ptr", &Rect, "Ptr", hBrush)  ; ÁöÁ¤µÈ »ç°¢±¸¿ªÀ» À§ÀÇ ºê·¯½¬¸¦ »ç¿ëÇÏ¿© ä¿ó´Ï´Ù.
+DllCall("ReleaseDC", "Ptr", 0, "Ptr", hDC)  ; û¼Ò.
+DllCall("DeleteObject", "Ptr", hBrush)  ; û¼Ò.
+ +
; ±¸Á¶Ã¼ ¿¹Á¦: ½Ã½ºÅÛ ½Ã°è¸¦ ÁöÁ¤µÈ ³¯Â¥¿Í ½Ã°£À¸·Î º¯°æÇÕ´Ï´Ù.
+; ¾ÕÀ¸·Î ³¯Â¥¸¦ º¯°æÇÒ ¶§ ÁÖÀÇÇϽʽÿÀ. ÀÏÁ¤ÀÌ ÀâÇô ÀÖ´Â ÀÛ¾÷ÀÌ ³Ê¹« À̸£°Ô ½ÇÇàµÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù!
+
+SetSystemTime("20051008142211")  ; ½Ã°£µµÀåÀ» °Ç³Ü´Ï´Ù (Áö¿ª½Ã°£ÀÔ´Ï´Ù. UTC¾Æ´Ô).
+
+SetSystemTime(YYYYMMDDHHMISS)
+; ½Ã½ºÅÛ ½Ã°è¸¦ ÁöÁ¤µÈ ³¯Â¥¿Í ½Ã°£À¸·Î ¼³Á¤ÇÕ´Ï´Ù.
+; È£ÃâÀÚ´Â µé¾î¿À´Â ¸Å°³º¯¼ö°¡ À¯È¿ÇÑ ³¯Â¥-½Ã°£ µµÀåÀÎÁö È®ÀÎÇØ¾ß ÇÕ´Ï´Ù
+; (Áö¿ª½Ã°£ÀÌÁö, UTC ½Ã°£ÀÌ ¾Æ´Õ´Ï´Ù). ¼º°øÇϸé 0-¾Æ´Ñ °ªÀ» µ¹·ÁÁÖ°í ±×·¸Áö ¾ÊÀ¸¸é 0À» µ¹·ÁÁÝ´Ï´Ù.
+{
+    ; SetSystemTime()¿¡ »ç¿ëÇϱâ À§ÇØ ¸Å°³º¯¼ö¸¦ Áö¿ª ½Ã°£¿¡¼­  UTC ½Ã°£À¸·Î º¯°æÇÕ´Ï´Ù.
+    UTC_Delta -= A_NowUTC, Seconds  ; ¹Ý¿Ã¸² ¹®Á¦ ¶§¹®¿¡ ÃÊ°¡ ´õ Á¤È®ÇÕ´Ï´Ù.
+    UTC_Delta := Round(-UTC_Delta/60)  ; °¡Àå °¡±î¿î ºÐÀ¸·Î ¹Ý¿Ã¸²ÇØ Á¤È®µµ¸¦ È®ÀÎÇÕ´Ï´Ù.
+    YYYYMMDDHHMISS += UTC_Delta, Minutes  ; UTC·Î º¯È¯Çϱâ À§ÇØ ¿ÀÇÁ¼ÂÀ» Àû¿ëÇÕ´Ï´Ù.
+
+    VarSetCapacity(SystemTime, 16, 0)  ; ÀÌ ±¸Á¶´Â 8°³ÀÇ UShort·Î ±¸¼ºµË´Ï´Ù(Áï, 8*2=16).
+
+    StringLeft, Int, YYYYMMDDHHMISS, 4    ; YYYY (ÇØ)
+    NumPut(Int, SystemTime, 0, "UShort")
+    StringMid, Int, YYYYMMDDHHMISS, 5, 2  ; MM (´Þ, 1-12)
+    NumPut(Int, SystemTime, 2, "UShort")
+    StringMid, Int, YYYYMMDDHHMISS, 7, 2  ; DD (³¯)
+    NumPut(Int, SystemTime, 6, "UShort")
+    StringMid, Int, YYYYMMDDHHMISS, 9, 2  ; HH (24-½Ã°£Á¦ ½Ã°£)
+    NumPut(Int, SystemTime, 8, "UShort")
+    StringMid, Int, YYYYMMDDHHMISS, 11, 2 ; MI (ºÐ)
+    NumPut(Int, SystemTime, 10, "UShort")
+    StringMid, Int, YYYYMMDDHHMISS, 13, 2 ; SS (ÃÊ)
+    NumPut(Int, SystemTime, 12, "UShort")
+
+    return DllCall("SetSystemTime", Ptr, &SystemTime)
+}
+ +
/* °í±Þ ±¸Á¶Ã¼ ¿¹Á¦:
+
+1) DllCall()À» »ç¿ëÇÏ¿© TCP/IP ¼­¹ö¿¡ ³×Æ®¿öÅ© Á¢¼ÓÀ» ¸¸µé°í ±×·ÎºÎÅÍ µ¥ÀÌÅ͸¦ ¹Þ´Â ¹æ¹ýÀº WinLIRC Ŭ¶óÀ̾ðÆ® ½ºÅ©¸³Æ®¸¦ ÂüÁ¶ÇϽʽÿÀ. 
+
+2) ¿î¿µ üÁ¦´Â »ç¿ëÀÚ°¡ ±Û²ÃÀ̳ª Ä÷¯ ¶Ç´Â ¾ÆÀÌÄÜÀ» °í¸¦ ¼ö ÀÖµµ·Ï Ç¥ÁØ ´ëÈ­»óÀÚ¸¦ Á¦°øÇÕ´Ï´Ù.
+ÀÌ·± ´ëÈ­»óÀÚ´Â ±¸Á¶Ã¼¸¦ »ç¿ëÇÏ°í www.autohotkey.com/forum/topic17230.html¿¡¼­ ¿¹¸¦ º¸½Ç ¼ö ÀÖ½À´Ï´Ù.
+
+*/
+ +
/*
+  ¿¹Á¦: COMÀ» »ç¿ëÇÏ¿© Àӽ÷ΠȰ¼º âÀ» ŽºÅ©¹Ù¿¡¼­ Á¦°ÅÇÕ´Ï´Ù.
+
+  ITaskbarListÀÇ VTable¿¡ ÀÖ´Â ¸Þ½îµå:
+    IUnknown:
+      0 QueryInterface  -- ´ë½Å ComObjQuery¸¦ »ç¿ëÇϽʽÿÀ
+      1 AddRef          -- ´ë½Å ObjAddRef ¸¦ »ç¿ëÇϽʽÿÀ
+      2 Release         -- ´ë½Åuse ObjRelease ¸¦ »ç¿ëÇϽʽÿÀ
+    ITaskbarList:
+      3 HrInit
+      4 AddTab
+      5 DeleteTab
+      6 ActivateTab
+      7 SetActiveAlt
+*/
+IID_ITaskbarList  := "{56FDF342-FD6D-11d0-958A-006097C9A090}"
+CLSID_TaskbarList := "{56FDF344-FD6D-11d0-958A-006097C9A090}"
+
+; TaskbarList °´Ã¼¸¦ ¸¸µé°í ±×ÀÇ ÁÖ¼Ò¸¦ tbl¿¡ ÀúÀåÇÕ´Ï´Ù.
+tbl := ComObjCreate(CLSID_TaskbarList, IID_ITaskbarList)
+
+activeHwnd := WinExist("A")
+
+DllCall(vtable(tbl,3), "ptr", tbl)                     ; tbl.HrInit()
+DllCall(vtable(tbl,5), "ptr", tbl, "ptr", activeHwnd)  ; tbl.DeleteTab(activeHwnd)
+Sleep 3000
+DllCall(vtable(tbl,4), "ptr", tbl, "ptr", activeHwnd)  ; tbl.AddTab(activeHwnd)
+
+; ºÐ¹è°¡ ¾ø´Â °´Ã¼´Â ¾ðÁ¦³ª ¼öÀÛ¾÷À¸·Î ÇØÁ¦ÇØ¾ß ÇÕ´Ï´Ù.
+ObjRelease(tbl)
+
+vtable(ptr, n) {
+    ; NumGet(ptr+0)Àº °´Ã¼ÀÇ °¡»ó ÇÔ¼ö µ¥À̺íÀ» (°£´ÜÈ÷ ¸»ÇØ vtableÀ») µ¹·ÁÁÝ´Ï´Ù
+    ; Ç¥Çö½Ä¿¡¼­ ³ª¸ÓÁö´Â vtable·ÎºÎÅÍ n ¹ø° ÇÔ¼öÀÇ ÁÖ¼ÒÀÇ ÁÖ¼Ò¸¦ ¿­¶÷ÇÕ´Ï´Ù.
+    
+    return NumGet(NumGet(ptr+0), n*A_PtrSize)
+}
+
+ + + diff --git a/src/docs/commands/Drive.htm b/src/docs/commands/Drive.htm new file mode 100644 index 0000000..7349ad9 --- /dev/null +++ b/src/docs/commands/Drive.htm @@ -0,0 +1,86 @@ + + + + +Drive + + + + + + + +

Drive

+ +

CD ¶Ç´Â DVD µå¶óÀ̺êÀÇ Æ®·¹À̸¦ ²¨³»°í ³Ö½À´Ï´Ù. ¶Ç´Â µå¶óÀ̺êÀÇ º¼·ý ¶óº§À» ¼³Á¤ÇÕ´Ï´Ù.

+ +
Drive, Sub-command [, Drive , Value]
+

+ºÎ-¸í·É¾î, µå¶óÀ̺ê, ±×¸®°í º¼·ý ¸Å°³º¯¼ö´Â ¼­·Î ÀÇÁ¸ÀûÀÔ´Ï´Ù. ±×ÀÇ »ç¿ë¹ýÀº ¾Æ·¡¿¡ ±â¼úÇÕ´Ï´Ù.

+

+Label, Drive [, NewLabel]: DriveÀÇ º¼·ý ¶óº§À» NewLabel·Î ¹Ù²ß´Ï´Ù (NewLabelÀ» »ý·«Çϸé, µå¶óÀ̺ê´Â ¶óº§ÀÌ ¾ø½À´Ï´Ù). Drive´Â µå¶óÀÌºê ±âÈ£ ´ÙÀ½¿¡ ½ÖÁ¡°ú ¼±ÅÃÀûÀ¸·Î ¿ª»ç¼±ÀÌ µû¶ó¿É´Ï´Ù (UNC¿Í ¸ÊÇÎµÈ µå¶óÀ̺꿡¼­µµ ÀÛµ¿). ¿¹¸¦ µé¾î: Drive, Label, C:, Seagate200.

+

+ÇöÀç ¶óº§À» ¿­¶÷ÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À: +DriveGet, OutputVar, Label, C:.

+
+

Lock, Drive: µå¶óÀ̺êÀÇ ²¨³»±â ±â´ÉÀÌ ÀÛµ¿ÇÏÁö ¸ø Çϵµ·Ï ¸·½À´Ï´Ù. ¿¹¸¦ µé¾î: Drive, Lock, D:. ´ëºÎºÐÀÇ µå¶óÀ̺ê´Â "¿­¾îµÐ ä·Î Àá±Û ¼ö" ¾ø½À´Ï´Ù. ±×·¸Áö¸¸, ¿­·Á ÀÖ´Â µ¿¾È¿¡ µå¶óÀ̺긦 Àá±×¸é ¾Æ¸¶µµ ±× °á°ú´Â ´ÝÈ÷´Â ¼ø°£ Àá±â°Ô µÉ °ÍÀÔ´Ï´Ù. ÀÌ ¸í·É¾î´Â Àá±ÝÀ» Áö¿øÇÏÁö ¾Ê´Â µå¶óÀ̺꿡´Â ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù (´ëºÎºÐÀÇ Àбâ-Àü¿ë µå¶óÀ̺ê). µå¶óÀ̺갡 ½ºÅ©¸³Æ®¿¡ ÀÇÇØ Àá±â°í ±×¸®°í ±× ½ºÅ©¸³Æ®°¡ ³¡³ª¹ö¸®¸é, ±× µå¶óÀ̺ê´Â ¶Ç ´Ù¸¥ ½ºÅ©¸³Æ®³ª ÇÁ·Î±×·¥ÀÌ Ç®¾îÁÙ ¶§±îÁö ¶Ç´Â ½Ã½ºÅÛÀÌ Àç½ÃÀÛÇÒ ¶§±îÁö ±×´ë·Î Àá°Ü ÀÖ½À´Ï´Ù. ÁöÁ¤µÈ µå¶óÀ̺갡 Á¸ÀçÇÏÁö ¾Ê°Å³ª Àá±Ý Ư¡À» Áö¿øÇÏÁö ¾ÊÀ¸¸é, ErrorLevel¿¡ 1ÀÌ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+
+

Unlock, Drive: À§¿Í ¹Ý´ëÀÔ´Ï´Ù. µå¶óÀ̺갡 ¿©·¯ ¹ø Àá°å´Ù¸é UnlockÀº ¿©·¯ ¹ø ½ÇÇàÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù (Àû¾îµµ ¾î¶² µå¶óÀ̺ê´Â ÇØ´çµË´Ï´Ù). ¿¹¸¦ µé¾î, Drive, Lock, D:ÀÌ ¼¼¹ø ½ÇÇàµÇ¾ú´Ù¸é, Drive, Unlock, D:¸¦ ¼¼ ¹ø ½ÇÇàÇØ¾ß Àá±ÝÀÌ Ç®¸± °ÍÀÔ´Ï´Ù. ÀÌ ¶§¹®¿¡ ±×¸®°í µå¶óÀ̺갡 ÇöÀç Àá°Ü ÀÖ´ÂÁö È®ÀÎÇÒ ¹æ¹ýÀÌ ¾ø±â ¶§¹®¿¡, ±×ÀÇ Àá±Ý »óŸ¦ º¯¼ö¿¡ ÃßÀû °ü¸®ÇÏ´Â °ÍÀÌ À¯¿ëÇÕ´Ï´Ù.

+
+

Eject [, Drive, 1]: CD ¶Ç´Â DVD µå¶óÀ̺êÀÇ Æ®·¹À̸¦ ²¨³À´Ï´Ù (´Ù¸¥ ¹Ìµð¾î ¶Ç´Â ÀåÄ¡ÀÇ À¯ÇüÀ» ²¨³»·Á¸é, ÀÌ ÆäÀÌÁö ÇÏ´ÜÀÇ DllCall ¿¹Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ).

+

+Drive »ý·«µÇ¸é, ±âº» °ªÀº CD/DVD µå¶óÀ̺갡 »ç¿ëµË´Ï´Ù. Æ®·¹À̸¦ ²¨³»·Á¸é, ¸¶Áö¸· ¸Å°³º¯¼ö¸¦ »ý·«ÇÕ´Ï´Ù. Æ®·¹À̸¦ ´ÝÀ¸·Á¸é 1À» ¸¶Áö¸· ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇÕ´Ï´Ù; ¿¹¸¦ µé¾î: Drive, Eject, D:, 1.

+

+Drive Eject ½ºÅ©¸³Æ®¸¦ °è¼Ó ÁøÇàÇϱâ Àü¿¡ ²¨³»±â°¡ ¿Ï·áµÇ±â¸¦ ±â´Ù¸³´Ï´Ù. Æ®·¹ÀÌ°¡ ÀÌ¹Ì ¿Ã¹Ù¸¥ »óÅ¿¡ ÀÖ´Ù¸é (¿­·Á Àְųª ¶Ç´Â ´ÝÇô Àְųª), ErrorLevelÀº 0ÀÌ ¼³Á¤µË´Ï´Ù (Áï, "¿¡·¯ ¾øÀ½").

+

Drive Eject ³×Æ®¿öÅ© µå¶óÀ̺곪 CD/DVD µå¶óÀ̺갡 ¾Æ´Ï¸é ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù. ½ÇÆÐÇϸé, ErrorLevel¿¡ 1ÀÌ ¼³Á¤µË´Ï´Ù.

+

+ÀÌÀüÀÇ Æ®·¹ÀÌ »óŸ¦ ŽÁöÇÏ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù. ¸í·É¾î°¡ ¿Ï·á¿¡ ¼ÒºñµÇ´Â ½Ã°£À» ÃøÁ¤ÇØ º¸¸é ¾Ð´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ÇÖÅ°´Â Æ®·¹ÀÌ°¡ ¹Ý´ë »óÅ°¡ µÇµµ·Ï Åä±ÛÇÕ´Ï´Ù:

+
#c::
+Drive, Eject
+; ¸í·É¾î°¡ »¡¸® ¿Ï·áµÇ¾ú´Ù¸é, Æ®·¹ÀÌ´Â ¾Æ¸¶µµ ÀÌ¹Ì ²¨³»Á® ÀÖÀ» °ÍÀÔ´Ï´Ù.
+; ±× °æ¿ì ´Ù½Ã ³Ö½À´Ï´Ù:
+if A_TimeSinceThisHotkey < 1000  ; ÇÊ¿äÇϸé ÀÌ ½Ã°£À» Á¶ÀýÇÕ´Ï´Ù.
+    Drive, Eject,, 1
+return
+

+CD³ª DVD µå¶óÀ̺êÀÇ ¹Ìµð¾îÀÇ »óŸ¦ °áÁ¤ÇÏ·Á¸é (¿¬ÁÖ, Á¤Áö, ¿­¸², µîµî), DriveGetÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1 ¾øÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+´ÙÀ½Àº ¶Ç´Ù¸¥ ²¨³»±â ¹æ¹ýÀÔ´Ï´Ù. CD/DVD ¸»°íµµ ´Ù¸¥ À¯ÇüÀÇ ¹Ìµð¾î/ÀåÄ¡¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù:

+ +
; ¿øÇÏ´Â µå¶óÀÌºê ±âÈ£¿¡ ÀÏÄ¡½ÃÅ°·Á¸é ¾Æ·¡ÀÇ Ã¹ ÁÙÀ» °»½ÅÇϽʽÿÀ (±× ¾Æ·¡ ´Ù¸¥ ÁÙÀº ¸ðµÎ ¹«½ÃÇصµ ÁÁ½À´Ï´Ù).
+Driveletter = I:  ; ¿©±â¿¡ ²¨³»°í ½ÍÀº µå¶óÀÌºê ±âÈ£¸¦ ¼³Á¤ÇϽʽÿÀ.
+
+hVolume := DllCall("CreateFile"
+    , Str, "\\.\" . Driveletter
+    , UInt, 0x80000000 | 0x40000000  ; GENERIC_READ | GENERIC_WRITE
+    , UInt, 0x1 | 0x2  ; FILE_SHARE_READ | FILE_SHARE_WRITE
+    , UInt, 0
+    , UInt, 0x3  ; OPEN_EXISTING
+    , UInt, 0, UInt, 0)
+if hVolume <> -1
+{
+    DllCall("DeviceIoControl"
+        , UInt, hVolume
+        , UInt, 0x2D4808   ; IOCTL_STORAGE_EJECT_MEDIA
+        , UInt, 0, UInt, 0, UInt, 0, UInt, 0
+        , UIntP, dwBytesReturned  ; Unused.
+        , UInt, 0)
+    DllCall("CloseHandle", UInt, hVolume)
+}
+ +

°ü·Ã Ç׸ñ

+

DriveGet, DriveSpaceFree

+ +

¿¹Á¦

+
Drive, Label, D:, BackupDrive
+Drive, Eject,, 1 ; ±âº» CD ¶Ç´Â DVD µå¶óÀ̺êÀÇ Æ®·¹À̸¦ ´Ý½À´Ï´Ù(³Ö½À´Ï´Ù).
+ + + diff --git a/src/docs/commands/DriveGet.htm b/src/docs/commands/DriveGet.htm new file mode 100644 index 0000000..9a0330f --- /dev/null +++ b/src/docs/commands/DriveGet.htm @@ -0,0 +1,112 @@ + + + + +DriveGet + + + + + + + +

DriveGet

+ +

ÄÄÇ»ÅÍ µå¶óÀ̺꿡 °üÇÏ¿© ´Ù¾çÇÑ À¯ÇüÀÇ Á¤º¸¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+ +
DriveGet, OutputVar, Cmd [, Value]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

CmdÀÇ °á°ú¸¦ ÀúÀåÇÒº¯¼öÀÇ À̸§.

+ +
Cmd, Value
+
¾Æ·¡ ¸®½ºÆ® ÂüÁ¶ +
+ +
+ +

Cmd, Value

+

+Cmd¿Í Value ¸Å°³º¯¼ö´Â ¼­·Î ÀÇÁ¸ÀûÀÔ´Ï´Ù. ±×ÀÇ »ç¿ë¹ýÀº ¾Æ·¡¿¡ ±â¼úÇÕ´Ï´Ù. ¹®Á¦¸¦ ¸¸³ª¸é OutputVar°¡ ºñ¿öÁö°í ErrorLevel¿¡ 1ÀÌ ¼³Á¤µË´Ï´Ù.

+

+List [, Type]: OutputVar¿¡ ±âÈ£·Î ±¸¼ºµÈ ¹®ÀÚ¿­À» ¼³Á¤ÇÕ´Ï´Ù. °¢ ±âÈ£ Çϳª°¡ ½Ã½ºÅÛ¿¡ ÀÖ´Â µå¶óÀ̺긦 ³ªÅ¸³À´Ï´Ù. ¿¹¸¦ µé¾î: ACDEZ. ¸¸¾à TypeÀÌ »ý·«µÇ¸é, ¸ðµç µå¶óÀ̺ê À¯ÇüÀÌ ¿­¶÷µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, TypeÀÌ ¹Ýµå½Ã ´ÙÀ½ Áß Çϳª¸¦ ÁöÁ¤ÇØ¾ß ¿ÀÁ÷ ±× ƯÁ¤ÇÑ µå¶óÀ̺길 ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù: CDROM, REMOVABLE, FIXED, NETWORK, RAMDISK, UNKNOWN.

+

+Capacity (¶Ç´Â Cap), Path: Path (¿¹, C:\)ÀÇ ÃÑ ¿ë·®À» ¸Þ°¡¹ÙÀÌÆ® ´ÜÀ§·Î ¿­¶÷ÇÕ´Ï´Ù. ºó °ø°£À» ¾Ë¾Æ³»·Á¸é DriveSpaceFree¸¦ »ç¿ëÇϽʽÿÀ.

+

+Filesystem (¶Ç´Â FS), Drive: DriveÀÇ ÆÄÀÏ ½Ã½ºÅÛ À¯ÇüÀ» ¿­¶÷ÇÕ´Ï´Ù. Drive´Â µå¶óÀÌºê ±âÈ£¿Í ´ÙÀ½¿¡ ½ÖÁ¡ ±×¸®°í ¼±ÅÃÀûÀ¸·Î ¿ª»ç¼±À¸·Î ±¸¼ºµÇ°Å³ª, ¶Ç´Â \\server1\share1°ú °°Àº UNC À̸§ÀÔ´Ï´Ù. OutputVar´Â ´ÙÀ½ ´Ü¾î Áß Çϳª°¡ ¼³Á¤µË´Ï´Ù: FAT, FAT32, NTFS, CDFS (ÀüÇüÀûÀ¸·Î CD¸¦ °¡¸®Å´), UDF (ÀüÇüÀûÀ¸·Î DVD¸¦ °¡¸®Å´). µå¶óÀ̺꿡 Æ÷¸ËµÈ ¹Ìµð¾î°¡ µé¾î ÀÖÁö ¾ÊÀ¸¸é OutputVar´Â ºñ¿öÁö°í ErrorLevelÀº 1ÀÌ ¼³Á¤µË´Ï´Ù.

+

+Label, Drive: DriveÀÇ º¼·ý ¶óº§À» ¿­¶÷ÇÕ´Ï´Ù. Drive´Â µå¶óÀÌºê ±âÈ£¿Í ´ÙÀ½¿¡ ½ÖÁ¡ ±×¸®°í ¼±ÅÃÀûÀ¸·Î ¿ª»ç¼±À¸·Î ±¸¼ºµÇ°Å³ª, ¶Ç´Â \\server1\share1°ú °°Àº UNC À̸§ÀÔ´Ï´Ù. ¶óº§À» º¯°æÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À: Drive, Label, C:, MyLabel.

+

+Serial, Drive: ½ÊÁø Á¤¼ö·Î Ç¥ÇöµÈ DriveÀÇ ÀÏ·Ã ¹øÈ£¸¦ ¿­¶÷ÇÕ´Ï´Ù. Drive´Â µå¶óÀÌºê ±âÈ£¿Í ´ÙÀ½¿¡ ½ÖÁ¡ ±×¸®°í ¼±ÅÃÀûÀ¸·Î ¿ª»ç¼±À¸·Î ±¸¼ºµÇ°Å³ª, ¶Ç´Â \\server1\share1°ú °°Àº UNC À̸§ÀÔ´Ï´Ù. ½ÊÀ°Áø¼ö·Î ¹Ù²Ù´Â ¹æ¹ýÀº SetFormatÀ» ÂüÁ¶ÇϽʽÿÀ.

+

+Type, Path: PathÀÇ µå¶óÀ̺ê À¯ÇüÀ» ¿­¶÷ÇÕ´Ï´Ù. ´ÙÀ½ ´Ü¾î Áß ÇϳªÀÔ´Ï´Ù: Unknown, Removable, Fixed, Network, CDROM, RAMDisk.

+

+Status, Path: PathÀÇ »óŸ¦ ¿­¶÷ÇÕ´Ï´Ù. ´ÙÀ½ ´Ü¾î Áß ÇϳªÀÔ´Ï´Ù: Unknown (unformatted/RAW¸¦ °¡¸®Å³ ¼öµµ ÀÖÀ½), Ready, NotReady (ÀüÇüÀûÀ¸·Î À̵¿½Ä µå¶óÀ̺꿡 ¹Ìµð¾î°¡ ¾ø´Â °æ¿ì), Invalid (Path°¡ Á¸ÀçÇÏÁö ¾Ê°Å³ª ÇöÀç Á¢±ÙÇÒ ¼ö ¾ø´Â ³×Æ®¿öÅ© µå¶óÀ̺êÀ̰ųª, µîµî.)

+

+StatusCD [, Drive]: CD ¶Ç´Â DVD µå¶óÀ̺êÀÇ »óŸ¦ ¿­¶÷ÇÕ´Ï´Ù. Drive´Â µå¶óÀÌºê ±âÈ£¿Í ½ÖÁ¡À¸·Î ±¸¼ºµË´Ï´Ù (Drive¸¦ »ý·«Çϸé, ±âº» CD/DVD µå¶óÀ̺갡 »ç¿ëµË´Ï´Ù). »óŸ¦ ¾Ë¾Æ³¾ ¼ö ¾øÀ¸¸é OutputVar´Â ºñ¿öÁý´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ´ÙÀ½ ¹®ÀÚ¿­ Áß Çϳª°¡ ¼³Á¤µË´Ï´Ù:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
not readyµå¶óÀ̺꿡 Á¢±ÙÇÒ Áغñ°¡ µÇÁö ¾Ê¾Ò½À´Ï´Ù. ¾Æ¸¶µµ ¾²±â ÀÛ¾÷ ÁßÀÏ ¼ö ÀÖ½À´Ï´Ù. ¾Ë·ÁÁø ÇÑ°è: "not ready"´Â ¶ÇÇÑ µå¶óÀ̺꿡 CD°¡ ¾Æ´Ï¶ó DVD°¡ µé¾î ÀÖ´Â °æ¿ì¿¡µµ ÀϾ´Ï´Ù.
openµå¶óÀ̺꿡 µð½ºÅ©°¡ ¾ø°Å³ª, Æ®·¹ÀÌ°¡ »çÃâµÇ¾î ÀÖ½À´Ï´Ù.
playingµå¶óÀ̺갡 µð½ºÅ©¸¦ ¿¬ÁÖ ÁßÀÔ´Ï´Ù.
pausedÀÌÀü¿¡ ¿¬ÁÖ ÁßÀÌ´ø ¿Àµð¿À ¶Ç´Â ºñµð¿À°¡ ÇöÀç Á¤ÁöµÇ¾î ÀÖ½À´Ï´Ù.
seekingµå¶óÀ̺긦 Ž»ö ÁßÀÔ´Ï´Ù.
stoppedµå¶óÀ̺꿡 CD°¡ µé¾î ÀÖÁö¸¸ ÇöÀç Á¢±ÙÇÏÁö ¸øÇÕ´Ï´Ù.
+

+ÀÌ ¸í·É¾î´Â ¾Æ¸¶µµ ³×Æ®¿öÅ© µå¶óÀ̺곪 ºñ-CD/DVD µå¶óÀ̺꿡¼­´Â ÀÛµ¿ÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù; ±×·± °æ¿ì ¶Ç´Â ´Ù¸¥ ¾î¶² ÀÌÀ¯·Î ½ÇÆÐÇϸé, OutputVar´Â ºñ¿öÁö°í ErrorLevelÀº 1ÀÌ ¼³Á¤µË´Ï´Ù.

+

+Æ®·¹ÀÌ°¡ ÃÖ±Ù¿¡ ´ÝÇû´Ù¸é, ¸í·É¾î°¡ ¿Ï·áÇÏ·Á¸é Á» ½Ã°£ÀÌ °É¸± ¼ö ÀÖ½À´Ï´Ù.

+

+Æ®·¹À̸¦ »©°Å³ª ³ÖÀ¸·Á¸é, Drive ¸í·É¾î¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+¹®Á¦°¡ ÀÖ¾úÀ¸¸é ErrorLevel¿¡ 1ÀÌ ¼³Á¤µÇ°í ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+¾î¶² ¸í·É¾î´Â ³×Æ®¿öÅ© °øÀ¯ À̸§À» °æ·Î(Path)·Î ¹Þ½À´Ï´Ù. ¿¹, \\MyServer\MyShare\

+ +

°ü·Ã Ç׸ñ

+

+Drive, DriveSpaceFree

+ +

¿¹Á¦

+
; ´ÙÀ½Àº ÀÛµ¿ÇÏ´Â ½ºÅ©¸³Æ®ÀÔ´Ï´Ù.
+FileSelectFolder, folder, , 3, ºÐ¼®ÇÒ µå¶óÀ̺긦 °í¸£½Ê½Ã¿À:
+if folder =
+    return
+DriveGet, list, list
+DriveGet, cap, capacity, %folder%
+DrivespaceFree, free, %folder%
+DriveGet, fs, fs, %folder%
+DriveGet, label, label, %folder%
+DriveGet, serial, serial, %folder%
+DriveGet, type, type, %folder%
+DriveGet, status, status, %folder%
+MsgBox All Drives: %list%`nSelected Drive: %folder%`nDrive Type: %type%`nStatus: %status%`nCapacity: %cap% M`nFree Space: %free% M`nFilesystem: %fs%`nVolume Label: %label%`nSerial Number: %serial%
+ + + diff --git a/src/docs/commands/DriveSpaceFree.htm b/src/docs/commands/DriveSpaceFree.htm new file mode 100644 index 0000000..f4d06f0 --- /dev/null +++ b/src/docs/commands/DriveSpaceFree.htm @@ -0,0 +1,37 @@ + + + + +DriveSpaceFree + + + + + + + +

DriveSpaceFree

+ +

µå¶óÀ̺êÀÇ ¿©À¯ °ø°£À» ¸Þ°¡¹ÙÀÌÆ® ´ÜÀ§·Î ¿­¶÷ÇÕ´Ï´Ù.

+ +
DriveSpaceFree, OutputVar, Path
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

°á°ú¸¦ ÀúÀåÇÒ º¯¼ö, ¿ÂÀüÇÑ ¼ýÀÚ¿¡ °¡Àå °¡±õ°Ô ¹Ý³»¸²µË´Ï´Ù.

+ +
path
+

Á¤º¸¸¦ ¼ö½ÅÇÒ µå¶óÀÌºê °æ·Î. NTFS´Â º¼·ý ¸¶¿îÆ®¿Í µð·ºÅ丮 ¿¬°áÀ» Áö¿øÇϹǷÎ, °°Àº "µå¶óÀ̺ê" ÀÏ Áö¶óµµ ¾î¶² °æ¿ì´Â Æú´õ¸¶´Ù ¿©À¯ °ø°£À» ´Ù¸£°Ô º¸°íÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +
+ +

³íÆò

+

OutputVar´Â ¸Þ°¡¹ÙÀÌÆ® ´ÜÀ§·Î µð½ºÅ© ¿©À¯ °ø°£ÀÇ ¾çÀÌ ¼³Á¤µË´Ï´Ù (°¡±î¿î ¸Þ°¡¹ÙÀÌÆ®·Î ¹Ý³»¸²µË´Ï´Ù).

+

°ü·Ã Ç׸ñ

+

Drive, DriveGet

+

¿¹Á¦

+
DriveSpaceFree, FreeSpace, c:\
+ + + diff --git a/src/docs/commands/Edit.htm b/src/docs/commands/Edit.htm new file mode 100644 index 0000000..33398dc --- /dev/null +++ b/src/docs/commands/Edit.htm @@ -0,0 +1,83 @@ + + + + +Edit + + + + + + + +

Edit

+ +

ÇöÀç ½ºÅ©¸³Æ®¸¦ ¿¬°üµÈ ÆíÁý±â¿¡ ¿­¾î ÆíÁýÇÕ´Ï´Ù.

+ +
Edit
+

Edit ¸í·É¾î´Â ÇöÀç ½ºÅ©¸³Æ®¸¦ ¿­¾î ÆíÁýÇÕ´Ï´Ù. ·¹Áö½ºÆ®¸®ÀÇ "edit" ¸í·É¾î¸¦ »ç¿ëÇÕ´Ï´Ù. (¾Æ¹«°Íµµ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é Notepad¸¦ »ç¿ëÇÔ). +±×·¸Áö¸¸, ÆíÁý±â â¿¡ ÀÌ¹Ì ÇØ´ç ½ºÅ©¸³Æ®°¡ ¿­·Á ÀÖ´Â °Í °°À¸¸é (±×ÀÇ Ã¢ Á¦¸ñÀ» º¸°í À¯ÃßÇÔ), »õ ÆíÁý±â ½Çü¸¦ ¿©´Â ´ë½Å¿¡ ±× âÀÌ È°¼ºÈ­µË´Ï´Ù.

+

ÀÌ ¸í·É¾î´Â ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ® ¾È¿¡¼­ ½ÇÇàÇÏ¸é ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù.

+

°ü·ÃÇؼ­ ÇÑ ¸¶µð ÇÏÀÚ¸é, ¿ÀÅäÇÖÅ° ¹®¹ý °­Á¶´Â ´Ù¾çÇÑ ÆíÁý±â¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù - ¾Æ·¡¸¦ ÂüÁ¶ÇϽʽÿÀ. +°Ô´Ù°¡, ÆíÁý±â¿¡¼­ ¿ÀÅäÇÖÅ° ¸í·É¾î¿¡ ´ëÇÑ ¹®¸Æ °¨Áö µµ¿ò¸»Àº ´ÙÀ½ ¿¹Á¦¸¦ ÅëÇÏ¿© È°¼ºÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù. +¸¶Áö¸·À¸·Î, ¿©·¯ºÐÀÇ »ý»ê¼ºÀ» °³¼±ÇÒ ¼ö ÀÖ½À´Ï´Ù. ISense¿Í °°Àº ÀÚµ¿-¿Ï¼º ±â´ÉÀ» »ç¿ëÇϸé ÁÁ½À´Ï´Ù. ÀÌ ±â´ÉÀº °ÅÀÇ ¸ðµç ÆíÁý±â¿¡¼­ ÀÛµ¿ÇÕ´Ï´Ù. + ŸÀÚÇÏ´Â °ÍÀ» ÁöÄÑ º¸´Ù°¡ ¸Þ´º¿Í ¸Þ°³º¯¼ö ¸ñ·ÏÀ» º¸¿©ÁÝ´Ï´Ù. ´öºÐ¿¡ ŸÀÚ ¼ö¸¦ Àý¾àÇÒ ¼ö ÀÖ°í ¸Å°³º¯¼öÀÇ ¼ø¼­¸¦ ±â¾ïÇÏ´Â µ¥¿¡µµ µµ¿òÀÌ µË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

Reload

+

¿¹Á¦

+
Edit ; ÆíÁýÀ» À§ÇØ ½ºÅ©¸³Æ®¸¦ ¿±´Ï´Ù.
+
; ÆíÁý±âÀÇ ¸í·É ÁÙ »ç¿ë¹ýÀÌ ´ÙÀ½°ú °°´Ù¸é,
+; ÀÌ ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ¿© ahk ÆÄÀÏÀ» À§ÇÑ ±âº» ÆíÁý±â·Î ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù:
+;
+;   Editor.exe "Full path of script.ahk"
+;
+; ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇϸé,
+; ÆíÁý±âÀÇ ½ÇÇà ÆÄÀÏÀ» ¼±ÅÃÇ϶ó°í ¿ä±¸ÇÕ´Ï´Ù.
+;
+FileSelectFile Editor, 2,, ÆíÁý±â¸¦ ¼±ÅÃÇϽʽÿÀ, Programs (*.exe)
+if ErrorLevel
+    ExitApp
+RegWrite REG_SZ, HKCR, AutoHotkeyScript\Shell\Edit\Command,, "%Editor%" "`%1"
+ +

¿ÀÅäÇÖÅ°¸¦ Áö¿øÇÏ´Â ÆíÁý±â

+

SciTE4AutoHotkey´Â SciTE¶ó°í ºÒ¸®¿ì´Â ÆíÁý±â¸¦ AutoHotkey½ºÅ©¸³Æ®¸¦ À§ÇØ Æ¯º°È÷ Àç´ÜÇÑ ¹öÀüÀÔ´Ï´Ù. ´ÙÀ½°ú °°Àº Ư¡ÀÌ ÀÖ½À´Ï´Ù:

+
    +
  • ±¸¹® °­Á¶
  • +
  • ¶È¶ÈÇÑ ÀÚµ¿-µé¿©¾²±â
  • +
  • ÀÚµ¿-¿Ï¼º
  • +
  • ÄÝÆÁ (ÀÎÅÚ¸®¼¾½º(IntelliSense)¶ó°íµµ ÇÔ)
  • +
  • ÄÚµå Á¢±â
  • +
  • »óÈ£´ëÈ­ µð¹ö±ë Áö¿ø
  • +
  • ±âŸ ¿ÀÅäÇÖÅ° ½ºÅ©¸³Æ®¸¦ À§ÇÑ µµ±¸µé
  • +
+

SciTE4AutoHotkey´Â ´ÙÀ½¿¡¼­ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù: http://fincs.ahk4.net/scite4ahk/

+

¿ÀÅäÇÖÅ° ±¸¹® °­Á¶¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ´Ù¸¥ ÆíÁý±â´Â ¾Æ·¡¿Í °°½À´Ï´Ù:

+ +

Ãß°¡·Î, AutoHotkey Basic (http://www.autohotkey.com/download/)ÀÇ ¾ÐÃà ÆÄÀÏÀ» ³»·Á ¹Þ¾Æ º¸¸é ´ÙÀ½°ú °°Àº ÆíÁý±â¿¡¼­ ±¸¹® °­Á¶¸¦ È°¼ºÈ­½ÃÄÑ ÁÖ´Â ÆÄÀϵéÀÌ µé¾î ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ÀÌ ÆÄÀϵéÀº ½ÉÇÏ°Ô ±âÇÑÀÌ ¿À·¡ µÇ¾ú°í Àß ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼öµµ ÀÖ½À´Ï´Ù:

+
    +
  • ConTEXT
  • +
  • EditPlus
  • +
  • EmEditor
  • +
  • jEdit
  • +
  • MED
  • +
  • TextPad
  • +
  • UltraEdit
  • +
  • Vim
  • +
+

¿©·¯ºÐÀÇ ÆíÁý±â°¡ ¸ñ·Ï¿¡ ¾ø´Ù¸é, Æ÷·³À» °Ë»öÇؼ­ ¿©·¯ºÐÀÇ ¿îÀ» ½ÃÇèÇØ º¸½Ê½Ã¿À.

+

ÀÌ ÆäÀÌÁö¿¡ Ãß°¡µÈ ÆíÁý±â¸¦ ¾òÀ¸·Á¸é, Æ÷·³À» ÅëÇÑ Lexikos ¶Ç´Â GitHub¸¦ ¹æ¹®ÇØ º¸½Ê½Ã¿À.

+ + + diff --git a/src/docs/commands/Else.htm b/src/docs/commands/Else.htm new file mode 100644 index 0000000..e8fb57f --- /dev/null +++ b/src/docs/commands/Else.htm @@ -0,0 +1,80 @@ + + + + +Else + + + + + + + +

Else

+ +

+IF-¼­¼ú¹®ÀÌ FALSE·Î Æò°¡µÇ¸é ¼öÇàÇÒ ¸ê·É¾î¸¦ ÁöÁ¤ÇÕ´Ï´Ù. Çϳª ÀÌ»óÀÇ ¸í·É¾î°¡ Á¸ÀçÇϸé, ºí·Ï ¾È¿¡ (È°°ýÈ£) ½Î ³ÖÀ¸½Ê½Ã¿À.

+ +
Else
+ +

³íÆò

+

+ELSE¸¦ »ç¿ëÇÏ¸é ¹Ù·Î À§ÀÇ IF-¼­¼ú¹®¿¡ ¼ÓÇÕ´Ï´Ù (¿¬°üµË´Ï´Ù). ELSE´Â ¾ðÁ¦³ª À§ÂÊÀ¸·Î °¡Àå °¡±î¿î IF-¼­¼ú¹®¿¡ ¼ÓÇÕ´Ï´Ù. ´Ü, ºí·ÏÀ» »ç¿ëÇÏ¿© ±× ÇàÀ§¸¦ ¹Ù²Û °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù.

+

+ELSE ´ÙÀ½¿¡ ¹Ù·Î °°Àº ÁÙ¿¡ ¸í·É¾î Çϳª°¡ µû¶ó¿Ã ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº "else if" »ç´Ù¸®¿¡ °¡Àå ¸¹ÀÌ »ç¿ëµË´Ï´Ù (¾Æ·¡ÀÇ ¿¹Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ).

+

+IF ¶Ç´Â ELSE°¡ ÇÑ ÁÙ ÀÌ»óÀ» ¼ÒÀ¯Çϸé, ±×·± ÁÙÀº È°°ýÈ£·Î µÑ·¯ ½Î¾ß ÇÕ´Ï´Ù. ±×·¸Áö¸¸, ÇÑ ÁÙ¸¸ IF ¶Ç´Â ELSE¿¡ ¼ÓÇØ ÀÖ´Ù¸é, È°°ýÈ£´Â ¼±ÅÃÀûÀÔ´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
if count > 0  ; ´ÙÀ½ ÁÙ¿¡ °ýÈ£°¡ ÇÊ¿ä ¾ø½À´Ï´Ù. ¿Ö³ÄÇϸé ÇÑ ÁÙ¸¸ Àֱ⠶§¹®ÀÔ´Ï´Ù.
+    MsgBox ÇÁ·Î¼¼½º¸¦ ½ÃÀÛÇÏ·Á¸é OK¸¦ ´©¸£½Ê½Ã¿À.
+else  ; ¾Æ·¡ ¼½¼Ç¿¡´Â È°°ýÈ£¸¦ ¹Ýµå½Ã µÑ·¯¾ß ÇÕ´Ï´Ù. ¿Ö³ÄÇϸé ÇÑ ÁÙ ÀÌ»óÀ¸·Î ±¸¼ºµÇ¾î Àֱ⠶§¹®ÀÔ´Ï´Ù.
+{
+    WinClose Untitled - Notepad
+    MsgBox Ç׸ñÀÌ Çϳªµµ ¾ø½À´Ï´Ù.
+}
+

+One True Brace (OTB) ½ºÅ¸ÀÏÀº ¼±ÅÃÀûÀ¸·Î "else" µÑ·¹¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
if IsDone {
+    ...
+} else if (x < y) {
+    ...
+} else {
+    ...
+}
+ +

°ü·Ã Ç׸ñ

+

+Blocks ÂüÁ¶. ¶Ç, IF-¸í·É¾î¸¶´Ù ELSE¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿©±â¿¡´Â IfWinActive, IfWinExist, IfMsgBox, IfInString, IfBetween, IfIn, IF, ±×¸®°í IF (expression)°¡ Æ÷ÇԵ˴ϴÙ.

+ +

¿¹Á¦

+
IfWinExist, Untitled - Notepad
+{
+    WinActivate
+    Send This is a test.{Enter}
+}
+else
+{
+    WinActivate, Some Other Window
+    MouseClick, left, 100, 200
+}
+
+if x = 1
+    Gosub, a1
+else if x = 2 ; "else if" ½ºÅ¸ÀÏ
+    Gosub, a2
+else IfEqual, x, 3 ; ´ë¾È ½ºÅ¸ÀÏ
+{
+    Gosub, a3
+    Sleep, 1
+}
+else Gosub, a4  ; Áï, ¸í·É¾î°¡ Çϳª¸¸ ÀÖÀ¸¸é  ELSE¿Í °°Àº ÁÙ¿¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.
+ 
+; Also OK:
+IfEqual, y, 1, Gosub, b1
+else {
+    Sleep, 1
+    Gosub, b2
+}
+ + + diff --git a/src/docs/commands/EnvAdd.htm b/src/docs/commands/EnvAdd.htm new file mode 100644 index 0000000..6443fed --- /dev/null +++ b/src/docs/commands/EnvAdd.htm @@ -0,0 +1,66 @@ + + + + +EnvAdd + + + + + + + +

EnvAdd

+ +

+ÁÖ¾îÁø °ªÀ» ÀڽŰú ÇÕÇØ º¯¼ö¿¡ ¼³Á¤ÇÕ´Ï´Ù +(³¯Â¥-½Ã°£ °ªÀ¸·ÎºÎÅÍ ½Ã°£À» ´õÇϰųª »¬ ¼öµµ ÀÖ½À´Ï´Ù). +´ÙÀ½°ú µ¿µîÇÕ´Ï´Ù: var += value.

+ +
EnvAdd, Var, Value [, TimeUnits]
+Var += Value [, TimeUnits]
+Var++
+

Parameters

+
+ +
Var
+

¿¬»êÀ» ÇÒ º¯¼öÀÇ À̸§.

+ +
Value
+

Á¤¼ö, ºÎµ¿ ¼Ò¼öÁ¡ ¼ö, ¶Ç´Â Ç¥Çö½Ä.

+ +
TimeUnits
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸í·É¾î¸¦ ¹æÇâ Àüȯ ½ÃÄѼ­ Value¸¦ Var¿¡ ´õÇϵµ·Ï ¸¸µì´Ï´Ù. Var¸¦ YYYYMMDDHH24MISS Çü½ÄÀÇ ³¯Â¥-½Ã°£ µµÀåÀ¸·Î Ãë±ÞÇÏ°í Value¸¦ ´õÇÒ Á¤¼ö³ª ºÎµ¿ ¼Ò¼öÁ¡ ¼ö ´ÜÀ§·Î Ãë±ÞÇÕ´Ï´Ù (À½¼ö¸¦ ÁöÁ¤ÇÏ¸é »¬¼ÀÀ» ¼öÇàÇÕ´Ï´Ù). TimeUnitsÀº Seconds, Minutes, Hours, ¶Ç´Â Days (¶Ç´Â ±×³É °¢ ´Ü¾îÀÇ Ã¹ ¹®ÀÚ)°¡ µÉ ¼ö ÀÖ½À´Ï´Ù).

+

+ Var°¡ ºó º¯¼öÀ̸é, ÇöÀç ½Ã°£ÀÌ ´ë½Å »ç¿ëµË´Ï´Ù. Var¿¡ ¹«È¿ÇÑ ½Ã°£µµÀåÀÌ µé¾î Àְųª ³âµµ°¡ 1601³â ÀÌÀüÀÌ°¡³ª, ¶Ç´Â Value°¡ ¼ýÄ¡°¡ ¾Æ´Ï¸é, Var´Â ¹®Á¦¸¦ ³ªÅ¸³»±â À§ÇØ ºñ¿öÁý´Ï´Ù.

+

+ ³»Àå º¯¼ö A_Now´Â ÇöÀç Áö¿ª ½Ã°£ÀÌ YYYYMMDDHH24MISS Çü½ÄÀ¸·Î ´ã±é´Ï´Ù.

+

+ µÎ ½Ã°£µµÀå »çÀÌÀÇ ½Ã°£ÀÇ ¾çÀ» °è»êÇÏ·Á¸é EnvSub¸¦ »ç¿ëÇϽʽÿÀ.

+ +
+ +

³íÆò

+

+ÀÌ ¸í·É¾î´Â ´ÙÀ½ ´ÜÃà ½ºÅ¸ÀÏ°ú µ¿µîÇÕ´Ï´Ù: Var += Value.

+

+º¯¼ö´Â Var++, Var--, ++Var, ¶Ç´Â --Var¸¦ »ç¿ëÇØ 1 ¸¸Å­¾¿ ´Ã°Å³ª ÁÙ ¼ö ÀÖ½À´Ï´Ù.

+

+Var³ª Value°¡ ºñ¾î Àְųª ¼ýÀÚ·Î ½ÃÀÛÇÏÁö ¾ÊÀ¸¸é, °è»êÀÇ ¸ñÀûÀ» À§ÇØ 0À¸·Î °£Áֵ˴ϴ٠(³»ºÎÀûÀ¸·Î Ç¥Çö½Ä¿¡ »ç¿ëµÉ ¶§ ±×¸®°í TimeUnits ¸Å°³º¯¼ö¸¦ »ç¿ëÇÒ ¶§´Â ¿¹¿ÜÀÔ´Ï´Ù).

+

+Var³ª Value¿¡ ¼Ò¼öÁ¡ÀÌ µé¾î ÀÖ´Ù¸é, °á°ú´Â ºÎµ¿ ¼Ò¼öÁ¡ ¼ö°¡ µÇ°í Çü½ÄÀº SetFormat¿¡ ÀÇÇØ ¼³Á¤µË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+EnvSub, EnvMult, EnvDiv, SetFormat, Ç¥Çö½Ä, If var is [not] type, SetEnv, FileGetTime

+ +

¿¹Á¦

+
EnvAdd, MyCount, 2
+MyCount += 2  ; À§¿Í µ¿µî
+
+var1 =  ; ºñ¿ö¼­ ¾Æ·¡°¡ ´ë½Å ÇöÀç ½Ã°£À» »ç¿ëÇϵµ·Ï ¸¸µì´Ï´Ù.
+var1 += 31, days
+MsgBox, %var1%  ; ´äÀº Áö±ÝºÎÅÍ 31ÀÏ ÈÄ°¡ µÉ °ÍÀÔ´Ï´Ù.
+ + + diff --git a/src/docs/commands/EnvDiv.htm b/src/docs/commands/EnvDiv.htm new file mode 100644 index 0000000..29dff0e --- /dev/null +++ b/src/docs/commands/EnvDiv.htm @@ -0,0 +1,48 @@ + + + + +EnvDiv + + + + + + + +

EnvDiv

+ +

º¯¼ö¿¡ ÀÚ±âÀÚ½ÅÀ» ÁÖ¾îÁø °ªÀ¸·Î ³ª´©¾î ¼³Á¤ÇÕ´Ï´Ù. ´ÙÀ½°ú µ¿ÀÏ: Var /= Value.

+ +
EnvDiv, Var, Value
+

¸Å°³º¯¼ö

+
+ +
Var
+

¿¬»êÀ» ¼öÇàÇÒ º¯¼öÀÇ À̸§.

+ +
Value
+

Á¤¼ö, ºÎµ¿ ¼Ò¼öÁ¡ ¼ö, ¶Ç´Â Ç¥Çö½Ä.

+ +
+ +

³íÆò

+

+ÀÌ ¸í·É¾î´Â ´ÙÀ½ ´ÜÃà ½ºÅ¸ÀÏ°ú µ¿µîÇÕ´Ï´Ù: Var /= Value.

+

+0À¸·Î ³ª´©¸é ½ºÅ©¸³Æ®°¡ ÀûÀçµÉ ¶§¿¡·¯ ¸Þ½ÃÁö âÀÌ ³ªÅ¸³³´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é ±× º¯¼ö¸¦ ºñ¿ö¹ö¸³´Ï´Ù.

+

+Var³ª Value°¡ ºñ¾î Àְųª ¼ýÀÚ·Î ½ÃÀÛÇÏÁö ¾ÊÀ¸¸é, °è»êÀ» ¸ñÀûÀ¸·Î 0À¸·Î °£Áֵ˴ϴ٠(Var := X /= Y¿Í °°ÀÌ ³»ºÎÀûÀ¸·Î Ç¥Çö½Ä ¾È¿¡ »ç¿ëµÉ ¶§´Â ¿¹¿ÜÀÔ´Ï´Ù).

+

+Var ¶Ç´Â Value¿¡ ¼Ò¼öÁ¡ÀÌ µé¾î ÀÖÀ¸¸é, ±× °á°ú´Â ºÎµ¿ ¼Ò¼öÁ¡ ¼ö ÀÔ´Ï´Ù. Çü½ÄÀº SetFormatÀ¸·Î ÁöÁ¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ±× °á°ú´Â Àß·Á ³ª°©´Ï´Ù (¿¹, 19 ³ª´©±â 10Àº 1À» »êÃâÇÕ´Ï´Ù).

+ +

°ü·Ã Ç׸ñ

+

+EnvAdd, EnvSub, EnvMult, SetFormat, Ç¥Çö½Ä, If var is [not] type, SetEnv, ºñÆ®º° ¿¬»ê (º¯Çü)

+ +

¿¹Á¦

+
EnvDiv, MyCount, 2
+MyCount /= 2  ; À§¿Í µ¿µîÇÔ
+ + + diff --git a/src/docs/commands/EnvGet.htm b/src/docs/commands/EnvGet.htm new file mode 100644 index 0000000..0804a74 --- /dev/null +++ b/src/docs/commands/EnvGet.htm @@ -0,0 +1,42 @@ + + + + +EnvGet + + + + + + + +

EnvGet [v1.0.43.08+]

+ +

ȯ°æ º¯¼ö¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+ +
EnvGet, OutputVar, EnvVarName
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

¹®ÀÚ¿­À» ÀúÀåÇÒ º¯¼ö À̸§.

+ +
EnvVarName
+

¿­¶÷ÇÒ È¯°æ º¯¼öÀÇ À̸§. ¿¹¸¦ µé¾î: EnvGet, OutputVar, Path.

+ +
+

³íÆò

+

+ÁöÁ¤µÈ ȯ°æ º¯¼ö°¡ ºñ¾î Àְųª Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, OutputVar ºñ¿öÁý´Ï´Ù.

+

+¿î¿µ üÁ¦´Â ȯ°æ º¯¼öÀÇ ±æÀ̸¦ 32 KBÀÇ ÅؽºÆ®·Î Á¦ÇÑÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+EnvSet, #NoEnv, ȯ°æ º¯¼ö, EnvUpdate, SetEnv, Run, RunWait

+ +

¿¹Á¦

+
EnvGet, OutputVar, LogonServer
+ + + diff --git a/src/docs/commands/EnvMult.htm b/src/docs/commands/EnvMult.htm new file mode 100644 index 0000000..90925a6 --- /dev/null +++ b/src/docs/commands/EnvMult.htm @@ -0,0 +1,45 @@ + + + + +EnvMult + + + + + + + +

EnvMult

+ +

ÁÖ¾îÁø °ªÀ» º¯¼ö¿¡ °öÇØ ±× º¯¼ö¿¡ ´Ù½Ã ¼³Á¤ÇÕ´Ï´Ù. ´ÙÀ½°ú µ¿µî: Var *= Value.

+ +
EnvMult, Var, Value
+

¸Å°³º¯¼ö

+
+ +
Var
+

¿¬»êÀ» ¼öÇàÇÒ º¯¼öÀÇ À̸§.

+ +
Value
+

Á¤¼ö, ºÎµ¿ ¼ö¼öÁ¡ ¼ö, ¶Ç´Â Ç¥Çö½Ä.

+ +
+ +

³íÆò

+

+ÀÌ ¸í·É¾î´Â ´ÙÀ½ ´ÜÃà ½ºÅ¸ÀÏ°ú µ¿µîÇÕ´Ï´Ù: Var *= Value.

+

+Var³ª Value°¡ ºñ¾î Àְųª ¶Ç´Â ¼ýÀÚ·Î ½ÃÀÛÇÏÁö ¾ÊÀ¸¸é, °è»êÀ» À§ÇØ 0À¸·Î °£Áֵ˴ϴ٠(´Ü ³»ºÎÀûÀ¸·Î Ç¥Çö½Ä¿¡ Var := X *= Y¿Í °°ÀÌ »ç¿ëÇÒ °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù).

+

+Var³ª Value¿¡ ¼Ò¼öÁ¡ÀÌ Æ÷ÇԵǾî ÀÖÀ¸¸ç, ±× °á°ú´Â ºÎµ¿ ¼Ò¼öÁ¡ ¼ö°¡ µË´Ï´Ù. Çü½ÄÀº SetFormatÀ¸·Î ¼³Á¤µË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

EnvAdd, EnvSub, EnvDiv, SetFormat, Ç¥Çö½Ä, If var is [not] type, SetEnv, ºñÆ®º° ¿¬»ê (º¯Çü)

+ +

¿¹Á¦

+
EnvMult, MyCount, 2 
+MyCount *= 2  ; À§¿Í µ¿µîÇÕ´Ï´Ù
+ + + diff --git a/src/docs/commands/EnvSet.htm b/src/docs/commands/EnvSet.htm new file mode 100644 index 0000000..9767593 --- /dev/null +++ b/src/docs/commands/EnvSet.htm @@ -0,0 +1,50 @@ + + + + +EnvSet + + + + + + + +

EnvSet

+ +

°ªÀ» ȯ°æ º¯¼ö¿¡ ¾¹´Ï´Ù.

+ +
EnvSet, EnvVar, Value
+

¸Å°³º¯¼ö

+
+ +
EnvVar
+
»ç¿ëÇÒ È¯°æ º¯¼öÀÇ À̸§. ¿¹, "COMSPEC" + ¶Ç´Â "PATH".
+ +
Value
+

ȯ°æ º¯¼ö¿¡ ¼³Á¤ÇÒ °ª.

+ +
+

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆÐ ½Ã¿¡ ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖ´Ù¸é 1 ¾Æ´Ï¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+¿î¿µ üÁ¦´Â °¢ ȯ°æ º¯¼ö¸¦ 32 KBÀÇ ÅؽºÆ®·Î Á¦ÇÑÇÕ´Ï´Ù.

+

+ÀÌ ¸í·É¾î·Î »ý¼ºµÇ°Å³ª º¯°æµÈ ȯ°æ º¯¼ö´Â ½ºÅ©¸³Æ®°¡ Run ¶Ç´Â RunWait¸¦ ÅëÇÏ¿© ½ÇÇàÇÑ ÇÁ·Î±×·¥¿¡¼­¸¸ Á¢±ÙÀÌ °¡´ÉÇÕ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ °ÍÀº ȯ°æ º¯¼ö¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ÀÌ ¸í·É¾î´Â SetEnv¿Í º°µµ·Î Á¸ÀçÇÕ´Ï´Ù. ¿Ö³ÄÇϸé Á¤»óÀûÀÎ ½ºÅ©¸³Æ® º¯¼ö´Â ¿î¿µ üÁ¦ÀÇ È¯°æ¿¡ ÀúÀåµÇÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ¼öÇ༺´ÉÀÌ ¾ÇÈ­µÇ°í OS°¡ ȯ°æ º¯¼ö¸¦ 32 KBÀÇ ±æÀÌ·Î Á¦ÇÑÇϱ⠶§¹®ÀÔ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+EnvGet, #NoEnv, ȯ°æ º¯¼ö, EnvUpdate, SetEnv, Run, RunWait

+ +

¿¹Á¦

+
EnvSet, AutGUI, º¯¼ö¿¡ ³ÖÀ» ÅؽºÆ®.
+ + + diff --git a/src/docs/commands/EnvSub.htm b/src/docs/commands/EnvSub.htm new file mode 100644 index 0000000..e7b6a8e --- /dev/null +++ b/src/docs/commands/EnvSub.htm @@ -0,0 +1,68 @@ + + + + +EnvSub + + + + + + + +

EnvSub

+ +

ÁÖ¾îÁø °ªÀ» Àڽſ¡¼­ »©¾î º¯¼ö¿¡ ¼³Á¤ÇÕ´Ï´Ù (³¯Â¥-½Ã°£ °ªµµ »¬ ¼ö ÀÖ½À´Ï´Ù). ´ÙÀ½°ú µ¿ÀÏ: Var -= Value.

+ +
EnvSub, Var, Value [, TimeUnits]
+Var -= Value [, TimeUnits]
+Var--
+

¸Å°³º¯¼ö

+
+ +
Var
+

¿¬»êÀ» ¼öÇàÇÒ º¯¼öÀÇ À̸§.

+ +
Value
+

Á¤¼ö, ºÎµ¿ ¼Ò¼öÁ¡ ¼ö, ¶Ç´Â Ç¥Çö½Ä (TimeUnitsÀÌ Á¸ÀçÇϸé Ç¥Çö½ÄÀº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù).

+ +
TimeUnits
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸í·É¾î¸¦ ¹æÇâÀüȯÇؼ­ Value¸¦ Var·ÎºÎÅÍ »©µµ·Ï ¸¸µì´Ï´Ù. ¸¶Ä¡ µÑ ¸ðµÎ YYYYMMDDHH24MISS Çü½ÄÀÇ ³¯Â¥-½Ã°£ µµÀåÀÎ °Íó·³ °£ÁÖÇÕ´Ï´Ù. TimeUnitsÀº Seconds, Minutes, Hours, ¶Ç´Â Days (¶Ç´Â ±×³É °¢ ´Ü¾îÀÇ Ã¹ ¹®ÀÚ)°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. Value°¡ ºñ¾î ÀÖÀ¸¸é, ÇöÀç ½Ã°£ÀÌ ´ë½Å »ç¿ëµË´Ï´Ù. ºñ½ÁÇÏ°Ô, Var°¡ ºó º¯¼öÀ̸é, ÇöÀç ½Ã°£ÀÌ ´ë½Å »ç¿ëµË´Ï´Ù.

+

+ °á°ú´Â ¾ðÁ¦³ª °¡Àå °¡±î¿î Á¤¼ö·Î ³»¸²µË´Ï´Ù. ¿¹¸¦ µé¾î, µÎ ½Ã°£µµÀå »çÀÌÀÇ ½ÇÁ¦ Â÷ÀÌ°¡ 1.999 ÀÏÀ̸é, 1 ÀÏ·Î º¸°íÇÕ´Ï´Ù. ´õ ³ôÀº Á¤¹Ðµµ°¡ ÇÊ¿äÇϸé, Seconds¸¦ TimeUnits¿¡ ÁöÁ¤ÇÏ°í ±× °á°ú¸¦ 60.0, 3600.0, ¶Ç´Â 86400.0À¸·Î ³ª´©½Ê½Ã¿À.

+

+ Var ¶Ç´Â Value°¡ À¯È¿ÇÏÁö ¾ÊÀº ½Ã°£µµÀåÀ̰ųª 1601 ³â ÀÌÀüÀÇ ³âµµ¸¦ ´ã°í ÀÖÀ¸¸é, Var¸¦ ºñ¿ö¼­ ±× ¹®Á¦¸¦ ³ªÅ¸³À´Ï´Ù.

+

+ ³»Àå º¯¼ö A_Now´Â ÇöÀç Áö¿ª ½Ã°£À» YYYYMMDDHH24MISS Çü½ÄÀ¸·Î ´ã°í ÀÖ½À´Ï´Ù.

+

+ µÎ À̺¥Æ® »çÀÌ¿¡ °æ°úÇÑ ½Ã°£À» Á¤¹ÐÇÏ°Ô Àç°í ½Í´Ù¸é, A_TickCount method¸¦ »ç¿ëÇϽʽÿÀ. ¹Ð¸®ÃÊÀÇ Á¤¹Ðµµ¸¦ Á¦°øÇÕ´Ï´Ù.

+

+ ½Ã°£µµÀåÀ¸·ÎºÎÅÍ ÃÊ, ºÐ, ½Ã°£ ¶Ç´Â ³¯À» »©°Å³ª ´õÇÏ·Á¸é, EnvAdd¸¦ »ç¿ëÇϽʽÿÀ (À½¼ö¸¦ Ãß°¡ÇÏ¸é »¬¼ÀÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù).
+

+ +
+ +

³íÆò

+

ÀÌ ¸í·É¾î´Â ´ÙÀ½ ´ÜÃà ½ºÅ¸ÀÏ°ú µ¿µîÇÕ´Ï´Ù: Var -= Value.

+

+º¯¼ö¸¦ 1 ¸¸Å­¾¿ ´Ã¸®°í ÁÙÀÌ·Á¸é Var++, Var--, ++Var, ¶Ç´Â --Var¸¦ »ç¿ëÇϽʽÿÀ.

+

+Var ¶Ç´Â Value°¡ ºñ¾î Àְųª ¼ýÀÚ·Î ½ÃÀÛÇÏÁö ¾ÊÀ¸¸é, °è»êÀ» À§ÇÑ ¸ñÀûÀ¸·Î 0À¸·Î Ãë±ÞµË´Ï´Ù (³»ºÎÀûÀ¸·Î Ç¥Çö½Ä¿¡ »ç¿ëÇÒ ¶§ ±×¸®°í TimeUnits ¸Å°³º¯¼ö¸¦ »ç¿ëÇÒ ¶§´Â ¿¹¿ÜÀÔ´Ï´Ù).

+

+Var ¶Ç´Â Value¿¡ ¼Ò¼öÁ¡ÀÌ µé¾î ÀÖÀ¸¸é, °á°ú´Â ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀÔ´Ï´Ù. Çü½ÄÀº SetFormat¿¡ ÀÇÇØ °áÁ¤µË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+EnvAdd, EnvMult, EnvDiv, SetFormat, Ç¥Çö½Ä, If var is [not] type, SetEnv, FileGetTime

+ +

¿¹Á¦

+
EnvSub, MyCount, 2
+MyCount -= 2  ; À§¿Í µ¿µîÇÕ´Ï´Ù
+
+var1 = 20050126
+var2 = 20040126
+EnvSub, var1, %var2%, days
+MsgBox, %var1%  ; ´äÀº 366ÀÌ µË´Ï´Ù. ¿Ö³ÄÇϸé 2004³âÀº À±³âÀ̱⠶§¹®ÀÔ´Ï´Ù.
+ + + diff --git a/src/docs/commands/EnvUpdate.htm b/src/docs/commands/EnvUpdate.htm new file mode 100644 index 0000000..aed27b7 --- /dev/null +++ b/src/docs/commands/EnvUpdate.htm @@ -0,0 +1,35 @@ + + + + +EnvUpdate + + + + + + + +

EnvUpdate

+ +

OS¿Í ½ÇÇà ÁßÀÎ ¸ðµç ¾îÇÿ¡ ȯ°æ º¯¼ö°¡ º¯Çß´Ù°í °íÁöÇÕ´Ï´Ù.

+ +
EnvUpdate
+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆÐÇÏ¸é ¿¡·¯¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â Runtime Errors¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevel´Â ¹®Á¦°¡ ÀÖÀ¸¸é 1 ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+OS ȯ°æÀ» °»½ÅÇÕ´Ï´Ù. ·Î±×¿ÀÇÁ Çß´Ù°¡ ´Ù½Ã ·Î±×¿Â ÇÑ °Í°ú ºñ½ÁÇÑ È¿°ú°¡ ÀÖ½À´Ï´Ù.

+

+¿¹¸¦ µé¾î, ´ÙÀ½ ·¹Áö½ºÆ®¸® Å°¸¦ º¯°æÇÑ ÈÄ¿¡, EnvUpdate¸¦ »ç¿ëÇÏ¸é º¯°æ »çÇ×À» ¹æ¼ÛÇÒ ¼ö ÀÖ½À´Ï´Ù: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment

+

°ü·Ã Ç׸ñ

+

EnvSet, RegWrite

+

¿¹Á¦

+
EnvUpdate
+ + + diff --git a/src/docs/commands/Exit.htm b/src/docs/commands/Exit.htm new file mode 100644 index 0000000..303368c --- /dev/null +++ b/src/docs/commands/Exit.htm @@ -0,0 +1,50 @@ + + + + +Exit + + + + + + + +

Exit

+ +

+ÇöÀç ¾²·¹µå¸¦ Á¾·áÇÕ´Ï´Ù. ¶Ç´Â (½ºÅ©¸³Æ®°¡ ¿µ¼ÓÀûÀÌ ¾Æ´Ï°í ÇÖÅ°°¡ Æ÷ÇԵǾî ÀÖÁö ¾ÊÀ¸¸é) Àüü ½ºÅ©¸³Æ®¸¦ Á¾·áÇÕ´Ï´Ù.

+ +
Exit [, ExitCode]
+

¸Å°³º¯¼ö

+
+ +
ExitCode
+

½ºÅ©¸³Æ®°¡ Á¾·áÇÒ ¶§ È£ÃâÀڷκÎÅÍ ¹ÝȯµÈ -2147483648ºÎÅÍ 2147483647 »çÀÌÀÇ Á¤¼ö (Ç¥Çö½Ä °¡´É). ÀÌ ÄÚµå´Â ±× ½ºÅ©¸³Æ®¸¦ ºÎÈ­ÇÑ ¾î¶² ÇÁ·Î±×·¥µµ ¿¹¸¦ µé¾î, ¶Ç´Ù¸¥ ½ºÅ©¸³Æ® (RunWait¸¦ ÅëÇÏ¿©) ¶Ç´Â ¹èÄ¡ ÆÄÀÏ (.bat)µµ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù.. + »ý·«µÇ¸é, ExitCode´Â 0ÀÌ ±âº»°ªÀÔ´Ï´Ù. 0Àº ÀüÅëÀûÀ¸·Î ¼º°øÀ» ³ªÅ¸³»´Â µ¥ »ç¿ëµË´Ï´Ù.

+ +
+ +

³íÆò

+

+½ºÅ©¸³Æ®¿¡ ÇÖÅ°°¡ ¾ø´Ù¸é, ±×¸®°í ¿µ¼ÓÀûÀÌ ¾Æ´Ï¶ó¸é, ±×¸®°í Num/Scroll/CapsLock Å°¸¦ AlwaysOn ¶Ç´Â AlwaysOff »óŸ¦ À¯ÁöÇϵµ·Ï ¿ä±¸ÇÏÁö ¾Ê¾Ò´Ù¸é, ExitÀ» ¸¸³ª¸é ±× Áï½Ã Á¾·áÇÕ´Ï´Ù (´Ü, OnExit ¼­ºê·çƾÀÌ ÀÖ´Ù¸é ¿¹¿ÜÀÔ´Ï´Ù).

+

+±×·¸Áö ¾ÊÀ¸¸é, Exit ¸í·É¾î´Â ÇöÀç ¾²·¹µå¸¦ Á¾·áÇÕ´Ï´Ù. ´Ù¸¥ ¸»·Î, ¸Þ´º³ª ŸÀÌ¸Ó ¶Ç´Â ÇÖÅ° ¼­ºê·çƾÀ¸·ÎºÎÅÍ Á÷Á¢ °£Á¢ÀûÀ¸·Î È£ÃâµÈ ¼­ºê·çƾÀÇ ½ºÅÃÀº ¸¶Ä¡ °¢°¢ ReturnÀ» ¸¸³­ °Íó·³ ¸ðµÎ ÇѲ¨¹ø¿¡ ¹ÝȯµË´Ï´Ù. ExitÀÌ ±×·± ¼­ºê·çƾ ¾È¿¡¼­ Á÷Á¢ »ç¿ëµÇ¸é -- ÀÚ½ÅÀÌ °£Á¢ÀûÀ¸·Î È£ÃâÇÑ ¼­ºê·çƾ ÁßÀÇ Çϳª°¡ ¾Æ´Ï¶ó -- ExitÀº Return°ú µ¿µîÇÕ´Ï´Ù.

+

+ExitApp¸¦ »ç¿ëÇÏ¸é ¿µ¼ÓÀûÀ̰ųª ÇÖÅ°°¡ ÀÖ´Â ½ºÅ©¸³Æ®¸¦ ¿ÏÀüÈ÷ Á¾·áÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+ExitApp, OnExit, Functions, Gosub, Return, Threads, #Persistent

+ +

¿¹Á¦

+
#z::
+Gosub, Sub2
+MsgBox, ÀÌ msgbox´Â EXIT ¶§¹®¿¡ Àý´ë ³ªÅ¸³ªÁö ¾Ê½À´Ï´Ù.
+return
+
+Sub2:
+Exit  ; ÀÌ ¼­ºê·çƾ°ú ´õºÒ¾î È£ÃâÇÑ ¼­ºê·çƾÀ» Á¾·áÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/ExitApp.htm b/src/docs/commands/ExitApp.htm new file mode 100644 index 0000000..0b323d7 --- /dev/null +++ b/src/docs/commands/ExitApp.htm @@ -0,0 +1,38 @@ + + + + +ExitApp + + + + + + + +

ExitApp

+ +

½ºÅ©¸³Æ®¸¦ ¹«Á¶°Ç Á¾·áÇÕ´Ï´Ù.

+ +
ExitApp [, ExitCode]
+

¸Å°³º¯¼ö

+
+ +
ExitCode
+

-2147483648ºÎÅÍ 2147483647 »çÀÌÀÇ Á¤¼ö ( v1.0.48.01+¿¡¼­ Ç¥Çö½Ä °¡´É). ÀÌ °ªÀº ½ºÅ©¸³Æ®°¡ Á¾·áÇÒ È£ÃâÀÚ¿¡°Ô ¹ÝȯµË´Ï´Ù. ÀÌ ÄÚµå´Â ½ºÅ©¸³Æ®¸¦ ºÎÈ­½ÃŲ ¾î´À ÇÁ·Î±×·¥µµ Á¢±ÞÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î (RunWait¸¦ ÅëÇÑ) ½ºÅ©¸³Æ® ¶Ç´Â ¹èÄ¡ ÆÄÀÏ(.bat). »ý·«Çϸé, ExitCode´Â ±âº»°ªÀ¸·Î 0ÀÌ ¼³Á¤µË´Ï´Ù. ÀüÅëÀûÀ¸·Î 0Àº ¼º°øÀ» ³ªÅ¸³»´Â µ¥ »ç¿ëµË´Ï´Ù.

+ +
+ +

³íÆò

+

½ºÅ©¸³Æ®´Â Áï½Ã Á¾·áÇÕ´Ï´Ù. OnExit ¼­ºê·çƾÀÌ ÀÖ´Â °æ¿ì´Â Á¦¿ÜÀÔ´Ï´Ù. ÀÌ´Â ½ºÅ©¸³Æ®ÀÇ Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ̳ª ¸ÞÀÎ ¸Þ´º¿¡¼­ "Exit"¸¦ ¼±ÅÃÇÑ °Í°ú µ¿µîÇÕ´Ï´Ù.

+

Exit ±×¸®°í ExitApp´Â ½ºÅ©¸³Æ®¿¡ ÇÖÅ°°¡ ¾ø°í, ½ºÅ©¸³Æ®°¡ ¿µ±¸ÀûÀÌ ¾Æ´Ï¸ç, ±×¸®°í Num/Scroll/Capslock Å°°¡ Ç×»ó AlwaysOn ¶Ç´Â AlwaysOff¸¦ À¯ÁöÇϱ⸦ ¿äûÇÏÁö ¾Ê´Â °æ¿ì´Â ÇàÀ§°¡ µ¿ÀÏÇÕ´Ï´Ù.

+

+½ºÅ©¸³Æ®¿¡ OnExit ¼­ºê·çƾÀÌ ÀÖ´Ù¸é, ExitApp¿¡ ÀÀ´äÇÏ¿© ½ÇÇàµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

Exit, OnExit, #Persistent

+

¿¹Á¦

+
#x::ExitApp  ; ÀÌ ½ºÅ©¸³Æ®¸¦ Á¾·áÇÒ ÇÖÅ°¸¦ ÇÒ´çÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/FileAppend.htm b/src/docs/commands/FileAppend.htm new file mode 100644 index 0000000..f07d513 --- /dev/null +++ b/src/docs/commands/FileAppend.htm @@ -0,0 +1,106 @@ + + + + +FileAppend + + + + + + + +

FileAppend

+ +

ÅؽºÆ®¸¦ ÆÄÀÏ ³¡¿¡ ¾¹´Ï´Ù (ÇÊ¿äÇÏ¸é ¸ÕÀú ÆÄÀÏÀ» »ý¼ºÇÕ´Ï´Ù).

+ +
FileAppend [, Text, Filename, Encoding]
+

¸Å°³º¯¼ö

+
+ +
Text
+

ÆÄÀÏ¿¡ Ãß°¡ÇÒ ÅؽºÆ®. ÀÌ ÅؽºÆ®´Â ¶óÀÎÇÇµå ¹®ÀÚ (`n)¸¦ Æ÷ÇÔÇØ »õÁÙÀ» ½ÃÀÛÇÒ ¼öµµ ÀÖ½À´Ï´Ù. °Ô´Ù°¡, ±â´Ù¶õ ÇÑÁÙÀº °è¼Ó ¼½¼ÇÀ» ÀÌ¿ëÇÏ¿© ´õ ªÀº ¿©·¯ ÁÙ·Î ºÐ¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ Text°¡ ºñ¾î ÀÖÀ¸¸é, FilenameÀÌ Àӽà ÆÄÀÏ·Î »ý¼ºµË´Ï´Ù (±×·¯³ª ±× ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇϸé, ±×ÀÇ ¼öÁ¤ ½Ã°£ÀÌ °»½ÅµË´Ï´Ù).

+

+ Text°¡ %ClipboardAll%À̰ųª ÀÌÀü¿¡ ClipboardAllÀÇ °ªÀÌ ÇÒ´çµÈ º¯¼ö¶ó¸é, FilenameÀº ¹«Á¶°Ç ±× Ŭ¸³º¸µåÀÇ Àüü ³»¿ëÀ¸·Î µ¤¾î¾²±â µË´Ï´Ù (Áï, FileDelete°¡ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù).

+ +
Filename
+
+

Ãß°¡µÉ ÆÄÀÏÀÇ À̸§. Àý´ë °æ·Î°¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ.

+

+ ÀÌÁø ¸ðµå: ÅؽºÆ® ¸ðµå°¡ ¾Æ´Ï¶ó ÀÌÁø ¸ðµå·Î Ãß°¡ÇÏ·Á¸é, º°Ç¥¸¦ ÆÄÀÏÀ̸§ ¾Õ¿¡ Ãß°¡ÇϽʽÿÀ. ÀÌ·¸°Ô ÇÏ¸é °¢ ¶óÀÎÇÇµå ¹®ÀÚ (`n)°¡ À©µµ¿ìÁîÀÇ Ç¥ÁØ CR+LF ´ë½Å¿¡ ÇÑ°³Â¥¸® ¶óÀÎÇǵå (LF)°¡ ¾º¿©Áý´Ï´Ù. ¿¹¸¦ µé¾î: *C:\My Unix File.txt.

+

+ ÆÄÀÏÀÌ (ÆÄÀÏ-Àбâ ȸµ¹ÀÌ ¾È¿¡ À־) ¾ÆÁ÷ ¿­·Á ÀÖÁö ¾ÊÀº °æ¿ì, Text¿¡ ij¸®Áö ¸®ÅÏ°ú ¶óÀÎÇǵ尡 ½ÖÀ¸·Î µé¾î ÀÖ´Ù¸é (`r`n) ±× ÆÄÀÏÀº ÀÚµ¿À¸·Î ÀÌÁø ¸ðµå·Î ¿­¸³´Ï´Ù. ´Ù¸¥ ¸»·Î, ¾Õ ¹®´Ü¿¡¼­ ±â¼úÇÑ º°Ç¥ ¿É¼ÇÀÌ ÀÚµ¿À¸·Î È¿·ÂÀ» ¹ßÈÖÇÕ´Ï´Ù. ±×·¸Áö¸¸ Text¿¡ `r`n°¡ µé¾î ÀÖÀ» ¶§ º°Ç¥¸¦ ÁöÁ¤ÇÏ¸é ¼öÇ༺´ÉÀÌ Çâ»óµË´Ï´Ù. ¿Ö³ÄÇϸé ÇÁ·Î±×·¥ÀÌ Text¸¦ ½ºÄµÇØ `r`nÀ» ãÀ» ÇÊ¿ä°¡ ¾ø±â ¶§¹®ÀÔ´Ï´Ù.

+

+ Ç¥ÁØ Ãâ·Â (stdout): º°Ç¥ (*)¸¦ Filename¿¡ ÁöÁ¤Çϸé Text´Â Ç¥ÁØ Ãâ·Â (stdout)À¸·Î Àü¼ÛµË´Ï´Ù. ±×·± ÅؽºÆ®´Â ÆÄÀÏ¿¡ ¹æÇâÀüȯÇÒ ¼ö ÀÖ°í, ¶Ç´Ù¸¥ EXE·Î ÆÄÀÌÇÁ ó¸®ÇØ º¸³¾ ¼ö ÀÖÀ¸¸ç, ¶Ç´Â ȯ»óÀûÀÎ ÆíÁý±â·Î ³ªÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½Àº ¸í·É¾î ÇÁ·ÒÇÁÆ®¿¡¼­ ŸÀÚÇϸé À¯È¿ÇÕ´Ï´Ù:

+
"%ProgramFiles%\AutoHotkey\AutoHotkey.exe" "My Script.ahk" >"Error Log.txt"
+

+ ±×·¸Áö¸¸, Ç¥ÁØÃâ·ÂÀ¸·Î Àü¼ÛµÈ ÅؽºÆ®´Â óÀ½ ±âµ¿µÈ ÇÁ·ÒÇÁÆ®¿¡ ³ªÅ¸³ªÁö ¾Ê½À´Ï´Ù. ÀÌ ¹®Á¦´Â ½ºÅ©¸³Æ®ÀÇ Ãâ·ÂÀ» ¶Ç´Ù¸¥ ¸í·É¾î³ª ÇÁ·Î±×·¥¿¡ ÆÄÀÌÇÁ ó¸®ÇØ ¿ìȸÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
"%ProgramFiles%\AutoHotkey\AutoHotkey.exe" "My Script.ahk" |more
+
For /F "tokens=*" %L in ('""%ProgramFiles%\AutoHotkey\AutoHotkey.exe" "My Script .ahk""') do @Echo %L
+

[v1.1.20+]: º°Ç¥ µÎ °³ (**)¸¦ Filename¿¡ ÁöÁ¤Çϸé Text°¡ Ç¥ÁØ¿¡·¯(stderr) ½ºÆ®¸²À¸·Î Àü¼ÛµË´Ï´Ù.

+
+ +
ÀÎÄÚµù
+

[AHK_L 42+]: FileEncodingÀ¸·Î ¼³Á¤µÈ ±âº» ÀÎÄÚµùÀ» ¿À¹ö¶óÀ̵å ÇÕ´Ï´Ù. EncodingÀº °°Àº Çü½ÄÀ» µû¸¨´Ï´Ù.

+ +
+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevel´Â ¹®Á¦°¡ ÀÖÀ¸¸é 1 ¾øÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

A_LastError´Â ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú°¡ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+±âÁ¸ÀÇ ÆÄÀÏÀ» µ¤¾î¾²·Á¸é, FileAppend¸¦ »ç¿ëÇϱâ Àü¿¡ FileDelete·Î Áö¿ì½Ê½Ã¿À.

+

+¸ñÇ¥ ÆÄÀÏÀº ÅؽºÆ®°¡ Ãß°¡µÈ ÈÄ ÀÚµ¿À¸·Î ´ÝÈü´Ï´Ù (´Ü, FileAppend°¡ ÆÄÀÏ-Àбâ/¾²±â ȸµ¹ÀÌ ¾È¿¡¼­ ´ÜÀÏ-¸Å°³º¯¼ö ¸ðµå¸¦ »ç¿ëÇÒ ¶§´Â ¿¹¿ÜÀÔ´Ï´Ù).

+

+[AHK_L 42+]: FileOpen()À» Ãß°¡ ¸ðµå·Î »ç¿ëÇÏ´Â °ÍÀÌ FileAppendº¸´Ù ´õ ¼¶¼¼ÇÏ°Ô Á¦¾îÇÒ ¼ö ÀÖ°í °è¼Ó ÆÄÀÏÀ» ¿­¾î µÑ ¼öµµ ÀÖ½À´Ï´Ù. ¸Å¹ø ÆÄÀÏÀ» ¿­°í ´ÝÀ» ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ÀÏ´Ü ÆÄÀÏÀÌ Ãß°¡ ¸ðµå·Î ¿­¸®¸é file.Write(string)¸¦ »ç¿ëÇØ Ãß°¡ÇÏ¸é µË´Ï´Ù. ÆÄÀÏ °´Ã¼´Â RawWrite/RawRead ¶Ç´Â WriteNum/ReadNum¸¦ ÅëÇÏ¿© ÀÌÁø I/Oµµ Áö¿øÇÕ´Ï´Ù. ¹Ý¸é¿¡ FileAppend´Â ¿ÀÁ÷ ÅؽºÆ®¸¸ Áö¿øÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+FileOpen/File Object, FileRead, file-reading loop, FileReadLine, IniWrite, FileDelete, OutputDebug, °è¼Ó ¼½¼Ç

+ +

¿¹Á¦

+
FileAppend, Another line.`n, C:\My Documents\Test.txt
+
+; ´ÙÀ½ ¿¹Á¦´Â °è¼Ó ¼½¼ÇÀ» »ç¿ëÇØ °¡µ¶¼º°ú À¯Áö°ü¸®¼ºÀ» Çâ»ó½Ãŵ´Ï´Ù:
+FileAppend,
+(
+ÇÑ ÁÙÀÇ ÅؽºÆ®.
+±âº»À¸·Î, ÀÌÀü ÁÙ°ú ÀÌ ÁÙ »çÀÌÀÇ Çϵå ij¸®Áö ¸®ÅÏÀº (Enter) ÆÄÀÏ¿¡ ¾²¿©Áý´Ï´Ù.
+    ÀÌ ÁÙÀº ÅÇ Çϳª·Î µé¿©¾²±â µË´Ï´Ù; ±âº»À¸·Î, Åǵµ ÆÄÀÏ¿¡ ¾º¿©Áý´Ï´Ù.
+%Var%¿Í °°Àº º¯¼ö ÂüÁ¶´Â ±âº»À¸·Î È®ÀåµË´Ï´Ù.
+), C:\My File.txt
+

 

+
; ´ÙÀ½ ¿¹Á¦´Â ¿î¿µ üÁ¦ÀÇ ³»Àå FTP ¸í·É¾î¸¦ »ç¿ëÇÏ¿© 
+; FTP ¾÷·Îµå¸¦ ÀÚµ¿È­ ÇÏ´Â ¹ýÀ» º¸¿©ÁÝ´Ï´Ù. ÀÌ ½ºÅ©¸³Æ®´Â Windows XP¿¡¼­ °ËÁõµÇ¾ú½À´Ï´Ù.
+
+FTPCommandFile = %A_ScriptDir%\FTPCommands.txt
+FTPLogFile = %A_ScriptDir%\FTPLog.txt
+FileDelete %FTPCommandFile%  ; ÀÌÀü ½ÇÇàÀÌ ³Ê¹« ÀÏÂï ³¡³µÀ» °æ¿ì.
+
+FileAppend,  ; ÀÌ °æ¿ì ½°Ç¥°¡ ÇÊ¿äÇÕ´Ï´Ù.
+(
+open host.domain.com
+username
+password
+binary
+cd htdocs
+put %VarContainingNameOfTargetFile%
+delete SomeOtherFile.htm
+rename OldFileName.htm NewFileName.htm
+ls -l
+quit
+), %FTPCommandFile%
+
+RunWait %comspec% /c ftp.exe -s:"%FTPCommandFile%" >"%FTPLogFile%"
+FileDelete %FTPCommandFile%  ; º¸¾È»óÀÇ ÀÌÀ¯·Î »èÁ¦ÇÕ´Ï´Ù.
+Run %FTPLogFile%  ; °ËÅ並 À§ÇØ ·Î±× ±â·ÏÀ» º¸¿©ÁÝ´Ï´Ù.
+ + + diff --git a/src/docs/commands/FileCopy.htm b/src/docs/commands/FileCopy.htm new file mode 100644 index 0000000..28c105a --- /dev/null +++ b/src/docs/commands/FileCopy.htm @@ -0,0 +1,89 @@ + + + + +FileCopy + + + + + + + +

FileCopy

+ +

ÆÄÀÏÀ» º¹»çÇÕ´Ï´Ù.

+ +
FileCopy, SourcePattern, DestPattern [, Flag]
+

¸Å°³º¯¼ö

+
+ +
SourcePattern
+

´ÜÀÏ ÆÄÀÏÀ̳ª Æú´õ ¶Ç´Â C:\Temp\*.tmp °°À¸ ¿ÍÀϵå Ä«µå ÆÐÅÏ. + SourcePatternÀº ÀýÀç °æ·Î°¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ.

+ +
DestPattern
+
+ ¸ñÇ¥ÀÇ À̸§À̳ª ÆÐÅÏ, Àý´ë °æ·Î°¡ ÁöÁ¤µÇÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ. °£´ÜÇÑ º¹»ç¸¦ ¼öÇàÇÏ·Á¸é -- ±âÁ¸ÀÇ ÆÄÀÏÀ̸§Àº ±×´ë·Î µÎ°í -- Æú´õ À̸§¸¸ ÁöÁ¤ÇϽʽÿÀ. ´ÙÀ½¿¡ º¸¿©ÁÖ´Â ¿¹Á¦´Â ±â´É»ó µ¿µîÇÕ´Ï´Ù:
+
FileCopy, C:\*.txt, C:\My Folder
+
FileCopy, C:\*.txt, C:\My Folder\*.*
+
+ +
Flag
+

(¼±ÅÃÀû) ÀÌ Ç÷¡±×´Â ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÏ¸é µ¤¾î¾µÁö ¸»Áö °áÁ¤ÇÕ´Ï´Ù:

+

0 = (±âº»°ª) ±âÁ¸ÀÇ ÆÄÀÏÀ» µ¤¾î¾²Áö ¾Ê½À´Ï´Ù
+ 1 = ±âÁ¸ÀÇ ÆÄÀÏÀ» µ¤¾î ¾¹´Ï´Ù

+

ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù. ½ÉÁö¾î ÂüÀ̳ª °ÅÁþÀ¸·Î Æò°¡µÇ´Â °ÍÀÌ¸é ¹«¾ùÀÌµç °¡´ÉÇÕ´Ï´Ù (¿Ö³ÄÇÏ¸é ³»ºÎÀûÀ¸·Î ÂüÀº 1 °ÅÁþÀº 0À¸·Î ÀúÀåµÇ±â ¶§¹®ÀÔ´Ï´Ù).

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevel´Â ¿¡·¯ ¶§¹®¿¡ º¹»ç¿¡ ½ÇÆÐÇÑ ÆÄÀÏÀÇ °³¼ö°¡ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

+¾î´À °æ¿ìµç, ¼Ò½º ÆÄÀÏÀÌ ´ÜÀÏ ÆÄÀÏÀÌ°í (¿ÍÀϵåÄ«µå ¾øÀ½) ±×¸®°í ±× ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ErrorLevelÀº 0À¸·Î ¼³Á¤µË´Ï´Ù. ÀÌ »óȲÀ» ŽÁöÇÏ·Á¸é, º¹»çÇϱâ Àü¿¡ IfExist ¶Ç´Â FileExist()¸¦ ¼Ò½º ÆÄÀÏ¿¡ »ç¿ëÇϽʽÿÀ.

+

+FileMove¿Í ´Ù¸£°Ô, ÆÄÀÏÀ» ÀÚ±â Àڽſ¡ º¹»çÇÏ´Â °ÍÀº ¾ðÁ¦³ª ¿¡·¯·Î °£Áֵ˴ϴÙ. µ¤¾î¾²±â ¸ðµå°¡ ÄÑÁ® À־ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.

+

+ÆÄÀÏÀÌ ¹ß°ßµÇ¸é, A_LastError´Â 0 (0) ¶Ç´Â ¸¶Áö¸· ½ÇÆÐ ÈÄ¿¡ °ð¹Ù·Î ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú°¡ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é A_LastError¿¡´Â ¿Ö ÆÄÀÏÀÌ ¹ß°ßµÇÁö ¾Ê¾Ò´ÂÁö ¾Ë·ÁÁÖ´Â ¿¡·¯ Äڵ尡 ´ã±é´Ï´Ù.

+ +

³íÆò

+

+FileCopy´Â ÆÄÀϸ¸ º¹»çÇÕ´Ï´Ù. ´ë½Å Æú´õÀÇ ³»¿ëÀ» (±×ÀÇ ¸ðµç ÆÄÀÏ°ú ÇÏÀ§ Æú´õ) º¹»çÇÏ·Á¸é, ¾Æ·¡ ¼½¼ÇÀÇ ¿¹Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ. ´ÜÀÏ Æú´õ (ÇÏÀ§ Æú´õ Æ÷ÇÔ)¸¦ º¹»çÇÏ·Á¸é, FileCopyDirÀ» »ç¿ëÇϽʽÿÀ.

+

+¿¡·¯¸¦ ¸¸³ªµµ ¿¬»êÀº ¸ØÃßÁö ¾Ê½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+FileMove, FileCopyDir, FileMoveDir, FileDelete

+ +

¿¹Á¦

+
FileCopy, C:\My Documents\List1.txt, D:\Main Backup\  ; »çº»À» ¸¸µéÁö¸¸ ¿øº»ÀÇ ÆÄÀÏ À̸§À» À¯ÁöÇÕ´Ï´Ù.
+FileCopy, C:\My File.txt, C:\My File New.txt  ; ÆÄÀÏ¿¡ »õ À̸§À» ÁÖ°í, °°Àº Æú´õ ¾ÈÀ¸·Î º¹»çÇÕ´Ï´Ù.
+FileCopy, C:\Folder1\*.txt, D:\New Folder\*.bkp  ; »õ À§Ä¡¿¡ º¹»çÇÏ°í »õ È®ÀåÀÚ¸¦ ºÎ¿©ÇÕ´Ï´Ù.
+

 

+
; ´ÙÀ½ ¿¹Á¦´Â ÇÑ Æú´õ ¾ÈÀÇ ¸ðµç ÆÄÀÏ°ú ÇÏÀ§ Æú´õ¸¦ ´Ù¸¥ Æú´õ·Î º¹»ç ÇÕ´Ï´Ù:
+ErrorCount := CopyFilesAndFolders("C:\My Folder\*.*", "D:\Folder to receive all files & folders")
+if ErrorCount <> 0
+    MsgBox %ErrorCount% files/folders could not be copied.
+
+CopyFilesAndFolders(SourcePattern, DestinationFolder, DoOverwrite = false)
+; SourcePattern¿¡ ºÎÇÕÇÏ´Â ¸ðµç ÆÄÀÏ°ú Æú´õ¸¦ DestinationFolderÀ̶ó´Â À̸§ÀÇ Æú´õ¿¡ º¹»çÇÏ°í
+; º¹»çÇÒ ¼ö ¾ø¾ú´ø ÆÄÀÏ/Æú´õÀÇ °³¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.
+{
+    ; ¸ÕÀú ¸ðµç ÆÄÀÏÀ» º¹»çÇÕ´Ï´Ù (Æú´õ´Â º¹»çÇÏÁö ¾Ê½À´Ï´Ù):
+    FileCopy, %SourcePattern%, %DestinationFolder%, %DoOverwrite%
+    ErrorCount := ErrorLevel
+    ; ÀÌÁ¦ ¸ðµç Æú´õ¸¦ º¹»çÇÕ´Ï´Ù:
+    Loop, %SourcePattern%, 2  ; 2ÀÇ ¶æÀº "Æú´õ¸¸ ¿­¶÷ÇÑ´Ù"´Â ¶æÀÔ´Ï´Ù.
+    {
+        FileCopyDir, %A_LoopFileFullPath%, %DestinationFolder%\%A_LoopFileName%, %DoOverwrite%
+        ErrorCount += ErrorLevel
+        if ErrorLevel  ; ¹®Á¦ÀÇ Æú´õ¸¦ À̸§À¸·Î º¸°íÇÕ´Ï´Ù.
+            MsgBox Could not copy %A_LoopFileFullPath% into %DestinationFolder%.
+    }
+    return ErrorCount
+}
+ + + diff --git a/src/docs/commands/FileCopyDir.htm b/src/docs/commands/FileCopyDir.htm new file mode 100644 index 0000000..980ad0c --- /dev/null +++ b/src/docs/commands/FileCopyDir.htm @@ -0,0 +1,73 @@ + + + + +FileCopyDir + + + + + + + +

FileCopyDir

+ +

Æú´õ¸¦ ±×ÀÇ ¸ðµç ÇÏÀ§ Æú´õ¿Í ÆÄÀÏ°ú ÇÔ²² º¹»çÇÕ´Ï´Ù (xcopy¿Í ºñ½ÁÇÔ).

+ +
FileCopyDir, Source, Dest [, Flag]
+

¸Åº¯º¯¼ö

+
+ +
Source
+

¼Ò½º µð·ºÅ丮ÀÇ À̸§ (µÚ¿¡ ¿ª»ç¼± ¾øÀ½), Àý´ë °æ·Î°¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ. ¿¹¸¦ µé¾î: C:\My Folder

+ +
Dest
+

¸ñÇ¥ µð·ºÅ丮ÀÇ À̸§ (µÚ¿¡ ¿ª»ç¼± ¾øÀ½), Àý´ë °æ·Î°¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ. ¿¹¸¦ µé¾î: C:\My Folder

+ +
Flag
+

(¼±ÅÃÀû) ÀÌ ¸Å°³º¯¼ö´Â ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÏ¸é µ¤¾î¾µÁö ¸»Áö °áÁ¤ÇÕ´Ï´Ù:

+

0 (±âº»°ª): ±âÁ¸ÀÇ ÆÄÀÏÀ» µ¤¾î¾²Áö ¾Ê½À´Ï´Ù. Dest°¡ ÀÌ¹Ì ÆÄÀÏÀ̳ª Æú´õ·Î Á¸ÀçÇÏ¸é ¿¬»êÀº ½ÇÆÐÇÏ°í ¾Æ¹« È¿°úµµ ¾ø½À´Ï´Ù.

+

1: ±âÁ¸ÀÇ ÆÄÀÏÀ» µ¤¾î¾¹´Ï´Ù. ±×·¸Áö¸¸, Dest ¾ÈÀÇ ÆÄÀÏÀ̳ª Æú´õ°¡ Source ¾È¿¡ ÇØ´çÇϴ ¦ÀÌ ¾øÀ¸¸é »èÁ¦µÇÁö ¾Ê½À´Ï´Ù.

+

ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù. ½ÉÁö¾î °ÅÁþÀ̳ª ÂüÀ¸·Î Æò°¡µÇ¸é ¹«¾ùÀÌµç µÉ ¼ö ÀÖ½À´Ï´Ù (Âü°ú °ÅÁþÀº ³»ºÎÀûÀ¸·Î 1°ú 0À¸·Î ÀúÀåµÇ±â ¶§¹®ÀÔ´Ï´Ù).

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1 ¾øÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù. ±×·¸Áö¸¸, ¼Ò½º µð·ºÅ丮¿¡ ÀúÀåµÈ À¥ ÆäÀÌÁö°¡ PageName.htm ÆÄÀÏ°ú ±×¿¡ »óÀÀÇÏ´Â µð·ºÅ丮 À̸§ PageName_files·Î ±¸¼ºµÇ¾î ÀÖ´Ù¸é, º¹»ç°¡ ¼º°øÀûÀ̾ú´Ù ÇÒÁö¶óµµ ¿¡·¯°¡ ³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù..

+ +

³íÆò

+

+¸ñÇ¥ µð·ºÅ丮 ±¸Á¶°¡ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì, °¡´ÉÇÏ¸é »ý¼ºÇÕ´Ï´Ù.

+

+Æú´õ¿Í ´õºÒ¾î ±×ÀÇ ¸ðµç ÇÏÀ§ Æú´õ¸¦ Àç±ÍÀûÀ¸·Î º¹»çÇϱ⠶§¹®¿¡, Æú´õ¸¦ ÀÚ±â ÀڽŠ¾ÈÀÇ ÇÑ Æú´õ ¾È¿¡ º¹»çÇÑ °á°ú´Â Á¤ÀǵǾî ÀÖÁö ¾Ê½À´Ï´Ù. À̸¦ ¿ìȸÇÏ·Á¸é, ¸ÕÀú ÀÚ±â ÀڽŠ¹Ù±ù¿¡´Ù º¹»çÇÑ ´ÙÀ½, FileMoveDir¸¦ »ç¿ëÇÏ¿© ¿øÇÏ´Â À§Ä¡·Î À̵¿ÇϽʽÿÀ.

+

+FileCopyDirÀº ´ÜÀÏ Æú´õ¸¦ º¹»çÇÕ´Ï´Ù. ´ë½Å Æú´õÀÇ ³»¿ëÀ» (±×ÀÇ ¸ðµç ÆÄÀÏ°ú Æú´õ) º¹»çÇÏ·Á¸é, FileCopy ¼½¼ÇÀÇ ¿¹Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

+FileMoveDir, FileCopy, FileMove, FileDelete, file-loops, FileSelectFolder, SplitPath

+ +

¿¹Á¦

+
FileCopyDir, C:\My Folder, C:\Copy of My Folder
+
+; ¿¹Á¦ #2: Æú´õ¸¦ º¹»çÇÒÁö ¹°¾îº¸´Â ½ºÅ©¸³Æ®.
+FileSelectFolder, SourceFolder, , 3, º¹»çÇÒ Æú´õ¸¦ ¼±ÅÃÇϽʽÿÀ
+if SourceFolder =
+    return
+; ±×·¸Áö ¾ÊÀ¸¸é, °è¼Ó ÁøÇàÇÕ´Ï´Ù.
+FileSelectFolder, TargetFolder, , 3, º¹Á¦ Æú´õ¸¦ »ý¼ºÇÒ Æú´õ¸¦ ¼±ÅÃÇϽʽÿÀ.
+if TargetFolder =
+    return
+; ±×·¸Áö ¾ÊÀ¸¸é, °è¼Ó ÁøÇàÇÕ´Ï´Ù.
+MsgBox, 4, , "%SourceFolder%" Æú´õÀÇ »çº»ÀÌ "%TargetFolder%"À¸·Î µé¾î°©´Ï´Ù.  °è¼ÓÇÒ±î¿ä?
+IfMsgBox, No
+    return
+SplitPath, SourceFolder, SourceFolderName  ; ±×ÀÇ Àüü °æ·Î¿¡¼­ Æú´õ À̸§¸¸ ÃßÃâÇÕ´Ï´Ù.
+FileCopyDir, %SourceFolder%, %TargetFolder%\%SourceFolderName%
+if ErrorLevel
+    MsgBox Æú´õ¸¦ º¹»çÇÏÁö ¸øÇß½À´Ï´Ù. °°Àº À̸§ÀÇ Æú´õ°¡ ÀÌ¹Ì "%TargetFolder%"¿¡ Á¸ÀçÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.
+return
+ + + diff --git a/src/docs/commands/FileCreateDir.htm b/src/docs/commands/FileCreateDir.htm new file mode 100644 index 0000000..53db697 --- /dev/null +++ b/src/docs/commands/FileCreateDir.htm @@ -0,0 +1,40 @@ + + + + +FileCreateDir + + + + + + + +

FileCreateDir

+ +

µð·ºÅ丮/Æú´õ¸¦ ¸¸µì´Ï´Ù.

+ +
FileCreateDir, DirName
+ +

¸Å°³º¯¼ö

+
+ +
DirName
+

»ý¼ºÇÒ µð·ºÅ丮 À̸§. Àý´ë °æ·Î°¡ ÁöÁ¤µÇÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ.

+ +
+

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇÕ´Ï´Ù.

+

ErrorLevel´Â ¹®Á¦°¡ ÀÖÀ¸¸é 1 ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

A_LastError´Â ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú¿¡ ¼³Á¤µË´Ï´Ù.

+

°ü·Ã Ç׸ñ

+ÀÌ ¸í·É¾î´Â ¶Ç ¾ÆÁ÷ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é DirName¿¡ ÁÖ¾îÁø ¸ðµç ºÎ¸ð µð·ºÅ丮¸¦ »ý¼ºÇÕ´Ï´Ù. + +

°ü·Ã Ç׸ñ

+

FileRemoveDir

+

¿¹Á¦

+
FileCreateDir, C:\Test1\My Images\Folder2
+ + + diff --git a/src/docs/commands/FileCreateShortcut.htm b/src/docs/commands/FileCreateShortcut.htm new file mode 100644 index 0000000..2a556a2 --- /dev/null +++ b/src/docs/commands/FileCreateShortcut.htm @@ -0,0 +1,83 @@ + + + + +FileCreateShortcut + + + + + + + +

FileCreateShortcut

+ +

´ÜÃà ÆÄÀÏÀ» ¸¸µì´Ï´Ù (.lnk).

+ +
FileCreateShortcut, Target, LinkFile [, WorkingDir, Args, Description, IconFile, ShortcutKey, IconNumber, RunState]
+

¸Å°³º¯¼ö

+
+ +
Target
+

´ÜÃà ÆÄÀÏÀÌ °¡¸®Å°´Â ÆÄÀÏÀÇ À̸§. Àý´ë °æ·Î°¡ Æ÷ÇԵǾî ÀÖ¾î¾ßÇÕ´Ï´Ù. ½Ã½ºÅÛ¿¡ ÅëÇÕµÈ ÆÄÀÏÀ» ¿¹¿ÜÀÔ´Ï´Ù (¿¹, Notepad.exe). ´ÜÃà ÆÄÀÏÀÌ ¸¸µé¾îÁö´Â ¼ø°£ ÇØ´ç ÆÄÀÏÀÌ Á¸ÀçÇÏ¸é ¾È µË´Ï´Ù; ´Ù¸¥ ¸»·Î, ¹«È¿ÇÑ ¸ñÇ¥¸¦ °¡¸®Å°´Â ´ÜÃà ÆÄÀÏÀÌ »ý¼ºµÉ ¼ö ÀÖ½À´Ï´Ù.

+ +
LinkFile
+

»ý¼ºµÉ ´ÜÃà ÆÄÀÏÀÇ À̸§. Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£ÁÖÇÕ´Ï´Ù. .lnk È®ÀåÀÚ¸¦ ²À Æ÷ÇÔÇϽʽÿÀ. ±× ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÏ¸é µ¤¾î¾²±â µË´Ï´Ù.

+ +
WorkingDir
+

´ÜÃà ÆÄÀÏÀÌ ±âµ¿ÇÒ ¶§ ¸ñÇ¥ÀÇ ÀÛ¾÷ µð·ºÅ丮. ºñ¾î Àְųª »ý·«µÇ¸é, ´ÜÃà ÆÄÀÏÀº "½ÃÀÛ µð·ºÅ丮"°¡ ºñ¾î ÀÖ°í ´ÜÃà ÆÄÀÏÀÌ ±âµ¿ÇÒ ¶§ ½Ã½ºÅÛÀÌ ±âº» ÀÛ¾÷ µð·ºÅ丮¸¦ Á¦°øÇÕ´Ï´Ù.

+ +
Args
+

´ÜÃà ÆÄÀÏÀÌ ±âµ¿ÇÒ ¶§ Target¿¡ °Ç³Ú ¸Å°³º¯¼ö. ¸Å°³º¯¼ö »çÀÌ´Â ½ºÆäÀ̽º·Î ±¸ºÐÇÕ´Ï´Ù. ¸Å°³º¯¼ö¿¡ ½ºÆäÀ̽º°¡ Æ÷ÇԵǾî ÀÖ´Ù¸é, °ãµû¿ÈÇ¥·Î µÑ·¯ ½Î½Ê½Ã¿À.

+ +
Description
+

´ÜÃà ÆÄÀÏÀ» ±â¼úÇÏ´Â ÁÖ¼® (OS°¡ ÅøÆÁ, µîµîÀ» º¸¿© ÁÖ´Â µ¥ »ç¿ëÇÕ´Ï´Ù.)

+ +
IconFile
+

LinkFile¿¡ ´ëÇÏ¿© ¾ÆÀÌÄÜÀÇ À̸§°ú Àüü °æ·Î. ico ÆÄÀÏÀ̰ųª ¾Æ´Ï¸é EXE ¶Ç´Â DLLÀÇ Ã¹ ¹ø° ¾ÆÀÌÄÜÀÔ´Ï´Ù.

+ +
ShortcutKey
+

´ÜÀÏ ±âÈ£, ¼ýÀÚ, ¶Ç´Â Å° ¸®½ºÆ®ÀÇ °¢ Å°ÀÇ À̸§ (¸¶¿ì½º ¹öÆ°°ú ±âŸ ºñ-Ç¥ÁØ Å°´Â Áö¿øÇÏÁö ¾ÊÀ» ¼öµµ ÀÖ½À´Ï´Ù). ¼ö½Ä ½Éº¼À» Æ÷ÇÔ½ÃÅ°Áö ¸¶½Ê½Ã¿À. ÇöÀç, ¸ðµç ´ÜÃà Å°´Â CTRL+ALT ´ÜÃà Å°·Î »ý¼ºµË´Ï´Ù. ¿¹¸¦ µé¾î, ±âÈ£ B°¡ ÀÌ ¸Å°³º¯¼ö¿¡ ÁöÁ¤µÇ¸é, ´ÜÃà Å°´Â CTRL-ALT-B°¡ µË´Ï´Ù.

+ +
IconNumber
+

+ ù ¹ø° ¾ÆÀÌÄÜÀÌ ¾Æ´Ï¶ó IconFile ÆÄÀÏ¿¡¼­ ¾ÆÀÌÄÜÀ» Çϳª »ç¿ëÇÏ·Á¸é, ¿©±â¿¡ ±× ¹øÈ£¸¦ ÁöÁ¤ÇϽʽÿÀ (Ç¥Çö½Ä °¡´É). ¿¹¸¦ µé¾î, 2´Â µÎ ¹ø° ¾ÆÀÌÄÜÀÔ´Ï´Ù.

+ +
RunState
+
+

TargetÀ» ÃÖ´ë ¶Ç´Â ÃÖ¼Ò »óÅ·Π±âµ¿ÇÏ·Á¸é, ´ÙÀ½ ¼ýÀÚ Áß Çϳª¸¦ ÁöÁ¤ÇϽʽÿÀ:

+

1 - Á¤»ó (±âº»°ª)
+3 - ÃÖ´ëÈ­
+7 - ÃÖ¼ÒÈ­

+ +
+

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº ½ÇÇà ½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1 ¾øÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+TargetÀ» Æ÷ÇÔÇÏÁö ¾Ê¾Æµµ µÉ °æ¿ì°¡ ÀÖ½À´Ï´Ù. ¸ñÇ¥ ÆÄÀÏÀÌ ½Ã½ºÅÛÀÇ PATH ȯ°æ º¯¼öÀÇ Æú´õ Áß Çϳª¿¡ Á¸ÀçÇϸé ÁöÁ¤ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù.

+

+»õ·Î »ý¼ºµÈ ´ÜÃà ÆÄÀÏÀÇ ShortcutKey´Â ±× ´ÜÃà ÆÄÀÏÀÌ ½ÃÀÛ ¸Þ´ºÀÇ ¾îµò°¡ ¶Ç´Â ¹ÙÅÁÈ­¸é¿¡ °ÅÁÖÇÏÁö ¾ÊÀ¸¸é ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù. ¿©·¯ºÐÀÌ °í¸¥ ShortcutKey°¡ ÀÌ¹Ì »ç¿ë ÁßÀ̸é, ¿©·¯ºÐÀÇ »õ ´ÜÃà ÆÄÀÏÀÌ ¿ì¼±ÇÕ´Ï´Ù.

+

+URLÀ» °¡¸®Å°´Â ´ÜÃà ÆÄÀÏÀ» »ý¼ºÇÏ´Â ¶Ç´Ù¸¥ ¹æ¹ýÀº ´ÙÀ½ ¿¹Á¦ÀÔ´Ï´Ù. Ưº°ÇÑ URL ´ÜÃà ÆÄÀÏÀ» »ý¼ºÇÕ´Ï´Ù. ¾Õ µÎ°³ÀÇ ¸Å°³º¯¼ö¸¦ ¿©·¯ºÐ ¸¶À½´ë·Î ¹Ù²Ù½Ê½Ã¿À:
+IniWrite, http://www.google.com, C:\My Shortcut.url, InternetShortcut, URL.

+

+´ÙÀ½À» ¼±ÅÃÀûÀ¸·Î Ãß°¡ÇØ À§ÀÇ ¾ÆÀÌÄÜ¿¡ ÇÒ´çÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
IniWrite, <IconFile>, C:\My Shortcut.url, InternetShortcut, IconFile
+IniWrite, 0, C:\My Shortcut.url, InternetShortcut, IconIndex
+

+À§¿¡¼­, 0À» ¾ÆÀÌÄÜÀÇ À妽º·Î ±³Ã¼ÇϽʽÿÀ (0Àº ù ¾ÆÀÌÄÜ¿¡ »ç¿ëµË´Ï´Ù) ±×¸®°í <IconFile>¸¦ URL, EXE, DLL, ¶Ç´Â ICO ÆÄÀÏ·Î ±³Ã¼ÇϽʽÿÀ. ¿¹Á¦: C:\Icons.dll, C:\App.exe, http://www.somedomain.com/ShortcutIcon.ico

+

+.LNK ÆÄÀÏÀÌ ¾Æ´Ï¶ó Æò¹üÇÑ ÅؽºÆ® ÆÄÀÏÀε¥µµ ¿î¿µ üÁ¦´Â À§¿¡¼­ »ý¼ºµÈ .URL ÆÄÀÏÀ» ÁøÂ¥ ´ÜÃà ÆÄÀÏ·Î Ãë±ÞÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

FileGetShortcut, FileAppend

+ +

¿¹Á¦

+
; ¸¶Áö¸· ¸Å°³º¯¼ö¿¡¼­ ±âÈ£ "i"´Â ´ÜÃà Å°¸¦ Ctrl-Alt-I·Î ¸¸µì´Ï´Ù:
+FileCreateShortcut, Notepad.exe, %A_Desktop%\My Shortcut.lnk, C:\, "%A_ScriptFullPath%", My Description, C:\My Icon.ico, i
+ + + diff --git a/src/docs/commands/FileDelete.htm b/src/docs/commands/FileDelete.htm new file mode 100644 index 0000000..8c359c5 --- /dev/null +++ b/src/docs/commands/FileDelete.htm @@ -0,0 +1,45 @@ + + + + +FileDelete + + + + + + + +

FileDelete

+ +

ÆÄÀÏÀ» »èÁ¦ÇÕ´Ï´Ù.

+ +
FileDelete, FilePattern
+

¸Å°³º¯¼ö

+
+ +
FilePattern
+

´ÜÀÏ ÆÄÀÏÀÇ À̸§ ¶Ç´Â C:\Temp\*.tmp°°Àº ¿ÍÀϵåÄ«µå ÆÐÅÏ. FilePatternÀº Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ.

+

Àüü Æú´õ¸¦, ±×ÀÇ ÇÏÀ§ Æú´õ¿Í ÆÄÀÏÀ» Æ÷ÇÔÇÏ¿© ¸ðµÎ »èÁ¦ÇÏ·Á¸é FileRemoveDirÀ» »ç¿ëÇϽʽÿÀ.

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ErrorLevelÀº ½ÇÆÐÇÏ¸é »èÁ¦µÈ ÆÄÀÏÀÇ °³¼ö°¡ ¼³Á¤µÇ°í ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù. *.tmp¿Í °°Àº ¿ÍÀϵåÄ«µå ÆÐÅÏÀ» Áö¿ì¸é ÆÄÀÏÀÌ ÀüÇô ºÎÇÕÇÏÁö ¾Ê´õ¶óµµ ¼º°øÀ¸·Î °£Áֵ˴ϴÙ; ±×·± °æ¿ì ErrorLevelÀº 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

+ÆÄÀÏÀÌ ¹ß°ßµÇ¸é, A_LastError¿¡ 0 (¿µ)ÀÌ ¼³Á¤µÇ°Å³ª ¶Ç´Â ¸¶Áö¸· ½ÇÆÐ Á÷ÈÄ ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú°¡ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é A_LastError¿¡´Â ¿Ö ¾Æ¹« ÆÄÀÏÀÌ ¹ß°ßµÇÁö ¾Ê¾Ò´ÂÁö ¾Ë·ÁÁÖ´Â ¿¡·¯ Äڵ尡 ´ã±é´Ï´Ù.

+ +

³íÆò

+

+Àбâ-Àü¿ë ÆÄÀÏÀ» »èÁ¦ÇÏ·Á¸é, ¸ÕÀú Àбâ-Àü¿ë ¼Ó¼ºÀ» Áö¿ì½Ê½Ã¿À. ¿¹¸¦ µé¾î: FileSetAttrib, -R, C:\My File.txt.

+ +

°ü·Ã Ç׸ñ

+

FileRecycle, FileRemoveDir, FileCopy, FileMove

+ +

¿¹Á¦

+
FileDelete, C:\temp files\*.tmp
+ + + diff --git a/src/docs/commands/FileEncoding.htm b/src/docs/commands/FileEncoding.htm new file mode 100644 index 0000000..2094dbe --- /dev/null +++ b/src/docs/commands/FileEncoding.htm @@ -0,0 +1,34 @@ + + + + +FileEncoding + + + + + + + +

FileEncoding [AHK_L 42+]

+ +

´ÙÀ½ ¸í·É¾î¿¡ ´ëÇÏ¿© ±âº» ÀÎÄÚµùÀ» ¼³Á¤ÇÕ´Ï´Ù: FileRead, FileReadLine, Loop Read, FileAppend, ±×¸®°í FileOpen.

+ +
FileEncoding [, Encoding]
+

ÀÎÄÚµùÀº ´ÙÀ½ °ª Áß ÇϳªÀÔ´Ï´Ù:

+
    +
  • UTF-8: Unicode UTF-8, CP65001°ú µ¿µî.
  • +
  • UTF-16: Unicode UTF-16 ÀÛÀº°ª Á¾·áÇü. CP1200°ú µ¿µî.
  • +
  • UTF-8-RAW ¶Ç´Â UTF-16-RAW: À§¿Í µ¿µî, ±×·¯³ª »õ ÆÄÀÏÀÌ ÀÛ¼ºµÉ ¶§ ¹ÙÀÌÆ® ¼ø¼­ Ç¥½ÄÀ» ¾²Áö ¾Ê½À´Ï´Ù.
  • +
  • CPnnn: ¼ýÄ¡ ½Äº°ÀÚ nnnÀÌ ÀÖ´Â ÄÚµå ÆäÀÌÁö. ÄÚµå ÆäÀÌÁö ½Äº°ÀÚ¸¦ ÂüÁ¶ÇϽʽÿÀ.
  • +
  • ºñ¾î Àְųª »ý·«Çϸé: ½Ã½ºÅÛ ±âº» ANSI ÄÚµå ÆäÀÌÁö. ÀÌ°ÍÀÌ ±âº» ¼³Á¤°ªÀÔ´Ï´Ù.
  • +
+ +

³íÆò

+

A_FileEncoding¿¡ ÇöÀç ¼³Á¤ÀÌ ´ã°Ü ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

FileOpen, StrPut/StrGet, ½ºÅ©¸³Æ® ȣȯ¼º

+ + + diff --git a/src/docs/commands/FileGetAttrib.htm b/src/docs/commands/FileGetAttrib.htm new file mode 100644 index 0000000..1447dd1 --- /dev/null +++ b/src/docs/commands/FileGetAttrib.htm @@ -0,0 +1,67 @@ + + + + +FileGetAttrib + + + + + + + +

FileGetAttrib

+ +

ÆÄÀÏÀ̳ª Æú´õ°¡ Àбâ Àü¿ëÀÎÁö, ¼û¾î ÀÖ´ÂÁö µîµîÀ» º¸°íÇÕ´Ï´Ù.

+ +
FileGetAttrib, OutputVar [, Filename]
+AttributeString := FileExist(FilePattern)
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

¿­¶÷µÈ ÅؽºÆ®¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
Filename
+

¸ñÇ¥ ÆÄÀÏÀÇ À̸§, Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ. »ý·«Çϸé, °¡Àå ¾ÈÂÊ ÆÄÀÏ-ȸµ¹ÀÌ¿¡ ½ÎÀÎ ÇöÀç ÆÄÀÏÀÌ »ç¿ëµË´Ï´Ù.

+ +
+

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1 ¾øÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

A_LastError´Â ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú°¡ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

¹ÝȯµÈ ¹®ÀÚ¿­¿¡´Â ´ÙÀ½ "RASHNDOCT" ¹®ÀÚ¿­ÀÇ ºÎ¹®ÀÚ¿­ÀÌ Æ÷ÇԵ˴ϴÙ:
+
+R = READONLY(Àбâ Àü¿ë)
+A = ARCHIVE(º¸°ü)
+S = SYSTEM(½Ã½ºÅÛ)
+H = HIDDEN(°¨Ãã)
+N = NORMAL(Á¤»ó)
+D = DIRECTORY(µð·ºÅ丮)
+O = OFFLINE(¿ÀÇÁ¶óÀÎ)
+C = COMPRESSED(¾ÐÃà)
+T = TEMPORARY(ÀÓ½Ã)

+


+ ƯÁ¤ ¼Ó¼ºÀÌ ¿­¶÷µÈ ¹®ÀÚ¿­¿¡ Á¸ÀçÇÏ´ÂÁö Á¡°ËÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:

+ +
FileGetAttrib, Attributes, C:\My File.txt
+IfInString, Attributes, H
+    MsgBox The file is hidden.
+

+°ü·ÃÇÏ¿© ÇÑ ¸¶µð Çϸé, ÆÄÀÏÀÇ 8.3 ªÀº À̸§À» ¿­¶÷ÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:

+ +
Loop, C:\My Documents\Address List.txt
+    ShortPathName = %A_LoopFileShortPath%  ; °á°ú´Â ´ÙÀ½°ú ºñ½ÁÇÕ´Ï´Ù: C:\MYDOCU~1\ADDRES~1.txt
+

+ºñ½ÁÇÑ ¹æ¹ýÀ¸·Î 8.3 ªÀº À̸§ÀÇ ±ä À̸§À» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

FileExist(), FileSetAttrib, FileGetTime, FileSetTime, FileGetSize, FileGetVersion, ÆÄÀÏ-ȸµ¹ÀÌ

+ +

¿¹Á¦

+
FileGetAttrib, OutputVar, C:\New Folder
+ + + diff --git a/src/docs/commands/FileGetShortcut.htm b/src/docs/commands/FileGetShortcut.htm new file mode 100644 index 0000000..3ddcd0e --- /dev/null +++ b/src/docs/commands/FileGetShortcut.htm @@ -0,0 +1,69 @@ + + + + +FileGetShortcut + + + + + + + +

FileGetShortcut

+ +

´ÜÃà ÆÄÀÏ (.lnk)¿¡ °üÇÑ Á¤º¸¸¦ ¿­¶÷ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î ´ÜÃà ÆÄÀÏÀÇ ¸ñÇ¥ ÆÄÀÏ.

+ +
FileGetShortcut, LinkFile [, OutTarget, OutDir, OutArgs, OutDescription, OutIcon, OutIconNum, OutRunState]
+

¸Å°³º¯¼ö

+
+ +
LinkFile
+

ºÐ¼®ÇÒ ´ÜÃà ÆÄÀÏÀÇ À̸§. Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ. .lnk È®ÀåÀÚ¸¦ ²À Æ÷ÇÔÇϽʽÿÀ.

+ +
OutTarget
+

´ÜÃà ÆÄÀÏÀÇ ¸ñÇ¥¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§ (ÀÎÀÚµéÀº Á¦¿Ü). ¿¹¸¦ µé¾î: C:\WINDOWS\system32\notepad.exe

+ +
OutDir
+

´ÜÃà ÆÄÀÏÀÇ ÀÛ¾÷ µð·ºÅ丮¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§. ¿¹¸¦ µé¾î: C:\My Documents. %WinDir% °°Àº ȯ°æ º¯¼ö°¡ ¹®ÀÚ¿­ ¾È¿¡ Á¸ÀçÇϸé, StringReplace¸¦ ÅëÇÏ¿© ÇØ°áÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: StringReplace, OutDir, OutDir, `%WinDir`%, %A_WinDir%.

+ +
OutArgs
+

´ÜÃà ÆÄÀÏÀÇ ¸Å°³º¯¼ö¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§ (¾øÀ¸¸é ºñ¾î ÀÖÀ½).

+ +
OutDescription
+

´ÜÃà ÆÄÀÏÀÇ ÁÖ¼®À» ÀúÀåÇÒ º¯¼öÀÇ À̸§ (¾øÀ¸¸é ºñ¾î ÀÖÀ½).

+ +
OutIcon
+

´ÜÃà ÆÄÀÏÀÇ ¾ÆÀÌÄÜ ÆÄÀÏ À̸§À» ÀúÀåÇÒ º¯¼öÀÇ À̸§ (¾øÀ¸¸é ºñ¾î ÀÖÀ½).

+ +
OutIconNum
+

¾ÆÀÌÄÜ ÆÄÀÏ ¾È¿¡¼­ÀÇ ´ÜÃà ÆÄÀÏÀÇ ¾ÆÀÌÄÜ ¹øÈ£¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§ (¾øÀ¸¸é ºñ¾î ÀÖÀ½). ÀÌ °ªÀº ´ëºÎºÐ 1ÀÔ´Ï´Ù. ù ¹ø° ¾ÆÀÌÄÜÀ̶ó´Â ¶æÀÔ´Ï´Ù.

+ +
OutRunState
+

´ÜÃà ÆÄÀÏÀÇ ÃÖÃÊ ±âµ¿ »óŸ¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§. ´ÙÀ½ ¼ýÀÚ Áß ÇϳªÀÔ´Ï´Ù:

+

1: Á¤»ó
+ 3: ÃÖ´ë
+ 7: ÃÖ¼Ò
+

+ +
+

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+¹®Á¦°¡ ÀÖ¾ú´Ù¸é -- ¿¹¸¦ µé¾î LinkFileÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é -- ¸ðµç Ãâ·Â º¯¼ö´Â ºñ¿öÁö°í ErrorLevel¿¡ 1ÀÌ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

Ãâ·Â º¯¼ö´Â »óÀÀÇÏ´Â Á¤º¸°¡ ÇÊ¿äÇÏÁö ¾ÊÀ¸¸é »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

FileCreateShortcut, SplitPath

+ +

¿¹Á¦

+
FileSelectFile, file, 32,, Pick a shortcut to analyze., Shortcuts (*.lnk)
+if file =
+    return
+FileGetShortcut, %file%, OutTarget, OutDir, OutArgs, OutDesc, OutIcon, OutIconNum, OutRunState
+MsgBox %OutTarget%`n%OutDir%`n%OutArgs%`n%OutDesc%`n%OutIcon%`n%OutIconNum%`n%OutRunState%
+ + + diff --git a/src/docs/commands/FileGetSize.htm b/src/docs/commands/FileGetSize.htm new file mode 100644 index 0000000..0f8efd1 --- /dev/null +++ b/src/docs/commands/FileGetSize.htm @@ -0,0 +1,61 @@ + + + + +FileGetSize + + + + + + + +

FileGetSize

+ +

ÆÄÀÏÀÇ Å©±â¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+ +
FileGetSize, OutputVar [, Filename, Units]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

¿­¶÷µÈ Å©±â¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§ (°¡Àå °¡±î¿î Á¤¼ö·Î ³»¸²µË´Ï´Ù).

+ +
Filename
+

¸ñÇ¥ ÆÄÀÏÀÇ À̸§. Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ. »ý·«Çϸé, ´ë½Å¿¡ ÆÄÀÏ-ȸµ¹ÀÌ °¡Àå ¾ÈÂÊ¿¡ ½Î¿© ÀÖ´Â ÇöÀç ÆÄÀÏÀÌ »ç¿ëµË´Ï´Ù.

+ +
Units
+

Á¸ÀçÇϸé, ¹ÙÀÌÆ®°¡ ¾Æ´Ï¶ó ÁöÁ¤ÇÑ ´ÜÀ§·Î °á°ú¸¦ ¹ÝȯÇÕ´Ï´Ù:
+ K = ų·Î¹ÙÀÌÆ®
+ M = ¸Þ°¡¹ÙÀÌÆ®

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevel´Â ¹®Á¦°¡ ÀÖÀ¸¸é 1 ¾øÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

A_LastError´Â ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú°¡ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+Å©±â¿¡ »ó°ü¾øÀÌ ÆÄÀÏÀ» Áö¿øÇÕ´Ï´Ù. ½ÉÁö¾î 4 ±â°¡¹ÙÀÌÆ®°¡ ³Ñ¾îµµ Áö¿øÇÕ´Ï´Ù. ¶Ç Units°¡ ¹ÙÀÌÆ®¶óµµ Áö¿øÇÕ´Ï´Ù.

+

+¸ñÇ¥ ÆÄÀÏÀÌ µð·ºÅ丮À̸é, ±× Å©±â´Â OS°¡ ¹Ï´Â Å©±â´ë·Î º¸°íµË´Ï´Ù (´ëºÎºÐÀº 0ÀÌ º¸°íµÉ °ÍÀÔ´Ï´Ù).

+

+Æú´õÀÇ Å©±â¸¦ ±×ÀÇ ¸ðµç ÆÄÀÏÀ» Æ÷ÇÔÇÏ¿© °è»êÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:

+ +
SetBatchLines, -1  ; ¿¬»êÀ» ÃÖ´ë ¼Óµµ·Î ¼³Á¤ÇÕ´Ï´Ù.
+FolderSize = 0
+FileSelectFolder, WhichFolder  ; »ç¿ëÀÚ¿¡°Ô Æú´õ¸¦ °í¸£µµ·Ï ¿äûÇÕ´Ï´Ù.
+Loop, %WhichFolder%\*.*, , 1
+    FolderSize += %A_LoopFileSize%
+MsgBox Size of %WhichFolder% is %FolderSize% bytes.
+ +

°ü·Ã Ç׸ñ

+

FileGetAttrib, FileSetAttrib, FileGetTime, FileSetTime, FileGetVersion, File-loop

+

¿¹Á¦

+
FileGetSize, OutputVar, C:\My Documents\test.doc  ; Å©±â¸¦ ¹ÙÀÌÆ® ´ÜÀ§·Î ¿­¶÷ÇÕ´Ï´Ù.
+FileGetSize, OutputVar, C:\My Documents\test.doc, K  ; Å©±â¸¦ Kbytes ´ÜÀ§·Î ¿­¶÷ÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/FileGetTime.htm b/src/docs/commands/FileGetTime.htm new file mode 100644 index 0000000..832c443 --- /dev/null +++ b/src/docs/commands/FileGetTime.htm @@ -0,0 +1,53 @@ + + + + +FileGetTime + + + + + + + +

FileGetTime

+ +

ÆÄÀÏÀ̳ª Æú´õÀÇ ³¯Â¥½Ã°£ µµÀåÀ» ¿­¶÷ÇÕ´Ï´Ù.

+ +
FileGetTime, OutputVar [, Filename, WhichTime]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

¿­¶÷µÈ ³¯Â¥-½Ã°£À» ÀúÀåÇÒ º¯¼öÀÇ À̸§. Çü½ÄÀº YYYYMMDDHH24MISSÀÔ´Ï´Ù. ½Ã°£Àº Áö¿ª ½Ã°£ÀÌÁö, UTC/GMT°¡ ¾Æ´Õ´Ï´Ù.

+ +
Filename
+

¸ñÇ¥ ÆÄÀÏÀ̳ª Æú´õÀÇ À̸§. Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£ÁÖÇÕ´Ï´Ù. »ý·«Çϸé, ÆÄÀÏ-ȸµ¹ÀÌÀÇ °¡Àå ¾ÈÂÊ¿¡ ½ÎÀÎ ÇöÀç ÆÄÀÏÀÌ ´ë½Å »ç¿ëµË´Ï´Ù.

+ +
WhichTime
+
¿­¶÷ÇÒ ½Ã°£µµÀå:
+ M = º¯°æ½Ã°£ (¸Å°³º¯¼ö¸¦ »ý·«Çϸé ÀÌ°ÍÀÌ ±âº»°ª)
+ C = »ý¼º ½Ã°£
+ A = ¸¶Áö¸· Á¢±Ù ½Ã°£
+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1 ¾øÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

A_LastError´Â ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú°¡ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+³¯Â¥¿Í ½Ã°£¿¡ °üÇÑ ¼³Á¤Àº YYYYMMDDHH24MISS¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

+FileSetTime, FormatTime, If var is [not] type, FileGetAttrib, FileSetAttrib, FileGetSize, FileGetVersion, File-ȸµ¹ÀÌ, EnvAdd, EnvSub

+ +

¿¹Á¦

+
FileGetTime, OutputVar, C:\My Documents\test.doc  ; ±âº»À¸·Î º¯°æ ½Ã°£À» ¿­¶÷ÇÕ´Ï´Ù.
+FileGetTime, OutputVar, C:\My Documents\test.doc, C  ; »ý¼º ½Ã°£À» ¿­¶÷ÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/FileGetVersion.htm b/src/docs/commands/FileGetVersion.htm new file mode 100644 index 0000000..f2add78 --- /dev/null +++ b/src/docs/commands/FileGetVersion.htm @@ -0,0 +1,47 @@ + + + + +FileGetVersion + + + + + + + +

FileGetVersion

+ +

ÆÄÀÏÀÇ ¹öÀüÀ» ¿­¶÷ÇÕ´Ï´Ù.

+ +
FileGetVersion, OutputVar [, Filename]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

¹öÀü ¹øÈ£/¹®ÀÚ¿­À» ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
Filename
+

¸ñÇ¥ ÆÄÀÏÀÇ À̸§, Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ. »ý·«µÇ¸é, ÆÄÀÏ-ȸµ¹ÀÌÀÇ °¡Àå ¾ÈÂÊ¿¡ ½ÎÀÎ ÇöÀç ÆÄÀÏÀÌ ´ë½Å »ç¿ëµË´Ï´Ù.

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1 ¾øÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

A_LastErrorÀº ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú°¡ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+´ëºÎºÐÀÇ ºñ-½ÇÇà ÆÄÀÏ (½ÉÁö¾î ¾î¶² EXE ÆÄÀÏ)Àº ¹öÀüÀÌ ¾ø½À´Ï´Ù. ±×·¡¼­ ÀÌ·± °æ¿ì´Â OutputVar°¡ ºñ¾î ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+FileGetAttrib, FileSetAttrib, FileGetTime, FileSetTime, FileGetSize, File-ȸµ¹ÀÌ

+ +

¿¹Á¦

+
FileGetVersion, version, C:\My Application.exe
+FileGetVersion, version, %A_ProgramFiles%\AutoHotkey\AutoHotkey.exe
+ + + diff --git a/src/docs/commands/FileInstall.htm b/src/docs/commands/FileInstall.htm new file mode 100644 index 0000000..266aafc --- /dev/null +++ b/src/docs/commands/FileInstall.htm @@ -0,0 +1,59 @@ + + + + +FileInstall + + + + + + + +

FileInstall

+ +

+ÁöÁ¤µÈ ÆÄÀÏÀ» ½ºÅ©¸³Æ®ÀÇ ÄÄÆÄÀÏ ¹öÀü¿¡ Æ÷ÇÔ½Ãŵ´Ï´Ù.

+ +
FileInstall, Source, Dest [, Flag]
+

¸Å°³º¯¼ö

+
+ +
Source
+

ÄÄÆÄÀÏµÈ EXE¿¡ Ãß°¡ÇÒ ÆÄÀÏÀÇ À̸§. Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ÆÄÀÏÀÌ ½ºÅ©¸³Æ® ÀÚ½ÅÀÇ µð·ºÅ丮¿¡ (¶Ç´Â »ó´ëÀûÀ¸·Î) ÀÖ´Ù°í °£Áֵ˴ϴÙ.

+

+ ÆÄÀÏ À̸§¿¡´Â °ãµû¿ÈÇ¥, º¯¼ö ÂüÁ¶ (¿¹, %A_ProgramFiles%) ¶Ç´Â ¿ÍÀϵåÄ«µå°¡ Æ÷ÇÔµÇ¸é ¾È µË´Ï´Ù. °Ô´Ù°¡, (¸ðµç ´Ù¸¥ ¸í·É¾îÀÇ ¸Å°³º¯¼ö¿Í ¶È °°ÀÌ) ±ÛÀÚ ±×´ë·ÎÀÇ ÆÛ¼¾Æ®¿Í ½°Ç¥ °°Àº Ư¼ö ¹®ÀÚµéÀº ÇǽŠ½ÃÄÑ¾ß ÇÕ´Ï´Ù. ¸¶Áö¸·À¸·Î, ÀÌ ¸Å°³º¯¼ö´Â FileInstall ¸í·É¾îÀÇ ¿À¸¥ÂÊ¿¡ ³ª¿­ÇØ¾ß ÇÕ´Ï´Ù (Áï, ±× ¾Æ·¡ÀÇ °è¼Ó ¼½¼Ç¿¡ ³ª¿­ÇÏ¸é ¾È µË´Ï´Ù).

+ +
Dest
+

Source¸¦ EXE·ÎºÎÅÍ ÃßÃâÇÒ ¶§, ÀÌ°ÍÀÌ »ý¼ºµÉ ÆÄÀÏÀÇ À̸§ÀÔ´Ï´Ù. Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ. ¸ñÇ¥ µð·ºÅ丮´Â ÀÌ¹Ì Á¸ÀçÇØ¾ß ÇÕ´Ï´Ù. Source¿Í ´Ù¸£°Ô, º¯¼ö ÂüÁ¶¸¦ »ç¿ëÇصµ µË´Ï´Ù.

+ +
Flag
+

(¼±ÅÃÀû) ÀÌ Ç÷¡±×´Â ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÏ¸é µ¤¾î¾µÁö ¸»Áö °áÁ¤ÇÕ´Ï´Ù:

+

0 = (±âº»°ª) ±âÁ¸ÀÇ ÆÄÀÏÀ» µ¤¾î¾²Áö ¾Ê½À´Ï´Ù
+ 1 = ±âÁ¸ÀÇ ÆÄÀÏÀ» µ¤¾î¾¹´Ï´Ù

+

ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù. ½ÉÁö¾î ÂüÀ̳ª °ÅÁþÀ¸·Î Æò°¡µÇ¸é ¹«¾ùÀÌµç µÉ ¼ö ÀÖ½À´Ï´Ù (Âü°ú °ÅÁþÀº ³»ºÎÀûÀ¸·Î 1°ú 0À¸·Î ÀúÀåµÇ±â ¶§¹®ÀÔ´Ï´Ù).

+ +
+

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevel´Â ¹®Á¦°¡ ÀÖÀ¸¸é 1 ¾øÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+ÀÌ ¸í·É¾î´Â Ahk2Exe ÄÄÆÄÀÏ·¯¸¦ À§ÇÑ Áö½Ã¾îÀÔ´Ï´Ù. ÆÄÀÏÀ» ÄÄÆÄÀÏ ½ºÅ©¸³Æ® °á°ú¿¡ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ³ªÁß¿¡, ÄÄÆÄÀÏ ½ºÅ©¸³Æ®°¡ ½ÇÇàµÇ¸é, ÆÄÀÏÀÌ ´Ù½Ã µð½ºÅ©·Î ÃßÃâµË´Ï´Ù.

+

+ÀÌ ÆÄÀÏÀº ½ºÅ©¸³Æ® ÄÄÆÄÀÏ ½Ã°£¿¡ Ãß°¡µË´Ï´Ù. ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®°¡ ½ÇÇàµÉ ¶§ ¶È °°Àº "FileInstall" ¸í·É¾î¸¦ ¸¸³ª¸é, ±× ÆÄÀÏÀº ÀÌÁ¦ Dest·Î ÃßÃâµË´Ï´Ù.

+

+½ºÅ©¸³Æ®¿¡ Ãß°¡µÈ ÆÄÀÏÀº ¾ÐÃàµÇ°í ¶Ç ¾ÏȣȭµË´Ï´Ù.

+

+ÀÌ ¸í·É¾î¸¦ Á¤»óÀÇ (ÄÄÆÄÀÏ ¾È µÈ) ½ºÅ©¸³Æ®¿¡ »ç¿ëÇϸé, ´ë½Å¿¡ °£´ÜÇÑ ÆÄÀÏ º¹»ç°¡ ¼öÇàµË´Ï´Ù -- ±×·¡¼­ ½ºÅ©¸³Æ®°¡ °á±¹ Á¦´ë·Î ÄÄÆÄÀϵÉÁö Å×½ºÆ®ÇÏ´Â µ¥ µµ¿òÀÌ µË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+FileCopy, #Include

+ +

¿¹¿Ü

+
FileInstall, C:\My Documents\My File.txt, %A_ProgramFiles%\My Application\Readme.txt, 1
+ + + diff --git a/src/docs/commands/FileMove.htm b/src/docs/commands/FileMove.htm new file mode 100644 index 0000000..ecd53e8 --- /dev/null +++ b/src/docs/commands/FileMove.htm @@ -0,0 +1,91 @@ + + + + +FileMove + + + + + + + +

FileMove

+ +

ÆÄÀÏÀ» À̵¿ÇÕ´Ï´Ù.

+ +
FileMove, SourcePattern, DestPattern [, Flag]
+

¸Å°³º¯¼ö

+
+ +
SourcePattern
+

´ÜÀÏ ÆÄÀÏÀÇ À̸§ ¶Ç´Â C:\Temp\*.tmp¿Í °°Àº ¿ÍÀϵåÄ«µå ÆÐÅÏ. SourcePatternÀº Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ.

+ +
DestPattern
+

¸ñÇ¥ÀÇ À̸§ ¶Ç´Â ÆÐÅÏ. Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ. °£´ÜÇÑ À̵¿À» ¼öÇàÇÏ·Á¸é -- ±âÁ¸ÀÇ ÆÄÀÏ À̸§Àº ±×´ë·Î µÎ°í -- Æú´õ À̸§¸¸ ÁöÁ¤ÇϽʽÿÀ. ´ÙÀ½ µÎ ¿¹Á¦´Â ±â´É»ó µ¿µîÇÕ´Ï´Ù:

+
FileMove, C:\*.txt, C:\My Folder
+
FileMove, C:\*.txt, C:\My Folder\*.*
+
+ +
Flag
+

(¼±ÅÃÀû) ÀÌ Ç÷¡±×´Â ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÏ¸é µ¤¾î¾µÁö ¸»Áö °áÁ¤ÇÕ´Ï´Ù:

+

0 = (±âº») ±âÁ¸ÀÇ ÆÄÀÏÀ» µ¤¾î¾²Áö ¾Ê½À´Ï´Ù
+ 1 = ±âÁ¸ÀÇ ÆÄÀÏÀ» µ¤¾î¾¹´Ï´Ù

+

ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù. ½ÉÁö¾î ÂüÀ̳ª °ÅÁþÀ¸·Î Æò°¡µÇ¸é ¹«¾ùÀÌµç µÉ ¼ö ÀÖ½À´Ï´Ù. (Âü°ú °ÅÁþÀº ³»ºÎÀûÀ¸·Î 1°ú 0À¸·Î ÀúÀåµÇ±â ¶§¹®ÀÔ´Ï´Ù).

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¿¡·¯ ¶§¹®¿¡ À̵¿¿¡ ½ÇÆÐÇÑ ÆÄÀÏÀÇ °³¼ö°¡ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù. ±×·¸Áö¸¸, ¼Ò½º ÆÄÀÏÀÌ ´ÜÀÏ ÆÄÀÏÀÌ°í (¿ÍÀϵåÄ«µå ¾øÀ½) ±×¸®°í Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ErrorLevelÀº 0ÀÌ ¼³Á¤µË´Ï´Ù. ÀÌ »óȲÀ» ŽÁöÇÏ·Á¸é À̵¿Çϱâ Àü¿¡ ¸ÕÀú ¼Ò½ºÆÄÀÏ¿¡ IfExist ¶Ç´Â FileExist()¸¦ »ç¿ëÇϽʽÿÀ.

+

+FileCopy¿Í ´Ù¸£°Ô, ÆÄÀÏÀ» Àڽſ¡ À̵¿ÇÏ¸é ¾ðÁ¦³ª ¼º°øÇÑ °ÍÀ¸·Î °£Áֵ˴ϴÙ. µ¤¾î¾²±â ¸ðµå°¡ ÄÑÁ® ÀÖÁö ¾Ê¾Æµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.

+

+ÆÄÀÏÀÌ ¹ß°ßµÇ¸é, A_LastError´Â 0 (¿µ)ÀÌ ¼³Á¤µÇ°Å³ª ¶Ç´Â ¸¶Áö¸· ½ÇÆÐÈÄ Áï½Ã ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú°¡ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é A_LastError¿¡´Â ¿Ö ÆÄÀÏÀÌ ¹ß°ßµÇÁö ¾Ê¾Ò´ÂÁö ¾Ë·ÁÁÖ´Â ¿¡·¯ Äڵ尡 ´ã±é´Ï´Ù.

+ +

³íÆò

+

+FileMove´Â ÆÄÀϸ¸ À̵¿ÇÕ´Ï´Ù. ´ë½Å Æú´õÀÇ ³»¿ëÀ» (±×ÀÇ ¸ðµç ÆÄÀÏ°ú ÇÏÀ§ Æú´õ¸¦ Æ÷ÇÔÇÏ¿©) À̵¿ÇÏ·Á¸é, ¾Æ·¡ ¼½¼ÇÀÇ ¿¹Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ. ´ÜÀÏ Æú´õ¸¦ À̵¿Çϰųª À̸§À» ¹Ù²Ù·Á¸é, FileMoveDirÀ» »ç¿ëÇϽʽÿÀ.

+

+¿¡·¯¸¦ ¸¸³ª´õ¶óµµ À̵¿À» °è¼Ó ÁøÇàÇÕ´Ï´Ù.

+

+ÀÌ ¸í·É¾î´Â ÆÄÀÏÀ» ´Ù¸¥ º¼·ý¿¡ À̵¿½Ãų ¼ö ÀÖÁö¸¸, °°Àº-º¼·ý À̵¿º¸´Ù ½Ã°£ÀÌ ´õ °É¸³´Ï´Ù. ÀÌ°ÍÀº °°Àº-º¼·ý À̵¿Àº À̸§À» ¹Ù²Ù´Â °Í°ú ºñ½ÁÇÏ°í, ±×·¡¼­ ÈξÀ ´õ ºü¸£±â ¶§¹®ÀÔ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+FileCopy, FileCopyDir, FileMoveDir, FileDelete

+ +

¿¹Á¦

+ +
FileMove, C:\My Documents\List1.txt, D:\Main Backup\  ; À̸§À» ¹Ù²ÙÁö ¾Ê°í ÆÄÀÏÀ» À̵¿ÇÕ´Ï´Ù.
+FileMove, C:\File Before.txt, C:\File After.txt  ; ´ÜÀÏ ÆÄÀÏÀÇ À̸§À» ¹Ù²ß´Ï´Ù.
+FileMove, C:\Folder1\*.txt, D:\New Folder\*.bkp  ; ÆÄÀÏÀ» »õ È®ÀåÀÚ·Î ¹Ù²Ù°í À̵¿ÇÕ´Ï´Ù.
+

 

+
; ´ÙÀ½ ¿¹Á¦´Â ÇÑ Æú´õ ¾ÈÀÇ ¸ðµç ÆÄÀÏ°ú Æú´õ¸¦ ´Ù¸¥ Æú´õ·Î À̵¿ÇÕ´Ï´Ù:
+ErrorCount := MoveFilesAndFolders("C:\My Folder\*.*", "D:\Folder to receive all files & folders")
+if ErrorCount <> 0
+    MsgBox %ErrorCount% files/folders could not be moved.
+
+MoveFilesAndFolders(SourcePattern, DestinationFolder, DoOverwrite = false)
+; SourcePattern¿¡ ºÎÇÕÇÏ´Â ¸ðµç ÆÄÀÏ°ú Æú´õ¸¦ DestinationFolder À̸§ÀÇ Æú´õ¿¡ À̵¿ÇÏ°í
+; À̵¿¿¡ ½ÇÆÐÇÑ ÆÄÀÏ/Æú´õÀÇ °³¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.
+; ÀÌ ÇÔ¼ö´Â FileMoveDirÀÇ ¸ðµå 2¸¦ »ç¿ëÇϱ⠶§¹®¿¡ v1.0.38+ÀÌ ÇÊ¿äÇÕ´Ï´Ù.
+{
+    if DoOverwrite = 1
+        DoOverwrite = 2  ; mode 2 vs. 1 »çÀÌÀÇ ¼³¸íÀº FileMoveDirÀ» ÂüÁ¶ÇϽʽÿÀ.
+    ; ¸ÕÀú ¸ðµç ÆÄÀÏÀ» À̵¿ÇÕ´Ï´Ù (Æú´õ´Â À̵¿ÇÏÁö ¾Ê½À´Ï´Ù):
+    FileMove, %SourcePattern%, %DestinationFolder%, %DoOverwrite%
+    ErrorCount := ErrorLevel
+    ; ÀÌÁ¦ ¸ðµç Æú´õ¸¦ À̵¿ÇÕ´Ï´Ù:
+    Loop, %SourcePattern%, 2  ; 2´Â "Æú´õ¸¸ ¿­¶÷Ç϶ó"´Â ¶æÀÔ´Ï´Ù.
+    {
+        FileMoveDir, %A_LoopFileFullPath%, %DestinationFolder%\%A_LoopFileName%, %DoOverwrite%
+        ErrorCount += ErrorLevel
+        if ErrorLevel  ; ¹®Á¦ÀÇ Æú´õ¸¦ À̸§À¸·Î º¸°íÇÕ´Ï´Ù.
+            MsgBox Could not move %A_LoopFileFullPath% into %DestinationFolder%.
+    }
+    return ErrorCount
+}
+ + + diff --git a/src/docs/commands/FileMoveDir.htm b/src/docs/commands/FileMoveDir.htm new file mode 100644 index 0000000..afd456a --- /dev/null +++ b/src/docs/commands/FileMoveDir.htm @@ -0,0 +1,56 @@ + + + + +FileMoveDir + + + + + + + +

FileMoveDir

+ +

Æú´õ¸¦ ±×ÀÇ ¸ðµç ÇÏÀ§ Æú´õ¸¦ Æ÷ÇÔÇÏ¿© À̵¿ÇÕ´Ï´Ù. Æú´õÀÇ À̸§À» ¹Ù²Ü ¼öµµ ÀÖ½À´Ï´Ù.

+ +
FileMoveDir, Source, Dest [, Flag]
+

¸Å°³º¯¼ö

+
+ +
Source
+

¼Ò½º µð·ºÅ丮ÀÇ À̸§ (µÚ¿¡ ¿ª»ç¼± ¾øÀ½), Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í°£Áֵ˴ϴÙ. ¿¹¸¦ µé¾î: C:\My Folder

+ +
Dest
+

µð·ºÅ丮ÀÇ »õ·Î¿î °æ·Î¿Í À̸§ (µÚ¿¡ ¿ª»ç¼± ¾øÀ½), Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ. ¿¹¸¦ µé¾î: D:\My Folder. ÁÖÀÇ: Dest´Â À̵¿ÇÑ ÈÄ¿¡ µð·ºÅ丮°¡ °®°Ô µÉ ½ÇÁ¦ °æ·Î¿Í À̸§ÀÔ´Ï´Ù; Source°¡ À̵¿µÇ¾î µé¾î °¥ µð·ºÅ丮°¡ ¾Æ´Õ´Ï´Ù (¾Æ·¡¿¡ ±â¼úÇÑ ¾Ë·ÁÁø ÇÑ°è´Â ¿¹¿ÜÀÔ´Ï´Ù).

+ +
Flag
+

(¿É¼Ç) ´ÙÀ½ ´ÜÀÏ ¹®ÀÚ Áß Çϳª¸¦ ÁöÁ¤ÇϽʽÿÀ:

+

0 (±âº»°ª): ±âÁ¸ÀÇ ÆÄÀÏÀ» µ¤¾î¾²Áö ¾Ê½À´Ï´Ù. Dest°¡ ÀÌ¹Ì ÆÄÀÏÀ̳ª Æú´õ·Î Á¸ÀçÇϸé À̵¿Àº ½ÇÆÐÇÕ´Ï´Ù.

+

1: ±âÁ¸ÀÇ ÆÄÀÏÀ» µ¤¾î¾¹´Ï´Ù. ±×·¸Áö¸¸, Dest ¾ÈÀÇ ÆÄÀÏÀ̳ª Æú´õ°¡ Source¿¡ ¦ÀÌ ¾øÀ¸¸é »èÁ¦µÇÁö ¾Ê½À´Ï´Ù. ¾Ë·ÁÁø ÇÑ°è: Dest°¡ ÀÌ¹Ì Æú´õ·Î Á¸ÀçÇÏ°í Source¿Í °°Àº º¼·ý¿¡ ÀÖ´Ù¸é, Source´Â ±×¸¦ µ¤¾î ¾²´Â°Ô ¾Æ´Ï¶ó ±× ¾ÈÀ¸·Î À̵¿µÇ¾î µé¾î°©´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é, ´ÙÀ½ ¿É¼ÇÀ» Âü°íÇϽʽÿÀ.

+

2: À§ÀÇ ¸ðµå 1°ú µ¿ÀÏÇÏÁö¸¸ Á¦ÇÑÀÌ ¾ø½À´Ï´Ù.

+

R: µð·ºÅ丮¸¦ À̵¿ÇÏÁö ¾Ê°í ±× À̸§À» º¯°æÇÕ´Ï´Ù. º¸Åë À̸§À» º¯°æÇÏ´Â °ÍÀº À̵¿ÇÑ °Í°ú È¿°ú°¡ °°Áö¸¸, "¸ðµÎ ¾Æ´Ï¸é ¸ðµÎ ¾Æ´Ô" ÇàÀ§¸¦ ¿øÇÒ °æ¿ì µµ¿òÀÌ µË´Ï´Ù; + Áï, Source³ª ±×ÀÇ ÆÄÀÏ Áß Çϳª°¡ Àá°Ü ÀÖÀ» ¶§ (»ç¿ë ÁßÀÏ ¶§) À̵¿ÀÌ ºÎºÐÀûÀ¸·Î¸¸ ¼º°øÇÏ´Â °ÍÀ» ¿øÇÏÁö ¾ÊÀ» °æ¿ì¿¡ µµ¿òÀÌ µË´Ï´Ù. ÀÌ ¹æ¹ýÀº Source¸¦ ´Ù¸¥ º¼·ýÀ¸·Î À̵¿ÇÒ ¼ö ¾ø½À´Ï´Ù. ¿ÀÁ÷ ÀÚ½ÅÀÇ º¼·ý¿¡ ÀÖ´Â ´Ù¸¥ µð·ºÅ丮·Î¸¸ À̵¿ÇÒ ¼ö ÀÖ½À´Ï´Ù. Dest°¡ ÀÌ¹Ì ÆÄÀÏÀ̳ª Æú´õ·Î Á¸ÀçÇϸé À̵¿¿¡ ½ÇÆÐÇÕ´Ï´Ù.

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1 ¾øÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

³íÆò

+

+FileMoveDirÀº ´ÜÀÏ Æú´õ¸¦ »õ À§Ä¡·Î À̵¿ÇÕ´Ï´Ù. ´ë½Å Æú´õÀÇ ³»¿ëÀ» (±×ÀÇ ¸ðµç ÆÄÀÏ°ú ÇÏÀ§ µð·ºÅ丮¸¦ Æ÷ÇÔÇÏ¿©) À̵¿ÇÏ·Á¸é, FileMove ¼½¼ÇÀÇ ¿¹Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+¼Ò½º¿Í ¸ñÇ¥°¡ ´Ù¸¥ º¼·ý¿¡ Àְųª UNC °æ·Î¿¡ ÀÖÀ¸¸é, À̵¿ÀÌ ¾Æ´Ï¶ó º¹»ç/Á¦°Å ¿¬»êÀÌ ¼öÇàµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+FileCopyDir, FileCopy, FileMove, FileDelete, File-ȸµ¹ÀÌ, FileSelectFolder, SplitPath

+ +

¿¹Á¦

+
FileMoveDir, C:\My Folder, D:\My Folder  ; »õ µå¶óÀ̺ê·Î À̵¿½Ãŵ´Ï´Ù.
+FileMoveDir, C:\My Folder, C:\My Folder (renamed), R  ; °£´ÜÇÑ À̸§ º¯°æ.
+FileMoveDir, C:\My Folder, C:\New Location\My Folder, R  ; Æú´õ´Â °°Àº Æú´õ¿¡ ÀÖÀ¸¸é "À̸§À» ¹Ù²Ù¾î" ´Ù¸¥ À§Ä¡·Î À̵¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+ + + diff --git a/src/docs/commands/FileOpen.htm b/src/docs/commands/FileOpen.htm new file mode 100644 index 0000000..e9356eb --- /dev/null +++ b/src/docs/commands/FileOpen.htm @@ -0,0 +1,130 @@ + + + + +FileOpen + + + + + + + + +

FileOpen [AHK_L 42+]

+ +

ÆÄÀÏÀ» ¿±´Ï´Ù.

+
file := FileOpen(Filename, Flags [, Encoding])
+ +

¸Å°³º¯¼ö

+
+ +
Filename
+
+

¿­ ÆÄÀÏÀÇ °æ·Î. Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é A_WorkingDir¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ.

+

[v1.1.17+]: Ç¥ÁØ ÀÔ·Â/Ãâ·Â/¿¡·¯ ½ºÆ®¸²À» ¿­·Á¸é º°Ç¥¸¦ (¶Ç´Â º°Ç¥ µÎ °³¸¦) ¾Æ·¡¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ ÁöÁ¤ÇϽʽÿÀ:

+
+FileOpen("*", "r")   ; Ç¥ÁØÀÔ·Â
+FileOpen("*", "w")   ; Ç¥ÁØÃâ·Â
+FileOpen("**", "w")  ; Ç¥ÁØ¿¡·¯
+
+ +
Flags
+

[in AHK_L 54+] ¿øÇÏ´Â Á¢±Ù ¸ðµå¸¦ °¡¸®Å°´Â ¹®ÀÚ ±×¸®°í ´ÙÀ½¿¡ ´Ù¸¥ ¿É¼ÇÀÌ µû¶ó¿Í ±¸¼ºµÈ ¹®ÀÚ¿­ (¼±ÅÃÀûÀ¸·Î »çÀÌ¿¡ ½ºÆäÀ̽º ¶Ç´Â ÅÇ); ¶Ç´Â [ AHK_L 42+] ¼ýÄ¡ Ç÷¡±×ÀÇ Á¶ÇÕ (ÇÕ°è). Áö¿øµÇ´Â °ªµéÀº ¾Æ·¡ Å×ÀÌºí¿¡ ±â¼úÇÕ´Ï´Ù.

+ +
Encoding
+

ÆÄÀÏ¿¡ UTF-8 ¶Ç´Â UTF-16 ¹ÙÀÌÆ® ¼ø¼­ Ç¥½ÄÀÌ ¾øÀ» ¶§, ¶Ç´Â h (ÇÚµé) ÇÁ·¡±×°¡ »ç¿ëµÉ ¶§ ÅؽºÆ® I/O¿¡ »ç¿ëÇÒ ÄÚµå ÆäÀÌÁöÀÔ´Ï´Ù. »ý·«µÇ¸é, A_FileEncodingÀÇ ÇöÀç °ªÀÌ »ç¿ëµË´Ï´Ù.

+ +
+

Flags

+ + + + + + + + + + + + + + + + + + + + + +
  Á¢±Ù ¸ðµå (¼­·Î-¹èŸÀûÀÓ)
r0Read: ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é ½ÇÆÐÇÕ´Ï´Ù.
w1Write: »õ ÆÄÀÏÀ» »ý¼ºÇÕ´Ï´Ù, ±âÁ¸ÀÇ ÆÄÀÏÀ» µ¤¾î¾²±â ÇÕ´Ï´Ù.
a2Append: ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é »õ ÆÄÀÏÀ» »ý¼ºÇÕ´Ï´Ù, ±×·¸Áö ¾ÊÀ¸¸é ÆÄÀÏ Æ÷ÀÎÅ͸¦ ÆÄÀÏÀÇ ³¡À¸·Î À̵¿ÇÕ´Ï´Ù.
rw3Read/Write: ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é »õ ÆÄÀÏÀ» »ý¼ºÇÕ´Ï´Ù.
h FilenameÀÌ °´Ã¼ ¾È¿¡ ½Î ³ÖÀ» ÆÄÀÏ ÇÚµéÀÓÀ» ³ªÅ¸³À´Ï´Ù. °øÀ¯ ¸ðµå Ç÷¡±×´Â ¹«½ÃµË´Ï´Ù. ±×¸®°í ÀÌ ÇÚµéÀÌ °¡¸®Å°´Â ÆÄÀÏÀ̳ª ½ºÆ®¸²Àº ¹ÙÀÌÆ® ¼ø¼­ Ç¥½ÄÀÌ Á¡°ËµÇÁö ¾Ê½À´Ï´Ù. ÆÄÀÏ ÇÚµéÀº ÆÄÀÏ °´Ã¼°¡ Æı«µÉ ¶§ ÀÚµ¿À¸·Î Àá±âÁö ¾Ê½À´Ï´Ù. ±×¸®°í Close¸¦ È£ÃâÇØ ºÁ¾ß ¾Æ¹« È¿°úµµ ¾ø½À´Ï´Ù. ÁÖÀÇ ÇϽʽÿÀ. FilenameÀÌ ÆÄÀÌÇÁ³ª Åë½Å ÀåÄ¡ °°ÀÌ À§Ä¡ ÁöÁ¤ÀÌ ¾ÈµÇ´Â(nonseeking) ÀåÄ¡¸¦ °¡¸®Å°´Â ÇÚµéÀ̸é Seek, Tell ±×¸®°í Length¸¦ »ç¿ëÇÏ¸é ¾È µË´Ï´Ù.
  °øÀ¯ ¸ðµå Ç÷¡±×
-rwd Àбâ, ¾²±â ±×¸®°í Áö¿ì±â Á¢±ÙÀ» À§ÇØ ÆÄÀÏÀ» Àá±Ý´Ï´Ù. r, w ±×¸®°í dÀ» Á¶ÇÕÇØ »ç¿ëÇصµ µË´Ï´Ù. -¸¦ ÁöÁ¤Çϸé -rwd¸¦ ÁöÁ¤ÇÑ °Í°ú °°½À´Ï´Ù. ¿ÏÀüÈ÷ »ý·«Çϸé, ±âº»Àº ¸ðµç Á¢±ÙÀ» °øÀ¯ÇÏ´Â °ÍÀÔ´Ï´Ù.
 0Flags°¡ ¼ýÄ¡À̸é, °øÀ¯ ¸ðµå Ç÷¡±×°¡ ¾øÀ» °æ¿ì ÆÄÀÏÀÌ Àá±é´Ï´Ù.
 0x100read Á¢±ÙÀ» °øÀ¯ÇÕ´Ï´Ù.
 0x200write Á¢±ÙÀ» °øÀ¯ÇÕ´Ï´Ù.
 0x400delete Á¢±ÙÀ» °øÀ¯ÇÕ´Ï´Ù.
  ÁÙ ³¡(End of line (EOL)) ¿É¼Ç
`n4ÀÐÀ» ¶§ `r`nÀ» `nÀ¸·Î ±³Ã¼ÇÕ´Ï´Ù. ±×¸®°í ¾µ ¶§ `nÀ» `r`nÀ¸·Î ±³Ã¼ÇÕ´Ï´Ù.
`r8ÀÐÀ» ¶§ ³ªÈ¦·Î `rÀ» `nÀ¸·Î ±³Ã¼ÇÕ´Ï´Ù.
+ +

¹Ýȯ °ª

+

+ÆÄÀÏÀÌ ¼º°øÀûÀ¸·Î ¿­¸®¸é, ¹Ýȯ °ªÀº ÆÄÀÏ °´Ã¼ÀÔ´Ï´Ù.

+

+ÇÔ¼ö°¡ ½ÇÆÐÇϸé, ¹Ýȯ °ªÀº 0ÀÌ°í [in AHK_L 54+] A_LastError´Â ¿¡·¯ Äڵ尡 ´ã±é´Ï´Ù.

+

+ÇÔ¼ö°¡ ¼º°øÇß´ÂÁö Á¡°ËÇÏ·Á¸é if file ¶Ç´Â IsObject(file)¸¦ »ç¿ëÇϽʽÿÀ.

+ +

³íÆò

+

+UTF-8 ¶Ç´Â UTF-16 ÆÄÀÏÀÌ »ý¼ºµÉ ¶§, ¹ÙÀÌÆ® ¼ø¼­ Ç¥½ÄÀÌ ÆÄÀÏ¿¡ ¾º¿©Áý´Ï´Ù. +´Ü, Encoding (¶Ç´Â EncodingÀ» »ý·«Çϸé A_FileEncoding)¿¡ "UTF-8-RAW" ¶Ç´Â "UTF-16-RAW"ÀÌ ´ã°Ü ÀÖ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+

+UTF-8 ¶Ç´Â UTF-16 ¹ÙÀÌÆ® ¼ø¼­ Ç¥½Ä(byte order mark (BOM))À» ´ã°í ÀÖ´Â ÆÄÀÏÀÌ Àбâ Á¢±ÙÀ» À§ÇØ ¿­¸± ¶§, BOMÀº ÆÄÀÏ Æ÷ÀÎÅ͸¦ ±× ´ÙÀ½À¸·Î À̵¿Çؼ­ Ãâ·ÂÀ¸·ÎºÎÅÍ Á¦¿ÜµË´Ï´Ù. ±×·¯¹Ç·Î, File.PositionÀº ÆÄÀÏÀ» ¿­°í ³­ÈÄ Áï½Ã 3 ¶Ç´Â 2¸¦ º¸°íÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

FileEncoding, File Object, FileRead

+ +

¿¹Á¦

+
; ¿¹Á¦: ´ÙÀ½ ½ºÅ©¸³Æ®´Â ÅؽºÆ®¸¦ ÆÄÀÏ¿¡ ¾´ ´ÙÀ½ ´Ù½Ã ¸Þ¸ð¸®·Î ÀÐ¾î µéÀÔ´Ï´Ù.
+; ´ÙÀ½ DllCall-¿¹Á¦¿Í ±â´ÉÀÌ °°½À´Ï´Ù.
+
+FileSelectFile, FileName, S16,, Create a new file:
+if (FileName = "")
+	return
+file := FileOpen(FileName, "w")
+if !IsObject(file)
+{
+	MsgBox Can't open "%FileName%" for writing.
+	return
+}
+TestString := "This is a test string.`r`n"  ; ÆÄÀÏÀ» ÀÌ·± ½ÄÀ¸·Î ¾µ ¶§,  »õ ÁÙÀ» ½ÃÀÛÇÏ·Á¸é `n ¸»°í `r`nÀ» »ç¿ëÇϽʽÿÀ.
+file.Write(TestString)
+file.Close()
+
+; ÀÌÁ¦ ÆÄÀÌÀ» ´Ù ½èÀ¸¹Ç·Î, ´Ù½Ã ¸Þ¸ð¸®·Î ±× ³»¿ëÀ» ÀÐ¾î µéÀÔ´Ï´Ù.
+file := FileOpen(FileName, "r-d") ; ÆÄÀÏÀ» ÀнÀ´Ï´Ù ("r"),  Áö¿ì±â ("-d")¸¸ »©°í ¸ðµç Á¢±ÙÀ» °øÀ¯ÇÕ´Ï´Ù.
+if !IsObject(file)
+{
+	MsgBox Can't open "%FileName%" for reading.
+	return
+}
+CharsToRead := StrLen(TestString)
+TestString := file.Read(CharsToRead)
+file.Close()
+MsgBox The following string was read from the file: %TestString%
+ +
; Àбâ Àü¿ë ¸ðµå·Î ½ºÅ©¸³Æ®¸¦ ¿±´Ï´Ù. ±×¸®°í ±×ÀÇ Ã¹ ÁÙÀ» ÀнÀ´Ï´Ù:
+file := FileOpen(A_ScriptFullPath, "r")
+MsgBox % file.ReadLine()
+
+; ´ÙÀ½ µ¥¸ð¸¦ º¸¿©ÁÖ±â À§ÇØ ÄÜ¼Ö Ã¢À» ¿±´Ï´Ù:
+DllCall("AllocConsole")
+; ¾îÇø®ÄÉÀ̼ÇÀÇ stdin/stdout ½ºÆ®¸²À» »õÁÙ-º¯È¯ ¸ðµå·Î ¿±´Ï´Ù.
+stdin  := FileOpen("*", "r `n")  ; Requires v1.1.17+
+stdout := FileOpen("*", "w `n")
+; ¿¹Àü ¹öÀü¿¡´Â ´ÙÀ½À» »ç¿ëÇÕ´Ï´Ù:
+;   stdin  := FileOpen(DllCall("GetStdHandle", "int", -10, "ptr"), "h `n")
+;   stdout := FileOpen(DllCall("GetStdHandle", "int", -11, "ptr"), "h `n")
+stdout.Write("Enter your query.`n\> ")
+stdout.Read(0) ; ¾²±â ¹öÆÛ¸¦ ºñ¿ó´Ï´Ù.
+query := RTrim(stdin.ReadLine(), "`n")
+stdout.WriteLine("Your query was '" query "'. Have a nice day.")
+stdout.Read(0) ; Àб⠹öÆÛ¸¦ ºñ¿ó´Ï´Ù.
+Sleep 5000
+
+ + diff --git a/src/docs/commands/FileRead.htm b/src/docs/commands/FileRead.htm new file mode 100644 index 0000000..4b1c8af --- /dev/null +++ b/src/docs/commands/FileRead.htm @@ -0,0 +1,91 @@ + + + + +FileRead + + + + + + + +

FileRead

+ +

ÆÄÀÏÀÇ ³»¿ëÀ» º¯¼ö ¾ÈÀ¸·Î ÀнÀ´Ï´Ù.

+ +
FileRead, OutputVar, Filename
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

¿­¶÷µÈ µ¥ÀÌÅ͸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§. ¹®Á¦°¡ ÀϾ¸é ¿¹¸¦ µé¾î ÆÄÀÏÀÌ "»ç¿ë Áß"À̰ųª Á¸ÀçÇÏÁö ¾ÊÀ¸¸é (ÀÌ °æ¿ì ErrorLevelÀº 1·Î ¼³Á¤µË´Ï´Ù) OutputVar´Â ºñ¿öÁý´Ï´Ù. FilenameÀÌ ºó ÆÄÀÏÀ̾ ºñ¿öÁý´Ï´Ù (ÀÌ °æ¿ì ErrorLevelÀº 0ÀÌ ¼³Á¤µË´Ï´Ù).

+ +
Filename
+

ÀÐÀ» ÆÄÀÏÀÇ À̸§. Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ.

+

+ Options: ÆÄÀÏÀÇ À̸§ ¾Õ¿¡ ¹Ù·Î 0 °³ ÀÌ»óÀÇ ´ÙÀ½ ¹®ÀÚ¿­ÀÌ ³ªÅ¸³¯ ¼öµµ ÀÖ½À´Ï´Ù. °¢ ¿É¼ÇÀº ¿É¼Ç »çÀÌ¿¡ ´ÜÀÏ ½ºÆäÀ̽º ¶Ç´Â ÅÇÀ¸·Î ºÐ¸®ÇϽʽÿÀ. ¿¹¸¦ µé¾î: *t *m5000 C:\Log Files\200601.txt.

+

+ *c: ClipboardAll ÆÄÀÏ ¶Ç´Â ´Ù¸¥ ÀÌÁø µ¥ÀÌÅ͸¦ ÀûÀçÇÕ´Ï´Ù. *c ¿É¼ÇÀÌ Á¸ÀçÇÏ¸é ´Ù¸¥ ¸ðµç ¿É¼ÇÀº ¹«½ÃµË´Ï´Ù.

+

+ *m1024: ÀÌ ¿É¼ÇÀÌ »ý·«µÇ¸é, Àüü ÆÄÀÏÀº ¸Þ¸ð¸®°¡ ¸ðÀÚ¶óÁö ¾Ê´Â ÇÑ ÀûÀçµË´Ï´Ù. ÀÌ·± °æ¿ì ¿¡·¯ ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù. ±×¸®°í ¾²·¹µå´Â Á¾·áÇÕ´Ï´Ù (±×·¯³ª À̸¦ ÇÇÇÏ·Á¸é Try¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù). ±×·¸Áö ¾ÊÀ¸¸é, 1024¸¦ ¹ÙÀÌÆ® °³¼öÀÇ ½ÊÁø¼ö ¶Ç´Â ½ÊÀ°Áø ¼ö·Î ±³Ã¼ÇϽʽÿÀ. ÆÄÀÏÀÌ ÀÌ º¸´Ù Å©¸é, ¿ÀÁ÷ ±×ÀÇ ¾Õ ºÎºÐ¸¸ ÀûÀçµË´Ï´Ù. ÁÖÀÇ: ÀÌ ¶§¹®¿¡ ¸¶Áö¸· ÁÙÀº `r`nÀÌ ¾Æ´Ï¶ó ij¸®Áö ¸®ÅÏ È¦·Î (`r) ³¡³ª´Â °á°ú¸¦ ÃÊ·¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ *t: ij¸®Áö ¸®ÅÏ & ¶óÀÎÇǵå (`r`n)°¡ ³ªÅ¸³ª¸é ¸ðµÎ ¶óÀÎÇǵå (`n)·Î ¹Ù²ß´Ï´Ù. ±×·¸Áö¸¸, ÀÌ º¯È¯Àº ¼öÇ༺´ÉÀ» ÁÙÀÔ´Ï´Ù. ±×¸®°í º¸Åë ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, `r`nÀÌ Æ÷ÇÔµÈ ÅؽºÆ®´Â ÀÌ¹Ì Gui Edit ÄÜÆ®·Ñ¿¡ Ãß°¡µÉ ¿Ã¹Ù¸¥ Çü½ÄÀÔ´Ï´Ù. ºñ½ÁÇÏ°Ô, FileAppend´Â »õ ÆÄÀÏÀ» ¿­ ¶§ `r`nÀÌ ÀÖ´ÂÁö ŽÁöÇÕ´Ï´Ù; °¢ `r`nÀ» ÀÖ´Â ±×´ë·Î ¾µ ÁÙ ¾Ð´Ï´Ù. `r`r`nÀ¸·Î º¯È¯ÇÏÁö ¾Ê½À´Ï´Ù. ¸¶Áö¸·À¸·Î, ÆÄÀÏ ³¡ÀÌ `r`n·Î ³¡³ªµç ±×³É `n·Î ³¡³ªµç »ó°ü¾øÀÌ ´ÙÀ½ ÆÄ½Ì È¸µ¹ÀÌ´Â ¿Ã¹Ù¸£°Ô ÀÛµ¿ÇÒ °ÍÀÔ´Ï´Ù: Loop, parse, MyFileContents, `n, `r.

+

+ *Pnnn: [AHK_L 42+]: FileEncodingÀÌ ¼³Á¤ÇÑ ±âº» ÀÎÄÚµùÀ» ¿À¹ö¶óÀ̵å ÇÕ´Ï´Ù. ¿©±â¿¡¼­ nnnÀº ¼ýÄ¡ ÄÚµå ÆäÀÌÁö ½Äº°ÀÚÀÔ´Ï´Ù.

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ÀûÀç°¡ ¼º°øÇϸé 0ÀÌ ¼³Á¤µË´Ï´Ù. ¹®Á¦°¡ ÀϾ¸é 1ÀÌ ¼³Á¤µË´Ï´Ù. ¿¹¸¦ µé¸é: +

    +
  1. ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù; +
  2. ÆÄÀÏÀÌ Àá°Ü Àְųª Á¢±ÙÀÌ ºÒ°¡´ÉÇÏ´Ù; +
  3. ½Ã½ºÅÛ¿¡ ÆÄÀÏÀ» ÀûÀçÇÒ ¸Þ¸ð¸®°¡ ÃæºÐÇÏÁö ¾Ê´Ù +
+

+

+A_LastError´Â ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú°¡ ´ã±é´Ï´Ù.

+ +

ÀÌÁø µ¥ÀÌÅÍ Àбâ

+

+ÆÄÀÏ, ¸Å°³º¯¼ö ±×¸®°í ±âº» ¼³Á¤¿¡ µû¶ó, FileRead´Â ÆÄÀÏ µ¥ÀÌÅ͸¦ ÅؽºÆ®·Î ÀÌÇØÇÏ°í ±×°ÍÀ» ½ºÅ©¸³Æ®°¡ »ç¿ëÇÏ´Â °íÀ¯ÀÇ ÀÎÄÚµùÀ¸·Î º¯È¯ÇÕ´Ï´Ù. ÀÌ ¶§¹®¿¡ ÆÄÀÏ¿¡ ÀÌÁø µ¥ÀÌÅÍ°¡ µé¾î ÀÖÀ» °æ¿ì ¹®Á¦¸¦ ¾ß±âÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù:

+
    +
  • *C ¿É¼ÇÀÌ Á¸ÀçÇϸé, ¸ðµç ÄÚµå ÆäÀÌÁö¿Í ÁÙ³¡ º¯È¯Àº ¹«Á¶°Ç ¹«½ÃµË´Ï´Ù.
  • +
  • *Pnnn ¿É¼ÇÀÌ Á¸ÀçÇÏ°í nnnÀÌ °íÀ¯ÀÇ ¹®ÀÚ¿­ ÀÎÄÚµù¿¡ »óÀÀÇϸé, ÄÚµå ÆäÀÌÁö º¯È¯ÀÌ ÀϾÁö ¾Ê½À´Ï´Ù.
  • +
  • ÇöÀç ÆÄÀÏ ÀÎÄÚµù ¼³Á¤ÀÌ °íÀ¯ÀÇ ¹®ÀÚ¿­ ÀÎÄÚµù¿¡ »óÀÀÇÑ´Ù¸é, ÄÚµå ÆäÀÌÁö º¯È¯Àº ÀϾÁö ¾Ê½À´Ï´Ù.
  • +
+

+ÁÖ¸ñÇϽʽÿÀ. ÀÏ´Ü µ¥ÀÌÅ͸¦ OutputVar¸¦ ÀÐ¾î µé¿´´Ù¸é, ¿ÀÅäÇÖÅ° ¸í·É¾î¿Í ÇÔ¼ö¿¡ ¿ÀÁ÷ (Á¸ÀçÇÑ´Ù¸é) ù ÀÌÁø 0 ¾ÕÀÇ ÅؽºÆ®¸¸ "º¸¿©Áý´Ï´Ù". ±×·¸Áö¸¸, Àüü ³»¿ëÀº ¿©ÀüÈ÷ Á¸ÀçÇÏ°í NumGet() °°Àº °í±Þ ¹æ½ÄÀ¸·Î Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+¸¶Áö¸·À¸·Î, FileOpen() ±×¸®°í File.RawRead() ¶Ç´Â File.ReadNum() ¸ÕÀú Àüü ÆÄÀÏÀ» ¸Þ¸ð¸®·Î ÀÐ¾î µéÀÏ ÇÊ¿ä ¾øÀÌ ÀÌÁø µ¥ÀÌÅ͸¦ Àд µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

³íÆò

+

+¸ñÀûÀÌ ÆÄÀÏÀÇ ¸ðµç ³»¿ë ¶Ç´Â ÀϺθ¦ ¸Þ¸ð¸®·Î ÀÐ¾î µéÀÌ´Â °ÍÀÏ ¶§, ÆÄÀÏ-Àбâ ȸµ¹À̸¦ »ç¿ëÇÏ´Â °Íº¸´Ù FileRead°¡ ¼öÇ༺´ÉÀÌ ÈξÀ ´õ ÁÁ½À´Ï´Ù.

+

+Å©±â°¡ 1 GB°¡ ³Ñ´Â ÆÄÀÏÀº ErrorLevel¿¡ 1ÀÌ ¼³Á¤µÇ°í ±×¸®°í OutputVar´Â ºñ¿öÁý´Ï´Ù. ´Ü, *m ¿É¼ÇÀÌ Á¸ÀçÇÏ¸é ¿¹¿ÜÀÔ´Ï´Ù. ÀÌ °æ¿ì´Â ÆÄÀÏÀÇ ¾ÕºÎºÐÀÌ ÀûÀçµË´Ï´Ù.

+

+FileRead´Â #MaxMemÀ» ÁؼöÇÏÁö ¾Ê½À´Ï´Ù. ³Ê¹« ¸¹Àº ¸Þ¸ð¸®¸¦ »ç¿ëÇÒ±î °ÆÁ¤ÀÌ µÇ¸é, FileGetSizeÀ¸·Î ¹Ì¸® ÆÄÀÏ Å©±â¸¦ Á¡°ËÇϽʽÿÀ.

+

+FileOpen()Àº FileReadº¸´Ù °í±Þ ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù. ¿¹¸¦ µé¾î ÆÄÀÏ Àüü¸¦ ¸Þ¸ð¸®·Î ÀÐ¾î µéÀÏ ÇÊ¿ä ¾øÀÌ Æ¯Á¤ÇÑ À§Ä¡¿¡ µ¥ÀÌÅ͸¦ ÀÐ°í ¾µ ¼ö ÀÖ½À´Ï´Ù. ÇÔ¼ö ¸®½ºÆ®´Â ÆÄÀÏ °´Ã¼¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

FileEncoding, FileOpen/File Object, file-reading loop, FileReadLine, FileGetSize, FileAppend, IniRead, Sort, UrlDownloadToFile

+ +

¿¹Á¦

+
; ¿¹Á¦ #1: ÅؽºÆ® ÆÄÀÏÀ» OutputVar·Î ÀÐ¾î µéÀÔ´Ï´Ù.
+FileRead, OutputVar, C:\My Documents\My File.txt
+
; ¿¹Á¦ #2: ÆÄÀÏÀÇ ³»¿ëÀ» ½Å¼ÓÇÏ°Ô Á¤·ÄÇÕ´Ï´Ù.
+FileRead, Contents, C:\Address List.txt
+if not ErrorLevel  ; ¼º°øÀûÀ¸·Î ÀûÀçµÊ.
+{
+    Sort, Contents
+    FileDelete, C:\Address List (alphabetical).txt
+    FileAppend, %Contents%, C:\Address List (alphabetical).txt
+    Contents =  ; ¸Þ¸ð¸®¸¦ Ç®¾îÁÝ´Ï´Ù.
+}
+ + + diff --git a/src/docs/commands/FileReadLine.htm b/src/docs/commands/FileReadLine.htm new file mode 100644 index 0000000..6b5078f --- /dev/null +++ b/src/docs/commands/FileReadLine.htm @@ -0,0 +1,68 @@ + + + + +FileReadLine + + + + + + + +

FileReadLine

+ +

ÆÄÀϷκÎÅÍ Æ¯Á¤ ÁÙÀ» Àо ±× ÅؽºÆ®¸¦ º¯¼ö¿¡ ÀúÀåÇÕ´Ï´Ù.

+ +
FileReadLine, OutputVar, Filename, LineNum
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

¿­¶÷ÇÑ ÅؽºÆ®¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
Filename
+

Á¢±ÙÇÒ ÆÄÀÏÀÇ À̸§. Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ. Windows ±×¸®°í Unix Æ÷¸ËÀÌ Áö¿øµË´Ï´Ù; Áï, ÆÄÀÏÀÇ ÁÙÀº ij¸®Áö ¸®ÅÏ°ú ¶óÀÎÇǵå (`r`n) ¶Ç´Â ±×³É ¶óÀÎÇǵå (`n)·Î ³¡³³´Ï´Ù.

+ +
LineNum
+

ÀÐÀ» ÁÙ ¹øÈ£ (1À̸é ù ÁÙ, 2ÀÌ¸é µÎ ¹ø°, µîµî). ÀÌ°ÍÀº Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.

+

+ ÁöÁ¤µÈ ÁÙ ¹øÈ£°¡ ÆÄÀÏÀÇ ÁÙ °³¼öº¸´Ù Å©¸é, ErrorLevelÀº 1ÀÌ ¼³Á¤µÇ°í OutputVar´Â ¹Ù²îÁö ¾Ê½À´Ï´Ù. ÀÌ°ÍÀº ¶ÇÇÑ ÁöÁ¤µÈ ÁÙ ¹øÈ£°¡ ÆÄÀÏÀÇ ¸¶Áö¸· ÁÙÀÌÁö¸¸ ±× ÁÙÀÌ ºñ¾î ÀÖ°í »õÁÙ/CRLF·Î ³¡³ªÁö ¾ÊÀº °æ¿ì¿¡µµ ÀϾ´Ï´Ù.

+ +
+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ErrorLevelÀº ¼º°øÇϸé 0ÀÌ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 1ÀÌ ¼³Á¤µÇ°í OutputVarÀÇ ¿ø·¡ ³»¿ëµµ ¹Ù²îÁö ¾Ê½À´Ï´Ù.

+

+A_LastError´Â ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú°¡ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+ÀÌ ¸í·É¾î´Â ÀÛÀº ÆÄÀϵ鿡¸¸ »ç¿ëÇÒ °ÍÀ» °­·Â ±ÇÇÕ´Ï´Ù. ¶Ç´Â ÇÑ ÁÙÀÇ ÅؽºÆ®¸¸ ÇÊ¿äÇÑ °æ¿ì¿¡ »ç¿ëÇϽʽÿÀ. ¹æ´ëÇÑ °³¼öÀÇ ÁÙÀ» ½ºÄµÇÏ°í ó¸®ÇÏ·Á¸é (ÇÑ ÁÙ¾¿), ÃÖ°íÀÇ ¼öÇ༺À» À§ÇØ ÆÄÀÏ-Àϱâ ȸµ¹À̸¦ »ç¿ëÇϽʽÿÀ. Àüü ÆÄÀÏÀ» º¯¼ö ¾ÈÀ¸·Î ÀÐ¾î µéÀÌ·Á¸é, FileRead¸¦ »ç¿ëÇϽʽÿÀ.

+

+ÁÙ¿¡¼­ ¼±µÎ¿Í ÈĹÌÀÇ ÅÇ°ú ½ºÆäÀ̽º´Â OutputVar¿¡ ¾º¿©Áö°ÚÁö¸¸, ÁÙ ³¡ÀÇ ¶óÀÎÇÇµå ¹®ÀÚ (`n)´Â ±×·¸Áö ¾Ê½À´Ï´Ù. ÅÇ°ú ½ºÆäÀ̽º´Â º¯¼ö ¾ç³¡À¸·ÎºÎÅÍ °È¾î³¾ ¼ö ÀÖ½À´Ï´Ù. AutoTrimÀÌ ÄÑÁ® ÀÖ´Â (±âº»°ª) »óÅ¿¡¼­ ÇÒ´çÇÏ¸é µË´Ï´Ù. ¿¹¸¦ µé¾î: MyLine = %MyLine%.

+

+65,534 ¹®ÀÚ ±æÀÌ ±îÁö ÁÙÀ» ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù. ÁÙ ±æÀÌ°¡ ÀÌ Á¦ÇÑÀ» ÃÊ°úÇϸé, ³ª¸ÓÁö ¹®ÀÚµéÀº ´ÙÀ½ ¸í·É¾î·Î ¿­¶÷ÇÒ ¼ö ¾ø½À´Ï´Ù (´ë½Å¿¡ FileRead ¶Ç´Â ÆÄÀÏ-Àбâ ȸµ¹À̸¦ »ç¿ëÇϽʽÿÀ).

+ +

°ü·Ã Ç׸ñ

+

+FileOpen/File.ReadLine(), FileRead, FileAppend, ÆÄÀÏ-Àбâ ȸµ¹ÀÌ, IniRead

+ +

¿¹Á¦

+
Loop
+{
+    FileReadLine, line, C:\My Documents\ContactList.txt, %A_Index%
+    if ErrorLevel
+        break
+    MsgBox, 4, , ÁÙ #%A_Index%´Â "%line%"ÀÔ´Ï´Ù. °è¼ÓÇϽðڽÀ´Ï±î?
+    IfMsgBox, No
+        return
+}
+MsgBox, ÆÄÀÏ ³¡¿¡ µµ´ÞÇß½À´Ï´Ù. ¶Ç´Â ¹®Á¦°¡ ÀÖ¾ú½À´Ï´Ù.
+return
+ + + diff --git a/src/docs/commands/FileRecycle.htm b/src/docs/commands/FileRecycle.htm new file mode 100644 index 0000000..2b4afad --- /dev/null +++ b/src/docs/commands/FileRecycle.htm @@ -0,0 +1,41 @@ + + + + +FileRecycle + + + + + + + +

FileRecycle

+ +

ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ ÈÞÁöÅëÀ¸·Î º¸³À´Ï´Ù.

+ +
FileRecycle, FilePattern
+

¸Å°³º¯¼ö

+
+ +
FilePattern
+

+ ÆÄÀÏ À̸§À̰ųª C:\Temp\*.tmp¿Í °°Àº ¿ÍÀϵåÄ«µå ÆÐÅÏ. FilePatternÀº Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ.

+

Àüü µð·ºÅ丮¸¦ ¹ö¸®·Á¸é, µÚ¿¡ ¿ª»ç¼± ¾øÀÌ À̸§¸¸ ÁÖ¸é µË´Ï´Ù.

+ +
+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆÐÇÏ¸é ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1ÀÌ ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

³íÆò

+

SHFileOperationÀÌ ½ÇÁ¦ ÀÛ¾÷À» Çϴµ¥ »ç¿ëµË´Ï´Ù. ÀÌ ÇÔ¼ö´Â ÆÄÀÏÀÌ ³Ê¹« Ä¿¼­ ÈÞÁöÅë¿¡ µé¾î°¡Áö ¾ÊÀ¸¸é ¿µ±¸È÷ Áö¿ó´Ï´Ù; v1.0.96 ÇöÀç ÀÌ·± ÀÏÀÌ ÀϾ±â Àü¿¡ °æ°í¸¦ º¸¿©ÁÝ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

FileRecycleEmpty, FileDelete, FileCopy, FileMove

+

¿¹Á¦

+
FileRecycle, C:\temp files\*.tmp
+ + + diff --git a/src/docs/commands/FileRecycleEmpty.htm b/src/docs/commands/FileRecycleEmpty.htm new file mode 100644 index 0000000..7220a2e --- /dev/null +++ b/src/docs/commands/FileRecycleEmpty.htm @@ -0,0 +1,41 @@ + + + + +FileRecycleEmpty + + + + + + + +

FileRecycleEmpty

+ +

ÈÞÁöÅëÀ» ºñ¿ó´Ï´Ù.

+ +
FileRecycleEmpty [, DriveLetter]
+

¸Å°³º¯¼ö

+
+ +
DriveLetter
+

»ý·«Çϸé, ¸ðµç µå¶óÀ̺꿡 ´ëÇÏ¿© ÈÞÁöÅëÀ» Ä¡¿ó´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, C:\¿Í °°ÀÌ µå¶óÀ̺긦 ÁöÁ¤ÇϽʽÿÀ

+ +
+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆÐÇÏ¸é ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevel´Â ¹®Á¦°¡ ÀÖÀ¸¸é 1 ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+ÀÌ ¸í·É¾îÀº MS Internet Explorer 4 ÀÌ»óÀÌ ¼³Ä¡µÇ¾î Àֱ⸦ ¿ä±¸ÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

FileRecycle, FileDelete, FileCopy, FileMove

+

¿¹Á¦

+
FileRecycleEmpty, C:\
+ + + diff --git a/src/docs/commands/FileRemoveDir.htm b/src/docs/commands/FileRemoveDir.htm new file mode 100644 index 0000000..310692d --- /dev/null +++ b/src/docs/commands/FileRemoveDir.htm @@ -0,0 +1,45 @@ + + + + +FileRemoveDir + + + + + + + +

FileRemoveDir

+ +

Æú´õ¸¦ »èÁ¦ÇÕ´Ï´Ù.

+ +
FileRemoveDir, DirName [, Recurse?]
+

¸Å°³º¯¼ö

+
+ +
DirName
+

»èÁ¦ÇÒ µð·ºÅ丮ÀÇ À̸§. Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£ÁÖÇÕ´Ï´Ù.

+ +
ÇÏÀ§ Æú´õ±îÁö »èÁ¦ÇÒ °ÍÀΰ¡?
+

0 (±âº»°ª): DirName¿¡ Æ÷ÇÔµÈ ÆÄÀÏ°ú ÇÏÀ§-µð·ºÅ丮´Â Áö¿ìÁö ¾Ê½À´Ï´Ù. + ÀÌ °æ¿ì, DirNameÀÌ ºñ¾î ÀÖÁö ¾ÊÀ¸¸é, ¾Æ¹« ÇàÀ§µµ ÀϾÁö ¾ÊÀ¸¸ç ErrorLevelÀº 1·Î ¼³Á¤µË´Ï´Ù.

+

1: ¸ðµç ÆÄÀÏ°ú ÇÏÀ§µð·ºÅ丮¸¦ »èÁ¦ÇÕ´Ï´Ù (À©µµ¿ìÁîÀÇ ¸í·É¾î "rmdir /S").

+

ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù. ½ÉÁö¾î ÂüÀ̳ª °ÅÁþÀ¸·Î Æò°¡µÇ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù (Âü°ú °ÅÁþÀº ³»ºÎÀûÀ¸·Î 1°ú 0À¸·Î ÀúÀåµÇ±â ¶§¹®ÀÔ´Ï´Ù).

+ +
+

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1, ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

¾øÀ½

+ +

°ü·Ã Ç׸ñ

+

FileCreateDir, FileDelete

+

¿¹Á¦

+
FileRemoveDir, C:\Download Temp
+FileRemoveDir, C:\Download Temp, 1
+ + + diff --git a/src/docs/commands/FileSelectFile.htm b/src/docs/commands/FileSelectFile.htm new file mode 100644 index 0000000..5380a9e --- /dev/null +++ b/src/docs/commands/FileSelectFile.htm @@ -0,0 +1,126 @@ + + + + +FileSelectFile + + + + + + + +

FileSelectFile

+ +

»ç¿ëÀÚ°¡ ÆÄÀÏÀ» ¿­°Å³ª ÀúÀåÇÒ ¼ö Àִ ǥÁØ ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÝ´Ï´Ù.

+ +
FileSelectFile, OutputVar [, Options, RootDir\Filename, Prompt, Filter]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

»ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ÆÄÀÏÀ̸§À» ÀúÀåÇÒ º¯¼öÀÇ À̸§. »ç¿ëÀÚ°¡ Ãë¼Ò¸¦ Çϸé (Áï, ÆÄÀÏÀ» ¼±ÅÃÇÏÁö ¾ÊÀ¸¸é) ÀÌ °ªÀº ºñ¿öÁý´Ï´Ù.

+ +
¿É¼Ç
+

»ý·«Çϸé, 0ÀÌ ±âº»°ªÀÌ µË´Ï´Ù. ¾Æ·¡ ¿É¼ÇÀ» Çϳªµµ ÁöÁ¤ÇÏÁö ¾ÊÀº °Í°ú °°½À´Ï´Ù.

+

M: ´ÙÁß-¼±ÅÃ. ±âÈ£ MÀ» ÁöÁ¤ÇÏ¸é »ç¿ëÀÚ´Â shift-click, control-click, ¶Ç´Â ±âŸ ¼ö´ÜÀ» ÅëÇÏ¿© ÆÄÀÏÀ» Çϳª ÀÌ»ó ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. MÀº ¼±ÅÃÀûÀ¸·Î ´ÙÀ½¿¡ ¼ýÀÚ°¡ ¾Æ·¡¿Í °°ÀÌ µû¶ó ¿Ã ¼ö ÀÖ½À´Ï´Ù (¿¹¸¦ µé¾î, M°ú M1Àº ¸ðµÎ À¯È¿ÇÕ´Ï´Ù). °³º°ÀûÀ¸·Î ÆÄÀÏÀ» ÃßöÇÏ·Á¸é, ÀÌ ÆäÁöÀÌ ÇÏ´ÜÀÇ ¿¹Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

S: ÀúÀå ¹öÆ°ÀÔ´Ï´Ù. ±âÈ£ S¸¦ ÁöÁ¤ÇÏ¸é ´ëÈ­»óÀÚ°¡ ¾ðÁ¦³ª Open ´ë½Å¿¡ Save ¹öÆ°À» º¸¿©ÁÝ´Ï´Ù. S´Â ¼±ÅÃÀûÀ¸·Î ´ÙÀ½¿¡ ¼ýÀÚ°¡ (¶Ç´Â ¼ýÀÚµéÀÇ ÇÕ)ÀÌ ¾Æ·¡¿¡ ±â¼úÇÏ´Â ¹Ù¿Í °°ÀÌ (¿¹¸¦ µé¾î, S¿Í S24´Â ¸ðµÎ À¯È¿ÇÕ´Ï´Ù) µû¶ó ¿Ã ¼ö ÀÖ½À´Ï´Ù.

+

M°ú S°¡ ¾ø´õ¶óµµ, ´ÙÀ½ ¼ýÀÚ´Â »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿©·¯ ¼ýÀÚ¸¦ ÁöÁ¤ÇÏ·Á¸é, ÇÕÃļ­ ÁöÁ¤ÇÏ¸é µË´Ï´Ù. ¿¹¸¦ µé¾î 8°ú 16À» ÁöÁ¤ÇÏ·Á¸é, ¼ýÀÚ 24¸¦ ÁöÁ¤ÇÕ´Ï´Ù.

+

1: ÆÄÀÏÀÌ Á¸ÀçÇØ¾ß ÇÔ
+ 2: °æ·Î°¡ Á¸ÀçÇØ¾ß ÇÔ
+ 8: »õ ÆÄÀÏÀ» ¸¸µé ÇÁ·ÒÇÁÆ®
+ 16: ÆÄÀÏÀ» µ¤¾î¾µ ÇÁ·ÒÇÁÆ®
+ 32 [v1.0.43.09+]: + ´ÜÃàÆÄÀÏ (.lnk)Àº ¸ñÇ¥·Î °áÁ¤µÇÁö ¾Ê°í ±×´ë·Î ¼±Åõ˴ϴÙ. ÀÌ ¿É¼ÇÀº ¶Ç Æú´õ ´ÜÃàÅ°¸¦ ÅëÇÏ¿© Æú´õ¸¦ Ç×ÇÏÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù.

+

"µ¤¾î¾µ ÇÁ·ÒÇÁÆ®" ¿É¼ÇÀÌ "¸¸µé ÇÁ·ÒÇÁÆ®" ¿É¼Ç ¾øÀÌ Á¸ÀçÇϸé, ´ëÈ­»óÀÚ´Â Open ¹öÆ°ÀÌ ¾Æ´Ï¶ó Save ¹öÆ°ÀÌ Æ÷ÇԵ˴ϴÙ. ÀÌ ÇàÀ§´Â À©µµ¿ìÁîÀÇ ±«ÀÌÇÑ ÇàÀ§ ¶§¹®ÀÔ´Ï´Ù.

+ +
RootDir\Filename
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ´ÙÀ½ Áß Çϳª¸¦ ´ã°í ÀÖ½À´Ï´Ù:

+

RootDir: ·çÆ® (½ÃÀÛ) µð·ºÅ丮, Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Â ÇÏÀ§Æú´õ¶ó°í °£ÁÖÇÕ´Ï´Ù. »ý·«Çϰųª ºñ¾î ÀÖÀ¸¸é, ½ÃÀÛ µð·ºÅ丮´Â OS ¹öÀü¿¡ µû¶ó ±âº»°ªÀÌ °áÁ¤µË´Ï´Ù (¾Õ¿¡¼­ FileSelectFileÀ» »ç¿ëÇÏ´Â µ¿¾È »ç¿ëÀÚ°¡ °¡Àå ÃÖ±Ù¿¡ ¼±ÅÃÇÑ µð·ºÅ丮°¡ µÉ °¡´É¼ºÀÌ ³ô½À´Ï´Ù). Windows XP/2003 ÀÌÀüÀÇ v1.0.43.10+¿¡¼­, ::{20d04fe0-3aea-1069-a2d8-08002b30309d} (Áï, ³» ÄÄÇ»ÅÍ)¿Í °°Àº CLSIDµµ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì CLSID µÚ¿¡ ³ªÅ¸³ª´Â ÇÏÀ§µð·ºÅ丮°¡ ³ªÅ¸³ª¸é ¸ðµÎ ¿ª»ç¼±À¸·Î ³¡³ª¾ß ÇÕ´Ï´Ù (±×·¸Áö ¾ÊÀ¸¸é, ¸¶Áö¸· ¿ª»ç¼± ´ÙÀ½ÀÇ ¹®ÀÚ¿­Àº ¾Æ·¡¿Í °°ÀÌ ±âº» ÆÄÀÏ À̸§À¸·Î ¹ø¿ªµË´Ï´Ù).

+

Filename: ´ëÈ­»óÀÚÀÇ ÆíÁý Çʵ忡 óÀ½¿¡ º¸¿©ÁÙ ±âº» ÆÄÀÏÀ̸§. (°æ·Î ¾ø´Â) ³¯ ÆÄÀÏÀ̸§¸¸ º¸¿©ÁÝ´Ï´Ù. ´ëÈ­»óÀÚ°¡ ¿Ã¹Ù¸£°Ô º¸¿©Áöµµ·Ï È®ÀÎÇÏ·Á¸é, À¯È¿ÇÏÁö ¾ÊÀº ¹®ÀÚµéÀÌ ³ªÅ¸³ªÁö ¾Êµµ·Ï È®ÀÎÇϽʽÿÀ (¿¹¸¦ µé¾î /<|:").

+

¿¹Á¦:

+
C:\My Pictures\Default Image Name.gif  ; RootDir°ú Filename ¸ðµÎ ³ªÅ¸³³´Ï´Ù.
+C:\My Pictures  ; RootDir¸¸ ³ªÅ¸³³´Ï´Ù.
+My Pictures  ; RootDir¸¸ ³ªÅ¸³ª°í, ±×ÀÇ À§Ä¡´Â ÇöÀç ÀÛ¾÷ µð·ºÅ丮¿¡ »ó´ëÀûÀÔ´Ï´Ù.
+My File  ; Filename¸¸ ³ªÅ¸³³´Ï´Ù (±×·¯³ª "My File"ÀÌ Æú´õ·Î Á¸ÀçÇϸé,  RootDir¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ).
+ +
Prompt
+

»ç¿ëÀÚ¿¡°Ô ¹«¾ùÀ» ÇÒÁö â¿¡ º¸¿©ÁÖ´Â ÅؽºÆ®. »ý·«Çϰųª ºñ¾î ÀÖÀ¸¸é, ±âº»°ªÀº "Select File - %A_SCRIPTNAME%" (Áï, ÇöÀç ½ºÅ©¸³Æ®ÀÇ À̸§)ÀÌ µË´Ï´Ù.

+ +
Filter
+

´ëÈ­»óÀÚ¿¡ ¾î¶² À¯ÇüÀÇ ÆÄÀÏÀ» º¸¿©ÁÙÁö ³ªÅ¸³À´Ï´Ù.

+

¿¹Á¦: Documents (*.txt)
+ ¿¹Á¦: Audio (*.wav; *.mp2; *.mp3)

+

»ý·«Çϸé, ÇÊÅÍ ±âº»°ªÀº ¸ðµç ÆÄÀÏ (*.*)ÀÌ µË´Ï´Ù. ÅؽºÆ® ¹®¼­ (*.txt)¸¦ À§ÇÑ ¿É¼Çµµ ´ëÈ­»óÀÚÀÇ "ÆÄÀÏÀÇ Á¾·ù" ¸Þ´º¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

±×·¸Áö ¾ÊÀ¸¸é, ÇÊÅÍ´Â Áö½ÃµÈ ¹®ÀÚ¿­À» »ç¿ëÇÏ°í ¶Ç ´ëÈ­»óÀÚÀÇ "ÆÄÀÏ À¯Çü" µå·Ó-´Ù¿î ¸®½ºÆ®¿¡ ¸ðµç ÆÄÀÏ (*.*)¿¡ ´ëÇÑ ¿É¼Çµµ Á¦°øÇÕ´Ï´Ù. ÇÊÅÍ¿¡ ¿©·¯ ÆÄÀÏ È®ÀåÀÚ¸¦ Æ÷ÇÔÇÏ·Á¸é À§¿¡¼­ ¿¹½ÃÇÑ ¹Ù¿Í °°ÀÌ »çÀ̸¦ ½Ö¹ÝÁ¡À¸·Î ºÐ¸®ÇϽʽÿÀ.

+ +
+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ErrorLevelÀº »ç¿ëÀÚ°¡ ÆÄÀÏ ¼±ÅþøÀÌ ´ëÈ­»óÀÚ¸¦ Ãë¼ÒÇϸé (¿¹¸¦ µé¾î Ãë¼Ò ¹öÆ°À» ´©¸£¸é) 1ÀÌ ¼³Á¤µË´Ï´Ù. ½Ã½ºÅÛÀÌ ´ëÈ­»óÀÚ¸¦ º¸¿©Áֱ⸦ °ÅºÎÇÏ´Â °æ¿ì¿¡µµ 1ÀÌ ¼³Á¤µË´Ï´Ù (°ÅÀÇ ¾øÀ½). ±×·¸Áö ¾ÊÀ¸¸é, 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+»ç¿ëÀÚ°¡ ¾Æ¹« °Íµµ ¼±ÅÃÇÏÁö ¾Ê¾Ò´Ù¸é (¿¹, CANCEL ´©¸§), OutputVar´Â ºñ¿öÁý´Ï´Ù.

+

+´ÙÁß-¼±ÅÃÀÌ ²¨Á® ÀÖÀ¸¸é, OutputVarÀº »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ´ÜÀÏ ÆÄÀÏÀÇ Àüü °æ·Î¿Í À̸§ÀÌ ¼³Á¤µË´Ï´Ù.

+

+M ¿É¼Ç (´ÙÁß-¼±ÅÃ)ÀÌ ÄÑÁ® ÀÖÀ¸¸é, OutputVar´Â Ç׸ñ ¸®½ºÆ®°¡ ¼³Á¤µË´Ï´Ù. ¸¶Áö¸·À» Á¦¿ÜÇÏ°í °¢ Ç׸ñÀº ¶óÀÎÇǵå (`n) ¹®ÀÚ·Î ³¡³³´Ï´Ù. ¸®½ºÆ®¿¡¼­ ù Ç׸ñÀº ¼±ÅÃµÈ ¸ðµç ÆÄÀÏÀ» ´ãÀº °æ·ÎÀÔ´Ï´Ù (ÀÌ °æ·Î´Â C:\¿Í °°ÀÌ ·çÆ® Æú´õÀÏ ¶§¸¸ ¿ª»ç¼±À¸·Î ³¡³³´Ï´Ù). ´Ù¸¥ Ç׸ñÀº ¼±ÅÃµÈ ÆÄÀÏÀ̸§µéÀÔ´Ï´Ù (°æ·Î ¾øÀ½). ¿¹¸¦ µé¾î:

+ +
C:\My Documents\New Folder [¾Æ·¡ÀÇ ¸ðµç ÆÄÀÏÀÌ °ÅÁÖÇÏ´Â °æ·ÎÀÔ´Ï´Ù]
+test1.txt [¸Ç ÆÄÀÏÀ̸§ÀÔ´Ï´Ù: °æ·Î ¾øÀ½]
+test2.txt
+... etc.
+

(ÀÌ ÆäÀÌÁö ÇÏ´ÜÀÇ ¿¹Á¦¿¡¼­ ÀÌ ÆÄÀϵéÀ» Çϳª¾¿ ÃßÃâÇÏ´Â ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.)

+

+´ÙÁß-¼±ÅÃÀÌ ÄÑÁ® ÀÖÀ¸¸é, ¼±ÅÃµÈ ÆÄÀÏ À̸§ÀÇ ±æÀÌÀÇ ÇÕÀº 64 KB·Î Á¦Çѵ˴ϴÙ. ÀÌ Á¤µµ¸é º¸Åë ¼ö õ °³ÀÇ ÆÄÀÏÀ» ´ãÀ» Á¤µµ·Î ÃæºÐÇÏÁö¸¸, ±× ÇѰ踦 ÃÊ°úÇϸé OutputVar´Â ºñ¿öÁý´Ï´Ù.

+

+GUI âÀº Gui +OwnDialogs¸¦ »ç¿ëÇÏ¿© ¸ð´Þ ÆÄÀÏ-¼±Åà ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÙ ¼öµµ ÀÖ½À´Ï´Ù. ¸ð´Þ ´ëÈ­»óÀÚ´Â ³¡³¯ ¶§±îÁö »ç¿ëÀÚ°¡ GUI â°ú »óÈ£ÀÛ¿ëÇÏ´Â °ÍÀ» ¸·½À´Ï´Ù.

+

+¾Ë·ÁÁø ÇÑ°è: FileSelectFile ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÖ´Â µ¿¾È¿¡ ±âµ¿ÇÑ Å¸À̸Ӵ »ç¿ëÀÚ°¡ ´ëÈ­»óÀÚ ¾È¿¡ Ŭ¸¯ÇÑ °ÍÀ» ŸÀ̸Ӱ¡ ³¡³¯ ¶§±îÁö ¿¬±âÇÕ´Ï´Ù. À̸¦ ¿ìȸÇÏ·Á¸é, ³¡³ª´Âµ¥ ½Ã°£ÀÌ ¸¹ÀÌ °É¸®´Â ¼­ºê·çƾÀÇ Å¸À̸Ӹ¦ ÇÇÇϰųª, ¸ðµç ŸÀ̸Ӹ¦ ¸ð´Þ ´ëÈ­»óÀÚ¸¦ »ç¿ëÇÏ´Â µ¿¾È¿¡´Â ²ô½Ê½Ã¿À:

+ +
Thread, NoTimers
+FileSelectFile, OutputVar
+Thread, NoTimers, false
+

+Æó±âµÈ ¿É¼Ç: v1.0.25.06+¿¡¼­ ´ÙÁß-¼±Åà ¿É¼Ç "4"´Â Æó±âµÇ¾ú½À´Ï´Ù. ±×·¸Áö¸¸, ¿¹Àü ½ºÅ©¸³Æ®¿ÍÀÇ È£È¯À» À§ÇØ, ¿©ÀüÈ÷ ¿¹Àü°ú °°ÀÌ ÀÛµ¿ÇÕ´Ï´Ù. ƯÈ÷, »ç¿ëÀÚ°¡ ¿ÀÁ÷ ÆÄÀÏÀ» Çϳª¸¸ ¼±ÅÃÇϸé, OutputVar¿¡ Àüü °æ·Î¿Í À̸§ ±×¸®°í ´ÙÀ½¿¡ ¶óÀÎÇÇµå ¹®ÀÚ(`n)°¡ ´ã±é´Ï´Ù. »ç¿ëÀÚ°¡ ¿©·¯ ÆÄÀÏÀ» ¼±ÅÃÇϸé, ±× Çü½ÄÀº À§¿¡ ±â¼úÇÑ M ¿É¼ÇÀ» »ç¿ëÇÑ °Í°ú °°½À´Ï´Ù. ´Ü, ¸¶Áö¸· Ç׸ñµµ ¿ª½Ã ¶óÀÎÇǵå·Î (`n) ³¡³ª´Â Á¡ÀÌ ´Ù¸¨´Ï´Ù.

+

°ü·Ã Ç׸ñ

+

+FileSelectFolder, MsgBox, InputBox, ToolTip, GUI, CLSID List, ÆÄ½Ì È¸µ¹ÀÌ, SplitPath

+

+¶ÇÇÑ, ¿î¿µ üÁ¦´Â »ç¿ëÀÚ°¡ ±Û²ÃÀ̳ª »ö±ò, ¶Ç´Â ¾ÆÀÌÄÜÀ» ¼±ÅÃÇÒ ¼ö Àִ ǥÁØ ´ëÈ­»óÀÚ¸¦ Á¦°øÇÕ´Ï´Ù. ÀÌ·± ´ëÈ­»óÀÚ´Â DllCall()À» ÅëÇÏ¿© º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½¿¡ ¿¹½ÃÇÕ´Ï´Ù: www.autohotkey.com/forum/topic17230.html.

+

¿¹Á¦

+
FileSelectFile, SelectedFile, 3, , Open a file, Text Documents (*.txt; *.doc)
+if SelectedFile =
+    MsgBox, »ç¿ëÀÚ°¡ ¾Æ¹« °Íµµ ¼±ÅÃÇÏÁö ¾Ê¾Ò½À´Ï´Ù.
+else
+    MsgBox, »ç¿ëÀÚ°¡ ´ÙÀ½ ÆÄÀÏÀ» ¼±ÅÃÇß½À´Ï´Ù:`n%SelectedFile%
+
+
+; CLSID ¿¹Á¦ (XP/2003 ÀÌÀü ÇÊ¿ä):
+FileSelectFile, OutputVar,, ::{645ff040-5081-101b-9f08-00aa002f954e}  ; ÈÞÁöÅë.
+
+; ´ÙÁß-¼±Åà ¿¹Á¦:
+FileSelectFile, files, M3  ; M3 = ±âÁ¸ÀÇ ÆÄÀÏÀ» ´ÙÁß ¼±ÅÃÇÕ´Ï´Ù.
+if files =
+{
+    MsgBox, »ç¿ëÀÚ°¡ Ãë¼Ò ¹öÆ°À» ´­·¶½À´Ï´Ù.
+    return
+}
+Loop, parse, files, `n
+{
+    if a_index = 1
+        MsgBox, ¼±ÅÃµÈ ÆÄÀÏÀº ¸ðµÎ  %A_LoopField% ¾È¿¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.
+    else
+    {
+        MsgBox, 4, , ´ÙÀ½ ÆÄÀÏÀº %A_LoopField%ÀÔ´Ï´Ù. °è¼ÓÇϽðڽÀ´Ï±î?
+        IfMsgBox, No, break
+    }
+}
+return
+ + + diff --git a/src/docs/commands/FileSelectFolder.htm b/src/docs/commands/FileSelectFolder.htm new file mode 100644 index 0000000..8874c49 --- /dev/null +++ b/src/docs/commands/FileSelectFolder.htm @@ -0,0 +1,83 @@ + + + + +FileSelectFolder + + + + + + + +

FileSelectFolder

+ +

»ç¿ëÀÚ°¡ Æú´õ¸¦ ¼±ÅÃÇÒ ¼ö Àִ ǥÁØ ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÝ´Ï´Ù.

+ +
FileSelectFolder, OutputVar [, StartingFolder, Options, Prompt]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

»ç¿ëÀÚ°¡ ¼±ÅÃÇÑ Æú´õ¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§. »ç¿ëÀÚ°¡ Ãë¼ÒÇÏ¸é ºñ¿öÁý´Ï´Ù (Áï, Æú´õ¸¦ ¼±ÅÃÇÏÁö ¾ÊÀ¸¸é). »ç¿ëÀÚ°¡ ·çÆ® µð·ºÅ丮¸¦ ¼±ÅÃÇϸé (¿¹, C:\), OutputVar¿¡´Â ¿ª»ç¼±ÀÌ µÚ¿¡ Æ÷ÇԵ˴ϴÙ. ÀÌ°ÍÀÌ ½È´Ù¸é, ´ÙÀ½°ú °°ÀÌ Á¦°ÅÇϽʽÿÀ:

+
FileSelectFolder, Folder
+Folder := RegExReplace(Folder, "\\$")  ; Removes the trailing backslash, if present.
+ +
StartingFolder
+

+ ºñ¾î Àְųª »ý·«Çϸé, ´ëÈ­»óÀÚÀÇ ÃÖÃÊ ¼±ÅÃÀÌ »ç¿ëÀÚÀÇ ³»¹®¼­ Æú´õ°¡ µË´Ï´Ù (¶Ç´Â ³»ÄÄÇ»Å͵µ °¡´É). ::{20d04fe0-3aea-1069-a2d8-08002b30309d} (Áï, ³»ÄÄÇ»ÅÍ)¿Í °°Àº CLSID Æú´õ¸¦ ÁöÁ¤Çϸé ƯÁ¤ÇÑ Æú´õ¿¡¼­ Ç×Çظ¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ ±×·¸Áö ¾ÊÀ¸¸é, ÀÌ ¸Å°³º¯¼öÀÇ °¡Àå ÈçÇÑ »ç¿ë¹ýÀº º°Ç¥ ´ÙÀ½¿¡ µå¶óÀ̺곪 Æú´õÀÇ Àý´ë °æ·Î°¡ µû¶ó¿Í ÃÖÃÊ·Î ¼±ÅõǴ °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, *C:\Àº óÀ½¿¡ C µå¶óÀ̺긦 ¼±ÅÃÇÕ´Ï´Ù. ºñ½ÁÇÏ°Ô, *C:\My FolderÀ̸é óÀ½¿¡ ±× ƯÁ¤ Æú´õ¸¦ ¼±ÅÃÇÕ´Ï´Ù.

+

+ º°Ç¥´Â »ç¿ëÀÚ¿¡°Ô ½ÃÀÛ Æú´õ·ÎºÎÅÍ À§·Î (·çÆ®ÂÊÀ¸·Î) Ç×Çظ¦ Çã¿ëÇÑ´Ù´Â ¶æÀÔ´Ï´Ù. º°Ç¥°¡ ¾ø´Ù¸é, »ç¿ëÀÚ´Â StartingFolder¾È (¶Ç´Â StartingFolder ÀÚü)¿¡¼­¸¸ ¼±ÅÃÇØ¾ß ÇÕ´Ï´Ù. º°Ç¥¸¦ »ý·«Çϸé ÁÁÀº Á¡Àº StartingFolder°¡ óÀ½¿¡ Æ®¸®°¡ È®ÀåµÈ »óÅ·Πº¸¿©Áø´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌ ´öºÐ¿¡ »ç¿ëÀڴ ù ¹ø° Ç÷¯½º »çÀÎÀ» Ŭ¸¯ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù.

+

+ º°Ç¥°¡ Á¸ÀçÇϸé, À§·Î Ç×ÇØ´Â ¹ÙÅÁÈ­¸é ¸»°í ¼±ÅÃÀûÀ¸·Î Æú´õ·Î Á¦Çѵ˴ϴÙ. ÀÌ·¸°Ô Á¦ÇÑÇÏ·Á¸é º°Ç¥¸¦ ÃÖ»ó´Ü Æú´õÀÇ Àý´ë °æ·Î ¾Õ¿¡ µÎ°í ´ÙÀ½¿¡ Á¤È®ÇÏ°Ô ½ºÆäÀ̽º Çϳª ¶Ç´Â ÅÇ Çϳª¸¦ ¹èÄ¡ÇÏ¸é µË´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­ »ç¿ëÀÚ´Â C:\My Folder À§·Î Ç×ÇØÇÏ´Â °ÍÀÌ Çã¿ëµÇÁö ¾Ê½À´Ï´Ù (±×·¯³ª ÃÖÃÊ ¼±ÅÃÀº C:\My Folder\ProjectsÀÔ´Ï´Ù):
+ C:\My Folder *C:\My Folder\Projects

+
+ +
Options
+

´ÙÀ½ ¼ýÀÚ Áß Çϳª:

+

0: ¾Æ·¡ÀÇ ¿É¼ÇÀ» ¸ðµÎ ºñÈ°¼ºÈ­ ÇÕ´Ï´Ù (Windows 2000 Á¦¿Ü, "»õ Æú´õ ¸¸µé±â" ¹öÆ°ÀÌ ¾î¶°Å³ª ³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù).

+

1 (±âº»°ª): »ç¿ëÀÚ°¡ »õ Æú´õ¸¦ ¸¸µé ¼ö ÀÖ´Â ¹öÆ°ÀÌ Á¦°øµË´Ï´Ù.

+

´õÇϱâ 2 À§ÀÇ ¼ýÀÚ¿¡ ´õÇÏ¸é »ç¿ëÀÚ°¡ Æú´õÀÇ À̸§À» ŸÀÚÇÒ ¼ö ÀÖ´Â ÆíÁý Çʵ带 Á¦°øÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ÀÌ ¸Å°³º¯¼ö¿¡ °ªÀ» 3À» ÁöÁ¤Çϸé ÆíÁý Çʵå¿Í "»õ Æú´õ ¸¸µé±â" ¹öÆ°À» ¸ðµÎ Á¦°øÇÕ´Ï´Ù.

+

´õÇϱâ 4 À§ÀÇ ¼ýÀÚ¿¡ ´õÇϸé BIF_NEWDIALOGSTYLE Ư¼ºÀÌ »ý·«µË´Ï´Ù. 4¸¦ ´õÇϸé WinPE ¶Ç´Â BartPE¿Í °°Àº ¼³Ä¡Àü ȯ°æ(Preinstallation Environment)¿¡¼­µµ È®½ÇÇÏ°Ô FileSelectFolder°¡ Á¦´ë·Î ÀÛµ¿ÇÕ´Ï´Ù. ±×·¸Áö¸¸, ÀÌ·¸°Ô Çϸé "»õ Æú´õ ¸¸µé±â" ¹öÆ°ÀÌ ³ªÅ¸³ªÁö ¾Ê½À´Ï´Ù. Àû¾îµµ Windows XP¿¡¼­´Â È®½ÇÇÏ°Ô ³ªÅ¸³ªÁö ¾Ê½À´Ï´Ù. ["4"´Â v1.0.48+¸¦ ¿ä±¸ÇÕ´Ï´Ù]

+

»ç¿ëÀÚ°¡ ÆíÁý ÇÊµå ¾È¿¡ ¹«È¿ÇÑ Æú´õ À̸§À» ŸÀÚÇϸé, OutputVar´Â »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ À̸§ÀÌ ¾Æ´Ï¶ó Ç×ÇØ Æ®¸®¿¡¼­ ¼±ÅÃµÈ Æú´õ°¡ ¼³Á¤µË´Ï´Ù. Àû¾îµµ Windows XP¿¡¼­´Â ±×·¸½À´Ï´Ù.

+

ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.
+

+ +
Prompt
+

»ç¿ëÀÚ¿¡°Ô ¹«¾ùÀ» ÇØ¾ß ÇÒÁö â¿¡ º¸¿©ÁÖ´Â ÅؽºÆ®. »ý·«µÇ°Å³ª ºñ¾î ÀÖÀ¸¸é, "Select Folder - %A_SCRIPTNAME%" (Áï, ÇöÀç ½ºÅ©¸³Æ®ÀÇ À̸§)ÀÌ ±âº»°ªÀÌ µË´Ï´Ù.

+ +
+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº »ç¿ëÀÚ°¡ Æú´õ¸¦ ¼±ÅÃÇÏÁö ¾Ê°í (¿¹¸¦ µé¾î Ãë¼Ò ¹öÆ°À» ´­·¯¼­) Ãë¼ÒÇϸé 1ÀÌ ¼³Á¤µË´Ï´Ù. ¶Ç ½Ã½ºÅÛÀÌ ´ëÈ­»óÀÚ¸¦ º¸¿©Áֱ⸦ °ÅºÎÇÏ´Â °æ¿ì¿¡µµ 1ÀÌ ¼³Á¤µË´Ï´Ù (°ÅÀÇ ¾øÀ½). ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+GUI âÀº Gui +OwnDialogs¸¦ »ç¿ëÇÏ¿© ¸ð´Þ Æú´õ-¼±Åà ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. ¸ð´Þ ´ëÈ­»óÀÚ¿¡¼­ »ç¿ëÀÚ´Â ´ëÈ­»óÀÚ°¡ ³¡³¯ ¶§±îÁö GUI â°ú »óÈ£ÀÛ¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.

+

¾Ë·ÁÁø ÇÑ°è: FileSelectFolder ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÖ´Â µ¿¾È¿¡ ±âµ¿µÇ´Â ŸÀ̸Ӵ »ç¿ëÀÚ°¡ ´ëÈ­»óÀÚ¿¡¼­ Ŭ¸¯ÇÑ È¿°ú¸¦ ŸÀ̸Ӱ¡ ³¡³¯ ¶§±îÁö ¿¬±âÇÕ´Ï´Ù. À̸¦ ¿ìȸÇÏ·Á¸é, Á¾·á¿¡ ½Ã°£ÀÌ °É¸®´Â ¼­ºê·çƾÀ» °¡Áø ŸÀ̸ÓÀÇ »ç¿ëÀ» ÇÇÇϰųª, ¶Ç´Â ´ëÈ­»óÀÚ°¡ ÀÖ´Â µ¿¾È¿¡ ¸ðµç ŸÀ̸Ӹ¦ ²ô½Ê½Ã¿À:

+ +
Thread, NoTimers
+FileSelectFolder, OutputVar,, 3
+Thread, NoTimers, false
+ +

°ü·Ã Ç׸ñ

+

+FileSelectFile, MsgBox, InputBox, ToolTip, GUI, CLSID List, FileCopyDir, FileMoveDir, SplitPath

+

+¶ÇÇÑ, ¿î¿µ üÁ¦´Â »ç¿ëÀÚ°¡ ±Û²Ã, Ä÷¯, ¶Ç´Â ¾ÆÀÌÄÜÀ» ¼±ÅÃÇÒ ¼ö Àִ ǥÁØ ´ëÈ­»óÀÚ¸¦ Á¦°øÇÕ´Ï´Ù. ÀÌ·± ´ëÈ­»óÀÚ´Â DllCall()À» ÅëÇÏ¿© º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½¿¡ ¿¹½ÃÇÕ´Ï´Ù: www.autohotkey.com/forum/topic17230.html.

+

¿¹Á¦

+
FileSelectFolder, OutputVar, , 3
+if OutputVar =
+    MsgBox, Æú´õ¸¦ ¼±ÅÃÇÏÁö ¾Ê¾Ò½À´Ï´Ù.
+else
+    MsgBox, "%OutputVar%" Æú´õ¸¦ ¼±ÅÃÇß½À´Ï´Ù.
+
+; CLSID ¿¹Á¦:
+FileSelectFolder, OutputVar, ::{20d04fe0-3aea-1069-a2d8-08002b30309d}  ; ³» ÄÄÇ»ÅÍ.
+ + + diff --git a/src/docs/commands/FileSetAttrib.htm b/src/docs/commands/FileSetAttrib.htm new file mode 100644 index 0000000..092b279 --- /dev/null +++ b/src/docs/commands/FileSetAttrib.htm @@ -0,0 +1,88 @@ + + + + +FileSetAttrib + + + + + + + +

FileSetAttrib

+ +

ÆÄÀÏÀ̳ª Æú´õÀÇ ¼Ó¼ºÀ» º¯°æÇÕ´Ï´Ù. ¿ÍÀϵåÄ«µå¸¦ Áö¿øÇÕ´Ï´Ù.

+ +
FileSetAttrib, Attributes [, FilePattern, OperateOnFolders?, Recurse?]
+

¸Å°³º¯¼ö

+
+ +
Attributes
+

º¯°æÇÒ ¼Ó¼º (³íÆò ÂüÁ¶).

+ +
FilePattern
+
´ÜÀÏ ÆÄÀÏÀ̳ª Æú´õÀÇ À̸§, ¶Ç´ÂC:\Temp\*.tmp¿Í °°Àº ¿ÍÀ̵éÄ«µå ÆÐÅÏ. FilePatternÀº Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ. +

»ý·«µÇ¸é, ÆÄÀÏ-ȸµ¹ÀÌ °¡Àå ¾ÈÂÊ¿¡ ½ÎÀÎ ÇöÀç ÆÄÀÏÀÌ ´ë½Å »ç¿ëµË´Ï´Ù.

+ +
OperateOnFolders?
+

0 (±âº»°ª) Æú´õ´Â ó¸®ÇÏÁö ¾Ê½À´Ï´Ù (ÆÄÀϸ¸ ó¸®).
+1 ¿ÍÀϵåÄ«µå ÆÐÅÏ¿¡ ºÎÇÕÇÏ´Â ¸ðµç ÆÄÀÏ°ú Æú´õ´Â 󸮵˴ϴÙ.
+2 ¿ÀÁ÷ Æú´õ¸¸ 󸮵˴ϴ٠(ÆÄÀÏ ºÒ°¡).

+

ÁÖÀÇ: FilePatternÀÌ ¿ÍÀϵåÄ«µå ÆÐÅÏÀÌ ¾Æ´Ï¶ó ´ÜÀÏ Æú´õÀ̸é, ÀÌ ¼³Á¤¿¡ »ó°ü ¾øÀÌ ¾ðÁ¦³ª 󸮵˴ϴÙ.

+

ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.

+ +
Recurse?
+

0 (±âº»°ª) ÇÏÀ§Æú´õ¿¡ Àç±ÍÇØ µé¾î°¡Áö ¾Ê½À´Ï´Ù.
+ 1 ÇÏÀ§Æú´õ¿¡ Àç±ÍÇØ µé¾î°¡ °Å±â¿¡¼­ FilePattern¿¡ ºÎÇÕÇÏ´Â ¸ðµç ÆÄÀÏ°ú Æú´õ¸¦ ó¸®ÇÕ´Ï´Ù. ¸ðµç ÇÏÀ§Æú´õ¿¡ Àç±ÍÇØ µé¾î°©´Ï´Ù. FilePattern¿¡ ºÎÇÕÇÏ´Â Æú´õ¿¡¸¸ Àç±ÍÇÏ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. ±×·¸Áö¸¸, ÆÄÀÏ°ú Æú´õÀÇ ¿ÏÀüÇÑ °æ·Î°¡ 259 ¹®ÀÚ¸¦ ³Ñ¾î°¡¸é ¸¶Ä¡ Á¸ÀçÇÏÁö ¾Ê´Â µí °Ç³Ê ¶Ý´Ï´Ù. ±×·± ÆÄÀÏÀº °ÅÀÇ ¾ø½À´Ï´Ù. ¿Ö³ÄÇϸé, º¸Åë ¿î¿µ üÁ¦°¡ ±×·± ÆÄÀÏÀº »ý¼ºÀ» Çã¿ëÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù.

+

ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevel´Â º¯°æ¿¡ ½ÇÆÐÇÑ ÆÄÀÏÀÇ °³¼ö°¡ ¼³Á¤µÇ°í ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

+ÆÄÀÏÀÌ ¹ß°ßµÇ¸é, A_LastError´Â 0 (¿µ)ÀÌ ¼³Á¤µÇ°Å³ª ¶Ç´Â ¸¶Áö¸· ½ÇÆÐÈÄ Áï½Ã ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú°¡ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é A_LastError´Â ¿Ö ÆÄÀÏÀÌ ¹ß°ßµÇÁö ¾Ê¾Ò´ÂÁö ¾Ë·ÁÁÙ ¿¡·¯ Äڵ尡 ´ã±é´Ï´Ù.

+ +

³íÆò

+

+Attributes ¸Å°³º¯¼ö´Â ¿¬»êÀÚ¿Í ¼Ó¼º ±âÈ£ÀÇ Áý´ÜÀ¸·Î ±¸¼ºµË´Ï´Ù.

+ +

¿¬»êÀÚ:

+ + + + + + + + + + + + + +
+¼Ó¼ºÀ» ÄÕ´Ï´Ù
-¼Ó¼ºÀ» ÄÕ´Ï´Ù
^¼Ó¼ºÀ» Åä±ÛÇÕ´Ï´Ù (ÇöÀç¿Í ¹Ý´ë °ªÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù)
+


+ ¼Ó¼º ±âÈ£:
+ R = READONLY
+ A = ARCHIVE
+ S = SYSTEM
+ H = HIDDEN
+ N = NORMAL (´Ù¸¥ ¼Ó¼º°ú »ç¿ëÇÏÁö ¾ÊÀ» °æ¿ì¿¡¸¸ À¯È¿)
+ O = OFFLINE
+T = TEMPORARY

+

ÁÖÀÇ: ÇöÀç, ÆÄÀÏÀÇ ¾ÐÃà »óÅ´ ´ÙÀ½ ¸í·É¾î·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

FileGetAttrib, FileGetTime, FileSetTime, FileGetSize, FileGetVersion, File-ȸµ¹ÀÌ

+ +

¿¹Á¦

+
FileSetAttrib, +RH, C:\MyFiles\*.*, 1  ; +RH´Â +R+H¿Í µ¿ÀÏÇÕ´Ï´Ù.
+FileSetAttrib, ^H, C:\MyFiles  ; Æú´õÀÇ "hidden" ¼Ó¼ºÀ» Åä±ÛÇÕ´Ï´Ù.
+FileSetAttrib, -R+A, C:\New Text File.txt
+FileSetAttrib, +A, C:\*.ini, , 1  ; C µå¶óÀ̺êÀÇ ¸ðµç .ini ÆÄÀÏÀ» Àç±ÍÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/FileSetTime.htm b/src/docs/commands/FileSetTime.htm new file mode 100644 index 0000000..a700bab --- /dev/null +++ b/src/docs/commands/FileSetTime.htm @@ -0,0 +1,116 @@ + + + + +FileSetTime + + + + + + + +

FileSetTime

+ +

ÆÄÀÏÀ̳ª Æú´õÀÇ ³¯Â¥½Ã°£ µµÀåÀ» º¯°æÇÕ´Ï´Ù. ¿ÍÀϵåÄ«µå¸¦ Áö¿øÇÕ´Ï´Ù.

+ +
FileSetTime [, YYYYMMDDHH24MISS, FilePattern, WhichTime, OperateOnFolders?, Recurse?]
+

¸Å°³º¯¼ö

+
+ +
YYYYMMDDHH24MISS
+

ºñ¾î Àְųª »ý·«Çϸé, ÇöÀç ½Ã°£ÀÌ ±âº»°ªÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ¿¬»ê¿¡ »ç¿ëÇÒ ½Ã°£À» ÁöÁ¤ÇϽʽÿÀ (Çü½Ä¿¡ °üÇؼ­´Â ³íÆòÀ» ÂüÁ¶ÇϽʽÿÀ). + 1601³â ¹Ì¸¸Àº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.

+

ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÔ´Ï´Ù. °á°úÀûÀ¸·Î, ¿©·¯ º¯¼ö¸¦ °áÇÕÇؼ­ ÇϳªÀÇ ½Ã°£µµÀåÀ» Çü¼ºÇÒ ÇÊ¿ä°¡ ÀÖ´Ù¸é, ÆÛ¼¾Æ® »çÀÎ ´ë½Å¿¡ Á¡ ¿¬»êÀÚ¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: FileSetTime, Year . Month . Day, C:\My File.txt.

+ +
FilePattern
+

ÆÄÀÏÀ̳ª Æú´õÀÇ À̸§. ¶Ç´Â C:\Temp\*.tmp¿Í °°Àº ¿ÍÀϵåÄ«µå ÆÐÅÏ. FilePatternÀº Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ.

+

»ý·«Çϸé, ´ë½Å¿¡ ÆÄÀÏ-ȸµ¹ÀÌ °¡Àå ¾ÈÂÊ¿¡ ½ÎÀÎ ÇöÀç ÆÄÀÏÀÌ »ç¿ëµË´Ï´Ù.

+ +
WhichTime
+
¼³Á¤ÇÒ ½Ã°£µµÀå:
+ M = ¼öÁ¤ ½Ã°£ (ÀÌ ¸Å°³º¯¼ö°¡ »ý·«µÇ°Å³ª ºñ¾î ÀÖÀ¸¸é ±âº»°ª)
+ C = »ý¼º ½Ã°£
+ A = ¸¶Áö¸· Á¢±Ù ½Ã°£
+ +
OperateOnFolders?
+

0 (±âº»°ª) Æú´õ´Â 󸮵ÇÁö ¾Ê½À´Ï´Ù (ÆÄÀÏ Àü¿ë).
+1 ¿ÍÀϵåÄ«µå ÆÐÅÏ¿¡ ºÎÇÕÇÏ´Â ¸ðµç ÆÄÀÏ°ú Æú´õ¸¦ ó¸®ÇÕ´Ï´Ù.
+2 Æú´õ¸¸ ó¸®ÇÕ´Ï´Ù (ÆÄÀÏ ºÒ°¡).

+

ÁÖÀÇ: FilePatternÀÌ ¿ÍÀϵåÄ«µå ÆÐÅÏÀÌ ¾Æ´Ï¶ó ´ÜÀÏ Æú´õ¶ó¸é, ¾ðÁ¦³ª ÀÌ ¼³Á¤¿¡ »ó°ü¾øÀÌ Ã³¸®µË´Ï´Ù.

+

ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.

+ +
Recurse?
+

0 (±âº»°ª) ÇÏÀ§Æú´õ ¾ÈÀ¸·Î Àç±ÍÇÏÁö ¾Ê½À´Ï´Ù.
+ 1 ÇÏÀ§Æú´õ ¾ÈÀ¸·Î Àç±ÍÇØ µé¾î°¡ °Å±â¿¡¼­ FilePattern¿¡ ºÎÇÕÇÏ´Â ¸ðµç ÆÄÀÏ°ú Æú´õ¸¦ ó¸®ÇÕ´Ï´Ù. ±×·¸Áö¸¸, ÆÄÀÏ°ú Æú´õ¿¡ 259 ¹®ÀÚ°¡ ³Ñ´Â ¿ÏÀü °æ·Î°¡ ÁöÁ¤µÇ¾î ÀÖÀ¸¸é ¸¶Ä¡ Á¸ÀçÇÏÁö ¾Ê´Â °Íó·³ ¹«½ÃÇÕ´Ï´Ù. ±×·± ÆÄÀÏÀº °ÅÀÇ ¾ø½À´Ï´Ù. ¿Ö³ÄÇÏ¸é º¸Åë ¿î¿µ üÁ¦°¡ ±×·± ÆÄÀÏÀº »ý¼ºÀ» Çã¿ëÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù.

+

ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº º¯°æ¿¡ ½ÇÆÐÇÑ ÆÄÀÏÀÇ °³¼ö°¡ ¼³Á¤µÇ°í ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù. ÁöÁ¤µÈ ½Ã°£µµÀåÀÌ À¯È¿ÇÏÁö ¾ÊÀ¸¸é, ¶Ç´Â FilePatternÀÌ ºó °ªÀ¸·Î °áÁ¤µÇ¸é, ErrorLevelÀº 1ÀÌ ¼³Á¤µË´Ï´Ù.

+

+ÆÄÀÏÀÌ ¹ß°ßµÇ¸é, A_LastError´Â 0 (¿µ)ÀÌ ¼³Á¤µË´Ï´Ù. ¶Ç´Â ¸¶Áö¸· ½ÇÆÐÈÄ Áï½Ã ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú°¡ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é A_LastError¿¡´Â ÆÄÀÏÀÌ ¹ß°ßµÇÁö ¾ÊÀº ÀÌÀ¯¸¦ ³ªÅ¸³»´Â ¿¡·¯ Äڵ尡 ´ã±é´Ï´Ù.

+ +

³íÆò

+

+ÆÄÀÏÀÇ ¸¶Áö¸· Á¢±Ù ½Ã°£Àº NTFS ºÒ·ý¿¡ ºñÇØ FAT16 & FAT32 º¼·ý¿¡¼­´Â Á¤È®ÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.

+

YYYYMMDDHH24MISS Çü½ÄÀÇ ¿ä¼ÒµéÀº ´ÙÀ½°ú °°½À´Ï´Ù:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
YYYY4-ÀÚ¸® ÇØ
MM2-ÀÚ¸® ´Þ (01-12)
DD´ÞÀÇ 2-ÀÚ¸® ³¯ (01-31)
HH24 24-½Ã°£ Çü½ÄÀÇ 2-ÀÚ¸® ½Ã°¢(00-23). ¿¹¸¦ µé¾î, 09´Â ¿ÀÀü 9½ÃÀÌ°í 21Àº ¿ÀÈÄ 9½Ã.
MI2-ÀÚ¸® ºÐ (00-59)
SS2-ÀÚ¸® ÃÊ (00-59)
+

+YYYYMMDDHH24MISS¿¡ ´ëÇÏ¿© ºÎºÐÀûÀ¸·Î ¹®ÀÚ¿­ÀÌ ÁÖ¾îÁö¸é (¿¹, 200403), »ý·«µÈ ³ª¸ÓÁö ¿ä¼ÒµéÀº ´ÙÀ½ÀÇ ±âº» °ªÀ¸·Î ü¿öÁý´Ï´Ù:

+

MM: Month 01
+ DD: Day 01
+ HH24: Hour 00
+ MI: Minute 00
+SS: Second 00

+

+³»Àå º¯¼ö A_Now¿¡ ÇöÁö Áö¿ª ½Ã°¢ÀÌ À§ÀÇ Çü½ÄÀ¸·Î ´ã°Ü ÀÖ½À´Ï´Ù. ºñ½ÁÇÏ°Ô, A_NowUTC¿¡´Â ÇöÀç Ç¥ÁؽÃ(Coordinated Universal Time)°¡ ´ã°Ü ÀÖ½À´Ï´Ù.

+

ÁÖÀÇ: ³¯Â¥-½Ã°£ °ªÀº ºñ±³ÇÏ°í ´õÇÏ°í »¬ ¼ö ÀÖ½À´Ï´Ù. EnvAdd¿Í EnvSub¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù. +¶Ç, ½Ã°£À» ºñ±³ÇÒ ¶§´Â º¸´Ù Å©´Ù¿Í º¸´Ù ÀÛ´Ù¸¦ »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ¿Ö³ÄÇÏ¸é µÑ ¸ðµÎ ¹®ÀÚ¿­ ±æÀÌ°¡ °°±â ¶§¹®ÀÔ´Ï´Ù. ¼ýÀÚ·Î ºñ±³ÇØ¾ß ÇÕ´Ï´Ù; ¿¹¸¦ µé¾î, 20040201´Â ¾ðÁ¦³ª 200401010533º¸´Ù ¼ýÄ¡»ó ÀÛ½À´Ï´Ù (±×·¯³ª ³â´ë±â »óÀ¸·Î´Â ´õ Å®´Ï´Ù). ±×·¡¼­ ´ë½Å¿¡ EnvSub¸¦ »ç¿ëÇÏ¿© µÑ »çÀÌÀÇ ½Ã°£ÀÇ ¾çÀÌ À½¼öÀÎÁö ¾ç¼öÀÎÁö ¾Ë¾Æ³»½Ê½Ã¿À.

+ +

°ü·Ã Ç׸ñ

+

FileGetTime, FileGetAttrib, FileSetAttrib, FileGetSize, FileGetVersion, FormatTime, File-loop, EnvAdd, EnvSub

+ +

¿¹Á¦

+
; ºÎÇÕÇÏ´Â ¸ðµç ÆÄÀÏ¿¡ ´ëÇÏ¿© ¼öÁ¤ ½Ã°£À» ÇöÀç ½Ã°£À¸·Î ¼³Á¤ÇÕ´Ï´Ù:
+FileSetTime, , C:\temp\*.txt
+
+; ¼öÁ¤ ³¯Â¥¸¦ ¼³Á¤ÇÕ´Ï´Ù (½Ã°£Àº ÀÚÁ¤ÀÔ´Ï´Ù):
+FileSetTime, 20040122, C:\My Documents\test.doc
+
+; »ý¼º ½Ã°£À» ¼³Á¤ÇÕ´Ï´Ù. ½Ã°£Àº 4:55pmÀ¸·Î ¼³Á¤µË´Ï´Ù:
+FileSetTime, 200401221655, C:\My Documents\test.doc, C
+
+; ÆÐÅÏ¿¡ ºÎÇÕÇÏ´Â ¸ðµç ÆÄÀÏÀÇ º¯°æ-³¯Â¥¸¦ º¯°æÇÕ´Ï´Ù.
+; ¸¶Áö¸· ¸Å°³ º¯¼ö ¶§¹®¿¡ ºÎÇÕÇÏ´Â Æú´õµµ ¸ðµÎ º¯°æµË´Ï´Ù:
+FileSetTime, 20040122165500, C:\Temp\*.*, M, 1
+ + + diff --git a/src/docs/commands/Finally.htm b/src/docs/commands/Finally.htm new file mode 100644 index 0000000..62ca8df --- /dev/null +++ b/src/docs/commands/Finally.htm @@ -0,0 +1,90 @@ + + + + +Finally + + + + + + + +

Finally [v1.1.14+]

+ +

+try ¼­¼ú¹®ÀÇ ½ÇÇà ÈÄ¿¡ Çϳª ÀÌ»óÀÇ ¼­¼ú¹® (¸í·É¾î ¶Ç´Â Ç¥Çö½Ä)À» Ç×»ó ½ÇÇàÇÕ´Ï´Ù.

+ +
Finally Statement
+
Finally
+{
+    Statements
+}
+

³íÆò

+

+finally¸¦ »ç¿ëÇÒ ¶§¸¶´Ù À§¿¡ ÀÖ´Â try (¶Ç´Â catch) ¼­¼ú¹®¿¡ (¿¬°üµÇ¾î ÀÖ¾î¾ß) ¼ÓÇØ¾ß ÇÕ´Ï´Ù. finally´Â ¾ðÁ¦³ª °¡Àå °¡±î¿î À§ÀÇ try ¼­¼ú¹®¿¡ ¼ÓÇÕ´Ï´Ù. blockÀÌ »ç¿ëµÇ¾î ±× ÇàÀ§°¡ º¯°æµÈ °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù.

+

+Try ¼­¼ú¹®Àº catch ¶Ç´Â finally°¡ Á¸ÀçÇϴ°¡¿¡ µû¶ó ´Ù¸£°Ô ÇൿÇÕ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â Try¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+Goto, break, continue ±×¸®°í returnÀº try ºí·Ï ¾ÈÀÇ Á¦¾î È帧 Áö½Ã¾î¸¦ ¾ïÁ¦ÇÏ·Á¸é ²À ÇÊ¿äÇÏÁö¸¸ finally ºí·ÏÀ» Á¾·áÇÏ´Â µ¥´Â »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ¿¹¸¦ µé¾î, try°¡ return 42¸¦ »ç¿ëÇÑ´Ù¸é, finally ºí·ÏÀÌ ½ÇÇàµÈ ÈÄ °ª 42°¡ ¹ÝȯµË´Ï´Ù. ´ÙÀ½ ¸í·É¾î Áß Çϳª¸¦ »ç¿ëÇÏ¿© finally ºí·ÏÀ» ºüÁ® ³ª¿À·Á´Â ½Ãµµ´Â ÀûÀç ½Ã°£¿¡ ±×·¸Áö ¾ÊÀ¸¸é ½ÇÇà ½Ã°£¿¡ °¡´ÉÇÏ¸é ¿¡·¯·Î ŽÁöµË´Ï´Ù.

+

+v1.1.19.02 ÀÌÀü¿¡¼­, finally ¼­¼ú¹®ÀÌ Á¸ÀçÇϸé try ¾ÈÀÇ Á¦¾î È帧 ¼­¼ú¹®ÀÌ ÀÛµ¿ÇÏÁö ¸øÇÏ´Â ¹ö±×°¡ ÀÖ¾ú½À´Ï´Ù. ReturnÀÌ finally ¾È¿¡¼­ Çã¿ëµÇ´Â ¹ö±×°¡ ÀÖ¾úÁö¸¸, ¿¹¿Ü¸¦ ´øÁ®µµ ¹«½ÃµÇ¾ú½À´Ï´Ù.

+

+One True Brace (OTB) ½ºÅ¸ÀÏÀº ¼±ÅÃÀûÀ¸·Î finally ¸í·É¾î¿Í ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
try {
+    ...
+} finally {
+    ...
+}
+
+try {
+    ...
+} catch e {
+    ...
+} finally {
+    ...
+}
+ +

°ü·Ã Ç׸ñ

+

+Try, Catch, Throw, ºí·Ï

+ +

¿¹Á¦

+ +
try
+{
+    ToolTip, Working...
+    Example1()
+}
+catch e
+{
+    ; e°¡ ´ã°í ÀÖ´Â °´Ã¼¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â, Catch¸¦ ÂüÁ¶ÇϽʽÿÀ.
+    MsgBox, 16,, % "Exception thrown!`n`nwhat: " e.what "`nfile: " e.file
+        . "`nline: " e.line "`nmessage: " e.message "`nextra: " e.extra
+}
+finally
+{
+    ToolTip ; ÅøÆÁÀ» °¨Ãä´Ï´Ù
+}
+
+MsgBox, Done!
+
+; ÀÌ ÇÔ¼ö¿¡ ÀÖ´Â Finally ºí·ÏÀº  û¼Ò ÄÚµå·Î ÇàÀ§ÇÕ´Ï´Ù.
+Example1()
+{
+    try
+        Example2()
+    finally
+        MsgBox, ¿©±â´Â ¿¹¿Ü¿¡ »ó°ü¾øÀÌ ¾ðÁ¦³ª ½ÇÇàµË´Ï´Ù.
+}
+
+; ÀÌ ÇÔ¼ö´Â ºÐÀÌ È¦¼öÀÌ¸é ½ÇÆÐÇÕ´Ï´Ù.
+Example2()
+{
+    if Mod(A_Min, 2)
+        throw Exception("Test exception")
+    MsgBox, Example2 did not fail
+}
+ + + diff --git a/src/docs/commands/For.htm b/src/docs/commands/For.htm new file mode 100644 index 0000000..9291b9b --- /dev/null +++ b/src/docs/commands/For.htm @@ -0,0 +1,132 @@ + + + + +For-loop + + + + + + + +

For-loop [AHK_L 59+]

+ +

ÀÏ·ÃÀÇ ¸í·É¾î¸¦ °´Ã¼ ¾ÈÀÇ °¢ Å°-°ª ½Ö¸¶´Ù ÇÑ ¹ø¾¿ ¹Ýº¹ÇÕ´Ï´Ù.

+ +
For Key [, Value] in Expression
+

¸Å°³º¯¼ö

+
+ +
Key
+

°¢ ¹Ýº¹À» ½ÃÀÛÇÒ ¶§ Å°¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
Value
+

ÇöÀç Å°¿¡ ¿¬°üµÈ °ªÀ» ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
Expression
+
°´Ã¼ ¶Ç´Â °´Ã¼¸¦ ´ã°í ÀÖ´Â º¯¼ö·Î °á°ú°¡ µÇ´Â

Ç¥Çö½Ä.

+ +
+ +

³íÆò

+

ExpressionÀº ȸµ¹ÀÌ°¡ ½ÃÀ۵DZâ Àü¿¡ ÇÑ ¹ø¸¸ Æò°¡µË´Ï´Ù. ±×ÀÇ °á°ú°¡ °´Ã¼°¡ ¾Æ´Ï¸é, ½ÇÇàÀº Áï½Ã ȸµ¹ÀÌ ¸öü ´ÙÀ½ ÁÙ·Î Á¡ÇÁÇÕ´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é, ¿­°Å(enumerator) °´Ã¼¸¦ ¿­¶÷Çϱâ À§ÇÏ¿© ±× °´Ã¼ÀÇ _NewEnum() ¸Þ½îµå°¡ È£ÃâµË´Ï´Ù. °¢ ¹Ýº¹À» ½ÃÀÛÇÒ ¶§, ±× ¿­°Å °´Ã¼ÀÇ Next() ¸Þ½îµå¸¦ »ç¿ëÇÏ¿© ´ÙÀ½ Å°-°ª ½ÖÀ» ¿­¶÷ÇÕ´Ï´Ù. Next()°¡ 0 ¶Ç´Â ºó ¹®ÀÚ¿­À» µ¹·ÁÁÖ¸é, ȸµ¹ÀÌ°¡ ³¡³³´Ï´Ù.

+

+for-ȸµ¹ÀÌ¿Í Á¤È®ÇÏ°Ô µ¿µîÇÏÁö´Â ¾ÊÁö¸¸, ´ÙÀ½ ¿¹Á¦´Â ÀÌ Ã³¸® °úÁ¤À» ½Ã¿¬ÇÕ´Ï´Ù:

+
_enum := (Expression)._NewEnum()
+if IsObject(_enum)
+    while _enum.Next(Key, Value)
+    {
+        ...
+    }
+
+

+±âÁ¸ÀÇ Å°-°ª ½ÖÀº ȸµ¹ÀÌ Áß¿¡ º¯°æÇÒ ¼ö ÀÖÁö¸¸, ±×·¯³ª Å°¸¦ »ðÀÔÇϰųª Á¦°ÅÇϸé Ç׸ñÀ» »©¸Ô°Å³ª ¿©·¯ ¹ø ¹Ýº¹ÇÏ´Â ¹®Á¦¸¦ ¾ß±âÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÑ °¡Áö ¿ìȸåÀº Á¦°ÅÇÒ Å° ¸ñ·ÏÀ» ¸¸µç ´ÙÀ½, ù ¹ø° ȸµ¹ÀÌ°¡ ¿Ï·áµÈ ÈÄ µÎ ¹ø° ȸµ¹À̸¦ »ç¿ëÇÏ¿© Å°¸¦ Á¦°ÅÇÏ´Â °ÍÀÔ´Ï´Ù. Object.Remove(first, last)¸¦ »ç¿ëÇØ È¸µ¹ÀÌ ¾øÀÌ ÇÑ ¹üÀ§ÀÇ Å°¸¦ Á¦°ÅÇÒ ¼ö ÀÖ´Ù´Â °Í¿¡ ÁÖ¸ñÇϽʽÿÀ.

+

+for-ȸµ¹ÀÌ´Â º¸Åë ´ÙÀ½¿¡ ºí·ÏÀÌ µû¶ó¿É´Ï´Ù. ÀÌ ºí·ÏÀº ȸµ¹ÀÌÀÇ ¸öü¸¦ Çü¼ºÇÏ´Â ¼­¼ú¹®ÀÇ Áý´ÜÀÔ´Ï´Ù. ±×·¸Áö¸¸, ¼­¼ú¹®ÀÌ Çϳª¸¸ Àִ ȸµ¹ÀÌ´Â ºí·ÏÀ» ¿ä±¸ÇÏÁö ¾Ê½À´Ï´Ù ("if" ±×¸®°í ±×ÀÇ "else"´Â ÀÌ·± ¸ñÀûÀ¸·Î ÇϳªÀÇ ¼­¼ú¹®À¸·Î °è¼öµË´Ï´Ù). One True Brace (OTB) ½ºÅ¸ÀÏÀ» ¼±ÅÃÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº ¿©´Â È°°ýÈ£¸¦ ±× ¾Æ·¡°¡ ¾Æ´Ï¶ó °°Àº ÁÙ¿¡ ³ªÅ¸³ªµµ·Ï Çã¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: for x, y in z {.

+

+¸ðµç ȸµ¹ÀÌ¿Í ¸¶Âù°¡Áö·Î, Break, Continue ±×¸®°í A_Index¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

COM °´Ã¼

+

+Å°(Key)¿Í °ª(Value)Àº ¿­°ÅÀÚÀÇ Next() ¸Þ½îµå¿¡ Á÷Á¢ °Ç³×Áý´Ï´Ù. °Å±â¿¡ ÇÒ´çµÇ´Â °ªÀº ¾î¶² Á¾·ùÀÇ °´Ã¼°¡ ¿­°ÅµÇ°í Àִ°¡¿¡ µû¶ó ´Ù¸¨´Ï´Ù. COM °´Ã¼¶ó¸é, Key¿¡´Â IEnumVARIANT::Next()°¡ µ¹·ÁÁÖ´Â °ªÀÌ ´ã±â°í Value¿¡´Â ±×ÀÇ variant À¯ÇüÀ» °¡¸®Å°´Â ¹øÈ£°¡ ´ã±é´Ï´Ù. ¿¹¸¦ µé¾î, Scripting.Dictionary °´Ã¼¿Í »ç¿ëµÉ ¶§, °¢ Key´Â »çÀüÀ¸·ÎºÎÅÍ ¿Â Å°°¡ ´ã±â°í Value´Â ÀüÇüÀûÀ¸·Î ¹®ÀÚ¿­¿¡ 8, Á¤¼ö¿¡ 3ÀÌ ´ã±é´Ï´Ù. À¯Çü ÄÚµå ¸ñ·ÏÀº ComObjType¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+[v1.0.96.00+]: SafeArray¸¦ ¿­°ÅÇÒ ¶§, Key¿¡´Â ÇöÀç ¿ø¼Ò°¡ ´ã±â°í Value¿¡´Â ±×ÀÇ variant À¯ÇüÀÌ ´ã±é´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

¿­°Å °´Ã¼, Object.NewEnum(), While-ȸµ¹ÀÌ, Loop, Until, Break, Continue, ºí·Ï

+ +

¿¹Á¦

+
; °´Ã¼ÀÇ Å°-°ª ½ÖÀ» ³ª¿­ÇÕ´Ï´Ù:
+colours := Object("red", 0xFF0000, "blue", 0x0000FF, "green", 0x00FF00)
+; À§ÀÇ Ç¥Çö½ÄÀº ¾Æ·¡ÀÇ "colours" ´ë½Å¿¡ Á÷Á¢ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù:
+for k, v in colours
+    s .= k "=" v "`n"
+MsgBox % s
+
+
; ¿­¸° Ž»ö â°ú ÀÎÅÍ³Ý ÀͽºÇ÷η¯ âÀ» ¸ðµÎ ³ª¿­ÇÕ´Ï´Ù:
+for window in ComObjCreate("Shell.Application").Windows
+    windows .= window.LocationName " :: " window.LocationURL "`n"
+MsgBox % windows
+
/*
+Class: CEnumerator
+
+¼ýÄ¡ Å°¸¦ ¹Ýº¹ÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ´Â ¹ü¿ë ¿­°Å °´Ã¼.
+¹è¿­Àº ¹Ýº¹ Áß¿¡ º¯°æÇؼ­´Â ¾ÈµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ¹Ýº¹ ¹üÀ§°¡ À¯È¿ÇÏÁö ¾Ê°Ô µË´Ï´Ù.
+¹è¿­ °æ°è¿¡ ´ëÇÏ¿© ¸ÂÃã MaxIndex() ÇÔ¼ö¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù.
+1°ú ÃÖ´ë À妽º »çÀÌ¿¡ ºüÁø ¿ø¼Ò°¡ ÀÖ´Ù¸é, ¹Ýº¹µÇ±â´Â ÇÏÁö¸¸ °ªÀº ""°¡ µË´Ï´Ù.
+ÀÌ°ÍÀº ÁøÂ¥ Èñ¼Ò Çà¿­Àº ÀÌ ¿­°Å °´Ã¼°¡ ¼³°è»ó Áö¿øµÇÁö ¾Ê´Â´Ù´Â ¶æÀÔ´Ï´Ù.
+°´Ã¼°¡ ÀÌ ¹Ýº¹ÀÚ¸¦ »ç¿ëÇÏ°Ô ¸¸µé·Á¸é, ´ÙÀ½ ÇÔ¼ö¸¦ Ŭ·¡½º Á¤ÀÇ¿¡ »ðÀÔÇϽʽÿÀ:
+
+    _NewEnum()
+    {
+    	return new CEnumerator(this)
+    }
+
+Source: http://www.autohotkey.com/board/topic/2667-suggestions-on-documentation-improvements/?p=531509
+*/
+
+; ¿­°Å °´Ã¼¸¦ ¹Ýº¹ÇÕ´Ï´Ù
+For k, v in Test
+	MsgBox %k%=%v%
+
+; »ç¿ë¹ýÀ» ½Ã¿¬Çϱâ À§ÇØ Å¬·¡½º¸¦ Å×½ºÆ®ÇÕ´Ï´Ù
+class Test
+{
+	static Data := ["abc", "def", "ghi"]
+
+	_NewEnum()
+	{
+		return new CEnumerator(this.Data)
+	}
+}
+
+class CEnumerator
+{
+	__New(Object)
+	{
+		this.Object := Object
+		this.first := true
+		; ¼Óµµ¸¦ À§ÇØ Ä³½¬ÇÕ´Ï´Ù. ¸ÂÃã MaxIndex() ÇÔ¼ö°¡ ¼öÇ༺´ÉÀÌ ÁÁÁö ¾ÊÀ» °æ¿ì À¯¿ëÇÕ´Ï´Ù.
+		; ±× ÀÀ´äÀº ¹Ýº¹ µ¿¾È¿¡ Å°-°ª ½ÖÀÌ »ðÀÔµÇÁö ¾Ê´Â´Ù´Â ¶æÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¹üÀ§°¡ ¹«È¿°¡ µÇ¾î ¹ö¸± °ÍÀÔ´Ï´Ù.
+		this.ObjMaxIndex := Object.MaxIndex()
+	}
+
+	Next(ByRef key, ByRef value)
+	{
+		if (this.first)
+		{
+			this.Remove("first")
+			key := 1
+		}
+		else
+			key ++
+		if (key <= this.ObjMaxIndex)
+			value := this.Object[key]
+		else
+			key := ""
+		return key != ""
+	}
+}
+ + \ No newline at end of file diff --git a/src/docs/commands/Format.htm b/src/docs/commands/Format.htm new file mode 100644 index 0000000..94f7083 --- /dev/null +++ b/src/docs/commands/Format.htm @@ -0,0 +1,199 @@ + + + + +Format + + + + + + + +

Format [v1.1.17+]

+ +

°¡º¯ °³¼öÀÇ ÀÔ·Â °ªÀ» Çü½Ä ¹®ÀÚ¿­¿¡ ¸ÂÃß¾î Æ÷¸ËÇÕ´Ï´Ù.

+ +
String := Format(FormatStr [, Values...])
+

¸Å°³º¯¼ö

+
+ +
FormatStr
+
+

+ {Index:Format}ÀÇ ÇüÅ·Π±âÈ£ ÅؽºÆ®¿Í À§Ä¡º¸À¯ÀÚ·Î ±¸¼ºµÈ Çü½Ä ¹®ÀÚ¿­ .

+

+ Index´Â »ç¿ëÇÒ ÀÔ·Â °ªÀ» °¡¸®Å°´Â Á¤¼öÀÔ´Ï´Ù. 1À̸é ù ¹ø° °ªÀÔ´Ï´Ù.

+

+ FormatÀº, ¾Æ·¡¿¡ ±â¼úÇÏ´Â ¹Ù¿Í °°ÀÌ, ¼±ÅÃÀû Çü½Ä ÁöÁ¤ÀÚÀÔ´Ï´Ù..

+

(ÀÌÀü¿¡ ¹®ÀÚ¿­¿¡ »ç¿ëµÇ¾úÀ»Áö¶óµµ) ´ÙÀ½ ÀÔ·Â °ªÀ» ¿¬¼Ó¿­·Î »ç¿ëÇÏ·Á¸é À妽º¸¦ »ý·«ÇϽʽÿÀ. + + ¿¹¸¦ µé¾î, "{2:i} {:i}"´Â µÎ ¹ø°¿Í ¼¼ ¹ø° ÀÔ·Â °ªÀ» ½ÊÁø Á¤¼ö·Î, ½ºÆäÀ̽º·Î ºÐ¸®ÇÏ¿©, Æ÷¸ËÇÕ´Ï´Ù. Index¸¦ »ý·«ÇÏ´õ¶óµµ, FormatÀº ¿©ÀüÈ÷ : ¾Õ¿¡ ¿Í¾ß ÇÕ´Ï´Ù. ºó È°°ýÈ£¸¦ ÁöÁ¤ÇÏ¸é ´ÙÀ½ ÀÔ·Â °ªÀ» ±âº» Çü½ÄÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù: {}

+

+ {{}¿Í {}}¸¦ »ç¿ëÇÏ¸é ¹®ÀÚ¿­¿¡ ¹®ÀÚ ±×´ë·ÎÀÇ È°°ýÈ£¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¹«È¿ÇÑ À§Ä¡º¸À¯ÀÚ´Â °á°ú¿¡ ÀÖ´Â ±×´ë·Î Æ÷ÇԵ˴ϴÙ.

+

°ø¹éÀº È°°ýÈ£ ¾È¿¡ Çã¿ëµÇÁö ¾Ê½À´Ï´Ù (Ç÷¡±×·Î¼­ ³ªÅ¸³ª´Â °ÍÀº ¿¹¿Ü).

+
+ +
Values
+
+

Æ÷¸ËµÇ¾î ÃÖÁ¾ ¹®ÀÚ¿­¿¡ »ðÀ﵃ ÀÔ·Â °ªµé. °¢ °ªÀº º°µµÀÇ ¸Å°³º¯¼öÀÔ´Ï´Ù. ù °ªÀº À妽º°¡ 1ÀÔ´Ï´Ù.

+

°ª ¹è¿­À» °Ç³×·Á¸é, °¡º¯ ÇÔ¼ö È£ÃâÀ» »ç¿ëÇϽʽÿÀ:

+
arr := [13, 240]
+MsgBox % Format("{2:x}{1:02x}", arr*)
+
+ +
+ +

Çü½Ä ÁöÁ¤ÀÚ

+

+°¢ Çü½Ä ÁöÁ¤ÀÚ´Â (½ºÆäÀ̽º ¾øÀÌ) ¼ø¼­´ë·Î ´ÙÀ½ ±¸¼º¿ä¼Ò¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
Flags Width .Precision ULT Type
+

Flags Ãâ·Â Á¤·Ä°ú Á¢µÎ»ç¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù: - + 0 space #

+

+Width: Æ÷¸Ë °ªÀÇÃÖ¼Ò ³Êºñ¸¦, ¹®ÀÚ´ÜÀ§·Î Á¦¾îÇÏ´Â ½ÊÁø Á¤¼ö. +±âº»À¸·Î, °ªµéÀº ¿À¸¥ÂÊ¿¡ Á¤·ÄµÇ°í ½ºÆäÀ̽º°¡ Æеù¿¡ »ç¿ëµË´Ï´Ù. ÀÌ°ÍÀº- (¿ÞÂÊ-Á¤·Ä) ±×¸®°í 0 (zero prefix) Ç÷¡±×¸¦ »ç¿ëÇÏ¿© ¿À¹ö¶óÀ̵å ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+.Precision: ¹®ÀÚ¿­ÀÇ ÃÖ´ë °³¼ö, ½ÊÁø ÀÚ¸®¼ö, ¶Ç´Â Ãâ·ÂµÉ À¯È¿ ÀÚ¸®¸¦ Á¦¾îÇÏ´Â ½ÊÁø Á¤¼ö. Ãâ·Â À¯Çü¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù. ¾Õ¿¡ ¹Ýµå½Ã ½ÊÁø ¼Ò¼öÁ¡ÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù. Á¤¹Ðµµ¸¦ ÁöÁ¤ÇÏ¸é °ªÀÌ Àß·Á ³ª°¡°Å³ª ¿Ã¸² ³»¸² 󸮵˴ϴÙ.

+
    +
  • f, e, E: Precision´Â ½ÊÁø ¼Ò¼öÁ¡ ´ÙÀ½ÀÇ ÀÚ¸®¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ±âº» °ªÀº 6ÀÔ´Ï´Ù.
  • +
  • g, G: Precision´Â À¯È¿ ÀÚ¸®ÀÇ ÃÖ´ë °³¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ±âº» °ªÀº 6ÀÔ´Ï´Ù.
  • +
  • s: Precision´Â ÀμâµÉ ¹®ÀÚÀÇ ÃÖ´ë °³¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ °ªÀ» ÃÊ°úÇÏ´Â ¹®ÀÚµéÀº ÀμâµÇÁö ¾Ê½À´Ï´Ù.
  • +
  • Á¤¼ö À¯Çü¿¡ ´ëÇÏ¿© (d, i, u, x, X, o), Precision´Â Á¢µÎ»ç°¡ 0ÀÎ ³Êºñ(Width)ó·³ ÇൿÇÏ°í ±âº» °ªÀº 1ÀÔ´Ï´Ù.
  • +
+

ULT [v1.1.20+]: ¹®ÀÚ¿­ °ª¿¡ Àû¿ëÇÒ ´ë¼Ò¹®ÀÚ º¯È¯À» ÁöÁ¤ÇÕ´Ï´Ù -- Upper, Lower ¶Ç´Â Title. À¯ÇüÀÌ sÀÎ °æ¿ì¿¡¸¸ À¯È¿ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î {:U} ¶Ç´Â {:.20Ts}. ¼Ò¹®ÀÚ l°ú t·Î Áö¿øÇÏÁö¸¸, u´Â ºÎÈ£¾ø´Â Á¤¼ö¸¦ À§ÇØ ¿¹¾àµÇ¾î ÀÖ½À´Ï´Ù.

+

Type: ÀÔ·Â °ªÀ» ¾î¶»°Ô ¹ø¿ªÇÒÁö ³ªÅ¸³»´Â ¹®ÀÚ. »ý·«Çϸé, ±âº»°ªÀº sÀÔ´Ï´Ù.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Ç÷¡±×Àṉ̀⺻ ÇàÀ§
-ÁÖ¾îÁø ÇÊµå ³Êºñ ¾È¿¡¼­ °á°ú¸¦ ¿ÞÂÊ Á¤·ÄÇÕ´Ï´Ù (ÇÊ¿äÇÏ¸é ½ºÆäÀ̽º¸¦ ¿À¸¥ÂÊ¿¡ »ðÀÔÇÕ´Ï´Ù).¿À¸¥ÂÊ Á¤·Ä.
+Ãâ·Â °á°ú°¡ ºÎÈ£ ÀÖ´Â À¯ÇüÀÌ¸é ºÎÈ£ (+ ¶Ç´Â -)¸¦ ¾Õ¿¡ µÑ ¼ö ÀÖ½À´Ï´Ù.ºÎÈ£´Â À½ÀÇ ºÎÈ£ °ªÀÏ °æ¿ì¿¡¸¸ ³ªÅ¸³³´Ï´Ù (-).
0width ¾Õ¿¡ 0ÀÌ ÀÖÀ¸¸é, ÃÖ¼Ò ³Êºñ¿¡ µµ´ÞÇÒ ¶§±îÁö ¾ÕÂÊ¿¡ 0ÀÌ Ãß°¡µË´Ï´Ù. 0°ú -°¡ ¸ðµÎ ³ªÅ¸³ª¸é, 0ÀÌ ¹«½ÃµË´Ï´Ù. 0ÀÌ Á¤¼ö Çü½ÄÀ¸·Î ÁöÁ¤µÇ°í (i, u, x, X, o, d) ±×¸®°í Á¤¹Ðµµµµ ÁöÁ¤µÇ¾î ÀÖÀ¸¸é - ¿¹¸¦ µé¾î, {:04.d} - ÀÌ 0Àº ¹«½ÃµË´Ï´Ù.Æеù ¾øÀ½.
space½ºÆäÀ̽º Çϳª¸¦ »ç¿ëÇϸé Ãâ·Â °á°ú°¡ ¾çÀÇ °ªÀÏ °æ¿ì ¾Õ¿¡ ½ºÆäÀ̽º¸¦ Çϳª µÑ ¼ö ÀÖ½À´Ï´Ù. ½ºÆäÀ̽º¿Í + Ç÷¡±×°¡ ¸ðµÎ ³ªÅ¸³ª¸é ±× ½ºÆäÀ̽º´Â ¹«½ÃµË´Ï´Ù. .½ºÆäÀ̽º ³ªÅ¸³ªÁö ¾ÊÀ½.
# +

o, x, or X Çü½Ä°ú »ç¿ëµÉ ¶§, # Ç÷¡±×´Â 0ÀÌ ¾Æ´Ñ Ãâ·Â °ª ¾Õ¿¡ 0, 0x, ¶Ç´Â 0X¸¦ »ç¿ëÇÕ´Ï´Ù.

+

+ e, E, f, a ¶Ç´Â A Çü½Ä°ú »ç¿ëµÉ ¶§, # ÇÁ·¡±×´Â °­Á¦·Î Ãâ·Â °ªÀÌ ¼Ò¼öÁ¡À» °¡Áöµµ·Ï ¸¸µì´Ï´Ù.

+

g ¶Ç´Â G Çü½Ä°ú »ç¿ëµÉ ¶§, # Ç÷¡±×´Â °­Á¦·Î Ãâ·Â °ª¿¡ ¼Ò¼öÁ¡À» Æ÷ÇÔÇϵµ·Ï ¸¸µé°í µÚ¿¡ µû¸£´Â 0À» ÀÚ¸£Áö ¸øÇϵµ·Ï ¹æÁöÇÕ´Ï´Ù.

+

c, d, i, u, ¶Ç´Â s¿Í »ç¿ëµÉ ¶§´Â ¹«½ÃµË´Ï´Ù.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
¹®ÀÚÀÎÀÚÃâ·Â Çü½Ä
d ¶Ç´Â iIntegerºÎÈ£ ÀÖ´Â ½ÊÁø Á¤¼ö.
uIntegerºÎÈ£ ¾ø´Â ½ÊÁø Á¤¼ö.
x or XIntegerºÎÈ£ ¾ø´Â ½ÊÀ°Áø Á¤¼ö; xÀÇ °Ý¿¡ µû¶ó "abcdef" ¶Ç´Â "ABCDEF"¸¦ »ç¿ëÇÕ´Ï´Ù. 0x Á¢µÎ»ç´Â # Ç÷¡±×°¡, {:#x}ó·³ »ç¿ëµÇ¾î¾ß Æ÷ÇԵ˴ϴÙ. SetFormat°ú ÀÏ°ü¼ºÀÌ ÀÖ°Ô ½ÊÀ°Áø Çü½ÄÀ» ÁöÁ¤ÇÏ·Á¸é, 0x{:x} ºñ½ÁÇÑ Çü½ÄÀ» »ç¿ëÇϽʽÿÀ.
oIntegerºÎÈ£ ¾ø´Â ÆÈÁø Á¤¼ö.
fFloating-pointºÎÈ£ ÀÖ´Â °ª. ÇüÅ°¡ [ - ]dddd.ddddÀÔ´Ï´Ù. ¿©±â¿¡¼­ dddd´Â Çϳª ÀÌ»óÀÇ ½ÊÁø ÀÚ¸®ÀÔ´Ï´Ù. ½ÊÁø ¼Ò¼öÁ¡ ¾ÕÀÇ ÀÚ¸®¼ö´Â ¼ýÀÚÀÇ Å©±â¿¡ µû¶ó ´Ù¸¨´Ï´Ù. ±×¸®°í ½ÊÁø ¼Ò¼öÁ¡ µÚÀÇ ÀÚ¸®¼ö´Â ¿äûÇÑ Á¤¹Ðµµ¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù.
eFloating-pointºÎÈ£ ÀÖ´Â °ª. ÇüÅ°¡ [ - ]d.dddd e [sign]dd[d] ÀÔ´Ï´Ù. ¿©±â¿¡¼­ d´Â ÇϳªÀÇ ½ÊÁø ÀÚ¸®ÀÌ°í, dddd´Â Çϳª ÀÌ»óÀÇ ½ÊÁø ÀÚ¸®À̸ç, dd[d]´Â µÎ ¼¼ °³ÀÇ ½ÊÁø ÀÚ¸®·Î¼­ Ãâ·Â Çü½Ä°ú Áö¼öÀÇ Å©±â, ±×¸®°í ºÎÈ£°¡ +Àΰ¡ - Àΰ¡¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù.
EFloating-pointe Çü½Ä°ú µ¿ÀÏÇÕ´Ï´Ù. ´Ü, e ¸»°í E´Â Áö¼ö¸¦ ÃÊ·¡ÇÕ´Ï´Ù.
gFloating-pointºÎÈ£ ÀÖ´Â °ªÀº f ¶Ç´Â e Çü½ÄÀ¸·Î º¸¿©Áý´Ï´Ù. ¾î´À ÂÊÀ̵ç ÁÖ¾îÁø °ª°ú Á¤¹Ðµµ¿¡ ´ëÇÏ¿© ´õ °£°áÇÕ´Ï´Ù. e Çü½ÄÀº °ªÀÇ Áö¼ö°¡ -4º¸´Ù À۰ųª precision ÀÎÀÚº¸´Ù Å©°Å³ª °°À» °æ¿ì¿¡¸¸ »ç¿ëµË´Ï´Ù. µÚµû¸£´Â 0Àº Àß·Á ³ª°¡°í, ½ÊÁø ¼Ò¼öÁ¡Àº ´ÙÀ½¿¡ Çϳª ÀÌ»óÀÇ ÀÚ¸®°¡ µû¶ó¿Ã ¶§¸¸ ³ªÅ¸³³´Ï´Ù..
GFloating-pointg Çü½Ä°ú µ¿ÀÏÇÕ´Ï´Ù. ´Ü, e¸»°í EÀ̸é Áö¼ö°¡ ÃÊ·¡µË´Ï´Ù.
aFloating-pointºÎÈ£ ÀÖ´Â ½ÊÀ°Áø ¹è-Á¤¹Ð·Î ºÎµ¿ ¼Ò¼öÁ¡ °ª. ÇüÅ´ [?]0xh.hhhh pddÀÔ´Ï´Ù. ¿©±â¿¡¼­ h.hhhh´Â °¡¼ö(mantissa)ÀÇ ½ÊÀ°Áø ÀÚ¸®ÀÔ´Ï´Ù (¼Ò¹®ÀÚ ±âÈ£ »ç¿ë). ±×¸®°í dd´Â Áö¼ö¸¦ À§ÇÑ Çϳª ÀÌ»óÀÇ ÀÚ¸®ÀÔ´Ï´Ù. Á¤¹Ðµµ´Â ¼Ò¼öÁ¡ ´ÙÀ½ÀÇ ÀÚ¸® ¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
AFloating-pointa Çü½Ä°ú µ¿ÀÏÇÕ´Ï´Ù. ´Ü, p ¸»°í P´Â Áö¼ö¸¦ ÃÊ·¡ÇÕ´Ï´Ù.
pInteger¸Þ¸ð¸® Áּҷμ­ÀÇ ÀÎÀÚ¸¦ ½ÊÀ°Áø ÀÚ¸®¼ö·Î Ç¥½ÃÇÕ´Ï´Ù.
sString¹®ÀÚ¿­À» ÁöÁ¤ÇÕ´Ï´Ù. ÀÔ·Â °ªÀÌ ¼ýÄ¡À̸é, ½ºÅ©¸³Æ®ÀÇ ÇöÀç ¼ýÀÚ Çü½ÄÀ» »ç¿ëÇÏ¿© ÀÚµ¿À¸·Î ¹®ÀÚ¿­·Î º¯È¯µË´Ï´Ù. ±× ´ÙÀ½¿¡ Width¿Í Precision ÀÎÀÚ°¡ Àû¿ëµË´Ï´Ù.
cCharacter code¼­¼ö °ªÀ¸·Î ¹®ÀÚ Çϳª¸¦ ÁöÁ¤ÇÕ´Ï´Ù. Chr(n)°ú ºñ½ÁÇÕ´Ï´Ù. ÀÔ·Â °ªÀÌ ¿¹»ó ¹üÀ§¸¦ ¹þ¾î³ª¸é, ¹Ý¿Ã¸² µË´Ï´Ù.
+ +

³íÆò

+

+printf¿Í ´Ù¸£°Ô, Å©±â ÁöÁ¤ÀÚ´Â Áö¿øµÇÁö ¾Ê½À´Ï´Ù. ¸ðµç Á¤¼ö¿Í ºÎµ¿ ¼Ò¼öÁ¡ °ªÀº 64-ºñÆ®ÀÔ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

SetFormat, FormatTime

+ +

¿¹Á¦

+
+; °£´ÜÇÑ ±³Ã¼
+s .= Format("{2}, {1}!`r`n", "World", "Hello")
+; ½ºÆäÀ̽º·Î µ¡´ï
+s .= Format("|{:-10}|`r`n|{:10}|`r`n", "Left", "Right")
+; ½ÊÀ°Áø¼ö
+s .= Format("{1:#x} {2:X} 0x{3:x}`r`n", 3735928559, 195948557, 0)
+; ºÎµ¿-¼Ò¼öÁ¡ ¼ö
+s .= Format("{1:0.3f} {1:.10f}", 4*atan(1))
+
+ListVars  ; ¿ÀÅäÇÖÅ°ÀÇ ¸ÞÀΠâÀ» »ç¿ëÇÏ¿© ´ÜÀÏÆø ÅؽºÆ®¸¦ º¸¿©ÁÝ´Ï´Ù.
+WinWaitActive ahk_class AutoHotkey
+ControlSetText Edit1, %s%
+WinWaitClose
+
+ + + diff --git a/src/docs/commands/FormatTime.htm b/src/docs/commands/FormatTime.htm new file mode 100644 index 0000000..7997287 --- /dev/null +++ b/src/docs/commands/FormatTime.htm @@ -0,0 +1,278 @@ + + + + +FormatTime + + + + + + + + +

FormatTime

+ +

½Ã°£µµÀå YYYYMMDDHH24MISS¸¦ ÁöÁ¤µÈ ³¯Â¥/½Ã°£ Çü½ÄÀ¸·Î º¯È¯ÇÕ´Ï´Ù.

+ +
FormatTime, OutputVar [, YYYYMMDDHH24MISS, Format]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

°á°ú¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
YYYYMMDD...
+

ÀÌ ¸Å°³º¯¼ö¸¦ ºñ¿ö µÎ¸é ÇöÀç ³¯Â¥¿Í ½Ã°£À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, YYYYMMDDHH24MISS Çü½ÄÀ¸·Î ½Ã°£µµÀåÀÇ À̲ô´Â ºÎºÐÀ» ¸ðµÎ ÁöÁ¤ÇϽʽÿÀ. ½Ã°£ µµÀåÀÇ ³¯Â¥/½Ã°£ ºÎºÐÀÌ À¯È¿ÇÏÁö ¾Ê´Ù¸é -- À±³âÀÌ ¾Æ´Ñ ÇØ¿¡ 2¿ù 29ÀÏÀ̶ó¸é -- ±× ³¯Â¥¿Í ½Ã°£Àº OutputVarÀ¸·ÎºÎÅÍ Á¦¿ÜµË´Ï´Ù. 1601³âºÎÅÍ 9999³â ±îÁö¸¸ Áö¿øÇÕ´Ï´Ù. Çü½ÄÈ­µÈ ½Ã°£Àº ½Ã°£ ºÎºÐÀÌ À¯È¿Çϱ⸸ ÇÏ´Ù¸é ¿©ÀüÈ÷ ÀÌÀü ÇØ¿¡ ´ëÇÏ¿© ¸¸µé ¼ö ÀÖ½À´Ï´Ù.

+ +
Format
+

»ý·«µÇ¸é, ½Ã°£ ´ÙÀ½¿¡ ±ä ³¯Â¥°¡ ±âº»°ªÀÌ µË´Ï´Ù. µÑ ¸ðµÎ ÇöÀç »ç¿ëÀÚÀÇ ·ÎÄÉÀÏ¿¡ ¸Â°Ô Æ÷¸ËµË´Ï´Ù. + ¿¹¸¦ µé¾î: 4:55 PM Saturday, November 27, 2004

+

+ ±×·¸Áö ¾ÊÀ¸¸é, ¾Æ·¡ÀÇ Çϳª ÀÌ»óÀÇ ³¯Â¥-½Ã°£ Çü½ÄÀ» »çÀÌ¿¡ ±ÛÀÚ ±×´ë·ÎÀÇ ½ºÆäÀ̽º¿Í ±¸µÎÁ¡ ºÎÈ£¸¦ µÎ°í ÁöÁ¤ÇϽʽÿÀ. (½°Ç¥´Â ÇǽŽÃų ÇÊ¿ä°¡ ¾ø½À´Ï´Ù; º¸Åë ±×´ë·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù). ´ÙÀ½ ¿¹Á¦¿¡¼­, MÀ» ´ë¹®ÀÚ·Î »ç¿ëÇØ¾ß ÇÑ´Ù´Â Á¡¿¡ ÁÖÀÇÇϽʽÿÀ: M/d/yyyy h:mm tt

+ +
+ +

³¯Â¥ Çü½Ä (´ë¼Ò¹®ÀÚ ±¸ºÐ)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
d¾Õ¿¡ 0 ¾øÀÌ ´ÞÀÇ ³¯Â¥ (1 - 31)
dd¾Õ¿¡ 0À» µÎ°í ´ÞÀÇ ³¯Â¥ (01 – 31)
dddÇöÀç »ç¿ëÀÚÀÇ ¾ð¾î·Î ÁÖÀÇ ³¯Â¥ÀÇ ÂªÀº À̸§ (¿¹, Mon)
ddddÇöÀç »ç¿ëÀÚÀÇ ¾ð¾î·Î ÁÖÀÇ ³¯Â¥ÀÇ ¿ÏÀüÇÑ À̸§ (¿¹, Monday)
M¾Õ¿¡ 0¾øÀÌ ´Þ (1 – 12)
MM¾Õ¿¡ 0À» µÎ°í ´Þ (01 – 12)
MMMÇöÀç »ç¿ëÀÚÀÇ ¾ð¾î·Î ´ÞÀÇ ÂªÀº À̸§ (¿¹, Jan)
MMMMÇöÀç »ç¿ëÀÚÀÇ ¾ð¾î·Î ¿ÏÀüÇÑ ´Þ À̸§ (¿¹, January)
y¼¼±â ¾ø´Â ÇØ, ¾Õ¿¡ 0 ¾øÀ½ (0 – 99)
yy¼¼±â ¾ø´Â ÇØ, ¾Õ¿¡ 0 ÀÖÀ½ (00 - 99)
yyyy¼¼±â ÀÖ´Â ÇØ. ¿¹¸¦ µé¾î: 2005
ggÇöÀç »ç¿ëÀÚÀÇ ·ÎÄÉÀÏ¿¡ ´ëÇÑ ½Ã´ë ¹®ÀÚ¿­ (¾øÀ¸¸é ºñ¾î ÀÖÀ½)
+

½Ã°£ Çü½Ä (´ë¼Ò¹®ÀÚ ±¸ºÐ)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
h¾Õ¿¡ 0 ¾øÀÌ ½Ã°¢; 12-½Ã°£Á¦ Çü½Ä (1 - 12)
hh¾Õ¿¡ 0 ÀÖ´Â ½Ã°¢; 12-½Ã°£Á¦ Çü½Ä (01 – 12)
H¾Õ¿¡ 0 ¾ø´Â ½Ã°¢; 24-½Ã°£Á¦ Çü½Ä (0 - 23)
HH¾Õ¿¡ 0 ÀÖ´Â ½Ã°¢; 24-½Ã°£Á¦ Çü½Ä (00– 23)
m¾Õ¿¡ 0 ¾ø´Â ºÐ (0 – 59)
mm¾Õ¿¡ 0 ÀÖ´Â ºÐ (00 – 59)
s¾Õ¿¡ 0 ¾ø´Â ÃÊ (0 – 59)
ss¾Õ¿¡ 0 ÀÖ´Â ÃÊ (00 – 59)
tÇÑ °³Â¥¸® ½Ã°£ Ç¥½ÄÀÚ, ¿¹¸¦ µé¾î A ¶Ç´Â P (·ÎÄÉÀÏ¿¡ µû¶ó ´Ù¸§)
tt´ÙÁß-¹®ÀÚ ½Ã°£ Ç¥½ÄÀÚ, ¿¹¸¦ µé¾î AM ¶Ç´Â PM (·ÎÄÉÀÏ¿¡ µû¶ó ´Ù¸§)
+

+´ÙÀ½ Çü½ÄÀº ¹Ýµå½Ã Ȧ·Î »ç¿ëµÇ¾î¾ß ÇÕ´Ï´Ù; Áï, ´Ù¸¥ Çü½ÄÀ̳ª ÅؽºÆ®°¡ Format ¸Å°³º¯¼ö¿¡ ¾ø½À´Ï´Ù. ÀÌ Çü½ÄÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê½À´Ï´Ù.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
(Blank)FormatÀ» ºñ¿ö µÎ¸é ½Ã°£°ú ±×¸®°í ´ÙÀ½¿¡ ±â´Ù¶õ ³¯Â¥¸¦ »ý»êÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ¾î¶² ·ÎÄÉÀÏ¿¡¼­´Â 4:55 PM Saturday, November 27, 2004·Î ³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù.
TimeÇöÀç »ç¿ëÀÚÀÇ ·ÎÄÉÀÏ¿¡ ´ëÇÑ ½Ã°£ Ç¥Çö, ¿¹¸¦ µé¾î 5:26 PM
ShortDateÇöÀç »ç¿ëÀÚÀÇ ·ÎÄÉÀÏ¿¡ ´ëÇÑ ÂªÀº ³¯Â¥ Ç¥Çö, ¿¹¸¦ µé¾î 02/29/04
LongDateÇöÀç »ç¿ëÀÚÀÇ ·ÎÄÉÀÏ¿¡ ´ëÇÑ ±ä ³¯Â¥ Ç¥Çö, ¿¹¸¦ µé¾î Friday, April 23, 2004
YearMonthÇöÀç »ç¿ëÀÚÀÇ ·ÎÄÉÀÏ¿¡ ´ëÇÑ ÇØ¿Í ´Þ, ¿¹¸¦ µé¾î February, 2004
YDay¾Õ¿¡ 0 ¾øÀÌ ÇØÀÇ ³¯Â¥ (1 – 366)
YDay0¾Õ¿¡ 0 ÀÌ ÀÖ´Â ÇØÀÇ ³¯Â¥ (001 – 366)
WDayÁÖÀÇ ³¯Â¥ (1 – 7). Sunday´Â 1ÀÔ´Ï´Ù.
YWeek + ISO 8601 ¿ÏÀü ÇØÀÇ °³¼ö ±×¸®°í ÁÖ °³¼ö : 200453. 1¿ù 1ÀÏÀ» Æ÷ÇÔÇÑ ÁÖ°¡ »õ ÇØ¿¡¼­ 4 ÀÏ ÀÌ»ó Æ÷ÇԵǾî ÀÖÀ¸¸é, ù ¹ø° ÁÖ·Î °£Áֵ˴ϴÙ. ±×·¸Áö ¾ÊÀ¸¸é, ÀÌÀü ÇØÀÇ ¸¶Áö¸· ÁÖ·Î °£Áֵ˴ϴÙ. ±×¸®°í ±× ´ÙÀ½ ÁÖ°¡ »õ ÇØÀÇ Ã¹ ÁÖ°¡ µË´Ï´Ù. °á·ÐÀûÀ¸·Î, 1¿ù 4ÀÏ°ú 1¿ùÀÇ Ã¹ ¹ø° ¸ñ¿äÀÏÀº ¾ðÁ¦³ª 1¹ø ÁÖ¿¡ ÀÖ½À´Ï´Ù.
+

Ãß°¡ ¿É¼Ç

+

+´ÙÀ½ ¿É¼ÇÀº ½Ã°£µµÀå ¹Ù·Î µÚ YYYYMMDDHH24MISS ¸Å°³º¯¼ö ¾È¿¡ ³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù (½Ã°£µµÀåÀÌ ¾ø´Ù¸é, Ȧ·Î »ç¿ëÇصµ µË´Ï´Ù). ´ÙÀ½ ¿¹Á¦¿¡¼­, µÚÂÊ ³× Ç׸ñ »çÀÌ¿¡ ½°Ç¥°¡ ¾ø´Â µ¥ ÁÖ¸ñÇϽʽÿÀ:

+ +
FormatTime, OutputVar, 20040228 LSys D1 D4
+

+R: µÚÁý½À´Ï´Ù. ³¯Â¥¸¦ ½Ã°£ ¾Õ¿¡ µÓ´Ï´Ù (FormatÀÌ ºñ¾î ÀÖÀ» °æ¿ì¿¡¸¸ Àǹ̰¡ ÀÖ½À´Ï´Ù).

+

Ln: ÀÌ ¿É¼ÇÀÌ ¾øÀ¸¸é, ¹®ÀÚ¿­À» Æ÷¸ËÇÏ´Â µ¥ ÇöÀç »ç¿ëÀÚÀÇ ·ÎÄÉÀÏÀÌ »ç¿ëµË´Ï´Ù. ´ë½Å¿¡ ¿î¿µ üÁ¦ÀÇ ·ÎÄÉÀÏÀ» »ç¿ëÇÏ·Á¸é, LSys¸¦ ÁöÁ¤ÇϽʽÿÀ. ƯÁ¤ÇÑ ·ÎÄÉÀÏÀ» »ç¿ëÇÏ·Á¸é, ±âÈ£ L°ú ´ÙÀ½¿¡ ½ÊÀ°Áø ¶Ç´Â ½ÊÁø ·ÎÄÉÀÏ ½Äº°ÀÚ (LCID)¸¦ ÁöÁ¤ÇϽʽÿÀ. LCID¸¦ ±¸¼ºÇÏ´Â ¹æ¹ý¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â www.microsoft.com¿¡¼­ ´ÙÀ½ ¹®±¸¸¦ °Ë»öÇØ º¸½Ê½Ã¿À: Locale Identifiers

+

Dn: ³¯Â¥ ¿É¼Ç. n¿¡ ´ÙÀ½ ¼ýÀÚ Áß Çϳª¸¦ ÁöÁ¤ÇϽʽÿÀ:
+ 0: °­Á¦·Î ±âº» ¿É¼ÇÀ» »ç¿ëÇϵµ·Ï ¸¸µì´Ï´Ù. ÀÌ´Â ¶ÇÇÑ ÂªÀº ³¯Â¥°¡ È¿·ÂÀ» ¹ßÈÖÇÏ°Ô ¸¸µé±âµµ ÇÕ´Ï´Ù.
+ 1: ªÀº ³¯Â¥¸¦ »ç¿ëÇÕ´Ï´Ù (FormatÀÌ ºñ¾î ÀÖÀ» °æ¿ì¿¡¸¸ Àǹ̰¡ ÀÖ½À´Ï´Ù; 2¿Í 8¿¡´Â ȣȯµÇÁö ¾Ê½À´Ï´Ù).
+ 2: ±ä ³¯Â¥¸¦ »ç¿ëÇÕ´Ï´Ù (FormatÀÌ ºñ¾î ÀÖÀ» °æ¿ì¿¡¸¸ Àǹ̰¡ ÀÖ½À´Ï´Ù; 1°ú 8¿¡´Â ȣȯ¼ºÀÌ ¾ø½À´Ï´Ù).
+ 4: ´ë¾È ´Þ·ÂÀ» (ÀÖ´Ù¸é) »ç¿ëÇÕ´Ï´Ù.
+ 8: ÇØ-´Þ Çü½ÄÀ» »ç¿ëÇÕ´Ï´Ù (FormatÀÌ ºñ¾î ÀÖÀ» °æ¿ì¿¡¸¸ Àǹ̰¡ ÀÖ½À´Ï´Ù; 1°ú 2¿¡´Â ȣȯ¼ºÀÌ ¾ø½À´Ï´Ù).
+ 0x10: Á¿¡¼­ ¿ì·Î Àб⠼ø¼­ ·¹À̾ƿôÀ» À§ÇÑ Ç¥½ÄÀ» Ãß°¡ÇÕ´Ï´Ù.
+ 0x20: ¿ì¿¡¼­ Á·ΠÀб⠼ø¼­ ·¹À̾ƿôÀ» À§ÇÑ Ç¥½ÄÀ» Ãß°¡ÇÕ´Ï´Ù.
+ 0x80000000: »ç¿ëÀÚ°¡ ½Ã½ºÅÛÀÇ ±âº» ³¯Â¥ Çü½Ä¿¡ ´ëÇÏ¿© º¯°æÇؼ­ ¿À¹ö¶óÀ̵å ÇÏ´Â °ÍµéÀ» ÁؼöÇÏÁö ¾Ê½À´Ï´Ù.
+0x40000000: ¹®ÀÚ¿­ º¯È¯¿¡ ·ÎÄÉÀÏÀÇ ÄÚµå ÆäÀÌÁö ´ë½Å¿¡ ½Ã½ºÅÛ ANSI ÄÚµå ÆäÀÌÁö¸¦ »ç¿ëÇÕ´Ï´Ù.

+

+Tn: ½Ã°£ ¿É¼Ç. n¿¡ ´ÙÀ½ ¼ýÀÚ Áß Çϳª¸¦ ÁöÁ¤ÇÕ´Ï´Ù:
+ 0: ±âº» ¿É¼ÇÀ» »ç¿ëÇϵµ·Ï °­Á¦ÇÕ´Ï´Ù. ÀÌ´Â ¶ÇÇÑ ºÐ°ú ÃÊ°¡ º¸À̵µ·Ï ¸¸µì´Ï´Ù.
+ 1: ºÐ°ú Ãʸ¦ »ý·«ÇÕ´Ï´Ù.
+ 2: Ãʸ¦ »ý·«ÇÕ´Ï´Ù.
+ 4: ½Ã°£ Ç¥½ÄÀ» »ý·«ÇÕ´Ï´Ù (¿¹, AM/PM).
+ 8: 12-½Ã°£Á¦°¡ ¾Æ´Ï¶ó ¾ðÁ¦³ª 24-½Ã°£Á¦¸¦ »ç¿ëÇÕ´Ï´Ù.
+ 12: À§ÀÇ µÎ ¿É¼ÇÀ» Á¶ÇÕ.
+ 0x80000000: »ç¿ëÀÚ°¡ ½Ã½ºÅÛÀÇ ±âº» ³¯Â¥ Çü½Ä¿¡ °¡ÇÑ º¯°æÀ» ÁؼöÇÏÁö ¾Ê½À´Ï´Ù.
+ 0x40000000: ¹®ÀÚ¿­ º¯È¯¿¡ ·ÎÄÉÀÏÀÇ ÄÚµå ÆäÀÌÁö ´ë½Å ½Ã½ºÅÛ ANSI ÄÚµå ÆäÀÌÁö¸¦ »ç¿ëÇÕ´Ï´Ù.

+

+ÁÖÀÇ: Dn°ú TnÀº ¿©·¯ ¿É¼Ç È¿°ú¸¦ À§ÇØ ¹Ýº¹ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ: FormatTime, OutputVar, 20040228 D2 D4 T1 T8

+ +

³íÆò

+

+±âÈ£¿Í ¼ýÀÚ¸¦ ±ÛÀÚ ±×´ë·Î FormatÀ¸·ÎºÎÅÍ OutputVar·Î º¯È¯ÇÏ°í ½Í´Ù¸é Ȭµû¿ÈÇ¥·Î ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ µÑ·¯¾ß ÇÕ´Ï´Ù: 'Date:' MM/dd/yy 'Time:' hh:mm:ss tt.

+

+´ëÁ¶ÀûÀ¸·Î, ½ºÆäÀ̽º, ÅÇ, ¶óÀÎÇǵå (`n), Á¤»ç¼±, ½ÖÁ¡, ½°Ç¥, ±×¸®°í ±âŸ ±¸µÎÁ¡ ±âÈ£¿Í °°ÀÌ ºñ-¾ËÆļýÀÚ ¹®Àڴ Ȭ µû¿ÈÇ¥ ¾È¿¡ µÎ¸¦ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ÀÌ¿¡ ´ëÇÑ ¿¹¿Ü´Â Ȭµû¿ÈÇ¥ ÀÚüÀÔ´Ï´Ù: ¹®ÀÚ ±×´ë·Î »ç¿ëÇÏ·Á¸é, ¿¬¼ÓÀûÀ¸·Î Ȭµû¿ÈÇ¥¸¦ »ç¿ëÇϰųª (''''), ¶Ç´Â Ȭµû¿ÈÇ¥°¡ ÀÌ¹Ì ¹Ù±ùÂÊ È¬µû¿ÈÇ¥ ¾È¿¡ ÀÖ´Ù¸é ±×³É µÎ °³¸¦ »ç¿ëÇϽʽÿÀ.

+

+Format¿¡ ³¯Â¥¿Í ½Ã°£ ¿ä¼Ò°¡ ÇÔ²² µé¾î ÀÖ´Ù¸é, ¼­·Î ¼¯ÀÌ¸é ¾ÈµË´Ï´Ù. ´Ù¸¥ ¸»·Î, ¹®ÀÚ¿­Àº µÎ ºÎºÐÀ¸·Î ³ª´­ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù: ÇÑ ºÎºÐÀº ½Ã°£ ±×¸®°í ³ª¸ÓÁö ¹ÝÀº ³¯Â¥·Î ±¸ºÐµÇ¾î¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, Çü½Ä ¹®ÀÚ¿­ÀÌ "hh yyyy mm"¿Í °°ÀÌ ±¸¼ºµÇ¾î ÀÖ´Ù¸é ¿¹»óÇÑ °á°ú°¡ ³ª¿ÀÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇÏ¸é µÎ °³ÀÇ ½Ã°£ ¿ä¼Ò »çÀÌ¿¡ ³¯Â¥ ¿ä±¸°¡ Àֱ⠶§¹®ÀÔ´Ï´Ù.

+

+Format¿¡ ´ÞÀÇ ¼ýÄ¡ ³¯Â¥ (d ¶Ç´Â dd) ±×¸®°í ´ÙÀ½¿¡ ¿ÏÀüÇÑ ´Þ À̸§ (MMMM)ÀÌ ´ã°Ü ÀÖ´Ù¸é, (ÇØ´ç ¾ð¾î°¡ ¼ÒÀ¯°Ý ÇüŸ¦ °¡Áö°í ÀÖ´Ù¸é) ¼ÒÀ¯°Ý ÇüÅÂÀÇ ´Þ À̸§ÀÌ »ç¿ëµË´Ï´Ù.

+

+Format¿¡ 2000 ¹®ÀÚ ÀÌ»óÀÌ µé¾î ÀÖ´Ù¸é, OutputVar´Â ºñ¿öÁý´Ï´Ù.

+

+°ü·ÃÇÏ¿© ¸»¾¸µå¸®¸é, ³¯Â¥¿Í ½Ã°£ÀÇ µ¡¼À°ú »¬¼ÀÀº EnvAdd ±×¸®°í EnvSub·Î ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+¹Ý´ë ¹æÇâÀ¸·Î º¯È¯ÇÏ·Á¸é -- Áï, Çü½ÄÈ­µÈ/³¯Â¥/½Ã°£À¸·ÎºÎÅÍ YYYYMMDDHH24MISS Çü½ÄÀ¸·Î ¹Ù²Ù·Á¸é -- ´ÙÀ½À» ÂüÁ¶ÇϽʽÿÀ: www.autohotkey.com/forum/topic20405.html

+

´ÙÀ½µµ ÂüÁ¶ÇϽʽÿÀ: Gui DateTime ÄÜÆ®·Ñ, SetFormat, Transform, ³»ÀåµÈ ³¯Â¥ º¯¼ö¿Í ½Ã°£ º¯¼ö, FileGetTime

+ +

¿¹Á¦

+ +
FormatTime, TimeString
+MsgBox ÇöÀç ½Ã°£°ú ³¯Â¥´Â (½Ã°£ ¸ÕÀú) %TimeString%ÀÔ´Ï´Ù.
+
+FormatTime, TimeString, R
+MsgBox ÇöÀç ½Ã°£°ú ³¯Â¥´Â (³¯Â¥ ¸ÕÀú) %TimeString%ÀÔ´Ï´Ù.
+
+FormatTime, TimeString,, Time
+MsgBox ÇöÀç ½Ã°£Àº %TimeString%ÀÔ´Ï´Ù.
+
+FormatTime, TimeString, T12, Time
+MsgBox 24-½Ã°£Á¦·Î ÇöÀç ½Ã°£Àº %TimeString%ÀÔ´Ï´Ù.
+
+FormatTime, TimeString,, LongDate
+MsgBox ÇöÀç ³¯Â¥´Â (±ä Çü½Ä) %TimeString%ÀÔ´Ï´Ù.
+
+FormatTime, TimeString, 20050423220133, dddd MMMM d, yyyy hh:mm:ss tt
+MsgBox ÁöÁ¤µÈ ³¯Â¥¿Í ½Ã°£Àº, Æ÷¸ËÇϸé,  %TimeString%ÀÔ´Ï´Ù.
+
+FormatTime, TimeString, 200504, 'Month Name': MMMM`n'Day Name': dddd
+MsgBox %TimeString%
+
+FormatTime, YearWeek, 20050101, YWeek
+MsgBox 2005³â 1¿ù 1ÀÏÀÇ ISO ³âµµ¿Í ÁÖ ¹øÈ£´Â ´ÙÀ½°ú °°½À´Ï´Ù: %YearWeek%
+ +
; ÆÄÀÏÀÇ ³¯Â¥-½Ã°£ µµÀåÀ» ¹Ù²ß´Ï´Ù:
+FileSelectFile, FileName, 3,, Pick a file
+if FileName =  ; »ç¿ëÀÚ°¡ ÆÄÀÏÀ» °í¸£Áö ¾Ê¾Ò½À´Ï´Ù.
+    return
+FileGetTime, FileTime, %FileName%
+FormatTime, FileTime, %FileTime%   ; ¸¶Áö¸· ¸Å°³º¯¼ö°¡ »ý·«µÇ¾ú±â ¶§¹®¿¡, ±ä ³¯Â¥¿Í ½Ã°£ÀÌ ¿­¶÷µË´Ï´Ù.
+MsgBox ¼±ÅÃµÈ ÆÄÀÏÀº %FileTime%¿¡ ¸¶Áö¸·À¸·Î º¯°æµÇ¾ú½À´Ï´Ù.
+ +
; ´ÙÀ½ ÇÔ¼ö´Â ÁöÁ¤µÈ °³¼öÀÇ Ãʸ¦
+; »óÀÀÇÏ´Â ½Ã°£, ºÐ, ±×¸®°í ÃÊ·Î º¯È¯ÇÕ´Ï´Ù (hh:mm:ss Çü½Ä).
+
+MsgBox % FormatSeconds(7384)  ; 7384 = 2 hours + 3 minutes + 4 seconds. °á°ú: 2:03:04
+
+FormatSeconds(NumberOfSeconds)  ; ÁöÁ¤µÈ °³¼öÀÇ Ãʸ¦  hh:mm:ss Çü½ÄÀ¸·Î º¯È¯ÇÕ´Ï´Ù.
+{
+    time = 19990101  ; ÀÓÀÇÀÇ ³¯Â¥ÀÇ *ÀÚÁ¤*.
+    time += %NumberOfSeconds%, seconds
+    FormatTime, mmss, %time%, mm:ss
+    return NumberOfSeconds//3600 ":" mmss
+    /*
+    ; À§¿¡ »ç¿ëµÈ ¹æ¹ý°ú ´Ù¸£°Ô, ÀÌ ¹æ¹ýÀº 24 ½Ã°£ÀÌ ³Ñ´Â ÃÊÀÇ °³¼ö¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù:
+    FormatTime, hmmss, %time%, h:mm:ss
+    return hmmss
+    */
+}
+ + + diff --git a/src/docs/commands/GetKeyState.htm b/src/docs/commands/GetKeyState.htm new file mode 100644 index 0000000..5f6d99d --- /dev/null +++ b/src/docs/commands/GetKeyState.htm @@ -0,0 +1,115 @@ + + + + +GetKeyState + + + + + + + + +

GetKeyState

+ +

Å°º¸µå Å°³ª ¸¶¿ì½º/Á¶À̽ºÆ½ ¹öÆ°ÀÌ ´­·Á ÀÖ´ÂÁö ¿©ºÎ¸¦ Á¡°ËÇÕ´Ï´Ù. ¶Ç Á¶À̽ºÆ½ »óŸ¦ ¿­¶÷ÇÕ´Ï´Ù.

+ +
GetKeyState, OutputVar, KeyName [, Mode]
+KeyIsDown := GetKeyState("KeyName" [, "Mode"])
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

+ ¿­¶÷µÈ Å° »óŸ¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§. DÀÌ¸é ´­·Á ÀÖ°í UÀÌ¸é ¶¾ »óÅÂÀÔ´Ï´Ù (±×·¯³ª GetKeyState() ÇÔ¼ö´Â ´­·Á ÀÖÀ¸¸é true (1)¸¦ ±×·¸Áö ¾ÊÀ¸¸é false (0)¸¦ µ¹·ÁÁÝ´Ï´Ù). Å° »óŸ¦ °áÁ¤ÇÒ ¼ö ¾øÀ¸¸é ÀÌ º¯¼ö´Â ºñ¾î ÀÖ½À´Ï´Ù.

+

¾Æ·¡ÀÇ Ç׸ñÀº Á¶À̽ºÆ½¿¡¸¸ Àû¿ëµË´Ï´Ù:

+

1) JoyX¿Í °°ÀÌ Á¶À̽ºÆ½ Ãà¿¡ ´ëÇÏ¿©, OutputVar´Â ºÎµ¿ ¼Ò¼öÁ¡ ¼ö·Î ¼³Á¤µË´Ï´Ù. ¹üÀ§´Â 0 ºÎÅÍ 100 »çÀÌÀÌ°í Á¶À̽ºÆ½ÀÇ À§Ä¡¸¦ ÃàÀÇ À̵¿ ¹üÀ§ÀÇ ¹éºÐ·ü·Î ³ªÅ¸³À´Ï´Ù. ¼ýÀÚ Çü½ÄÀº SetFormatÀ» ÅëÇÏ¿© ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ Å×½ºÆ® ½ºÅ©¸³Æ®¸¦ »ç¿ëÇϸé Á¶À̽ºÆ½À» ºÐ¼®ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

2) KeyNameÀÌ JoyPOVÀ̸é, ¿­¶÷µÈ °ªÀº ¹üÀ§°¡ 0ºÎÅÍ 35900 »çÀÌ ÀÔ´Ï´Ù. ¸¹Àº Á¶À̽ºÆ½¿¡ ´ÙÀ½¿¡ ±ÙÁ¢ÇÑ POV °ªµéÀÌ »ç¿ëµË´Ï´Ù:
+ -1: º¸°íÇÒ °¢µµ ¾øÀ½
+ 0: ¾ÕÀ¸·Î POV
+9000 (Áï, 90 µµ): ¿À¸¥ÂÊÀ¸·Î POV
+27000 (Áï, 270 µµ): ¿ÞÂÊÀ¸·Î POV
+18000 (Áï, 180 µµ): µÚ·Î POV

+ +
KeyName
+

+ ´Ü¼øÈ÷ Å°º¸µåÀÇ ¹®ÀÚ ÇϳªÀ̰ųª ¶Ç´Â ¸¶¿ì½º/Á¶À̽ºÆ½ ¹öÆ°°ú °°ÀÌ Å° ¸ñ·ÏÀÇ Å° À̸§ Áß ÇϳªÀÏ ¼ö ÀÖ½À´Ï´Ù. ¿¹: B, 5, LWin, RControl, Alt, Enter, Escape, LButton, MButton, Joy1.

+

+ ´ë¾ÈÀ¸·Î, vkFF¿Í °°Àº ¸í½ÃÀûÀÎ °¡»ó Å° Äڵ带 ÁöÁ¤Çصµ µË´Ï´Ù. ¾ÆÁÖ Èñ±ÍÇÑ °æ¿ì·Î Å°¿¡ À̸§ÀÌ ¾øÀ» °æ¿ì À¯¿ëÇÕ´Ï´Ù. ±×·± Å°ÀÇ °¡»ó Å°ÄÚµå´Â ´ÙÀ½ Å° ¸®½ºÆ® ÆäÀÌÁö ÇÏ´Ü¿¡ ÀÖ´Â ´Ü°è¸¦ ¹â¾Æ ¾Ë¾Æº¼ ¼ö ÀÖ½À´Ï´Ù.

+

+ ¾Ë·ÁÁø ÇÑ°è: ÀÌ ÇÔ¼ö´Â Left¿Í NumpadLeft °°ÀÌ, °°Àº °¡»ó Å° Äڵ带 °øÀ¯ÇÏ¸é µÎ Å°¸¦ ±¸º°ÇÏÁö ¸øÇÕ´Ï´Ù.

+ +
Mode
+

ÀÌ ¸Å°³º¯¼ö´Â Á¶À̽ºÆ½ »óŸ¦ ¿­¶÷ÇÒ ¶§ ¹«½ÃµË´Ï´Ù.

+

»ý·«Çϸé, ¸ðµå´Â ±âº»À¸·Î Å°ÀÇ ³í¸®Àû »óŸ¦ ¿­¶÷ÇÏ´Â ¸ðµå°¡ µË´Ï´Ù. + ³í¸®Àû »óÅ´ OS¿Í È°¼º âÀÌ ±× Å°ÀÇ »óŶó°í ¹Ï°í ÀÖ´Â »óŸ¦ ¸»ÇÕ´Ï´Ù. ±×·¯³ª ¹Ýµå½Ã ¹°¸®Àû »óÅÂ¿Í °°Àº °ÍÀº ¾Æ´Õ´Ï´Ù.

+

+ ´ë¾ÈÀ¸·Î ´ÙÀ½ ±âÈ£ Áß Çϳª¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù:

+

+ P: ¹°¸®Àû »óŸ¦ ¿­¶÷ÇÕ´Ï´Ù (Áï, »ç¿ëÀÚ°¡ ¹°¸®ÀûÀ¸·Î Å°¸¦ ´©¸£°í ÀÖ´ÂÁö ¾Ë¾Æº¾´Ï´Ù). Å°³ª ¸¶¿ì½º ¹öÆ°ÀÇ ¹°¸®Àû »óÅ´ º¸Åë ³í¸®Àû »óÅÂ¿Í °°½À´Ï´Ù. ´Ü Å°º¸µå/¸¶¿ì½º °¥°í¸®°¡ ¼³Ä¡µÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù. ±×·¡¾ß (½ºÅ©¸³Æ®°¡ ½ÇÇà ÁßÀÎ µ¿¾È Å°¸¦ ´©¸£±â¸¸ ÇÑ´Ù¸é) »ç¿ëÀÚ°¡ ¹°¸®ÀûÀ¸·Î Å°³ª ¹öÆ°À» ´©¸£°í ÀÖ´ÂÁö ¾Æ´ÑÁö Á¤È®ÇÏ°Ô ¹Ý¿µµË´Ï´Ù. ½ºÅ©¸³Æ®°¡ °¥°í¸®¸¦ »ç¿ëÇÏ°í ÀÖ´ÂÁö KeyHistory ¸í·É¾î³ª ¸Þ´º Ç׸ñÀ» ÅëÇÏ¿© ¾Ë¾Æº¼ ¼ö ÀÖ½À´Ï´Ù. °¥°í¸®¸¦ °­Á¦·Î ¼³Ä¡ÇÏ·Á¸é ½ºÅ©¸³Æ®¿¡ #InstallKeybdHook ¶Ç´Â #InstallMouseHook Áö½Ã¾î¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù.

+

+ T: Åä±Û »óŸ¦ ¿­¶÷ÇÕ´Ï´Ù (Åä±ÛÀÌ °¡´ÉÇÑ Å°¿¡¸¸ À¯È¿ÇÕ´Ï´Ù. Åä±Û Å°·Î´Â Capslock, Numlock, Scrolllock, ±×¸®°í Insert°¡ ÀÖ½À´Ï´Ù). ¿­¶÷µÈ °ªÀÌ DÀÌ¸é ±× Å°°¡ "on"À̶ó´Â ¶æÀÌ°í, ¹Ý¸é¿¡ UÀ̸é "off"¶ó´Â ¶æÀÔ´Ï´Ù (±×·¯³ª GetKeyState() ÇÔ¼ö´Â "on"¿¡ true (1)¸¦ "off" false (0)¸¦ µ¹·ÁÁÝ´Ï´Ù).

+
+ +
+ +

³íÆò

+

+Å°³ª ¸¶¿ì½º/Á¶À̽ºÆ½ ¹öÆ°ÀÌ »õ·Î¿î »óÅ°¡ µÇ±â¸¦ ±â´Ù¸®·Á¸é º¸Åë GetKeyState ȸµ¹ÀÌ ´ë½Å¿¡ KeyWaitÀ» »ç¿ëÇÏ´Â °ÍÀÌ ´õ ½±½À´Ï´Ù.

+

+ºñÁ¤»óÀûÀÎ Å°º¸µå µå¶óÀ̹ö°¡ ¼³Ä¡µÈ ½Ã½ºÅÛÀº Å°ÀÇ »óŸ¦, ƯÈ÷ Capslock °°Àº Å°ÀÇ Åä±Û »óŸ¦ ´À¸®°Ô °»½ÅÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. Å°ÀÇ »óÅ°¡ º¯°æµÇ¸é ¹Ù·Î Á¡°ËÇØ¾ß ÇÏ´Â ½ºÅ©¸³Æ®´Â ¹Ì¸® SleepÀ» »ç¿ëÇØ ½Ã½ºÅÛÀÌ Å° »óŸ¦ °»½ÅÇÒ ½Ã°£À» ÁÖ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.

+

+Á¶À̽ºÆ½¿¡ GetKeyState¸¦ »ç¿ëÇÏ´Â ¿¹´Â Á¶À̽ºÆ½ ¸®¸ÊÇÎ ÆäÀÌÁö¿Í Joystick-To-Mouse ½ºÅ©¸³Æ®¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

GetKeyState(), KeyWait, Key List, Á¶À̽ºÆ½ ¸®¸ÊÇÎ, KeyHistory, #InstallKeybdHook, #InstallMouseHook

+ +

¿¹Á¦

+ +
; ±âº» ¿¹Á¦µé:
+GetKeyState, state, RButton  ; ¿ìÃø ¸¶¿ì½º ¹öÆ°.
+GetKeyState, state, Joy2  ; ù ¹ø° Á¶À̽ºÆ½ÀÇ µÎ ¹ø° ¹öÆ°.
+
+GetKeyState, state, Shift
+if state = D
+    MsgBox Àû¾îµµ ÇϳªÀÇ Shift Å°°¡ ´­·Á ÀÖ½À´Ï´Ù.
+else
+    MsgBox Shift Å°°¡ ¾î´À Âʵµ ´­·Á ÀÖÁö ¾Ê½À´Ï´Ù.
+
+GetKeyState, state, CapsLock, T ;  CapsLockÀÌ ÄÑÁ® ÀÖÀ¸¸é D, ±×·¸Áö ¾ÊÀ¸¸é UÀÔ´Ï´Ù.
+state := GetKeyState("Capslock", "T")  ; CapsLockÀÌ ÄÑÁ® ÀÖÀ¸¸é Âü, ±×·¸Áö ¾ÊÀ¸¸é °ÅÁþÀÔ´Ï´Ù.
+
+; ¸®¸ÊÇÎ ¿¹Á¦ (ÀÌ ¿¹Á¦´Â ¿À·ÎÁö º¸¿©ÁÖ±â À§ÇÑ ¿ëµµÀÔ´Ï´Ù.
+; ³»ÀåµÈ ¸®¸ÊÇΠƯ¡À» »ç¿ëÇÏ´Â ÆíÀÌ ´õ ½±½À´Ï´Ù):
+; ´ÙÀ½ ÇÖÅ°¿¡¼­, NumpadAdd°¡ ´­·Á ÀÖ´Â µ¿¾È ¸¶¿ì½º ¹öÆ°µµ ´­·Á ÀÖ½À´Ï´Ù.
+; NumpadAdd¸¦ ¸¶¿ì½º ¹öÆ°À¸·Î º¯½Å½ÃÅ°´Â È¿°ú°¡ ÀÖ½À´Ï´Ù. ÀÌ ¹æ¹ýÀ» »ç¿ëÇϸé
+; »ç¿ëÀÚ°¡ Å°³ª ¹öÆ°À» ´©¸£°í ÀÖ´Â µ¿¾È ÇàÀ§¸¦ ¹Ýº¹ÇÒ ¼ö ÀÖ½À´Ï´Ù:
+*NumpadAdd::
+MouseClick, left,,, 1, 0, D  ; ¿ÞÂÊ ¸¶¿ì½º ¹öÆ°À» ´©¸£°í ÀÖ½À´Ï´Ù.
+Loop
+{
+    Sleep, 10
+    GetKeyState, state, NumpadAdd, P
+    if state = U  ; Å°¸¦ ³õ¾Ò½À´Ï´Ù. ±×·¡¼­ ȸµ¹À̸¦ ºüÁ® ³ª¿É´Ï´Ù.
+        break
+    ; ... ¿©±â¿¡ ¹Ýº¹ÇÏ°í ½ÍÀº ÇàÀ§¸¦ »ðÀÔÇϽʽÿÀ.
+}
+MouseClick, left,,, 1, 0, U  ; ¸¶¿ì½º ¹öÆ°À» ¶Á´Ï´Ù.
+return
+
+; ¿¹Á¦: Á¶À̽ºÆ½ Ãà À§Ä¡¿¡ µû¶ó Á¶À̽ºÆ½ ¹öÆ°ÀÇ ÇàÀ§¸¦ ´Ù¸£°Ô ¸¸µì´Ï´Ù.
+joy2:: 
+GetKeyState, joyx, JoyX 
+if joyx > 75 
+    MsgBox Action #1 (Á¶À̽ºÆ½ÀÌ ¿À¸¥ÂÊÀ¸·Î ±â¿î µ¿¾È ¹öÆ°ÀÌ ´­·È½À´Ï´Ù).
+else if joyx < 25 
+    MsgBox Action #2 (Á¶À̽ºÆ½ÀÌ ¿ÞÂÊÀ¸·Î ±â¿î µ¿¾È ¹öÆ°ÀÌ ´­·È½À´Ï´Ù).
+else
+    MsgBox Action #3 (Á¶À̽ºÆ½ÀÌ ¼öÆòÀ¸·Î °¡¿îµ¥¿¡ ÀÖ´Â µ¿¾È ¹öÆ°ÀÌ ´­·È½À´Ï´Ù).
+return
+
+; ´Ù¸¥ ¿¹Á¦µéÀº Á¶À̽ºÆ½ ¸®¸ÊÇÎ ÆäÀÌÁö¿Í Joystick-To-Mouse ½ºÅ©¸³Æ®¸¦ ÂüÁ¶ÇϽʽÿÀ.
+ + + diff --git a/src/docs/commands/Gosub.htm b/src/docs/commands/Gosub.htm new file mode 100644 index 0000000..5ee15d6 --- /dev/null +++ b/src/docs/commands/Gosub.htm @@ -0,0 +1,49 @@ + + + + +Gosub + + + + + + + +

Gosub

+ +

ÁöÁ¤µÈ ¶óº§·Î Á¡ÇÁÇÏ¿© ReturnÀ» ¸¸³¯ ¶§±îÁö ½ÇÇàÀ» °è¼ÓÇÕ´Ï´Ù.

+ +
Gosub, Label
+

¸Å°³º¯¼ö

+
+ +
Label
+

Á¡ÇÁÇØ °¥ ¶óº§, ÇÖÅ° ¶óº§, ¶Ç´Â ÇÖ½ºÆ®¸µ ¶óº§ÀÇ À̸§. ±× °á°ú Label ¾Æ·¡ÀÇ ¸í·É¾îµéÀÌ ReturnÀ̳ª ExitÀ» ¸¸³¯ ¶§±îÁö ½ÇÇàµË´Ï´Ù. "Return"Àº ½ºÅ©¸³Æ®¸¦ ´Ù½Ã Gosub ¾Æ·¡ÀÇ Ã¹ ¸í·É¾î·Î Á¡ÇÁÇؼ­ °Å±â¿¡¼­ ½ÇÇàÀ» Àç°³ÇÏ°Ô ¸¸µì´Ï´Ù. "Exit"Àº ÇöÀç ¾²·¹µå¸¦ Á¾·áÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+°ÅÀÇ ¸ðµç ¸í·É¾îÀÇ ¸Å°³º¯¼ö¿Í ¸¶Âù°¡Áö·Î, ¶óº§Àº º¯¼ö ÂüÁ¶ÀÏ ¼ö ÀÖ½À´Ï´Ù. %MyLabel%¿Í °°Àº °æ¿ì º¯¼ö¿¡ ÀúÀåµÈ À̸§ÀÌ ¸ñÇ¥·Î »ç¿ëµË´Ï´Ù. ±×·¸Áö¸¸, ¼öÇ༺´ÉÀº ¾à°£ ÁÙ¾îµì´Ï´Ù. ¿Ö³ÄÇÏ¸é ¸ñÇ¥ ¶óº§À» ½ºÅ©¸³Æ®°¡ óÀ½ ÀûÀçµÉ ¶§ "ÇÑ ¹ø¸¸ ã¾Æ º¸´Â °ÍÀÌ ¾Æ´Ï¶ó" ¸Å¹ø ã¾Æ º¸¾Æ¾ß Çϱ⠶§¹®ÀÔ´Ï´Ù.

+

+%MyLabel%¿Í °°Àº µ¿Àû ¶óº§À» »ç¿ëÇÒ ¶§, ¶óº§ÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é ¿¡·¯ ´ëÈ­»óÀÚ°¡ ³ªÅ¸³³´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é, ¹Ì¸® IsLabel()À» È£ÃâÇϽʽÿÀ. ¿¹¸¦ µé¾î:

+
if IsLabel(VarContainingLabelName)
+    Gosub %VarContainingLabelName%
+

+Gosub°¡ °£´ÜÇÏ°í ÀϹÝÀûÀÎ ¸ñÀûÀÇ ¼­ºê·çƾ¿¡´Â À¯¿ëÇÏÁö¸¸, º¸´Ù º¹ÀâÇÑ ¸ñÀûÀ¸·Î´Â ÇÔ¼öÀÇ »ç¿ëÀ» ±ÇÀåÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+Return, ÇÔ¼ö, IsLabel(), ºí·Ï, Loop, Goto

+

¿¹Á¦

+
Gosub, Label1 
+MsgBox, Label1 ¼­ºê·çƾÀÌ ¹ÝȯµÇ¾ú½À´Ï´Ù (Á¾·áµÊ).
+return
+
+Label1:
+MsgBox, Label1 ¼­ºê·çƾÀÌ Áö±Ý ½ÇÇà ÁßÀÔ´Ï´Ù.
+return
+ + + diff --git a/src/docs/commands/Goto.htm b/src/docs/commands/Goto.htm new file mode 100644 index 0000000..ee3a2ef --- /dev/null +++ b/src/docs/commands/Goto.htm @@ -0,0 +1,45 @@ + + + + +Goto + + + + + + + +

Goto

+ +

ÁöÁ¤µÈ ¶óº§·Î Á¡ÇÁÇؼ­ ½ÇÇàÀ» °è¼ÓÇÕ´Ï´Ù.

+ +
Goto, Label
+

¸Å°³º¯¼ö

+
+ +
Label
+

Á¡ÇÁÇØ °¥ ¶óº§ À̸§.

+ +
+ +

³íÆò

+

+%MyLabel%¿Í °°Àº µ¿ÀûÀÎ ¶óº§À» »ç¿ëÇÒ ¶§, ¶óº§ÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é ¿¡·¯ ´ëÈ­»óÀÚ°¡ ³ªÅ¸³³´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é, ¹Ì¸® IsLabel()¸¦ È£ÃâÇϽʽÿÀ. ¿¹¸¦ µé¾î:

+
if IsLabel(VarContainingLabelName)
+    Goto %VarContainingLabelName%
+

+Goto´Â »ç¿ëÀ» ±ÇÀåÇÏÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇϸé ÀϹÝÀûÀ¸·Î ½ºÅ©¸³Æ®¸¦ ´õ Àб⠾î·Æ°í °ü¸®Çϱâ Èûµé°Ô ¸¸µé±â ¶§¹®ÀÔ´Ï´Ù. Else, Blocks, Break, ±×¸®°í Continue¸¦ Goto¿¡ ´ëÇÑ ´ë¾ÈÀ¸·Î »ý°¢ÇØ º¸½Ê½Ã¿À.

+ +

°ü·Ã Ç׸ñ

+

+Gosub, Return, IsLabel(), Else, ºí·Ï, Break, Continue

+

¿¹Á¦

+
Goto, MyLabel
+...
+MyLabel:
+Sleep, 100
+...
+ + + diff --git a/src/docs/commands/GroupActivate.htm b/src/docs/commands/GroupActivate.htm new file mode 100644 index 0000000..5403f33 --- /dev/null +++ b/src/docs/commands/GroupActivate.htm @@ -0,0 +1,48 @@ + + + + +GroupActivate + + + + + + + +

GroupActivate

+ +

GroupAdd·Î Á¤ÀÇµÈ Ã¢ ±×·ì¿¡¼­ ´ÙÀ½ âÀ» È°¼ºÈ­ÇÕ´Ï´Ù.

+ +
GroupActivate, GroupName [, R]
+

¸Å°³º¯¼ö

+
+ +
GroupName
+

È°¼ºÈ­ ÇÒ ±×·ìÀÇ À̸§, ÃÖÃÊ·Î GroupAdd·Î Á¤ÀǵǾî ÀÖ½À´Ï´Ù.

+ +
R
+

ÀÌ ¸Å°³º¯¼ö´Â ±×·ì¿¡¼­ ¸â¹ö°¡ ÇöÀç ÀüÇô È°¼ºÈ­µÇ¾î ÀÖÁö ¾ÊÀ» °æ¿ì °¡Àå ¿À·¡µÈ âÀ» È°¼ºÈ­ÇÒ Áö ¾Æ´Ï¸é °¡Àå »õ·Î¿î âÀ» È°¼ºÈ­ÇÒ Áö °áÁ¤ÇÕ´Ï´Ù. »ý·«Çϸé, °¡Àå ¿À·¡µÈ âÀÌ ¾ðÁ¦³ª È°¼ºÈ­µË´Ï´Ù. ±âÈ£ RÀ̶ó¸é, °¡Àå »õ·Î¿î â (°¡Àå ÃÖ±Ù¿¡ È°¼ºÈ­ µÈ â) ÀÌ È°¼ºÈ­µË´Ï´Ù. ±×·¯³ª ¸í·É¾î°¡ ÁÖ¾îÁö´Â ¼ø°£ ±×·ì¿¡ ¾Æ¹« ¸â¹öµµ È°¼ºÈ­µÇ¾î ÀÖÁö ¾ÊÀ» °æ¿ì¿¡¸¸ ±×·¸½À´Ï´Ù. "R"Àº Àӽ÷ΠÀüÇô °ü·Ã ¾ø´Â ÀÛ¾÷À¸·Î ÀüȯÇÒ °æ¿ì¿¡ À¯¿ëÇÕ´Ï´Ù. GroupActivate, GroupDeactivate, ¶Ç´Â GroupClose¸¦ ÅëÇÏ¿© ±×·ìÀ¸·Î ´Ù½Ã µ¹¾Æ ¿À¸é, °¡Àå ¿À·¡µÈ âÀÌ ¾Æ´Ï¶ó ¿©·¯ºÐÀÌ °¡Àå ÃÖ±Ù¿¡ ÀÛ¾÷ÇÑ Ã¢ÀÌ È°¼ºÈ­µË´Ï´Ù..

+ +
+ +

ErrorLevel [AHK_L 54+]

+

ErrorLevelÀº È°¼ºÈ­ ÇÒ Ã¢À» ¹ß°ßÇÒ ¼ö ¾øÀ¸¸é 1ÀÌ ¼³Á¤µÇ°í ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+ÀÌ ¸í·É¾î´Â ±×·ìÀÇ Ã¢ ±Ô°Ý¿¡ ºÎÇÕÇϴ ù âÀÌ È°¼ºÈ­ µÇµµ·Ï ¸¸µì´Ï´Ù. µÎ ¹ø°·Î »ç¿ëÇÏ¸é ¼ø¼­´ë·Î ´ÙÀ½ âÀÌ È°¼ºÈ­ µË´Ï´Ù. µîµî. º¸Åë, ÇÖÅ°¿¡ ÇÒ´çµÇ±â ¶§¹®¿¡ ÀÌ Ã¢-¼øȸ ÇàÀ§´Â ±× Å°¸¦ ´©¸£¸é ÀÚµ¿À¸·Î ¼öÇàµË´Ï´Ù.

+

+¶Ç´Ù¸¥ âÀÌ È°¼ºÈ­ µÇÀÚ ¸¶ÀÚ ±× Áï½Ã ¶Ç âÀÌ È°¼ºÈ­µÇ¸é, ¾î¶² ½Ã½ºÅÛ¿¡¼­´Â (OS¿Í ±× ¼³Á¤¿¡ µû¶ó) ŽºÅ© ¹Ù ¹öÆ°ÀÌ ±ôºý°Å¸± ¼ö ÀÖ½À´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é #WinActivateForce¸¦ »ç¿ëÇϽʽÿÀ.

+

+â ±×·ì¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â GroupAdd¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

+GroupAdd, GroupDeactivate, GroupClose, #WinActivateForce

+ +

¿¹Á¦

+
GroupActivate, MyGroup, R
+ + + diff --git a/src/docs/commands/GroupAdd.htm b/src/docs/commands/GroupAdd.htm new file mode 100644 index 0000000..1c5482b --- /dev/null +++ b/src/docs/commands/GroupAdd.htm @@ -0,0 +1,92 @@ + + + + +GroupAdd + + + + + + + +

GroupAdd

+ +

â ±×·ì¿¡ â ±Ô°ÝÀ» Ãß°¡ÇÕ´Ï´Ù. ÇÊ¿äÇÏ¸é ±×·ìÀ» »ý¼ºÇÕ´Ï´Ù.

+ +
GroupAdd, GroupName [, WinTitle, WinText, Label, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
GroupName
+

ÀÌ Ã¢ ±Ô°Ý¿¡ Ãß°¡ÇÒ ±×·ìÀÇ À̸§. ±×·ìÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, »ý¼ºµË´Ï´Ù. ±×·ì À̸§Àº ´ë¼Ò¹®ÀÚ¸¦ °¡¸®Áö ¾Ê½À´Ï´Ù.

+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°ÇÒ Ã¢ Á¦¸ñ ¶Ç´Â ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â GroupActivate, GroupDeactivate, and GroupClose°¡ »ç¿ëµÇ´Â ¼ø°£¿¡ DetectHiddenText°¡ ÄÑÁ® ÀÖ¾î¾ß(ON) ŽÁöµË´Ï´Ù.

+ +
Label
+

GroupActivate¸í·É¾î°¡ »ç¿ëµÉ ¶§ ÀÌ ±×·ì¿¡ ºÎÇÕÇϴ âÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é ½ÇÇàÇÒ ¼­ºê·çƾÀÇ ¶óº§ (¶Ç´Â AHK_L 54 ÀÌÀüÀÌ¸é ´ÙÀ½ â ±Ô°Ý). ¸¶Ä¡ Gosub°¡ »ç¿ëµÈ °Íó·³ ¶óº§·Î Á¡ÇÁÇÕ´Ï´Ù. ¾Æ¹«°Íµµ ¾øÀ¸¸é »ý·«Çϰųª ºñ¿ö µÓ´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÒ ¶§¸¶´Ù »õ·Î¿î ±ÔÄ¢ÀÌ ±×·ì¿¡ Ãß°¡µË´Ï´Ù. ´Ù¸¥ ¸»·Î Çϸé, ±×·ìÀº °íÁ¤µÈ â ¸ñ·ÏÀÌ ¾Æ´Ï¶ó ±âÁØ ÁýÇÕÀ¸·Î ±¸¼ºµË´Ï´Ù. ³ªÁß¿¡, ±×·ìÀ» GroupActivate¿Í °°Àº ¸í·É¾î°¡ »ç¿ëÇÒ ¶§, ¹ÙÅÁÈ­¸é À§ÀÇ °¢ âÀº ÀÌ ±âÁØ¿¡ ¸Â´ÂÁö Á¡°ËµË´Ï´Ù. âÀÌ ±×·ìÀÇ ±âÁØ Áß Çϳª¿¡ ºÎÇÕÇϸé, ºÎÇÕÇÑ °ÍÀ¸·Î °£Áֵ˴ϴÙ.

+

+SetTitleMatchMode¿Í DetectHiddenWindows´Â ÀÌ ¸í·É¾îÀÇ ÇàÀ§¿¡ Á÷Á¢ÀûÀ¸·Î ¿µÇâÀ» ÁÖÁö´Â ¾ÊÁö¸¸, GroupActivate¿Í GroupClose °°Àº ´Ù¸¥ ±×·ì ¸í·É¾î¿¡´Â ¿µÇâÀ» ¹ÌĨ´Ï´Ù. ¶Ç ahk_groupÀ» ´Ù¸¥ ¸í·É¾îÀÇ WinTitle¿¡ »ç¿ëÇÒ ¶§¿¡µµ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.

+

+â ±×·ìÀº ÀüÇüÀûÀ¸·Î °ü·Ã â Áý´ÜÀ» ÇÔ²² ¹­´Âµ¥ »ç¿ëµË´Ï´Ù. ¸¹Àº âÀÌ °ü·ÃµÇ´Â ÀÛ¾÷¿¡ ¶Ç´Â ¸¹Àº ÇÏÀ§ âÀ» ¼ÒÀ¯ÇÑ ¾îÇø®ÄÉÀ̼ǿ¡ À¯¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ±×·¡ÇÈ ÇÁ·Î±×·¥À̳ª ÅؽºÆ® ÆíÁý±âÀÇ ¸¹Àº ½Çü¿Í ÀÚÁÖ ÀÛ¾÷ÇÑ´Ù¸é, GroupActivate¸¦ ÇÖÅ°¿¡ »ç¿ëÇؼ­ ±× ÇÁ·Î±×·¥ÀÇ °¢ ½Çü¸¦ ÇÑ ¹ø¿¡ Çϳª¾¿ ¹æ¹®ÇÒ ¼ö ÀÖ½À´Ï´Ù. âÀ» ãÀ¸·Á°í ¾ËÆ®-ÅÇÀ» ´©¸£°Å³ª ŽºÅ© ¹Ù ¹öÆ°À» ´©¸¦ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+°¢ ±×·ìÀÇ ¿£Æ®¸®´Â ÇÑ ¹ø¸¸ Ãß°¡ÇÏ¸é µÇ±â ¶§¹®¿¡, ÀÌ ¸í·É¾î´Â ÀüÇüÀûÀ¸·Î (½ºÅ©¸³Æ®ÀÇ »ó´Ü ºÎºÐ) ÀÚµ¿ ½ÇÇà ¼½¼Ç¿¡ »ç¿ëµË´Ï´Ù. Áߺ¹ ¿£Æ®¸®¸¦ ±×·ì¿¡ Ãß°¡ÇÏ·Á°í ½ÃµµÇÏ¸é ¹«½ÃµË´Ï´Ù.

+

+±×·ì¿¡ ¸ðµç âÀ» Æ÷ÇÔÇÏ·Á¸é (Ưº°ÇÑ ÇÁ·Î±×·¥ °ü¸®ÀÚ Ã¢ Á¦¿Ü), ´ÙÀ½ ¿¹Á¦¸¦ »ç¿ëÇϽʽÿÀ:

+ +
GroupAdd, AllWindows
+

+¸ðµç â ¸í·É¾î´Â â ±×·ì¿¡ ÀÛ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ahk_group MyGroupNameÀ» WinTitle ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇÏ¸é µË´Ï´Ù. ¸í·É¾î WinMinimize, WinMaximize, WinRestore, WinHide, WinShow, WinClose, ±×¸®°í WinKillÀº ±×·ìÀÇ ¸ðµç â¿¡ ÀÛ¿ëÇÒ °ÍÀÔ´Ï´Ù. ´ë½Å¿¡ ÃÖ»ó´Ü â¿¡¸¸ ÀÛ¿ë½ÃÅ°°í ½ÍÀ¸¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:

+ +
WinHide % "ahk_id " . WinExist("ahk_group MyGroup")
+

+´ëÁ¶ÀûÀ¸·Î, WinActivate¿Í IfWinExist¿Í °°Àº ´Ù¸¥ â ¸í·É¾î´Â ±×·ìÀÇ ÃÖ»óÀ§ â¿¡¸¸ ÀÛµ¿ÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+GroupActivate, GroupDeactivate, GroupClose

+ +

¿¹Á¦

+ +
; ½ºÅ©¸³Æ®ÀÇ »ó´Ü ÀÚµ¿ ½ÇÇà ¼½¼Ç¿¡¼­:
+GroupAdd, MSIE, ahk_class IEFrame ; ÀÌ ±×·ì¿¡ Internet Explorer ⸸ Ãß°¡ÇÕ´Ï´Ù.
+return ; ÀÚµ¿ ½ÇÇà ¼½¼ÇÀÇ ³¡.
+
+; ÀÌ ±×·ìÀ» È°¼ºÈ­ ÇÒ ÇÖÅ°¸¦ ÇÒ´çÇÕ´Ï´Ù. ¿­¸° ¸ðµç
+; MSIE âÀ», ÇÑ ¹ø¿¡ Çϳª ¾¿, ¼øȸÇÕ´Ï´Ù 
+; (Áï, ÇÖÅ°¸¦ ´©¸¦ ¶§¸¶´Ù).
+Numpad1::GroupActivate, MSIE, r
+
+; ´ÙÀ½Àº MS Outlook 2002¿¡ ´ëÇÑ Á» º¹ÀâÇÑ ±×·ìÀÔ´Ï´Ù.
+; ½ºÅ©¸³Æ®ÀÇ »ó´Ü ÀÚµ¿ ½ÇÇà ¼½¼Ç¿¡¼­:
+SetTitleMatchMode, 2 
+GroupAdd, mail, Message - Microsoft Word ; ÇöÀç ÀÛ¼º ÁßÀÎ ¸ÞÀÏÀ» À§ÇÑ °ÍÀÔ´Ï´Ù
+GroupAdd, mail, - Message ( ; ÀÌ¹Ì ¿­¸° Ç׸ñµéÀ» À§ÇÑ °ÍÀÔ´Ï´Ù
+; À¯·É âÀÌ È°¼ºÈ­µÇ´Â °ÍÀ» ÇÇÇÏ·Á¸é Ãß°¡ ÅؽºÆ®°¡ ÇÊ¿äÇÕ´Ï´Ù:
+GroupAdd, mail, Advanced Find, Sear&ch for the word(s)
+GroupAdd, mail, , Recurrence: 
+GroupAdd, mail, Reminder 
+GroupAdd, mail, - Microsoft Outlook 
+return  ; ÀÚµ¿ ½ÇÇà ¼½¼ÇÀÇ ³¡.
+
+
+Numpad5::GroupActivate, mail ; °¢ ¾Æ¿ô·è âÀ», ÇÑ ¹ø¿¡ Çϳª ¾¿ ¹æ¹®ÇÒ, ÇÖÅ°¸¦ ÇÒ´çÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/GroupClose.htm b/src/docs/commands/GroupClose.htm new file mode 100644 index 0000000..d367002 --- /dev/null +++ b/src/docs/commands/GroupClose.htm @@ -0,0 +1,46 @@ + + + + +GroupClose + + + + + + + +

GroupClose

+ +

GroupActivate ¶Ç´Â GroupDeactivateÀ¸·Î È°¼ºÈ­ µÇ¾ú´ø È°¼º âÀ» ´Ý½À´Ï´Ù. ´ÙÀ½ âÀ» ¼ø¼­´ë·Î È°¼ºÈ­ÇÕ´Ï´Ù. ¶ÇÇÑ ±×·ìÀÇ ¸ðµç âÀ» ´ÝÀ» ¼öµµ ÀÖ½À´Ï´Ù.

+ +
GroupClose, GroupName [, A|R]
+

¸Å°³º¯¼ö

+
+ +
GroupName
+

ÃÖÃÊ·Î GroupAddÀÌ Á¤ÀÇÇÑ ±×·ìÀÇ À̸§

+ +
A|R
+

±âÈ£ A¶ó¸é, ±×·ìÀÇ ¸ðµç ¸â¹ö°¡ ´ÝÈü´Ï´Ù. ÀÌ°ÍÀº È¿°ú°¡ WinClose ahk_group GroupName¿Í °°½À´Ï´Ù.

+

+ ±×·¸Áö ¾Ê°í: ÀÌ ¸í·É¾î°¡ È°¼º âÀ» ´ÝÀ¸¸é, ¿¬¼ÓÀûÀ¸·Î ´ÙÀ½ âÀ» È°¼ºÈ­ ÇÕ´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â °¡Àå »õ·Î¿î âÀ» È°¼ºÈ­ÇÒÁö ¾Æ´Ï¸é °¡Àå ¿À·¡µÈ âÀ» È°¼ºÈ­ ÇÒÁö °áÁ¤ÇÕ´Ï´Ù. »ý·«Çϸé, °¡Àå ¿À·¡µÈ âÀÌ Ç×»ó È°¼ºÈ­ µË´Ï´Ù. ±âÈ£ RÀ̶ó¸é, °¡Àå »õ·Î¿î âÀÌ (°¡Àå ÃÖ±Ù¿¡ È°¼ºÈ­ µÈ âÀÌ) È°¼ºÈ­ µË´Ï´Ù. ±×·¯³ª, ¸í·É¾î°¡ ÁÖ¾îÁú ¶§ ±×·ìÀÇ ¸â¹ö°¡ Çϳªµµ È°¼ºÈ­µÇ¾î ÀÖÁö ¾ÊÀ» °æ¿ì¿¡¸¸ ±×·¸½À´Ï´Ù. "R"ÀÌ À¯¿ëÇÑ °æ¿ì´Â Àӽ÷Π°ü·Ã ¾ø´Â ÀÛ¾÷À¸·Î ÀüȯÇÒ °æ¿ìÀÔ´Ï´Ù. GroupActivate, GroupDeactivate, ¶Ç´Â GroupClose¸¦ ÅëÇÏ¿© ±×·ìÀ¸·Î µ¹¾Æ¿Ã ¶§, °¡Àå ¿À·¡µÈ âÀÌ ¾Æ´Ï¶ó ¿©·¯ºÐÀÌ °¡Àå ÃÖ±Ù¿¡ ÀÛ¾÷ÇÑ Ã¢ÀÌ È°¼ºÈ­ µË´Ï´Ù.

+ +
+ +

³íÆò

+

+A|R ¸Å°³º¯¼ö°¡ "A"°¡ ¾Æ´Ò ¶§, ÀÌ ¸í·É¾îÀÇ ÇàÀ§´Â GroupName¿¡ ´ëÇÑ ÀÌÀü ÇàÀ§°¡ GroupActivateÀ̾ú´Â°¡ ¾Æ´Ï¸é GroupDeactivateÀΰ¡¿¡ ÀÇÇØ °áÁ¤µË´Ï´Ù. GroupDeactivate¿´´Ù¸é, ÀÌ ¸í·É¾î´Â ±×·ìÀÇ ¸â¹ö°¡ ¾Æ´Ò ¶§¸¸ È°¼º âÀ» ´Ý½À´Ï´Ù (±×·¸Áö ¾ÊÀ¸¸é ¾Æ¹« Àϵµ ÇÏÁö ¾Ê½À´Ï´Ù). + +¸¸¾à GroupActivateÀ̾ú°Å³ª ¾Æ¹«°Íµµ ¾ø¾ú´Ù¸é, ÀÌ ¸í·É¾î´Â È°¼ºÃ¢ÀÌ ±×·ìÀÇ ¸â¹öÀÏ °æ¿ì¿¡¸¸ ´Ý½À´Ï´Ù (±×·¸Áö ¾ÊÀ¸¸é ¾Æ¹«Àϵµ ÇÏÁö ¾Ê½À´Ï´Ù). ÀÌ ÇàÀ§ ´öºÐ¿¡ GroupNameÀÇ GroupActivate ¶Ç´Â GroupDeactivate ÇÖÅ°¿Í ¦ÀÌ µÇ°Ô GroupCloseÀ» ÇÖÅ°¿¡ ÇÒ´çÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+â ±×·ì¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â GroupAdd¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

GroupAdd, GroupActivate, GroupDeactivate

+ +

¿¹Á¦

+
GroupClose, MyGroup, R
+ + + diff --git a/src/docs/commands/GroupDeactivate.htm b/src/docs/commands/GroupDeactivate.htm new file mode 100644 index 0000000..42836f8 --- /dev/null +++ b/src/docs/commands/GroupDeactivate.htm @@ -0,0 +1,44 @@ + + + + +GroupDeactivate + + + + + + + +

GroupDeactivate

+ +

GroupActivate¿Í ºñ½ÁÇÏÁö¸¸ ±×·ì¿¡ ¾ø´Â ´ÙÀ½ âÀ» È°¼ºÈ­ÇÕ´Ï´Ù.

+ +
GroupDeactivate, GroupName [, R]
+

¸Å°³º¯¼ö

+
+ +
GroupName
+

óÀ½¿¡ GroupAdd¿¡ ÀÇÇØ Á¤ÀǵÈ, ¸ñÇ¥ ±×·ìÀÇ À̸§.

+ +
R
+

ÀÌ ¸Å°³º¯¼ö´Â ±×·ìÀÇ ¸â¹ö°¡ ÇöÀç È°¼º »óÅÂÀÏ ¶§ °¡Àå ¿À·¡µÈ ºñ-¸â¹ö°¡ È°¼ºÈ­ µÉÁö ¾Æ´Ï¸é °¡Àå »õ·Î¿î ºñ-¸â¹ö âÀÌ È°¼ºÈ­ µÉÁö °áÁ¤ÇÕ´Ï´Ù. »ý·«Çϸé, °¡Àå ¿À·¡µÈ ºñ-¸â¹ö âÀÌ ¾ðÁ¦³ª È°¼ºÈ­µË´Ï´Ù. ±âÈ£ RÀ̸é, °¡Àå »õ·Î¿î ºñ-¸â¹ö âÀÌ (°¡Àå ÃÖ±Ù¿¡ È°¼ºÈ­µÈ âÀÌ) È°¼ºÈ­ µË´Ï´Ù. ±×·¯³ª ¸í·É¾î°¡ ÁÖ¾îÁú ¶§ ±×·ìÀÇ ¸â¹ö°¡ È°¼ºÈ­µÇ¾î ÀÖÀ» °æ¿ì¿¡¸¸ È°¼ºÈ­ µË´Ï´Ù. "R"Àº Àӽ÷Π°ü·Ã ¾ø´Â ÀÛ¾÷À¸·Î ÀüȯÇÒ °æ¿ì¿¡ À¯¿ëÇÕ´Ï´Ù. GroupActivate, GroupDeactivate, ¶Ç´Â GroupClose¸¦ ÅëÇÏ¿© ±×·ìÀ¸·Î µ¹¾Æ¿Ã ¶§, °¡Àå ¿À·¡µÈ âÀÌ ¾Æ´Ï¶ó °¡Àå ÃÖ±Ù¿¡ ÀÛ¾÷ÇÑ Ã¢ÀÌ È°¼ºÈ­ µË´Ï´Ù.

+ +
+ +

³íÆò

+

+GroupDeactivate ¶§¹®¿¡ ±×·ìÀÇ Ã¢ ±Ô°Ý¿¡ ºÎÇÕÇÏÁö ¾Ê´Â°¡Àå ù ¹ø° âÀÌ È°¼ºÈ­ µË´Ï´Ù. GroupDeactivate¸¦ µÎ ¹ø° »ç¿ëÇÏ¸é ¿¬¼ÓÀûÀ¸·Î ´ÙÀ½ âÀ» È°¼ºÈ­ÇÕ´Ï´Ù. µîµî. º¸Åë, GroupDeactivate´Â ÇÖÅ°¿¡ ÇÒ´çÇؼ­ ±× Å°¸¦ ´©¸£¸é ÀÚµ¿À¸·Î ÀÌ·± â ÇàÀ§°¡ ¼öÇàµÇµµ·Ï ÇÕ´Ï´Ù.

+

+ÀÌ ¸í·É¾î´Â ÀÚÁÖ ½ÇÇàÇØ¾ß Çؼ­ °ÅÀÇ ¾ðÁ¦³ª ½ÇÇà ÁßÀΠâµéÀÌ ¸¹À» ¶§ À¯¿ëÇÕ´Ï´Ù. ÀÌ Ã¢µéÀ» ±×·ì¿¡ Ãß°¡Çϸé, GroupDeactivate¸¦ »ç¿ëÇØ º°·Î »ç¿ëÇÏÁö ¾Ê´Â ⸶´Ù ¹æ¹®Çϸ鼭 ´ÝÀ»Áö ¸»Áö °áÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¼ÕÀ¸·Î ÇÏ´Â °Íº¸´Ù ¹ÙÅÁÈ­¸éÀ» ÈξÀ ´õ »¡¸® Á¤¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+â ±×·ì¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â GroupAdd¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

+GroupAdd, GroupActivate, GroupClose

+

¿¹Á¦

+
GroupDeactivate, MyFavoriteWindows  ; ¹ÙÅÁÈ­¸éÀ» Á¤¸®Çϱâ À§ÇØ  º°·Î-»ç¿ëÇÏÁö ¾ÊÀº âÀ» ¹æ¹®ÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/Gui.htm b/src/docs/commands/Gui.htm new file mode 100644 index 0000000..77de6fc --- /dev/null +++ b/src/docs/commands/Gui.htm @@ -0,0 +1,936 @@ + + + + +GUI + + + + + + + +

GUI

+ +

â°ú ÄÜÆ®·ÑÀ» »ý¼ºÇÏ°í °ü¸®ÇÕ´Ï´Ù. ±×·± âÀº µ¥ÀÌÅÍ ¿£Æ®¸® Æû ¶Ç´Â ¸ÂÃã »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +
Gui, sub-command [, Param2, Param3, Param4]
+

¸ñÂ÷

+ + +

Gui, New [, Options, Title] [v1.1.04+]

+

+âÀ» ¸¸µé°í ÇöÀç ¾²·¹µå¿¡ ´ëÇÏ¿© ±âº» âÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù.

+
Gui, New  ; À̸§ ¾ø°í ¹øÈ£ ¾ø´Â GUI¸¦ »õ·Î Çϳª ¸¸µì´Ï´Ù.
+Gui, Name: New  ; »õ·Î GUI¸¦ ¸¸µì´Ï´Ù. °°Àº À̸§À¸·Î ±âÁ¸ÀÇ GUI°¡ ÀÖÀ¸¸é Á¦°ÅÇÕ´Ï´Ù.
+
+

Options ¸ÞÀÎ GUI ¸í·É¾î°¡ Áö¿øÇÏ´Â ¿É¼ÇÀ» ´ãÀ» ¼ö ÀÖ½À´Ï´Ù.

+

TitleÀÌ »ý·«µÇ¸é, ½ºÅ©¸³Æ® ÆÄÀÏÀÇ À̸§ÀÌ »ç¿ëµË´Ï´Ù.

+

ÀÌ ¸í·É¾î´Â ´ÙÀ½ ¾àÁ¡ÀÌ µû¶ó ¿É´Ï´Ù:

+
    +
  • ´ëºÎºÐÀÇ °æ¿ì âÀº ¿ä±¸Çϸé ÀÚµ¿À¸·Î »ý¼ºµË´Ï´Ù. ±×·¡¼­ º¸Åë Gui New¸¦ È£ÃâÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.
  • +
  • »õ âÀ» ÇöÀç ¾²·¹µå¿¡ ´ëÇÏ¿© ±âº» âÀ¸·Î ¼³Á¤ÇÒ ¼ö ÀÖÁö¸¸, ºñ-GUI ¾²·¹µåµµ ¿©ÀüÈ÷ GUI ¹øÈ£ 1À» ±âº»°ªÀ¸·Î ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • +
  • GUI¿¡ À̸§ÀÌ ¾ø°í ±âº» GUI°¡ ¾Æ´Ï¸é, ±×ÀÇ HWND·Î ½Äº°ÇÏ¿©¾ß ÇÕ´Ï´Ù. +HwndGuiHwnd ¿É¼ÇÀ» »ç¿ëÇÏ¿© »õ âÀÇ HWND¸¦ GuiHwnd¿¡ ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. Gui, %GuiHwnd%:Default¸¦ »ç¿ëÇÏ¸é ±âº»°ªÀ¸·Î ´Ù¸¥ Gui ¸í·É¾îµéÀ» ±× â¿¡ ÀÛµ¿½Ãų ¼ö ÀÖ½À´Ï´Ù.
  • +
+

±àÁ¤ÀûÀÎ ¸é¿¡ °üÇÏ¿©:

+
    +
  • Gui New¸¦ È£ÃâÇÏ¸é ½ºÅ©¸³Æ®°¡ ±âÁ¸ÀÇ GUI¸¦ º¯°æÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, »õ·Î ¸¸µç´Ù´Â °ÍÀ» È®½ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ Äڵ带 Àд »ç¶÷µé¿¡°Ô (¶Ç´Â ¹Ì·¡ÀÇ ¿©·¯ºÐ¿¡°Ô) ½ºÅ©¸³Æ®ÀÇ ¸ñÀûÀ» ´õ ¸í·áÇÏ°Ô º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù.
  • +
  • Gui New´Â °¢ GUI¿¡ ´ëÇÏ¿© À¯ÀÏÇÑ À̸§ ¶Ç´Â ¹øÈ£¸¦ °í¸¦ Çʿ並 Á¦°ÅÇÕ´Ï´Ù. ÀÌ´Â ½ºÅ©¸³Æ®°¡ Çϳª ÀÌ»óÀÇ GUI¸¦ »ý¼ºÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§, ¶Ç´Â ´Ù¸¥ ½ºÅ©¸³Æ®¿¡ Æ÷Ç﵃ Àǵµ°¡ ÀÖÀ» ¶§ ƯÈ÷ À¯¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • +
  • GUI°¡ º¸¿©Áú ¶§°¡ ¾Æ´Ï¶ó »ý¼ºµÉ ¶§ âÀÇ Á¦¸ñÀ» ¼³Á¤ÇÏ´Â °ÍÀÌ Á¾Á¾ ´õ Á÷°üÀûÀÎ °æ¿ì°¡ ÀÖ½À´Ï´Ù.
  • +
+ +

À̸§ÀÌ ÁÖ¾îÁöÁö ¾ÊÀ¸¸é, ´ÙÀ½ÀÌ Àû¿ëµË´Ï´Ù:

+
    +
  • GuiClose¿Í °°ÀÌ Æ¯º°ÇÑ ¶óº§Àº ±âº»ÀûÀ¸·Î "Gui"¸¦ Á¢µÎ»ç·Î °¡Áý´Ï´Ù. ´Ü, ¿É¼Ç¿¡¼­ +LabelPrefix·Î ¿À¹ö¶óÀ̵åÇÏ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.
  • +
  • GUI±â »õ ¾²·¹µå¸¦ ±âµ¿ÇÒ ¶§, A_Gui´Â À̸§ ´ë½Å¿¡ HWND°¡ ´ã±é´Ï´Ù.
  • +
+

ÁÖÀÇ: v1.1.08 ÀÌÀü¿¡¼­, ÀÌ ¸í·É¾î´Â À̸§ÀÌ ÁöÁ¤µÇ¸é ±âº» Gui¸¦ ¼³Á¤ÇÏÁö ¾Ê¾Ò½À´Ï´Ù.

+ +

Gui, Add, ControlType [, Options, Text]

+

ÄÜÆ®·ÑÀ» GUI â¿¡ Ãß°¡ÇÕ´Ï´Ù (ÇÊ¿äÇϸé, ¸ÕÀú GUI â ÀÚü¸¦ »ý¼ºÇÕ´Ï´Ù).

+ +

ControlTypeÀº ´ÙÀ½ Áß ÇϳªÀÔ´Ï´Ù:

+ +

¿¹¸¦ µé¾î:

+
Gui, Add, Text,, Please enter your name:
+Gui, Add, Edit, vName
+Gui, Show
+ +

Gui, Show [, Options, Title]

+

+µû·Î Options¿¡ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, ÀÌ ¸í·É¾î´Â âÀ» º¸ÀÌ°Ô ¸¸µé°í, (ÇÊ¿äÇϸé) â Å©±â¸¦ º¹¿øÇÏ°í, È°¼ºÈ­ Çϸç, ±×¸®°í ±×ÀÇ Å¸ÀÌƲÀ» ¼³Á¤ÇÕ´Ï´Ù. TitleÀÌ »ý·«µÇ¸é, ÀÌÀü Á¦¸ñÀÌ À¯ÁöµË´Ï´Ù (¶Ç´Â ¾øÀ¸¸é, ½ºÅ©¸³Æ®ÀÇ À̸§ÀÌ »ç¿ëµË´Ï´Ù).

+

+¾Æ·¡ÀÇ X, Y, W, ±×¸®°í H ¿É¼ÇÀ» »ý·«Çϸé âÀÇ ÀÌÀü Å©±â¿Í À§Ä¡¸¦ À¯ÁöÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌÀüÀÇ À§Ä¡°¡ ¾øÀ» °æ¿ì, ¾Æ·¡¿¡ ¾ð±ÞµÈ X ¶Ç´Â/±×¸®°í Y ¿É¼ÇÀÌ ¾ø´Ù¸é âÀº µÎ Â÷¿ø Áß Çϳª¿¡ ¶Ç´Â µÑ ¸ðµÎ¿¡ ¸Â°Ô ÀÚµ¿ Áß¾Ó Á¤·ÄµË´Ï´Ù. ÀÌÀüÀÇ Å©±â°¡ ¾øÀ» °æ¿ì, âÀº ³»¿ëÀ» °¡Áø ÄÜÆ®·ÑÀÇ Å©±â¿Í À§Ä¡¿¡ ¸Â°Ô ÀÚµ¿ Á¶ÀýµË´Ï´Ù.

+

+´ÙÀ½ ¹®ÀÚ¿­ÀÌ Options¿¡ Á¸ÀçÇÒ ¼ö ÀÖ½À´Ï´Ù (°¢ ¼ýÀÚ¸¦ ½ÊÁø¼ö·Î ÁöÁ¤ÇϽʽÿÀ. ½ÊÀ°Áø¼ö°¡ ¾Æ´Õ´Ï´Ù):

+

+Wn: n¿¡ âÀÇ Å¬¶óÀ̾ðÆ® ±¸¿ªÀÇ ³Êºñ (Çȼ¿ ´ÜÀ§)¸¦ ÁöÁ¤ÇÕ´Ï´Ù (Ŭ¶óÀ̾ðÆ® ±¸¿ª¿¡¼­ âÀÇ Å׵θ®, Á¦¸ñ ¹Ù, ±×¸®°í ¸Þ´º ¹Ù´Â Á¦¿ÜµË´Ï´Ù).

+

+Hn: n¿¡ âÀÇ Å¬¶óÀ̾ðÆ® ±¸¿ªÀÇ ³ôÀ̸¦ Çȼ¿ ´ÜÀ§·Î ÁöÁ¤ÇÕ´Ï´Ù.

+

+Xn: n¿¡ È­¸é¿¡¼­ âÀÇ X-À§Ä¡¸¦ Çȼ¿ ´ÜÀ§·Î ÁöÁ¤ÇÕ´Ï´Ù. À§Ä¡°¡ 0À̸é È­¸é¿¡¼­ °¡Àå ¿ÞÂÊ¿¡ º¸ÀÌ´Â ¿ÞÂÊÀÇ Ä÷³ Çȼ¿ÀÔ´Ï´Ù.

+

+Yn: n¿¡ È­¸é¿¡¼­ Y-À§Ä¡¸¦ Çȼ¿ ´ÜÀ§·Î ÁöÁ¤ÇÕ´Ï´Ù. À§Ä¡ 0Àº È­¸é¿¡¼­ º¸ÀÌ´Â °¡Àå À§ÂÊ ÇàÀÇ Çȼ¿ÀÔ´Ï´Ù.

+

Center: âÀ» È­¸é¿¡¼­ ¼öÆò ¼öÁ÷À¸·Î °¡¿îµ¥¿¡ Á¤·ÄÇÕ´Ï´Ù.

+

xCenter: âÀ» È­¸é¿¡¼­ ¼öÆòÀ¸·Î Áß¾Ó Á¤·ÄÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: Gui, Show, xCenter y0.

+

yCenter: È­¸é¿¡¼­ âÀ» ¼öÁ÷À¸·Î Áß¾Ó Á¤·ÄÇÕ´Ï´Ù.

+

AutoSize: âÀÇ Å©±â¸¦ ÇöÀç º¸ÀÌ´Â ÄÜÆ®·Ñ¿¡¸¸ ¸Â°Ô º¯°æÇÕ´Ï´Ù. ÀÌ°ÍÀº »õ ÄÜÆ®·ÑÀ» Ãß°¡ÇÑ ÈÄ Ã¢ÀÇ Å©±â¸¦ ¹Ù²Ü ¶§, ¶Ç´Â ±âÁ¸ÀÇ ÄÜÆ®·ÑÀÌ Å©±â°¡ ¹Ù²î°Å³ª, ¼û°Å³ª, ¶Ç´Â ´Ù½Ã ³ªÅ¸³ª°Å³ª ÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:
+ Gui, Show, AutoSize Center

+


+ ´ÙÀ½ Áß Çϳª°¡ Á¸ÀçÇÒ ¼öµµ ÀÖ½À´Ï´Ù:

+

Minimize: âÀ» ÃÖ¼ÒÈ­ÇÏ°í ±× ¾Æ·¡¿¡ Àִ âÀ» È°¼ºÈ­ ÇÕ´Ï´Ù.

+

Maximize: âÀ» ÃÖ´ëÈ­ÇÏ°í È°¼ºÈ­ÇÕ´Ï´Ù.

+

Restore: âÀ» º¹±¸ÇÕ´Ï´Ù. âÀ» º¸¿©ÁÖ°í È°¼ºÈ­ÇÕ´Ï´Ù.

+

NoActivate: âÀ» º¹±¸ÇÕ´Ï´Ù. âÀ» È°¼ºÈ­ÇÏÁö ¾Ê°í º¸¿©ÁÝ´Ï´Ù.

+

NA: âÀ» È°¼ºÈ­ÇÏÁö ¾Ê°í º¸¿©ÁÝ´Ï´Ù. ±× âÀÌ ÃÖ¼ÒÈ­µÇ¾î ÀÖ´õ¶óµµ, ±×´ë·Î ÀÖ°ÚÁö¸¸ ¾Æ¸¶µµ z-¼ø¼­´Â ´õ ³ô¾ÆÁú °ÍÀÔ´Ï´Ù (z-¼ø¼­¶õ ¾ËÆ®-ÅÇ ¼±ÅÃÀÚ¿¡ º¸¿©Áö´Â ¼ø¼­ÀÔ´Ï´Ù). +âÀÌ ÀÌÀü¿¡ ¼û¾î ÀÖ¾úÀ¸¸é, ÀÌ ¶§¹®¿¡ ¾Æ¸¶µµ È°¼º âÀÌ ºñÈ°¼ºÈ­µÇÁö ¾Ê¾Ò´Ù°í ÇÒÁö¶óµµ ±× À§¿¡ ³ªÅ¸³¯ °ÍÀÔ´Ï´Ù.

+

+Hide: âÀ» °¨Ãß°í ±× ¾Æ·¡ÀÇ Ã¢À» È°¼ºÈ­ ÇÕ´Ï´Ù. ÀÌ°ÍÀº ±â´É»ó Gui Cancel°ú µ¿ÀÏÇÕ´Ï´Ù. ´Ü, ¼ûÀº âÀ» À̵¿ÇÏ°í, Å©±â º¯°æÀ» ÇÒ ¼ö ÀÖ°í ¶Ç´Â º¸¿©ÁÙ ÇÊ¿ä ¾øÀÌ »õ Á¦¸ñÀ» ÁÙ ¼ö ÀÖ´Ù´Â Á¡Àº ´Ù¸¨´Ï´Ù. ¿¹¸¦ µé¾î: Gui, Show, Hide x55 y66 w300 h200, New Title.

+ +

Gui, Submit [, NoHide]

+

+°¢ ÄÜÆ®·ÑÀÇ ³»¿ëÀ» ±×ÀÇ ¿¬°ü º¯¼ö¿¡ ÀúÀåÇÏ°í âÀ» °¨Ãä´Ï´Ù. ´Ü, NoHide ¿É¼ÇÀÌ ÀÖ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù. ´ÙÁß-¼±Åà ListBox¿Í °°ÀÌ ¿©·¯ ÇʵåÀÇ Ãâ·ÂÀ» »ý»êÇÏ´Â ÄÜÆ®·Ñ¿¡ ´ëÇÏ¿©, ±× Ãâ·ÂÀº âÀÇ ÇöÀç °¡¸§ÀÚ¸¦ »ç¿ëÇÕ´Ï´Ù. ±× âÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é -- ¾Æ¸¶µµ Gui Destroy¸¦ ÅëÇÏ¿© »ç¶óÁ® ¹ö·È´Ù¸é -- ÀÌ ¸í·É¾î´Â ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù.

+ +

Gui, Cancel

+

±×ÀÇ ¿¬°ü º¯¼ö¿¡ ÄÜÆ®·ÑÀÇ ³»¿ëÀ» ÀúÀåÇÏÁö ¾Ê°í âÀ» °¨Ãä´Ï´Ù. âÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é -- ¾Æ¸¶µµ Gui Destroy¸¦ ÅëÇÏ¿© Æı«µÇ¾î ¹ö·È´Ù¸é -- ÀÌ ¸í·É¾î´Â ¾Æ¹« È¿°úµµ ¾ø½À´Ï´Ù.

+ +

Gui, Destroy

+

+â°ú ±×ÀÇ ¸ðµç ÄÜÆ®·ÑÀ» (Á¸ÀçÇϸé) Á¦°ÅÇÏ°í, »óÀÀÇÏ´Â ¸Þ¸ð¸®¿Í ½Ã½ºÅÛ ÀÚ¿øÀ» Ç®¾îÁÝ´Ï´Ù. ³ªÁß¿¡ ½ºÅ©¸³Æ®°¡ ±× âÀ» ´Ù½Ã ¸¸µé¸é, ±Û²Ã°ú »ö±ò °°Àº âÀÇ ¸ðµç Ư¼ºÀº (¸¶Ä¡ âÀÌ Á¸ÀçÇÏÁö ¾Ê¾Ò´ø °Íó·³) ±âº» °ªÀ¸·Î ½ÃÀÛÇÕ´Ï´Ù. Gui Destroy¸¦ »ç¿ëÇÏÁö ¾Ê´õ¶óµµ, ¸ðµç GUI âÀº ½ºÅ©¸³Æ®°¡ Á¾·áÇÒ ¶§ ÀÚµ¿À¸·Î Æı«µË´Ï´Ù.

+ +

Gui, Font [, Options, FontName]

+

+â¿¡ Ãß°¡µÈ ÄÜÆ®·Ñ¿¡ ´ëÇÏ¿© ÀÌ ½ÃÁ¡ºÎÅÍ ±Û²Ã ¸ð¾ç, Å©±â, ½ºÅ¸ÀÏ ±×¸®°í/¶Ç´Â »öÀ» ¼³Á¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
gui, font, s10, Verdana  ; Set 10-point Verdana.
+

+¸¶Áö¸· ¸Å°³º¯¼ö µÎ °³¸¦ »ý·«ÇÏ¸é ±Û²ÃÀ» ½Ã½ºÅÛÀÇ ±âº» GUI ¸ð¾ç, Å©±â ±×¸®°í »öÀ¸·Î º¹±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+FontNameÀº ±Û²Ã À̸§ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î ±Û²Ã Å×ÀÌºí¿¡¼­ °í¸¦ ¼ö ÀÖ´Â À̸§ÀÔ´Ï´Ù. + +FontNameÀ» »ý·«Çϰųª ½Ã½ºÅÛ¿¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ÀÌÀüÀÇ ±Û²Ã ¸ð¾çÀÌ »ç¿ëµË´Ï´Ù (¶Ç´Â ¾øÀ¸¸é, ½Ã½ºÅÛÀÇ ±âº» GUI ¸ð¾çÀÌ »ç¿ëµË´Ï´Ù). ¼±È£ÇÏ´Â ±Û²ÃÀÌ ¾ø´Ù°í ÇÒÁö¶óµµ ¿©·¯ ½Ã½ºÅÛ¿¡¼­ GUI âÀÌ ºñ½ÁÇÑ ±Û²ÃÀ» °¡Áö°Ô ¸¸µå´Â µ¥ À¯¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ¸í·É¾î¸¦ ¼ø¼­´ë·Î »ç¿ëÇϸé, Verdana ±Û²ÃÀÌ Arialº¸´Ù ¿ì¼±ÇÏ°í, ArialÀº MS sans serifº¸´Ù ¿ì¼± ¼øÀ§°¡ ÁÖ¾îÁý´Ï´Ù:

+ +
gui, font,, MS sans serif
+gui, font,, Arial
+gui, font,, Verdana  ; ¼±È£ÇÏ´Â ±Û²Ã.
+

+Options ¸Å°³º¯¼ö°¡ ºñ¾î ÀÖÀ¸¸é, ÀÌÀüÀÇ ±Û²Ã ¼Ó¼ºÀÌ »ç¿ëµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ´ÙÀ½ ¿É¼Ç ±âÈ£µéÀ» ´ë½Å ÁöÁ¤ÇϽʽÿÀ:

+

+C: Ä÷¯ À̸§ (Ä÷¯ Â÷Æ® ÂüÁ¶) ¶Ç´Â RGB °ª -- ¶Ç´Â ´Ü¾î Default¸¦ ÁöÁ¤ÇÏ¸é ½Ã½ºÅÛÀÇ ±âº» Ä÷¯¿¡ ÀÇÁ¸ÇÒ ¼ö ÀÖ½À´Ï´Ù (´ëºÎºÐÀÇ ½Ã½ºÅÛ¿¡¼­ °ËÁ¤»ö). ¿¹¸¦ µé¾î: cRed, cFFFFAA, cDefault. ÁÖÀÇ: ButtonsÀº ¸ÂÃã »öÀ» ÁؼöÇÏÁö ¾Ê½À´Ï´Ù. ¶ÇÇÑ, C ¿É¼ÇÀ» Æ÷ÇÔÇÔÀ¸·Î½á ÇöÀç »ö ¸»°í ±Û²Ã »öÀ» °¡Áö°í ÄÜÆ®·ÑÀ» °³º°ÀûÀ¸·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: Gui, Add, Text, cRed, My Text.

+

+S: Å©±â (Æ÷ÀÎÆ® ´ÜÀ§). ¿¹¸¦ µé¾î: s12 (½ÊÁø¼ö·Î ÁöÁ¤ÇϽʽÿÀ. ½ÊÀ°Áø¼ö°¡ ¾Æ´Õ´Ï´Ù)

+

+W: µÎ²² (µÎ²¨¿ò), 1°ú 1000 »çÀÌÀÇ ¼ýÀÚÀÔ´Ï´Ù (400Àº º¸ÅëÀÌ°í 700ÀÌ¸é º¼µåüÀÔ´Ù). ¿¹¸¦ µé¾î: w600 (½ÊÀ°Áø¼ö°¡ ¾Æ´Ï¶ó ½ÊÁø¼ö·Î ÁöÁ¤ÇϽʽÿÀ)

+

+´ÙÀ½ ´Ü¾îµéÀ» Áö¿øÇÕ´Ï´Ù: bold, italic, strike, underline, ±×¸®°í norm. NormÀº ±Û²ÃÀ» º¸Åë µÎ²²¿Í/¹«°Ô·Î µ¹·ÁÁÝ´Ï´Ù. ±×¸®°í ÀÌÅŸ¯, Ãë¼Ò¼±, ±×¸®°í ¹ØÁÙÀ» ²ü´Ï´Ù (±×·¯³ª ±âÁ¸ÀÇ »ö°ú Å©±â´Â À¯ÁöÇÕ´Ï´Ù). normÀ» »ç¿ëÇÏ¿© ¸ðµç ¼Ó¼ºÀ» ²ö ´ÙÀ½ ¼±ÅÃÀûÀ¸·Î Çϳª¾¿ ÄÑ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, norm italicÀ» ÁöÁ¤ÇÏ¸é ±Û²ÃÀ» Á¤»óÀ¸·Î ¸¸µç ´ÙÀ½ ÀÌÅø¯À¸·Î ¼³Á¤ÇÕ´Ï´Ù.

+

+¿©·¯ ¿É¼ÇÀ» ÁöÁ¤ÇÏ·Á¸é, °¢ ¿É¼Ç »çÀÌ¿¡ ½ºÆäÀ̽º¸¦ Æ÷ÇÔ½ÃÅ°½Ê½Ã¿À. ¿¹¸¦ µé¾î: cBlue s12 bold.

+

+½ºÅ©¸³Æ®°¡ ¿©·¯ GUI âÀ» »ý¼ºÇϸé, °¢ ⸶´Ù ÄÜÆ®·ÑÀ» ´õ ¸¸µé ¸ñÀûÀ¸·Î ÀÚ½ÅÀÇ "ÇöÀç ±Û²Ã"À» ±â¾ïÇÕ´Ï´Ù.

+

+°ü·ÃÇÏ¿©, ¿î¿µ üÁ¦´Â »ç¿ëÀÚ°¡ ±Û²Ã, Ä÷¯, ¶Ç´Â ¾ÆÀÌÄÜÀ» °í¸£µµ·Ï Ç¥ÁØ ´ëÈ­»óÀÚ¸¦ Á¦°øÇÕ´Ï´Ù. ÀÌ ´ëÈ­»óÀÚ´Â DllCall()À» ÅëÇÏ¿© º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½¿¡ ¿¹½ÃÇÕ´Ï´Ù: www.autohotkey.com/forum/topic17230.html.

+

+Q: [AHK_L 19+]: ÅؽºÆ® °¡°ø Ç°Áú. ¿¹¸¦ µé¾î: q3. Q ´ÙÀ½¿¡ ´ÙÀ½ Å×ÀÌºí¿¡ ÀÖ´Â ¼ýÀÚ°¡ µû¶ó¿Í¾ß ÇÕ´Ï´Ù:

+ + + + + + + +
0 = DEFAULT_QUALITY±Û²ÃÀÇ ¸ð½ÀÀº »ó°üÇÏÁö ¾Ê½À´Ï´Ù.
1 = DRAFT_QUALITYPROOF_QUALITY¸¦ »ç¿ëÇÒ ¶§¿¡ ºñÇØ ±Û²ÃÀÇ ¸ð½ÀÀÌ ´ú Áß¿äÇÕ´Ï´Ù.
2 = PROOF_QUALITY³í¸®Àû ±Û²Ã ¼Ó¼º¿¡ Á¤È®ÇÏ°Ô ºÎÇÕÇÏ´Â °Íº¸´Ù ±Û²ÃÀÇ ¹®ÀÚ Ç°ÁúÀÌ ´õ Áß¿äÇÕ´Ï´Ù.
3 = NONANTIALIASED_QUALITY±Û²ÃÀ» ºÎµå·´°Ô ¿Ü°û¼± ó¸®ÇÏÁö ¾Ê½À´Ï´Ù.
4 = ANTIALIASED_QUALITY±Û²ÃÀÌ Áö¿øÇÏ¸é ±Û²ÃÀ» ºÎµå·´°Ô ¿Ü°û¼± ó¸®ÇÕ´Ï´Ù. ±×¸®°í ±Û²ÃÀÇ Å©±â´Â ³Ê¹« ÀÛÁöµµ ³Ê¹« Å©Áöµµ ¾Ê½À´Ï´Ù.
5 = CLEARTYPE_QUALITYWindows XP ÀÌÈÄ: ¼³Á¤Çϸé, ClearType ¿Ü°û¼± ó¸® ¹æ¹ýÀ» »ç¿ëÇÏ¿© ÅؽºÆ®¸¦ °¡°øÇÕ´Ï´Ù.
+

+ÀÌ·± °ªµéÀÇ Àǹ̿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â MSDN: CreateFont¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+°íÇ°Áú ¼³Á¤ÀÌ º¸Åë ±âº»°ªÀ̱⠶§¹®¿¡, ÀÌ Æ¯Â¡Àº ÁÖ·Î ¾ØƼ-¿¤¸®¾î½ÌÀ» ²ô¸é ÅؽºÆ®°¡ ´õ ¼±¸íÇÏ°Ô º¸ÀÏ °æ¿ì¿¡ »ç¿ëµË´Ï´Ù.

+ +

Gui, Color [, WindowColor, ControlColor]

+

+âÀÇ ±×ÀÇ ÄÜÆ®·ÑÀÇ ¹è°æ»öÀ» ¼³Á¤ÇÕ´Ï´Ù. WindowColor´Â GUI â ÀÚü¿¡ ´ëÇÑ ¹è°æ»öÀ¸·Î »ç¿ëµË´Ï´Ù. ControlColor´Â â¿¡ Á¸ÀçÇÏ´Â ±×¸®°í Á¸ÀçÇÒ ¸ðµç ÄÜÆ®·Ñ¿¡ Àû¿ëµË´Ï´Ù (±×·¸Áö¸¸ ¾î¶² À¯ÇüÀÇ ÄÜÆ®·ÑÀÇ ¸ÂÃã »öÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù). ControlColorÀ» óÀ½¿¡´Â ListViews¿Í TreeViews°¡ ÁؼöÇÏÁö¸¸, ¿¬À̾ ControlColor¸¦ º¯°æÇÏ¸é ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù. ±×·± °æ¿ì, GuiControl +BackgroundFF9977, MyListView¸¦ »ç¿ëÇÏ¿© ¸í½ÃÀûÀ¸·Î »öÀ» º¯°æÇϽʽÿÀ.

+

+µÎ ¸Å°³º¯¼ö Áß Çϳª¶óµµ ±×´ë·Î µÎ¸é ÇöÀç »öÀÌ À¯ÁöµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, 16°¡Áö ±âº» HTML Ä÷¯ À̸§ ¶Ç´Â6-ÀÚ¸® RGB Ä÷³ À̸§ (0x Á¢µÎ»ç´Â ¼±ÅÃÀû), ¶Ç´Â ´Ü¾î Default¸¦ ÁöÁ¤ÇÏ¸é ±×ÀÇ ±âº» °ªÀ¸·Î µ¹¾Æ°¥ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: Silver, FFFFAA, 0xFFFFAA, Default.

+

+±âº»°ªÀ¸·Î, âÀÇ ¹è°æ »öÀº ½Ã½ºÅÛÀÇ ¹öÆ°»öÀÔ´Ï´Ù. ±×¸®°í ÄÜÆ®·ÑÀÇ ¹è°æ»öÀº ½Ã½ºÅÛÀÇ ±âº» âÀÇ »öÀÔ´Ï´Ù (º¸Åë Èò»ö).

+

+¸Þ´º ¹Ù¿Í ±×ÀÇ ÇÏÀ§ ¸Þ´º »öÀº ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù: Menu, MyMenuBar, Color, White.

+

+¹è°æÀ» Åõ¸íÇÏ°Ô ¸¸µé·Á¸é WinSet TransColor¸¦ »ç¿ëÇϽʽÿÀ. ±×·¸Áö¸¸, ¸ÕÀú Gui, ColorÀ» ÅëÇÏ¿© ¸ÂÃã âÀ» ÇÒ´çÇÏÁö ¾Ê°í ÀÌ·¸°Ô Çϸé, ¹öÆ°µµ Åõ¸íÇÏ°Ô µË´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é, ¸ÕÀú ¸ÂÃã »öÀ» ÇÒ´çÇÑ ´ÙÀ½ ±× »öÀ» Åõ¸íÇÏ°Ô ¸¸µå½Ê½Ã¿À. ¿¹¸¦ µé¾î:

+
Gui, Color, EEAA99
+Gui +LastFound  ; GUI âÀ» ¸¶Áö¸· ¹ß°ß âÀ¸·Î ¸¸µé¾î ¾Æ·¡ ÁÙ¿¡ »ç¿ëÇÕ´Ï´Ù.
+WinSet, TransColor, EEAA99
+

+¶Ç Å׵θ®¿Í Á¦¸ñ ¹Ù¸¦ Åõ¸í ¹è°æÀ» °¡Áø âÀ¸·ÎºÎÅÍ Á¦°ÅÇÏ·Á¸é, âÀ» Åõ¸íÇÏ°Ô ¸¸µç ÈÄ¿¡ ´ÙÀ½°ú °°ÀÌ ÇϽʽÿÀ:

+ +
Gui -Caption  ; ¶Ç´Â ±âº» âÀÌ ¾Æ´Ï¶ó¸é Gui, GuiName:-CaptionÀ» »ç¿ëÇϽʽÿÀ.
+

+ÀÌ ÆäÀÌÁöÀÇ ÇÏ´Ü ±Ùó¿¡ À§¸¦ ½Ã¿¬ÇØÁÖ´Â È­¸é-À§ µð½ºÇ÷¹ÀÌ (OSD)ÀÇ ¿¹Á¦°¡ ÀÖ½À´Ï´Ù.

+ +

Gui, Margin [, X, Y]

+

+X ±×¸®°í Y´Â ¸í½ÃÀûÀÎ X ¶Ç´Â Y ÁÂÇ¥°¡ ¾ø´Â ÄÜÆ®·ÑÀ» ÀÚµ¿ ¹èÄ¡ÇÒ ¶§ âÀÇ »ó/ÇÏ/ÁÂ/¿ì¿¡ µÑ ¿©¹éÀÇ Çȼ¿ÀÇ °³¼öÀÔ´Ï´Ù. ¶Ç, ÀÚµ¿ ¹èÄ¡µÈ ÄÜÆ®·ÑµéÀ» ¼­·Î ºÐ¸®ÇÒ ¼öÁ÷ ¼öÆò °Å¸®¸¦ °áÁ¤Çϱâ À§ÇØ ¿©¹éÀÌ »ç¿ëµË´Ï´Ù. ¸¶Áö¸·À¸·Î, (¸í½ÃÀûÀ¸·Î Å©±â°¡ ÁÖ¾îÁöÁö ¾ÊÀ» ¶§) óÀ½ Gui Show¸¦ »ç¿ëÇÒ ¶§ âÀÇ Å©±â¸¦ °è»êÇϱâ À§ÇØ ¿©¹éÀÌ °í·ÁµË´Ï´Ù.

+

+Gui, MarginÀº ±âº» â¿¡¸¸ ¿µÇâÀ» ÁÖ´Â ¹Ý¸é¿¡, Gui, Name:Margin´Â À̸§ºÙÀº â¿¡¸¸ ¿µÇâÀ» ¹ÌĨ´Ï´Ù. ÀÌ ¸í·É¾î°¡ »ç¿ëµÇÁö ¾ÊÀ¸¸é, ù ÄÜÆ®·ÑÀÌ Ã¢¿¡ Ãß°¡µÉ ¶§, ±× âÀº ÇöÀç ¼±ÅÃµÈ ±Û²ÃÀÇ Å©±â¿¡ ºñ·ÊÇÏ¿© »ç¹æ¿¡ ±âº» ¿©¹éÀ» ¾ò½À´Ï´Ù (»óÇÏ·Î ±Û²Ã ³ôÀÌÀÇ 0.75 ¹è ±×¸®°í Á¿ì·Î ±Û²Ã ³ôÀÌÀÇ 1.25 ¹è).

+

+ÄÜÆ®·ÑÀ» Ãß°¡ÇÏ´Â µ¿¾È ¿©¹éÀ» ¹Ù²Ü ¼ö ÀÖÁö¸¸, ±× ¶§ÀÇ º¯°æÀº ÀÌ¹Ì Á¸ÀçÇÏ´Â ÄÜÆ®·Ñ¿¡´Â ¿µÇâÀ» ÁÖÁö ¾Ê°í ¾ÕÀ¸·Î Ãß°¡µÉ ÄÜÆ®·Ñ¿¡¸¸ ¿µÇâÀ» ÁÝ´Ï´Ù. ¸¶Áö¸·À¸·Î, X¤¤ Y°¡ ºñ¾î ÀÖÀ¸¸é »óÀÀÇÏ´Â ¿©¹éÀº ¹Ù²îÁö ¾Ê½À´Ï´Ù.

+ +

Gui, +/-Option1 +/-Option2 ...

+

+GUI ¸í·É¾î ¹Ù·Î ´ÙÀ½¿¡ ¿©·¯ ¿É¼ÇÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼öÇ༺´ÉÀÇ ÀÌÀ¯·Î, ¸ðµç ¿É¼ÇÀ» ÇÑ ÁÙ¿¡¼­ ¼³Á¤ÇÏ´Â °ÍÀÌ ´õ ÁÁ½À´Ï´Ù. ±×¸®°í âÀ» ¸¸µé±â Àü¿¡ (Áï, Gui Add¿Í °°Àº ´Ù¸¥ ÇÏÀ§-¸í·É¾îµéÀ» »ç¿ëÇϱâ Àü¿¡) ±×·¸°Ô ÇÏ´Â ÆíÀÌ ´õ ÁÁ½À´Ï´Ù.

+

+ÀÌ ¸í·É¾îÀÇ È¿°ú´Â Á¡ÁõÀûÀÔ´Ï´Ù. Áï, ¸í½ÃÀûÀ¸·Î ÁöÁ¤µÈ ¼³Á¤¸¸ º¯°æÇÕ´Ï´Ù. ´Ù¸¥ ¼³Á¤µéÀº ±×´ë·Î µÓ´Ï´Ù.

+

+Ç÷¯½º »çÀÎÀ» ÁöÁ¤ÇÏ¸é ¿É¼ÇÀ» Ãß°¡ÇÒ ¼ö ÀÖ°í ¸¶À̳ʽº »çÀÎÀº Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
Gui +Resize -MaximizeBox  ; ±âº» GUI âÀÇ ¼³Á¤À» º¯°æÇÕ´Ï´Ù.
+Gui MyGui:+Resize -MaximizeBox  ; À̸§ÀÌ MyGuiÀÎ GUIÀÇ ¼³Á¤À» º¯°æÇÕ´Ï´Ù.
+

+AlwaysOnTop: âÀ» Ç×»ó ´Ù¸¥ ¸ðµç â À§¿¡ ÀÖµµ·Ï ¸¸µì´Ï´Ù. ÀÌ È¿°ú´Â WinSet AlwaysOnTop°ú °°½À´Ï´Ù.

+

+Border: °¡´Â-ÁÙ Å׵θ®¸¦ ⠵ѷ¹¿¡ µÎ¸¨´Ï´Ù. ÀÌ°ÍÀº ÀϹÝÀûÀÌÁö ¾Ê½À´Ï´Ù.

+

+Caption (±âº»À¸·Î Á¸Àç): Á¦¸ñ ¹Ù¿Í µÎ²¨¿î â Å׵θ®/¸ð¼­¸®¸¦ Á¦°øÇÕ´Ï´Ù. â¿¡¼­ ĸ¼ÇÀ» Á¦°ÅÇÒ ¶§ WinSet TransColor¸¦ »ç¿ëÇÏ°í ÀÖ´Ù¸é, TransColor¸¦ ¼³Á¤ÇÑ ÈÄ¿¡ Á¦°ÅÇϽʽÿÀ.

+

+Delimiter: ÆÄÀÌÇÁ (|) ¸»°í âÀÌ »ç¿ëÇØ¾ß ÇÏ´Â ÇÊµå °¡¸§ÀÚ¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ °¡¸§ÀÚ´Â ÄÜÆ®·ÑÀÇ ³»¿ëÀÌ Gui Add¸¦ ÅëÇÏ¿© Ãß°¡µÇ°Å³ª, GuiControl¸¦ ÅëÇÏ¿© º¯°æµÇ°Å³ª, ¶Ç´Â Gui Submit³ª GuiControlGet¸¦ ÅëÇÏ¿© ¿­¶÷µÉ ¶§ »ç¿ëµË´Ï´Ù. + +´Ü¾î Delimiter ´ÙÀ½¿¡ ¹Ù·Î ¹®ÀÚ Çϳª¸¦ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, Gui +Delimiter`nÀº ¶óÀÎÇÇµå ¹®ÀÚ¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ´Â °è¼Ó ¼½¼Ç¿¡ ƯÈ÷ ÀûÀýÇÒ ¼ö ÀÖ½À´Ï´Ù. ºñ½ÁÇÏ°Ô, Gui +Delimiter|´Â ±âº» °¡¸§ÀÚ·Î µÇµ¹¾Æ °©´Ï´Ù. + +½ºÆäÀ̽º³ª ÅÇÀ» »ç¿ëÇÏ·Á¸é, Gui +DelimiterSpace ¶Ç´Â Gui +DelimiterTabÀ» ÁöÁ¤ÇϽʽÿÀ. ±¸ºÐÀÚ°¡ ¹Ù²î¸é, ÀÌ Æ¯Á¤ÇÑ Ã¢À§¿¡¼­ ÀÛµ¿ÇÏ´Â ±âÁ¸ÀÇ ±×¸®°í ÀÕµû¸£´Â ¸ðµç ¾²·¹µå¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.

+

+Disabled: âÀ» ºñÈ°¼ºÈ­ ÇÕ´Ï´Ù. »ç¿ëÀÚ°¡ ±×ÀÇ ÄÜÆ®·Ñ°ú »óÈ£ÀÛ¿ëÇÏÁö ¸øÇÏ°Ô ¸·½À´Ï´Ù. ÀÌ´Â Á¾Á¾ ´Ù¸¥ âÀ» ¼ÒÀ¯ÇÑ Ã¢¿¡ »ç¿ëµË´Ï´Ù (Owner ÂüÁ¶).

+

DPIScale [v1.1.11+]: Gui -DPIScale¸¦ »ç¿ëÇϸé DPI ½ºÄÉÀϸµÀ» ²ø ¼ö ÀÖ½À´Ï´Ù. ÀÌ´Â ±âº» °ªÀ¸·Î ÄÑÁ® ÀÖ½À´Ï´Ù. ºñ-Ç¥ÁØ DPI ¼³Á¤ÀÇ ½Ã½ºÅÛ¿¡ DPI ½ºÄÉÀϸµÀÌ È°¼ºÈ­ µÇ¸é, ÀÌ Gui ¸í·É¾î´Â ÀÚµ¿À¸·Î ÁÂÇ¥¿Í Å©±â¸¦ Á¶ÀýÇÏ¿© ÄÜÆ®·Ñ¿¡ ´ë·« ºñ½ÁÇÏ°Ô º¸ÀÌ´Â Å©±â¸¦ ÁÝ´Ï´Ù (±×·¯³ª Çػ󵵴 ´õ ³ô½À´Ï´Ù). ¿¹¸¦ µé¾î, DPI°¡ 144 (150%)À̸é, Gui Show, w100´Â Gui¸¦ 150 Çȼ¿ ³Êºñ·Î ¸¸µéÁö¸¸, A_GuiWidth´Â ¿©ÀüÈ÷ 100À» µ¹·ÁÁÝ´Ï´Ù. A_ScreenDPI¿¡´Â ½Ã½ºÅÛÀÇ ÇöÀç DPI°¡ ´ã°Ü ÀÖ½À´Ï´Ù.

+

+HwndOutputVar [v1.1.04+]: ÀÌ ¿É¼ÇÀº OutputVar¿¡ GUIÀÇ Ã¢ ÇÚµé (HWND)À» ÀúÀåÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: Gui +HwndMyGuiHwnd. ÇÔ¼ö ¾È¿¡¼­ MyGuiHwnd´Â ÇÔ¼öÀû µ¿Àû º¯¼ö·Î Ãë±ÞµË´Ï´Ù. GUIÀÇ HWND´Â Á¾Á¾ PostMessage, SendMessage, ±×¸®°í DllCall¿Í ÇÔ²² »ç¿ëµË´Ï´Ù. ¶ÇÇÑ ahk_id WinTitle·Î ¶Ç´Â GUI À̸§ ´ë½Å¿¡ Á÷Á¢ÀûÀ¸·Î »ç¿ëµÇ±âµµ ÇÕ´Ï´Ù; ¿¹¸¦ µé¾î, Gui %MyGuiHwnd%:Destroy.

+

+Label [v1.0.44.09+]: ÀÌ Ã¢ÀÇ Æ¯º° ¶óº§¿¡ ¸ÂÃã À̸§À» ¼³Á¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, Gui MyGui:+LabelMyGui_On´Â MyGuiGuiClose¿Í MyGuiGuiSize ´ë½Å¿¡ ¶óº§ MyGui_OnClose¿Í MyGui_OnSize ¸¦ »ç¿ëÇÕ´Ï´Ù. ´Ù¸¥ ¸»·Î Çϸé, ¸ðµç Ư¼ö ¶óº§ÀÇ À̸§¿¡ ¹®ÀÚ¿­ "MyGuiGui"´Â "MyGui_On"À¸·Î ±³Ã¼µË´Ï´Ù. ÀÌ´Â ¶ÇÇÑ ¿©·¯ âÀÌ °°Àº ¶óº§ ¼¼Æ®¸¦ °øÀ¯Çϵµ·Ï ¸¸µå´Â µ¥ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù (ÀÌ °æ¿ì ½ºÅ©¸³Æ®´Â A_Gui¿¡ ¹®ÀÇÇØ ¾î´À âÀÌ ¼­ºê·çƾÀ» ±âµ¿Çß´ÂÁö °áÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù).

+

+LastFound: ¸¶Áö¸· ¹ß°ß âÀÌ µÉ âÀ» ¼³Á¤ÇÕ´Ï´Ù (±×·¸Áö¸¸ Gui ¾²·¹µå ¾È¿¡¼­´Â ÀÚµ¿À¸·Î 󸮵DZ⠶§¹®¿¡ ºÒÇÊ¿ä ÇÕ´Ï´Ù). ÀÌ ´öºÐ¿¡ WinSet°ú °°Àº ¸í·É¾îµéÀº ¼û¾î ÀÖÀ» °æ¿ì¿¡µµ âÀ» ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù (Áï, DetectHiddenWindows´Â ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù). ÀÌ°ÍÀº ƯÈ÷ º¸¿©ÁÖ±â Àü¿¡ âÀÇ Æ¯¼ºÀ» ¹Ù²Ù´Â µ¥ À¯¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
Gui +LastFound
+WinSet, TransColor, %CustomColor% 150
+Gui Show
+

+LastFoundExist [v1.0.43.09+]: ´Ù¸¥ ¿É¼Ç°ú ´Ù¸£°Ô, LastFoundExist´Â °°Àº ÁÙ¿¡ ´Ù¸¥ ¿¬»êÀÌ ¾øÀ» °æ¿ì¿¡¸¸ ÀÎÁöµË´Ï´Ù. +LastFoundExist´Â +LastFound¿Í °°½À´Ï´Ù. ´Ü, âÀÌ ¾ÆÁ÷ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì¿¡µµ »ý¼ºµÇÁö ¾Ê´Â´Ù´Â Á¡Àº ´Ù¸¨´Ï´Ù. ÁÖ¿ä »ç¿ë¹ýÀº ƯÁ¤ GUI âÀÌ Á¸ÀçÇÏ´ÂÁö ŽÁöÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î:

+
Gui MyGui:+LastFoundExist
+IfWinExist
+    MsgBox GUI "MyGui" already exists.
+

+MaximizeBox: ÃÖ´ëÈ­ ¹öÆ°À» Á¦¸ñ ¹Ù¿¡ È°¼ºÈ­ÇÕ´Ï´Ù. ÀÌ°ÍÀº ¶Ç ¾Æ·¡ÀÇ ResizeÀÇ ÀϺο¡ Æ÷Ç﵃ ¼öµµ ÀÖ½À´Ï´Ù.

+

MinimizeBox (±âº» °ªÀ¸·Î º¸¿©ÁÜ): ÃÖ¼ÒÈ­ ¹öÆ°À» Á¦¸ñ ¹Ù¿¡ È°¼ºÈ­ ÇÕ´Ï´Ù.

+

+MinSize ±×¸®°í MaxSize [v1.0.44.13+]: âÀÇ ÃÖ´ë ÃÖ¼Ò Å©±â¸¦ °áÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, »ç¿ëÀÚ°¡ ±×ÀÇ ¸ð¼­¸®¸¦ ²ø¾î Å©±â¸¦ ¹Ù²Ü ¶§, ´Ü¾î MinSize ±×¸®°í/¶Ç´Â MaxSize¸¦ ¾Õ¿¡ Á¢µÎ»ç ¾øÀÌ ÁöÁ¤Çϸé âÀÇ ÇöÀç Å©±â¸¦ ÇÑ°è °ªÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù (â¿¡ ÇöÀç Å©±â°¡ ¾øÀ¸¸é, Gui Show¸¦ ¸Ç óÀ½ »ç¿ëÇßÀ» ¶§ÀÇ Å©±â¸¦ »ç¿ëÇÕ´Ï´Ù). ´ë¾ÈÀ¸·Î, ³Êºñ¿Í X, ´ÙÀ½¿¡ ³ôÀ̸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù; ¿¹¸¦ µé¾î: Gui +Resize +MinSize640x480. Â÷¿øÀº Çȼ¿ ´ÜÀ§ÀÔ´Ï´Ù. ±×¸®°í âÀÇ Å¬¶óÀ̾ðÆ® ±¸¿ªÀ» ÁöÁ¤ÇÕ´Ï´Ù (ÀÌ ±¸¿ª¿¡¼­ Å׵θ®, Á¦¸ñ ¹Ù, ±×¸®°í ¸Þ´º ¹Ù¸¦ Á¦¿ÜµË´Ï´Ù). °¢ ¼ýÀÚ¸¦ ½ÊÁø¼ö·Î ÁöÁ¤ÇϽʽÿÀ. ½ÊÀ°Áø¼ö°¡ ¾Æ´Õ´Ï´Ù.

+

+³Êºñ ¶Ç´Â ³ôÀ̸¦ »ý·«ÇÏ¸é ±×´ë·Î µÑ ¼ö ÀÖ½À´Ï´Ù (¿¹, +MinSize640x ¶Ç´Â +MinSizex480). °Ô´Ù°¡, Min/MaxSize´Â ¿©·¯ ¹ø ÁöÁ¤ÇØ ÇÑ Â÷¿ø¿¡´Â âÀÇ ÇöÀç Å©±â¸¦ »ç¿ëÇÏ°í ´Ù¸¥ Â÷¿ø¿¡´Â ¸í½ÃÀûÀÎ Å©±â¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, +MinSize +MinSize640x´Â ³ôÀÌ¿¡ âÀÇ ÇöÀç Å©±â¸¦ »ç¿ëÇÏ°í ³Êºñ¿¡ 640À» »ç¿ëÇÕ´Ï´Ù.

+

+MinSize ±×¸®°í MaxSize°¡ »ç¿ëµÇÁö ¾ÊÀ¸¸é, ¿î¿µ üÁ¦ÀÇ ±âº» °ªÀÌ »ç¿ëµË´Ï´Ù (ºñ½ÁÇÏ°Ô, Gui -MinSize -MaxSize¸¦ »ç¿ëÇÏ¸é ±âº» °ªÀ¸·Î µÇµ¹¾Æ °¥ ¼ö ÀÖ½À´Ï´Ù). ÁÖÀÇ: âÀº +ResizeÀÌ ÀÖ¾î¾ß »ç¿ëÀÚ¿¡°Ô Å©±â º¯°æÀ» Çã¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+OwnDialogs: Gui +OwnDialogs´Â °¢ ¾²·¹µå¸¶´Ù ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù (¿¹¸¦ µé¾î ButtonOK ¼­ºê·çƾ). ¿¬ÀÌ¾î º¸¿©Áö´Â MsgBox, InputBox, FileSelectFile, ±×¸®°í FileSelectFolder ´ëÈ­»óÀÚ´Â ±× âÀÌ ¼ÒÀ¯ÇØ¾ß ÇÕ´Ï´Ù. ±×·± ´ëÈ­»óÀÚ´Â ¸ð´ÞÀÌ µÇ´Âµ¥, Ãë¼ÒÇϱâ Àü±îÁö »ç¿ëÀÚ°¡ ±× GUI â°ú »óÈ£ÀÛ¿ëÇÒ ¼ö ¾ø´Ù´Â ¶æÀÔ´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, ToolTip, Progress, ±×¸®°í SplashImage âÀº ¼ÒÀ¯µÇ¾î ÀÖ´Â °æ¿ì¿¡µµ ¸ð´ÞÀÌ µÇÁö ¾Ê½À´Ï´Ù; ±×³É ±×ÀÇ ¼ÒÀ¯ÀÚº¸´Ù ¾ðÁ¦³ª À§¿¡ ÀÖÀ» »ÓÀÔ´Ï´Ù. ¾î´À °æ¿ìµç, ¼ÒÀ¯µÈ ´ëÈ­»óÀÚ ¶Ç´Â âÀº ¼ÒÀ¯ÇÑ GUI âÀÌ Æı«µÇ¸é ÀÚµ¿À¸·Î Æı«µË´Ï´Ù.

+

+ÀüÇüÀûÀ¸·Î ÀÌ ¼³Á¤À» ´Ù½Ã ²ø ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ´Ù¸¥ ¾²·¹µå¿¡´Â ¿µÇâÀ» ÁÖÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ±×·¸Áö¸¸, ¾²·¹µå°¡ ¼ÒÀ¯ÇÑ Ã¢°ú ¼ÒÀ¯µÈ ´ëÈ­»óÀÚ¸¦ ¸ðµÎ º¸¿©ÁÙ ÇÊ¿ä°¡ ÀÖ´Ù¸é, ÀÌ ¼³Á¤À» Gui -OwnDialogs¸¦ ÅëÇÏ¿© ²ô¸é µË´Ï´Ù.

+

+âÀ̸§ Á¢µÎ»ç°¡ ÁöÁ¤µÇÁö ¾ÊÀ¸¸é -- ¿¹¸¦ µé¾î Gui MyGui:+OwnDialogs ´ë½Å¿¡ Gui +OwnDialogs¿Í °°ÀÌ »ç¿ëÇϸé -- ¾²·¹µåÀÇ ±âº» âÀÌ ±× ´ëÈ­»óÀÚ¸¦ ¼ÒÀ¯ÇÕ´Ï´Ù.

+

+Owner: +Owner¸¦ »ç¿ëÇÏ¸é ±× Ã¢À» ¶Ç´Ù¸¥ â¿¡°Ô ±Í¼Ó½Ãų ¼ö ÀÖ½À´Ï´Ù. ¼ÒÀ¯µÈ âÀº ±âº»À¸·Î ŽºÅ©¹Ù ¹öÆ°ÀÌ ¾ø½À´Ï´Ù. ±×¸®°í º¸ÀÌ¸é ¾ðÁ¦³ª ±×ÀÇ ¼ÒÀ¯ â À§¿¡ ³ªÅ¸³³´Ï´Ù. ¶ÇÇÑ ±×ÀÇ ¼ÒÀ¯ âÀÌ Æı«µÉ ¶§ ÀÚµ¿À¸·Î Æı«µË´Ï´Ù. +Owner´Â âÀÇ ¼ÒÀ¯ÀÚ¸¦ »ý¼ºÇÑ ÈÄ¿¡ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ±×·¯³ª v1.1.05 ÀÌÈÄ´Â ¼ÒÀ¯µÈ âÀÌ »ý¼ºµÇ±â Àü ¶Ç´Â ÈÄ¿¡ »ç¿ëÇصµ µË´Ï´Ù. +Owner¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀº ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ µÎ °¡Áö°¡ ÀÖ½À´Ï´Ù:

+ +
Gui, MyGui:+OwnerMyOtherGui  ; MyGui¸¦ MyOtherGui¿¡ ±Í¼Ó½Ãŵ´Ï´Ù.
+Gui, MyGui:+Owner  ; MyGui¸¦ ½ºÅ©¸³Æ®ÀÇ ¸ÞÀΠâ¿¡ ±Í¼Ó½ÃÄÑ Å½ºÅ©¹Ù ¹öÆ°ÀÌ ³ªÅ¸³ªÁö ¸øÇϵµ·Ï ¹æÁöÇÕ´Ï´Ù.
+

+[v1.1.03+]: +Owner ´ÙÀ½¿¡ ¹Ù·Î ±âÁ¸ÀÇ Gui ¹øÈ£³ª À̸§ ¶Ç´Â ÃÖ»óÀ§ ¼öÁØ Ã¢ÀÇ HWND°¡ µû¶ó¿Ã ¼ö ÀÖ½À´Ï´Ù.

+

+ȣȯ¼º ÁÖÀÇ: v1.1.03 ÀÌÈÄ·Î, +Owner´Â WS_CHILD ½ºÅ¸ÀÏÀ» Á¦°ÅÇÏ°í WS_POPUP ½ºÅ¸ÀÏÀ» ¼³Á¤ÇÕ´Ï´Ù. GuiÀÇ ºÎ¸ð âÀ» ¼³Á¤ÇÏ·Á¸é, ½ºÅ©¸³Æ®´Â +Parent ¿É¼ÇÀ» »ç¿ëÇϰųª, ¾Æ´Ï¸é +Owner ¿É¼ÇÀ» »ç¿ëÇÑ ÈÄ¿¡ ÀûÀýÇÑ ½ºÅ¸ÀÏÀ» ¿À¹ö¶óÀ̵å ÇؾßÇÕ´Ï´Ù.

+

+¼ÒÀ¯µÈ â Áß Çϳª°¡ º¸ÀÌ´Â µ¿¾È ¼ÒÀ¯ â°ú »ç¿ëÀÚ°¡ »óÈ£ÀÛ¿ëÇÏÁö ¸øÇϵµ·Ï ¹æÁöÇÏ·Á¸é, Gui +Disabled¸¦ ÅëÇÏ¿© ¼ÒÀ¯ âÀ» ºñÈ°¼ºÈ­ ÇϽʽÿÀ. ³ªÁß¿¡ (¼ÒÀ¯µÈ âÀ» Ãë¼ÒÇϰųª ¼ÒÀ¯µÈ âÀÌ Æı«µÇ´Â ¼ø°£), Gui -Disabled¸¦ ÅëÇÏ¿© ¼ÒÀ¯ âÀ» ´Ù½Ã È°¼ºÈ­ ÇϽʽÿÀ. Ãë¼Ò/Æı« Àü¿¡ ÀÌ·¸°Ô ÇϽʽÿÀ. ±×·¡¾ß ¼ÒÀ¯ âÀÌ ÀÚµ¿À¸·Î ´Ù½Ã È°¼ºÈ­ µË´Ï´Ù.

+

+Parent [v1.1.03+]: +Parent ´ÙÀ½¿¡ ±âÁ¸ÀÇ Gui ¹øÈ£³ª À̸§ ¶Ç´Â âÀ̳ª ÄÜÆ®·ÑÀÇ HWND¸¦ ÁöÁ¤Çϸé ÀÌ Ã¢ÀÇ ºÎ¸ð âÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× Gui¸¦ ´Ù½Ã ÃÖ»óÀ§ ¼öÁØ Ã¢À¸·Î ¹Ù²Ù·Á¸é, -Parent¸¦ »ç¿ëÇϽʽÿÀ. ÀÌ ¿É¼ÇÀº âÀÌ »ý¼ºµÈ ÈÄ¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù.

+

+Resize: âÀÇ Å©±â¸¦ º¯°æ °¡´ÉÇϵµ·Ï ¸¸µì´Ï´Ù. ±×¸®°í ±×ÀÇ ÃÖ´ëÈ­ ¹öÆ°À» Á¦¸ñ ¹Ù¿¡ È°¼ºÈ­ ÇÕ´Ï´Ù. ÃÖ´ëÈ­ ¹öÆ°ÀÇ È°¼ºÈ­¸¦ ÇÇÇÏ·Á¸é, +Resize -MaximizeBox¸¦ ÁöÁ¤ÇϽʽÿÀ.

+

+SysMenu (±âº»À¸·Î Á¸Àç): -SysMenu (¸¶À̳ʽº SysMenu)¸¦ ÁöÁ¤ÇÏ¸é ½Ã½ºÅÛ ¸Þ´º¿Í ¾ÆÀÌÄÜÀ» âÀÇ Á»ó ¸ð¼­¸®¿¡¼­ »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. »Ó¸¸ ¾Æ´Ï¶ó Á¦¸ñ ¹ÙÀÇ ÃÖ´ë, ÃÖ¼Ò, ±×¸®°í ´Ý±â ¹öÆ°µµ »ý·«µË´Ï´Ù.

+

+Theme: -Theme¸¦ ÁöÁ¤Çϸé, ±× ´ÙÀ½¿¡ â¿¡ »ý¼ºµÇ´Â ÄÜÆ®·ÑÀº ¸ðµÎ Windows XP À̻󿡼­ °íÀü Å׸¶ÀÇ ¸ð½ÀÀ» °¡Áý´Ï´Ù. ³ªÁß¿¡ Ãß°¡·Î ÇöÀç Å׸¶¸¦ ÁؼöÇÏ´Â ÄÜÆ®·ÑÀ» »ý¼ºÇÏ·Á¸é, +Theme¸¦ ÅëÇÏ¿© ´Ù½Ã ¿ø·¡´ë·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ÁÖÀÇ: ÀÌ ¿É¼ÇÀº Windows XPº¸´Ù ¿À·¡µÈ ¿î¿µ üÁ¦¿¡ ÀÛµ¿ÇÏÁö ¾ÊÀ¸¸ç, XP ÀÚü¿¡µµ °íÀü Å׸¶°¡ ÀÖÀ¸¸é ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù. ¸¶Áö¸·À¸·Î, ÀÌ ¼³Á¤Àº ÄÜÆ®·Ñ¿¡ °³º°ÀûÀ¸·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. »ý¼ºµÉ ¶§ ±×ÀÇ ¿É¼Ç¿¡+Theme ¶Ç´Â -ThemeÀ» ÁöÁ¤ÇÏ¸é µË´Ï´Ù.

+

+ToolWindow: Á¼Àº Á¦¸ñ ¹Ù¸¦ Á¦°øÇÏÁö¸¸, ŽºÅ©¹Ù ¹öÆ°Àº ¾ø½À´Ï´Ù.

+

+(Unnamed Style): Ç÷¯½º³ª ¸¶À̳ʽº »çÀÎ ´ÙÀ½¿¡ ¹Ù·Î ½ÊÁø ¶Ç´Â ½ÊÀ°Áø ½ºÅ¸ÀÏ ¹øÈ£¸¦ ÁöÁ¤ÇϽʽÿÀ.

+

(Unnamed ExStyle): Ç÷¯½º³ª ¸¶À̳ʽº »çÀÎ ´ÙÀ½¿¡ ¹Ù·Î ±âÈ£ E ±×¸®°í ½ÊÁø ¶Ç´Â ½ÊÀ°Áø È®Àå ½ºÅ¸ÀÏ ¹øÈ£¸¦ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, +E0x40000´Â WS_EX_APPWINDOW ½ºÅ¸ÀÏÀ» Ãß°¡ÇÕ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº â¿¡ ŽºÅ©¹Ù ¹öÆ°À» Á¦°øÇÕ´Ï´Ù. ´Ù¸¥ È®Àå ½ºÅ¸ÀÏÀº (º°·Î »ç¿ëµÇÁö ¾Ê±â ¶§¹®¿¡) ¿©±â¿¡ ¹®¼­È­µÇÁö ¾Ê¾ÒÁö¸¸, WS_EX_APPWINDOW¸¦ www.microsoft.com¿¡¼­ °Ë»öÇØ º¸¸é º¸½Ç ¼ö ÀÖ½À´Ï´Ù.

+ + +

+¸Þ´º ¹Ù¸¦ â¿¡ Ãß°¡ÇÕ´Ï´Ù. Menu ¸í·É¾î¸¦ »ç¿ëÇϸé ÀÌ ¸ñÀûÀ¸·Î Æò¹üÇÑ ¸Þ´º¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
Menu, FileMenu, Add, &Open`tCtrl+O, MenuFileOpen  ; Ctrl+O¿¡ °üÇÑ °ÍÀº ¾Æ·¡ÀÇ ³íÆòÀ» ÂüÁ¶ÇϽʽÿÀ.
+Menu, FileMenu, Add, E&xit, MenuHandler
+Menu, HelpMenu, Add, &About, MenuHandler
+Menu, MyMenuBar, Add, &File, :FileMenu  ; À§¿¡¼­ »ý¼ºÇÑ µÎ °³ÀÇ ÇÏÀ§ ¸Þ´º¸¦ ºÎÂøÇÕ´Ï´Ù.
+Menu, MyMenuBar, Add, &Help, :HelpMenu
+Gui, Menu, MyMenuBar
+

+À§ÀÇ Ã¹ ÁÙ¿¡, &Open ´ÙÀ½¿¡ (±× »çÀÌ¿¡ ÅÇ ¹®ÀÚ) Ctrl+O°¡ µû¶ó ¿À´Â °ÍÀ» ÁÖ¸ñÇϽʽÿÀ. »ç¿ëÀÚ°¡ ¸Þ´º Ç׸ñÀ» ¼±ÅÃÇÏ´Â ´ë½Å ´©¸¦ Å°º¸µå ´ÜÃàÅ°¸¦ °¡¸®Åµ´Ï´Ù. [v1.1.04+]: ´ÜÃà Å°°¡ Ctrl, Alt ±×¸®°í Shift¿Í °°Àº Ç¥ÁØ ¼ö½Ä Å° À̸§¸¸ »ç¿ëÇϸé, GUI¿¡ ´ëÇÏ¿© ÀÚµ¿À¸·Î Å°º¸µå ´ÜÃàÅ°·Î µî·ÏµË´Ï´Ù. ½Äº° Å°°¡ ¾ø´Â ´ÜÀÏ-¹®ÀÚ ´ÜÃàÅ°´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏ°í IME ¶Ç´Â Alt+NNNN °°Àº ºñÁ¤»óÁ¤ÀÎ ¼ö´ÜÀ¸·Î Ã˹߽Ãų ¼ö ÀÖ½À´Ï´Ù.

+

+ƯÁ¤ Å° Á¶ÇÕÀÌ ÀÚµ¿À¸·Î ÀÛµ¿ÇÏÁö ¾ÊÀ¸¸é, ¹®¸Æ-°¨Áö ÇÖÅ°¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÇÊ¿äÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ±×·± ÇÖÅ°´Â ÀüÇüÀûÀ¸·Î Send·Î Ã˹ߵÇÁö ¾ÊÀ¸¸ç Ç¥ÁØ Å°º¸µå ´ÜÃàÅ°º¸´Ù ´Ù¸¥ ½ºÅ©¸³Æ®¿Í °£¼·À» ÀÏÀ¸Å³ °¡´É¼ºÀÌ ´õ ³ô½À´Ï´Ù.

+

+âÀÇ ÇöÀç ¸Þ´º ¹Ù¸¦ Á¦°ÅÇÏ·Á¸é, Gui Menu¸¦ »ç¿ëÇϽʽÿÀ (Áï, ¸¶Áö¸· ¸Å°³º¯¼ö¸¦ »ý·«ÇϽʽÿÀ).

+

+¸Þ´º°¡ ÀÏ´Ü ¸Þ´º ¹Ù·Î »ç¿ëµÈ ÀûÀÌ ÀÖ´Ù¸é, Æ˾÷ ¸Þ´º³ª ÇÏÀ§¸Þ´º·Î »ç¿ëÇؼ­´Â ¾ÈµË´Ï´Ù. ¿Ö³ÄÇÏ¸é ¸Þ´º ¹Ù´Â ³»ºÎÀûÀ¸·Î ´Ù¸¥ Çü½ÄÀ» ¿ä±¸Çϱ⠶§¹®ÀÔ´Ï´Ù (±×·¸Áö¸¸, ÀÌ Á¦ÇÑÀº ¸Þ´º ¹Ù ÀÚü¿¡¸¸ Àû¿ëµÇÁö, ±×ÀÇ ÇÏÀ§ ¸Þ´º¿¡´Â Àû¿ëµÇÁö ¾Ê½À´Ï´Ù). À̸¦ ¿ìȸÇÒ ÇÊ¿ä°¡ ÀÖ´Ù¸é, ¸Þ´º ¹Ù·Î »ç¿ëÇÒ ¸Þ´º¸¦ Çϳª ¸¸µé°í ´Ù¸¥ ¸ñÀûÀ¸·Î »ç¿ëÇÒ ¸Þ´º¸¦ Çϳª ´õ ¶È °°ÀÌ ¸¸µå½Ê½Ã¿À.

+

+ÇöÀç ¸Þ´º ¹Ù·Î »ç¿ëÁßÀÎ ¸Þ´º ¹Ù¿¡ Delete¿Í DeleteAll°ú °°ÀÌ Æı«ÀûÀÎ ¸Þ´º ºÎ-¸í·É¾î¸¦ »ç¿ëÇÏ´Â °ÍÀº Áö¿øÇÏÁö ¾ÊÀ¸¸ç ±×·¯¸é ¿¡·¯ ´ëÈ­»óÀÚ°¡ ³ªÅ¸³³´Ï´Ù (´Ü, UseErrorLevel°¡ °ÜÁ® ÀÖ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù). + +±×·± ½ÄÀ¸·Î º¯°æÇÏ·Á¸é ´ÙÀ½ ´Ü°è¸¦ µû¸£½Ê½Ã¿À: +

    +
  1. Gui Menu¸¦ ÅëÇÏ¿© ¸Þ´º ¹Ù¸¦ ¶¼¾î³À´Ï´Ù (Áï, MenuNameÀ» »ý·«ÇϽʽÿÀ); +
  2. Æı«ÇÕ´Ï´Ù; +
  3. Gui, Menu, MyMenuBar¸¦ ÅëÇÏ¿© ¸Þ´º ¹Ù¸¦ ´Ù½Ã ºÎÂøÇÕ´Ï´Ù. +
+

+ +

Gui, Hide / Minimize / Maximize / Restore

+

+Gui Hide´Â Gui Cancel¿Í µ¿µîÇÕ´Ï´Ù. ´Ù¸¥ ¼¼ °¡Áö ¸í·É¾î´Â âÀ» (ÇÊ¿äÇϸé) ´Ù½Ã º¸¿©ÁØ ´ÙÀ½ °Å±â¿¡ ÁöÁ¤µÈ ¿¬»êÀ» ¼öÇàÇÕ´Ï´Ù. âÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é -- ¾Æ¸¶µµ Gui Destroy¸¦ ÅëÇÏ¿© Æı«µÇ¾î ¹ö·È´Ù¸é -- ÀÌ ¸í·É¾îµéÀº ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù.

+ +

Gui, Flash [, Off]

+

+ŽºÅ©¹ÙÀÇ Ã¢ ¹öÆ°À» ±ôºýÀÔ´Ï´Ù. â Á¦¸ñ ¹Ù¿Í ŽºÅ©¹Ù ¹ÙÆ°ÀÇ »öÀ» µÚÁý¾î ±ô¹ÛÀÔ´Ï´Ù. ¼±ÅÃÀûÀÎ ´Ü¾î OFF ´Â Á¦¸ñ ¹Ù¿Í ŽºÅ© ¹Ù ¹öÆ°ÀÌ ¿ø·¡ÀÇ »öÀ¸·Î µ¹¾Æ¿Àµµ·Ï ¸¸µì´Ï´Ù (±×·¯³ª ½ÇÁ¦ ÇàÀ§´Â OS ¹öÀü¿¡ µû¶ó ´Þ¶óÁú ¼ö ÀÖ½À´Ï´Ù). ¾Æ·¡ÀÇ ¿¹Á¦¿¡¼­, âÀº ¼¼ ¹ø ±ôºýÀÔ´Ï´Ù. ¿Ö³ÄÇÏ¸é ±ôºýÀÓ ÇÑ ½Ö ¸¶´Ù »öÀÌ µÚÁý¾îÁö°í ´ÙÀ½ ¿ø·¡ÀÇ ¸ð½ÀÀ¸·Î º¹±¸µÇ±â ¶§¹®ÀÔ´Ï´Ù:

+
Loop 6
+{
+    Gui Flash
+    Sleep 500  ; ÀÌ °ªÀº ±²ÀåÈ÷ ¹Î°¨ÇÕ´Ï´Ù; ÀÌ °ªÀ» ¹Ù²Ù¸é ¿¹»ó ¸øÇÑ ÇàÀ§¸¦ ¾ß±âÇÒ ¼ö ÀÖ½À´Ï´Ù.
+}
+ +

Gui, GuiName:Default

+

+ÇöÀç ¾²·¹µåÀÇ ±âº» GUI â À̸§À» ¹Ù²ß´Ï´Ù. ÀÌ À̸§Àº â À̸§ÀÌ GuiControl, GuiControlGet, ±×¸®°í Gui ¸í·É¾î ÀÚü¿¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é »ç¿ëµË´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­, ±âº» â À̸§Àº "MyGui"·Î ¹Ù²ò´Ï´Ù: Gui MyGui:Default. ±âº» â¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ¾²·¹µåÀÇ ±âº» âÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

SmartGUI Creator¸¦ ÅëÇÑ À§Ä¡ ¹èÁ¤°ú ·¹À̾ƿô

+

+´ÙÀ½ ¼½¼Ç¿¡¼­ ±â¼úÇÏ´Â ¿É¼ÇµéÀº °£´ÜÇÑ ·¹À̾ƿô¿¡ Àû´çÇÏÁö¸¸, RajatÀÇ SmartGUI Creator¸¦ »ç¿ëÇÏ´Â ÆíÀÌ ´õ ½¬¿ï ¼ö ÀÖ½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ¿ÏÀüÈ÷ ´«À¸·Î º¼ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù; Áï,, "´«¿¡ º¸ÀÌ´Â ´ë·Î ¾ò½À´Ï´Ù". SmartGUI Creator´Â ¹«·áÀÌ°í www.autohotkey.com/docs/SmartGUI/À¸·ÎºÎÅÍ ³»·Á ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù

+ +

ÄÜÆ®·ÑÀÇ À§Ä¡ ¹èÁ¤°ú Å©±â º¯°æ

+

+OptionsÀ¸·ÎºÎÅÍ ¾î¶² Â÷¿ø ±×¸®°í/¶Ç´Â ÁÂÇ¥°¡ »ý·«µÇ¸é, ±× ÄÜÆ®·ÑÀº ÀÌÀü ÄÜÆ®·Ñ¿¡ »ó´ëÀûÀ¸·Î À§Ä¡°¡ °áÁ¤µÇ°í ÀÚµ¿À¸·Î ±×ÀÇ ³»¿ë¿¡ ¸Â°Ô ÀÚ¿¬½º·± Å©±â·Î °áÁ¤µË´Ï´Ù.

+

+´ÙÀ½ ¿É¼ÇÀÌ Áö¿øµË´Ï´Ù:

+

R: ÅؽºÆ® Çà (R2.5¿Í °°ÀÌ ºÎµ¿ ¼Ò¼öÁ¡ ¼ö¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù). RÀ» ¼³Á¤ÇÏ´Â °ÍÀÌ H (³ôÀÌ)¸¦ ¼³Á¤ÇÏ´Â °Íº¸´Ù ´õ ¼±È£µË´Ï´Ù. R¿É¼Ç°ú H ¿É¼ÇÀÌ ¸ðµÎ Á¸ÀçÇϸé, RÀÌ ¿ì¼± ¼øÀ§¸¦ °®½À´Ï´Ù. GroupBox¿¡ ´ëÇÏ¿©, ÀÌ ¼³Á¤Àº ¹Ú½º ¾ÈÀÇ °ø°£¿¡ ¿¹¾àµÈ ÄÜÆ®·ÑÀÇ °³¼öÀÔ´Ï´Ù. DropDownLists, ComboBoxes, ±×¸®°í ListBoxes¿¡ ´ëÇÏ¿©, ÄÜÆ®·ÑÀÇ ¸®½ºÆ® ºÎºÐ ¾È¿¡ ÇÑ ¹ø¿¡ º¸ÀÌ´Â Ç׸ñÀÇ °³¼öÀÔ´Ï´Ù (±×·¯³ª Windows XP ÀÌÈÄ¿¡¼­, Á¾Á¾ DropDownList¿Í ComboBoxor¿¡ R ¿É¼Ç°úH ¿É¼ÇÀ» ¸ðµÎ »ý·«ÇÏ´Â °ÍÀÌ ¹Ù¶÷ÁýÇÕ´Ï´Ù. ±×·¡¾ß Æ˾÷ ¸®½ºÆ®°¡ ÀÚµ¿À¸·Î »ç¿ë°¡´ÉÇÑ »ç¿ëÀÚÀÇ ¹ÙÅÁÈ­¸éÀÇ ³ôÀ̸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù). ´Ù¸¥ ÄÜÆ®·Ñ À¯Çü¿¡ ´ëÇÏ¿©, RÀº ±× ÄÜÆ®·Ñ ¾È¿¡ ½Ã°¢ÀûÀ¸·Î µü ¸Â´Â ÅؽºÆ®ÀÇ ÇàÀÇ °³¼öÀÔ´Ï´Ù.

+

+W: Çȼ¿ ´ÜÀ§ ³Êºñ. »ý·«µÇ¸é, ¾î¶² ÄÜÆ®·Ñ À¯ÇüÀº ³»¿ë¿¡ ±â¹ÝÇÏ¿© ³Êºñ¸¦ ÀÚµ¿À¸·Î °è»êÇÕ´Ï´Ù. ´Ù¸¥ ÄÜÆ®·Ñ À¯ÇüÀº ´ÙÀ½°ú °°ÀÌ ±âº» ³Êºñ°¡ ÀÖ½À´Ï´Ù:
+ ÅÇ ÄÜÆ®·Ñ: + ÇöÀç ±Û²Ã Å©±âÀÇ 30 ¹è, ´õÇϱâ X-¿©¹éÀÇ ¼¼ ¹è.
+¼öÁ÷ Áøµµ ¹Ù: ÇöÀç ±Û²Ã Å©±âÀÇ µÎ ¹è.
+¼öÆò Áøµµ ¹Ù, ¼öÆò ½½¶óÀÌ´õ, µå·Ó´Ù¿î ¸®½ºÆ®, ÄÞº¸¹Ú½º, ¸®½ºÆ®¹Ú½º, ÆíÁý¹Ú½º, ±×¸®°í ÇÖÅ°: ÇöÀç ±Û²Ã Å©±â 15¹è (´Ü, ±×·ì¹Ú½º´Â ¾È ¿©¹éÀ» À§ÇØ 18¹èÀ̹ǷΠÁ¦¿Ü).

+ +

+H: Çȼ¿ ´ÜÀ§ ³ôÀÌ. H¿É¼Ç°ú R¿É¼ÇÀÌ ¸ðµÎ ¾øÀ¸¸é, DropDownLists, ComboBoxes, ListBoxes, ±×¸®°í ºó ¿©·¯-ÁÙ ÆíÁý ÄÜÆ®·ÑÀº ±âº» °ªÀÌ 3 ÇàÀÔ´Ï´Ù; GroupBoxes´Â ±âº» °ªÀÌ 2 ÇàÀÔ´Ï´Ù; ¼öÁ÷ ½½¶óÀÌ´õ¿Í Áøµµ ¹Ù´Â ±âº» °ªÀÌ 5 ÇàÀÔ´Ï´Ù; ¼öÆò ½½¶óÀÌ´õ´Â ±âº» °ªÀÌ 30 Çȼ¿ÀÔ´Ï´Ù (´Ü, µÎ²²°¡ ÁöÁ¤µÇ¾î ÀÖ´Â °æ¿ì´Â Á¦¿Ü); ¼öÆò Áøµµ ¹Ù´Â ±âº» °ªÀÌ ÇöÀç ±Û²ÃÀÇ 2¹èÀÔ´Ï´Ù; ÇÖÅ° ÄÜÆ®·ÑÀº ±âº» °ªÀÌ 1 ÇàÀÔ´Ï´Ù; ±×¸®°í ÅÇ ÄÜÆ®·ÑÀº ±âº»°ªÀÌ 10 ÇàÀÔ´Ï´Ù. ´Ù¸¥ ÄÜÆ®·Ñ À¯Çü¿¡ ´ëÇÏ¿©, ³ôÀÌ´Â ±×ÀÇ ³»¿ë¿¡ ±â¹ÝÇÏ¿© ÀÚµ¿À¸·Î °è»êµË´Ï´Ù.

+

+DropDownLists ±×¸®°í ComboBoxes¿¡ ´ëÇÏ¿©, H´Â ÄÜÆ®·Ñ¿¡¼­ ¾ðÁ¦³ª º¸ÀÌ´Â ºÎºÐ°ú ±×ÀÇ ¸®½ºÆ® ºÎºÐÀ» Á¶ÇÕÇØ ³ôÀ̸¦ °áÁ¤ÇÑ´Ù´Â °ÍÀ» ÁÖ¸ñÇϽʽÿÀ. (±×·¯³ª ³ôÀÌ°¡ ³Ê¹« ³·°Ô ¼³Á¤µÇ´õ¶óµµ, Àû¾îµµ ÇϳªÀÇ Ç׸ñÀº ¸®½ºÆ®¿¡ ¾ðÁ¦³ª º¸ÀÏ °ÍÀÔ´Ï´Ù). ¶ÇÇÑ, ¸ðµç À¯ÇüÀÇ ÄÜÆ®·Ñ¿¡ ´ëÇÏ¿©, H ¿É¼Çº¸´Ù R ¿É¼ÇÀ» ÅëÇÏ¿© ¼ýÀÚ¸¦ ÁöÁ¤ÇÏ´Â °ÍÀÌ ´õ ÁÁ½À´Ï´Ù. ¿Ö³ÄÇϸé ÄÜÆ®·ÑÀÌ ºÎºÐÀûÀ¸·Î ºÒ¿ÏÀüÇÏ°Ô ÅؽºÆ®¸¦ º¸¿©ÁÖÁö ¸øÇÏ°Ô ¹æÁöÇϱ⠶§¹®ÀÔ´Ï´Ù.

+

+wp+n, hp+n, wp-n, hp-n (¿©±â¿¡¼­ nÀº ¼ýÀÚÀÓ)¸¦ »ç¿ëÇϸé ÄÜÆ®·ÑÀÇ ³Êºñ¿Í ³ô½Ã¸¦ ÀÌÀü¿¡ Ãß°¡µÈ ÄÜÆ®·ÑÀÇ ³Êºñ¿Í ³ôÀÌ¿Í °°°Ô ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼±ÅÃÀûÀ¸·Î Ç÷¯½º³ª ¸¶À̳ʽº »çÀÎÀ» »ç¿ëÇØ Á¶ÀýÇÏ¸é µË´Ï´Ù. ¿¹¸¦ µé¾î, wp´Â ÀÌÀü ÄÜÆ®·ÑÀÇ ³Êºñ·Î ÄÜÆ®·ÑÀÇ ³Êºñ¸¦ ¼³Á¤ÇÕ´Ï´Ù. ±×¸®°í wp-50Àº ÀÌÀü ÄÜÆ®·ÑÀÇ ³Êºñº¸´Ù 50 ÀÛ°Ô ¼³Á¤ÇÕ´Ï´Ù.

+

+X: X-À§Ä¡. ¿¹¸¦ µé¾î, x0 y0¸¦ ÁöÁ¤Çϸé ÄÜÆ®·ÑÀ» âÀÇ Å¬¶óÀ̾ðÆ® ±¸¿ªÀÇ Á»ó ¸ð¼­¸®¿¡ ¹èÄ¡ÇÕ´Ï´Ù. Ŭ¶óÀ̾ðÆ® ±¸¿ªÀº Á¦¸ñ ¹Ù¿Í ¸Þ´º ¹Ù ¾Æ·¡¿¡ ÀÖ½À´Ï´Ù. X´Â »ý·«µÇ¾úÁö¸¸ Y´Â ÁöÁ¤µÇ¾ú´Ù¸é, ÄÜÆ®·ÑÀº ÀÌÀü¿¡ Ãß°¡µÈ ¸ðµç ÄÜÆ®·ÑÀÇ ¿À¸¥ÂÊ¿¡ ¹èÄ¡µË´Ï´Ù. ÀÌ°ÍÀ» »õ·Î¿î "¿­"ÀÇ ½ÃÀÛÀ¸·Î °£ÁÖÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Y: Y-À§Ä¡. Y°¡ »ý·«µÇ¾úÁö¸¸ X´Â ÁöÁ¤µÇ¾ú´Ù¸é, ±× ÄÜÆ®·ÑÀº ÀÌÀü¿¡ Ãß°¡µÈ ¸ðµç ÄÜÆ®·ÑÀÇ ¾Æ·¡¿¡ ¹èÄ¡µË´Ï´Ù. ÀÌ°ÍÀ» »õ "Çà"ÀÇ ½ÃÀÛÀ¸·Î °£ÁÖÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+X³ª Y¸¦ »ý·«ÇÏ¸é ¾ÕÀ¸·Î ÄÜÆ®·ÑÀÇ Å©±â³ª ±Û²ÃÀ» ¹Ù²Ü¶§ ±×¿¡ µü ¸Â°Ô GUI ·¹À̾ƿôÀ» Áöµ¿À¸·Î Á¶ÀýÇÒ ¼ö ÀÖÀ¸¹Ç·Î À¯¿ëÇÕ´Ï´Ù. +´ëÁ¶ÀûÀ¸·Î, ¸Å ÄÜÆ®·Ñ¸¶´Ù Àý´ë À§Ä¡¸¦ ÁöÁ¤ÇÏ¸é ¼öÀÛ¾÷À¸·Î ¾Æ·¡¿¡ ÀÖ´Â ¸ðµç ÄÜÆ®·ÑÀÇ À§Ä¡¸¦ È®´ëµÈ ¶Ç´Â Ãà¼ÒµÈ ÄÜÆ®·ÑÀÇ ¿À¸¥ÂÊÀ¸·Î À̵¿ÇØ¾ß ÇÕ´Ï´Ù.

+

+X¿Í Y°¡ ¸ðµÎ »ý·«µÇ¸é, ÄÜÆ®·ÑÀº Ç¥ÁØ Æеù °Å¸®¸¦ »ç¿ëÇÏ¿© ÀÌÀü ÄÜÆ®·ÑÀÇ ¾Æ·¡¿¡ ¹èÄ¡µË´Ï´Ù.

+

+X¿Í Y¿¡ ´ëÇÏ¿©, ¼±ÅÃÀûÀÎ Ç÷¯½º »çÀÎÀ» Æ÷ÇÔ½ÃÅ°¸é ÀÌÀü¿¡ Ãß°¡µÈ ÄÜÆ®·ÑÀÇ ¿À¸¥ÂÊ ¶Ç´Â ¾Æ·¡ÂÊ °¡ÀåÀÚ¸®¿¡ (°¢°¢) »ó´ëÀûÀ¸·Î ÄÜÆ®·ÑÀ» ¹èÄ¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Y+10À» ÁöÁ¤Çϸé Ç¥ÁØ Æеù °Å¸®¸¦ »ç¿ëÇÏ´Â ´ë½Å¿¡ ÀÌÀü ÄÜÆ®·ÑÀÇ 10 Çȼ¿ ¾Æ·¡¿¡ ÄÜÆ®·ÑÀ» ¹èÄ¡ÇÕ´Ï´Ù. ºñ½ÁÇÏ°Ô, X+10À» ÁöÁ¤Çϸé ÀÌÀü ÄÜÆ®·ÑÀÇ 10 Çȼ¿ ¿À¸¥ÂÊÀ¸·Î ÄÜÆ®·ÑÀ» ¹èÄ¡ÇÕ´Ï´Ù. X-10°ú °°Àº À½¼ö´Â Àý´ë À§Ä¡ ÁöÁ¤À» À§ÇØ ¿¹¾àµÇ¾î ÀÖÀ¸¹Ç·Î, À½ÀÇ ¿ÀÇÁ¼ÂÀ» »ç¿ëÇÏ·Á¸é, ±× ¾Õ¿¡ Ç÷¯½º »çÀÎÀ» Æ÷ÇÔÇϽʽÿÀ. ¿¹¸¦ µé¾î: X+-10.

+

+[v1.1.16+]: X+¿Í Y+¿¡ ´ëÇÏ¿©, ±âÈ£ MÀ» âÀÇ ÇöÀç ¿©¹é¿¡ ´ë¾ÈÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, x+mÀº ÀÌÀü ÄÜÆ®·ÑÀÇ ¿À¸¥ÂÊ °¡ÀåÀÚ¸®¿¡´Ù Ç¥ÁØ Æеù °Å¸®¸¦ »ç¿ëÇÕ´Ï´Ù. xp y+m´Â ÀÌÀü ÄÜÆ®·ÑÀÇ ¾Æ·¡¿¡ ÄÜÆ®·ÑÀ» ¹èÄ¡ÇÕ´Ï´Ù. ¹Ý¸é¿¡ X ÁÂÇ¥¸¸ ÁöÁ¤ÇÏ¸é º¸Åë ±âº»°ªÀ¸·Î yp¸¦ ¶æÇÕ´Ï´Ù.

+

+xp+n, yp+n, xp-n, yp-n (¿©±â¿¡¼­ n´Â ¼ýÀÚÀÓ)´Â ÀÌÀü ÄÜÆ®·ÑÀÇ Á»ó ¸ð¼­¸®¿¡ »ó´ëÀûÀ¸·Î ÄÜÆ®·ÑÀ» ¹èÄ¡ÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Á¾Á¾ GroupBox ¾È¿¡ ÄÜÆ®·ÑµéÀ» ½Î ³ÖÀ» ¶§ À¯¿ëÇÕ´Ï´Ù.

+

+xm°ú ymÀ» »ç¿ëÇϸé âÀÇ Á嫆 ±×¸®°í »ó´Ü ¿©¹é¿¡ (°¢°¢) ÄÜÆ®·ÑÀ» ¹èÄ¡ÇÒ ¼ö ÀÖ½À´Ï´Ù (ÀÌ µÎ ¿É¼Ç ´ÙÀ½¿¡ Ç÷¯½º/¸¶À̳ʽº »çÀΰú ¼ýÀÚ°¡ Çϳª µû¶ó¿Ã ¼öµµ ÀÖ½À´Ï´Ù). x-À§Ä¡ ¾øÀÌ ymÀ» ÁöÁ¤Çϸé, ÄÜÆ®·ÑÀº ¼öÁ÷À¸·Î »ó´Ü ¿©¹é¿¡ ¹èÄ¡µÇÁö¸¸ ¼öÆòÀ¸·Î´Â ÀÌÀü¿¡ Ãß°¡µÈ ¸ðµç ÄÜÆ®·ÑÀÇ ¿À¸¥ÂÊ¿¡ ¹èÄ¡µË´Ï´Ù. ÀÌ°ÍÀ» »õ·Î¿î "¿­"ÀÇ ½ÃÀÛÀ¸·Î °£ÁÖÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× ¹Ý´ë·Î ¿ª½Ã ¸¶Âù°¡ÁöÀÔ´Ï´Ù.

+

+xs ±×¸®°í ys: ÀÌ ¿É¼ÇµéÀº xm ±×¸®°í ym°ú ºñ½ÁÇÏÁö¸¸ ÀÌÀü¿¡ ±×ÀÇ ¿É¼Ç¿¡ ´Ü¾î SectionÀ» °¡Áö°í ÄÜÆ®·ÑÀ» Ãß°¡ÇÒ ¶§ ÀúÀåµÈ ÁÂÇ¥¸¦ ÂüÁ¶ÇÕ´Ï´Ù (âÀÇ Ã¹ ¹ø° ÄÜÆ®·ÑÀº ¾ðÁ¦³ª »õ ¼½¼ÇÀ» ½ÃÀÛÇÕ´Ï´Ù. ±×ÀÇ ¿É¼Ç¿¡ ±× ´Ü¾î°¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾Ê¾Æµµ »ó°üÀÌ ¾ø½À´Ï´Ù). + +x-À§Ä¡ ¾øÀÌ ys¸¦ ÁöÁ¤Çϸé, ÄÜÆ®·ÑÀº ÀÌÀü¿¡ ÀúÀåµÈ y-À§Ä¡¿¡ ¹èÄ¡µÇÁö¸¸, °¡Àå ÃÖ±Ù¿¡ »ç¿ëµÈ ´Ü¾î Section ¶§¹®¿¡, Ãß°¡µÈ ¸ðµç ÄÜÆ®·ÑÀÇ ¿À¸¥ÂÊ¿¡ ¹èÄ¡µË´Ï´Ù ; ÀÌ°ÍÀ» ±× ¼½¼Ç ¾È¿¡¼­ »õ ¿­ÀÌ ½ÃÀÛÇÑ °ÍÀ¸·Î °£ÁÖÇصµ ÁÁ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
gui, add, edit, w600  ; »ó´çÈ÷ ³ÐÀº ÆíÁý ÄÜÆ®·ÑÀ» âÀÇ »ó´Ü¿¡ Ãß°¡ÇÕ´Ï´Ù.
+gui, add, text, section, First Name:  ; ÀÌ ÄÜÆ®·ÑÀÇ À§Ä¡¸¦ ÀúÀåÇÏ°í »õ ¼½¼ÇÀ» ½ÃÀÛÇÕ´Ï´Ù.
+gui, add, text,, Last Name:
+gui, add, edit, ys  ; ÀÌ ¼½¼Ç ¾È¿¡¼­ »õ ¿­À» ½ÃÀÛÇÕ´Ï´Ù.
+gui, add, edit
+gui, show
+

+À§ÀÇ ¹Ý´ëµµ (y-À§Ä¡¸¦ »ý·«ÇÏ°í xs¸¸ ÁöÁ¤Çصµ) ¿ª½Ã ¸¶Âù°¡ÁöÀÔ´Ï´Ù .

+

+xs¿Í ys ´ÙÀ½¿¡ ¼±ÅÃÀûÀ¸·Î Ç÷¯½º/¸¶À̳ʽº »çÀΰú ¼ýÀÚ Çϳª°¡ µû¶ó¿Ã ¼öµµ ÀÖ½À´Ï´Ù. ¶ÇÇÑ, ´Ü¾î Section°ú xs/ys¸¦ µÑ ´Ù ÄÜÆ®·ÑÀÇ ¿É¼Ç¿¡ ÁöÁ¤ÇÏ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù; ÀÌ·¸°Ô Çϸé ÀÚ±â Àڽſ¡ ´ëÇؼ­´Â ÀÌÀü ¼½¼ÇÀ» »ç¿ëÇÏÁö¸¸ µÚÀÌÀº ÄÜÆ®·Ñ¿¡´Â »õ ¼½¼ÇÀ» È®¸³ÇÕ´Ï´Ù.

+ +

»ç¿ëÀÚ ÀÔ·ÂÀ» ÀúÀåÇÏ°í ±×¿¡ ¹ÝÀÀÇϱâ

+

+V: º¯¼ö. º¯¼ö¸¦ ÄÜÆ®·Ñ¿¡ ¿¬°ü Áþ½À´Ï´Ù. ±âÈ£ V ´ÙÀ½¿¡ ¹Ù·Î, Àü¿ª º¯¼öÀÇ À̸§À» ÁöÁ¤ÇϽʽÿÀ (¶Ç´Â Àü¿ª º¯¼ö¸¦ °¡¸®Å°´Â ByRef Áö¿ª º¯¼ö, ¶Ç´Â v1.0.46.01+¿¡¼­´Â Á¤Àû º¯¼ö). ¿¹¸¦ µé¾î, vMyEdit¸¦ ÁöÁ¤Çϸé Gui Submit ¸í·É¾î°¡ »ç¿ëµÉ ¶§¸¶´Ù ÄÜÆ®·ÑÀÇ ³»¿ëÀÌ º¯¼ö MyEdit¿¡ ÀúÀåµË´Ï´Ù. ÄÜÆ®·ÑÀÌ ÀÔ·ÂÀÌ ºÒ°¡´ÉÇÏ´õ¶óµµ -- Text ÄÜÆ®·ÑÀ̳ª GroupBox ÄÜÆ®·ÑÀÌ¶óµµ --º¯¼ö¸¦ °Å±â¿¡ ¿¬°üÁöÀ¸¸é ¿©ÀüÈ÷ µµ¿òÀÌ µË´Ï´Ù. ¿Ö³ÄÇÏ¸é º¯¼öÀÇ À̸§ÀÌ ÄÜÆ®·ÑÀÇ À¯ÀÏÇÑ ½Äº°ÀÚ·Î ±â¿©ÇÒ ¼ö À־ GuiControl, GuiControlGet, ±×¸®°í A_GuiControl¿¡ »ç¿ëÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ÁÖÀÇ: Gui SubmitÀº ÀÔ·Â ºÒ°¡´ÉÇÑ ÄÜÆ®·ÑÀÇ (¿¹¸¦ µé¾îText ±×¸®°í GroupBox) º¯¼öÀÇ ³»¿ëÀº ¹°·ÐÀÌ°í, ´ÙÀ½ ¼½¼Ç¿¡ ¹®¼­È­µÈ °Íµéµµ º¯°æÇÏÁö ¸øÇÕ´Ï´Ù (¿¹¸¦ µé¾î ListView ±×¸®°í TreeView).

+

+G: Gosub (g-label). »ç¿ëÀÚ°¡ ÄÜÆ®·ÑÀ» Ŭ¸¯Çϰųª º¯°æÇÒ ¶§ ÇÔ¼öÀÇ ¼­ºê·çƾÀ» ÀÚµ¿À¸·Î ±âµ¿ÇÕ´Ï´Ù. ±âÈ£ G ´ÙÀ½¿¡ °ð¹Ù·Î, ½ÇÇàÇÒ ¶óº§ÀÇ À̸§À» ÁöÁ¤ÇϽʽÿÀ. gCancelÀº ÁöÁ¤ÇÏ¸é ¹¬½ÃÀûÀÎ Gui CancelÀ» ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù (±×·¯³ª À̸§ÀÌ "Cancel"ÀÎ ¶óº§ÀÌ ½ºÅ©¸³Æ®¿¡ Á¸ÀçÇϸé, ´ë½Å¿¡ ±× ¶óº§ÀÌ ½ÇÇàµË´Ï´Ù). ¼­ºê·çƾÀº ´ÙÀ½ÀÇ ³»Àå º¯¼öµéÀ» ÂüÁ¶ÇÒ ¼öµµ ÀÖ½À´Ï´Ù: A_Gui, A_GuiControl, A_GuiEvent, ±×¸®°í A_EventInfo.

+

+[v1.1.20+]:À¯È¿ÇÑ ¶óº§ À̸§ÀÌ ¾Æ´Ï¸é, ÇÔ¼ö À̸§À» ´ë½Å »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î, GuiControl ¸í·É¾î¸¦ »ç¿ëÇϸé ÇÔ¼ö °´Ã¼¸¦ ÄÜÆ®·Ñ¿¡ ¿¬°üÁöÀ» ¼ö ÀÖ½À´Ï´Ù. ÇÔ¼ö´Â ¼±ÅÃÀûÀ¸·Î ´ÙÀ½ ¸Å°³º¯¼ö¸¦ ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù (¿©±â¿¡¼­ gCtrlEventÀº ÇÔ¼ö¸¦ ¼³Á¤ÇÕ´Ï´Ù):

+ +
CtrlEvent(CtrlHwnd, GuiEvent, EventInfo, ErrorLevel)
+

+¸Å°³º¯¼öÀÇ Àǹ̴ ÄÜÆ®·ÑÀÇ À¯Çü¿¡ µû¶ó ´Ù¸¨´Ï´Ù.

+ +

Controls: °øÅë ½ºÅ¸ÀÏ°ú ±âŸ ¿É¼Ç

+

+ÁÖÀÇ: ¾Õ¿¡ ºÎÈ£°¡ ¾øÀ¸¸é, Ç÷¯½º »çÀÎÀÌ ÀÖ´Ù°í °£Áֵ˴ϴÙ; ¿¹¸¦ µé¾î, WrapÀº +Wrap¿Í °°½À´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, -Wrap´Â ´Ü¾î-³Ñ±â±â Ư¼ºÀ» Á¦°ÅÇÕ´Ï´Ù.

+

+AltSubmit: º¸Á¶ÀûÀÎ Á¦Ãâ ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù. DropDownList, ComboBox, ±×¸®°í ListBox¿¡ ´ëÇÏ¿© ÀÌ ¸Å°³º¯¼ö´Â Gui Submit ¸í·É¾î°¡ ÅؽºÆ®°¡ ¾Æ´Ï¶ó ¼±ÅÃµÈ Ç׸ñÀÇ À§Ä¡¸¦ ÀúÀåÇϵµ·Ï ¸¸µì´Ï´Ù. Ç׸ñÀÌ ¼±ÅõÇÁö ¾ÊÀ¸¸é, ComboBox´Â ¿©ÀüÈ÷ ±×ÀÇ ÆíÁý Çʵ忡 ÅؽºÆ®¸¦ ÀúÀåÇÕ´Ï´Ù; ºñ½ÁÇÏ°Ô, DropDownList ¶Ç´Â ListBox´Â ¿©ÀüÈ÷ ±×ÀÇ Ãâ·Â º¯¼ö¸¦ ºñ¿ó´Ï´Ù. ÁÖÀÇ: AltSubmit´Â ¶Ç ±×·± ÄÜÆ®·ÑÀÇ ³»¿ëÀ» ¿­¶÷ÇÒ ¶§ GuiControlGetÀÇ ÇàÀ§¿¡µµ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.

+

+C: ÅؽºÆ®ÀÇ »ö±ò (¹öÆ°¿¡´Â ¾Æ¹« ¿µÇâÀÌ ¾ø½À´Ï´Ù). ±âÈ£ C ´ÙÀ½¿¡ °ð¹Ù·Î »ö À̸§ (Ä÷¯ Â÷Æ® ÂüÁ¶) ¶Ç´Â RGB °ªÀ» ÁöÁ¤ÇϽʽÿÀ (0x Á¢µÎ»ç´Â ¼±ÅÃÀûÀÓ). ¿¹Á¦: cRed, cFF2211, c0xFF2211, cDefault.

+

+Disabled: ÀÔ·Â °¡´ÉÇÑ ÄÜÆ®·ÑÀÌ ºñÈ°¼º »óÅ·Π³ªÅ¸³ªµµ·Ï ¸¸µì´Ï´Ù. ±×·¡¼­ »ç¿ëÀÚ´Â ±×ÀÇ ³»¿ë¿¡ ÃÊÁ¡À» µÎ°Å³ª º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù. GuiControl Enable¸¦ »ç¿ëÇÏ¸é ³ªÁß¿¡ È°¼ºÈ­ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÁÖÀÇ: Edit ÄÜÆ®·ÑÀ» Àбâ Àü¿ëÀ¸·Î ¸¸µé·Á¸é, ´ë½Å¿¡ ¹®ÀÚ¿­ ReadOnly¸¦ ÁöÁ¤ÇϽʽÿÀ. ¶ÇÇÑ, ´Ü¾î Disabled´Â ¼±ÅÃÀûÀ¸·Î ´ÙÀ½¿¡ ¹Ù·Î 0 ¶Ç´Â 1ÀÌ µû¶ó¿Í ½ÃÀÛ »óŸ¦ ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù (0À̸é È°¼ºÈ­ 1ÀÌ¸é ºñÈ°¼ºÈ­¸¦ ³ªÅ¸³À´Ï´Ù). ´Ù¸¥ ¸»·Î, Disabled¿Í Disabled%VarContainingOne%´Â °°½À´Ï´Ù.

+

+Hidden: ÄÜÆ®·ÑÀº óÀ½¿¡ ¾È º¸ÀÔ´Ï´Ù. GuiControl Show¸¦ »ç¿ëÇÏ¸é ³ªÁß¿¡ º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. ´Ü¾î HiddenÀº ¼±ÅÃÀûÀ¸·Î ´ÙÀ½¿¡ °ð¹Ù·Î 0 ¶Ç´Â 1ÀÌ µû¶ó¿Í ½ÃÀÛ »óŸ¦ ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù (0ÀÌ¸é º¸ÀÌ°í 1ÀÌ¸é ¼û½À´Ï´Ù). ´Ù¸¥ ¸»·Î, Hidden°ú Hidden%VarContainingOne%´Â °°½À´Ï´Ù.

+

+Left: ÄÜÆ®·ÑÀÇ ³»¿ëÀ» ±×ÀÇ °¡´ÉÇÑ ³Êºñ ¾È¿¡¼­ ¿ÞÂÊÀ¸·Î Á¤·ÄÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀº ´ÙÀ½ ÄÜÆ®·Ñ¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù: Text, Edit, Button, Checkbox, Radio, UpDown, Slider, Tab, Tab2, GroupBox, DateTime.

+

+Right: ÄÜÆ®·ÑÀÇ ÅؽºÆ®¸¦ ±×ÀÇ °¡´ÉÇÑ ³Êºñ ¾È¿¡¼­ ¿À¸¥ÂÊÀ¸·Î Á¤·ÄÇÕ´Ï´Ù. üũ¹Ú½º¿Í ¶óµð¿À¹öÆ°¿¡ ´ëÇÏ¿©, ÀÌ´Â ¶Ç ¹Ú½º ÀÚ½ÅÀ» ÄÜÆ®·ÑÀÇ ¿ÞÂÊÀÌ ¾Æ´Ï¶ó ¿À¸¥ÂÊ¿¡ ¹èÄ¡ÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀº ´ÙÀ½ ÄÜÆ®·Ñ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù: Text, Edit, Button, Checkbox, Radio, UpDown, Slider, Tab, Tab2, GroupBox, DateTime, Link.

+

+Center: ÄÜÆ®·ÑÀÇ ÅؽºÆ®¸¦ ±×ÀÇ °¡´ÉÇÑ ³Êºñ ¾È¿¡¼­ °¡¿îµ¥·Î Á¤·ÄÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀº ´ÙÀ½ ÄÜÆ®·Ñ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù: Text, Edit, Button, Checkbox, Radio, Slider, GroupBox.

+

+Section: »õ ¼½¼ÇÀ» ½ÃÀÛÇÏ°í ³ªÁß¿¡ À§¿¡ ±â¼úÇÑ xs¿Í ys À§Ä¡ ÁöÁ¤ ¿É¼Ç¿¡ »ç¿ëÇϱâ À§ÇØ ÀÌ ÄÜÆ®·ÑÀÇ À§Ä¡¸¦ ÀúÀåÇÕ´Ï´Ù.

+

+Tabstop: -TabstopÀ» (Áï, ¸¶À̳ʽº ÅǽºÅ¾) »ç¿ëÇÏ¸é »ç¿ëÀÚ°¡ TAB Å°¸¦ ´­·¯ Ç×ÇØÇÒ ¶§. ÀÔ·Â °¡´É ÄÜÆ®·ÑÀ» °Ç³Ê¶Û ¼ö ÀÖ½À´Ï´Ù.

+

+Wrap: ±×ÀÇ °¡´ÉÇÑ ³Êºñ ¾È¿¡¼­ ÄÜÆ®·ÑÀÇ ³»¿ë¿¡ ´Ü¾î-³Ñ±â±â¸¦ È°¼ºÈ­ÇÕ´Ï´Ù. °ÅÀÇ ¸ðµç ÄÜÆ®·Ñ À¯ÇüÀÌ ´Ü¾î-Áٳѱâ±â¸¦ ÄÑ°í ½ÃÀÛÇϱ⠶§¹®¿¡, ´Ü¾î ³Ñ±â±â¸¦ ²ô·Á¸é -Wrap¸¦ »ç¿ëÇսÿÀ.

+

+VScroll: ÀÌ·± À¯ÇüÀÇ ÄÜÆ®·Ñ¿¡ ÀûÀýÇÏ¸é ¼öÁ÷ ½ºÅ©·Ñ ¹Ù¸¦ Á¦°øÇÕ´Ï´Ù.

+

+HScroll: ÀÌ·± À¯ÇüÀÇ ÄÜÆ®·Ñ¿¡ ÀûÀýÇÏ¸é ¼öÆò ½ºÅ©·Ñ ¹Ù¸¦ Á¦°øÇÕ´Ï´Ù. ÀÌ ¹®´ÜÀÇ ³ª¸ÓÁö´Â ListBox¿¡¸¸ Àû¿ëµË´Ï´Ù. ¼öÆò ½ºÅ©·Ñ ³Êºñ´Â ¸®½ºÆ® ¹Ú½º ³ÊºñÀÇ 3 ¹è°¡ ±âº»°ªÀÔ´Ï´Ù. ´Ù¸¥ ½ºÅ©·Ñ ³Êºñ¸¦ ÁöÁ¤ÇÏ·Á¸é, ¼ýÀÚ¸¦ ´Ü¾î HScroll ¹Ù·Î ´ÙÀ½¿¡ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, HScroll500Àº ¸®½ºÆ®¹Ú½º ¾È¿¡¼­ 500 Çȼ¿ÀÇ ¼öÆò ½ºÅ©·ÑÀ» Çã¿ëÇÕ´Ï´Ù. ±×·¸Áö¸¸, ÁöÁ¤µÈ ½ºÅ©·Ñ ³Êºñ°¡ ¸®½ºÆ®¹Ú½ºÀÇ ³Êºñº¸´Ù ÀÛÀ¸¸é, ½ºÅ©·Ñ ¹Ù°¡ º¸ÀÌÁö ¾Ê½À´Ï´Ù (±×·¸Áö¸¸ Á¶±ÝÀ̶óµµHScrollÀÌ º¸¿©¾ß ¼öÆò ½ºÅ©·Ñ¹Ù¸¦ ³ªÁß¿¡ GuiControl, +HScroll500, MyScrollBar¸¦ ÅëÇÏ¿© Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ºÒ°¡´ÉÇÕ´Ï´Ù).

+ +

ÄÜÆ®·Ñ: Àß ¾²ÀÌÁö ¾Ê´Â ½ºÅ¸ÀÏ°ú ¿É¼Ç

+

+BackgroundTrans: Åõ¸í ¹è°æÀ» »ç¿ëÇÕ´Ï´Ù. ÄÜÆ®·ÑÀÌ ÅؽºÆ® ±×¸² ¶Ç´Â ±×·ì¹Ú½º Äܵå·Ñ µÚ¿¡ À־ ¶Õ°í º¼ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ±×¸² ÄÜÆ®·Ñ À§¿¡ º¸¿©Áö´Â Åõ¸íÇÑ ÅؽºÆ® ÄÜÆ®·ÑÀº ÅؽºÆ®¸¦ ±×¸²ÀÇ ÀϺκÐó·³ º¸ÀÌ°Ô ¸¸µì´Ï´Ù. GuiControl +Background¸¦ »ç¿ëÇϸé ÀÌ ¿É¼ÇÀ» ³ªÁß¿¡ Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. Åõ¸í À̹ÌÁö¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â Picture ÄÜÆ®·ÑÀÇ AltSubmit ¼½¼ÇÀ» ÂüÁ¶ÇϽʽÿÀ. +¾Ë·ÁÁø ÇÑ°è: BackgroundTrans´Â ListView°¡ µé¾î ÀÖ´Â Tab ÄÜÆ®·Ñ ¾ÈÀÇ ÄÜÆ®·Ñ¿¡´Â Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.

+

+-Background (Áï, ¸¶À̳ʽº ¹è°æ): Ç¥ÁØ ¹è°æ»öÀ» »ç¿ëÇÕ´Ï´Ù. Gui Color ¸í·É¾î·Î ¼³Á¤µÈ »öÀ» »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ°ÍÀº ÁÖ·Î Tab ÄÜÆ®·ÑÀÌ Ã¢ »öÀÌ ¾Æ´Ï¶ó ±×ÀÇ Ç¥ÁØ »öÀ» °¡Áöµµ·Ï ¸¸µå´Â µ¥ »ç¿ëµË´Ï´Ù. GuiControl +Background¸¦ »ç¿ëÇÏ¸é ³ªÁß¿¡ ÀÌ ¿É¼ÇÀ» Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Border: ÄÜÆ®·Ñ µÑ·¹¿¡ ¾ãÀº ÁÙ Å׵θ®¸¦ µÎ¸¨´Ï´Ù. ´ëºÎºÐÀÇ ÄÜÆ®·ÑÀº ÀÌ°ÍÀÌ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇϸé ÀÌ¹Ì À¯Çü-Á¾¼ÓÀûÀÎ Å׵θ®°¡ Àֱ⠶§¹®ÀÔ´Ï´Ù. Å׵θ®¸¦ ±âÁ¸ÀÇ ÄÜÆ®·Ñ¿¡ Ãß°¡ÇÒ ¶§, ÄÜÆ®·ÑÀÇ ³Êºñ¿Í ³ôÀ̸¦ °¢°¢ 1 Çȼ¿¾¿ Áõ°¡½Ãų ÇÊ¿ä°¡ ÀÖÀ» ¼öµµ ÀÖ½À´Ï´Ù.

+

+HwndOutputVar [v1.0.46.01+]: Gui Add¿Í ÇÔ²² »ç¿ëµÉ ¶§, ÀÌ ¿É¼ÇÀº »õ·Î »ý¼ºµÈ ÄÜÆ®·ÑÀÇ Ã¢ ÇÚµé (HWND)À» OutputVar¿¡ ÀúÀåÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: Gui, Add, Edit, vMyEdit HwndMyEditHwnd. ÇÔ¼ö ¾È¿¡ »ç¿ëµÉ ¶§, MyEditHwndÀº ÇÔ¼ö µ¿Àû º¯¼ö·Î Ãë±ÞµË´Ï´Ù. ÄÜÆ®·ÑÀÇ HWND´Â Á¾Á¾ PostMessage, SendMessage, ±×¸®°í DllCall¿¡ »ç¿ëµË´Ï´Ù. ¶Ç Á÷Á¢ÀûÀ¸·Î ahk_id WinTitle·Î »ç¿ëµÇ±âµµ ÇÕ´Ï´Ù (ÀÌ°ÍÀº ¼ûÀº ÄÜÆ®·Ñ¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù. ½ÉÁö¾î DetectHiddenWindows°¡ ²¨Á®(Off) À־ »ó°ü ¾ø½À´Ï´Ù). ¶Ç´Â [in v1.1.04+] GuiControl°ú GuiControlGet¿¡ ControlID ¸Å°³º¯¼ö·Î »ç¿ëµË´Ï´Ù. + +°ü·ÃÇÏ¿© ¸»¾¸ µå¸®ÀÚ¸é, ºÎ¸ð âÀÇ HWND´Â Gui MyGui:+HwndOutputVar¸¦ ÅëÇÏ¿© ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Theme: ÀÌ ¿É¼ÇÀº »õ·Î »ý¼ºµÈ ÄÜÆ®·Ñ¿¡ ´ëÇÏ¿© âÀÇ ÇöÀç Å׸¶ ¼³Á¤À» ¿À¹ö¶óÀ̵å ÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. ±âÁ¸ÀÇ ÄÜÆ®·Ñ¿¡ »ç¿ëµÉ ¶§´Â ¾Æ¹« È¿°úµµ ¾ø½À´Ï´Ù; ±×·¸Áö¸¸, ¹Ì·¡ÀÇ ¹öÀü¿¡¼­ ÀÌ ±â´ÉÀº º¯°æµÉ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº Gui +/-Theme¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+(Unnamed Style): Ç÷¯½º ¶Ç´Â ¸¶À̳ʽº »çÀÎ ´ÙÀ½¿¡ ¹Ù·Î ½ÊÁø ¶Ç´Â ½ÊÀ°Áø ½ºÅ¸ÀÏ ¹øÈ£¸¦ ÁöÁ¤ÇϽʽÿÀ. ºÎÈ£°¡ »ý·«µÇ¸é, Ç÷¯½º »çÀÎÀÌ ÀÖ´Ù°í °£Áֵ˴ϴÙ.

+

+(Unnamed ExStyle): Ç÷¯½º³ª ¸¶À̳ʽº »çÀÎ ´ÙÀ½¿¡ °ð¹Ù·Î ±âÈ£ E ±×¸®°í ½ÊÁø ¶Ç´Â ½ÊÀ°Áø È®Àå ½ºÅ¸ÀÏ ¹øÈ£¸¦ ÁöÁ¤ÇϽʽÿÀ. »çÀÎÀÌ »ý·«µÇ¸é, Ç÷¯½º »çÀÎÀÌ ÀÖ´Ù°í °£Áֵ˴ϴÙ. ¿¹¸¦ µé¾î, E0x200´Â WS_EX_CLIENTEDGE ½ºÅ¸ÀÏÀ» Ãß°¡ÇÕ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº Ç« µé¾î°£ »ç¹æ Å׵θ®¸¦ Á¦°øÇϹǷΠ±×¸²À̳ª ±âŸ ÄÜÆ®·Ñ¿¡ ÀûÀýÇÕ´Ï´Ù. ´Ù¸¥ È®Àå ½ºÅ¸ÀÏÀº (°ÅÀÇ »ç¿ëµÇÁö ¾ÊÀ¸¹Ç·Î) ¿©±â¿¡ ¹®¼­È­µÇÁö ¾Ê¾ÒÁö¸¸, WS_EX_CLIENTEDGE¸¦ www.microsoft.com¿¡¼­ °Ë»öÇØ º¸½Ê½Ã¿À.

+ +

â À̺¥Æ®

+

´ÙÀ½ ¶óº§ (¼­ºê·çƾ)Àº ½ºÅ©¸³Æ®¿¡ Á¸ÀçÇÑ´Ù¸é ÀÚµ¿À¸·Î GUI â°ú ¿¬°üµË´Ï´Ù:

+ +

[v1.1.20+]: ÁÖ¾îÁø À̺¥Æ®¿¡ ´ëÇÏ¿© ¶óº§ÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ±× À̸§ÀÇ ÇÔ¼ö°¡ ´ë½Å È£ÃâµË´Ï´Ù. ±× ÇÔ¼ö´Â ¼±ÅÃÀûÀ¸·Î ù ¸Å°³º¯¼ö·Î GUIÀÇ HWND¸¦ ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. ¾î¶² À̺¥Æ®´Â Ãß°¡·Î ¸Å°³º¯¼ö°¡ ÀÖ½À´Ï´Ù.

+

+1 ¹ø âÀ» Á¦¿ÜÇÏ°í ´Ù¸¥ âµé¿¡ ´ëÇÏ¿©, âÀÇ À̸§À̳ª ¹øÈ£´Â À§¿¡ ¾ð±ÞµÈ Ư¼ö ¶óº§¿¡ ´ëÇÏ¿© Á¢µÎ»ç·Î »ç¿ëµË´Ï´Ù; ¿¹¸¦ µé¾î, 2GuiEscape ±×¸®°í 2GuiClose´Â 2 ¹ø âÀÇ ±âº» ¶óº§ÀÌ µË´Ï´Ù. ¹Ý¸é¿¡ MyGuiGuiEscape ±×¸®°í MyGuiGuiClose´Â MyGui¿¡ ´ëÇÏ¿© ±âº» ¶óº§ÀÌ µË´Ï´Ù. ¸ÂÃã Á¢µÎ»ç¸¦ ¼³Á¤ÇÏ·Á¸é, Gui +Label¸¦ »ç¿ëÇϽʽÿÀ.

+ +

+GuiClose: ´ÙÀ½ Áß Çϳª·Î âÀÌ ´ÝÈú ¶§ ±âµ¿µË´Ï´Ù: Á¦¸ñ ¹Ù¿¡¼­ X¸¦ ´©¸§, ½Ã½ºÅÛ ¸Þ´º¿¡¼­ "´Ý±â"¸¦ ¼±ÅÃÇÔ, ¶Ç´Â WinClose·Î ´ÝÀ½. ÀÌ ¶óº§ÀÌ ¾øÀ» °æ¿ì, âÀ» ´ÝÀ¸¸é ±×³É °¨Ãä´Ï´Ù. ÀÌ È¿°ú´Â Gui Cancel°ú °°½À´Ï´Ù. GuiClose¿¡ ÀÀ´äÇÏ¿© °¡Àå ÈçÇÑ Á¶Ä¡ Áß Çϳª´Â ExitAppÀÔ´Ï´Ù; ¿¹¸¦ µé¾î:

+ +
GuiClose:
+ExitApp
+

+[v1.1.20+]: GuiClose°¡ ÇÔ¼öÀ̸é, GUI´Â ´ÝÈ÷´Â °Ô ±âº»°ªÀÔ´Ï´Ù. ±× ÇÔ¼ö´Â 0 ¾Æ´Ñ Á¤¼ö¸¦ µ¹·ÁÁÖ¾î ´ÝÈ÷Áö ¸øÇϵµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ ¿¹Á¦¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°½À´Ï´Ù:

+ +
GuiClose(GuiHwnd) {  ; ÀÌ ¸Å°³º¯¼ö¸¦ ¼±¾ðÇÏ´Â °ÍÀº ¼±ÅÃÀûÀÔ´Ï´Ù.
+    MsgBox 4,, GUI¸¦ Á¤¸» ´Ý°í ½Í½À´Ï±î?
+    ifMsgBox No
+        return true  ; true = 1
+}
+ +

+GuiEscape: GUI âÀÌ È°¼ºÈ­ µÇ¾î ÀÖ´Â µ¿¾È¿¡ »ç¿ëÀÚ°¡ Escape Å°¸¦ ´©¸¦ ¶§ ±âµ¿µË´Ï´Ù. ¶óº§ÀÌ ¾øÀ¸¸é, Escape¸¦ ´­·¯µµ È¿°ú°¡ ¾ø½À´Ï´Ù. +¾Ë·ÁÁø ÇÑ°è: âÀÇ Ã¹ ÄÜÆ®·ÑÀÌ È°¼ºÈ­ µÇ¾î ÀÖÁö ¾ÊÀ¸¸é (ÄÜÆ®·Ñ À¯Çü¿¡ µû¶ó ´Ù¸§), GuiEscape ¶óº§Àº ±âµ¿ÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ·± È¿°ú¸¦ »ý»êÇÏ´Â ´Ù¸¥ »óȲÀÌ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.

+ +

GuiSize: âÀÌ Å©±â°¡ ¹Ù²ð¶§, ÃÖ´ëÈ­, ÃÖ¼ÒÈ­, ¶Ç´Â º¹¿øµÉ ¶§ ±âµ¿µË´Ï´Ù. ³»Àå º¯¼ö A_GuiWidth¿Í A_GuiHeight¿¡ âÀÇ Å¬¶óÀ̾ðÆ® ±¸¿ªÀÇ ³Êºñ¿Í ³ôÀÌ°¡ ´ã±é´Ï´Ù. Ŭ¶óÀ̾ðÆ® ±¸¿ª¿¡¼­ Á¦¸ñ ¹Ù, ¸Þ´º ¹Ù, ±×¸®°í Å׵θ®¸¦ Á¦¿ÜÇÕ´Ï´Ù. °Ô´Ù°¡, A_EventInfo ±×¸®°í ErrorLevel´Â ¸ðµÎ ´ÙÀ½ ¼ýÀÚ Áß Çϳª¸¦ ´ã½À´Ï´Ù:

+

+ 0: âÀÌ º¹¿øµÇ¾ú´Ù. ¶Ç´Â Å׵θ®¸¦ ²ø¾î¼­ Á¤»óÀûÀ¸·Î Å©±â°¡ º¯°æµÇ¾ú´Ù.
+ 1: âÀÌ ÃÖ¼ÒÈ­µÇ¾ú´Ù.
+ 2: âÀÌ ÃÖ´ëÈ­µÇ¾ú´Ù.

+

+½ºÅ©¸³Æ®´Â GuiSize¸¦ »ç¿ëÇØ »ç¿ëÀÚÀÇ Ã¢ Å©±â º¯°æ¿¡ ÀÀ´äÇÏ¿© ÄÜÆ®·ÑÀÇ Å©±â¿Í À§Ä¡¸¦ ´Ù½Ã Á¶ÀýÇÒ ¼ö ÀÖ½À´Ï´Ù. tmplinshi¿Í toralf°¡ ¸¸µç AutoXYWH() ¸¦ »ç¿ëÇÏ¸é ´õ ½±°Ô ÀÌ°ÍÀ» ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+âÀÌ Å©±â°¡ ¹Ù²ð ¶§ (½ºÅ©¸³Æ®°¡ ¹Ù²Ù¾îµµ), GuiSize´Â Áï½Ã È£ÃâµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ â À̺¥Æ®¿Í ¸¶Âù°¡Áö·Î, ÇöÀç ¾²·¹µå°¡ ÀÎÅÍ·´Æ®°¡ ºÒ°¡´ÉÇÏ´Ù¸é, GuiSize´Â ¾²·¹µå°¡ ÀÎÅÍ·´Æ®°¡ °¡´ÉÇØÁú ¶§±îÁö È£ÃâµÇÁö ¾Ê½À´Ï´Ù. ½ºÅ©¸³Æ®°¡ ¹æ±Ý âÀÇ Å©±â¸¦ º¯°æÇß´Ù¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¶ó GuiSize°¡ Áï½Ã È£ÃâµÇ´Â °ÍÀ» È®ÀÎÇϽʽÿÀ:

+ +
Critical Off  ; Critical OnÀÌ »ç¿ëµÇÁö ¾Ê¾Ò´õ¶óµµ.
+Sleep -1
+

+[v1.1.22.05+]: Gui Show´Â ÀÚµ¿À¸·Î Sleep -1À» ¼öÇàÇÕ´Ï´Ù. ±×·¡¼­ ÀϹÝÀûÀ¸·Î ±× °æ¿ì¿¡´Â SleepÀ» È£ÃâÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+[v1.1.20+]: GuiSize°¡ ÇÔ¼öÀ̸é, ±×ÀÇ ¸Å°³º¯¼ö´Â ´ÙÀ½°ú °°½À´Ï´Ù:

+
GuiSize(GuiHwnd, EventInfo, Width, Height)
+ +

+GuiContextMenu: »ç¿ëÀÚ°¡ Á¦¸ñ ¹Ù¿Í ¶óº§À» Á¦¿ÜÇÏ°í âÀ» ¾Æ¹«µ¥³ª Ŭ¸¯ÇÏ¸é ±âµ¿µË´Ï´Ù. ¶Ç Apps Å°³ª Shift-F10 Å°´­¸²¿¡ ÀÀ´äÇÏ¿© ±âµ¿µË´Ï´Ù. ´ëºÎºÐÀÇ ´Ù¸¥ GUI ¶óº§°ú ´Ù¸£°Ô, GuiContextMenu´Â µ¿½Ã¿¡ ¿©·¯ º´Çà ¾²·¹µå¸¦ °¡Áú ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ³»Àå º¯¼ö¸¦ GuiContextMenu¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
    +
  1. A_GuiControl, ¾È¿¡ À̺¥Æ®¸¦ ¹ÞÀº ÄÜÆ®·ÑÀÇ ÅؽºÆ®³ª º¯¼ö À̸§ÀÌ µé¾î ÀÖ½À´Ï´Ù (¾øÀ¸¸é ºñ¾î ÀÖ½À´Ï´Ù).
  2. +
  3. A_EventInfo: ListBox, ListView, ¶Ç´Â TreeView°¡ ¹®¸Æ ¸Þ´ºÀÇ ¸ñÇ¥ÀÏ ¶§ (À§ÀÇ A_GuiControl°¡ °áÁ¤ÇÔ), A_EventInfo´Â ¾î´À ÄÜÆ®·ÑÀÇ Ç׸ñÀÌ ¸ñÇ¥ÀÎÁö ÁöÁ¤ÇÕ´Ï´Ù:
    + ListBox ¶Ç´Â ListView: A_EventInfo¿¡´Â ÇöÀç ÃÊÁ¡ÀÌ ÀÖ´Â ÇàÀÇ ¹øÈ£°¡ ´ã°Ü ÀÖ½À´Ï´Ù (¾øÀ¸¸é 0).
    + TreeView: ¿ìŬ¸¯¿¡ ´ëÇÏ¿©, A_EventInfo¿¡´Â Ŭ¸¯µÈ Ç׸ñÀÇ ID ¹øÈ£°¡ ´ã±é´Ï´Ù (¶Ç´Â »ç¿ëÀÚ°¡ Ç׸ñ ¸»°í ´Ù¸¥ °÷À» Ŭ¸¯ Çß´Ù¸é 0ÀÔ´Ï´Ù). AppsKey¿Í Shift-F10¿¡ ´ëÇÏ¿©, A_EventInfo¿¡´Â ¼±ÅÃµÈ Ç׸ñÀÇ ID ¹øÈ£°¡ ´ã±é´Ï´Ù.
  4. +
  5. A_GuiX ±×¸®°í A_GuiY, ¿©±â¿¡´Â ½ºÅ©¸³Æ®°¡ ¸Þ´º¸¦ º¸¿©ÁÙ X ÁÂÇ¥¿Í Y ÁÂÇ¥°¡ ´ã±é´Ï´Ù (¿¹, Menu, MyContext, Show, %A_GuiX%, %A_GuiY%). ÁÂÇ¥´Â âÀÇ Á¶»ó´Ü ¸ð¼­¸®¿¡ »ó´ëÀûÀÔ´Ï´Ù.
  6. +
  7. A_GuiEvent, »ç¿ëÀÚ°¡ ¿ìŬ¸¯ÇÏ¸é ´Ü¾î RightClickÀÌ ´ã±â°í ¸Þ´º°¡ Apps Å° ¶Ç´Â Shift-F10¿¡ ÀÇÇÏ¿© Ã˹ߵǾú´Ù¸é NormalÀÌ ´ã±é´Ï´Ù.
  8. +
+

ÁÖÀÇ: Edit ±×¸®°í MonthCal ÄÜÆ®·ÑÀº ÀڽŸ¸ÀÇ ¹®¸ÆÀÌ Àֱ⠶§¹®¿¡, ±× Áß¿¡ Çϳª¿¡ ¿ìŬ¸¯ÇÏ´õ¶óµµ GuiContextMenu´Â ±âµ¿µÇÁö ¾Ê½À´Ï´Ù.

+

+[v1.1.20+]: GuiContextMenu°¡ ÇÔ¼öÀ̸é, ±×ÀÇ ¸Å°³º¯¼ö´Â ´ÙÀ½°ú °°½À´Ï´Ù:

+
GuiContextMenu(GuiHwnd, CtrlHwnd, EventInfo, IsRightClick, X, Y)
+

+CtrlHwnd´Â ÄÜÆ®·ÑÀÌ À̺¥Æ®¸¦ ¹ÞÁö ¾Ê¾ÒÀ¸¸é ºñ¾î ÀÖ½À´Ï´Ù. IsRightClickÀº A_GuiEvent°¡ RightClickÀ̸é ÂüÀÔ´Ï´Ù.

+ +

+GuiDropFiles: ²ø¾î ¶³±¸±â ¿¬»êÀÇ ÀϺηΠÆÄÀÏ/Æú´õ°¡ â¿¡ ¶³±¸¾îÁú ¶§¸¶´Ù ±âµ¿µË´Ï´Ù (±×·¯³ª ¶óº§ÀÌ ÀÌ¹Ì ½ÇÇà ÁßÀ̸é, ¶³±¸±â À̺¥Æ®´Â ¹«½ÃµË´Ï´Ù). ´ÙÀ½ ³»Àå º¯¼ö´Â GuiDropFiles ¾È¿¡¼­ »ç¿ë°¡´É ÇÕ´Ï´Ù:

+
    +
  1. A_GuiControl, ¾È¿¡ ÆÄÀÏÀÌ ¶³±¸¾îÁø ÄÜÆ®·ÑÀÇ ÅؽºÆ® ¶Ç´Â º¯¼ö À̸§ÀÌ ´ã°Ü ÀÖ½À´Ï´Ù (¾øÀ¸¸é ºñ¾î ÀÖÀ½).
  2. +
  3. A_EventInfo ±×¸®°í ErrorLevel, µÑ ¸ðµÎ ¾È¿¡ ¶³±¸¾îÁø ÆÄÀÏÀÇ °³¼ö°¡ ´ã°Ü ÀÖ½À´Ï´Ù.
  4. +
  5. A_GuiX ±×¸®°í A_GuiY, ¾È¿¡ ÆÄÀÏÀÌ ¶³±¸¾îÁø °÷ÀÇ XÁÂÇ¥¿Í Y ÁÂÇ¥°¡ °¢°¢ ´ã°Ü ÀÖ½À´Ï´Ù (ÁÂÇ¥´Â âÀÇ Á»ó ¸ð¼­¸®¿¡ »ó´ëÀûÀÔ´Ï´Ù).
  6. +
  7. A_GuiEvent, ¾È¿¡ ¶³±¸¾îÁø ÆÄÀÏÀÇ À̸§ÀÌ µé¾î ÀÖ½À´Ï´Ù. ¸¶Áö¸·À» Á¦¿ÜÇÏ°í °¢°¢ÀÇ ÆÄÀÏÀ̸§Àº ¶óÀÎÇǵå (`n)·Î ³¡´Õ´Ï´Ù.
  8. +
+

°³º° ÆÄÀÏÀ» ÃßÃâÇÏ·Á¸é, ¾Æ·¡¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ ÆÄ½Ì È¸µ¹À̸¦ »ç¿ëÇϽʽÿÀ: +

+
; ¿¹Á¦ #1:
+Loop, parse, A_GuiEvent, `n
+{
+    MsgBox, 4,, File number %A_Index% is:`n%A_LoopField%.`n`nContinue?
+    IfMsgBox, No, Break
+}
+
+; ¿¹Á¦ #2: ù ÆÄÀϸ¸ ÃßÃâÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:
+Loop, parse, A_GuiEvent, `n
+{
+    FirstFile = %A_LoopField%
+    Break
+}
+
+; ¿¹Á¦ #3: ¾ËÆĺª ¼øÀ¸·Î ÆÄÀÏÀ» ó¸®ÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:
+FileList = %A_GuiEvent%
+Sort, FileList
+Loop, parse, FileList, `n
+    MsgBox File number %A_Index% is:`n%A_LoopField%.
+

+â¿¡ ´ëÇÏ¿© ²ø¾î ¶³±¸±â¸¦ Àá½Ã ²ô·Á¸é, Gui -E0x10¸¦ ÅëÇÏ¿© WS_EX_ACCEPTFILES ½ºÅ¸ÀÏÀ» Á¦°ÅÇϽʽÿÀ. ³ªÁß¿¡ ´Ù½Ã È°¼ºÈ­ÇÏ·Á¸é, Gui +E0x10¸¦ »ç¿ëÇϽʽÿÀ.

+

+[v1.1.20+]: GuiDropFilesÀÌ ÇÔ¼öÀ̸é, ±× ¸Å°³º¯¼ö´Â ¾Æ·¡ ¿¹Á¦¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°½À´Ï´Ù. CtrlHwnd´Â ÆÄÀÏÀÌ GUI ÀÚü¿¡ ¶³±¸¾îÁö¸é ºñ¾î ÀÖ½À´Ï´Ù. FileArray´ÂÆÄÀÏÀ̸§ÀÇ ¹è¿­ (°´Ã¼)ÀÔ´Ï´Ù. ¿©±â¿¡¼­ FileArray[1]Àº ù ¹ø° ÆÄÀÏÀÌ°í FileArray.MaxIndex()´Â ÆÄÀÏÀÇ °³¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. for-ȸµ¹À̸¦ »ç¿ëÇϸé ÆÄÀÏÀ» ¹Ýº¹ÇÒ ¼ö ÀÖ½À´Ï´Ù:

+ +
GuiDropFiles(GuiHwnd, FileArray, CtrlHwnd, X, Y) {
+    for i, file in FileArray
+        MsgBox File %i% is:`n%file%
+}
+
+ +

´Ù¸¥ À̺¥Æ®¸¦ ŽÁöÇÏ°í ÀÀ´äÇϱâ: ´Ù¸¥ À¯ÇüÀÇ GUI À̺¥Æ®´Â OnMessage()¸¦ ÅëÇÏ¿© ŽÁöÇÏ°í ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, »ç¿ëÀÚ°¡ ¸¶¿ì½º¸¦ âÀÇ Æ¯Á¤ ÄÜÆ®·Ñ¿¡ ¿Ã·Á ³õÀ» ¶§¸¶´Ù ½ºÅ©¸³Æ®´Â ¹®¸Æ-°¨Áö µµ¿ò¸»À» ÅøÆÁÀ» ÅëÇÏ¿© º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº GUI ToolTip ¿¹Á¦¿¡¼­ ½Ã¿¬ÇÕ´Ï´Ù.

+ +

¿©·¯ GUI â ¸¸µé±â

+

+ ±âº» â ¸»°í ´Ù¸¥ âÀ» ó¸®ÇÏ·Á¸é, ±×ÀÇ À̸§ ¶Ç´Â ¹øÈ£ (¶Ç´Â v1.1.03+À̶ó¸é, ±×ÀÇ HWND) ±×¸®°í ´ÙÀ½¿¡ ½ÖÁ¡À» µÎ°í ºÎ-¸í·É¾î¸¦ ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ Æ÷ÇÔÇϽʽÿÀ:

+ +
Gui, MyGui:Add, Text,, Text for about-box.
+Gui, MyGui:Show
+

+Gui MyGui:DefaultÀ» »ç¿ëÇϸé À§ÀÇ "MyGui:" Á¢µÎ»ç°¡ ÇÊ¿ä ¾ø½À´Ï´Ù. °Ô´Ù°¡, ÀÌ Á¢µÎ»ç´Â GUI ¾²·¹µå°¡ ±× ¾²·¹µå¸¦ ±âµ¿ÇÑ °°Àº â¿¡ ÀÛµ¿Çϸé ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+[v1.1.03+]: Gui À̸§Àº ¹Ýµå½Ã º¯¼ö À̸§°ú °°Àº ±ÔÄ¢À» Áö°Ü¾ß ÇÕ´Ï´Ù. 1°ú 99 »çÀÌÀÇ ¼ýÀÚ°¡ ¾Æ´Ñ ¼ýÀÚ ¶Ç´Â µÎ ÀÚ¸® ¹®ÀÚº¸´Ù ´õ ±ä ¼ýÀÚ´Â (¿¹¸¦ µé¾î 0x01) ¹Ýµå½Ã ±âÁ¸ÀÇ GuiÀÇ HWNDÀ̾î¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¸í·É¾î´Â ½ÇÆÐÇÕ´Ï´Ù. Ãë±ÞÇÒ ¼ö Àִ âÀÇ °³¼ö´Â ¿î¿µ üÁ¦ÀÇ ÀÚ¿ø¿¡¸¸ Á¦Çѵ˴ϴÙ.

+

+[v1.1.04+]: À̸§ ¾ø´Â GUI âÀÇ ¹øÈ£´Â Gui, New¸¦ »ç¿ëÇÏ¿© ¸¸µé ¼ö ÀÖ½À´Ï´Ù.

+ +

GUI À̺¥Æ®, ¾²·¹µå, ±×¸®°í ¼­ºê·çƾ

+

+GUI ¾²·¹µå´Â GUI ÇàÀ§ÀÇ °á°ú·Î ±âµ¿µÈ ¾²·¹µå·Î Á¤Àǵ˴ϴÙ. GUI ÇàÀ§¿¡´Â GUI âÀÇ ¸Þ´º ¹Ù·ÎºÎÅÍ Ç׸ñÀ» ¼±ÅÃÇÏ´Â °Í, ¶Ç´Â ±×ÀÇ g-labelsÁß Çϳª¸¦ (¹öÆ°À» ´­·¯¼­) Ã˹߽ÃÅ°´Â ÀÏÀÌ Æ÷ÇԵ˴ϴÙ.

+

+GUI ¾²·¹µåÀÇ ±âº» â À̸§Àº ±× ¾²·¹µå¸¦ ±âµ¿ÇÑ Ã¢ÀÇ À̸§ÀÔ´Ï´Ù. ºñ-GUI ¾²·¹µå´Â 1À» ±âº» °ªÀ¸·Î »ç¿ëÇÕ´Ï´Ù.

+

+GUI ¾²·¹µå°¡ ±âµ¿ÇÒ ¶§¸¶´Ù, ±× ¾²·¹µåÀÇ ¸¶Áö¸· ¹ß°ß âÀº ±× GUI â ÀÚü·Î ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ´öºÐ¿¡ â°ú ÄÜÆ®·Ñ¿¡ ´ëÇÑ ¸í·É¾îµéÀÌ -- ¿¹¸¦ µé¾î WinMove, WinHide, WinSet, WinSetTitle, ±×¸®°í ControlGetFocus ¸í·É¾î°¡ -- GUI â Àڽſ¡°Ô ÀÛµ¿ÇÒ ¶§´Â WinTitle°ú WinText¸¦ »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù (½ÉÁö¾î ¼û¾î À־ ÀÛµ¿ÇÕ´Ï´Ù).

+

+¾Õ¿¡¼­ Ŭ¸¯Çؼ­ ±×ÀÇ g-labelÀÌ ÀÌ¹Ì ½ÇÇà ÁßÀÎ µ¿¾È¿¡ ÄÜÆ®·ÑÀ» Ŭ¸¯ÇÏ¸é ¾Æ¹« È¿°úµµ ¾ø°í ±× À̺¥Æ®´Â Æó±âµË´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é, CriticalÀ» ¼­ºê·çƾÀÇ Ã¹ ÁÙ¿¡ »ç¿ëÇϽʽÿÀ (±×·¸Áö¸¸, ÀÌ·¸°Ô Çϸé ÇÖÅ° ´©¸§°ú °°ÀÌ ´Ù¸¥ ¾²·¹µåµµ ¹öÆÛó¸® ¶Ç´Â Áö¿¬µÉ °ÍÀÔ´Ï´Ù.).

+

+³»Àå º¯¼ö A_Gui¿Í A_GuiControl ¾È¿¡´Â ÇöÀç ¾²·¹µå¸¦ ±âµ¿ÇÑ Ã¢ À̸§°ú ÄÜÆ®·Ñ ID°¡ ´ã°Ü ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ °ÍÀº A_Gui ±×¸®°í A_GuiControl¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+¿©·¯ À̺¥Æ®°¡ °°Àº ¼­ºê·çƾÀ» ¼öÇàÇϵµ·Ï ¸¸µé·Á¸é, ¶óº§µéÀ» ¿¬¼ÓÀûÀ¸·Î ¼­ºê·çƾ À§¿¡ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î:

+
GuiEscape:
+GuiClose:
+ButtonCancel:
+ExitApp  ; À§ÀÇ ¸ðµç ¶óº§Àº ÀÌ°ÍÀ» ¼öÇàÇÕ´Ï´Ù.
+

+¸ðµç GUI ¾²·¹µå´Â SendMode¿Í °°Àº ¼³Á¤¿¡ ´ëÇÏ¿© ±âº» °ªÀ» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ±âº» °ªÀº ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡¼­ º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ + +

+GUI âÀº ÅÇ Å°·Î Ç×ÇØÇÒ ¼ö ÀÖ½À´Ï´Ù. ÅÇ Å°´Â ÃÊÁ¡À» ´ÙÀ½ ÀÔ·Â-°¡´É ÄÜÆ®·Ñ·Î À̵¿½Ãŵ´Ï´Ùl (Tabstop ½ºÅ¸ÀÏÀÌ Á¦°ÅµÈ ÄÜÆ®·ÑÀº °Ç³Ê ¶Ý´Ï´Ù). Ç×ÇØÀÇ ¼ø¼­´Â ÄÜÆ®·ÑÀÌ ¿ø·¡ Ãß°¡µÈ ¼ø¼­·Î °áÁ¤µË´Ï´Ù. âÀÌ Ã³À½ º¸À̸é, Tabstop ½ºÅ¸ÀÏÀ» °¡Áö°í Àִ ù ¹ø° ÀÔ·Â-°¡´É ÄÜÆ®·ÑÀÌ Å°º¸µå ÃÊÁ¡À» °¡Áý´Ï´Ù (´ëºÎºÐÀÇ ÄÜÆ®·Ñ À¯ÇüÀº ±âº»À¸·Î ÅǽºÅ¾ ½ºÅ¸ÀÏÀ» °¡Áö°í ÀÖ½À´Ï´Ù).

+

+¾î¶² ÄÜÆ®·ÑÀº Å°º¸µå ´ÜÃàÅ°¸¦ ¸¸µå´Â ¾ÚÆÛ¼¾µå°¡ Æ÷ÇԵǾî ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù (&). ÀÌ ´ÜÃà Å°´Â ÄÜÆ®·ÑÀÇ ÅؽºÆ®¿¡ ¹ØÁÙ ¹®ÀÚ·Î º¸¿©Áý´Ï´Ù (½Ã½ºÅÛ ¼³Á¤¿¡ µû¶ó ´Ù¸§). »ç¿ëÀÚ´Â ALT Å°¸¦ ´©¸¥ ä·Î »óÀÀÇÏ´Â ¹®ÀÚ¸¦ ŸÀÚÇÏ¿© ±× ´ÜÃàÅ°¸¦ È°¼ºÈ­ ÇÕ´Ï´Ù. ¹öÆ°, üũ¹Ú½º, ±×¸®°í ¶óµð¿À ¹öÆ°¿¡ ´ëÇÏ¿©, ´ÜÃàÅ°¸¦ ´©¸£´Â °ÍÀº ÄÜÆ®·ÑÀ» Ŭ¸¯ÇÏ´Â °Í°ú µ¿ÀÏÇÕ´Ï´Ù. GroupBoxes¿Í Text controls¿¡ ´ëÇÏ¿©, ´ÜÃàÅ°¸¦ ´©¸£¸é Å°º¸µå ÃÊÁ¡ÀÌ Ã¹ ¹ø° ÀÔ·Â-°¡´É tabstop ÄÜÆ®·Ñ·Î Á¡ÇÁÇÕ´Ï´Ù. ±×·¸Áö¸¸ ¿©·¯ ÄÜÆ®·ÑÀÌ °°Àº ´ÜÃàÅ°¸¦ °¡Áö°í ÀÖ´Â °æ¿ì, ´ÜÃà Å°¸¦ ´©¸£¸é °°Àº ´ÜÃàÅ°¸¦ °¡Áö°í ÀÖ´Â ¸ðµç ÄÜÆ®·Ñ Áß¿¡ Çϳª¸¦ °ñ¶ó ¹«ÀÛÀ§·Î Á¡ÇÁÇÕ´Ï´Ù.

+

+¾ÚÆÛ¼¾µå¸¦ ±ÛÀÚ ±×´ë·Î À§¿¡ ¾ð±ÞÇÑ ÄÜÆ®·Ñ À¯Çü¿¡ º¸¿©ÁÖ·Á¸é, µÎ °³ÀÇ ¾ÚÆÛ¼¾µå¸¦ ¿¬¼ÓÀ¸·Î ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ÁöÁ¤ÇϽʽÿÀ: Save && Exit.

+ +

âÀÇ ¸ð½À

+

+¾ÆÀÌÄÜ¿¡ ´ëÇÏ¿© GUI âÀº âÀÌ ¸¸µé¾îÁö´Â ¼ø°£ È¿°ú°¡ ÀÖ´ø Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» »ç¿ëÇÕ´Ï´Ù. ±×·¡¼­, ´Ù¸¥ ¾ÆÀÌÄÜÀ» °¡Áö·Á¸é, Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» ¹Ù²Ù°í ³ª¼­ âÀ» ¸¸µå½Ê½Ã¿À. ¿¹¸¦ µé¾î: Menu, Tray, Icon, MyIcon.ico. ¶Ç ÀÛÀº ¾ÆÀÌÄÜ ¸»°í Å« ¾ÆÀÌÄÜÀ» °¡Áö´Â °Íµµ °¡´ÉÇÕ´Ï´Ù (Å« ¾ÆÀÌÄÜÀº ¾ËÆ®-ÅÇ Å½ºÅ© Àüȯ±â¿¡ º¸¿©Áý´Ï´Ù.). ÀÌ°ÍÀº DllCall°ú SendMessage¸¦ ÅëÇÏ¿© ´Þ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù; ¿¹¸¦ µé¾î:

+ +
hIcon32 := DllCall("LoadImage", uint, 0
+    , str, "My Icon.ico"  ; ¾ÆÀÌÄÜ ÆÄÀÏ (ÀÌ ÆÄÀÏ¿¡ ¿©·¯ ¾ÆÀÌÄÜÀÌ µé¾î ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù).
+    , uint, 1  ; À̹ÌÁöÀÇ Á¾·ù: IMAGE_ICON
+    , int, 32, int, 32  ; À̹ÌÁöÀÇ ¿øÇÏ´Â ³Êºñ¿Í ³ôÀÌ (LoadImage°¡ ¾î´À ¾ÆÀÌÄÜÀÌ Á¦ÀÏ ÁÁÀºÁö °áÁ¤ÇÏ´Â µ¥ µµ¿òÀÌ µË´Ï´Ù).
+    , uint, 0x10)  ; Flags: LR_LOADFROMFILE
+Gui +LastFound
+SendMessage, 0x80, 1, hIcon32  ; 0x80´Â WM_SETICONÀÔ´Ï´Ù; ±×¸®°í 1Àº ICON_BIGÀÌ´Â ¶æÀÔ´Ï´Ù ( 0À̸é ICON_SMALLÀ» ÀǹÌÇÔ).
+Gui Show
+

+OSÀÇ Á¦ÇÑ ¶§¹®¿¡, ºñ-±âº» ÅؽºÆ® Ä÷¯°¡ ÁöÁ¤µÈ üũ¹Ú½º, ¶óµð¿À ¹öÆ°, ±×¸®°í ±×·ì¹Ú½º´Â Windows XP À̻󿡼­ °íÀü Å׸¶ÀÇ °Ñ¸ð½ÀÀ» °¡Áý´Ï´Ù.

+

+°ü·Ã ÁÖÁ¦: âÀÇ ¿©¹é.

+ +

ÃÑÆò

+

+GuiControl°ú GuiControlGetÀ» »ç¿ëÇϸé GUI âÀÇ ÄÜÆ®·ÑÀ» °³º°ÀûÀ¸·Î ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+°¢ GUI âÀº ÃÖ´ë 11,000 °³ÀÇ ÄÜÆ®·ÑÀ» °¡Áú ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, 5000 °³°¡ ³Ñ´Â ÄÜÆ®·ÑÀ» ¸¸µé ¶§ Á¶½ÉÇϽʽÿÀ. ¿Ö³ÄÇÏ¸é ¾î¶² ÄÜÆ®·Ñ À¯Çü¿¡ ´ëÇؼ­´Â ½Ã½ºÅÛÀÇ ¾ÈÁ¤¼º¿¡ ¹®Á¦°¡ »ý±æ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.

+

+½ºÅ©¸³Æ® ¾îµð¼­µç GUI ¸í·É¾î¸¦ »ç¿ëÇϸé ÀÚµ¿À¸·Î ¿µ¼ÓÀûÀÌ µË´Ï´Ù (±× GUI ¸í·É¾î°¡ ½ÇÁ¦·Î ½ÇÇàµÇÁö ¾Ê´õ¶óµµ »ó°ü ¾ø½À´Ï´Ù). ¶Ç ´ÜÀÏ ½ÇüÀ̱⵵ ÇÕ´Ï´Ù. ´Ü, #SingleInstance Áö½Ã¾î¸¦ »ç¿ëÇØ ¿À¹ö¶óÀ̵å ÇÑ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+GuiControl, GuiControlGet, Menu, ÄÜÆ®·Ñ À¯Çü, ListView, TreeView, Control, ControlGet, SplashImage, MsgBox, FileSelectFile, FileSelectFolder

+ +

¿¹Á¦

+
; ¿¹Á¦: SplashTextOn°ú ºñ½ÁÇÑ È¿°ú¸¦ ¾ò½À´Ï´Ù:
+
+Gui, +AlwaysOnTop +Disabled -SysMenu +Owner  ; +Owner¸¦ »ç¿ëÇϸé ŽºÅ© ¹Ù ¹öÆ°ÀÌ º¸ÀÌÁö ¾Ê½À´Ï´Ù.
+Gui, Add, Text,, Some text to display.
+Gui, Show, NoActivate, Title of Window  ; NoActivate´Â ÇöÀç È°¼º âÀ» ºñÈ°¼ºÈ­ÇÏÁö ¸øÇϵµ·Ï ÇÕ´Ï´Ù.
+

 

+
; ¿¹Á¦: À̸§°ú ¼ºÀ» ¹°¾î º¸´Â °£´ÜÇÑ ÀÔ·Â-¹Ú½º:
+
+Gui, Add, Text,, First name:
+Gui, Add, Text,, Last name:
+Gui, Add, Edit, vFirstName ym  ; ym ¿É¼ÇÀº ÄÜÆ®·ÑÀÇ »õ ¿­À» ½ÃÀÛÇÕ´Ï´Ù.
+Gui, Add, Edit, vLastName
+Gui, Add, Button, default, OK  ; ¶óº§ ButtonOK´Â (Á¸ÀçÇϸé) ¹öÆ°ÀÌ ´­¸± ¶§ ½ÇÇàµË´Ï´Ù.
+Gui, Show,, Simple Input Example
+return  ; ÀÚµ¿-½ÇÇà ¼½¼ÇÀÇ ³¡. ½ºÅ©¸³Æ®´Â »ç¿ëÀÚ°¡ ¹«¾ð°¡ ÀÏÀ» ÇÒ ¶§ ±îÁö ÈÞ½Ä »óÅ¿¡ µé¾î°©´Ï´Ù.
+
+GuiClose:
+ButtonOK:
+Gui, Submit  ; °¢ ÄÜÆ®·ÑÀÇ ¿¬°ü º¯¼ö¿¡ »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ÀúÀåÇÕ´Ï´Ù.
+MsgBox You entered "%FirstName% %LastName%".
+ExitApp
+

 

+
; ¿¹Á¦: ÅÇ ÄÜÆ®·Ñ:
+
+Gui, Add, Tab2,, First Tab|Second Tab|Third Tab  ; Tab2 vs. Tab´Â v1.0.47.05¸¦ ¿ä±¸ÇÕ´Ï´Ù.
+Gui, Add, Checkbox, vMyCheckbox, Sample checkbox
+Gui, Tab, 2
+Gui, Add, Radio, vMyRadio, Sample radio1
+Gui, Add, Radio,, Sample radio2
+Gui, Tab, 3
+Gui, Add, Edit, vMyEdit r5  ; r5´Â ³ôÀÌ°¡ 5 Çà À̶ó´Â ¶æÀÔ´Ï´Ù.
+Gui, Tab  ; Áï, À̾ Ãß°¡µÇ´Â ÄÜÆ®·ÑµéÀº ÅÇ ÄÜÆ®·Ñ¿¡ ¼ÓÇÏÁö ¾Ê½À´Ï´Ù.
+Gui, Add, Button, default xm, OK  ; xmÀº ¹öÆ°À» ÁÂÇÏ ¸ð¼­¸®¿¡ ¹èÄ¡ÇÕ´Ï´Ù.
+Gui, Show
+return
+
+ButtonOK:
+GuiClose:
+GuiEscape:
+Gui, Submit  ; °¢ ÄÜÆ®·ÑÀÇ ³»¿ëÀ» ±×ÀÇ ¿¬°ü º¯¼ö¿¡ ÀúÀåÇÕ´Ï´Ù.
+MsgBox You entered:`n%MyCheckbox%`n%MyRadio%`n%MyEdit%
+ExitApp
+

 

+ +
; ¿¹Á¦: µð·ºÅ丮¿¡ ÀÖ´Â ÆÄÀÏÀ» ´ã°í ÀÖ´Â ListBox:
+
+Gui, Add, Text,, Pick a file to launch from the list below.`nTo cancel, press ESCAPE or close this window.
+Gui, Add, ListBox, vMyListBox gMyListBox w640 r10
+Gui, Add, Button, Default, OK
+Loop, C:\*.*  ; ÀÌ Æú´õ¿Í ¿ÍÀϵåÄ«µå ÆÐÅÏÀ» ¿©·¯ºÐÀÇ ±âÈ£¿¡ ¸Â°Ô ¹Ù²Ù½Ê½Ã¿À.
+{
+    GuiControl,, MyListBox, %A_LoopFileFullPath%
+}
+Gui, Show
+return
+
+MyListBox:
+if A_GuiEvent <> DoubleClick
+    return
+; ±×·¸Áö ¾ÊÀ¸¸é, »ç¿ëÀÚ°¡ ¸®½ºÆ® Ç׸ñÀ» ´õºíŬ¸¯ÇÑ °ÍÀÔ´Ï´Ù. ±×·¡¼­ OK¸¦ Ŭ¸¯ÇÑ °Í°ú ¶È°°ÀÌ Ãë±ÞÇÕ´Ï´Ù.
+; ±×·¡¼­ ´ÙÀ½ ¶óº§·Î ºüÁ® ³ª°©´Ï´Ù.
+ButtonOK:
+GuiControlGet, MyListBox  ; ListBoxÀÇ ÇöÀç ¼±ÅÃÀ» ¿­¶÷ÇÕ´Ï´Ù.
+MsgBox, 4,, Would you like to launch the file or document below?`n`n%MyListBox%
+IfMsgBox, No
+    return
+; ±×·¸Áö ¾ÊÀ¸¸é, ±âµ¿À» ½ÃµµÇÕ´Ï´Ù:
+Run, %MyListBox%,, UseErrorLevel
+if ErrorLevel = ERROR
+    MsgBox Could not launch the specified file.  Perhaps it is not associated with anything.
+return
+
+GuiClose:
+GuiEscape:
+ExitApp
+

 

+ +
; ¿¹Á¦: »ç¿ëÀÚ°¡ ¸¶¿ì½º¸¦ ƯÁ¤ ÄÜÆ®·Ñ¿¡ ¿Ã·Á ³õÀ» ¶§¸¶´Ù (ÅøÆÁÀ» ÅëÇÏ¿©) ¹®¸Æ-°¨Áö µµ¿ò¸»À» º¸¿©ÁÝ´Ï´Ù:
+
+Gui, Add, Edit, vMyEdit
+MyEdit_TT := "This is a tooltip for the control whose variable is MyEdit."
+Gui, Add, DropDownList, vMyDDL, Red|Green|Blue
+MyDDL_TT := "Choose a color from the drop-down list."
+Gui, Add, Checkbox, vMyCheck, This control has no tooltip.
+Gui, Show
+OnMessage(0x200, "WM_MOUSEMOVE")
+return
+
+WM_MOUSEMOVE()
+{
+    static CurrControl, PrevControl, _TT  ; _TT´Â ¾Æ·¡ÀÇ ToolTip ¸í·É¾î¿¡ »ç¿ëÇϱâ À§ÇØ ºó »óŸ¦ À¯ÁöÇÕ´Ï´Ù.
+    CurrControl := A_GuiControl
+    If (CurrControl <> PrevControl and not InStr(CurrControl, " "))
+    {
+        ToolTip  ; ÀÌÀüÀÇ ÅøÆÁÀ» ¸ðµÎ ²ü´Ï´Ù.
+        SetTimer, DisplayToolTip, 1000
+        PrevControl := CurrControl
+    }
+    return
+
+    DisplayToolTip:
+    SetTimer, DisplayToolTip, Off
+    ToolTip % %CurrControl%_TT  ; ¾ÕÀÇ ÆÛ¼¾Æ® »çÀÎÀº Ç¥Çö½ÄÀ» »ç¿ëÇ϶ó°í ¾Ë¸³´Ï´Ù.
+    SetTimer, RemoveToolTip, 3000
+    return
+
+    RemoveToolTip:
+    SetTimer, RemoveToolTip, Off
+    ToolTip
+    return
+}
+
+
+GuiClose:
+ExitApp
+

 

+
; ¿¹Á¦: Åõ¸í âÀ» ÅëÇÑ È­¸é-À§ µð½ºÇ÷¹ÀÌ (OSD):
+
+CustomColor = EEAA99  ; RGB »ö °¡´É (¾Æ·¡¿¡¼­ Åõ¸íÇÏ°Ô ¸¸µé °ÍÀÔ´Ï´Ù).
+Gui +LastFound +AlwaysOnTop -Caption +ToolWindow  ; +ToolWindow´Â ŽºÅ©¹Ù ¹öÆ°°ú ¾ËÆ®-ÅÇ ¸Þ´º Ç׸ñÀ» ȸÇÇÇÕ´Ï´Ù.
+Gui, Color, %CustomColor%
+Gui, Font, s32  ; Ä¿´Ù¶õ ±Û²Ã Å©±â¸¦ ¼³Á¤ÇÕ´Ï´Ù (32-Æ÷ÀÎÆ®).
+Gui, Add, Text, vMyText cLime, XXXXX YYYYY  ; XX & YY´Â ÀÚµ¿-Å©±â Á¶Àý âÀ¸·Î ±â¿©ÇÕ´Ï´Ù.
+; ÀÌ »öÀ» °¡Áø ¸ðµç Çȼ¿À» Åõ¸íÇÏ°Ô ¸¸µé°í ÅؽºÆ® ÀÚü´Â ¹ÝÅõ¸íÇÏ°Ô ¸¸µì´Ï´Ù (150):
+WinSet, TransColor, %CustomColor% 150
+SetTimer, UpdateOSD, 200
+Gosub, UpdateOSD  ; ŸÀ̸Ӹ¦ ±â´Ù¸®Áö ¾Ê°í ¸ÕÀú Áï½Ã °»½ÅÇÕ´Ï´Ù.
+Gui, Show, x0 y400 NoActivate  ; NoActivate´Â ÇöÀç È°¼º âÀ» ºñÈ°¼ºÈ­ÇÏÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù.
+return
+
+UpdateOSD:
+MouseGetPos, MouseX, MouseY
+GuiControl,, MyText, X%MouseX%, Y%MouseY%
+return
+

 

+
; ¿¹Á¦: ¹è°æ À̹ÌÁö À§¿¡ ÁßøµÈ ¿òÁ÷ÀÌ´Â Áøµµ ¹Ù.
+
+Gui, Color, White
+Gui, Add, Picture, x0 y0 h350 w450, %A_WinDir%\system32\ntimage.gif
+Gui, Add, Button, Default xp+20 yp+250, Start the Bar Moving
+Gui, Add, Progress, vMyProgress w416
+Gui, Add, Text, vMyText wp  ; wp´Â "ÀÌÀüÀÇ ³Êºñ¸¦ »ç¿ëÇ϶ó"´Â ¶æÀÔ´Ï´Ù.
+Gui, Show
+return
+
+ButtonStartTheBarMoving:
+Loop, %A_WinDir%\*.*
+{
+    if A_Index > 100
+        break
+    GuiControl,, MyProgress, %A_Index%
+    GuiControl,, MyText, %A_LoopFileName%
+    Sleep 50
+}
+GuiControl,, MyText, Bar finished.
+return
+
+GuiClose:
+ExitApp
+

 

+
; ¿¹Á¦: °£´ÜÇÑ À̹ÌÁö ºä¾î:
+
+Gui, +Resize
+Gui, Add, Button, default, &Load New Image
+Gui, Add, Radio, ym+5 x+10 vRadio checked, Load &actual size
+Gui, Add, Radio, ym+5 x+10, Load to &fit screen
+Gui, Add, Pic, xm vPic
+Gui, Show
+return
+
+ButtonLoadNewImage:
+FileSelectFile, file,,, Select an image:, Images (*.gif; *.jpg; *.bmp; *.png; *.tif; *.ico; *.cur; *.ani; *.exe; *.dll)
+if file =
+    return
+Gui, Submit, NoHide ; ¶óµð¿À ¹öÆ°ÀÇ °ªÀ» ÀúÀåÇÕ´Ï´Ù.
+if Radio = 1  ; À̹ÌÁö¸¦ ±×ÀÇ ½ÇÁ¦ Å©±â·Î º¸¿©ÁÝ´Ï´Ù.
+{
+    Width = 0
+    Height = 0
+}
+else ; Second radio is selected: À̹ÌÁö¸¦ È­¸é Å©±â¿¡ ¸Â°Ô Á¶ÀýÇÕ´Ï´Ù.
+{
+    Width := A_ScreenWidth - 28  ; ¸¶À̳ʽº 28 ¸¸Å­ Å×Åõ¸®¿Í ¿©¹é ¾È¿¡  ¿©À¯°¡ ÀÖ½À´Ï´Ù.
+    Height = -1  ; "È­¸é ºñÀ² À¯Áö"°¡ °¡Àå ÁÁ¾Æ º¸ÀÔ´Ï´Ù.
+}
+GuiControl,, Pic, *w%width% *h%height% %file%  ; À̹ÌÁö¸¦ ÀûÀçÇÕ´Ï´Ù.
+Gui, Show, xCenter y0 AutoSize, %file%  ; ±×¸² Å©±â¿¡ ¸Â°Ô âÀ» Á¶ÀýÇÕ´Ï´Ù.
+return
+
+GuiClose:
+ExitApp
+

 

+
; ¿¹Á¦: ¸Þ´º ¹Ù°¡ ÀÖ´Â °£´ÜÇÑ ÅؽºÆ® ÆíÁý±â.
+
+; ¸Þ´º ¹Ù¸¦ À§ÇÏ¿© ºÎ-¸Þ´º¸¦ »ý¼ºÇÕ´Ï´Ù:
+Menu, FileMenu, Add, &New, FileNew
+Menu, FileMenu, Add, &Open, FileOpen
+Menu, FileMenu, Add, &Save, FileSave
+Menu, FileMenu, Add, Save &As, FileSaveAs
+Menu, FileMenu, Add  ; Separator line.
+Menu, FileMenu, Add, E&xit, FileExit
+Menu, HelpMenu, Add, &About, HelpAbout
+
+; ºÎ-¸Þ´º¸¦ ¸Þ´º ¹Ù¿¡ ºÎÂøÇØ ¸Þ´º ¹Ù¸¦ »ý¼ºÇÕ´Ï´Ù:
+Menu, MyMenuBar, Add, &File, :FileMenu
+Menu, MyMenuBar, Add, &Help, :HelpMenu
+
+; ¸Þ´º ¹Ù¸¦ â¿¡ ºÎÂøÇÕ´Ï´Ù:
+Gui, Menu, MyMenuBar
+
+; ¸ÞÀÎ ÆíÁý ÄÜÆ®·ÑÀ» »ý¼ºÇÏ°í ±× Ã¢À» º¸¿©ÁÝ´Ï´Ù:
+Gui, +Resize  ; âÀ» Å©±â°¡ º¯°æ°¡´ÉÇÏ°Ô ¸¸µì´Ï´Ù.
+Gui, Add, Edit, vMainEdit WantTab W600 R20
+Gui, Show,, Untitled
+CurrentFileName =  ; ÇöÀç ÆÄÀÏÀÌ ¾øÀ½À» ³ªÅ¸³À´Ï´Ù.
+return
+
+FileNew:
+GuiControl,, MainEdit  ; ÆíÁý ÄÜÆ®µéÀ» ºñ¿ó´Ï´Ù.
+return
+
+FileOpen:
+Gui +OwnDialogs  ; »ç¿ëÀÚ°¡ FileSelectFile ´ëÈ­»óÀÚ¸¦ Æ÷±âÇϵµ·Ï ¸¸µé°í ³ª¼­ ¸ÞÀΠâÀ¸·Î µÇµ¹¾Æ ¿É´Ï´Ù.
+FileSelectFile, SelectedFileName, 3,, Open File, Text Documents (*.txt)
+if SelectedFileName =  ; No file selected.
+    return
+Gosub FileRead
+return
+
+FileRead:  ; È£ÃâÀÚ´Â º¯¼ö SelectedFileNameÀ» ¿ì¸® ´ë½Å¿¡ ¼³Á¤ÇÕ´Ï´Ù.
+FileRead, MainEdit, %SelectedFileName%  ; ÆÄÀÏÀÇ ³»¿ëÀ» º¯¼ö ¾ÈÀ¸·Î ÀÐ¾î µéÀÔ´Ï´Ù.
+if ErrorLevel
+{
+    MsgBox Could not open "%SelectedFileName%".
+    return
+}
+GuiControl,, MainEdit, %MainEdit%  ; ÅؽºÆ®¸¦ ÄÜÆ®·Ñ ¾È¿¡ ³Ö½À´Ï´Ù.
+CurrentFileName = %SelectedFileName%
+Gui, Show,, %CurrentFileName%   ; ÆÄÀÏ À̸§À» Á¦¸ñ ¹Ù¿¡ º¸¿©ÁÝ´Ï´Ù.
+return
+
+FileSave:
+if CurrentFileName =   ; ¾ÆÁ÷ ÆÄÀÏÀ̸§ÀÌ ¼±ÅõÇÁö ¾Ê¾Ò½À´Ï´Ù. ±×·¡¼­ ´ë½Å Save-As¸¦ ¼öÇàÇÕ´Ï´Ù.
+    Goto FileSaveAs
+Gosub SaveCurrentFile
+return
+
+FileSaveAs:
+Gui +OwnDialogs  ; »ç¿ëÀÚ°¡ FileSelectFile ´ëÈ­»óÀÚ¸¦ Æ÷±âÇϵµ·Ï ¸¸µé°í ¸ÞÀΠâÀ¸·Î µ¹¾Æ¿É´Ï´Ù.
+FileSelectFile, SelectedFileName, S16,, Save File, Text Documents (*.txt)
+if SelectedFileName =  ; ÆÄÀÏÀÌ ¼±ÅõÇÁö ¾Ê¾Ò½À´Ï´Ù.
+    return
+CurrentFileName = %SelectedFileName%
+Gosub SaveCurrentFile
+return
+
+SaveCurrentFile:  ; È£ÃâÀÚ´Â CurrentFileNameÀÌ ºñ¾î ÀÖÁö ¾ÊÀ½À» È®ÀÎÇÕ´Ï´Ù.
+IfExist %CurrentFileName%
+{
+    FileDelete %CurrentFileName%
+    if ErrorLevel
+    {
+        MsgBox The attempt to overwrite "%CurrentFileName%" failed.
+        return
+    }
+}
+GuiControlGet, MainEdit  ; ÆíÁý ÄÜÆ®·ÑÀÇ ³»¿ëÀ» ¿­¶÷ÇÕ´Ï´Ù.
+FileAppend, %MainEdit%, %CurrentFileName%  ; ³»¿ëÀ» ÆÄÀÏ¿¡ ÀúÀåÇÕ´Ï´Ù.
+; ¼º°øÇϸé, ÆÄÀÏ À̸§À» Á¦¸ñ ¹Ù¿¡ º¸¿©ÁÝ´Ï´Ù (FileSaveAs¿¡ ÀÇÇÏ¿© È£ÃâµÇ´Â °æ¿ì):
+Gui, Show,, %CurrentFileName%
+return
+
+HelpAbout:
+Gui, About:+owner1  ; ¸ÞÀΠâÀ» (Gui #1) "about box"ÀÇ ¼ÒÀ¯ÀÚ·Î ¸¸µì´Ï´Ù.
+Gui +Disabled  ; ¸ÞÀΠâÀ» ºñÈ°¼ºÈ­ ÇÕ´Ï´Ù.
+Gui, About:Add, Text,, Text for about box.
+Gui, About:Add, Button, Default, OK
+Gui, About:Show
+return
+
+AboutButtonOK:  ; ÀÌ ¼½¼ÇÀº À§ÀÇ "about box"°¡ »ç¿ëÇÕ´Ï´Ù.
+AboutGuiClose:
+AboutGuiEscape:
+Gui, 1:-Disabled  ; ¸ÞÀΠâÀ» ´Ù½Ã È°¼ºÈ­ ÇÕ´Ï´Ù (´ÙÀ½ ´Ü°è·Î ³ª¾Æ°¡±â Àü¿¡ ¹Ýµå½Ã È°¼ºÈ­ ÇØ¾ß ÇÔ).
+Gui Destroy  ; about box¸¦ Æı«ÇÕ´Ï´Ù.
+return
+
+GuiDropFiles:  ; ²ø¾î & ¶³±¸±â¸¦ Áö¿øÇÕ´Ï´Ù.
+Loop, Parse, A_GuiEvent, `n
+{
+    SelectedFileName = %A_LoopField%  ; ù ¹ø° ÆÄÀϸ¸ ¾ò½À´Ï´Ù (¿©·¯ ÆÄÀÏÀÌ ÀÖÀ» °æ¿ì¿¡).
+    break
+}
+Gosub FileRead
+return
+
+GuiSize:
+if ErrorLevel = 1  ; âÀº ÃÖ¼ÒÈ­µÇ¾î ÀÖ½À´Ï´Ù. ¾Æ¹« ÇÊ¿äµµ ¾ø½À´Ï´Ù.
+    return
+; ±×·¸Áö ¾ÊÀ¸¸é, âÀº Å©±â°¡ º¯°æµÇ°Å³ª ÃÖ´ëÈ­µË´Ï´Ù. ÆíÁý ÄÜÆ®·ÑÀÇ Å©±â¸¦À» ±×¿¡ ¸Â°Ô Á¶ÀýÇÕ´Ï´Ù.
+NewWidth := A_GuiWidth - 20
+NewHeight := A_GuiHeight - 20
+GuiControl, Move, MainEdit, W%NewWidth% H%NewHeight%
+return
+
+FileExit:     ; »ç¿ëÀÚ°¡ File ¸Þ´º¿¡¼­ "Exit"À» ¼±ÅÃÇß½À´Ï´Ù.
+GuiClose:  ; »ç¿ëÀÚ°¡ âÀ» ´Ý¾Ò½À´Ï´Ù.
+ExitApp
+ + diff --git a/src/docs/commands/GuiControl.htm b/src/docs/commands/GuiControl.htm new file mode 100644 index 0000000..d3e780d --- /dev/null +++ b/src/docs/commands/GuiControl.htm @@ -0,0 +1,157 @@ + + + + +GuiControl + + + + + + + +

GuiControl

+ +

GUI â ¾ÈÀÇ ÄÜÆ®·ÑÀ» ´Ù¾çÇÏ°Ô º¯°æÇÕ´Ï´Ù.

+ +
GuiControl, Sub-command, ControlID [, Param3]
+

¸Å°³º¯¼ö

+
+ +
Sub-command
+

¾Æ·¡ ¸®½ºÆ® ÂüÁ¶.

+ +
ControlID
+

¸ñÇ¥ ÄÜÆ®·Ñ¿¡ ¿¬°ü º¯¼ö°¡ ÀÖ´Ù¸é, ±× º¯¼öÀÇ À̸§À» ControlID·Î ÁöÁ¤ÇϽʽÿÀ (ÀÌ ¹æ¹ýÀº ´ÙÀ½¿¡ ±â¼úÇÏ´Â ¹æ¹ýº¸´Ù ¿ì¼± ¼øÀ§°¡ ³ô½À´Ï´Ù). ÀÌ·± ÀÌÀ¯ ¶§¹®¿¡, º¸Åë º¯¼ö¸¦ ÄÜÆ®·Ñ¿¡ ÇÒ´çÇÏ´Â °ÍÀÌ °¡Àå ÁÁ½À´Ï´Ù. ³ªÁß¿¡ ±× ÄÜÆ®·Ñ¿¡ GuiControl ¶Ç´Â GuiControlGetÀ» ÅëÇÏ¿© Á¢±ÙÇÕ´Ï´Ù. ±× ÄÜÆ®·ÑÀÌ ((GroupBox³ª Text °°ÀÌ) ÀÔ·Â-°¡´É À¯ÇüÀÌ ¾Æ´ÒÁö¶óµµ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ ±×·¸Áö¸¸, ControlID´Â ClassNN (ÄÜÆ®·ÑÀÇ Å¬·¡½ºÀ̸§°ú ½Çü ¹øÈ£) ¶Ç´Â ÄÜÆ®·ÑÀÇ ÅؽºÆ®ÀÏ ¼ö ÀÖ½À´Ï´Ù. µÑ ¸ðµÎ Window Spy¸¦ ÅëÇÏ¿© ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ÅؽºÆ®¸¦ »ç¿ëÇÒ ¶§ ºÎÇÕ ÇàÀ§´Â SetTitleMatchMode·Î °áÁ¤µË´Ï´Ù. ÁÖÀÇ: ±×¸² ÄÜÆ®·ÑÀÇ ÆÄÀÏ À̸§Àº (±× ÄÜÆ®·ÑÀÌ »ý¼ºµÇ´Â ¼ø°£¿¡ ÁöÁ¤µÈ ´ë·Î) ±×ÀÇ ControlID·Î »ç¿ëÀÌ °¡´ÉÇÕ´Ï´Ù.

+

+ [v1.1.04+]: ControlID´Â ÄÜÆ®·ÑÀÇ HWND°¡ µÉ ¼ö ÀÖ½À´Ï´Ù.

+

+ ÄÜÆ®·ÑÀÌ ±âº» GUI À§¿¡ ÀÖÁö ¾ÊÀ¸¸é, ±× GUIÀÇ À̸§µµ ¿ª½Ã ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù -- ´Ü, [v1.1.20+]¿¡¼­´Â ControlIDÀÌ HWNDÀÔ´Ï´Ù. °¢ HWND°¡ À¯ÀÏÇϱ⠶§¹®ÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº ³íÆòÀ» ÂüÁ¶ÇϽʽÿÀ.

+
+ +
Param3
+

ÀÌ ¸Å°³º¯¼ö´Â »ý·«ÇÕ´Ï´Ù. ´Ü, ¾Æ·¡ÀÇ ºÎ-¸í·É¾î ¸®½ºÆ®¿¡¼­ °íÁöÇÑ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+ +
+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ÁöÁ¤µÈ â/ÄÜÆ®·ÑÀÌ Á¸ÀçÇÏÁö ¾Ê°Å³ª ±âŸ ¾î¶² ¹®Á¦ ¶§¹®¿¡ ¸í·É¾î°¡ ÀÛµ¿ÇÏÁö ¸øÇß´Ù¸é 1ÀÌ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

ºÎ-¸í·É¾î

+

+(Blank): Sub-command¸¦ ºñ¿öµÎ¸é Param3À» ÅëÇÏ¿© »õ·Î¿î ³»¿ëÀ» ÄÜÆ®·Ñ¿¡ ³ÖÀ» ¼ö ÀÖ½À´Ï´Ù. ±¸Ã¼ÀûÀ¸·Î ¸»ÇØ:

+

Picture: Param3Àº ÀûÀçÇÒ »õ À̹ÌÁöÀÇ ÆÄÀÏÀ̸§À̾î¾ß ÇÕ´Ï´Ù (Áö¿øµÇ´Â ÆÄÀÏ À¯ÇüÀº Gui Picture¸¦ ÂüÁ¶ÇϽʽÿÀ). ¹Ù·Î ±× ÆÄÀÏÀ̸§ ¾Õ¿¡ ´ÙÀ½ ¿É¼ÇÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù: + +*wN (³Êºñ N), *hN (³ôÀÌ N), ±×¸®°í *IconN (DLL ¶Ç´Â EXE ÆÄÀÏ ¾È¿¡¼­ ¾ÆÀÌÄÜ ±×·ì ¹øÈ£ N). + +´ÙÀ½ ¿¹Á¦¿¡¼­, µÎ ¹ø° ¾ÆÀÌÄÜ ±×·ìÀÇ ±âº» ¾ÆÀÌÄÜÀÌ ³Êºñ 100 ±×¸®°í ³ôÀÌ ÀÚµ¿À¸·Î "È­¸é ºñÀ² À¯Áö"¸¦ ÅëÇÏ¿© ÀûÀçµË´Ï´Ù: GuiControl,, MyPic, *icon2 *w100 *h-1 C:\My Application.exe. *w0 *h0À» ÁöÁ¤ÇÏ¸é ±× À̹ÌÁöÀÇ ½ÇÁ¦ ³Êºñ¿Í ³ôÀ̸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. *w¿Í *h¸¦ »ý·«Çϸé, À̹ÌÁö´Â ÄÜÆ®·ÑÀÇ ÇöÀç Å©±â¿¡ ¸Â°Ô Á¶ÀýµË´Ï´Ù. ¿©·¯-¾ÆÀÌÄÜ .ICO ÆÄÀϷκÎÅÍ ÀûÀçÇÒ ¶§, ³Êºñ¿Í ³ôÀ̸¦ ÁöÁ¤Çصµ ¾î´À ¾ÆÀÌÄÜÀ» ÀûÀçÇÒÁö °áÁ¤µË´Ï´Ù. ÁÖÀÇ: ¸¶Áö¸· ¿É¼Ç°ú ÆÄÀÏÀ̸§ »çÀÌ¿¡ ÅÇÀ̳ª ½ºÆäÀ̽º´Â Çϳª¸¸ »ç¿ëÇϽʽÿÀ; ³ª¸ÓÁö ½ºÆäÀ̽º¿Í ÅÇÀº ÆÄÀÏÀ̸§ÀÇ ÀϺηΠ°£Áֵ˴ϴÙ.

+

+Text/Button/GroupBox/StatusBar: Param3¿¡ ÄÜÆ®·ÑÀÇ »õ ÅؽºÆ®¸¦ ÁöÁ¤ÇϽʽÿÀ. ÄÜÆ®·ÑÀº ÀÚµ¿À¸·Î È®´ëµÇÁö ¾Ê±â ¶§¹®¿¡, ÄÜÆ®·ÑÀÇ Å©±â¸¦ Å°¿ï ÇÊ¿ä°¡ ÀÖ´Ù¸é GuiControl, Move, MyText, W300¸¦ »ç¿ëÇϽʽÿÀ. StatusBar¿¡ ´ëÇÏ¿©, ÀÌ·¸°Ô Çϸé ÅؽºÆ®¿¡¼­ ¿ÀÁ÷ ¾Õ ºÎºÐ¸¸ ¼³Á¤µË´Ï´Ù (´õ À¯¿¬ÇÏ·Á¸é SB_SetText()¸¦ »ç¿ëÇϽʽÿÀ).

+

+Edit: Param3 ¾È¿¡¼­ ¾Õ¿¡ ij¸®Áö ¸®ÅÏÀÌ ¾ø´Â (`r) ¶óÀÎÇǵå´Â (`n) ÀÚµ¿À¸·Î CR+LF (`r`n)·Î º¯È¯µÇ¾î¼­ ¿Ã¹Ù¸£°Ô Ç¥½ÃµÇµµ·Ï ¸¸µì´Ï´Ù. ±×·¸Áö¸¸, ÀÌ°ÍÀº º¸Åë ½Å°æ¾µ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. Gui Submit¿Í GuiControlGet OutputVar ¸í·É¾î°¡ CR+LF¸¦ LF (`n)·Î ±³Ã¼Çؼ­ ÀÚµ¿À¸·Î ÀÌ º¯È¯À» ȯ¿øÇϱ⠶§¹®ÀÔ´Ï´Ù.

+

+Hotkey: Param3À» ºñ¿ì¸é ÄÜÆ®·ÑÀ» û¼ÒÇÒ ¼ö ÀÖ½À´Ï´Ù. Áï ¼ö½ÄÅ°¿Í Å° À̸§À» ºñ¿ï ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: ^!c, ^Numpad1, +Home. À¯ÀÏÇÏ°Ô Áö¿øµÇ´Â ¼ö½ÄÅ°´Â ^ (Control), ! (Alt), ±×¸®°í + (Shift)ÀÔ´Ï´Ù. »ç¿ë °¡´ÉÇÑ Å° À̸§Àº Å° ¸ñ·ÏÀ» ÂüÁ¶ÇϽʽÿÀ.

+

+Checkbox: Param3°¡ 0ÀÌ¸é ¹öÆ°ÀÇ Ã¼Å©Ç¥½ÄÀ» Áö¿ï ¼ö ÀÖ½À´Ï´Ù. 1À̸é üũ Ç¥½ÄÀ» ÇÕ´Ï´Ù. ¶Ç´Â -1À̸é ȸ»ö üũ°¡ Ç¥½ÄµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, Param3Àº ÄÜÆ®·ÑÀÇ »õ ĸ¼Ç/ÅؽºÆ®·Î °£Áֵ˴ϴÙ. ÀÌ ÇàÀ§¸¦ ¿À¹ö¶óÀ̵å ÇÏ´Â ¹æ¹ýÀº ¾Æ·¡ÀÇ Text¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+Radio: À§ÀÇ Checkbox¿Í µ¿ÀÏÇÕ´Ï´Ù. ±×·¸Áö¸¸, ¶óµð¿À ¹öÆ°ÀÌ Ã¼Å©µÇ¾î (ÄÑÁ®) ÀÖ°í ±×¸®°í ¿©·¯-¶óµð¿À ±×·ìÀÇ ¸â¹ö¶ó¸é, ±× ±×·ì¿¡¼­ ´Ù¸¥ ¶óµð¿À ¹öÆ°Àº ÀÚµ¿À¸·Î üũ Ç¥½ÄÀÌ ÇØÁ¦µË´Ï´Ù. º¯¼ö°¡ Çϳª¸¸ ÀÖ´Â ¶óµð¿À ±×·ì ¾È¿¡¼­ »õ ¹öÆ°¿¡ üũ Ç¥½Ã¸¦ ÇÏ·Á¸é, ControlID¿¡ ¹öÆ°ÀÇ À̸§/ÅؽºÆ®¸¦ ÁöÁ¤ÇϽʽÿÀ. ´Ü, ±× º¯¼ö°¡ Á÷Á¢ÀûÀ¸·Î ¿¬°üµÇ¾î ÀÖ´Â ¹öÆ°ÀÌ ¾Æ´Ï¾î¾ß ÇÕ´Ï´Ù.

+

+DateTime/MonthCal: Param3¿¡ YYYYMMDDHH24MISS Çü½ÄÀ¸·Î ³¯Â¥-½Ã°£ µµÀåÀ» ÁöÁ¤ÇϽʽÿÀ. %A_Now%¸¦ ÁöÁ¤Çϸé ÇöÀç ³¯Â¥¿Í ½Ã°£À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù (¿À´Ã). DateTime ÄÜÆ®·Ñ¿¡ ´ëÇÏ¿©, Param3À» »ý·«Çϸé (¸¸¾à ÀÌ ´É·ÂÀ» °¡Áö°í »ý¼ºµÇ¾úÀ» °æ¿ì) ÄÜÆ®·Ñ¿¡ ³¯Â¥/½Ã°£ÀÌ ¼±ÅõÇÁö ¾ÊÀ» ¼öµµ ÀÖ½À´Ï´Ù. MonthCal ÄÜÆ®·Ñ¿¡ ´ëÇÏ¿©, ÄÜÆ®·ÑÀÌ ´ÙÁß-¼±ÅÃÀÌ µÈ´Ù¸é ¹üÀ§¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

+

UpDown/Slider/Progress: Param3Àº ÄÜÆ®·ÑÀÇ »õ À§Ä¡°¡ µÇ¾î¾ß ÇÕ´Ï´Ù. Param3ÀÇ Ã¹ ¹®ÀÚ°¡ Ç÷¯½º »çÀÎÀ̸é, ±× ¼ýÀÚ´Â ÇöÀç À§Ä¡·ÎºÎÅÍÀÇ ¿ÀÇÁ¼Â(»ó´ë°Å¸®)·Î °£Áֵ˴ϴÙ. ¿¹¸¦ µé¾î, +10À̸é À§Ä¡°¡ 10¸¸Å­ Áõ°¡ÇÏ°í +-10À̸é (Ç÷¯½º ¸¶À̳ʽº 10) À§Ä¡°¡ 10¸¸Å­ °¨¼ÒÇÕ´Ï´Ù. »õ À§Ä¡°¡ ÄÜÆ®·ÑÀÇ ¹üÀ§ ¹ÛÀ̸é, ±× ÄÜÆ®·ÑÀº ÀϹÝÀûÀ¸·Î ±× ±ÙóÀÇ À¯È¿ÇÑ °ªÀÌ ¼³Á¤µË´Ï´Ù.

+

+Tab/DropDownList/ComboBox/ListBox: Param3¿¡´Â ÄÜÆ®·ÑÀÇ ¸®½ºÆ® ³¡¿¡ Ãß°¡µÉ ¿£Æ®¸® ¸®½ºÆ®°¡ ÆÄÀÌÇÁ ¹®ÀÚ·Î ±¸ºÐµÇ¾î µé¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù. ´ë½Å¿¡ ±× ¸®½ºÆ®¸¦ ±³Ã¼ÇÏ·Á¸é (µ¤¾î¾²·Á¸é) ÆÄÀÌÇÁ ¹®ÀÚ¸¦ ù ¹®ÀÚ·Î Æ÷ÇÔ½ÃÅ°½Ê½Ã¿À (¿¹, |Red|Green|Blue). ÄÜÆ®·ÑÀ» ºñ¿ì·Á¸é, ÆÄÀÌÇÁ ¹®ÀÚ¸¸ ÁöÁ¤ÇϽʽÿÀ (|). ¹Ì¸®-¼±ÅÃµÈ ¿£Æ®¸® Áß Çϳª¸¦ ¾òÀ¸·Á¸é, µÎ °³ÀÇ ÆÄÀÌÇÁ¸¦ ±× ´ÙÀ½¿¡ Æ÷ÇÔ½ÃÅ°½Ê½Ã¿À (¿¹, Red|Green||Blue). ÇÊµå »çÀÌÀÇ °¡¸§ÀÚ´Â ÆÄÀÌÇÁ ¸»°í ´Ù¸¥ °ÍÀ¸·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Gui +Delimiter`nÀÌ¸é ¶óÀÎÇǵå·Î ¹Ù²î°í Gui +DelimiterTabÀ̸é ÅÇÀ¸·Î ¹Ù²ò´Ï´Ù (`t).

+

+Tab controls: À§ÀÇ ¹®´Ü¿¡¼­ ±â¼úÇÑ ÇàÀ§ ÀÌ¿Ü¿¡µµ, ÅÇÀÇ ºÎ-ÄÜÆ®·ÑÀº ¿©ÀüÈ÷ ÀÚ½ÅÀÇ ¿ø·¡ÀÇ ÅÇ ¹øÈ£¿Í ¿¬°üµÇ¾î ÀÖ½À´Ï´Ù; Áï, Àý´ë·Î ÅÇÀÇ ½ÇÁ¦ Ç¥½Ã-À̸§°ú ¿¬°üµÇÁö ¾Ê½À´Ï´Ù. ÀÌ·± ÀÌÀ¯·Î, ÅÇÀÇ À̸§À» ¹Ù²Ù°Å³ª À̵¿À» Çصµ ºÎ-ÄÜÆ®·ÑÀÌ ¼ÓÇÑ ÅÇ ¹øÈ£´Â ¹Ù²îÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, ¼¼ °³ÀÇ ÅÇ "Red|Green|Blue"°¡ ÀÖ°í GuiControl,, MyTab, |Red|Blue¸¦ ¼ö´ÜÀ¸·Î µÎ ¹ø° ÅÇÀ» Á¦°ÅÇϸé, ¿ø·¡ Green°ú ¿¬°üµÇ¾î ÀÖ´ø ºÎ-¸í·É¾î´Â ÀÌÁ¦ Blue¿Í ¿¬°üµË´Ï´Ù. ÀÌ·± ÇàÀ§ ¶§¹®¿¡, º¸Åë ³¡¿¡ ÀÖ´Â ÅǸ¸ Á¦°ÅÇØ¾ß ÇÕ´Ï´Ù. ÀÌ·± ½ÄÀ¸·Î Á¦°ÅµÈ ÅǵéÀº ³ªÁß¿¡ ´Ù½Ã Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× ¶§ ¿ø·¡ ÄÜÆ®·Ñ ¼¼Æ®¸¦ ´Ù½Ã ¿ä±¸ÇÒ °ÍÀÔ´Ï´Ù.

+

+ListView ±×¸®°í TreeView: À̰͵éÀº Sub-command°¡ ºñ¾î ÀÖÀ» ¶§ Áö¿øµÇÁö ¾Ê½À´Ï´Ù. ´ë½Å¿¡, ³»Àå ListView ÇÔ¼ö¿Í TreeView ÇÔ¼ö¸¦ »ç¿ëÇϽʽÿÀ.

+


+ GuiControl, Text: À§¿Í µ¿ÀÏÇÏ°Ô ÇàÀ§ÇÕ´Ï´Ù. ´Ü, ´ÙÀ½Àº ¿¹¿ÜÀÔ´Ï´Ù:
+Checkbox/Radio: Param3Àº »õ ÅؽºÆ®/ĸ¼ÇÀ¸·Î °£Áֵ˴ϴÙ. -1, 0, ¶Ç´Â 1ÀÏÁö¶óµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.
+DateTime: Param3Àº ÄÜÆ®·ÑÀÌ º¸¿©ÁÖ´Â »õ ³¯Â¥/½Ã°£ Çü½ÄÀ¸·Î °£Áֵ˴ϴÙ. Param3À» »ý·«Çϸé, ¸ÂÃã Æ÷¸ËÀº ¸ðµÎ Á¦°ÅµÇ°í ªÀº-³¯Â¥ Çü½ÄÀÌ È¿·ÂÀ» ¹ßÈÖÇÕ´Ï´Ù.
+ComboBox: Param3Àº ComboBoxÀÇ Edit ÄÜÆ®·Ñ ¾È¿¡ Á÷Á¢ÀûÀ¸·Î ³ÖÀ» ÅؽºÆ®·Î °£Áֵ˴ϴÙ.

+

+GuiControl, Move: ÄÜÆ®·ÑÀ» À̵¿Çϰųª Å©±â¸¦ ¹Ù²ß´Ï´Ù. ´ÙÀ½ ¿É¼Ç ±âÈ£ Áß Çϳª ÀÌ»óÀ» Param3¿¡ ÁöÁ¤ÇϽʽÿÀ: X (GUI âÀÇ Å¬¶óÀ̾ðÆ® ±¸¿ª¿¡ »ó´ëÀûÀÎ x-ÁÂÇ¥, Ŭ¶óÀ̾ðÆ® ±¸¿ª¿¡¼­ Á¦¸ñ ¹Ù, ¸Þ´º ¹Ù, ±×¸®°í Å׵θ®´Â Á¦¿ÜµË´Ï´Ù); Y (y-ÁÂÇ¥), W (Width), H (Height). (°¢ ¼ýÀÚ´Â ½ÊÀ°Áø¼ö°¡ ¾Æ´Ï¶ó ½ÊÁø¼ö·Î ÁöÁ¤ÇϽʽÿÀ.) ¿¹¸¦ µé¾î:

+
GuiControl, Move, MyEdit, x10 y20 w200 h100
+GuiControl, Move, MyEdit, % "x" VarX+10 "y" VarY+5 "w" VarW*2 "h" VarH*1.5 ; "% " Á¢µÎ ½Éº¼À» ÅëÇÏ¿© Ç¥Çö½ÄÀ» »ç¿ëÇÕ´Ï´Ù.
+

+GuiControl, MoveDraw: (À§ÀÇ)"Move"¿Í °°½À´Ï´Ù. ´Ü, ÄÜÆ®·ÑÀÌ Á¡À¯ÇÏ°í ÀÖ´Â GUI âÀ» ´Ù½Ã Ä¥Çϱ⵵ ÇÕ´Ï´Ù. ÀÌ ¶§¹®¿¡ ¹Ýº¹ÀûÀ¸·Î »¡¸® È£ÃâÇÏ¸é ¿øÇÏÁö ¾Ê´Â ±ôºý°Å¸²ÀÌ ¹ß»ýÇÒ ¼ö ÀÖÁö¸¸, GroupBoxes¿Í °°Àº ÄÜÆ®·ê À¯Çü¿¡ ±×¸² ÀÜ»óÀÌ ³²´Â ¹®Á¦°¡ ÇØ°áµË´Ï´Ù. v1.0.48.04+¿¡¼­, ¸¶Áö¸· ¸Å°³º¯¼ö¸¦ »ý·«Çϸé À̵¿ÇÒ ÇÊ¿ä ¾øÀÌ ´Ù½Ã ±×¸± ¼ö ÀÖ½À´Ï´Ù.

+

+GuiControl, Focus: Å°º¸µå ÃÊÁ¡À» ÄÜÆ®·Ñ¿¡ ¼³Á¤ÇÕ´Ï´Ù. È¿°ú°¡ ÀÖÀ¸·Á¸é, âÀº ÀϹÝÀûÀ¸·Î ÃÖ¼ÒÈ­µÇ¾î Àְųª ¼û¾î ÀÖÀ¸¸é ¾ÈµË´Ï´Ù.

+

+GuiControl, Enable / Disable: ÄÜÆ®·ÑÀ» È°¼ºÈ­ Çϰųª ºÒ´ÉÀ¸·Î ¸¸µì´Ï´Ù (ȸ»ö ó¸®). ÅÇ ÄÜÆ®·Ñ¿¡ ´ëÇÏ¿©, ÀÌ´Â ¶ÇÇÑ ÅÇÀÇ ¸ðµç ÇÏÀ§-ÄÜÆ®·Ñµµ ÄÑ°í ²ü´Ï´Ù. ±×·¸Áö¸¸, GuiControl DisableÀ» ÅëÇÏ¿© ¸í½ÃÀûÀ¸·Î ²¨Áø ÇÏÀ§-ÄÜÆ®·ÑÀº ±× ¼³Á¤À» ±â¾ïÇÕ´Ï´Ù. ±×·¡¼­ ±×ÀÇ Tab ÄÜÆ®·ÑÀÌ ´Ù½Ã È°¼ºÈ­ µÇ¾îµµ ¿©ÀüÈ÷ ºÒ´É »óÅ·ΠÀÖ½À´Ï´Ù. ´Ü¾î Disable ¶Ç´Â Enable ´ÙÀ½¿¡ Áï½Ã ¼±ÅÃÀûÀ¸·Î 0 ¶Ç´Â 1ÀÌ µû¶ó¿Ã ¼ö ÀÖ½À´Ï´Ù. 0ÀÌ¸é ¹Ý´ë·Î µÚÁý¾îÁö´Â È¿°ú°¡ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Enable ±×¸®°í Enable%VarContainingOne%ÀÌ¸é µÑ ¸ðµÎ ÄÜÆ®·ÑÀ» È°¼ºÈ­ ÇÏÁö¸¸, Enable%VarContainingZero%´Â ÄÜÆ®·ÑÀ» ºÒ´ÉÈ­ ½Ãŵ´Ï´Ù.

+

+GuiControl, Hide / Show: ÄÜÆ®·ÑÀ» º¸¿©Áְųª °¨Ãä´Ï´Ù. Tab ÄÜÆ®·Ñ¿¡ ´ëÇÏ¿©, ÀÌ°ÍÀº ¶Ç ÅÇÀÇ ¸ðµç ÇÏÀ§ ÄÜÆ®·Ñµµ º¸¿©Áְųª °¨Ãä´Ï´Ù. ¶Ç ÄÜÆ®·ÑÀÇ ´ÜÃà Å°°¡ (¹ØÁÙ ±âÈ£) ÀÛµ¿ÇÏÁö ¸øÇϵµ·Ï ¸·°í ½Í´Ù¸é, GuiControl Disable¸¦ ÅëÇÏ¿© ±× ÄÜÆ®·ÑÀ» ²ô½Ê½Ã¿À. ´Ü¾î Hide ¶Ç´Â Show´Â ´ÙÀ½¿¡ ¹Ù·Î ¼±ÅÃÀûÀ¸·Î 0 ¶Ç´Â 1ÀÌ µû¶ó¿Ã ¼ö ÀÖ½À´Ï´Ù. 0ÀÌ¸é ¹Ý´ë·Î µÚÁý¾îÁö´Â È¿°ú°¡ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Show ±×¸®°í Show%VarContainingOne%´Â µÑ ´Ù ÄÜÆ®·ÑÀ» º¸¿©ÁÖÁö¸¸, Show%VarContainingZero%´Â ÄÜÆ®·ÑÀ» °¨Ãä´Ï´Ù.

+

+GuiControl, Delete (¾ÆÁ÷ ±¸ÇöµÇÁö ¾ÊÀ½): ÀÌ ºÎ-¸í·É¾î´Â ¾ÆÁ÷ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ¿ìȸåÀ¸·Î¼­, (À§ÀÇ) Hide ¶Ç´Â DisableÀ» »ç¿ëÇϰųª ¶Ç´Â Gui Destroy¸¦ ÅëÇÏ¿© Àüü âÀ» Æı«ÇÏ°í ´Ù½Ã »ý¼ºÇϽʽÿÀ.

+

+GuiControl, Choose, ControlID, N: ListBox, DropDownList, ComboBox, ¶Ç´Â Tab ÄÜÆ®·Ñ ¾ÈÀÇ ¼±ÅÃÀÌ N¹ø ° ¿£Æ®¸®°¡ µÇµµ·Ï ¼³Á¤ÇÕ´Ï´Ù. NÀº 1À̸é ù ¿£Æ®¸®, 2ÀÌ¸é µÎ ¹ø° ¿£Æ®¸®, µîµîÀÌ µÇ¾î¾ß ÇÕ´Ï´Ù. NÀÌ Á¤¼ö°¡ ¾Æ´Ï¸é, ´ë½Å¿¡ ¾Æ·¡¿¡ ±â¼úÇÑ ChooseString ¹æ¹ýÀÌ »ç¿ëµË´Ï´Ù. [v1.1.06+]: NÀÌ 0À̸é, ListBox, DropDownList ¶Ç´Â ComboBoxÀÇ ÇöÀç ¼±ÅÃÀÌ Á¦°ÅµË´Ï´Ù.

+

+Control Choose¿Í ´Ù¸£°Ô, ÀÌ ºÎ-¸í·É¾î´Â ÄÜÆ®·Ñ¿¡ ¿¬°üµÈ ¾î¶² g-labelµµ Ã˹߽ÃÅ°Áö ¾Ê½À´Ï´Ù. ´Ü, N ¾Õ¿¡ ÆÄÀÌÇÁ ¹®ÀÚ°¡ ÀÖ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù (±×·¸´Ù°í Çϵµ¶óµµ, g-labelÀº »õ ¼±ÅÃÀÌ ÀÌÀü ¼±Åðú ´Ù¸¦ °æ¿ì¿¡¸¸ Ã˹ߵ˴ϴÙ. Àû¾îµµ Tab ÄÜÆ®·ÑÀº ±×·¸½À´Ï´Ù.). + +¿¹¸¦ µé¾î: GuiControl, Choose, MyListBox, |3.

+

+¶Ç Á¾·á À̺¥Æ®¸¦ ÀϾµµ·Ï ¸¸µé·Á¸é (ListBoxÀÇ °æ¿ì ´õºí Ŭ¸¯), + +¾Õ¿¡ ÆÄÀÌÇÁ¸¦ Çϳª ´ë½Å¿¡ µÎ °³ Æ÷ÇÔÇϽʽÿÀ (ÀÌ°ÍÀº Tab ÄÜÆ®·Ñ¿¡´Â Áö¿øµÇÁö ¾Ê½À´Ï´Ù).

+

+´ÙÁß-¼±Åà ListBox¿¡¼­ ¸ðµç Ç׸ñÀ» ¼±ÅÃÇϰųª ÇØÁ¦ÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:

+
Gui +LastFound  ; ¾Æ·¡¿¡¼­ WinTitleÀ» ÁöÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.
+PostMessage, 0x185, 1, -1, ListBox1  ; ¸ðµç Ç׸ñÀ» ¼±ÅÃÇÕ´Ï´Ù. 0x185°¡ LB_SETSELÀÔ´Ï´Ù.
+PostMessage, 0x185, 0, -1, ListBox1  ; ¸ðµç Ç׸ñÀ» ¼±Åà ÇØÁ¦ÇÕ´Ï´Ù.
+GuiControl, Choose, ListBox1, 0  ; ¸ðµç Ç׸ñÀ» ¼±Åà ÇØÁ¦ÇÕ´Ï´Ù (v1.1.06+ ÇÊ¿ä).
+

+GuiControl, ChooseString, ControlID, String: ListBox, DropDownList, ComboBox, ¶Ç´Â Tab ÄÜÆ®·Ñ¿¡¼­ ¾ÕÂÊ ºÎºÐÀÌ String¿¡ ºÎÇÕÇÏ´Â ¿£Æ®¸®°¡ ¼±ÅÃÀÌ µÇµµ·Ï ¼³Á¤ÇÕ´Ï´Ù. °Ë»öÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, ÄÜÆ®·Ñ ¾È¿¡ "UNIX Text" Ç׸ñÀÌ ´ã°Ü ÀÖÀ» °æ¿ì, ´Ü¾î unix (¼Ò¹®ÀÚ)¸¸ ÁöÁ¤Çصµ ÃæºÐÈ÷ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ÆÄÀÌÇÁ¿Í ÀÌÁß-ÆÄÀÌÇÁ Á¢µÎ ±âÈ£µµ Áö¿øÇÕ´Ï´Ù (ÀÚ¼¼ÇÑ °ÍÀº À§ÀÇ "Choose"¸¦ ÂüÁ¶ÇϽʽÿÀ).

+

+GuiControl, Font: ÄÜÆ®·ÑÀÇ ±Û²ÃÀ» ¸ð¾ç, Å©±â, »ö ±×¸®°í ÇöÀç È¿°ú°¡ ÀÖ´Â ½ºÅ¸ÀÏ¿¡ ´ëÇÏ¿© º¯°æÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
+Gui, Font, s18 cRed Bold, Verdana  ; ¿øÇÑ´Ù¸é, ÀÌ¿Í °°Àº ÁÙÀ» »ç¿ëÇÏ¿© â¿¡ »õ·Î¿î ±âº» ±Û²ÃÀ» ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+GuiControl, Font, MyEdit  ; À§ÀÇ ±Û²ÃÀ» ÄÜÆ®·Ñ¿¡ Àû¿ëÇÕ´Ï´Ù.
+

+GuiControl, +/-Option1 +/-Option2 ...: ´Ù¾çÇÑ ÄÜÆ®·Ñ-Á¾¼ÓÀû ¶Ç´Â ÀϹÝÀû ¿É¼Ç°ú ½ºÅ¸ÀÏÀ» Ãß°¡Çϰųª Á¦°ÅÇÕ´Ï´Ù.

+

+´ÙÀ½ ¿¹Á¦¿¡¼­, AltSubmit ¿É¼ÇÀº È°¼ºÈ­µÇÁö¸¸ ÄÜÆ®·ÑÀÇ g-labelÀº Á¦°ÅµË´Ï´Ù:

+ +
GuiControl,  +AltSubmit -g, MyListBox
+

+´ÙÀ½ ¿¹Á¦¿¡¼­, OK ¹öÆ°¿¡ »õ ±âº» ¹öÆ°ÀÌ ÁÖ¾îÁý´Ï´Ù:

+ +
GuiControl, +Default, OK
+

+½ºÅ¸ÀÏ ±×¸®°í È®Àå ½ºÅ¸Àϵµ ÀνÄÇÏÁö¸¸, ±× Áß ¾î¶² °ÍÀº ÄÜÆ®·ÑÀÌ »ý¼ºµÈ ÈÄ¿¡ Àû¿ëÇϰųª Á¦°ÅÇÒ ¼ö ¾ø½À´Ï´Ù. ErrorLevelÀº ÁöÁ¤µÈ º¯°æÀÌ Àû¾îµµ Çϳª¶óµµ ¼º°øÇϸé 0ÀÌ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, 1·Î ¼³Á¤µÇ¾î ¾Æ¹« º¯°æµµ Àû¿ëÇÒ ¼ö ¾ø¾úÀ½À» ¾Ë·ÁÁÝ´Ï´Ù. º¯°æÀÌ ¼º°øÀûÀ¸·Î Àû¿ëµÇ¾ú´Ù ÇÒÁö¶óµµ, ÄÜÆ®·ÑÀº ±× º¯°æÀ» ¹«½ÃÇϱâ·Î °áÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

+

[v1.1.20+]: ÄÜÆ®·ÑÀÇ À̺¥Æ®¸¦ ó¸®Çϱâ À§ÇØ ÇÔ¼ö °´Ã¼¸¦ ¼³Á¤ÇÏ·Á¸é, Param3Àº ¹Ýµå½Ã ´ÙÀ½ µÎ ¿¹ Áß Çϳª¿Í °°ÀÌÇϳªÀÇ º¯¼ö ÂüÁ¶°¡ µÇ¾î¾ß ÇÕ´Ï´Ù. ÇÔ¼ö °´Ã¼¸¦ µ¹·ÁÁÖ´Â ´Ù¸¥ Ç¥Çö½ÄÀº ÇöÀç Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.

+ +
GuiControl +g, ControlID, %FuncObj%
+GuiControl +g, ControlID, % FuncObj
+
+ +

³íÆò

+

+±âº» âÀÌ ¾Æ´Ñ âÀ» ó¸®ÇÏ·Á¸é (¾Æ·¡ ÂüÁ¶), ±×ÀÇ À̸§À̳ª ¹øÈ£¸¦ ÁöÁ¤ÇÏ°í ´ÙÀ½¿¡ ½ÖÁ¡ ±×¸®°í ºÎ-¸í·É¾î¸¦ ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ÁöÁ¤ÇϽʽÿÀ:

+ +
GuiControl, MyGui:Show, MyButton
+GuiControl, MyGui:, MyListBox, Item1|Item2
+

+º¯¼ö Çϳª°¡ ¿©·¯ GUI â¿¡ »ç¿ëµÉ ¼ö Àֱ⠶§¹®¿¡ ControlID°¡ ÄÜÆ®·ÑÀÇ ¿¬°ü ¹è¿­À̶ó°í ÇÒÁö¶óµµ ²À ÀÌ·¸°Ô ÇØ¾ß ÇÕ´Ï´Ù. [v1.1.20+]¿¡¼­´Â GUI À̸§À» »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. ControlID°¡ ÄÜÅ©·ÑÀÇ HWNDÀÏÁö¶óµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.

+

+GUI ¾²·¹µå´Â GUI ÇàÀ§ÀÇ °á°ú·Î ±âµ¿µÈ ¾²·¹µå·Î Á¤Àǵ˴ϴÙ. GUI ÇàÀ§·Î´Â GUI âÀÇ ¸Þ´º ¹Ù·ÎºÎÅÍ Ç׸ñÀ» ¼±ÅÃÇÏ´Â °Í, ¶Ç´Â (¹öÆ°À» ´­·¯¼­) ±×ÀÇ g-labelsÁß Çϳª¸¦ Ã˹߽ÃÅ°´Â °ÍÀÌ Æ÷ÇԵ˴ϴÙ.

+

+GUI ¾²·¹µåÀÇ ±âº» â À̸§Àº ±× ¾²·¹µå¸¦ ±âµ¿ÇÑ Ã¢ÀÇ À̸§ÀÔ´Ï´Ù. ºñ-GUI ¾²·¹µå´Â 1À» ±âº»°ªÀ¸·Î »ç¿ëÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+Gui, GuiControlGet, Control

+ +

¿¹Á¦

+ +
GuiControl,, MyListBox, |Red|Green|Blue  ; ÇöÀç ¸®½ºÆ®¸¦ »õ ¸®½ºÆ®·Î ±³Ã¼ÇÕ´Ï´Ù.
+GuiControl,, MyEdit, New text line 1.`nNew text line 2.
+GuiControl,, MyRadio2, 1  ; ÀÌ ¶óµð¿À ¹öÆ°À» ÄÑ°í ÀÌ ±×·ìÀÇ ´Ù¸¥ ¸ðµç °ÍµéÀº ²ü´Ï´Ù.
+GuiControl, Move, OK, x100 y200  ; OK ¹öÆ°À» »õ À§Ä¡·Î À̵¿ÇÕ´Ï´Ù.
+GuiControl, Focus, LastName  ; º¯¼ö³ª ÅؽºÆ®ÀÇ À̸§ÀÌ "LastName".ÀÎ ÄÜÆ®·Ñ¿¡ Å°º¸µå ÃÊÁ¡À» ¼³Á¤ÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/GuiControlGet.htm b/src/docs/commands/GuiControlGet.htm new file mode 100644 index 0000000..63392e0 --- /dev/null +++ b/src/docs/commands/GuiControlGet.htm @@ -0,0 +1,117 @@ + + + + +GuiControlGet + + + + + + + +

GuiControlGet

+ +

GUI â¿¡ ÀÖ´Â ÄÜÆ®·Ñ¿¡ °üÇÏ¿© ´Ù¾çÇÑ À¯ÇüÀÇ Á¤º¸¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+ +
GuiControlGet, OutputVar [, Sub-command, ControlID, Param4]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

°á°ú¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§. ¸í·É¾î¸¦ ¿Ï·áÇÏÁö ¸øÇϸé (¾Æ·¡ ErrorLevel ÂüÁ¶), ÀÌ º¯¼ö´Â ºñ¿öÁý´Ï´Ù.

+ +
Sub-command
+

¾Æ·¡ ¸®½ºÆ® ÂüÁ¶.

+ +
ControlID
+

ºñ¾î ÀÖ°Å³Ä »ý·«µÇ¸é, ¸¶Ä¡ Ãâ·Â º¯¼öÀÇ À̸§ÀÌ ÁöÁ¤µÇ¾î ÀÖ´Â µíÀÌ ÇàÀ§ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, GuiControlGet, MyEditÀº GuiControlGet, MyEdit,, MyEdit°ú °°½À´Ï´Ù.

+

¸ñÇ¥ ÄÜÆ®·Ñ¿¡ ¿¬°ü ¹è¿­ÀÌ ÀÖÀ¸¸é, ±× º¯¼öÀÇ À̸§À» ControlID·Î ÁöÁ¤ÇϽʽÿÀ (ÀÌ ¹æ¹ýÀº ´ÙÀ½ÀÌ ±â¼úÇÑ ¹æ¹ýº¸´Ù ¿ì¼± ¼øÀ§°¡ ³ô½À´Ï´Ù). ÀÌ·± ÀÌÀ¯·Î, º¸Åë ³ªÁß¿¡ GuiControl ¶Ç´Â GuiControlGet¸¦ ÅëÇÏ¿© Á¢±ÙÇÒ ÄÜÆ®·Ñ¿¡ º¯¼ö¸¦ ÇÒ´çÇÏ´Â °ÍÀÌ Á¦ÀÏ ÁÁ½À´Ï´Ù. ½ÉÁö¾î ±× ÄÜÆ®·ÑÀÌ ÀÔ·ÂÀÌ °¡´ÉÇÏÁö ¾Ê´õ¶óµµ »ó°üÀÌ ¾ø½À´Ï´Ù (GroupBox ¶Ç´Â Text).

+

+ ±×·¸Áö ¾ÊÀ¸¸é, ControlID´Â ClassNN (ÄÜÆ®·ÑÀÇ Å¬·¡½ºÀ̸§°ú ½Çü ¹øÈ£) ¶Ç´Â ±× ÄÜÆ®·ÑÀÇ ÅؽºÆ®ÀÏ ¼ö ÀÖ½À´Ï´Ù. µÑ ¸ðµÎ Window Spy¸¦ ÅëÇÏ¿© ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ÅؽºÆ®¸¦ »ç¿ëÇÒ ¶§, ºÎÇÕ ÇàÀ§´Â SetTitleMatchMode¿¡ ÀÇÇÏ¿© °áÁ¤µË´Ï´Ù. ÁÖÀÇ: ±×¸² ÄÜÆ®·ÑÀÇ ÆÄÀÏ À̸§ÀÌ (±× ÄÜÆ®·ÑÀÌ »ý¼ºµÇ´Â ¼ø°£¿¡ ÁöÁ¤µÈ ´ë·Î ) ±×ÀÇ ControlID·Î »ç¿ëµÉ ¼öµµ ÀÖ¾¹´Ï´Ù.

+

[v1.1.04+]: ControlID´Â ÄÜÆ®·ÑÀÇ HWNDÀÏ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ControlID¿Í ¸¶Âù°¡Áö·Î, Sub-command´Â ±âº» âÀÌ ¾Æ´Ò °æ¿ì ±× GUIÀÇ À̸§°ú ¹øÈ£µµ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, GuiControlGet Value, 2:, %Hwnd%.

+ +
Param4
+

ÀÌ ¸Å°³º¯¼ö´Â »ý·«µË´Ï´Ù. ´Ü, ¾Æ·¡ ºÎ-¸í·É¾î ¸®½ºÆ®¿¡¼­ °íÁöÇÑ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+ +
+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ErrorLevelÀº ÁöÁ¤µÈ â/ÄÜÆ®·ÑÀÌ Á¸ÀçÇÏÁö ¾Ê°Å³ª ¶Ç´Â ´Ù¸¥ ¾î¶² ¹®Á¦ ¶§¹®¿¡ ¸í·É¾î°¡ ÀÛµ¿ÇÏÁö ¸øÇϸé 1ÀÌ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

Sub-commands

+

+(Blank): Sub-command¸¦ ºñ¿ö µÎ¸é ÄÜÆ®·ÑÀÇ ³»¿ëÀ» ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸ðµç ÄÜÆ®·Ñ À¯ÇüÀº À̸§ ÀÚü·Î ¼³¸íÀÌ µË´Ï´Ù. ÇÏÁö¸¸ ´ÙÀ½Àº ¿¹¿ÜÀÔ´Ï´Ù:

+

+Picture: ÄÜÆ®·ÑÀÌ »ý¼ºµÉ ¶§ ÁöÁ¤µÇ¾î ÀÖ´Â, ±×¸² ÆÄÀÏÀÇ ¿ø·¡ À̸§À» ¿­¶÷ÇÕ´Ï´Ù. ÀÌ À̸§Àº »õ ±×¸² ÆÄÀÏ À̸§À» ÁöÁ¤ÇÏ´õ¶óµµ ¹Ù²îÁö ¾Ê½À´Ï´Ù.

+

+Edit: ³»¿ëÀ» ¿­¶÷ÇÕ´Ï´Ù. ±×·¯³ª ÅؽºÆ® ¾ÈÀÇ ÁÙ ³Ñ±è ¹®ÀÚ´Â Æò¹üÇÑ ¶óÀÎÇÇµå ¹®ÀÚ(`n)·Î Ç¥ÇöµË´Ï´Ù. ÀüÅëÀûÀÎ CR+LF (`r`n)·Î Ç¥½ÃµÇÁö ¾Ê½À´Ï´Ù. ÀÌ ÁÙ ³¡ ¸ðµå´ÂControlGetText ±×¸®°í ControlSetText¿Í °°Àº ºñ-GUI ¸í·É¾îµéÀÌ »ç¿ëÇÕ´Ï´Ù. .

+

+Hotkey: ÄÜÆ®·Ñ¿¡ ÇÖÅ°°¡ ¾øÀ¸¸é ºó °ªÀÌ ¿­¶÷µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¼ö½ÄÅ°¿Í Å° À̸§À» ¿­¶÷ÇÕ´Ï´Ù. ¿¹Á¦: ^!C, ^Home, +^NumpadHome.

+

+Checkbox/Radio: ÄÜÆ®·Ñ¿¡ üũ°¡ ÀÖÀ¸¸é 1ÀÌ ¿­¶÷µË´Ï´Ù. üũ Ç¥½ÄÀÌ ¾øÀ¸¸é 0ÀÌ ¿­¶÷µË´Ï´Ù. ¶Ç´Â ȸ»ö üũ Ç¥½ÄÀÌ ÀÖÀ¸¸é -1ÀÌ ¿­¶÷µË´Ï´Ù. ´ë½Å¿¡ ÄÜÆ®·ÑÀÇ ÅؽºÆ®/ĸ¼ÇÀ» ¿­¶÷ÇÏ·Á¸é, ´Ü¾î Text¸¦ Param4¿¡ ÁöÁ¤ÇϽʽÿÀ. ÁÖÀÇ: Gui Submit ¸í·É¾î¿Í ´Ù¸£°Ô, ¶óµð¿À ¹öÆ°Àº ¾ðÁ¦³ª °³º°ÀûÀ¸·Î ¿­¶÷µË´Ï´Ù. ¶óµð¿À ±×·ì ¾È¿¡ ÀÖµç ¾øµç »ó°üÀÌ ¾ø½À´Ï´Ù.

+

+UpDown/Slider/Progress: ÄÜÆ®·ÑÀÇ ÇöÀç À§Ä¡¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+

+Tab/DropDownList/ComboBox/ListBox: ÇöÀç ¼±ÅÃµÈ Ç׸ñ/ÅÇÀÇ ÅؽºÆ®¸¦ ¿­¶÷ÇÕ´Ï´Ù (¶Ç´Â ÄÜÆ®·Ñ¿¡ AltSubmit Ư¼ºÀÌ ÀÖ´Ù¸é ±×ÀÇ À§Ä¡¸¦ ¿­¶÷ÇÕ´Ï´Ù). ComboBox¿¡ ´ëÇÏ¿©, ¼±ÅÃµÈ Ç׸ñÀÌ ¾øÀ¸¸é, ÄÜÆ®·ÑÀÇ ÆíÁý Çʵ忡 ÀÖ´Â ÅؽºÆ®°¡ ´ë½Å ¿­¶÷µË´Ï´Ù. ´ÙÁß-¼±Åà ListBox¿¡ ´ëÇÏ¿©, ±× âÀÇ ÇöÀç ±¸ºÐÀÚ¸¦ »ç¿ëÇÏ¿© Ãâ·ÂµË´Ï´Ù.

+

+ListView ±×¸®°í TreeView: À̵éÀº Sub-command°¡ ºñ¾î ÀÖÀ¸¸é Áö¿øµÇÁö ¾Ê½À´Ï´Ù. ´ë½Å¿¡ ³»Àå ListView ÇÔ¼ö¿Í TreeView ÇÔ¼ö¸¦ »ç¿ëÇϽʽÿÀ.

+

+StatusBar: ÅؽºÆ®ÀÇ ¾Õ ºÎºÎ¸¸ ¿­¶÷ÇÕ´Ï´Ù.

+

+ActiveX: ÄÜÆ®·ÑÀÇ ActiveX ÄÞÆ÷³ÍÆ®¿¡ ´ëÇÏ¿© »õ Æ÷Àå °´Ã¼¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+

+ÁÖÀÇ: ÄÜÆ®·Ñ¿¡¼­ ±×ÀÇ ³»¿ëÀÌ ¾Æ´Ï¶ó ÅؽºÆ®/ĸ¼ÇÀ» ¹«Á¶°Ç ¿­¶÷ÇÏ·Á¸é, ´Ü¾î Text¸¦ Param4¿¡ ÁöÁ¤ÇϽʽÿÀ.

+ +

 

+ +

GuiControlGet, OutputVar, Pos: ÄÜÆ®·ÑÀÇ À§Ä¡¿Í Å©±â¸¦ ¿­¶÷ÇÕ´Ï´Ù. À§Ä¡´Â GUI âÀÇ Å¬¶óÀ̾ðÆ® ±¸¿ª¿¡ »ó´ëÀûÀÔ´Ï´Ù. Ŭ¶óÀ̾ðÆ® ±¸¿ª¿¡¼­ Á¦¸ñ ¹Ù, ¸Þ´º ¹Ù, ±×¸®°í Å׵θ®´Â Á¦¿ÜµË´Ï´Ù. Á¤º¸´Â ³× °³ÀÇ º¯¼ö ¾È¿¡ ÀúÀåµË´Ï´Ù. ³× º¯¼öÀÇ À̸§Àº ¸ðµÎ OutputVar·Î ½ÃÀÛÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
GuiControlGet, MyEdit, Pos
+MsgBox The X coordinate is %MyEditX%. The Y coordinate is %MyEditY%. The width is %MyEditW%. The height is %MyEditH%.
+

+ÇÔ¼ö ¾È¿¡¼­, Áö¿ª º¯¼ö ´ë½Å¿¡ Àü¿ª º¯¼ö ÁýÇÕÀ» »ý¼ºÇÏ·Á¸é, ÀÌ ¸í·É¾î¸¦ »ç¿ëÇϱâ Àü¿¡ OutputVar¸¦ Àü¿ª º¯¼ö·Î ¼±¾ðÇϽʽÿÀ (Àü¿ª-°£ÁÖ ÇÔ¼öµé¿¡ ´ëÇÏ¿© ±× ¹Ý´ëµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù). ±×·¸Áö¸¸, ÈçÇÑ È¥¶õÀÇ ±Ù¿ø ¶§¹®¿¡, Á¾Á¾ °¢ º¯¼ö¸¦ ÁýÇÕ ¾È¿¡ ¼±¾ðÇÏ´Â °ÍÀÌ ÇÊ¿äÇϱ⵵ ÇÕ´Ï´Ù.

+ +

 

+

+GuiControlGet, OutputVar, Focus: ÇöÀç Å°º¸µå ÃÊÁ¡ÀÌ ÀÖ´Â ÄÜÆ®·ÑÀÇ ½Äº°ÀÚ¸¦ ¿­¶÷ÇÕ´Ï´Ù (ClassNN). ÁöÁ¤µÈ GUI âÀÌ È°¼ºÈ­µÇ¾î ÀÖ¾î¾ß ±×ÀÇ ÄÜÆ®·ÑµéÀÌ ÃÊÁ¡À» °¡Áú ¼ö Àֱ⠶§¹®¿¡, OutputVar´Â âÀÌ È°¼ºÈ­µÇ¾î ÀÖÁö ¾ÊÀ¸¸é ºñ¿öÁý´Ï´Ù. ¿¹¸¦ µé¾î: GuiControlGet, focused_control, focus.

+

+GuiControlGet, OutputVar, FocusV [v1.0.43.06+]: (À§ÀÇ) Focus¿Í °°½À´Ï´Ù. ´Ü, ÃÊÁ¡ÀÌ ÀÖ´Â ÄÜÆ®·ÑÀÇ ¿¬°ü º¯¼öÀÇ À̸§À» ¿­¶÷ÇÕ´Ï´Ù. ±× ÄÜÆ®µ¹¿¡ ¿¬°ü º¯¼ö°¡ ¾øÀ¸¸é, ÄÜÆ®µ¹ÀÇ ÅؽºÆ®/ĸ¼ÇÀÇ ¾ÕÂÊ 63 ±ÛÀÚ°¡ ´ë½Å ¿­¶÷µË´Ï´Ù (ÀÌ°ÍÀº °¢ ¹öÆ°¿¡ º¯¼ö À̸§À» ºÎ¿©ÇÏ´Â °ÍÀ» ÇÇÇϱâ À§ÇØ ¾ÆÁÖ ÀÚÁÖ »ç¿ëµË´Ï´Ù).

+

+GuiControlGet, OutputVar, Enabled: ÄÜÆ®·ÑÀÌ ÄÑÁ® ÀÖÀ¸¸é 1ÀÌ ¿­¶÷µÇ°í ²¨Á® ÀÖÀ¸¸é 0ÀÌ ¿­¶÷µË´Ï´Ù.

+

+GuiControlGet, OutputVar, Visible: ÄÜÆ®·ÑÀÌ º¸À̸é 1À» ¿­¶÷ÇÏ°í º¸ÀÌÁö ¾ÊÀ¸¸é 0À» ¿­¶÷ÇÕ´Ï´Ù.

+

+GuiControlGet, OutputVar, Hwnd [v1.0.46.16+]: ÄÜÆ®·ÑÀÇ Ã¢ ÇÚµé(HWND)À» ¿­¶÷ÇÕ´Ï´Ù. ÄÜÆ®·ÑÀÇ HWND´Â Á¾Á¾ PostMessage, SendMessage, ±×¸®°í DllCall°ú ÇÔ²² »ç¿ëµË´Ï´Ù. ÁÖÀÇ: HwndOutputVar°¡ º¸Åë HWND¸¦ ¾ò´Â ´õ °£°áÇÑ ¹æ¹ýÀÔ´Ï´Ù.

+

GuiControlGet, OutputVar, Name [v1.1.03+]: ÄÜÆ®·Ñ¿¡ ¿¬°üµÈ º¯¼öÀÇ À̸§À» ¿­¶÷ÇÕ´Ï´Ù. ½ÇÆÐÇϸé OutputVar´Â ºñ¿öÁý´Ï´Ù.

+ +

³íÆò

+

+±âº» âÀÌ ¾Æ´Ñ âÀ» ó¸®ÇÏ·Á¸é (¾Æ·¡ ÂüÁ¶), ±×ÀÇ À̸§ ¶Ç´Â ¹øÈ£ ±×¸®°í ½ÖÁ¡ ´ÙÀ½¿¡ ºÎ-¸í·É¾î¸¦ ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ Æ÷ÇÔ½ÃÅ°½Ê½Ã¿À:

+ +
GuiControlGet, MyEdit, MyGui:
+GuiControlGet, MyEdit, MyGui:Pos
+GuiControlGet, Outputvar, MyGui:Focus
+

+ÀÌ°ÍÀº ControlID°¡ ÄÜÆ®·ÑÀÇ ¿¬°ü º¯¼ö ¶Ç´Â HWNDÀÏÁö¶óµµ ÇʼöÀÔ´Ï´Ù.

+

+GUI ¾²·¹µå´Â GUI ÇàÀ§ÀÇ °á°ú·Î ±âµ¿µÈ ¾²·¹µå·Î Á¤Àǵ˴ϴÙ. GUI ÇàÀ§¿¡´Â GUI âÀÌ ¸Þ´º ¹Ù·ÎºÎÅÍ Ç׸ñÀ» ¼±ÅÂÇÏ´Â °Í, ¶Ç´Â ±×ÀÇ g-labelsÁß Çϳª¸¦ (¹öÆ°À» ´­·¯¼­) ÃË¹ß ½ÃÅ°´Â °ÍÀÌ Æ÷ÇԵ˴ϴÙ.

+

+GUI ¾²·¹µå¿¡ ´ëÇÏ¿© ±âº» â À̸§Àº ±× ¾²·¹µå¸¦ ±âµ¿ÇÑ Ã¢ÀÇ À̸§ÀÔ´Ï´Ù. ºñ-GUI ¾²·¹µå´Â 1À» ±âº»°ªÀ¸·Î »ç¿ëÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+Gui, GuiControl, ControlGet

+ +

¿¹Á¦

+ +
GuiControlGet, MyEdit
+GuiControlGet, CtrlContents,, MyEdit  ; À§¿Í °°½À´Ï´Ù. ´Ü, ±âº»-¾Æ´Ñ Ãâ·Â º¯¼ö¸¦ »ç¿ëÇÕ´Ï´Ù.
+GuiControlGet, MyCheckbox1 ; üũµÇ¾î ÀÖÀ¸¸é 1, üũ°¡ ¾øÀ¸¸é 0À» ¿­¶÷ÇÕ´Ï´Ù.
+GuiControlGet, MyCheckbox1,,, Text  ; üũ¹Ú½ºÀÇ Ä¸¼Ç/ÅؽºÆ®¸¦ ¿­¶÷ÇÕ´Ï´Ù.
+GuiControlGet, Pic, Pos, Static4  ; À§Ä¡/Å©±â´Â PicX, PicY, PicW, ±×¸®°í PicH¿¡ ÀúÀåµË´Ï´Ù.
+ + + diff --git a/src/docs/commands/GuiControls.htm b/src/docs/commands/GuiControls.htm new file mode 100644 index 0000000..2b5688b --- /dev/null +++ b/src/docs/commands/GuiControls.htm @@ -0,0 +1,738 @@ + + + + +GUI Control Types + + + + + + + +

GUI ÄÜÆ®·Ñ À¯Çü

+ +

¸ñÂ÷

+ + +

Text

+

+¼³¸í: Å׵θ® ¾ø´Â ÅؽºÆ®¸¦ Æ÷ÇÔÇÑ ±¸¿ª. »ç¿ëÀÚ°¡ ÆíÁýÇÒ ¼ö ¾ø½À´Ï´Ù. Á¾Á¾ ´Ù¸¥ ÄÜÆ®·Ñ¿¡ ¶óº§ ¿ëµµ·Î »ç¿ëµË´Ï´Ù. ¿¹Á¦:

+
Gui, Add, Text,, À̸§À» ÀÔ·ÂÇϽʽÿÀ:
+

+ÀÌ °æ¿ì, °¡Àå ¸¶Áö¸· ¸Å°³º¯¼ö´Â º¸¿©ÁÙ ¹®ÀÚ¿­ÀÔ´Ï´Ù. ¶óÀÎÇǵå(`n)¸¦ Æ÷ÇÔÇØ »õ ÁÙÀ» ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. °Ô´Ù°¡, °è¼Ó ¼½¼ÇÀ» ¼ö´ÜÀ¸·Î ÇÏ¿© ÇϳªÀÇ ±â´Ù¶õ ÁÙÀ» ¿©·¯ °³ÀÇ ÂªÀº ÁÙ·Î ³ª´­ ¼ö ÀÖ½À´Ï´Ù.

+

+³Êºñ (W)°¡ Options¿¡ ÁöÁ¤µÇ¾úÁö¸¸ Çà (R)À̳ª ³ôÀÌ (H)°¡ ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù¸é, ÅؽºÆ®´Â ÇÊ¿äÇÏ¸é ¿öµå·¦ÀÌ µð°í, ÄÜÆ®·ÑÀÇ ³ôÀÌ´Â ÀÚµ¿À¸·Î ¼³Á¤µË´Ï´Ù.

+

+ÄÜÆ®·ÑÀÇ ³»¿ëÀº Gui ¸í·É¾îÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö¿¡ ÀÖÀ¸¹Ç·Î, ±âÈ£ ±×´ë·ÎÀÇ ½°Ç¥´Â ÇǽŽÃų ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ÀÌ ±ÔÄ¢Àº ´Ù¸¥ ¸ðµç ¸í·É¾îÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö¿¡µµ Àû¿ëµË´Ï´Ù.

+

+gMySubroutine°ú °°Àº g-labelÀº ÄÜÆ®·ÑÀÇ ¿É¼Ç¿¡ ³ª¿­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é »ç¿ëÀÚ°¡ ÅؽºÆ®¸¦ Ŭ¸¯ÇÒ ¶§¸¶´Ù MySubroutine ¶óº§ÀÌ ÀÚµ¿À¸·Î ±âµ¿ÇÕ´Ï´Ù. ÀÌ°ÍÀ» »ç¿ëÇÏ¸é ´ÙÀ½ ¿¹Á¦ ½ºÅ©¸³Æ®¿Í °°ÀÌ Çª¸¥»ö ¹ØÁÙ ÇÏÀÌÆÛ¸µÅ©¸¦ Èä³»³¾ ¼ö ÀÖ½À´Ï´Ù:

+
Gui, Font, underline
+Gui, Add, Text, cBlue gLaunchGoogle, ±¸±ÛÀ» ±âµ¿ÇÏ·Á¸é ¿©±â¸¦ Ŭ¸¯ÇϽʽÿÀ.
+
+; ´ë¾ÈÀ¸·Î, Link ÄÜÆ®·ÑÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:
+Gui, Add, Link,, ±¸±ÛÀ» ±âµ¿ÇÏ·Á¸é <a href="www.google.com">¿©±â¸¦</a> Ŭ¸¯ÇϽʽÿÀ.
+Gui, Font, norm
+Gui, Show
+return
+
+LaunchGoogle:
+Run www.google.com
+return
+

+´õºí Ŭ¸¯Àº A_GuiEvent¿¡ ´Ü¾î DoubleClickÀÌ µé¾î ÀÖ´ÂÁö Á¡°ËÇÏ¿© ŽÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+¾ÚÆÛ¼¾µå (&)¸¦ ÅؽºÆ®¿¡ »ç¿ëÇÏ¸é ¹®ÀÚ Áß Çϳª¿¡ ¹ØÁÙÀ» ±×À» ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
Gui, Add, Text,, &First Name:
+Gui, Add, Edit
+

+À§ÀÇ ¿¹Á¦¿¡¼­, ±âÈ£ F´Â ¹ØÁÙÀÌ ±×¾îÁý´Ï´Ù. »ç¿ëÀÚ´Â ´ÜÃàÅ° Alt+F¸¦ ´­·¯ ÅؽºÆ® ÄÜÆ®·Ñ ´ÙÀ½¿¡ Ãß°¡µÈ ù ¹ø° ÀÔ·Â °¡´É ÄÜÆ®·Ñ¿¡ Å°º¸µå ÃÊÁ¡À» ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. +´ë½Å¿¡ ±âÈ£ ±×´ë·Î ¾ÚÆÛ¼¾µå¸¦ º¸¿©ÁÖ·Á¸é, µÎ °³ÀÇ ¿¬¼Ó ¾ÚÆÛ¼¾µå¸¦ ÁöÁ¤ÇÏ¸é µË´Ï´Ù (&&). ¾ÚÆÛ¼¾µå¸¦ Ư¼ö Ãë±ÞÇÏÁö ¾Êµµ·Ï ÇÏ·Á¸é, ÄÜÆ®·Ñ ¿É¼Ç¿¡ 0x80À» Æ÷ÇÔ½ÃÅ°½Ê½Ã¿À.

+

+Right, Center, ±×¸®°í Hidden°ú °°Àº ´Ù¸¥ ¿É¼ÇÀº ÀÏ¹Ý ¿É¼ÇÀ» ÂüÁ¶ÇϽʽÿÀ. ´ÙÀ½µµ ÂüÁ¶ÇϽʽÿÀ: ÄÜÆ®·ÑÀÇ À§Ä¡ ÁöÁ¤°ú Å©±â Á¶Àý.

+ +

Edit

+

+¼³¸í: »ç¿ëÀÚ°¡ ÀÚÀ¯·Ó°Ô ÅؽºÆ®¸¦ ŸÀÚÇÒ ¼ö ÀÖ´Â ±¸¿ª. ¿¹Á¦:

+
Gui, Add, Edit, r9 vMyEdit, ÆíÁý ÄÜÆ®·Ñ ¾È¿¡ ³ªÅ¸³¯ ÅؽºÆ® (ÀÌ ¸Å°³º¯¼ö¸¦ »ý·«ÇÏ¸é ºó ä·Î ½ÃÀÛÇÔ).
+

+ÀÌ ÄÜÆ®·ÑÀº ¿©·¯ ÁÙÀÇ ÅؽºÆ®°¡ ÀÖÀ¸¸é ¿©·¯ ÁÙ ¸ðµå°¡ µË´Ï´Ù. ¿¹¸¦ µé¾î r3À» Options¿¡ ÁöÁ¤Çϸé 3-Á٠¥¸® ÆíÁý ÄÜÆ®·ÑÀÌ »ý¼ºµË´Ï´Ù. ±âº» Ư¼ºÀº ´ÙÀ½°ú °°½À´Ï´Ù: ¼öÁ÷ ½ºÅ©·Ñ¹Ù, ´Ü¾î Áٳѱâ±â È°¼ºÈ­, ±×¸®°í ¿£ÅÍ Å°¸¦ ÀÔ·ÂÀ¸·Î ¹Þ½À´Ï´Ù. âÀÇ ±âº» ¹öÆ°À» Ã˹߽ÃÅ°Áö ¾Ê½À´Ï´Ù.

+

+¿©·¯-ÁÙ ÆíÁý ÄÜÆ®·Ñ¿¡¼­ »õ ÁÙÀ» ½ÃÀÛÇϸé, ¸¶Áö¸· ¸Å°³º¯¼ö¿¡ (³»¿ë) ¶óÀÎÇǵå Çϳª(`n) ¶Ç´Â ij¸®Áö ¸®ÅÏ°ú ¶óÀÎÇǵåÀÇ Á¶ÇÕ (`r`n)ÀÌ Æ÷ÇԵ˴ϴÙ. µÎ ¹æ¹ý ¸ðµÎ ±âÈ£ ±×´ë·ÎÀÇ `r`n ½ÖÀ» ÆíÁý ÄÜÆ®·Ñ ¾È¿¡ »ý»êÇÕ´Ï´Ù. ±×·¸Áö¸¸, Gui SubmitÀ̳ª GuiControlGet¸¦ ÅëÇÏ¿© ÄÜÆ®·ÑÀÌ º¯¼ö·Î ÀúÀåµÉ ¶§, °¢ `r`nÀº ÅؽºÆ®¿¡¼­ ¾ðÁ¦³ª Æò¹üÇÑ ¶óÀÎÇǵå·Î (`n) º¯È¯µË´Ï´Ù. ±× ÅؽºÆ®¸¦ ÆÄÀÏ¿¡ ¾²·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À: + +FileAppend, %MyEdit%, C:\Saved File.txt.

+

+ÄÜÆ®·Ñ¿¡ ´Ü¾î ³Ñ±â±â°¡ ÄÑÁ® ÀÖÀ¸¸é (¿©·¯-ÁÙ ÆíÁý ÄÜÆ®·Ñ¿¡ ±âº»°ª), »ç¿ëÀÚ°¡ ŸÀÚÇÒ ¶§ ÀϾ´Â Áٳѱâ±â´Â ¶óÀÎÇÇµå ¹®ÀÚ¸¦ »ý»êÇÏÁö ¾Ê½À´Ï´Ù (¿£ÅÍ Å°¸¦ ´­·¯¾ß¸¸ »ðÀԵ˴ϴÙ).

+

+gMySubroutine°ú °°Àº g-labelÀº ÄÜÆ®·ÑÀÇ ¿É¼Ç¿¡ ³ª¿­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é »ç¿ëÀÚ³ª ½ºÅ©¸³Æ®°¡ ÄÜÆ®·ÑÀÇ ³»¿ëÀ» º¯°æÇÒ ¶§¸¶´Ù ÀÚµ¿À¸·Î MySubroutine ¶óº§ÀÌ ±âµ¿ÇÕ´Ï´Ù.

+

+ÆÁ: ÅؽºÆ® ÆÄÀÏÀ» ÆíÁý ÄÜÆ®·Ñ ¾ÈÀ¸·Î ÀûÀçÇÏ·Á¸é FileRead ±×¸®°í GuiControlÀ» »ç¿ëÇϽʽÿÀ. ¿¹¸¦ µé¾î:

+
Gui, Add, Edit, R20 vMyEdit
+FileRead, FileContents, C:\My File.txt
+GuiControl,, MyEdit, %FileContents%
+

Edit Options

+

+¿É¼ÇÀ» Ãß°¡ÇÏ´Â°Ô ¾Æ´Ï¶ó Á¦°ÅÇÏ·Á¸é, ¾Õ¿¡´Ù ¸¶À̳ʽº ±âÈ£¸¦ ¹èÄ¡ÇϽʽÿÀ:

+

+ÇÑ°è: »ç¿ëÀÚÀÇ ÀÔ·ÂÀº ÆíÁý Çʵ忡¼­ º¸ÀÌ´Â ³Êºñ¿¡ Á¦Çѵ˴ϴÙ. ´ë¾ÈÀ¸·Î, ƯÁ¤ °³¼öÀÇ ¹®ÀÚ·Î ÀÔ·ÂÀ» Á¦ÇÑÇÏ·Á¸é, ¹Ù·Î ´ÙÀ½¿¡ ¼ýÀÚ¸¦ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, Limit10´Â 10 ¹®ÀÚ°¡ ³ÑÀ¸¸é ´õ ÀÌ»ó ÀԷµÇÁö ¾Ê½À´Ï´Ù.

+

+Lowercase: »ç¿ëÀÚ°¡ ŸÀÚÇÏ´Â ¹®ÀÚµéÀº ÀÚµ¿À¸·Î ¼Ò¹®ÀÚ·Î º¯È¯µË´Ï´Ù.

+

+Multi: ¿©·¯ ÁÙ ÆíÁýÀ» Çã¿ëÇÕ´Ï´Ù. ±×·¸Áö¸¸, º¸Åë ÁöÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ³ôÀÌ (H), Çà (R), ¶Ç´Â ³»¿ë(Text)¿¡ ±â¹ÝÇÏ¿© ÀÚµ¿À¸·Î ŽÁöÇϱ⠶§¹®ÀÔ´Ï´Ù.

+

+Number: »ç¿ëÀÚ°¡ Çʵ忡 ¼ýÀÚ¸»°í ´Ù¸¥ °ÍÀº ŸÀÚÇÏÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù (±×·¸Áö¸¸, ¿©ÀüÈ÷ ºñ-¼ýÀÚ¸¦ ¾È¿¡ ºÙ¿© ³Ö´Â °ÍÀº °¡´ÉÇÕ´Ï´Ù). ¼ýÀÚ ÀÔ·ÂÀ» °­Á¦ÇÏ´Â ¶Ç´Ù¸¥ ¹æ¹ýÀº UpDown ÄÜÆ®·ÑÀ» Edit ÄÜÆ®·Ñ¿¡ ºÙÀÌ´Â °ÍÀÔ´Ï´Ù.

+

+Password: »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» °¨Ãä´Ï´Ù (¿¹¸¦ µé¾î ¾ÏÈ£ ÀÔ·Â). »ç¿ëÀÚ°¡ ŸÀÚÇÏ´Â ¹®ÀÚ¸¦ ÀºÆó ¹®ÀÚ·Î ±³Ã¼ÇÕ´Ï´Ù. ¸ÂÃã ÀºÆó ¹®ÀÚ°¡ ÇÊ¿äÇÏ´Ù¸é, ±× ¹®ÀÚ¸¦ ´Ü¾î Password ´ÙÀ½¿¡ ¹èÄ¡ÇϽʽÿÀ. ¿¹¸¦ µé¾î, Password*´Â ÀºÆó ¹®ÀÚ¸¦ °ËÀº»ö ¿ø (ºÒ¸´)ÀÌ ¾Æ´Ï¶ó º°Ç¥·Î ¸¸µì´Ï´Ù. ºÒ¸´Àº Windows XP¿¡¼­ ±âº»°ªÀÔ´Ï´Ù. ÁÖÀÇ: ÀÌ ¿É¼ÇÀº ¿©·¯-ÁÙ ÆíÁý ÄÜÆ®·Ñ¿¡ ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù.

+

+ReadOnly: »ç¿ëÀÚ°¡ ÄÜÆ®·ÑÀÇ ³»¿ëÀ» º¯°æÇÏÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù. ±×·¸Áö¸¸, ÅؽºÆ®´Â ¿©ÀüÈ÷ ½ºÅ©·ÑÇÒ ¼ö ÀÖ°í, ¼±ÅÃÇؼ­ Ŭ¸³º¸µå·Î º¹»çÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Tn: ±âÈ£ T¸¦ »ç¿ëÇϸé ÅÇ ½ºÅ¾À» ¿©·¯-ÁÙ ÆíÁý ÄÜÆ®·Ñ ¾È¿¡ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù (ÅÇ ½ºÅ¾Àº ±âÈ£ ±×´ë·ÎÀÇ TAB ¹®ÀÚ°¡ Á¡ÇÁÇØ °¥ ¿­ À§Ä¡¸¦ °áÁ¤Çϱ⠶§¹®¿¡, ÅؽºÆ®¸¦ ¿­ ¾ÈÀ¸·Î Æ÷¸ËÇØ ³Ö´Â µ¥ »ç¿ëµË´Ï´Ù). ±âÈ£ T°¡ ¾øÀ¸¸é, ÅÇ ½ºÅ¾Àº ¸Å 32 ´ëÈ­»óÀÚ ´ÜÀ§¸¶´Ù ¼³Á¤µË´Ï´Ù (°¢ "´ëÈ­»óÀÚ ´ÜÀ§"ÀÇ ³Êºñ´Â ¿î¿µ üÁ¦¿¡ ÀÇÇÏ¿© °áÁ¤µË´Ï´Ù). ±âÈ£ T¸¸ »ç¿ëÇϸé, ÅÇ ½ºÅ¾Àº ÄÜÆ®·Ñ Àüü ³Êºñ¿¡ °ÉÃļ­ ¸Å n ´ÜÀ§¸¶´Ù ¼³Á¤µË´Ï´Ù. ¿¹¸¦ µé¾î, Gui, Add, Edit, vMyEdit r16 t64À̸é ÅÇ »çÀÌÀÇ °Å¸®°¡ µÎ ¹è°¡ µË´Ï´Ù. ¸ÂÃã ÅÇ ½ºÅ¾À» ÁöÁ¤ÇÏ·Á¸é ±âÈ£ T¸¦ ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¿©·¯ ¹ø ÁöÁ¤ÇϽʽÿÀ: Gui, Add, Edit, vMyEdit r16 t8 t16 t32 t64 t128. ÅÇ ½ºÅ¾ 1¹øÀº ¸®½ºÆ®ÀÇ Àý´ë ¿­ À§Ä¡¿¡ ¼³Á¤µÇ°í, ÃÖ´ë 50°³ÀÇ ÅÇ ½ºÅ¾±îÁö ¼³Á¤µË´Ï´Ù. ÁÖÀÇ: ÅÇ ½ºÅ¾Àº ¿©·¯ ÁÙ ÆíÁý Å«Æ®·ÑÀ» ¿ä±¸ÇÕ´Ï´Ù.

+

+Uppercase: »ç¿ëÀÚ°¡ ŸÀÚÇÑ ¹®ÀÚµéÀº ÀÚµ¿À¸·Î ´ë¹®ÀÚ·Î º¯È¯µË´Ï´Ù.

+

+WantCtrlA [v1.0.44+]: WantCtrlA (¸¶À̳ʽº WantCtrlA)¸¦ ÁöÁ¤ÇÏ¸é »ç¿ëÀÚ°¡ Control-A¸¦ ´­·¯¼­ ÆíÁý ÄÜÆ®·Ñ ¾ÈÀÇ ¸ðµç ÅؽºÆ®¸¦ ¼±ÅÃÇÏÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù.

+

+WantReturn: -WantReturn (Áï, ¸¶À̳ʽº »çÀÎ ´ÙÀ½¿¡ WantReturn)À» ÁöÁ¤ÇÏ¸é ¿©·¯-ÁÙ ÆíÁý ÄÜÆ®·ÑÀÌ Enter Å°´­¸²À» ÀâÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù. ±×·¯¸é Enter¸¦ ´­·¯°í âÀÇ ±âº» ¹öÆ°À» ´©¸¥ °Í°ú °°°Ô µË´Ï´Ù. ÀÌ °æ¿ì, »ç¿ëÀÚ´Â Control-Enter¸¦ ´­·¯ »õ ÁÙÀ» ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+WantTab: ÅÇ Å°´­¸²ÀÌ ´ÙÀ½ ÄÜÆ®·Ñ·Î Ç×ÇØÇÏ´Â ´ë½Å¿¡ ÅÇ ¹®ÀÚ¸¦ »ý»êÇÏ°Ô ¸¸µì´Ï´Ù. ÀÌ ¿É¼ÇÀÌ ¾ø´Ù¸é, »ç¿ëÀÚ´Â Control-TabÀ» ´­·¯ ÅÇ ¹®ÀÚ¸¦ ¿©·¯-ÁÙ ÆíÁý ÄÜÆ®·Ñ ¾È¿¡ »ý»êÇÒ ¼ö ÀÖ½À´Ï´Ù. ÁÖÀÇ: WantTabÀº ÇÑ-ÁÙ ÆíÁý ÄÜÆ®·Ñ ¾È¿¡¼­µµ ÀÛµ¿ÇÏÁö¸¸, °¢ ÅÇ ¹®ÀÚ´Â ºó ³×¸ð ¹®ÀÚ·Î º¸¿©Áý´Ï´Ù (¹°·Ð ½ÇÁ¦ ÅÇÀ¸·Î ÀúÀåµÇ¾î ÀÖ½À´Ï´Ù).

+

+-Wrap (¸¶À̳ʽº Wrap): ¿©·¯-ÁÙ ÆíÁý ÄÜÆ®·Ñ¿¡ ´Ü¾î ³Ñ±â±â¸¦ ²ü´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº ÄÜÆ®·ÑÀÌ »ý¼ºµÈ ÈÄ¿¡´Â º¯°æÇÒ ¼ö ¾ø±â ¶§¹®¿¡, ´ÙÀ½ Áß ÇÑ ¹æ¹ýÀ» »ç¿ëÇØ º¯°æÇϽʽÿÀ: 1) â°ú ±×ÀÇ ÄÜÆ®·ÑµéÀ» Æı«(Destroy)ÇÑ ´ÙÀ½ ´Ù½Ã »ý¼ºÇϽʽÿÀ; ¶Ç´Â 2) Çϳª´Â ´Ü¾î ³Ñ±â±â¸¦ È°¼ºÈ­ÇÏ°í ´Ù¸¥ Çϳª´Â ²¨¼­ µÎ °³ÀÇ Áßø ÆíÁý ÄÜÆ®·ÑÀ» »ý¼ºÇϽʽÿÀ. ÇöÀç »ç¿ëµÇÁö ¾Ê´Â ÄÜÆ®·ÑÀ» ºñ¿ì°Å³ª ¶Ç´Â ¼û±æ ¼ö ÀÖ½À´Ï´Ù.

+

+ÀÏ¹Ý ¿É¼Ç¿¡¼­ ´Ù¸¥ ¿É¼Çµé ¿¹¸¦ µé¾î Right, Center, ±×¸®°í HiddenÀ» Âü°íÇϽʽÿÀ. ´ÙÀ½µµ ÂüÁ¶ÇϽʽÿÀ: ÄÜÆ®·ÑÀÇ À§Ä¡¿Í Å©±â º¯°æ.

+

+´õ °­·ÂÇÑ ÆíÁý ÄÜÆ®·Ñ: HiEditÀº ¸ÖƼ ÅÇÀ» Áö¿øÇÏ´Â ´ë¿ë·® ÆÄÀÏ ÆíÁý ÄÜÆ®·ÑÀÔ´Ï´Ù. ¹«·áÀÌ¸ç ¸Þ¸ð¸®¸¦ ¾ÆÁÖ Àû°Ô ¼ÒºñÇÕ´Ï´Ù. ÅؽºÆ®¿Í ÀÌÁø ÆÄÀÏÀ» ¸ðµÎ ÆíÁýÇÒ ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸¿Í µ¥¸ð´Â ´ÙÀ½À» ÂüÁ¶ÇϽʽÿÀ: www.autohotkey.com/forum/topic19141.html

+

UpDown

+

+¼³¸í: »ç¿ëÀÚ°¡ Ŭ¸¯ÇØ °ªÀ» Áõ°¡½ÃÅ°°Å³ª °¨¼Ò ½Ãų ¼ö ÀÖ´Â ÇÑ ½ÖÀÇ È­»ìÇ¥ ¹öÆ°. ±âº»°ªÀ¸·Î UpDown ÄÜÆ®·ÑÀº ÀÚµ¿À¸·Î ÀÌÀü¿¡ Ãß°¡µÈ ÄÜÆ®·Ñ¿¡ ºÎÂøµË´Ï´Ù. ÀÌ ÀÌÀüÀÇ ÄÜÆ®·ÑÀ» UpDownÀÇ Ä£±¸ ÄÜÆ®·ÑÀ̶ó°í ºÎ¸¨´Ï´Ù. °¡Àå ÈçÇÑ ¿¹´Â ½ºÇdzÊ("spinner")Àε¥, UpDown ÄÜÆ®·ÑÀÌ Edit ÄÜÆ®·Ñ¿¡ ºÎÂøµË´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
Gui, Add, Edit
+Gui, Add, UpDown, vMyUpDown Range1-10, 5
+

+À§ÀÇ ¿¹Á¦¾î¼­, Edit ÄÜÆ®·ÑÀº UpDownÀÇ Ä£±¸ ÄÜÆ®·ÑÀÔ´Ï´Ù. »ç¿ëÀÚ°¡ È­»ìÇ¥ ¹öÆ° Áß Çϳª¸¦ ´©¸¦ ¶§¸¶´Ù, Edit ÄÜÆ®·Ñ ¾ÈÀÇ ¼ýÀÚ°¡ ÀÚµ¿À¸·Î ´Ã¾î³ª°Å³ª ÁÙ¾îµì´Ï´Ù.

+

+UpDownÀÇ Ä£±¸ ÄÜÆ®·ÑÀº Text ¶Ç´Â ListBox ÄÜÆ®·Ñµµ °¡´ÉÇÕ´Ï´Ù. ±×·¸Áö¸¸, OS Á¦ÇÑ ¶§¹®¿¡, ÀÌ·± ÄÜÆ®·Ñ ¸»°í ´Ù¸¥ ÄÜÆ®·ÑµéÀº (¿¹¸¦ µé¾î ComboBox¿Í DropDownList) g-¶óº§ ±×¸®°í ±âŸ Ư¡°ú Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù.

+

+UpDownÀÇ ½ÃÀÛ À§Ä¡¸¦ ¸¶Áö¸· ¸Å°³º¯¼ö·Î ÁöÁ¤ÇϽʽÿÀ (»ý·«Çϸé, 0¿¡¼­ ½ÃÀÛÇϰųª Çã¿ë ¹üÀ§ ¾È¿¡¼­ 0¿¡ °¡Àå °¡±î¿î ¼ýÀÚ¿¡¼­ ½ÃÀÛÇÕ´Ï´Ù).

+

+Gui Submit ¸í·É¾î¸¦ »ç¿ëÇϸé, ÄÜÆ®·ÑÀÇ ¿¬°ü Ãâ·Â º¯¼ö°¡ (ÀÖ´Ù¸é) ÇöÀç UpDownÀÇ À§Ä¡¸¦ ¼ýÄ¡·Î ¹Þ½À´Ï´Ù. UpDownÀÌ Edit ÄÜÆ®·Ñ¿¡ ºÎÂøµÇ¾î ÀÖ°í »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» Æò°¡ÇÏ°í ½ÍÁö ¾Ê´Ù¸é, EditÀÇ °ª ¸»°í UpDownÀÇ °ªÀ» »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ¿Ö³ÄÇÏ¸é »ç¿ëÀÚ°¡ Edit ÄÜÆ®·Ñ¿¡ ºñ-¼ýÀÚ¸¦ ÀÔ·ÂÇϰųª ¹üÀ§¸¦ ¹þ¾î³­ °ªÀ» ÀÔ·ÂÇÏ´õ¶óµµ UpDownÀº ¾ðÁ¦³ª ¹üÀ§ ¾È¿¡¼­ ¼ýÀÚ¸¦ »êÃâÇϱ⠶§¹®ÀÔ´Ï´Ù. °ü·ÃÇÏ¿© ¸»ÇÏÀÚ¸é, ¼¼ ÀÚ¸® ÀÌ»óÀÇ ¼ýÀÚ´Â ±âº»°ªÀ¸·Î õÀÇ ÀÚ¸® °¡¸§ÀÚ (¿¹¸¦ µé¾î ½°Ç¥)°¡ ÀÖ½À´Ï´Ù. ÀÌ·± °¡¸§ÀÚµéÀº UpDownÀÇ Ãâ·Â º¯¼ö°¡ ¾Æ´Ï¶ó EditÀÇ Ãâ·Â º¯¼ö¿¡ ÀúÀåµË´Ï´Ù.

+

+UpDown¿¡ g-¶óº§ÀÌ ÀÖ´Ù¸é, »ç¿ëÀÚ°¡ È­»ìÇ¥ ¹öÆ°À» Ŭ¸¯Çϰųª Å°º¸µå¿¡¼­ È­»ìÇ¥ Å°¸¦ ´©¸¦ ¶§¸¶´Ù ±âµ¿µË´Ï´Ù. g-¶óº§ÀÌ ±âµ¿ÇÒ ¶§¸¶´Ù UpDownÀÇ À§Ä¡¸¦ ±×ÀÇ ¿¬°ü Ãâ·Â º¯¼ö¿¡ (ÀÖ´Ù¸é) ÀúÀåÇÕ´Ï´Ù.

+ +

UpDown ¿É¼Ç

+

+Horz: ÄÜÆ®·ÑÀÇ ¹öÆ° ¹æÇâÀ» ÁÂ/¿ì·Î ¸¸µì´Ï´Ù. +±âº»°ªÀ¸·Î, Horz´Â ¶Ç ÄÜÆ®·ÑÀ» ºÐ¸®½Ãŵ´Ï´Ù (Ä£±¸ ¾øÀ½). +ÀÌ ÇàÀ§´Â Horz 16¸¦ ÄÜÆ®·ÑÀÇ ¿É¼Ç¿¡ ÁöÁ¤ÇÏ¸é ¿À¹ö¶óÀ̵åÇÒ ¼ö ¾ø½À´Ï´Ù.

+

+Left: UpDownÀ» ±×ÀÇ Ä£±¸ÀÇ ¿ÞÂÊ¿¡ ¹èÄ¡ÇÕ´Ï´Ù.

+

+Range: ¹üÀ§¸¦ 0°ú 100 ¸»°í ÁöÁ¤ÇÕ´Ï´Ù. ´Ü¾î Range ´ÙÀ½¿¡, ÃÖ¼Ò°ª, ¿·ÁÙ, ±×¸®°í ÃÖ´ë°ªÀ» ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î Range1-1000ÀÌ¸é ¼ýÀÚ¸¦ 1ºÎÅÍ 1000±îÁö ¼±Åõǵµ·Ï Çã¿ëÇÕ´Ï´Ù; Range-50-50ÀÌ¸é ¼ýÀÚ¸¦ -50ºÎÅÍ 50±îÁö Çã¿ëÇÕ´Ï´Ù; ±×¸®°í Range-10--5ÀÌ¸é ¼ýÀÚ¸¦ -10ºÎÅÍ -5±îÁö Çã¿ëÇÕ´Ï´Ù. ÃÖ¼Ò°ª°ú ÃÖ´ë°ªÀ» ¹Ù²Ù¸é È­»ìÇ¥°¡ Á¤»ó ¹æÇâ°ú ¹Ý´ë ¹æÇâÀ¸·Î À̵¿ÇÕ´Ï´Ù. ÃÖ´ë Çã¿ë ¹üÀ§´Â -2147483648-2147483647ÀÔ´Ï´Ù. ¸¶Áö¸·À¸·Î, Ä£±¸ ÄÜÆ®·ÑÀÌ ListBoxÀ̸é, ¹üÀ§´Â ±âº»°ªÀÌ ¼öÁ÷¿¡ 32767-0ÀÌ°í ¼öÆò¿¡ ±× ¹Ý´ëÀÔ´Ï´Ù (Horz).

+

+Wrap: +»ç¿ëÀÚ°¡ ÃÖ¼Ò°ª ¶Ç´Â ÃÖ´ë°ªÀ» ³Ñ¾î¼­·Á°í ½ÃµµÇϸé ÄÜÆ®·ÑÀº ±×ÀÇ ¹üÀ§ ¹Ý´ë ³¡À¸·Î µ¹¸³´Ï´Ù. +WrapÀÌ ¾ø´Ù¸é, ÄÜÆ®·ÑÀº ÃÖ´ë ÃÖ¼Ò °ª¿¡ µµ´ÞÇÏ¸é ¸ØÃä´Ï´Ù

+

+-16 (¸¶À̳ʽº 16): ¼öÁ÷ UpDownÀ» ºÐ¸®½Ãŵ´Ï´Ù; Áï, Ä£±¸°¡ ¾ø½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¶ÇÇÑ ÄÜÆ®·ÑÀÌ Ä£±¸ ÄÜÆ®·ÑÀÇ Å©±â¸¦ µû¸£Áö ¾Ê°í ÁöÁ¤µÈ ³Êºñ¿Í ³ôÀÌ ±×¸®°í À§Ä¡¸¦ ÁؼöÇÕ´Ï´Ù. °Ô´Ù°¡, ºÐ¸®µÈ UpDownÀº ÀڽŸ¸ÀÇ À§Ä¡¸¦ ³»ºÎÀûÀ¸·Î ÃßÀû °ü¸®ÇÕ´Ï´Ù. ÀÌ À§Ä¡´Â Gui Submit¿Í °°Àº ¼ö´ÜÀ» ÅëÇÏ¿© Á¤»óÀûÀ¸·Î ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+0x80: 0x80À» Options¿¡ Æ÷ÇÔÇϸé õÀÇ ÀÚ¸® °¡¸§ÀÚ¸¦ »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °¡¸§ÀÚ´Â º¸Åë Ä£±¸ ÄÜÆ®·ÑÀÇ ¼Ò¼öÁ¡ ¼¼ ÀÚ¸®¸¶´Ù ³ªÅ¸³³´Ï´Ù. ±×·¸Áö¸¸, ÀÌ ½ºÅ¸ÀÏÀº º¸Åë »ç¿ëµÇÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ½ºÅ©¸³Æ®°¡ (±×ÀÇ Ä£±¸ ÄÜÆ®·ÑÀÌ ¾Æ´Ï¶ó) UpDown ÄÜÆ®·Ñ ÀÚü·ÎºÎÅÍ ¿­¶÷ÇÒ ¶§ °¡¸§ÀÚ¸¦ ¼ýÀڷκÎÅÍ Á¦¿ÜÇϱ⠶§¹®ÀÔ´Ï´Ù.

+

+1 ¸»°í ´Ù¸¥ °ª ¸¸Å­ Áõ°¡½ÃÅ°±â: +ÀÌ ½ºÅ©¸³Æ®¿¡¼­, NumEricÀº UpDownÀÇ Áõ°¨°ªÀ» 1 ¾Æ´Ñ °ªÀ¸·Î (¿¹¸¦ µé¾î 5 ¶Ç´Â 0.1) º¯°æÇÏ´Â ¹ýÀ» º¸¿©ÁÝ´Ï´Ù..

+

´ÙÀ½ ÂüÁ¶: ÄÜÆ®·ÑÀÇ À§Ä¡¿Í Å©±â º¯°æ.

+ +

Picture (¶Ç´Â Pic)

+

+¼³Á¤: À̹ÌÁö¸¦ ´ã°í ÀÖ´Â ±¸¿ª (Áö¿øµÇ´Â ÆÄÀÏ À¯ÇüÀº ¸¶Áö¸· µÎ ¹®´ÜÀ» ÂüÁ¶). ¸¶Áö¸· ¸Å°³º¯¼ö´Â À̹ÌÁöÀÇ ÆÄÀÏÀ̸§ÀÔ´Ï´Ù. Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é A_WorkingDir¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ. ¿¹¸¦ µé¾î:

+ +
Gui, Add, Picture, w300 h-1, C:\My Pictures\Company Logo.gif
+

+À̹ÌÁöÀÇ ½ÇÁ¦ ³Êºñ ±×¸®°í/¶Ç´Â ³ôÀ̸¦ À¯ÁöÇÏ·Á¸é, W ±×¸®°í/¶Ç´Â H ¿É¼ÇÀ» »ý·«ÇϽʽÿÀ. ±×·¸Áö ¾ÊÀ¸¸é, À̹ÌÁö´Â ÁöÁ¤µÈ ³Êºñ ±×¸®°í/¶Ç´Â ³ôÀ̵µ Å©±â°¡ Á¶ÀýµË´Ï´Ù (ÀÌ ³Êºñ¿Í ³ôÀÌ´Â ¶ÇÇÑ ¾î´À ¾ÆÀÌÄÜÀ» ´ÙÁß-¾ÆÀÌÄÜ .ICO ÆÄÀϷκÎÅÍ ÀûÀçÇÒÁö °áÁ¤Çϱ⵵ ÇÕ´Ï´Ù). ±×ÀÇ È­¸é ºñÀ²À» À¯ÁöÇÑ Ã¤·Î À̹ÌÁö¸¦ ´Ã¸®°Å³ª ÁÙÀÌ·Á¸é, -1À» Â÷¿ø Áß Çϳª¿¡ ÁöÁ¤ÇÏ°í ¾ç¼ö¸¦ ³ª¸ÓÁö Â÷¿ø¿¡ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, w200 h-1À¸·Î ÁöÁ¤Çϸé À̹ÌÁö¸¦ 200 Çȼ¿ ³Êºñ·Î ¸¸µé°í ³ôÀÌ´Â ÀÚµ¿À¸·Î ¼³Á¤ÇÕ´Ï´Ù. ±×¸²À» ÀûÀçÇÒ ¼ö ¾ø°Å³ª º¸¿©ÁÙ ¼ö ¾øÀ¸¸é (¿¹, ÆÄÀÏÀÌ ¾øÀ¸¸é), ÄÜÆ®·ÑÀº ºó ä·Î ÀÖ°í ±×ÀÇ ³Êºñ¿Í ³ôÀÌ´Â 0À¸·Î ¼³Á¤µË´Ï´Ù.

+

+gMySubroutine°ú °°Àº g-¶óº§À» ÄÜÆ®·ÑÀÇ ¿É¼Ç¿¡ ³ª¿­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô Çϸé MySubroutine ¶óº§ÀÌ »ç¿ëÀÚ°¡ ±×¸²À» Ŭ¸¯ÇÒ ¶§¸¶´Ù ÀÚµ¿À¸·Î ±âµ¿µË´Ï´Ù. ´õºí-Ŭ¸¯Àº A_GuiEvent¿¡ ´Ü¾î DoubleClickÀÌ µé¾î ÀÖ´ÂÁö Á¡°ËÇØ º¸¸é ŽÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+±×¸²À» ´Ù¸¥ ÄÜÆ®·Ñ¿¡ ¹è°æÀ¸·Î »ç¿ëÇÏ·Á¸é, ±×¸²Àº º¸Åë ±×·± ÄÜÆ®·Ñº¸´Ù ¸ÕÀú ÀûÀçÇØ¾ß ÇÕ´Ï´Ù. ±×·¸Áö¸¸, ±×·± ÄÜÆ®·ÑÀÌ ÀÔ·Â °¡´ÉÇÏ°í ±×¸²Àº g-¶óº§ÀÌ ÀÖ´Â °æ¿ì¶ó¸é, ´Ù¸¥ ÄÜÆ®·Ñ µÚ¿¡ ±×¸² ÄÜÆ®·ÑÀ» »ý¼ºÇÏ°í 0x4000000¸¦ (WS_CLIPSIBLINGSÀÓ) ±×¸²ÀÇ Options¿¡ Æ÷ÇÔ½ÃÅ°½Ê½Ã¿À. ÀÌ Æ®¸¯À¸·Î ±×¸²Àº ¶ÇÇÑ Tab ÄÜÆ®·Ñ ¶Ç´Â ListView µÚÀÇ ¹è°æÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù.

+

+¾ÆÀÌÄÜ, Ä¿¼­, ±×¸®°í ¾Ö´Ï¸ÞÀÌ¼Ç Ä¿¼­: ¾ÆÀÌÄÜ°ú Ä¿¼­´Â ´ÙÀ½ À¯ÇüÀÇ ÆÄÀϷκÎÅÍ ÀûÀçÇÒ ¼ö ÀÖ½À´Ï´Ù: ICO, CUR, ANI, EXE, DLL, CPL, SCR, ±×¸®°í ¾ÆÀÌÄÜ ÀÚ¿øÀ» ´ãÀº ±âŸ À¯Çüµé. ÆÄÀÏÀÇ Ã¹ ¹ø° ¾ÆÀÌÄÜÀÌ ¾Æ´Ï¶ó ¾ÆÀÌÄÜ ±×·ìÀ» »ç¿ëÇÏ·Á¸é, Options¿¡ ´Ü¾î Icon°ú À̾ ¹Ù·Î ±× ±×·ì ¹øÈ£¸¦ Æ÷ÇÔ½ÃÅ°½Ê½Ã¿À. ´ÙÀ½ ¿¹Á¦¿¡¼­, µÎ ¹ø° ¾ÆÀÌÄÜ ±×·ìÀ¸·ÎºÎÅÍ ±âº» ¾ÆÀÌÄÜÀÌ »ç¿ëµË´Ï´Ù: Gui, Add, Picture, Icon2, C:\My Application.exe.

+

+´Ü¾î AltSubmitÀ» Options¿¡ ÁöÁ¤Çϸé ÇÁ·Î±×·¥Àº ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®»çÀÇ GDIPlus.dllÀ» ÀÌ¿ëÇÏ¿© À̹ÌÁö¸¦ ÀûÀçÇÕ´Ï´Ù. ÀÌ ¶§¹®¿¡ GIF, BMP, ±×¸®°í ¾ÆÀÌÄÜ À̹ÌÁö¿¡ ´Ù¸¥ ¸ð½ÀÀÌ »ý±æ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Åõ¸í ¹è°æÀ» °¡Áø ICO/GIF¸¦ Åõ¸í ºñÆ®¸ÊÀ¸·Î ÀûÀçÇÏ·Á°í ÇÕ´Ï´Ù. ÀÌ ¶§¹®¿¡ BackgroundTrans ¿É¼ÇÀÌ ÄÑÁý´Ï´Ù. GDIPlus¸¦ »ç¿ëÇÒ ¼ö ¾øÀ¸¸é (´ÙÀ½ ¹®´Ü ÂüÁ¶), AltSubmitÀº ¹«½ÃµÇ°í À̹ÌÁö´Â º¸ÅëÀÇ ¹æ¹ýÀ» »ç¿ëÇÏ¿© ÀûÀçµË´Ï´Ù.

+

+¸ðµç ¿î¿µ üÁ¦´Â GIF, JPG, BMP, ICO, CUR, ±×¸®°í ANI À̹ÌÁö¸¦ Áö¿øÇÕ´Ï´Ù. Windows XP ÀÌÈÄ¿¡, PNG, TIF, Exif, WMF, ±×¸®°í EMF¿Í °°Àº À̹ÌÁö¸¦ Ãß°¡·Î Áö¿øÇÕ´Ï´Ù. XP º¸´Ù ¿À·¡µÈ ¿î¿µ üÁ¦´Â ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®»çÀÇ ¹«·á GDI+ DLLÀ» AutoHotkey.exe Æú´õ ¾ÈÀ¸·Î º¹»çÇØ Áö¿øÇÒ ¼ö ÀÖ½À´Ï´Ù (±×·¯³ª ÄÄÆÄÀÏ ½ºÅ©¸³Æ®ÀÇ °æ¿ì´Â, ±× DLLÀ» ½ºÅ©¸³Æ®ÀÇ Æú´õ ¾ÈÀ¸·Î º¹»çÇØ ³ÖÀ¸½Ê½Ã¿À). ÀÌ DLLÀ»³»·Á ¹ÞÀ¸·Á¸é, www.microsoft.com¿¡ ´ÙÀ½ ¹®±¸¸¦ °Ë»öÇϽʽÿÀ: gdi redistributable

+

+¾Ö´Ï¸ÞÀÌ¼Ç GIF: ¾Ö´Ï¸ÞÀÌ¼Ç GIF ÆÄÀÏÀ» ±×¸² ÄÜÆ®·Ñ¿¡ º¸¿©ÁÙ ¼ö ÀÖÁö¸¸, ½ÇÁ¦·Î´Â ¿òÁ÷ÀÌÁö ¾Ê½À´Ï´Ù. À̸¦ ÇØ°áÇÏ·Á¸é, AniGIF DLLÀ» »ç¿ëÇϽʽÿÀ (ºñ »ó¾÷Àû ¸ñÀûÀ¸·Î´Â ¹«·áÀÔ´Ï´Ù). ´ÙÀ½¿¡ ½Ã¿¬ÇÕ´Ï´Ù: www.autohotkey.com/forum/topic19264.html

+

Button

+

+¼³¸í: ´­·¯¼­ Á¶Ä¡¸¦ Ã˹ßÇÒ ¼ö Àִ Ǫ½Ã¹öÆ°. ÀÌ °æ¿ì, ¸¶Áö¸· ¸Å°³º¯¼ö´Â ¹öÆ°ÀÇ À̸§ÀÔ´Ï´Ù (¹öÆ° ÀÚü¿¡ º¸¿©Áü). À̸§¿¡ ¶óÀÎÇǵå (`n)¸¦ Æ÷ÇÔÇÏ¸é »õ ÁÙÀ» ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
Gui, Add, Button, Default, OK
+

+À§ÀÇ ¿¹Á¦´Â ±×ÀÇ Options¿¡ ´Ü¾î Default¸¦ Æ÷ÇÔ½ÃÄÑ "OK"¸¦ ±âº» ¹öÆ°À¸·Î ¸¸µì´Ï´Ù. ±âº» ¹öÆ°ÀÇ ÇàÀ§´Â »ç¿ëÀÚ°¡ ENTER¸¦ ´©¸¦ ¶§¸¶´Ù ÀÚµ¿À¸·Î Ã˹ߵ˴ϴÙ. ´Ü, Å°º¸µå ÃÊÁ¡ÀÌ ´Ù¸¥ ¹öÆ°¿¡ Àְųª ¿©·¯ÁÙ ÆíÁý ÄÜÆ®·Ñ¿¡ WantReturn ½ºÅ¸ÀÏÀÌ ÀÖ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù. ³ªÁß¿¡ ±âº» ¹öÆ°À» ´Ù¸¥ ¹öÆ°À¸·Î ¹Ù²Ù·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À. Cancel ¹öÆ°À» ±âº» ¹öÆ°À¸·Î ¸¸µì´Ï´Ù: GuiControl, +Default, Cancel. ³ªÁß¿¡ âÀ» ±âº» ¹öÆ°ÀÌ ¾øµµ·Ï º¯°æÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À: GuiControl, -default, OK.

+

+¾ÚÆÛ¼¾µå (&)¸¦ À̸§ ¹öÆ°¿¡ »ç¿ëÇÏ¸é ±×ÀÇ ±ÛÀÚ¿¡ ¹ØÁÙÀ» ±×À» ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
Gui, Add, Button,, &Pause
+

+À§ÀÇ ¿¹Á¦¿¡¼­, ±âÈ£ P¿¡ ¹ØÁÙÀÌ ±×¾îÁý´Ï´Ù. ±×·¯¸é »ç¿ëÀÚ´Â Alt+P¸¦ ´­·¯¼­ ´ÜÃà Å°·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±âÈ£ ±×´ë·Î ¾ÚÆÛ¼¾µå¸¦ º¸¿©ÁÖ·Á¸é, ¾ÚÆÛ¼¾µå µÎ °³¸¦ ¿¬¼ÓÇØ ÁöÁ¤ÇϽʽÿÀ (&&).

+

+¹öÆ°¿¡ ¸í½ÃÀûÀÎ g-¶óº§ÀÌ ¾ø´Ù¸é, ÀÚµ¿ ¶óº§ÀÌ ÀÖ´Ù°í °£Áֵ˴ϴÙ. ¿¹¸¦ µé¾î ù ¹ø° GUI â¿¡ OK ¹öÆ°ÀÌ ÀÖ´Ù¸é, ±× ButtonOK ¶óº§ÀÌ (Á¸ÀçÇÑ´Ù¸é) ±× ¹öÆ°ÀÌ ´­¸± ¶§ ±âµ¿µË´Ï´Ù. ù ¹ø° â ¸»°í ´Ù¸¥ GUI â¿¡ ´ëÇÏ¿©, â ¹øÈ£°¡ ¹öÆ°ÀÇ ÀÚµ¿ ¶óº§ ¾Õ¿¡ Æ÷ÇԵ˴ϴÙ; ¿¹¸¦ µé¾î: 2ButtonOK.

+

+¹öÆ°ÀÇ ÅؽºÆ®¿¡ ½ºÆäÀ̽º³ª &`r`n`t` ÁýÇÕ¿¡ ÀÖ´Â ¹®ÀÚ°¡ µé¾î ÀÖ´Ù¸é, ±×ÀÇ ÀÚµ¿ ¶óº§Àº ±×·± ¹®ÀÚµéÀ» »ý·«ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ¹öÆ° Á¦¸ñÀÌ "&Pause"À̶ó¸é ÀÚµ¿ ¶óº§Àº ButtonPause°¡ µË´Ï´Ù. ºñ½ÁÇÏ°Ô, ¹öÆ° Á¦¸ñ "Save && Exit"À̶ó¸é ÀÚµ¿ ¶óº§Àº ButtonSaveExitÀÌ µË´Ï´Ù (µÎ °³ÀÇ ¿¬¼Ó ¾ÚÆÛ»÷µå´Â ¾ÚÆÛ¼¾µå Çϳª¸¦ ±âÈ£ ±×´ë·Î ³ªÅ¸³»´Â µ¥ »ç¿ëµË´Ï´Ù).

+

+¾Ë·ÁÁø ÇÑ°è: ¾î¶² ¹ÙÅÁÈ­¸é Å׸¶´Â ¹öÆ°ÀÇ ÅؽºÆ®¸¦ Á¦´ë·Î º¸¿©ÁÖÁö ¸øÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± ÀÏÀÌ ÀϾ¸é, -Wrap (¸¶À̳ʽº Wrap)À» ¹öÆ°ÀÇ ¿É¼Ç¿¡ Æ÷ÇÔ½ÃÄÑ º¸½Ê½Ã¿À. ±×·¸Áö¸¸, ÀÌ·¸°Ô ÇÏ¸é ¿©·¯ ÁÙ ÅؽºÆ®´Â Æ÷±âÇØ¾ß ÇÕ´Ï´Ù.

+ +

Checkbox

+

+¼³¸í: üũÇϰųª ÇØÁ¦ÇØ On/Off, Yes/No, µîµîÀ» Ç¥ÇöÇÒ ¼ö ÀÖ´Â ÀÛÀº ¹Ú½º. ¿¹Á¦:

+
Gui, Add, Checkbox, vShipToBillingAddress, û±¸Áö ÁÖ¼Ò·Î ¹è¼ÛÇÒ±î¿ä?
+

+¸¶Áö¸· ¸Å°³º¯¼ö´Â ¹Ú½º ¿·¿¡ º¸¿©Áö´Â ¶óº§ÀÔ´Ï´Ù. ÀüÇüÀûÀ¸·Î ÇÁ·ÒÇÁÆ®·Î »ç¿ëµÇ°Å³ª üũ¹Ú½º°¡ ¹«¾ùÀ» ÇÏ´ÂÁö ¼³¸íÇϴµ¥ »ç¿ëµË´Ï´Ù. ¶óÀÎÇǵ带 (`n) Æ÷ÇÔÇÏ¸é »õ ÁÙÀ» ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. ³Êºñ (W)°¡ Options¿¡ ÁöÁ¤µÇ¾úÁö¸¸ Çà(R)À̳ª ³ôÀÌ(H)°¡ ¾ø´Ù¸é, ÄÜÆ®·ÑÀÇ ÅؽºÆ®´Â ÇÊ¿äÇÏ¸é ´Ü¾î-³Ñ±â±â µË´Ï´Ù. ±×¸®°í ÄÜÆ®·ÑÀÇ ³ôÀÌ´Â ÀÚµ¿À¸·Î ¼³Á¤µË´Ï´Ù. üũ¹Ú½ºÀÇ ¿¬°ü Ãâ·Â º¯¼ö´Â (ÀÖ´Ù¸é) üũµÇ¾î ÀÖÀ» °æ¿ì 1, ÇØÁ¦µÇ¾î ÀÖÀ¸¸é 0, ±×¸®°í ȸ»ö󸮵È/¹Ì°áÁ¤ »óÅÂÀ̸é -1À» ¹Þ½À´Ï´Ù.

+

+´Ü¾î Check3À» Options¿¡ ÁöÁ¤ÇÏ¸é ¼¼ ¹ø° »óŸ¦ ÄÓ ¼ö ÀÖ½À´Ï´Ù. ÀÌ »óŸ¦ ±î¸¸»öÀÌ ¾Æ´Ï¶ó ȸ»ö üũǥ½ÄÀ» º¸¿©ÁÝ´Ï´Ù (ȸ»öÀº üũ¹Ú½º°¡ üũµÇÁöµµ ÇØÁ¦µÇÁöµµ ¾ÊÀº »óŶó´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù). ´Ü¾î Checked ¶Ç´Â CheckedGrayÀ» Options¿¡ ÁöÁ¤Çϸé üũ¹Ú½º¸¦ °¢°¢ °ËÁ¤»ö ¶Ç´Â ȸ»ö üũǥ½ÄÀ» °¡Áö°í ½ÃÀÛÇϵµ·Ï ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ´Ü¾î Checked´Â ´ÙÀ½¿¡ ¼±ÅÃÀûÀ¸·Î 0, 1, ¶Ç´Â -1ÀÌ µû¶ó¿Í ½ÃÀÛ »óŸ¦ ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¸»·Î, Checked ±×¸®°í Checked%VarContainingOne%´Â °°½À´Ï´Ù.

+

+gMySubroutine¿Í °°Àº g-¶óº§À» ÄÜÆ®·ÑÀÇ ¿É¼Ç¿¡ ³ª¿­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é »ç¿ëÀÚ°¡ üũ¹Ú½º¸¦ Ŭ¸¯Çϰųª º¯°æÇÒ ¶§¸¶´Ù MySubroutine ¶óº§ÀÌ Áöµ¿À¸·Î ±âµ¿µË´Ï´Ù.

+

+¾Ë·ÁÁø ÇÑ°è: ¾î¶² ¹ÙÅÁÈ­¸é Å׸¶´Â ¹öÆ°ÀÇ ÅؽºÆ®¸¦ Á¦´ë·Î º¸¿©ÁÖÁö ¸øÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± ÀÏÀÌ ÀϾ¸é, -Wrap (¸¶À̳ʽº Wrap)À» ¹öÆ°ÀÇ ¿É¼Ç¿¡ Æ÷ÇÔ½ÃÄÑ º¸½Ê½Ã¿À. ±×·¸Áö¸¸, ÀÌ·¸°Ô ÇÏ¸é ¿©·¯ ÁÙ ÅؽºÆ®´Â Æ÷±âÇØ¾ß ÇÕ´Ï´Ù.

+ +

Radio

+

+¶óµð¿À ¹öÆ°Àº üũÇϰųª ÇØÁ¦ÇÒ ¼ö ÀÖ´Â ÀÛÀº ºó µ¿±×¶ó¹ÌÀÔ´Ï´Ù. ¿¹¸¦ µé¾î:

+
Gui, Add, Radio, vMyRadioGroup, ¹è¼ÛÇϱâ Àü¿¡ ¸ðµç ¹°Ç°ÀÌ ÁغñµÇ±â¸¦ ±â´Ù¸³´Ï´Ù.
+

+ÀÌ ÄÜÆ®·ÑÀº º¸Åë ¶óµð¿À ±×·ì ÇüÅ·Π³ªÅ¸³³´Ï´Ù. °¢ ±×·ì¸¶´Ù µÎ °³ ÀÌ»óÀÇ ¹öÆ°À» ´ã°í ÀÖ½À´Ï´Ù. »ç¿ëÀÚ°¡ ¶óµð¿À ¹öÆ°À» Ŭ¸¯ÇØ ÄѸé, ±× ±×·ìÀÇ ´Ù¸¥ ¹öÆ°Àº ÀÚµ¿À¸·Î ²¨Áý´Ï´Ù (»ç¿ëÀÚ´Â È­»ìÇ¥ Å°·Î ±×·ì ¾ÈÀ» Ç×ÇØÇÒ ¼ö ÀÖ½À´Ï´Ù). ¿¬À̾î Ãß°¡µÇ´Â ¸ðµç ¶óµð¿À ¹öÆ°¿¡ ¶óµð¿À ±×·ìÀÌ ÀÚµ¿À¸·Î »ý¼ºµË´Ï´Ù. »õ ±×·ìÀ» ½ÃÀÛÇÏ·Á¸é, ´Ü¾î GroupÀ» »õ ±×·ìÀÇ Ã¹ ¹ø° ¹öÆ°ÀÇ Options¿¡ ÁöÁ¤ÇϽʽÿÀ -- ¶Ç´Â ±×³É ºñ-¶óµð¿À ÄÜÆ®·ÑÀ» ±× »çÀÌ¿¡ Ãß°¡ÇϽʽÿÀ. ±×·¯¸é ÀÚµ¿À¸·Î »õ ±×·ìÀÌ ½ÃÀÛÇϱ⠶§¹®ÀÔ´Ï´Ù.

+

+¸¶Áö¸· ¸Å°³º¯¼ö¿¡, ¶óµð¿À ¹öÆ°ÀÇ ¿À¸¥ÂÊ¿¡ º¸¿© ÁÙ ¶óº§À» ÁöÁ¤ÇϽʽÿÀ. ÀÌ ¶óº§Àº ÀüÇüÀûÀ¸·Î ÇÁ·ÒÇÁÆ®³ª ¼³¸íÀ¸·Î »ç¿ëµË´Ï´Ù. ¶óÀÎÇǵ带 Æ÷ÇÔÇϸé (`n) »õ ÁÙÀ» ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. ³Êºñ (W)°¡ Options¿¡ ÁöÁ¤µÇ¾úÁö¸¸ Çà (R)µµ ³ôÀÌ (H)µµ ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù¸é, ÄÜÆ®·ÑÀÇ ÅؽºÆ®´Â ÇÊ¿äÇÏ¸é ´Ü¾î ³Ñ±â±â°¡ µÇ°í, ³ôÀÌ´Â ÀÚµ¿À¸·Î ¼³Á¤µË´Ï´Ù.

+

+´Ü¾î Checked¸¦ Options¿¡ ÁöÁ¤ÇÏ¸é ¹öÆ°À» ÄÑÁø("on") »óÅ·Π½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ü¾î Checked ´ÙÀ½¿¡ ¼±ÅÃÀûÀ¸·Î ¹Ù·Î 0 ¶Ç´Â 1ÀÌ µû¶ó¿Í ½ÃÀÛ »óŸ¦ ¾Ë¸± ¼ö ÀÖ½À´Ï´Ù: 0À̸é ÇØÁ¦µÇ¾î ÀÖ´Â °ÍÀÌ°í 1À̸é üũµÇ¾î ÀÖ´Â °ÍÀÔ´Ï´Ù. ´Ù¸¥ ¸»·Î, Checked ±×¸®°í Checked%VarContainingOne%´Â °°½À´Ï´Ù.

+

+¶óµð¿À ¹öÆ°ÀÇ ¿¬°ü Ãâ·Â º¯¼ö´Â (ÀÖ´Ù¸é) "on"¿¡ ¼ýÀÚ 1À» ¹Þ°í "off"¿¡ 0À» ¹Þ½À´Ï´Ù. ±×·¸Áö¸¸, ¶óµð¿À ±×·ì¿¡ ¹öÆ° Çϳª¸¸ º¯¼ö°¡ÀÖ´Ù¸é ´ë½Å ±× º¯¼ö°¡ ÇöÀç ¼±ÅÃµÈ ¹öÆ°ÀÇ ¹øÈ£¸¦ ¹Þ½À´Ï´Ù: 1À̸é ù ¹ø° ¶óµð¿À ¹öÆ° (¿ø·¡ »ý¼º ¼ø¼­´ë·Î), 2ÀÌ¸é µÎ ¹ø° ¶óµð¿À ¹öÆ° µîµî. ¼±ÅÃµÈ ¹öÆ°ÀÌ ¾øÀ¸¸é, 0ÀÌ ÀúÀåµË´Ï´Ù.

+

+gMySubroutine¿Í °°Àº g-¶óº§À» ÄÜÆ®·ÑÀÇ ¿É¼Ç¿¡ ³ª¿­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é »ç¿ëÀÚ°¡ ¹öÆ°À» ÄÓ ¶§¸¶´Ù MySubroutine ¶óº§ÀÌ ÀÚµ¿À¸·Î ±âµ¿µË´Ï´Ù. ÀÌÀü ¹®´Ü¿¡¼­ ´ÜÀÏ-º¯¼ö ¸ðµå¿Í ´Ù¸£°Ô, g-¶óº§Àº ¶óµð¿À ±×·ì¿¡¼­ °¢ ¹öÆ°¸¶´Ù ÁöÁ¤ÇØ¾ß ±âµ¿µË´Ï´Ù. ÀÌ·¸°Ô Çϸé À¯¿¬ÇÏ°Ô ¾î¶² ¹öÆ°ÀÇ Å¬¸¯Àº ¹«½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¶Áö¸·À¸·Î, ´õºíŬ¸¯À» ŽÁöÇÏ·Á¸é A_GuiEvent¿¡ ´Ü¾î DoubleClickÀÌ ´ã°Ü ÀÖ´ÂÁö Á¡°ËÇÏ¸é µË´Ï´Ù.

+

+¾Ë·ÁÁø ÇÑ°è: ¾î¶² ¹ÙÅÁÈ­¸é Å׸¶´Â ¹öÆ°ÀÇ ÅؽºÆ®¸¦ Á¦´ë·Î º¸¿©ÁÖÁö ¸øÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± ÀÏÀÌ ÀϾ¸é, -Wrap (¸¶À̳ʽº Wrap)À» ¹öÆ°ÀÇ ¿É¼Ç¿¡ Æ÷ÇÔ½ÃÄÑ º¸½Ê½Ã¿À. ±×·¸Áö¸¸, ÀÌ·¸°Ô ÇÏ¸é ¿©·¯ ÁÙ ÅؽºÆ®´Â Æ÷±âÇØ¾ß ÇÕ´Ï´Ù.

+ + +

+¼³¸í: ÀÛÀº ¹öÆ°À» ´©¸£¸é ÀÀ´äÇÏ¿© º¸¿©ÁÖ´Â ¼±Åà ¸®½ºÆ®. ÀÌ °æ¿ì ¸¶Áö¸· ¸Å°³º¯¼ö´Â ÆÄÀÌÇÁ·Î ±¸ºÐµÈ ¼±Åà ¸®½ºÆ®ÀÔ´Ï´Ù. ¿¹, Choice1|Choice2|Choice3. ¿¹Á¦:

+ +
Gui, Add, DropDownList, vColorChoice, Black|White|Red|Green|Blue
+

+âÀÌ Ã³À½ ³ªÅ¸³¯ ¶§ Ç׸ñ Áß¿¡ Çϳª¸¦ ¹Ì¸® ¼±ÅÃÇÏ·Á¸é, µÎ °³ÀÇ ÆÄÀÌÇÁ ¹®ÀÚ¸¦ ±× ´ÙÀ½¿¡ ºÙÀ̽ʽÿÀ (¿¹, Red|Green||Blue). ´Ù¸¥ ¹æ¹ýÀ¸·Î, Options¿¡ ´Ü¾î Choose ¿Í ¹Ù·Î À̾ ¹Ì¸®-¼±ÅÃÇÒ ¹øÈ£¸¦ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, Choose5ÀÌ¸é ´Ù¼¸ ¹ø° Ç׸ñÀ» ¹Ì¸® ¼±ÅÃÇÕ´Ï´Ù (´Ù¸¥ ¿É¼Ç°ú ¸¶Âù°¡Áö·Î, Choose%Var%¿Í °°Àº º¯¼öµµ °¡´ÉÇÕ´Ï´Ù). ÄÜÆ®·ÑÀÌ »ý¼ºµÈ ÀÌÈÄ¿¡ ¼±ÅÃÀ» º¯°æÇϰųª ¶Ç´Â ¸®½ºÆ®·ÎºÎÅÍ Ç׸ñÀ» Á¦°ÅÇϰųª/Ãß°¡ÇÏ·Á¸é, GuiControl¸¦ »ç¿ëÇϽʽÿÀ.

+

+´Ü¾î Uppercase ¶Ç´Â Lowercase¸¦ Options¿¡ ÁöÁ¤Çϸé ÀÚµ¿À¸·Î ¸®½ºÆ® ¾ÈÀÇ ¸ðµç Ç׸ñµéÀ» ´ë¹®ÀÚ ¶Ç´Â ¼Ò¹®ÀÚ·Î º¯È¯ÇÕ´Ï´Ù. ´Ü¾î Sort¸¦ ÁöÁ¤ÇÏ¸é ¸®½ºÆ®ÀÇ ³»¿ëÀ» ÀÚµ¿À¸·Î ¾ËÆĺª ¼ø¼­·Î Á¤·ÄÇÕ´Ï´Ù (ÀÌ°ÍÀº ³ªÁß¿¡ GuiControlÀ» ÅëÇÏ¿© Ãß°¡µÇ´Â Ç׸ñµé¿¡µµ ¸ðµÎ ¿µÇâÀ» ¹ÌĨ´Ï´Ù). Sort ¿É¼ÇÀº ¶ÇÇÑ ¸®½ºÆ®°¡ µå·Ó ´Ù¿îµÉ ¶§¸¶´Ù Á¡Áø °Ë»öÀ» È°¼ºÈ­ ÇÕ´Ï´Ù; ´öºÐ¿¡ ±×ÀÇ À̸§ Áß ¾Õ ¸î ±ÛÀÚ¸¸ ŸÀÚÇصµ Ç׸ñÀ» ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Gui Submit ¸í·É¾î°¡ »ç¿ëµÉ ¶§, ±× ÄÜƲ·ÎÀÇ ¿¬°ü Ãâ·Â º¯¼ö°¡ (ÀÖ´Ù¸é) ÇöÀç ¼±ÅÃµÈ Ç׸ñÀÇ ÅؽºÆ®¸¦ ¹Þ½À´Ï´Ù. ±×·¸Áö¸¸, ÄÜÆ®·Ñ¿¡ AltSubmit Ư¼ºÀÌ ÀÖ´Ù¸é, ±× Ãâ·Â º¯¼ö´Â ´ë½Å¿¡ ±× Ç׸ñÀÇ À§Ä¡ ¹øÈ£¸¦ ¹Þ½À´Ï´Ù (ù Ç׸ñÀº 1ÀÌ°í, µÎ ¹ø° Ç׸ñÀº 2ÀÔ´Ï´Ù. µîµî).

+

+gMySubroutine¿Í °°Àº g-¶óº§Àº ÄÜÆ®·ÑÀÇ ¿É¼Ç¿¡ ³ª¿­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é »ç¿ëÀÚ°¡ »õ Ç׸ñÀ» ¼±ÅÃÇÒ ¶§¸¶´Ù ÀÚµ¿À¸·Î MySubroutine ¶óº§ÀÌ ±âµ¿µË´Ï´Ù.

+

+R ¶Ç´Â H ¿É¼ÇÀ» »ç¿ëÇϸé Æ˾÷ ¸®½ºÆ®ÀÇ ³ôÀ̸¦ Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î R5¸¦ ÁöÁ¤ÇÏ¸é ¸®½ºÆ®°¡ 5 Çà ³ôÀÌ°¡ µË´Ï´Ù. ¹Ý¸é¿¡ H400ÀÌ¸é ¼±Åà Çʵå¿Í ¸®½ºÆ®ÀÇ ÃÑ ³ôÀÌ°¡ 400 Çȼ¿·Î ¼³Á¤µË´Ï´Ù. R°ú H¸¦ ¸ðµÎ »ý·«Çϸé, ¸®½ºÆ®´Â ÀÚµ¿À¸·Î È®´ëµÇ¾î »ç¿ëÀÚÀÇ ¹ÙÅÁÈ­¸é ³ôÀ̸¦ È°¿ëÇÕ´Ï´Ù (±×·¸Áö¸¸, Windows XPº¸´Ù ¿À·¡µÈ ¿î¿µ üÁ¦´Â ±âº»À¸·Î 3 ÇàÀ» º¸¿©ÁÝ´Ï´Ù).

+

+¼±Åà Çʵ峪 ¸®½ºÆ® Ç׸ñÀÇ ³ôÀ̸¦ ¼³Á¤ÇÏ·Á¸é, ¾Æ·¡ ¿¹Á¦¿Í °°ÀÌ CB_SETITEMHEIGHT ¸Þ½ÃÁö¸¦ »ç¿ëÇϽʽÿÀ:

+ +
Gui Add, DDL, vcbx w200 hwndhcbx, One||Two
+; CB_SETITEMHEIGHT = 0x153
+PostMessage, 0x153, -1, 50,, ahk_id %hcbx%  ; ¼±Åà ÇʵåÀÇ ³ôÀ̸¦ ¼³Á¤ÇÕ´Ï´Ù.
+PostMessage, 0x153,  0, 50,, ahk_id %hcbx%  ; ¸®½ºÆ® Ç׸ñÀÇ ³ôÀ̸¦ ¼³Á¤ÇÕ´Ï´Ù.
+Gui Show, h70, Test
+

+ÇÊµå »çÀÌÀÇ °¡¸§ÀÚ´Â ÆÄÀÌÇÁ (|) ¸»°í ´Ù¸¥ °ÍÀ¸·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î Gui +Delimiter`nÀÌ¸é ¶óÀÎÇǵå·Î ¹Ù²î°í Gui +DelimiterTabÀ̸é ÅÇ ¹®ÀÚ·Î ¹Ù²ò´Ï´Ù (`t).

+ +

ComboBox

+

+¼³¸í: DropDownList¿Í µ¿ÀÏÇÏÁö¸¸ ¸®½ºÆ®·ÎºÎÅÍ Ç׸ñÀ» °í¸£´Â ´ë½Å¿¡ ÀÚÀ¯·Î¿î Çü½ÄÀÇ ÅؽºÆ® ÀÔ·ÂÀ» Çã¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
Gui, Add, ComboBox, vColorChoice, Red|Green|Blue|Black|White
+

+À§ÀÇ DropDownList¿Í °°Àº ¿É¼ÇÀ» ¸ðµÎ Çã¿ëÇÏ´Â ¿Ü¿¡µµ, ´Ü¾î LimitÀ» Options¿¡ Æ÷ÇÔÇÏ¸é »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ComboBoxÀÇ ÆíÁý ÇʵåÀÇ °¡½Ã ³Êºñ·Î Á¦ÇÑÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ, ´Ü¾î SimpleÀ» ÁöÁ¤Çϸé ComboBox¸¦ ¸¶Ä¡ ±× ¾Æ·¡¿¡ ListBox¸¦ °¡Áø ÆíÁý Çʵåó·³ ÇàÀ§Çϵµ·Ï ¸¸µé ¼ö ÀÖ½À´Ï´Ù.

+

+Gui Submit ¸í·É¾î¸¦ »ç¿ëÇϸé, ±× ÄÜÆ®·ÑÀÇ ¿¬°ü Ãâ·Â º¯¼ö°¡ (ÀÖ´Ù¸é) ÇöÀç ¼±ÅÃµÈ Ç׸ñÀÇ ÅؽºÆ®¸¦ ¹Þ½À´Ï´Ù. ±×·¸Áö¸¸, ÄÜÆ®·Ñ¿¡ AltSubmit Ư¼ºÀÌ ÀÖ´Ù¸é, ±× Ãâ·Â º¯¼ö´Â ´ë½Å¿¡ Ç׸ñÀÇ À§Ä¡ ¹øÈ£¸¦ ¹Þ½À´Ï´Ù (ù Ç׸ñÀº 1ÀÌ°í, µÎ ¹ø° Ç׸ñÀº 2ÀÌ¸ç µîµî.). ¾î´À °æ¿ìµç, ¼±ÅÃµÈ Ç׸ñÀÌ ¾ø´Ù¸é, ±× Ãâ·Â º¯¼ö´Â ComboBoxÀÇ ÆíÁý ÇÊµå ³»¿ëÀÌ ¼³Á¤µË´Ï´Ù.

+

+gMySubroutine °°Àº g-¶óº§À» ÄÜÆ®·ÑÀÇ ¿É¼Ç¿¡ ³ª¿­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é »ç¿ëÀÚ°¡ »õ Ç׸ñÀ» ¼±ÅÃÇÒ ¶§¸¶´Ù MySubroutine ¶óº§ÀÌ ÀÚµ¿À¸·Î ±âµ¿µË´Ï´Ù.

+ +

ListBox

+

+¼³¸í: ¼±ÅÃÀÌ °¡´ÉÇÑ ¸®½ºÆ®¸¦ ´ã°í ÀÖ´Â »ó´ëÀûÀ¸·Î ³ôÀº ¹Ú½º. ÀÌ °æ¿ì, ¸¶Áö¸· ¸Å°³º¯¼ö´Â ÆÄÀÌÇÁ ¹®ÀÚ·Î ±¸ºÐµÈ ¼±Åà ¸®½ºÆ®ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î Choice1|Choice2|Choice3. ¿¹Á¦:

+ +
Gui, Add, ListBox, vColorChoice, Red|Green|Blue|Black|White
+

+âÀÌ Ã³À½ ³ªÅ¸³¯ ¶§ ¹Ì¸® ¸®½ºÆ®ÀÇ Ç׸ñÀ» ¼±ÅÃÇØ µÎ·Á¸é, µÎ °³ÀÇ ÆÄÀÌÇÁ ¹®ÀÚ¸¦ °¢°¢ÀÇ Ç׸ñ µÚ¿¡ Æ÷ÇÔ½ÃÅ°½Ê½Ã¿À. (¿©·¯ Ç׸ñÀ» ¹Ì¸® ¼±ÅÃÇÏ·Á¸é Multi ¿É¼ÇÀÌ ÇÊ¿äÇÕ´Ï´Ù). ´ë¾ÈÀ¸·Î, Options¿¡ ´Ü¾îChoose¿Í ¹Ù·Î À̾ ÇϳªÀÇ Ç׸ñ ¹øÈ£¸¦ ÁöÁ¤ÇÏ¸é ¹Ì¸® ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Choose5ÀÌ¸é ´Ù¼¸ ¹ø° Ç׸ñÀÌ ¹Ì¸® ¼±Åõ˴ϴÙ. ÄÜÆ®·ÑÀÌ »ý¼ºµÈ µÚ¿¡ ¸®½ºÆ®·ÎºÎÅÍ ¿£Æ®¸®¸¦ Ãß°¡/Á¦°ÅÇϰųª ¼±ÅÃÀ» º¯°æÇÏ·Á¸é, GuiControlÀ» »ç¿ëÇϽʽÿÀ.

+

+Gui Submit ¸í·É¾î¸¦ »ç¿ëÇÒ ¶§, ÄÜÆ®·ÑÀÇ ¿¬°ü Ãâ·Â º¯¼ö°¡ (ÀÖ´Ù¸é) ÇöÀç ¼±ÅÃµÈ Ç׸ñÀÇ ÅؽºÆ®¸¦ ¹Þ½À´Ï´Ù. ±×·¸Áö¸¸, ÄÜÆ®·Ñ¿¡ AltSubmit Ư¼ºÀÌ ÀÖ´Ù¸é, ±× Ãâ·Â º¯¼ö´Â ´ë½Å¿¡ ±× Ç׸ñÀÇ À§Ä¡ ¹øÈ£¸¦ ¹Þ½À´Ï´Ù (ù ¹ø° Ç׸ñÀº 1, µÎ ¹ø°´Â 2 µîµî).

+

+gMySubroutine°ú °°Àº g-¶óº§Àº ÄÜÆ®·ÑÀÇ ¿É¼Ç¿¡ ³ª¿­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é »ç¿ëÀÚ°¡ »õ Ç׸ñÀ» ¼±ÅÃÇÒ ¶§¸¶´Ù MySubroutine ¶óº§ÀÌ ÀÚµ¿À¸·Î ±âµ¿µË´Ï´Ù. »ç¿ëÀÚ°¡ Ç׸ñÀ» ´õºí Ŭ¸¯Çϸé, ³»Àå º¯¼ö A_GuiEvent¿¡ NormalÀÌ ¾Æ´Ï¶ó ¹®ÀÚ¿­ DoubleClickÀÌ ´ã±é´Ï´Ù. ¶ÇÇÑ, º¯¼ö A_EventInfo¿¡´Â ´õºí Ŭ¸¯µÈ ±× Ç׸ñÀÇ À§Ä¡°¡ ´ã±é´Ï´Ù (1Àº ù Ç׸ñ, 2ÀÌ¸é µÎ ¹ø° Ç׸ñ µîµî.).

+

+¹æ´ëÇÑ °³¼öÀÇ Ç׸ñÀ» ListBox¿¡ Ãß°¡ÇÒ ¶§, ¿¬»ê Àü¿¡ GuiControl, -Redraw, MyListBox¸¦ ¹Ì¸® »ç¿ëÇÏ°í ³ªÁß¿¡ GuiControl, +Redraw, MyListBox¸¦ »ç¿ëÇÏ¸é ¼öÇ༺´É Çâ»óÀ» ²ÒÇÒ ¼ö ÀÖ½À´Ï´Ù .

+ +

ListBox ¿É¼Ç

+

+Choose: À§ ÂüÁ¶.

+

+Multi: ½¬ÇÁÆ®-Ŭ¸¯ ¶Ç´Â ÄÜÆ®·Ñ-Ŭ¸¯À» ÅëÇÏ¿© ¿©·¯ Ç׸ñÀ» ¼±ÅÃÇϵµ·Ï Çã¿ëÇÕ´Ï´Ù (½¬ÇÁÆ®/ÄÜÆ®·Ñ Ŭ¸¯À» ÇÇÇÏ·Á¸é, ´Ü¾î Multi ´ë½Å¿¡ ¼ýÀÚ 8À» »ç¿ëÇϽʽÿÀ). ÀÌ °æ¿ì, Gui SubmitÀº ÆÄÀÌÇÁ·Î ±¸ºÐµÈ Ç׸ñ-¹®ÀÚ¿­ ¸®½ºÆ®¸¦ ÄÜÆ®·ÑÀÇ Ãâ·Â º¯¼ö¿¡ ÀúÀåÇÕ´Ï´Ù. ±×·¸Áö¸¸, AltSubmit ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ¸¸é, Gui SubmitÀº ÆÄÀÌÇÁ·Î ±¸ºÐµÈ Ç׸ñ ¹øÈ£ ¸®½ºÆ®¸¦ ´ë½Å »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, 1|2|3À̶ó¸é ¾ÕÂÊ ¼¼ Ç׸ñÀÌ ¼±ÅõǾú´Ù´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù. °³º°ÀûÀ¸·Î Ç׸ñÀ» ¹®ÀÚ¿­·ÎºÎÅÍ ÃßÃâÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ÆÄ½Ì È¸µ¹À̸¦ »ç¿ëÇϽʽÿÀ:

+
Loop, parse, MyListBox, |
+{
+    MsgBox Selection number %A_Index% is %A_LoopField%.
+}
+

ÇÊµå »çÀÌÀÇ °¡¸§ÀÚ´Â ÆÄÀÌÇÁ ¹®ÀÚ (|) ´ë½Å ´Ù¸¥ °ÍÀ¸·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î Gui +Delimiter`nÀÌ¸é ¶óÀÎÇǵå·Î ¹Ù²Ù°í Gui +DelimiterTabÀ̸é ÅÇ ¹®ÀÚ (`t)·Î ¹Ù²ò´Ï´Ù.

+

+ReadOnly: Ç׸ñµéÀÌ ¼±ÅÃµÉ ¶§ ½Ã°¢ÀûÀ¸·Î °­Á¶µÇÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù (±×·¯³ª Gui Submit´Â ¿©ÀüÈ÷ ±× ¼±ÅÃµÈ Ç׸ñÀ» ÀúÀåÇÕ´Ï´Ù).

+

+Sort: ÀÚµ¿À¸·Î ¸®½ºÆ®ÀÇ ³»¿ëÀ» ¾ËÆĺª ¼ø¼­·Î Á¤·ÄÇÕ´Ï´Ù (ÀÌ°ÍÀº ¶ÇÇÑ ³ªÁß¿¡ GuiControlÀ» ÅëÇÏ¿© Ãß°¡µÇ´Â ¸ðµç Ç׸ñ¿¡µµ ¿µÇâÀ» ÁÝ´Ï´Ù). Sort ¿É¼ÇÀº ¶ÇÇÑ Á¡Áõ °Ë»öÀ» È°¼ºÈ­ ÇÕ´Ï´Ù. ±× ´öºÐ¿¡ Ç׸ñÀ» ±×ÀÇ À̸§ ¾Õ ¸î ±ÛÀÚ¸¸ ŸÀÚÇؼ­ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Tn: ±âÈ£ T¸¦ »ç¿ëÇϸé ÅÇ ½ºÅ¾À» ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÅÇ ½ºÅ¾Àº ÅؽºÆ®¸¦ ¿­ ¾ÈÀ¸·Î Æ÷¸ËÇØ ³Ö´Âµ¥ »ç¿ëµË´Ï´Ù. ±âÈ£ T¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸¸é, ÅÇ ½ºÅ¾Àº ¸Å 32 ´ëÈ­»óÀÚ ´ÜÀ§¸¶´Ù ¼³Á¤µË´Ï´Ù (°¢ "´ëÈ­»óÀÚ ´ÜÀ§"ÀÇ ³Êºñ´Â ¿î¿µ üÁ¦°¡ °áÁ¤ÇÕ´Ï´Ù). ±âÈ£ T¸¦ ÇÑ ¹ø¸¸ »ç¿ëÇϸé, ÅÇ ½ºÅ¾Àº ÄÜÆ®·ÑÀÇ Àüü ³Êºñ¿¡ °ÉÃļ­ ¸Å n ´ÜÀ§¸¶´Ù ¼³Á¤µË´Ï´Ù. ¿¹¸¦ µé¾î, Gui, Add, ListBox, vMyListBox t64À̸é ÅÇ ½ºÅ¾ »çÀÌÀÇ ±âº» °Å¸®°¡ µÎ ¹è°¡ µË´Ï´Ù. ¸ÂÃã ÅǽºÅ¾Àº ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ±âÈ£ T¸¦ ¿©·¯ ¹ø ÁöÁ¤ÇϽʽÿÀ: Gui, Add, ListBox, vMyListBox t8 t16 t32 t64 t128. ÅÇ ½ºÅ¾Àº ¸®½ºÆ®¿¡¼­ Àý´ë ¿­ À§Ä¡¸¶´Ù Çϳª¾¿ ¼³Á¤µÇ°í ÃÖ´ë 50°³±îÁö ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+0x100: ¿É¼Ç¿¡ 0x100À» Æ÷ÇÔÇϸé LBS_NOINTEGRALHEIGHT ½ºÅ¸ÀÏÀ» ÄÓ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô Çϸé ÇàÀÌ ¾Æ·¡¿¡ ºÎºÐÀûÀ¸·Î ³ªÅ¸³ªÁö ¾Êµµ·Ï °­Á¦·Î ListBox¸¦ ÁöÁ¤µÈ ³ôÀÌ¿Í Á¤È®ÇÏ°Ô °°°Ô ¸¸µì´Ï´Ù. ÀÌ ¿É¼ÇÀº ¶ÇÇÑ ListBox°¡ ±×ÀÇ ±Û²ÃÀÌ º¯ÇÒ ¶§ ÁÙ¾îµéÁö ¸øÇÏ°Ô ¸·½À´Ï´Ù.

+

+ÅؽºÆ® ÇàÀÇ °³¼ö¸¦ ÁöÁ¤ÇÏ·Á¸é (¶Ç´Â ³ôÀÌ¿Í ³Êºñ¸¦ ÁöÁ¤ÇÏ·Á¸é), ÄÜÆ®·ÑÀÇ À§Ä¡¿Í Å©±â º¯°æÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

ListView ±×¸®°í TreeView

+

+º°µµ·Î ListView ÆäÀÌÁö¿Í TreeView ÆäÀÌÁö¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ + +

+¼³¸í: Ŭ¸¯ÀÌ °¡´ÉÇÑ ¸µÅ©µéÀ» ´ã°í ÀÖ´Â ÅؽºÆ® ÄÜÆ®·Ñ. ¸µÅ© ÄÜÆ®·ÑÀº HTML-ºñ½ÁÇÑ Á¶ÆÇ ¾ð¾î¸¦ »ç¿ëÇÕ´Ï´Ù. ±×·¯³ª ¿ÀÁ÷ <A> ű׸¸ Áö¿øÇÕ´Ï´Ù. ¿©´Â ÅÂ±× ¾È¿¡, Attribute="value" ÇüÅÂÀÇ ¼Ó¼ºÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº ÀüÇüÀûÀ¸·Î ID ¶Ç´Â HREF ¼Ó¼ºÀÔ´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
Gui, Add, Link,, ´ÙÀ½Àº <a href="http://ahkscript.org">¸µÅ©</a>ÀÇ ¿¹ÀÔ´Ï´Ù.
+Gui, Add, Link,, ¸µÅ©´Â ÅؽºÆ® ¾Æ¹«µ¥³ª <a id="1">ÀÌ·¸°Ô</a> ¶Ç´Â <a id="2">ÀÌ·¸°Ô</a> »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
+

+HREF ¼Ó¼ºÀÌ ¼³Á¤µÇ¾î ÀÖ°í ½ÇÇàÀÌ °¡´ÉÇÏ´Ù¸é (URLÀ̳ª ¸í·É¾îó·³) ¸µÅ©¸¦ Ŭ¸¯Çϸé ÀÚµ¿À¸·Î 󸮵˴ϴÙ. HREF ¼Ó¼ºÀÌ »ç¿ëµÇÁö ¾Ê°Å³ª ½ÇÇàÇÒ ¼ö ¾ø´Ù¸é gMySubroutine°ú °°Àº g-¶óº§ÀÌ Á¦°øµÇ¾î ÀÖ´Ù¸é ÀÌ ¶óº§ÀÌ ±âµ¿µË´Ï´Ù. ±×·¯¸é ErrorLevel º¯¼ö¿¡ ±× ¼Ó¼ºÀÇ °ªÀÌ ´ã±é´Ï´Ù. ±×·¡¼­ Ŭ¸¯µÈ ¸µÅ©¸¦ ½Äº°ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

Hotkey

+

+¼³¸í: ÇÑ ÁÙÂ¥¸® ÆíÁý ÄÜÆ®·Ñó·³ º¸ÀÌÁö¸¸ ´ë½Å¿¡ »ç¿ëÀÚ°¡ ´©¸¥ Å°º¸µå Á¶ÇÕÀ» ¹Þ´Â ¹Ú½º. ¿¹¸¦ µé¾î, »ç¿ëÀÚ°¡ Control+Alt+C¸¦ ¿µ¾î Å°º¸µå ·¹À̾ƿô¿¡¼­ ´­·¶´Ù¸é, ¹Ú½º´Â "Ctrl + Alt + C"¸¦ º¸¿©ÁÝ´Ï´Ù.

+ +
Gui, Add, Hotkey, vChosenHotkey
+

+Gui Submit ¸í·É¾î¸¦ »ç¿ëÇϸé, ÄÜÆ®·ÑÀÇ ¿¬°ü Ãâ·Â º¯¼ö°¡ (ÀÖ´Ù¸é) ÇÖÅ° ¼ö½ÄÅ°¿Í À̸§À» ¹Þ½À´Ï´Ù. Hotkey ¸í·É¾î¿Í ȣȯµË´Ï´Ù. + +¿¹¸¦ µé¾î: ^!C, +!Home, +^Down, ^Numpad1, !NumpadEnd. ÄÜÆ®·Ñ¿¡ ÇÖÅ°°¡ ¾ø´Ù¸é, ±× Ãâ·Â º¯¼ö´Â ºñ¿öÁý´Ï´Ù. ÁÖÀÇ: ¾î¶² Å°µéÀº ´Ù¸¥ À̸§À¸·Î ¿­¶÷µÇ¾úÀ½¿¡µµ ¶È °°ÀÌ º¸ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ^Numpad7¿Í ^NumpadHome´Â µÑ ´Ù Ctrl + Num 7·Î º¸ÀÔ´Ï´Ù.

+

+±âº»°ªÀ¸·Î, ÄÜÆ®·ÑÀº ÇÖÅ°¸¦ ÁöÁ¤ÇÏÁö ¾Ê°í ½ÃÀÛÇÕ´Ï´Ù. ´ë½Å¿¡ ±âº»°ª ÇÖÅ°¸¦ ÁöÁ¤ÇÏ·Á¸é, ±×ÀÇ ¼ö½ÄÅ°¿Í À̸§À» ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¸¶Áö¸· ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇϽʽÿÀ: Gui, Add, Hotkey, vChosenHotkey, ^!p
+Áö¿øµÇ´Â À¯ÀÏÇÑ ¼ö½ÄÅ°´Â ^ (Control), ! (Alt), ±×¸®°í + (Shift)ÀÔ´Ï´Ù. °¡´ÉÇÑ Å° À̸§Àº Å° ¸®½ºÆ®¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+gMySubroutine¿Í °°Àº g-¶óº§À» ÄÜÆ®·ÑÀÇ ¿É¼Ç¿¡ ³ª¿­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é »ç¿ëÀÚ°¡ ÇÖÅ°¸¦ º¯°æÇÒ ¶§¸¶´Ù ÀÚµ¿À¸·Î MySubroutine ¶óº§ÀÌ ±âµ¿µË´Ï´Ù. g-¶óº§ÀÌ ±âµ¿ÇÒ ¶§¸¶´Ù ±× ÇÖÅ°°¡ ÄÜÆ®·ÑÀÇ ¿¬°ü Ãâ·Â º¯¼ö¿¡ ÀúÀåµË´Ï´Ù. ÁÖÀÇ: g-¶óº§Àº ºÒ¿ÏÀüÇÑ ÇÖÅ°°¡ Á¸ÀçÇÒ ¶§¿¡µµ ±âµ¿µË´Ï´Ù. ¿¹¸¦ µé¾î »ç¿ëÀÚ°¡ Control Å°¸¦ ´©¸£°í ÀÖ´Ù¸é, g-¶óº§Àº ÇÑ ¹ø ±âµ¿µÇ°í ±× Ãâ·Â º¯¼ö¿¡ ¿ÀÁ÷ À­²©¼è (^)¸¸ ´ã±é´Ï´Ù. »ç¿ëÀÚ°¡ ±× ÇÖÅ°¸¦ ¿Ï·áÇϸé, ¶óº§ÀÌ ´Ù½Ã ±âµ¿µÇ°í ºñ·Î¼­ º¯¼ö¿¡ ¿ÏÀüÇÑ ÇÖÅ°°¡ ´ã±é´Ï´Ù.

+

+»ç¿ëÀÚ°¡ ÀÔ·ÂÇÏ´Â ÇÖÅ°ÀÇ À¯ÇüÀ» Á¦ÇÑÇÏ·Á¸é, ´Ü¾î Limit µÚ¿¡ ´ÙÀ½ ¼ýÀÚ Áß Çϳª ¶Ç´Â ±× ÇÕÀ» ÁöÁ¤ÇϽʽÿÀ:

+

+1: ¼ö½ÄÅ°°¡ ¾øÀ¸¸é ºÒ°¡
+2: Shift-Å° ´Üµ¶ ºÒ°¡
+4: Control-Å° ´Üµ¶ ºÒ°¡
+8: Alt-Å° ´Üµ¶ ºÒ°¡
+16: Shift-Control Å° ºÒ°¡
+32: Shift-Alt Å° ºÒ°¡
+64: ÀÌ °ªÀº Áö¿øÇÏÁö ¾ÊÀ½ (¿Ã¹Ù¸£°Ô ÀÛµ¿ÇÏÁö ¾ÊÀ» °ÍÀÓ).
+128: Shift-Control-Alt Å° ºÒ°¡.

+

+¿¹¸¦ µé¾î, Limit1Àº ¼ö½ÄÅ°°¡ ¾øÀÌ ¼ýÀÚ³ª ¹®ÀÚ°¡ ÀԷµÇÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù. Limit15À̸é Àû¾îµµ µÎ °³ÀÇ ¼ö½Ä Å°¸¦ ¿ä±¸ÇÕ´Ï´Ù. »ç¿ëÀÚ°¡ ±ÝÁö ¼ö½Ä Å° Á¶ÇÕÀ» ŸÀÚÇϸé, Control+Alt Á¶ÇÕÀÌ ÀÚµ¿À¸·Î ±×¸®°í ½Ã°¢ÀûÀ¸·Î ´ë½ÅÇÕ´Ï´Ù.

+

+ÇÖÅ° ÄÜÆ®·ÑÀº ´É·Â¿¡ Á¦ÇÑÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¸¶¿ì½º/Á¶À̽ºÆ½ ÇÖÅ°¸¦ Áö¿øÇÏÁö ¾ÊÀ¸¸ç À©µµ¿ìÁî Å° (LWin ±×¸®°í RWin)¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. À̸¦ ¿ìȸÇÏ´Â ÇÑ °¡Áö ¹æ¹ýÀº ¿©·¯ üũ¹Ú½º¸¦ ¼ö´ÜÀ¸·Î »ç¿ëÀÚ¿¡°Ô Á¦°øÇÏ´Â °ÍÀÔ´Ï´Ù. ±×·¯¸é »ç¿ëÀÚ´Â À©µµ¿ìÁî Å°¿Í °°Àº Ãß°¡ ¼ö½ÄÅ°¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

DateTime

+

+¼³¸í: ÇÑ ÁÙ ÆíÁý ÄÜÆ®·Ñó·³ º¸ÀÌ´Â ¹Ú½º. ±×·¯³ª ³¯Â¥¿Í ½Ã°£À» ¹Þ½À´Ï´Ù. µå·Ó-´Ù¿î ´Þ·Âµµ Á¦°øÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
Gui, Add, DateTime, vMyDateTime, LongDate
+

+¸¶Áö¸· ¸Å°³º¯¼ö´Â ´ÙÀ½ Áß ÇϳªÀÔ´Ï´Ù:

+

+(»ý·«): »ý·«Çϸé, ·ÎÄÉÀÏÀÇ ÂªÀº ³¯Â¥ Çü½ÄÀÌ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î, ¾î¶² ·ÎÄÉÀÏ¿¡¼­´Â ´ÙÀ½°ú °°ÀÌ º¸ÀÔ´Ï´Ù: 6/1/2005

+

+LongDate: ·ÎÄÉÀÏÀÇ ±ä ³¯Â¥ Çü½ÄÀ» »ç¿ëÇÏ´Ï´Ù. ¿¹¸¦ µé¾î, ¾î¶² ·ÎÄÉÀÏ¿¡¼­ ´ÙÀ½°ú °°ÀÌ º¸ÀÔ´Ï´Ù: Wednesday, June 01, 2005

+

+Time: ·ÎÄÉÀÏÀÇ ½Ã°£ Çü½ÄÀ» »ç¿ëÇÏ¿© ½Ã°£¸¸ º¸¿©ÁÝ´Ï´Ù. ³¯Â¥´Â º¸ÀÌÁö ¾ÊÁö¸¸, ¿©ÀüÈ÷ ÄÜÆ®·Ñ¿¡ Á¸ÀçÇÏ¸ç ½Ã°£°ú ÇÔ²² YYYYMMDDHH24MISS Çü½ÄÀ¸·Î ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+(¸ÂÃã Çü½Ä): ³¯Â¥¿Í ½Ã°£ Çü½ÄÀ» Á¶ÇÕÇØ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, M/d/yy HH:mmÀ̸é 6/1/05 21:37¿Í °°ÀÌ º¸ÀÔ´Ï´Ù. ºñ½ÁÇÏ°Ô, dddd MMMM d, yyyy hh:mm:ss ttÀ̸é "Wednesday June 1, 2005 09:37:45 PM" ó·³ º¸ÀÔ´Ï´Ù. ±âÈ£¿Í ¼ýÀÚ¸¦ ±×´ë·Î º¸¿© ÁÖ·Á¸é Ȭµû¿ÈÇ¥·Î ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ µÑ·¯ ½Î¾ß ÇÕ´Ï´Ù: 'Date:' MM/dd/yy 'Time:' hh:mm:ss tt. ´ëÁ¶ÀûÀ¸·Î, ºñ-¾ËÆĺª¼ýÀÚ´Â ½ºÆäÀ̽º, ÅÇ, Á¤»ç¼±, ½ÖÁ¡, ½°Ç¥, ±âŸµîµîÀÇ ±¸µÎÁ¡ ±âÈ£´Â Ȭµû¿ÈÇ¥·Î µÑ·¯½Ò ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ÀÌ¿¡ ´ëÇÑ ¿¹¿Ü´Â Ȭµû¿ÈÇ¥ ÀÚüÀÔ´Ï´Ù: ±âÈ£ ±×´ë·ÎÀÇ È¬µû¿ÈÇ¥¸¦ »ç¿ëÇÏ·Á¸é, ¿¬¼ÓÇؼ­ Ȭµû¿ÈÇ¥¸¦ µÎ°³ ('''') »ç¿ëÇϰųª, ¾Æ´Ï¸é ±×³É ¹Ù±ù¿¡ µû¿ÈÇ¥ ½ÖÀÌ ÀÌ¹Ì ÀÖ´Â °æ¿ì ±×³É µÎ °³¸¦ »ç¿ëÇϽʽÿÀ.

+ +

DateTime »ç¿ë¹ý

+

+¿À´Ã ¸»°í ´Ù¸¥ ³¯Â¥¸¦ ¹Ì¸® ¼±ÅÃÇÏ·Á¸é, Options¿¡ ´Ü¾î Choose¿Í ±× ´ÙÀ½¿¡ ¹Ù·Î ³¯Â¥¸¦ YYYYMMDD Çü½ÄÀ¸·Î Æ÷ÇÔ½ÃÅ°½Ê½Ã¿À. ¿¹¸¦ µé¾î,, Choose20050531À̸é May 31, 2005¸¦ ¹Ì¸® ¼±ÅÃÇÕ´Ï´Ù (´Ù¸¥ ¿É¼Ç°ú ¸¶Âù°¡Áö·Î, Choose%Var%¿Í °°Àº º¯¼öµµ °¡´ÉÇÏ´Ï´Ù). ³¯Â¥/½Ã°£À» ¼±ÅÃÇÏÁö ¾ÊÀ¸·Á¸é, ChooseNoneÀ» ÁöÁ¤ÇϽʽÿÀ. ChooseNone´Â ¶Ç ÄÜÆ®·Ñ¿¡ ³¯Â¥°¡ ¾øÀ» ¶§¸¶´Ù ÄÜÆ®·Ñ ¾È¿¡ üũ°¡ ÇØÁ¦µÇ¾î Àִ üũ¹Ú½º¸¦ »ý¼ºÇÕ´Ï´Ù. ÄÜÆ®·Ñ¿¡ ³¯Â¥°¡ ¾øÀ» ¶§¸¶´Ù, Gui Submit ±×¸®°í GuiControlGetÀº ºó °ªÀ» ¿­¶÷ÇÕ´Ï´Ù (ºó ¹®ÀÚ¿­).

+

+³¯Â¥¿¡ ½Ã°£Àº ¼±ÅÃÀûÀ¸·Î ³ªÅ¸³³´Ï´Ù. ±×·¸Áö¸¸ ÄÜÆ®·Ñ¿¡¼­ ³ª¿À°Å³ª µé¾î°¥ ¶§ ¹Ýµå½Ã ³¯Â¥°¡ ¸ÕÀú ¿Í¾ß ÇÕ´Ï´Ù. ½Ã°£ ºÎºÐÀÇ Çü½ÄÀº HH24MISS (½Ã°£, ºÐ, ÃÊ)ÀÌ°í, ¿©±â¿¡¼­ HH24´Â 24-½Ã°£ Çü½ÄÀ¸·Î ³ªÅ¸³³´Ï´Ù; ¿¹¸¦ µé¾î, 09´Â ¿ÀÀü 9½ÃÀÌ°í 21ÀÌ¸é ¿ÀÈÄ 9½ÃÀÔ´Ï´Ù. ±×·¡¼­, ¿ÏÀüÇÑ ³¯Â¥-½Ã°£ ¹®ÀÚ¿­Àº ´ÙÀ½ YYYYMMDDHH24MISSÀÇ Çü½ÄÀÔ´Ï´Ù.

+

+³¯Â¥¸¦ YYYYMMDDHH24MISS Çü½ÄÀ¸·Î ÁöÁ¤ÇÒ ¶§, ¿ÀÁ÷ ¾Õ ºÎºÐ¸¸ º¸¿©ÁÙ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. »ý·«µÈ ³ª¸ÓÁö ºÎºÐÀº ´ÙÀ½ÀÇ ±âº»°ªÀÌ °ø±ÞµË´Ï´Ù:
+MM: Month 01
+DD: Day 01
+HH24: Hour 00
+MI: Minute 00
+SS: Second 00

+

+µå·Ó-´Ù¿î ´Þ·Â ¾È¿¡¼­, ¾Æ·¡¿¡ ÀÖ´Â ¿À´Ã-¹®ÀÚ¿­À» Ŭ¸¯ÇÏ¸é ¿À´Ã ³¯Â¥¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. °Ô´Ù°¡, ÇØ¿Í ´Þ À̸§À» Ŭ¸¯ÇÏ¸é ½±°Ô ÇØ¿Í ´ÞÀ» Ç×ÇØÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Å°º¸µå Ç×ÇØ: Up/Down È­»ìÇ¥ Å°, NumpadPlus/Minus, ±×¸®°í Home/End¸¦ »ç¿ëÇϸé ÄÜÆ®·ÑÀÇ °ªÀ» ´Ã¸®°Å³ª ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù. LeftArrow ±×¸®°í RightArrow¸¦ »ç¿ëÇϸé ÄÜÆ®·Ñ ¾ÈÀÇ Çʵ忡¼­ Çʵå·Î À̵¿ÇÒ ¼ö ÀÖ½À´Ï´Ù. µå·Ó-´Ù¿î ´Þ·Â ¾È¿¡¼­, È­»ìÇ¥ Å°¸¦ »ç¿ëÇÏ¸é ³¯¿¡¼­ ³¯·Î À̵¿ÇÒ ¼ö ÀÖ½À´Ï´Ù; PageUp/Down¸¦ »ç¿ëÇϸé ÇÑ ´Þ¾¿ µÚ·Î ¾ÕÀ¸·Î À̵¿ÇÒ ¼ö ÀÖ½À´Ï´Ù; Ctrl-PageUp/Down¸¦ »ç¿ëÇϸé ÇÑ Çؾ¿ ¾ÕÀ¸·Î µÚ·Î À̵¿ÇÒ ¼ö ÀÖ½À´Ï´Ù; ±×¸®°í Home/EndÀ» »ç¿ëÇÏ¸é ±× ´ÞÀÇ Ã¹ ³¯°ú ¸¶Áö¸· ³¯À» ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Gui SubmitÀ» »ç¿ëÇϸé, ÄÜÆ®·ÑÀÇ ¿¬°ü Ãâ·Â º¯¼ö°¡ (ÀÖ´Ù¸é) ¼±ÅÃµÈ ³¯Â¥¿Í ½Ã°£À» YYYYMMDDHH24MISS Çü½ÄÀ¸·Î ¹Þ½À´Ï´Ù. ³¯Â¥¿Í ½Ã°£ ¸ðµÎ ³ªÅ¸³³´Ï´Ù. ½ÇÁ¦·Î ÄÜÆ®·Ñ ¾È¿¡ º¸ÀÌ´ÂÁö ¾Ê´ÂÁö¿¡ »ó°üÀÌ ¾ø½À´Ï´Ù.

+

+ÄÜÆ®·Ñ¿¡ g-¶óº§ÀÌ ÀÖ´Ù¸é, »ç¿ëÀÚ°¡ ³¯Â¥³ª ½Ã°£À» º¯°æÇÒ ¶§¸¶´Ù ±× ¶óº§ÀÌ ±âµ¿µË´Ï´Ù. ±âµ¿µÉ ¶§¸¶´Ù, ±× ÄÜÆ®·ÑÀÇ ¿¬°ü Ãâ·Â º¯¼ö°¡ (ÀÖ´Ù¸é) ÀÚµ¿À¸·Î ÇöÀç ¼±ÅÃµÈ ³¯Â¥/½Ã°£À¸·Î ÀÚµ¿ ¾÷µ¥ÀÌÆ® µË´Ï´Ù.

+ +

DateTime ¿É¼Ç

+

+Choose: À§ ÂüÁ¶.

+

+Range: ¼±ÅÃµÈ ³¯Â¥ÀÇ ¹üÀ§¸¦ Á¦ÇÑÇÕ´Ï´Ù. ´Ü¾î Range ´ÙÀ½¿¡, ÃÖ¼Ò ³¯Â¥¿Í ÃÖ´ë ³¯Â¥¸¦ YYYYMMDD Çü½ÄÀ¸·Î ÁöÁ¤ÇϽʽÿÀ (±× »çÀÌ¿¡ ¿·ÁÙ). ¿¹¸¦ µé¾î, Range20050101-20050615ÀÌ¸é ³¯Â¥¸¦ 2005³âÀÇ Àü¹Ý 5.5 ´Þ·Î Á¦ÇÑÇÕ´Ï´Ù. ÃÖ¼Ò ³¯Â¥ ¶Ç´Â ÃÖ´ë ³¯Â¥¸¦ »ý·«ÇÏ¸é ±× ¹æÇâÀ¸·Î ÄÜÆ®·ÑÀ» Á¦¾îÇÏÁö ¾Ê°í ±×´ë·Î µÓ´Ï´Ù. ¿¹¸¦ µé¾î, Range20010101ÀÌ¸é ³¯Â¥¸¦ 2001³â ¹Ì¸¸ÀÌ ¼±ÅõÇÁö ¸øÇϵµ·Ï ¸·°í Range-20091231 (¾Õ¿¡ ¿·ÁÙ)ÀÌ¸é ³¯Â¥¸¦ 2009³âÀ» ÃÊ°úÇÏ¿© ¼±ÅõÇÁö ¸øÇÏ°Ô ¸·½À´Ï´Ù. Range ¿É¼ÇÀÌ ¾ø´Ù¸é, 1601°ú 9999 »çÀÌÀÇ ³¯Â¥¸¦ ¾ó¸¶µçÁö ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ³¯Â¥ ¾ÈÀÇ ½Ã°£Àº Á¦ÇÑÇÒ ¼ö ¾ø½À´Ï´Ù.

+

+Right: Ķ¸°´õ°¡ ÄÜÆ®·Ñ¿¡ ¿À¸¥ÂÊ¿¡ µå·Ó ´Ù¿îµË´Ï´Ù.

+

+1: ¼ýÀÚ 1À» Options¿¡ ÁöÁ¤ÇÏ¸é ¾÷-´Ù¿î ÄÜÆ®·ÑÀ» ÄÜÆ®·ÑÀÇ ¿À¸¥ÂÊ¿¡ Á¦°øÇØ ³¯Â¥-½Ã°£ °ªÀ» º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¸é µå·Ó-´Ù¿î ´Þ·ÂÀÌ ±³Ã¼µË´Ï´Ù. ÀÌ°ÍÀº À§¿¡ ±â¼úÇÑ ±ä ³¯Â¥(LongDate) ¿É¼Ç Çü½Ä°ú ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù.

+

+2: ¼ýÀÚ 2¸¦ Options¿¡ ÁöÁ¤Çϸé üũ¹Ú½º¸¦ ÄÜÆ®·Ñ ¾È¿¡ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¸é »ç¿ëÀڴ üũ Ç¥½ÄÀ» ÇØÁ¦ÇØ ³¯Â¥/½Ã°£ÀÌ ¼±ÅõÇÁö ¾Ê¾ÒÀ½À» ¾Ë¸± ¼ö ÀÖ½À´Ï´Ù.

+ +

MonthCal

+

+¼³¸í: ´Þ·Â Çü½ÄÀ¸·Î ÇÑ ´ÞÀÇ ¸ðµç ³¯Â¥¸¦ º¸¿©ÁÖ´Â ³ô°í ³ÐÀº ÄÜÆ®·Ñ. »ç¿ëÀÚ´Â ³¯Â¥ ¶Ç´Â ÇÑ ¹üÀ§ÀÇ ³¯Â¥¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
Gui, Add, MonthCal, vMyCalendar
+

+¿À´Ã ¸»°í ´Ù¸¥ ³¯Â¥¸¦ ¹Ì¸® ¼±ÅÃÇÏ·Á¸é, ¸¶Áö¸· ¸Å°³º¯¼ö¿¡ YYYYMMDD Çü½ÄÀ¸·Î ÁöÁ¤ÇϽʽÿÀ (¿¹, 20050531). ÇÑ ¹üÀ§ÀÇ ³¯Â¥µµ ¹Ì¸® ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. »çÀÌ¿¡ ¿· ÁÙÀ» µÎ°í µÎ ³¯Â¥¸¦ Æ÷ÇÔÇÏ¸é µË´Ï´Ù (¿¹, 20050525-20050531).

+

+MonthCal¿¡ ´ëÇÏ¿© º¸Åë ³Êºñ (W)¿Í ³ôÀÌ (H)¸¦ »ý·«ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ¿Ö³ÄÇϸé ÇÑ ´Þ¿¡ Á¤È®ÇÏ°Ô ¸Âµµ·Ï ÀÚµ¿À¸·Î Å©±â°¡ Á¶ÀýµÇ±â ¶§¹®ÀÔ´Ï´Ù. ¼öÁ÷À¸·Î ¿©·¯ ´ÞÀ» º¸¿©ÁÖ·Á¸é, specify R2 ÀÌ»óÀ» Options¿¡ ÁöÁ¤ÇϽʽÿÀ. ¿©·¯ ´ÞÀ» ¼öÆòÀ¸·Î º¸¿©ÁÖ·Á¸é, W-2 (W À½¼ö 2) ÀÌ»óÀ» ÁöÁ¤ÇϽʽÿÀ. ÀÌ ¿É¼ÇµéÀº ¸ðµÎ ¾ç ¹æÇâÀ¸·Î È®´ëÇϱâ À§ÇØ Á¸ÀçÇÕ´Ï´Ù.

+

+ÄÜÆ®·Ñ ¾Æ·¡ÀÇ ¿À´Ã-¹®ÀÚ¿­À» Ŭ¸¯ÇÏ¸é ¿À´Ã ³¯Â¥¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. °Ô´Ù°¡, ÇØ¿Í ´Þ À̸§À» Ŭ¸¯ÇÏ¸é ½±°Ô »õ ÇØ¿Í ´ÞÀ» ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+DateTimeÀÇ Ä¶¸°´õ¿Í ´Ù¸£°Ô, Å°º¸µå Ç×ÇØ´Â º¸Åë MonthCal¿¡ Áö¿øµÇÁö ¾Ê½À´Ï´Ù.

+

+Gui Submit ¸í·É¾î¸¦ »ç¿ëÇϸé, ÄÜÆ®·ÑÀÇ ¿¬°ü Ãâ·Â º¯¼ö°¡ (ÀÖ´Ù¸é) ¼±ÅÃµÈ ³¯Â¥¸¦ YYYYMMDD ÇüÅ·Π¹Þ½À´Ï´Ù (½Ã°£ ºÎºÐ ¾øÀÌ). ±×·¸Áö¸¸, ´ÙÁß-¼±Åà ¿É¼ÇÀÌ ÄÑÁ® ÀÖ´Ù¸é, ÃÖ¼Ò ³¯Â¥¿Í ÃÖ´ë ³¯Â¥°¡ »çÀÌ¿¡ ¿·ÁÙÀ» µÎ°í ¿­¶÷µË´Ï´Ù (¿¹, 20050101-20050108). ´ÙÁß-¼±Åà ´Þ·Â¿¡¼­ ÇϳªÀÇ ³¯Â¥¸¸ ¼±ÅõǾú´Ù¸é, ÃÖ´ë ³¯Â¥¿Í ÃÖ¼Ò ³¯Â¥´Â µ¿ÀÏÇÕ´Ï´Ù. StringSplitÀ» »ç¿ëÇÏ¸é ³¯Â¥¸¦ ºÐÇØÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½Àº ÃÖ¼Ò ³¯Â¥¸¦ Date1¿¡ ÃÖ´ë ³¯Â¥¸¦ Date2¿¡ ¹èÁ¤ÇÕ´Ï´Ù: StringSplit, Date, MyMonthCal, -.

+

+MonthCal¿¡ g-¶óº§ÀÌ ÀÖ´Ù¸é, ±âµ¿ÇÒ ¶§¸¶´Ù ÄÜÆ®·ÑÀÇ ¿¬°ü Ãâ·Â º¯¼ö°¡ (ÀÖ´Ù¸é) ÇöÀç ¼±ÅÃµÈ ³¯Â¥ ¶Ç´Â ¹üÀ§·Î ¾÷µ¥ÀÌÆ® µË´Ï´Ù. ±âº»°ªÀ¸·Î, g-¶óº§Àº ´ÙÀ½°ú °°Àº °æ¿ì¿¡¸¸ ±âµ¿ÇÕ´Ï´Ù: 1) »ç¿ëÀÚ°¡ ¼±ÅÃÀ» º¯°æÇÑ °æ¿ì; ¶Ç´Â 2) 2 ºÐ¸¶´Ù »õ ³¯Â¥°¡ µµÂøÇÏ´Â °æ¿ì (ÀÌ ÇàÀ§´Â OSÀÇ ±â¹¦ÇÑ ÇàÀ§ÀÔ´Ï´Ù). ±×·¸Áö¸¸, ´Ü¾î AltSubmit°¡ ÄÜÆ®·ÑÀÇ Options¿¡ ÀÖ´Ù¸é, g-¶óº§ÀÌ ´õ ÀÚÁÖ ±âµ¿µË´Ï´Ù. ±×¸®°í ³»Àå º¯¼ö A_GuiEvent¿¡ ³¯Â¥¸¦ º¯°æÇÏ¸é ´Ü¾î NormalÀÌ ´ã±é´Ï´Ù. ³¯Â¥¸¦ Ŭ¸¯ÇÏ¸é ¼ýÀÚ 1ÀÌ ´ã±â°í, MonthCalÀÌ "¸¶¿ì½º ³ªÆ÷"¸¦ ³õÀ¸¸é ¼ýÀÚ 2°¡ ´ã±é´Ï´Ù. ¿¹¸¦ µé¾î, »ç¿ëÀÚ°¡ »õ ³¯Â¥¸¦ ´õºí Ŭ¸¯Çϸé, Áö-¶óº§ÀÌ ´Ù¼¸ ¹ø ±âµ¿µË´Ï´Ù: ÇѹøÀº Normal·Î, µÎ ¹ø°´Â 1, ±×¸®°í ¼¼ ¹ø°´Â 2ÀÔ´Ï´Ù. À̸¦ ÀÌ¿ëÇÏ¸é ´õºí Ŭ¸¯À» ŽÁöÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼ýÀÚ°¡ 1ÀÎ ½Çü »çÀÌÀÇ ½Ã°£À» ÃøÁ¤ÇÏ¸é µË´Ï´Ù.

+

+³¯Â¥¸¦ YYYYMMDD Çü½ÄÀ¸·Î ÁöÁ¤ÇÒ ¶§, MM ±×¸®°í/¶Ç´Â DD ºÎºÐÀº »ý·«ÀÌ °¡´ÉÇÕ´Ï´Ù. ÀÌ °æ¿ì 1À̶ó°í °£Áֵ˴ϴÙ. ¿¹¸¦ µé¾î, 200205´Â 20020501·Î °£Áֵǰí, 2005´Â 20050101·Î °£Áֵ˴ϴÙ.

+ +

MonthCal Options

+

+Multi: ´ÙÁß-¼±ÅÃ. »ç¿ëÀÚ´Â ½¬ÇÁÆ® Ŭ¸¯À̳ª Ŭ¸¯ ²ø±â·Î ÇÑ ¹üÀ§ÀÇ ÀÎÁ¢ÇÑ ³¯Â¥µéÀ» ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù (»ç¿ëÀÚ´Â ¿©ÀüÈ÷ ÇϳªÀÇ ³¯Â¥¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù). ÀÌ ¿É¼ÇÀ» ¸í½ÃÀûÀ¸·Î ÁöÁ¤Çϰųª ÀÚµ¿À¸·Î ÄÓ ¼ö ÀÖ½À´Ï´Ù ÄÜÆ®·ÑÀÌ »ý¼ºµÉ ¶§ ¼±Åà ¹üÀ§¸¦ ÁöÁ¤ÇÏ¸é µË´Ï´Ù. ¿¹¸¦ µé¾î: Gui, Add, MonthCal, vMyCal, 20050101-20050108. ÄÜÆ®·ÑÀÌ »ý¼ºµÇ¸é, ÀÌ ¿É¼ÇÀº ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù.

+

+Range: ´Þ·ÂÀÌ À̵¿ÇÒ ¼ö ÀÖ´Â ¹üÀ§¸¦ Á¦ÇÑÇÕ´Ï´Ù. ´Ü¾î Range ´ÙÀ½¿¡, YYYYMMDD Çü½ÄÀ¸·Î ÃÖ¼Ò ³¯Â¥¿Í (»çÀÌ¿¡ ¿·ÁÙ) ÃÖ¼Ò ³¯Â¥¸¦ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, Range20050101-20050615ÀÌ¸é ¼±ÅÃÀÌ 2005 ³âÀÇ Àü¹Ý 5.5 ´Þ·Î Á¦Çѵ˴ϴÙ. ÃÖ¼Ò ³¯Â¥³ª ÃÖ´ë ³¯Â¥¸¦ »ý·«ÇÏ¸é ´Þ·ÂÀ» ±× ¹æÇâÀ¸·Î Á¦ÇÑÇÏÁö ¾Ê°í ±×´ë·Î µÓ´Ï´Ù. ¿¹¸¦ µé¾î, Range20010101À̸é 2001 ¹Ì¸¸ÀÇ ³¯Â¥´Â ¼±ÅÃÇÏÁö ¸øÇÕ´Ï´Ù. ±×¸®°í Range-20091231À̸é (¾Õ¿¡ ¿·ÁÙ) 2009³âÀ» ÃÊ°úÇÑ ³¯Â¥´Â ¼±ÅÃÇÏÁö ¸øÇÕ´Ï´Ù. Range ¿É¼ÇÀÌ ¾ø´Ù¸é, 1601°ú 9999 »çÀÌÀÇ ³¯Â¥¸¦ ¾ó¸¶µçÁö ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+4: ¼ýÀÚ 4¸¦ Options¿¡ ÁöÁ¤ÇÏ¸é °¢°¢ÀÇ ³¯Â¥ Çà ¿ÞÂÊ¿¡ ÁÖ ¹øÈ£¸¦ º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù (1-52) . ÁÖ 1Àº ù ÁÖ¿¡ Àû¾îµµ 4ÀÏ ÀÌ»ó ÀÖ¾î¾ß ÇÕ´Ï´Ù.

+

+8: ¼ýÀÚ 8À» Options¿¡ ÁöÁ¤ÇÏ¸é ¿À´Ã ³¯Â¥¿¡ µ¿±×¶ó¹Ì¸¦ Ä¡Áö ¾Ê½À´Ï´Ù.

+

16: ¼ýÀÚ 16À» Options¿¡ ÁöÁ¤ÇÏ¸é ¿À´Ã ³¯Â¥°¡ ÄÜÆ®·Ñ ¾Æ·¡¿¡ ³ªÅ¸³ªÁö ¾Ê½À´Ï´Ù.

+ +

Slider

+

+¼³¸í: »ç¿ëÀÚ°¡ ¼öÁ÷ ¶Ç´Â ¼öÆòÀ¸·Î Æ®·¢À» µû¶ó°¡¸ç À̵¿ÇÒ ¼ö ÀÖ´Â ½½¶óÀ̵ù ¹Ù. ŽºÅ©¹Ù Æ®·¹ÀÌ¿¡ Àִ ǥÁØ º¼·ý ÄÜÆ®·ÑÀÌ ½½¶óÀÌ´õÀÇ ÇÑ ¿¹ÀÔ´Ï´Ù. ¿¹Á¦:

+ +
Gui, Add, Slider, vMySlider, 50
+

+½½¶óÀÌ´õÀÇ ½ÃÀÛ À§Ä¡¸¦ ¸¶Áö¸· ¸Å°³º¯¼ö·Î ÁöÁ¤ÇϽʽÿÀ. ¸¶Áö¸· ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, ½½¶óÀÌ´õ´Â 0¿¡¼­ ½ÃÀÛÇϰųª Çã¿ë °¡´ÉÇÑ ¹üÀ§¿¡¼­ 0¿¡ °¡±î¿î ¼ö¿¡¼­ ½ÃÀÛÇÕ´Ï´Ù.

+

+»ç¿ëÀÚ´Â ÄÜÆ®·ÑÀ» ´ÙÀ½°ú °°Àº ¼ö´ÜÀ» »ç¿ëÇÏ¿© ½½¶óÀ̵åÇÒ ¼ö ÀÖ½À´Ï´Ù: 1) ¹Ù¸¦ ¸¶¿ì½º·Î ²ø¾î¼­; 2) ¹ÙÀÇ Æ®·¢ ±¸¿ª¿¡ Ŭ¸¯Çؼ­; 3) ÄÜÆ®·Ñ¿¡ ÃÊÁ¡ÀÌ ÀÖ´Â µ¿¾È ¸¶¿ì½º ÈÙÀ» µ¹·Á¼­; ¶Ç´Â 4) ÄÜÆ®·Ñ¿¡ ÃÊÁ¡ÀÌ ÀÖ´Â µ¿¾È ´ÙÀ½ Å°¸¦ ´­·¯¼­: Arrow keys, Page-up, Page-down, Home, ±×¸®°í End.

+

+Gui Submit ¸í·É¾î¸¦ »ç¿ëÇϸé, ÄÜÆ®·ÑÀÇ ¿¬°ü Ãâ·Â º¯¼ö°¡ (ÀÖ´Ù¸é) ½½¶óÀÌ´õÀÇ ÇöÀç À§Ä¡¸¦ ¹Þ½À´Ï´Ù. ±× À§Ä¡´Â ¶ÇÇÑ ÄÜÆ®·ÑÀÇ g-¶óº§ÀÌ ±âµ¿µÉ ¶§¸¶´Ù Ãâ·Â º¯¼ö¿¡ ÀúÀåµË´Ï´Ù.

+

+½½¶óÀÌ´õ¿¡ g-¶óº§ÀÌ ÀÖ´Ù¸é, ±âº»°ªÀ¸·Î ¿ÀÁ÷ »ç¿ëÀÚ°¡ ½½¶óÀÌ´õ À̵¿À» ¸ØÃß¾úÀ» °æ¿ì¿¡¸¸ (¿¹¸¦ µé¾î ¸¶¿ì½º¸¦ ²ø´Ù°¡ ¹öÆ°À» ³õÀº °æ¿ì) ±âµ¿µË´Ï´Ù. ±×·¸Áö¸¸, ´Ü¾î AltSubmitÀÌ ÄÜÆ®·ÑÀÇ Options¿¡ ÀÖ´Ù¸é, g-¶óº§Àº ¸ðµç ½½¶óÀÌ´õ À̺¥Æ®¿¡ ±âµ¿µË´Ï´Ù. ±×¸®°í ³»Àå º¯¼ö A_GuiEvent¿¡ ´ÙÀ½ ¼ýÀÚ ¶Ç´Â ¹®ÀÚ¿­ Áß Çϳª°¡ ´ã±é´Ï´Ù:

+

+ 0: »ç¿ëÀÚ°¡ ¿Þ-È­»ìÇ¥ Å° ¶Ç´Â À§-È­»ìÇ¥ Å°¸¦ ´­·¶½À´Ï´Ù.
+ 1: »ç¿ëÀÚ°¡ ¿ì-È­»ìÇ¥ Å° µµ´Â ¾Æ·¡-È­»ìÇ¥ Å°¸¦ ´­·¶½À´Ï´Ù.
+ 2: »ç¿ëÀÚ°¡ ÆäÀÌÁö-¾÷ Å°¸¦ ´­·¶½À´Ï´Ù.
+ 3: »ç¿ëÀÚ°¡ ÆäÀÌÁö-´Ù¿î Å°¸¦ ´­·¶½À´Ï´Ù.
+ 4: »ç¿ëÀÚ°¡ ¸¶¿ì½º ÈÙÀ» »ç¿ëÇÏ¿© ½½¶óÀÌ´õ¸¦ À̵¿½ÃÄ×½À´Ï´Ù. ¶Ç´Â »õ·Î¿î À§Ä¡¿¡ ²ø¾î ¶³±¸±â¸¦ ³¡³Â½À´Ï´Ù.
+ 5: »ç¿ëÀÚ°¡ ÇöÀç ¸¶¿ì½º·Î ½½¶óÀÌ´õ¸¦ ²ø°í ÀÖ½À´Ï´Ù; Áï, ¸¶¿ì½º ¹öÆ°ÀÌ ÇöÀç ´­·Á ÀÖ½À´Ï´Ù.
+ 6: »ç¿ëÀÚ°¡ Ȩ۸¦ ´­·¯ ½½¶óÀÌ´õ¸¦ ¿ÞÂÊ ¶Ç´Â À§ÂÊÀ¸·Î º¸³Â½À´Ï´Ù.
+ 7: »ç¿ëÀÚ°¡ ¿£µå Å°¸¦ ´­·¯ ½½¶óÀÌ´õ¸¦ ¿À¸¥ÂÊÀ̳ª ¾Æ·§ÂÊÀ¸·Î º¸³Â½À´Ï´Ù.
+ Normal: »ç¿ëÀÚ°¡ ¸¶¿ì½º³ª Å°º¸µå¸¦ ÅëÇÏ¿© ½½¶óÀÌ´õ À̵¿À» ¸¶ÃƽÀ´Ï´Ù. ÁÖÀÇ: ¸¶¿ì½º ÈÙ À̵¿ÀÇ ¿¹¿Ü·Î (#4), À§ÀÇ ¼ýÀÚ-À̺¥Æ® Áß Çϳª¿¡ ÀÌ¹Ì ±âµ¿µÇ¾úÀ½¿¡µµ ºÒ±¸ÇÏ°í g-¶óº§ÀÌ "Á¤»ó" À̺¥Æ®¿¡ ´ëÇÏ¿© ´Ù½Ã ±âµ¿ÇÕ´Ï´Ù.

+ +

½½¶óÀÌ´õ ¿É¼Ç

+

+Buddy1 ±×¸®°í Buddy2: ÃÖ´ë µÎ °³ÀÇ ±âÁ¸ÀÇ ÄÜÆ®·ÑÀ» ÁöÁ¤Çϸé ÀÚµ¿À¸·Î ½½¶óÀÌ´õÀÇ ¾ç ³¡¿¡ Àç¹èÄ¡µË´Ï´Ù. Buddy1Àº Áº¯ ¶Ç´Â »óº¯¿¡ º¸¿©Áý´Ï´Ù (Vertical ¿É¼Ç ¿©ºÎ¿¡ µû¶ó ´Þ¶óÁü). Buddy2´Â ¿ìº¯ ¶Ç´Â ÇϺ¯¿¡ º¸¿©Áý´Ï´Ù. ´Ü¾î Buddy1 ¶Ç´Â Buddy2 ´ÙÀ½¿¡, ±âÁ¸ÀÇ ÄÜÆ®·ÑÀÇ º¯¼ö À̸§À» ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, Buddy1MyTopTextÀ̶ó¸é º¯¼ö À̸§ÀÌ MyTopTextÀÎ ÄÜÆ®·ÑÀ» ÇÒ´çÇÕ´Ï´Ù.

+

+Center: ¾öÁö ¼ÕÀâÀÌ´Â (»ç¿ëÀÚ°¡ À̵¿ÇÏ´Â ¸·´ë) ¾çÂÊÀÌ »ÏÁ·ÇÏÁö ¾Ê°í ¹¶¶×ÇØÁý´Ï´Ù.

+

+Invert: ÄÜÆ®·ÑÀ» µÚÁý½À´Ï´Ù. ³·Àº °ªÀÌ ÁÂ/»óÀÌ ¾Æ´Ï¶ó ¿ì/ÇÏ¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ. ÀÌ°ÍÀº ÀüÇüÀûÀ¸·Î ¼öÁ÷ ½½¶óÀÌ´õ¸¦ ÀüÅëÀûÀÎ º¼·ý ÄÜÆ®·ÑÀÇ ¹æÇâÀ¸·Î À̵¿½ÃÅ°´Âµ¥ »ç¿ëµË´Ï´Ù. ÁÖÀÇ: ¾Æ·¡¿¡ ±â¼úÇÑ ToolTip ¿É¼ÇÀº µÚÁý±â¸¦ ÁؼöÇÏÁö ¾Ê½À´Ï´Ù. ±×·¯¹Ç·Î ÀÌ °æ¿ì´Â »ç¿ëÇÏ¸é ¾È µË´Ï´Ù.

+

+Left: ¾öÁö ¼ÕÀâÀÌ´Â (»ç¿ëÀÚ¿¡ ÀÇÇÏ¿© À̵¿µÇ´Â ¸·´ë) ¾Æ·¡°¡ ¾Æ´Ï¶ó À§ÂÊÀ¸·Î »ÏÁ·ÇÕ´Ï´Ù. ±×·¯³ª Vertical ¿É¼ÇÀ» ÄѸé, ¾öÁö ¼ÕÀâÀÌ´Â ¿À¸¥ÂÊÀÌ ¾Æ´Ï¶ó ¿ÞÂÊÀ¸·Î »ÏÁ·ÇÕ´Ï´Ù.

+

+Line: »ç¿ëÀÚ°¡ È­»ìÇ¥ Å°¸¦ ´©¸¦ ¶§ À̵¿ÇÒ À§Ä¡ ¹øÈ£¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ´Ü¾î Line ´ÙÀ½¿¡, À̵¿ÇÒ À§Ä¡ ¹øÈ£¸¦ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î: Line2.

+

+NoTicks: Æ®·¢À» µû¶ó ƽǥ½ÄÀ» »ý·«ÇÕ´Ï´Ù.

+

+Page: »ç¿ëÀÚ°¡ Page-up ¶Ç´Â Page-down Å°¸¦ ´©¸¦ ¶§ À̵¿ÇÒ À§Ä¡ÀÇ ¹øÈ£¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ´Ü¾î Page ´ÙÀ½¿¡, À̵¿ÇÒ À§Ä¡ÀÇ ¹øÈ£¸¦ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î: Page10.

+

+Range: ¹üÀ§¸¦ 0ºÎÅÍ 100¸»°í ´Ù¸£°Ô ÁöÁ¤ÇÕ´Ï´Ù. ´Ü¾î Range ´ÙÀ½¿¡, ÃÖ¼Ò°ª, ¿· ÁÙ, ÃÖ´ë°ªÀ» ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, +Range1-1000ÀÌ¸é ¼ýÀÚ¸¦ 1ºÎÅÍ 1000±îÁö ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù; Range-50-50ÀÌ¸é ¼ýÀÚ¸¦ -50ºÎÅÍ 50±îÁö ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù; ±×¸®°í Range-10--5ÀÌ¸é ¼ýÀÚ¸¦ -10ºÎÅÍ -5±îÁö Çã¿ëÇÕ´Ï´Ù.

+

+Thick: ¾öÁö ³×¸ðÀÇ ±æÀ̸¦ ÁöÁ¤ÇÕ´Ï´Ù (»ç¿ëÀÚ°¡ À̵¿ÇÏ´Â »ç°¢Çü ¸·´ë). ´Ü¾î Thick ´ÙÀ½¿¡, Çȼ¿ ´ÜÀ§·Î µÎ²²¸¦ ÁöÁ¤ÇϽʽÿÀ (¿¹, Thick30). Windows XP À̻󿡼­ ÀÏÁ¤ µÎ²²¸¦ ³Ñ¾î¼­¸é, ¾Æ¸¶µµ Center ¿É¼ÇÀ» ÁöÁ¤Çϰųª ¾Æ´Ï¸é ÄÜÆ®·Ñ¿¡¼­ Á¦°ÅÇÒ ÇÊ¿ä°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù (ÄÜÆ®·Ñ ¿É¼Ç¿¡ -ThemeÀ» ÁöÁ¤Çϸé ÇØ°áÇÒ ¼ö ÀÖ½À´Ï´Ù).

+

+TickInterval: ÁöÁ¤µÈ °£°ÝÀ¸·Î Æ®·¢À» µû¶ó ƽǥ½ÄÀ» Á¦°øÇÕ´Ï´Ù. ´Ü¾î TickInterval ´ÙÀ½¿¡, Ãß°¡ ƽ Ç¥½ÄÀ» º¸¿©ÁÙ °£°ÝÀ» ÁöÁ¤ÇÕ´Ï´Ù (°£°ÝÀ» »ý·«Çϸé, 1À̶ó°í °£ÁÖÇÕ´Ï´Ù). ¿¹¸¦ µé¾î, TickInterval10À̸é ƽǥ½ÄÀÌ ¸Å 10 À§Ä¡¸¶´Ù Çϳª¾¿ º¸ÀÔ´Ï´Ù.

+

+ToolTip: »ç¿ëÀÚ°¡ ½½¶óÀÌ´õ¸¦ ²ô´Â µ¿¾È À§Ä¡¸¦ ¼ýÀÚ·Î º¸°íÇÏ´Â ÅøÆÁÀ» »ý¼ºÇÕ´Ï´Ù. ÅøÆÁÀ» ±âº» À§Ä¡ ¾Æ´Ñ °÷¿¡ º¸¿©ÁÖ·Á¸é, ´ë½Å ´ÙÀ½ Áß Çϳª¸¦ ÁöÁ¤ÇϽʽÿÀ: ToolTipLeft ¶Ç´Â ToolTipRight (¼öÁ÷ ½½¶óÀÌ´õ ¿ë); ToolTipTop ¶Ç´Â ToolTipBottom (¼öÆò ½½¶óÀÌ´õ ¿ë).

+

Vertical: ÄÜÆ®·ÑÀ» À§ ¾Æ·¡·Î ¿òÁ÷ÀÔ´Ï´Ù.

+

+À§ÀÇ ¿É¼ÇµéÀº ÄÜÆ®·ÑÀÌ »ý¼ºµÈ ÈÄ¿¡ GuiControlÀ» ÅëÇÏ¿© ¹Ù²Ü ¼ö ÀÖÀÖ½À´Ï´Ù.

+ +

Progress

+

+¼³¸í: ÀüÇüÀûÀ¸·Î ¿¬»êÀÇ ¿Ï¼ºÀ» ÇâÇØ ¾ó¸¶³ª ¸¹ÀÌ Áøµµ°¡ ³ª°¬´ÂÁö ³ªÅ¸³»´Â µ¥ »ç¿ëµÇ´Â ÀÌÁß Ä÷¯ ¹Ù. ¿¹Á¦:

+ +
Gui, Add, Progress, w300 h20 cBlue vMyProgress
+

+¹ÙÀÇ ½ÃÀÛ À§Ä¡¸¦ ¸¶Áö¸· ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇϽʽÿÀ (»ý·«Çϸé, ¹Ù´Â 0¿¡¼­ ½ÃÀÛÇϰųª Çã¿ëÇÏ´Â ¹üÀ§ ³»¿¡¼­ 0¿¡ °¡Àå ±î±î¿î ¼ýÀÚ¿¡¼­ ½ÃÀÛÇÕ´Ï´Ù). ³ªÁß¿¡ ¹ÙÀÇ À§Ä¡¸¦ ¹Ù²Ù·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À. ¸ðµç ¿¹Á¦°¡ ¿¬°ü º¯¼ö À̸§ÀÌ MyProgressÀÎ ÇÁ·Î±×·¹½º ¹Ù¿¡ ÀÛµ¿ÇÕ´Ï´Ù:

+ +
GuiControl,, MyProgress, +20  ; ÇöÀç À§Ä¡¸¦ 20¸¸Å­ Áõ°¡½Ãŵ´Ï´Ù.
+GuiControl,, MyProgress, 50  ; ÇöÀç À§Ä¡¸¦ 50À¸·Î ¼³Á¤ÇÕ´Ï´Ù.
+

+¼öÆò ÇÁ·Î±×·¹½º ¹Ù¿¡ ´ëÇÏ¿©, ¹ÙÀÇ µÎ²²´Â ±× ÄÜÆ®·ÑÀÇ ³ôÀÌ¿Í °°½À´Ï´Ù. ¼öÁ÷ ½ºÅ©·Ñ ¹Ù¿¡ ´ëÇÏ¿©, ¹ÙÀÇ ³Êºñ´Â ±× ÄÜÆ®·ÑÀÇ ³Êºñ¿Í °°½À´Ï´Ù.

+ +

Progress ¿É¼Ç

+

+Cn: ¹ÙÀÇ Ä÷¯¸¦ ¹Ù²ß´Ï´Ù. n¿¡ 16°¡Áö ±âº» HTML Ä÷¯ À̸§Áß Çϳª ¶Ç´Â 6-ÀÚ¸® RGB Ä÷¯ °ªÀ» ÁöÁ¤ÇϽʽÿÀ. ¿¹Á¦: cRed, cFFFF33, cDefault. C ¿É¼ÇÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¸é (¶Ç´Â cDefault¸¦ ÁöÁ¤Çϸé), ½Ã½ºÅÛÀÇ ±âº» ¹Ù Ä÷¯°¡ »ç¿ëµË´Ï´Ù.

+

+BackgroundN: ¹ÙÀÇ ¹è°æ»öÀ» º¯°æÇÕ´Ï´Ù. n¿¡ 16°¡Áö ±âº» HTML Ä÷¯ À̸§Áß Çϳª ¶Ç´Â 6-ÀÚ¸® RGB °ªÀ» ÁöÁ¤ÇϽʽÿÀ. ¿¹Á¦: BackgroundGreen, BackgroundFFFF33, BackgroundDefault. Background ¿É¼ÇÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¸é (¶Ç´Â BackgroundDefault¸¦ ÁöÁ¤Çϸé), ¹è°æ»öÀº ±× µÚ¿¡ Àִ âÀÇ ¹è°æ»ö ¶Ç´Â ÅÇ ÄÜÆ®·ÑÀÇ ¹è°æ»öÀÌ »ç¿ëµË´Ï´Ù.

+

+Range: ¹üÀ§¸¦ 0ºÎÅÍ 100¸»°í ´Ù¸¥ °ªÀ¸·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ´Ü¾î Range ´ÙÀ½¿¡, ÃÖ¼Ò°ª, ¿·ÁÙ Çϳª, ±×¸®°í ÃÖ´ë °ªÀ» ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, Range0-1000ÀÌ¸é ¼ýÀÚ¸£ 0ºÎÅÍ 1000±îÁö Áö¿øÇÕ´Ï´Ù; Range-50-50ÀÌ¸é ¼ýÀÚ¸¦ -50ºÎÅÍ 50±îÁö Çã¿ëÇÕ´Ï´Ù; ±×¸®°í Range-10--5À̸é -10ºÎÅÍ -5 ±îÁöÀÇ ¼ýÀÚ¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+-Smooth (¸¶À̳ʽº Smooth): ºÎµå·´°Ô ¿¬¼ÓµÈ ¹Ù°¡ ¾Æ´Ï¶ó ¼¼Å©¸ÕÆ®ÀÇ ±æÀ̸¦ º¸¿©ÁÝ´Ï´Ù. -Smooth¸¦ ÁöÁ¤Çؾ߸¸ Windows XP ÀÌÈÄ¿¡¼­ Å׸¶ ÇÁ·Î±×·¹½º ¹Ù¸¦ º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ Á¶°ÇÀ¸·Î´Â ¹Ù¿¡ ¸ÂÃã Ä÷¯°¡ ¾ø¾î¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù; Áï, C ±×¸®°í Background ¿É¼ÇÀº »ý·«ÇØ¾ß ÇÕ´Ï´Ù.

+

+Vertical: ¹Ù¸¦ ¼¼¿ì°Å³ª ¼öÁ÷À¸·Î ´Ã¾î¶ß¸³´Ï´Ù.

+

+À§ÀÇ ¿É¼ÇÀº ÄÜÆ®·ÑÀÌ »ý¼ºµÈ ÈÄ¿¡ GuiControl¸¦ ÅëÇÏ¿© ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+ +

GroupBox

+

+¼³¸í: »ç°¢ Å׵θ®/ÇÁ·¹ÀÓ, Á¾Á¾ ´Ù¸¥ ÄÜÆ®·Ñ µÑ·¹¿¡ ¼­·Î °ü·ÃÀÌ ÀÖÀ½À» ³ªÅ¸³»´Â µ¥ »ç¿ëµÊ. ÀÌ °æ¿ì, ¸¶Áö¸· ¸Å°³º¯¼ö´Â ¹Ú½ºÀÇ Á¦¸ñÀÌ°í, Á¸ÀçÇÑ´Ù¸é, Á»ó ¸ð¼­¸®¿¡ º¸¿©Áý´Ï´Ù. ¿¹Á¦:

+ +
Gui, Add, GroupBox, w400 h300, Geographic Criteria
+

+±âº»°ªÀ¸·Î GroupBoxÀÇ Á¦¸ñÀº ¿ÀÁ÷ ÇÑÁÙÀÇ ÅؽºÆ®¸¸ °¡Áú ¼ö ÀÖ½À´Ï´Ù. ÀÌ´Â ¿É¼Ç¿¡ Wrap À» ÁöÁ¤ÇÏ¸é ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+

+ÄÜÆ®·Ñ ¾È¿¡ ÇàÀÇ °³¼ö¸¦ ÁöÁ¤ÇÏ·Á¸é (¶Ç´Â ±×ÀÇ ³Êºñ¿Í ³ôÀ̸¦ ÁöÁ¤ÇÏ·Á¸é), ÄÜÆ®·ÑÀÇ À§Ä¡¿Í Å©±â º¯°æÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

Tab2

+

+¼³¸í: ¿©·¯ ÆäÀÌÁö¸¦ ´ã°í ÀÖ´Â Ä¿´Ù¶õ ÄÜÆ®·Ñ. °¢ ÆäÀÌÁö¿¡ ´Ù¸¥ ÄÜÆ®·ÑÀÌ ´ã°Ü ÀÖ½À´Ï´Ù. ÀÌ °üÁ¡¿¡¼­ ÇÑ ¹ß ´õ ³ª¾Æ°¡ ÀÌ·± ÆäÀÌÁöµéÀ» "ÅÇ"À̶ó°í ºÎ¸¨´Ï´Ù.

+

+Tab2 vs. Tab: v1.0.47.05¿¡¼­ "Tab2" ÄÜÆ®·ÑÀÌ Ãß°¡µÇ¾ú½À´Ï´Ù. ¿ø·¡ "Tab" ÄÜÆ®·ÑÀÇ Èñ±ÍÇÑ Àç±×¸®±â ¹®Á¦¸¦ ÇØ°áÇÏ¿´½À´Ï´Ù (¿¹, ±×ÀÇ ÄÜÆ®·ÑÀÇ ¾î¶² ºÎºÐÀ» ¿¹¸¦ µé¾î ½ºÅ©·Ñ¹Ù¸¦ Ŭ¸¯ÇÏ¿© GUI¸¦ È°¼ºÈ­ Çϸé Á¦´ë·Î ´Ù½Ã ±×¸®Áö ¸øÇß½À´Ï´Ù). ¿ø·¡ÀÇ ÅÇ ÄÜÆ®·ÑÀº ÇÏÀ§ ȣȯÀ» À§ÇØ À¯ÁöµË´Ï´Ù. ¿Ö³ÄÇϸé Tab2´Â ÀÚ½ÅÀÇ ÅÇ ÄÜÆ®·ÑÀ» Àڽſ¡°Ô Æ÷ÇÔµÈ ÄÜÆ®·Ñµé ´ÙÀ½¿¡ ÅÇ-Å° Ç×ÇØ ¼ø¼­·Î ¹èÄ¡Çϱ⠶§¹®ÀÔ´Ï´Ù. »õ ½ºÅ©¸³Æ®´Â °¡´ÉÇϸé Tab2¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ¿¹Á¦:

+ +
Gui, Add, Tab2,, General|View|Appearance|Settings
+

+À§ÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö´Â ÆÄÀÌÇÁ·Î ±¸ºÐµÈ ÅÇ À̸§ ¸®½ºÆ®ÀÔ´Ï´Ù. âÀÌ Ã³À½ ³ªÅ¸³¯ ¶§ ÅÇ Áß¿¡ Çϳª¸¦ ¹Ì¸® ¼±ÅÃÇÏ·Á¸é, µÎ °³ÀÇ ÆÄÀÌÇÁ ¹®ÀÚ¸¦ ±× ´ÙÀ½¿¡ Æ÷ÇÔÇϽʽÿÀ (¿¹, Red|Green||Blue). ´Ù¸¥ ¹æ¹ýÀ¸·Î, Options¿¡ ´Ü¾î Choose¿Í ¹Ù·Î ´ÙÀ½¿¡ ¹Ì¸® ¼±ÅÃÇÒ ¼ýÀÚ¸¦ ÁöÁ¤ÇÒ ¼öÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Choose5´Â ´Ù¼¸ ¹ø° ÅÇÀ» ¹Ì¸® ¼±ÅÃÇÕ´Ï´Ù (´Ù¸¥ ¿É¼Çµéó·³, Choose%Var%¿Í °°Àº º¯¼ö°¡ µÉ ¼öµµ ÀÖ½À´Ï´Ù). ÄÜÆ®·ÑÀÌ »ý¼ºµÈ ´ÙÀ½¿¡ ¼±ÅÃµÈ ÅÇÀ» º¯°æÇÏ·Á¸é, ¶Ç´Â ÅÇÀ» Ãß°¡Çϰųª Á¦°ÅÇÏ·Á¸é, GuiControlÀ» »ç¿ëÇϽʽÿÀ.

+

+ÅÇ ÄÜÆ®·ÑÀ» ¸¸µé°í ³­ ÈÄ, À̾ Ãß°¡µÇ´Â ÄÜÆ®·ÑµéÀº ÀÚµ¿À¸·Î ±×ÀÇ Ã¹ ¹ø° ÅÇ¿¡ ¼ÓÇÕ´Ï´Ù. ÀÌ°ÍÀº ´ÙÀ½ ¿¹Á¦¸¦ µû¶ó ¾ðÁ¦µçÁö ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù:

+ +
Gui, Tab  ; ¹Ì·¡ÀÇ ÄÜÆ®·ÑµéÀº ÅÇ ÄÜÆ®·ÑÀÇ ÀϺΰ¡ ¾Æ´Õ´Ï´Ù.
+Gui, Tab, 3  ; ¹Ì·¡ÀÇ ÄÜÆ®·ÑµéÀº ÇöÀç ÅÇ ÄÜÆ®·ÑÀÇ ¼¼ ¹ø° ÅÇ¿¡ ¼ÓÇÕ´Ï´Ù.
+Gui, Tab, 3, 2  ; ¹Ì·¡ÀÇ ÄÜÆ®·ÑµéÀº µÎ ¹ø° ÅÇ ÄÜÆ®·ÑÀÇ ¼¼ ¹ø° ÅÇÀÌ ¼ÒÀ¯ÇÕ´Ï´Ù.
+Gui, Tab, Name  ; ¹Ì·¡ÀÇ ÄÜÆ®·ÑµéÀº À̸§ÀÌ Name (´ë¼Ò¹®ÀÚ ±¸ºÐ ¾øÀ½)À¸·Î ½ÃÀÛÇÏ´Â ÅÇÀÌ ¼ÒÀ¯ÇÕ´Ï´Ù.
+Gui, Tab, Name,, Exact  ; À§¿Í µ¿ÀÏÇÏÁö¸¸ Á¤È®ÇÏ°Ô ºÎÇÕÇØ¾ß ÇÕ´Ï´Ù (´ë¼Ò¹®ÀÚµµ ±¸ºÐ).
+

+À§ÀÇ ¿¹Á¦¸¦ »ç¿ëÇØ ¾ÆÁ÷ Á¸ÀçÇÏÁö ¾Ê´Â ÅÇÀ̳ª ÅÇ ÄÜÆ®·Ñ¿¡ ÇÒ´çÇÏ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù (Name ¹æ¹ýÀº ¿¹¿ÜÀÓ). ±×·¯³ª ±× °æ¿ì, ¾Æ·¡¿¡ ±â¼úµÈ »óÅÂÀûÀÎ À§Ä¡ ÁöÁ¤ ¿É¼ÇÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.

+

+¹èÄ¡: ÅÇ ÄÜÆ®·ÑÀÇ °¢ ÅÇÀÌ ±×ÀÇ Ã¹ ºÎ-ÄÜÆ®·ÑÀ» ¹ÞÀ» ¶§, ±× ºÎ-ÄÜÆ®·ÑÀº Ư¼öÇÑ ±âº» À§Ä¡°¡ ÀÖ½À´Ï´Ù. ±âº» À§Ä¡´Â ´ÙÀ½ Á¶°Ç¿¡ µû¸¨´Ï´Ù: +

    +
  1. X¿Í Y ÁÂÇ¥°¡ µÑ ´Ù »ý·«µÇ¸é, ±× ù ºÎ-ÄÜÆ®·ÑÀº (Ç¥ÁØ ¿©¹éÀ» °¡Áø) ÅÇ ÄÜÆ®·Ñ ³»ºÎÀÇ Á»ó ¸ð¼­¸®¿¡ ¹èÄ¡µË´Ï´Ù. ±×¸®°í ù ºÎÄÜÆ®·Ñ ¿ÜÀÇ ºÎÄÜÆ®·ÑµéÀº ±× ¾Æ·¡·Î ¹èÄ¡µË´Ï´Ù; +
  2. X+n ±×¸®°í/¶Ç´Â Y+n ¿É¼ÇÀÌ ÁöÁ¤µÇ¾úÀ¸¸é, ±× ù ºÎ ÄÜÆ®·ÑÀº ÅÇ ÄÜÆ®·Ñ ³»ºÎÀÇ Á»ó ¸ð¼­¸®¿¡ »ó´ëÀûÀ¸·Î ¹èÄ¡µË´Ï´Ù. ¿¹¸¦ µé¾î, x+10 y+10À» ÁöÁ¤ÇÏ¸é ±× ºÎÄÜÆ®·ÑÀÌ Á»ó ¸ð¼­¸®·ÎºÎÅÍ 10 Çȼ¿ ¿À¸¥ÂÊ ±×¸®°í 10 Çȼ¿ ¾Æ·¡ÂÊ¿¡ ÀÚ¸®¸¦ Àâ½À´Ï´Ù. +
+

+

+ºÎ-ÄÜÆ®·ÑµéÀº ¹Ýµå½Ã ÅÇ ÄÜÆ®·ÑÀÇ °æ°è ¾È¿¡ Á¸ÀçÇØ¾ß ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù: ÅÇÀÌ ¼±Åõǰųª ÇØÁ¦µÉ ¶§ ¿©ÀüÈ÷ ¼û°Å³ª º¸¿©Áý´Ï´Ù. ÀÌ ÇàÀ§´Â ƯÈ÷ ¾Æ·¡¿¡ ±â¼úµÈ "¹öÆ°" ½ºÅ¸ÀÏÀÇ ÇàÀ§¿¡ ÀûÇÕÇÕ´Ï´Ù.

+

+Gui Submit ¸í·É¾î¸¦ »ç¿ëÇϸé, ÄÜÆ®·ÑÀÇ ¿¬°ü Ãâ·Â º¯¼ö°¡ (ÀÖ´Ù¸é) ÇöÀç ¼±ÅÃµÈ ÅÇÀÇ À̸§À» ¹Þ½À´Ï´Ù. ±×·¸Áö¸¸, ±× ÄÜÆ®·Ñ¿¡ AltSubmit Ư¼ºÀÌ ÀÖ´Ù¸é, ±× Ãâ·Â º¯¼ö´Â ´ë½Å¿¡ ÅÇÀÇ À§Ä¡¸¦ ¹Þ½À´Ï´Ù (ù¹ø° ÅÇÀº 1ÀÌ°í, µÎ ¹ø°´Â 2ÀÌ°í, µîµî.).

+

+gMySubroutine°ú °°Àº g-¶óº§À» ÄÜÆ®·ÑÀÇ ¿É¼Ç¿¡ ³ª¿­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô Çϸé MySubroutine ¶óº§ÀÌ »ç¿ëÀÚ°¡ »õ ÅÇÀ¸·Î º¯°æÇÒ ¶§¸¶´Ù ÀÚµ¿À¸·Î ±âµ¿µË´Ï´Ù. ÅÇ ÄÜÆ®·Ñ¿¡ g-¶óº§°ú Ãâ·Â º¯¼ö°¡ µÑ ´Ù ÀÖ´Ù¸é, »ç¿ëÀÚ°¡ »õ ÅÇÀ¸·Î ÀüȯÇÒ ¶§¸¶´Ù, Ãâ·Â º¯¼ö´Â ÀÌÀü¿¡ ¼±ÅÃµÈ ÅÇ À̸§ÀÌ ¼³Á¤µË´Ï´Ù (¶Ç´Â AltSubmitÀÇ °æ¿ì¶ó¸é ¹øÈ£°¡ ¼³Á¤µË´Ï´Ù).

+

+Å°º¸µå Ç×ÇØ: »ç¿ëÀÚ´Â Control-PageDown/PageUpÀ» ´­·¯ ÅÇ ÄÜÆ®·ÑÀÇ ÆäÀÌÁö¿¡¼­ ÆäÀÌÁö·Î Ç×ÇØÇÒ ¼ö ÀÖ½À´Ï´Ù; Å°º¸µå ÃÊÁ¡ÀÌ ÅÇ ÄÜÆ®·Ñ¿¡ ¼ÓÇÏÁö ¾Ê´Â ÄÜÆ®·Ñ¿¡ ÀÖ´Ù¸é, ±× âÀÇ Ã¹ ÅÇ ÄÜÆ®·Ñ·Î ÃÊÁ¡ÀÌ À̵¿ÇÕ´Ï´Ù. Control-Tab ±×¸®°í Control-Shift-TabÀ» »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ´Ü, ÇöÀç ÃÊÁ¡ÀÌ ÀÖ´Â ÄÜÆ®·ÑÀÌ ¿©·¯-ÁÙ ÆíÁý ÄÜÆ®·ÑÀ̶ó¸é Àß ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù.

+

+°¢ âÀº ÃÖ´ë 255 ÅÇ ÄÜÆ®·ÑÀ» °¡Áú ¼ö ÀÖ½À´Ï´Ù. °¢ ÅÇ ÄÜÆ®·ÑÀº 256 ÅÇ (ÆäÀÌÁö) ÀÌ»óÀ» °¡Áú ¼ö ¾ø½À´Ï´Ù. °Ô´Ù°¡, ÅÇ ÄÜÆ®·ÑÀº ¶Ç´Ù¸¥ ÅÇ ÄÜÆ®·ÑÀ» ´ãÀ» ¼ö ¾ø½À´Ï´Ù.

+ +

Tab ¿É¼Ç

+

+Choose: À§ ÂüÁ¶.

+

-Background (¸¶À̳ʽº ´ÙÀ½¿¡ ´Ü¾î Background): âÀÇ ¸ÂÃã ¹è°æ»öÀ» ¿À¹ö¶óÀ̵å ÇÏ°í ½Ã½ºÅÛÀÇ ±âº» ÅÇ ÄÜÆ®·ÑÀ» »ç¿ëÇÕ´Ï´Ù. +Theme -Background¸¦ ÁöÁ¤Çϸé ÅÇ ÄÜÆ®·ÑÀÌ ÇöÀç ¹ÙÅÁÈ­¸é Å׸¶¸¦ ÁؼöÇϵµ·Ï ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ´ëºÎºÐÀÇ ÄÜÆ®·Ñ À¯ÇüÀº ±×·± ÅÇ ÄÜÆ®·Ñ ¾È¿¡¼­ ÀÌ»óÇÏ°Ô º¸ÀÏ °ÍÀÔ´Ï´Ù. ¿Ö³ÄÇÏ¸é ¹è°æ»öÀÌ ÅÇ ÄÜÆ®·ÑÀÇ ¹è°æ»ö°ú ¾î¿ï¸®Áö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ¾î¶² ÄÜÆ®·Ñ À¯Çü¿¡ ´ëÇؼ­´Â BackgroundTransÀ» ¿É¼Ç¿¡ Ãß°¡Çϸé ÀÌ ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ½À´Ï´Ù (¿¹¸¦ µé¾î Text).

+

+Buttons: ÀÏ·ÃÀÇ ÅÇÀÌ ¾Æ´Ï¶ó ÀÏ·ÃÀÇ ¹öÆ°µéÀ» ÄÜÆ®·Ñ »ó´Ü¿¡ »ý¼ºÇÕ´Ï´Ù (ÀÌ °æ¿ì, ±âº»ÀûÀ¸·Î Å׵θ®°¡ ¾ø½À´Ï´Ù. ¿Ö³ÄÇÏ¸é º¸¿©Áֱ⠱¸¿ª¿¡ ÀüÇüÀûÀ¸·Î ÄÜÆ®·ÑÀÌ µé¾î ÀÖÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù).

+

+Left/Right/Bottom: ´ÙÀ½ ´Ü¾î Áß Çϳª¸¦ ÁöÁ¤Çϸé ÅÇÀ» »ó´Ü ´ë½Å¿¡ ¿ÞÂÊ, ¿À¸¥ÂÊ, ¾Æ·¡ÂÊ¿¡ ¹èÄ¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. Left¿Í RightÀÇ ÇÑ°è¿¡ °üÇÑ °ÍÀº TCS_VERTICAL¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+-Wrap: ÅÇÀÌ ÇÑ ÇàÀ» ³Ñ°Ô Â÷ÁöÇÏÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù (ÀÌ °æ¿ì ÅÇÀÌ ³Ê¹« ¸¹ÀÌ ¸ÂÃâ ¼ö ¾øÀ¸¸é, È­»ìÇ¥ ¹öÆ°ÀÌ ³ªÅ¸³ª »ç¿ëÀÚ´Â ±×¸¦ ¿­¾î ´õ ¸¹Àº ÅÇÀ» º¼ ¼ö ÀÖ½À´Ï´Ù).

+

+ÄÜÆ®·Ñ ¾È¿¡ ÅؽºÆ® ÇàÀÇ °³¼ö¸¦ (¶Ç´Â ±×ÀÇ ³ôÀÌ¿Í ³Êºñ¸¦) ÁöÁ¤ÇÏ·Á¸é, ÄÜÆ®·ÑÀÇ À§Ä¡¿Í Å©±â º¯°æÀ» ÂüÁ¶ÇϽʽÿÀ.

+

+ÅÇ ¾ÈÀÇ ¾ÆÀÌÄÜ: SendMessage¸¦ ÅëÇÏ¿© ¾ÆÀÌÄÜÀ» °¢ ÅÇÀÇ À̸§/ÅؽºÆ® ¿·¿¡ º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº Æ÷·³ ÁÖÁ¦ ÅÇ ¾ÈÀÇ ¾ÆÀÌÄÜ¿¡¼­ ´Ù·ì´Ï´Ù.

+ +

StatusBar[v1.0.44+]

+

+¼³¸í: âÀÇ ÇÏ´Ü¿¡ ºÎÂøµÇ´Â ÇÑ ÇàÀÇ ÅؽºÆ® ±×¸®°í/¶Ç´Â ¾ÆÀÌÄܵé, ÀüÇüÀûÀ¸·Î »óȲ º¯È­¸¦ º¸°íÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ¿¹Á¦:

+ +
Gui, Add, StatusBar,, »óÅ ¹ÙÀÇ ½ÃÀÛ ÅؽºÆ® (»ý·«ÇÏ¸é ºó ä·Î ½ÃÀÛÇÔ).
+SB_SetText("ÇöÀç " . RowCount . " ÇàÀÌ ¼±ÅõǾú½À´Ï´Ù.")
+

+»óŹÙÀÇ °¡Àå °£´ÜÇÑ »ç¿ë¹ýÀº ¹«¾ð°¡ ¹Ù²ð ¶§¸¶´Ù »ç¿ëÀÚ¿¡°Ô º¸°íÇØ¾ß ÇÑ´Ù¸é SB_SetText()¸¦ È£ÃâÇÏ´Â °ÍÀÔ´Ï´Ù. ¿©·¯ Á¤º¸¸¦ º¸°íÇØ¾ß ÇÑ´Ù¸é, SB_SetParts()¸¦ ÅëÇÏ¿© ¹Ù¸¦ ¿©·¯ ±¸¿ªÀ¸·Î ³ª´©½Ê½Ã¿À. ¾ÆÀÌÄÜÀ» ¹Ù¿¡ º¸¿©ÁÖ·Á¸é, SB_SetIcon()¸¦ È£ÃâÇϽʽÿÀ.

+

+´ÙÀ½ÀÇ ¸ðµç StatusBar ÇÔ¼öµéÀº ÇöÀç ¾²·¹µåÀÇ ±âº» GUI â¿¡ ÀÛµ¿ÇÕ´Ï´Ù (ÀÌ´Â Gui, 2:Default¸¦ ÅëÇÏ¿© ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù). ±âº» âÀÌ Á¸ÀçÇÏÁö ¾Ê°Å³ª »óÅ ¹Ù°¡ ¾øÀ¸¸é, ¸ðµç SB ÇÔ¼öµéÀº 0À» µ¹·ÁÁÖ¾î ¹®Á¦°¡ ÀÖÀ½À» ¾Ë¸³´Ï´Ù.

+ +

SB_SetText(NewText [, PartNumber, Style])

+

+»óÅ ¹ÙÀÇ ÁöÁ¤µÈ ºÎºÐ¿¡ NewText¸¦ º¸¿©ÁÝ´Ï´Ù. PartNumber¸¦ »ý·«Çϸé, ±âº»°ªÀº 1ÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, 1°ú 256 »çÀÌÀÇ Á¤¼ö¸¦ ÁöÁ¤ÇϽʽÿÀ. StyleÀ» »ý·«Çϸé, ±âº»°ªÀº 0ÀÔ´Ï´Ù. ±âº»À¸·Î ¹Ù°¡ µé¾î°¡ º¸ÀÌ°Ô ¸¸µå´Â ÀüÅëÀûÀÎ Å׵θ®¸¦ »ç¿ëÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, 1À» ÁöÁ¤Çϸé Å×Åõ¸®°¡ ¾ø°í 2¸¦ ÁöÁ¤ÇÏ¸é ¹Ù°¡ Æ¢¾î ³ª¿À°Ô º¸ÀÌ°Ô ¸¸µå´Â Å×Åõ¸®¸¦ °¡Áý´Ï´Ù. ¸¶Áö¸·À¸·Î, NewTextÀÇ ¾îµð¿¡³ª ÃÖ´ë µÎ °³ÀÇ ÅÇ ¹®ÀÚ (`t)°¡ ³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù: ù ¹ø° ÅÇÀÇ ¿À¸¥ÂÊ¿¡ ÀÖ´Â °ÍµéÀº ¸ðµÎ ±× ºÎºÐ ¾È¿¡¼­ Áß¾Ó¿¡ Á¤·ÄµË´Ï´Ù. ±×¸®°í µÎ ¹ø° ÅÇ ¿À¸¥ÂÊÀ¸·Î ÀÖ´Â °ÍµéÀº ¸ðµÎ ¿À¸¥ÂÊ¿¡ Á¤·ÄµË´Ï´Ù. SB_SetText()´Â ¼º°øÇϸé 1 ½ÇÆÐÇϸé 0À» µ¹·ÁÁÝ´Ï´Ù.

+ +

SB_SetParts([Width1, Width2, ... Width255])

+

+¹Ù¸¦ ÁöÁ¤µÈ ³Êºñ¿¡ ¸Â°Ô ¿©·¯ ºÎºÐÀ¸·Î ³ª´¯´Ï´Ù (Çȼ¿ ´ÜÀ§). ¸ðµç ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, ¹Ù´Â ÇÑ °³Â¥¸® ±ä ºÎºÐÀ¸·Î º¹±¸µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ¸¶Áö¸·Àº Á¦¿ÜÇÏ°í °¢ ºÎºÐÀÇ ³Êºñ¸¦ ÁöÁ¤ÇϽʽÿÀ (¸¶Áö¸·Àº ¹ÙÀÇ ³ª¸ÓÁö ³Êºñ°¡ ä¿ó´Ï´Ù). ¿¹¸¦ µé¾î, SB_SetParts(50, 50)´Â ¼¼ ºÎºÐÀ» »ý¼ºÇÕ´Ï´Ù: ¾ÕÂÊ µÎ ºÐÀº °¢°¢ ³Êºñ°¡ 50Çȼ¿ÀÌ°í ¸¶Áö¸·Àº ³ª¸ÓÁö ³Êºñ°¡ ´Ù ä¿ó´Ï´Ù. ÁÖÀÇ: SB_SetParts()·Î "»èÁ¦µÈ" ºÎºÐÀº ´ÙÀ½¿¡ º¸¿©Áú ¶§ ÅؽºÆ® ¾øÀÌ ½ÃÀÛÇÕ´Ï´Ù. (¶Ç, ±×ÀÇ ¾ÆÀÌÄܵéÀº ÀÚµ¿À¸·Î Æı«µË´Ï´Ù). ¼º°øÇϸé, SB_SetParts()´Â 0 ¾Æ´Ñ °ªÀ» µ¹·ÁÁÝ´Ï´Ù (»óÅ ¹ÙÀÇ HWND). ½ÇÆÐÇϸé 0À» µ¹·ÁÁÝ´Ï´Ù.

+ +

SB_SetIcon(Filename [, IconNumber, PartNumber])

+

+ÀÛÀº ¾ÆÀÌÄÜÀ» ÁöÁ¤µÈ ºÎºÐ¿¡ ÀÖ´Â ÅؽºÆ® ¿ÞÂÊ¿¡ º¸¿©ÁÝ´Ï´Ù (PartNumber¸¦ »ý·«Çϸé, ±âº»°ªÀº 1ÀÔ´Ï´Ù). FilenameÀº ¾ÆÀÌÄÜ (.ICO), Ä¿¼­ (.CUR), ¶Ç´Â ¿¡´Ï¸ÞÀÌ¼Ç Ä¿¼­ (.ANI) ÆÄÀÏÀÇ À̸§ÀÔ´Ï´Ù (¾Ö´Ï¸ÞÀÌ¼Ç Ä¿¼­´Â ½ÇÁ¦·Î ¹Ù¿¡¼­ ¿òÁ÷ÀÓÀÌ ¾ø½À´Ï´Ù). ´Ù¸¥ ¾ÆÀÌÄÜ ÀÚ¿øÀ¸·Î´Â ´ÙÀ½ À¯ÇüÀÇ ÆÄÀÏÀÌ Æ÷ÇԵ˴ϴÙ: EXE, DLL, CPL, SCR, ±×¸®°í ±âŸ ¾ÆÀÌÄÜ ÀÚ¿øÀ» º¸À¯ÇÑ À¯Çüµé. ÆÄÀÏ¿¡ Àִ ù ¹ø° ¾ÆÀÌÄÜ ¸»°í ¾ÆÀÌÄÜ ±×·ìÀ» »ç¿ëÇÏ·Á¸é, ±×ÀÇ ¹øÈ£¸¦ IconNumber¿¡ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, SB_SetIcon("Shell32.dll", 2)ÀÌ¸é µÎ ¹ø° ¾ÆÀÌÄÜ ±×·ìÀÇ ±âº» ¾ÆÀÌÄÜÀ» »ç¿ëÇÕ´Ï´Ù. IconNumber°¡ À½¼öÀ̸é, ±×ÀÇ Àý´ë°ªÀÌ ½ÇÇà ÆÄÀÏ ¾È¿¡ ÀÖ´Â ¾ÆÀÌÄÜÀÇ ÀÚ¿ø ID¶ó°í °£Áֵ˴ϴÙ. SB_SetIcon()´Â ¼º°øÇÏ¸é ±× ¾ÆÀÌÄÜÀÇ HICON¸¦ µ¹·ÁÁÝ´Ï´Ù. ½ÇÆÐÇϸé 0À» µ¹·ÁÁÝ´Ï´Ù. HICONÀº ´ëºÎºÐÀÇ ½ºÅ©¸³Æ®¿¡¼­ ¹«½ÃÇصµ ¾ÈÀüÇÑ ½Ã½ºÅÛ ÀÚ¿øÀÔ´Ï´Ù. ¿Ö³ÄÇÏ¸é »óÅ ¹Ù âÀÌ Æı«µÉ ¶§ ÀÚµ¿À¸·Î Æı«µÇ±â ¶§¹®ÀÔ´Ï´Ù. ºñ½ÁÇÏ°Ô, SB_SetIcon()ÀÌ ¿¹Àü ¾ÆÀÌÄÜÀ» »õ ¾ÆÀÌÄÜÀ¸·Î ±³Ã¼Çϸé ÀÚµ¿À¸·Î ¿¹Àü ¾ÆÀÌÄÜÀÌ Æı«µË´Ï´Ù. ÀÌ´Â ´ÙÀ½°ú °°ÀÌ ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù:

+ +
Gui +LastFound
+SendMessage, 0x40F, part_number - 1, my_hIcon, msctls_statusbar321  ; 0x40F is SB_SETICON.
+ +

SB_SetProgress()

+

+»óÅ ¹Ù ¾È¿¡ ÇÁ·Î±×·¹½º ¹Ù¸¦ ¸¸µé°í Á¦¾îÇÕ´Ï´Ù. ÀÌ ±â´ÉÀº ´ÙÀ½¿¡¼­ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù: www.autohotkey.com/forum/topic37754.html

+ +

G-Label °íÁö

+

+gMySubroutine°ú °°Àº g-¶óº§À» ÄÜÆ®·ÑÀÇ ¿É¼Ç¿¡ ³ª¿­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é »ç¿ëÀÚ°¡ ¹Ù¸¦ Ŭ¸¯ÇÒ ¶§¸¶´Ù MySubroutine ¶óº§ÀÌ ÀÚµ¿À¸·Î ±âµ¿µË´Ï´Ù. ÀÌ ¼­ºê·çƾÀº ³»Àå º¯¼ö A_Gui¿Í A_GuiControl¸¦ Âü°íÇÒ ¼ö ÀÖ½À´Ï´Ù. ´õ¿í Áß¿äÇÑ °ÍÀº A_GuiEvent¸¦ Âü°íÇÒ ¼ö ÀÖ´Ù´Â °ÍÀε¥, ÀÌ ¾È¿¡ ´ÙÀ½ ¹®ÀÚ¿­ Áß Çϳª°¡ µé¾î ÀÖ½À´Ï´Ù (¹Ì·¡ ¹öÀü°úÀÇ È£È¯À» À§ÇØ, ½ºÅ©¸³Æ®´Â ÀÌ °ªµé¸¸ÀÌ °¡´ÉÇÑ À¯ÀÏÇÑ °ªÀ̶ó°í °£ÁÖÇÏ¸é ¾È µË´Ï´Ù):

+
    +
  • Normal: »ç¿ëÀÚ°¡ ¹Ù¸¦ ¿ÞŬ¸¯ Çß½À´Ï´Ù. º¯¼ö A_EventInfo¿¡ ±× ºÎºÐ ¹øÈ£°¡ ´ã±é´Ï´Ù (±×·¸Áö¸¸, ºÎºÐ ¹øÈ£´Â »ç¿ëÀÚ°¡ ¹ÙÀÇ ¿À¸¥ÂÊ º¯¿¡ ÀÖ´Â Å©±â Á¶Àý ¼ÕÀâÀÌ ±Ùó¸¦ Ŭ¸¯ÇÏ¸é ¾ÆÁÖ Å« Á¤¼öÀÏ ¼ö ÀÖ½À´Ï´Ù).
  • +
  • RightClick: »ç¿ëÀÚ°¡ ¹Ù¸¦ ¿ìŬ¸¯ Çß½À´Ï´Ù. º¯¼ö A_EventInfo¿¡ ºÎºÐ ¹øÈ£°¡ ´ã±é´Ï´Ù. ÁÖÀÇ: GuiContextMenu´Â »óÅ ¹Ù¿¡ g-¶óº§ÀÌ ÀÖ´õ¶óµµ È£ÃâµÇÁö ¾Ê½À´Ï´Ù. ¶ÇÇÑ »ç¿ëÀÚ°¡ ¾î´À ºÎºÐÀ» Ŭ¸¯Çß´ÂÁö ½ºÅ©¸³Æ®°¡ ¾Ë¾Æ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§ (A_EventInfo) GuiContextMenu ´ë½Å¿¡ g-¶óº§ÀÇ RightClick À̺¥Æ®¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
  • +
  • DoubleClick: »ç¿ëÀÚ°¡ ¹Ù¸¦ ´õºíŬ¸¯ Çß½À´Ï´Ù. º¯¼ö A_EventInfo¿¡ ±× ºÎºÐ ¹øÈ£°¡ ´ã±é´Ï´Ù.
  • +
  • R: »ç¿ëÀÚ°¡ ¹Ù¸¦ ´õºí-¿ìŬ¸¯ Çß½À´Ï´Ù. º¯¼ö A_EventInfo¿¡ ±× ºÎºÐ ¹øÈ£°¡ ´ã±é´Ï´Ù.
  • +
+

±Û²Ã ±×¸®°í »ö

+

+±Û²Ã Å©±â, ¸ð¾ç, ±×¸®°í ½ºÅ¸ÀÏÀ» (´Ù¸¥ º¸ÅëÀÇ ÄÜÆ®·Ñó·³) Gui Font¸¦ ÅëÇÏ¿© ¼³Á¤ÇÒ ¼ö ÀÖÁö¸¸, ÅؽºÆ® Ä÷¯´Â ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù. ¶ÇÇÑ, Gui Color¸¦ ÁؼöÇÏÁö ¾Ê½À´Ï´Ù; ´ë½Å¿¡, Options¿¡ ´Ü¾î Background¿Í Áï½Ã Ä÷¯ À̸§ (Ä÷¯-Â÷Æ® ÂüÁ¶) ¶Ç´Â RGB °ªÀ» ÁöÁ¤Çϸé (0x Á¢µÎ»ç´Â ¼±ÅÃÀû) »óÅ ¹ÙÀÇ ¹è°æ »öÀ» ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ¿¹Á¦: BackgroundSilver, BackgroundFFDD99, BackgroundDefault.

+ +

StatusBar °¨Ãß±â

+

+»óÅ ¹Ù´Â »ý¼º½Ã Gui, Add, StatusBar, Hidden vMyStatusBar¸¦ ÅëÇÏ¿© ¼ûÀ» ¼ö ÀÖ½À´Ï´Ù. »ý¼º ÈÄ¿¡ ¼û±â·Á¸é GuiControl, Hide, MyStatusBar¸¦ »ç¿ëÇϽʽÿÀ. º¸¿©ÁÖ·Á¸é, GuiControl, Show, MyStatusBar¸¦ »ç¿ëÇϽʽÿÀ. ÁÖÀÇ: »óŹٸ¦ ¼û°Üµµ âÀÇ ³ôÀÌ´Â ÁÙÁö ¾Ê½À´Ï´Ù. ÁÙÀÌ°í ½Í´Ù¸é, ´ÙÀ½ ¹æ¹ýÀÌ ½±½À´Ï´Ù: Gui, Show, AutoSize.

+ +

½ºÅ¸ÀÏ (º°·Î »ç¿ë ¾ÈµÊ)

+

+StatusBar ½ºÅ¸ÀÏ Å×À̺í ÂüÁ¶.

+ +

¾Ë·ÁÁø ÇÑ°è

+

+1) »óÅ ¹Ù¿Í ÁßøµÇ´Â ÄÜÆ®·ÑÀº Á¾Á¾ »óÅ ¹Ù À§¿¡ ±×·ÁÁú ¼ö ÀÖ½À´Ï´Ù. À̸¦ ÇÇÇÏ´Â ÇÑ °¡Áö ¹æ¹ýÀº GuiSize labelÀ» ÅëÇÏ¿© µ¿ÀûÀ¸·Î ±×·± ÄÜÆ®·ÑÀ» ÁÙÀÌ´Â °ÍÀÔ´Ï´Ù. 2) â ´ç »óÅ ¹Ù°¡ Çϳª »ÓÀ̶ó´Â Á¦ÇÑÀÌ ÀÖ½À´Ï´Ù.

+ +

¿¹Á¦

+

+TreeView ÆäÀÌÁö ¾Æ·¡¿¡ ¿©·¯ ºÎºÐ »óÅ ¹Ù¸¦ ½Ã¿¬ÇÕ´Ï´Ù.

+ +

ActiveX [v1.1.03+]

+

+ActiveX ÄÄÆ÷³ÍÆ®´Â MSIE ºê¶ó¿ìÀú ÄÜÆ®·Ñ °°ÀÌ ´ÙÀ½ ¿¹Á¦¸¦ µû¶ó GUI â¿¡ ³»ÀåÇÒ ¼ö ÀÖ½À´Ï´Ù:

+ +
Gui Add, ActiveX, w980 h640 vWB, Shell.Explorer  ; ¸¶Áö¸· ¸Å°³º¯¼ö´Â ActiveX ÄÄÆ÷³ÍÆ®ÀÇ À̸§ÀÔ´Ï´Ù.
+WB.Navigate("http://ahkscript.org/boards/")  ; ÀÌ°ÍÀº À¥ ºê¶ó¿ìÀú ÄÜÆ®·Ñ¿¡ Á¾¼ÓÀûÀÔ´Ï´Ù.
+Gui Show
+

+ÄÜÆ®·ÑÀÌ »ý¼ºµÉ ¶§, ActiveX °´Ã¼´Â ÄÜÆ®·ÑÀÇ ¿¬°ü º¯¼ö¿¡ ÀúÀåµË´Ï´Ù. GuiControlGetÀ» »ç¿ëÇÏ¸é ±× °´Ã¼¸¦ ¿­¶÷ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

+

+ÀÌ °´Ã¼°¡ ³ëÃâÇÏ´Â À̺¥Æ®¸¦ ó¸®ÇÏ·Á¸é, ¾Æ·¡¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ ComObjConnect¸¦ »ç¿ëÇϽʽÿÀ:

+ +
Gui Add, Edit, w930 r1 vURL, http://ahkscript.org/boards/
+Gui Add, Button, x+6 yp w44 Default, Go
+Gui Add, ActiveX, xm w980 h640 vWB, Shell.Explorer
+ComObjConnect(WB, WB_events)  ; WBÀÇ À̺¥Æ®¸¦ WB_events Ŭ·¡½º °´Ã¼¿¡ ¿¬°áÇÕ´Ï´Ù.
+Gui Show
+; °è¼ÓÇؼ­ ÃÖÃÊÀÇ ÆäÀÌÁö¸¦ ÀûÀçÇÕ´Ï´Ù:
+ButtonGo:
+Gui Submit, NoHide
+WB.Navigate(URL)
+return
+
+class WB_events
+{
+    NavigateComplete2(wb, NewURL)
+    {
+        GuiControl,, URL, %NewURL%  ; URL ÆíÁý ÄÜÆ®·ÑÀ» ¾÷µ¥ÀÌÆ® ÇÕ´Ï´Ù.
+    }
+}
+
+GuiClose:
+ExitApp
+

+ComObjTypeÀ» »ç¿ëÇϸé ÄÜÆ®·ÑÀÇ º¯¼ö¿¡ ÀúÀåµÈ °´Ã¼ÀÇ À¯ÇüÀ» ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù.

+ +

Custom [v1.1.10+]

+

+AutoHotkey°¡ Á÷Á¢ÀûÀ¸·Î Áö¿øÇÏÁö ¾Ê´Â ÄÜÆ®·Ñµµ GUI ⠾ȿ¡ ÀÓº£µåÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÓº£µå ÇÏ·Á¸é, Gui, Add¿¡ Class ¿É¼ÇÀ» ÅëÇÏ¿© Win32 Ŭ·¡½º À̸§À» ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ¿¹Á¦:

+
Gui, Add, Custom, ClassComboBoxEx32  ; ComboBoxEx ÄÜÆ®·ÑÀ» Ãß°¡ÇÕ´Ï´Ù.
+Gui, Add, Custom, ClassScintilla  ; Scintilla ÄÜÆ®·ÑÀ» Ãß°¡ÇÕ´Ï´Ù.  SciLexer.dll ¶óÀ̺귯¸®¸¦ ¸ÕÀú ÀûÀçÇÑ ÈÄ¿¡ ÄÜÆ®·ÑÀ» Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+

+Gui, Add ¶Ç´Â GuiControl/Get¸¦ ÅëÇÏ¿© ÅؽºÆ®¸¦ ÄÜÆ®·Ñ¿¡¼­ ¿­¶÷Çϰųª ±³Ã¼ÇÒ ¶§ ¿ÀÅäÇÖÅ°´Â Ç¥ÁØ À©µµ¿ìÁî ÄÜÆ®·Ñ ÅؽºÆ® ·çƾÀ» »ç¿ëÇÕ´Ï´Ù.

+

+G-¶óº§ °íÁö: gMySubroutine¿Í °°Àº g-¶óº§À» ÄÜÆ®·ÑÀÇ ¿É¼Ç¿¡ ³ª¿­ÇÏ¸é ±× ÄÜÆ®·ÑÀ¸·ÎºÎÅÍ µé¾î¿À´Â À̺¥Æ®µéÀ» ³ªÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¼­ºê·çƾÀº ³»Àå º¯¼ö A_Gui¿Í A_GuiControl¸¦ Âü°íÇÒ ¼ö ÀÖ½À´Ï´Ù. ´õ¿í Áß¿äÇÑ °ÍÀº A_GuiEventµµ Âü°íÇÒ ¼ö ÀÖ´Ù´Â °ÍÀε¥, ±× ¾È¿¡ ´ÙÀ½ ¹®ÀÚ¿­ Áß Çϳª°¡ µé¾î ÀÖ½À´Ï´Ù (¹Ì·¡ ¹öÀü°úÀÇ È£È¯À» À§ÇØ, ½ºÅ©¸³Æ®´Â ÀÌ °ªµé¸¸ÀÌ À¯ÀÏÇÑ °ªÀ̶ó°í °£ÁÖÇÏ¸é ¾È µË´Ï´Ù):

+
    +
  • Normal: WM_COMMAND ¸Þ½ÃÁö¸¦ ¹Þ¾Ò½À´Ï´Ù. A_EventInfo¿¡ ÄÜÆ®·Ñ¿¡-Á¤ÀÇµÈ °íÁö Äڵ尡 ´ã±é´Ï´Ù ( C/C++¿¡¼­ HIWORD(wParam)¿Í µ¿µî).
  • +
  • N: WM_NOTIFY ¸Þ½ÃÁö¸¦ ¹Þ¾Ò½À´Ï´Ù. A_EventInfo¿¡ ÄÜÆ®·Ñ °íÁö ±¸Á¶Ã¼¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ°¡ ´ã±é´Ï´Ù (NMHDR). ErrorLevel¿¡ ÇÒ´çÇؼ­ 32-ºñÆ® ºÎÈ£ ÀÖ´Â Á¤¼ö °ªÀÌ ÄÜÆ®·Ñ¿¡ ¹ÝȯµÉ ¼ö ÀÖ½À´Ï´Ù. (±âº»°ªÀ¸·Î, g-¶óº§ ¾²·¹µåÀÇ ErrorLevelÀº 0À¸·Î ¼³Á¤µË´Ï´Ù). ¹«È¿ÇÑ °ªÀº 0À¸·Î °£Áֵ˴ϴÙ.
  • +
+

´ÙÀ½ ¿¹Á¦´Â IP ÁÖ¼Ò ÄÜÆ®·ÑÀ» Ãß°¡ÇÏ°í »ç¿ëÇÏ´Â ¹ýÀ» º¸¿©ÁÝ´Ï´Ù:

+ +
Gui, Add, Custom, ClassSysIPAddress32 r1 w150 hwndhIPControl gIPControlEvent
+Gui, Add, Button, Default, OK
+IPCtrlSetAddress(hIPControl, A_IPAddress1)
+Gui, Show
+return
+
+GuiClose:
+ExitApp
+
+ButtonOK:
+Gui, Hide
+ToolTip
+MsgBox % "You chose " IPCtrlGetAddress(hIPControl)
+ExitApp
+
+IPControlEvent:
+if A_GuiEvent = Normal
+{
+    ; WM_COMMAND ¸Þ½ÃÁö¸¦ ¹Þ¾Ò½À´Ï´Ù.
+
+    if (A_EventInfo = 0x0300)  ; EN_CHANGE
+        ToolTip Control changed!
+}
+else if A_GuiEvent = N
+{
+    ; WM_NOTIFY ¸Þ½ÃÁö¸¦ ¹Þ¾Ò½À´Ï´Ù.
+
+    ; °íÁö Äڵ带 ¾ò½À´Ï´Ù. º¸Åë ÀÌ Çʵå´Â UIntÀÌÁö¸¸  IP ÁÖ¼Ò ÄÜÆ®·ÑÀº
+    ; À½¼ö Äڵ带 »ç¿ëÇÕ´Ï´Ù. ±×·¡¼­ ÆíÀÇ»ó ºÎÈ£ÀÖ´Â Á¤¼ö·Î ÀнÀ´Ï´Ù.
+    nmhdr_code := NumGet(A_EventInfo + 2*A_PtrSize, "int")
+    if (nmhdr_code != -860)  ; IPN_FIELDCHANGED
+        return
+
+    ; NMIPADDRESS ±¸Á¶Ã¼·ÎºÎÅÍ Á¤º¸¸¦ ÃßÃâÇÕ´Ï´Ù
+    iField := NumGet(A_EventInfo + 2*A_PtrSize + 4, "int")
+    iValue := NumGet(A_EventInfo + 2*A_PtrSize + 8, "int")
+    if iValue >= 0
+        ToolTip Field #%iField% modified: %iValue%
+    else
+        ToolTip Field #%iField% left empty
+}
+return
+
+IPCtrlSetAddress(hControl, ipaddress)
+{
+    static WM_USER := 0x400
+    static IPM_SETADDRESS := WM_USER + 101
+
+    ; SendMessage¿¡ »ç¿ëÇϱâ À§ÇØ IP ÁÖ¼Ò¸¦ 32-ºñÆ® ¿öµå·Î ÆÑÇÕ´Ï´Ù.
+    ipaddrword := 0
+    Loop, Parse, ipaddress, .
+        ipaddrword := (ipaddrword * 256) + A_LoopField
+    SendMessage IPM_SETADDRESS, 0, ipaddrword,, ahk_id %hControl%
+}
+
+IPCtrlGetAddress(hControl)
+{
+    static WM_USER := 0x400
+    static IPM_GETADDRESS := WM_USER + 102
+
+    VarSetCapacity(addrword, 4)
+    SendMessage IPM_GETADDRESS, 0, &addrword,, ahk_id %hControl%
+    return NumGet(addrword, 3, "UChar") "." NumGet(addrword, 2, "UChar") "." NumGet(addrword, 1, "UChar") "." NumGet(addrword, 0, "UChar")
+}
+ +

°ü·Ã Ç׸ñ

+

ListView, TreeView, Gui, GuiControl, GuiControlGet, Menu

+ + + diff --git a/src/docs/commands/Hotkey.htm b/src/docs/commands/Hotkey.htm new file mode 100644 index 0000000..d3c754d --- /dev/null +++ b/src/docs/commands/Hotkey.htm @@ -0,0 +1,233 @@ + + + + +Hotkey + + + + + + + +

Hotkey

+ +

½ºÅ©¸³Æ®°¡ ½ÇÇàµÇ´Â µ¿¾È¿¡ ÇÖÅ°¸¦ ¸¸µé°í, º¯°æÇÏ°í, ÄÑ°í ²ü´Ï´Ù.

+ +
Hotkey, KeyName [, Label, Options]
+Hotkey, IfWinActive/Exist [, WinTitle, WinText]
+Hotkey, If [, Expression]
+

¸Å°³º¯¼ö

+
+ +
KeyName
+

ÇÖÅ° È°¼ºÈ­ Å°ÀÇ À̸§, ¼ö½Ä ½Éº¼À» Æ÷ÇÔ. ¿¹¸¦ µé¾î, Win+C ÇÖÅ°¶ó¸é #c¸¦ ÁöÁ¤ÇÕ´Ï´Ù.

+

+ KeyNameÀÌ ÀÌ¹Ì ÇÖÅ°·Î Á¸ÀçÇϸé, ±× ÇÖÅ°´Â ±× ¸í·É¾îÀÇ ´Ù¸¥ ¸Å°³º¯¼öµéÀÇ °ªÀ» °¡Áö°í °»½ÅµË´Ï´Ù.

+

+ KeyNameÀº ±âÁ¸ÀÇ ÇÖÅ° ¶óº§ÀÇ À̸§ÀÌ µÉ ¼öµµ ÀÖ½À´Ï´Ù (Áï, °ã-½ÖÁ¡ ¶óº§). ±×·± °æ¿ì ÇÖÅ°´Â ±× ¸í·É¾îÀÇ ´Ù¸¥ ¸Å°³º¯¼öµéÀÇ °ªÀ» °¡Áö°í °»½ÅµË´Ï´Ù.

+

+ ±âÁ¸ÀÇ ÇÖÅ°¸¦ ÁöÁ¤ÇÒ ¶§, KeyNameÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê½À´Ï´Ù. ±×·¸Áö¸¸, Å°ÀÇ À̸§Àº ¹Ýµå½Ã ±âÁ¸ÀÇ ÇÖÅ°¿Í öÀÚ°¡ °°¾Æ¾ß ÇÕ´Ï´Ù (¿¹,. ÀÌ·± ¸ñÀûÀ¸·Î Esc´Â Escape¿Í °°Áö ¾Ê½À´Ï´Ù). ¶Ç, ^!+#¿Í °°Àº ¼ö½Ä ½Éº¼ ¼ø¼­´Â ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù. GetKeyNameÀ» »ç¿ëÇϸé Å° À̸§ÀÇ Ç¥ÁØ Ã¶ÀÚ¸¦ ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ ÇÖÅ°°¡ óÀ½ ¸¸µé¾îÁú ¶§ -- Hotkey ¸í·É¾î ¶Ç´Â °ã-½ÖÁ¡ ¶óº§À» »ç¿ëÇÏ¿© -- ±×ÀÇ Å° À̸§°ú ±×ÀÇ ¼ö½Ä ½Éº¼ÀÇ ¼ø¼­´Â ±× ÇÖÅ°ÀÇ ¿µ±¸ÇÑ À̸§ÀÌ µÇ¾î A_ThisHotkey¿¡ ¹Ý¿µµË´Ï´Ù. ÀÌ À̸§Àº ±× ÇÖÅ°ÀÇ ¸ðµç º¯ÇüÀÌ °øÀ¯ÇÏ°í, ¹Ù²îÁö ¾Ê½À´Ï´Ù. ³ªÁß¿¡ Hotkey ¸í·É¾î°¡ ±× ÇÖÅ°¿¡ ´Ù¸¥ ½Éº¼ ¼ø¼­¸¦ °¡Áö°í Á¢±ÙÇصµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.

+

+ [v1.1.15+]: ÇÖÅ° º¯ÇüÀÌ ÀÌ¹Ì Á¸ÀçÇϸé, ±×ÀÇ ÇàÀ§´Â KeyName¿¡ Æ¿µå (~) Á¢µÎ»ç°¡ Àִ°¡ ¾ø´Â°¡¿¡ ¸Â°Ô °»½ÅµË´Ï´Ù. ±×·¸Áö¸¸, v1.1.19 ÀÌÀü¿¡¼­, ÇÖÅ°´Â LabelÀÌ »ý·«µÇ¸é °»½ÅµÇÁö ¾Ê¾Ò½À´Ï´Ù.

+

+ [v1.1.19+]: °¥°í¸® »ç¿ë ($) Á¢µÎ ½Éº¼À» ±âÁ¸ÀÇ ÇÖÅ°¿¡ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Á¢µÎ ½Éº¼Àº ÇÖÅ°ÀÇ ¸ðµç º¯Çü¿¡ ¿µÇâÀ» ÁÖ¸ç Á¦°Å°¡ ºÒ°¡´ÉÇÕ´Ï´Ù. v1.1.19ÀÌÀü¿¡¼­, ±âÁ¸ ÇÖÅ°ÀÇ º¯ÇüÀ» º¯°æÇÒ ¶§ ÀÌ Á¢µÎ ½Éº¼Àº ¹«½ÃµÇ¾ú½À´Ï´Ù.

+
+ +
Label
+

ÇÖÅ°°¡ ´­¸± ¶§ ±×ÀÇ ³»¿ëÀÌ (»õ·Î¿î ¾²·¹µå·Î) ½ÇÇàµÉ ¶óº§ÀÇ À̸§. Á¤»ó ¶óº§°ú ÇÖÅ°/ÇÖ½ºÆ®¸µ ¶óº§À» ¸ðµÎ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. µÚ¿¡ µû¶ó¿À´Â ½ÖÁ¡Àº Æ÷ÇÔÇÏ¸é ¾ÈµË´Ï´Ù. LabelÀÌ µ¿ÀûÀ̸é (¿¹, %VarContainingLabelName%), IsLabel(VarContainingLabelName)À» ¹Ì¸® È£ÃâÇØ ±× ¶óº§ÀÌ Á¸ÀçÇÏ´ÂÁö È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ [v1.1.20+]: À¯È¿ÇÏÁö ¾ÊÀº ¶óº§ À̸§À̶ó¸é, ÀÌ ¸Å°³º¯¼ö´Â ÇÔ¼öÀÇ À̸§, ¶Ç´Â (ÇÔ¼ö °´Ã¼¸¦ ´ã°í ÀÖ´Â) ´ÜÀÏ º¯¼ö ÂüÁ¶ÀÏ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Hotkey %funcobj%, On ¶Ç´Â Hotkey % funcobj, On. °´Ã¼¸¦ µ¹·ÁÁÖ´Â ´Ù¸¥ Ç¥Çö½ÄÀº ÇöÀç Áö¿øµÇÁö ¾Ê½À´Ï´Ù. ÇÖÅ°°¡ ½ÇÇàµÉ ¶§, ÇÔ¼ö´Â ¸Å°³º¯¼ö ¾øÀÌ È£ÃâµË´Ï´Ù. ÇÖÅ°´Â ÇÔ¼ö·Î Á¤ÀÇµÉ ¼ö ÀÖ½À´Ï´Ù. Hotkey ¸í·É¾î°¡ ÇÊ¿ä¾ø½À´Ï´Ù.

+

+ ÀÌ ¸Å°³º¯¼ö´Â KeyNameÀÌ ÀÌ¹Ì ÇÖÅ°·Î Á¸ÀçÇÏ¸é ºó ä·Î ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ±×·± °æ¿ì, ±×ÀÇ ¶óº§Àº ¹Ù²îÁö ¾Ê½À´Ï´Ù. ÀÌ°ÍÀº ÇÖÅ°ÀÇ ¿É¼Ç¸¸ ¹Ù²Ü ¶§ À¯¿ëÇÕ´Ï´Ù.

+

+ ¶óº§ ¶Ç´Â ÇÔ¼ö°¡ ÁöÁ¤µÇ¾î ÀÖÁö¸¸ ÇÖÅ°´Â ÀÌÀü¿¡ ÀÌ ¸í·É¾î ¶§¹®¿¡ ²¨Á® ÀÖ´Ù¸é, ±× ÇÖÅ°´Â ¿©ÀüÈ÷ ²¨Áø ä·Î ÀÖÀ» °ÍÀÔ´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é ´Ü¾î ONÀ» Options¿¡ Æ÷ÇÔ½ÃÅ°½Ê½Ã¿À.

+

+ ÀÌ ¸Å°³º¯¼ö´Â ´ÙÀ½ Ư¼ö °ªµé Áß Çϳª°¡ µÉ ¼öµµ ÀÖ½À´Ï´Ù:

+

On: ÇÖÅ°°¡ È°¼ºÈ­ µË´Ï´Ù. ÇÖÅ°°¡ ÀÌ¹Ì ÄÑÁ® ÀÖ´Ù¸é ¾Æ¹« Á¶Ä¡µµ ¾ø½À´Ï´Ù.

+

Off: ÇÖÅ°°¡ ºñÈ°¼ºÈ­ µË´Ï´Ù. ÇÖÅ°°¡ ÀÌ¹Ì ²¨Á® ÀÖ´Ù¸é ¾Æ¹« Á¶Ä¡µµ ¾ø½À´Ï´Ù.

+

Toggle: ÇÖÅ°¸¦ ¹Ý´ë »óÅ·Π¼³Á¤ÇÕ´Ï´Ù (enabled ¶Ç´Â disabled).

+

AltTab (±âŸ µîµî): À̰͵éÀº Ư¼öÇÑ Alt-Tab ÇÖÅ° ÃÊÄ¡µé·Î¼­ ¿©±â¿¡ ±â¼úµÇ¾î ÀÖ½À´Ï´Ù.

+

ÁÖÀÇ: À̸§ÀÌ On, Off, Toggle ¶Ç´Â AltTabÀ¸·Î (¶Ç´Â ÀÌ ¸í·É¾î·Î ÀÎÁöµÇ´Â ±âŸ º¯ÇüÀ¸·Î) ¶óº§À» Á¤ÀÇÇϸé ÀÏ°ü¼º ¾ø´Â ÇàÀ§¸¦ ¾ß±âÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± °ªµéÀº Àý´ë·Î ¶óº§ À̸§À¸·Î »ç¿ëÇÏÁö ¾Ê±â¸¦ ¹Ù¶ø´Ï´Ù.

+
+ +
Options
+

´ÙÀ½ ±âÈ£µé°ú ¼±ÅÃÀûÀ¸·Î ±× »çÀÌ¿¡ ½ºÆäÀ̽º°¡ ÀÖ´Â ¹®ÀÚ¿­. ¿¹¸¦ µé¾î: UseErrorLevel B0.

+

UseErrorLevel: ¸í·É¾ï ¹®Á¦¸¦ ¸¸³ª¸é, ÀÌ ¿É¼ÇÀº °æ°í ´ëÈ­»óÀÚ¸¦ °Ç³Ê¶Ù°í, ErrorLevel¿¡ ¾Æ·¡ Å×À̺íÀÇ ÄÚµå Áß Çϳª¸¦ ¼³Á¤ÇÑ ´ÙÀ½, ÇöÀç ¾²·¹µå¸¦ °è¼Ó ½ÇÇà½Ãŵ´Ï´Ù.

+

+ On: ÇÖÅ°°¡ ÇöÀç ²¨Á® ÀÖÀ¸¸é ÄÕ´Ï´Ù.

+

+ Off: ÇÖÅ°°¡ ÇöÀç ÄÑÁ® ÀÖÀ¸¸é ²ü´Ï´Ù. ÀÌ´Â ÀüÇüÀûÀ¸·Î óÀ½¿¡ ²ö »óÅ·Π½ÃÀÛÇÏ´Â ÇÖÅ°¸¦ ¸¸µå´Â µ¥ »ç¿ëµË´Ï´Ù.

+

+ B ¶Ç´Â B0: ±âÈ£ B¸¦ ÁöÁ¤Çϸé ÇÖÅ°¸¦ #MaxThreadsBuffer¿¡ ±â¼úµÈ ´ë·Î ¹öÆÛ Ã³¸®ÇÕ´Ï´Ù. B0 (B ´ÙÀ½¿¡ ¿µ)À» ÁöÁ¤Çϸé ÀÌ À¯ÇüÀÇ ¹öÆÛ Ã³¸®¸¦ ²ø ¼ö ÀÖ½À´Ï´Ù.

+

+ Pn: ±âÈ£ P ´ÙÀ½¿¡ ÇÖÅ°ÀÇ ¾²·¹µå ¿ì¼± ¼øÀ§¸¦ ÁöÁ¤ÇϽʽÿÀ. ÇÖÅ°¸¦ ¸¸µé ¶§ P ¿É¼ÇÀ» »ý·«Çϸé, 0ÀÌ »ç¿ë µË´Ï´Ù.

+

+ Tn: #MaxThreadsPerHotkey¿¡ ±â¼úµÈ °Íó·³ ±âÈ£ T ´ÙÀ½¿¡ ÀÌ ÇÖÅ°¿¡ Çã¿ëÇÒ ¾²·¹µåÀÇ °³¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: T5.

+

+ B³ª T ¿É¼Ç ±âÈ£°¡ »ý·«µÇ°í ±×¸®°í ÇÖÅ°°¡ ÀÌ¹Ì Á¸ÀçÇϸé, ±×·± ¿É¼ÇÀº ¹Ù²îÁö ¾Ê½À´Ï´Ù. ±×·¯³ª ÇÖÅ°°¡ ¾ÆÁ÷ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é -- Áï, ÀÌ ¸í·É¾î·Î »ý¼ºµÉ ¿¹Á¤À̶ó¸é -- ¿É¼ÇÀº ÃÖ±Ù¿¡ È¿°ú°¡ ÀÖ´ø ¿É¼ÇÀÌ ±âº»°ªÀÌ µË´Ï´Ù. ¿¹¸¦ µé¾î, ½ºÅ©¸³Æ® ¾Æ·¡¿¡ ÃÖ´ëÇÑ °¡±õ°Ô ³ªÅ¸³ª´Â #MaxThreadsBufferÀÇ ½Çü°¡ »ç¿ëµË´Ï´Ù. + + #MaxThreadsBuffer°¡ ½ºÅ©¸³Æ®¿¡ ³ªÅ¸³ªÁö ¾ÊÀ¸¸é, ±×ÀÇ ±âº» ¼³Á¤ÀÌ (ÀÌ °æ¿ì¿¡´Â OFF°¡) »ç¿ëµË´Ï´Ù. ÀÌ ÇàÀ§´Â #IfWin¿¡µµ Àû¿ëµË´Ï´Ù: °¡Àå ¾Æ·¡ÂÊ¿¡ ³ªÅ¸³ª´Â ½Çü°¡ »õ·Î »ý¼ºµÈ ÇÖÅ°¿¡ Àû¿ëµË´Ï´Ù. ´Ü, ½ºÅ©¸³Æ®°¡ ½ÃÀÛµÈ ÀÌÈÄ·Î "Hotkey IfWin"ÀÌ ½ÇÇàµÈ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+
+ +
IfWinActive
+ IfWinExist
+

(IfWinNotActive ±×¸®°í IfWinNotExistµµ Áö¿øÇÕ´Ï´Ù). À̺Î-¸í·É¾îµéÀº ¿¬ÀÌ¾î »ý¼ºµÇ´Â ¸ðµç ÇÖÅ°°¡ ¹®¸ÆÀ» °¨ÁöÇÏ°Ô ¸¸µì´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº ¾Æ·¡ ÂüÁ¶.

+ +
WinTitle
+ WinText
+

+ ÀÌ ¸Å°³º¯¼öµé ¾È¿¡¼­, %var%¿Í °°Àº º¯¼ö ÂüÁ¶´Â ¸ðµÎ ¸í·É¾î°¡ ¿Ï·áµÇ´Â ¼ø°£ ¿µ¼ÓÀûÀÌ µË´Ï´Ù. ´Ù¸¥ ¸»·Î, ±× ´ÙÀ½ºÎÅÍ º¯¼öÀÇ ³»¿ë¿¡ °¡ÇÏ´Â º¯°æÀ» ±âÁ¸ÀÇ IfWin ÇÖÅ°µéÀº º¸Áö ¸øÇÕ´Ï´Ù.

+

+ #IfWinActive/Existó·³, WinTitle ±×¸®°í WinText´Â SetTitleMatchMode ±×¸®°í DetectHiddenWindows¿¡ ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡ ¼³Á¤µÈ ´ë·Î ±âº» ¼³Á¤À» »ç¿ëÇÕ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ °ÍÀº #IfWinActive/Exist¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +
If, Expression
+
+

[AHK_L]: #If ExpressionÀÇ »ó´ëÆí. ExpressionÀº ±âÁ¸ÀÇ #If Expression¿¡¼­ "#If" ¶Ç´Â "#If,"¸¦ Á¦¿ÜÇÑ ÅؽºÆ®¿¡ Á¤È®ÇÏ°Ô ºÎÇÕÇØ¾ß ÇÕ´Ï´Ù. + + Hotkey ¸í·É¾î¿¡ »ç¿ëµÉ ¶§, ½°Ç¥°¡ "If"°¡ µÚ¿¡ ÇÊ¿äÇÕ´Ï´Ù. ÀÌ ¸í·É¾î´Â »õ Ç¥Çö½ÄÀ» ¸¸µé ¼ö ¾øÁö¸¸, ±âÁ¸ÀÇ Ç¥Çö½ÄÀ» »ç¿ëÇÏ¿© ÇÖÅ°¸¦ »õ·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù. #If ¿¹Á¦ 4¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

¾Ë·ÁÁø ÇÑ°è: Expression¿¡ and/or ¿¬»êÀÚ°¡ Æ÷ÇԵǾî ÀÖÀ¸¸é, ±âÁ¸ÀÇ Ç¥Çö½ÄÀ¸·Î ÀÎÁöµÇÁö ¾Ê½À´Ï´Ù. ¿ìȸåÀ¸·Î, µ¿µîÇÑ &&/|| ¿¬»êÀÚ¸¦ ¿ø·¡ÀÇ #If Ç¥Çö½Ä°ú Hotkey ¸í·É¾î¿¡ °Ç³Ù Ç¥Çö½Ä¿¡ ¸ðµÎ »ç¿ëÇϽʽÿÀ.

+
+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ´ÙÀ½°ú °°À» °æ¿ì¿¡¸¸ ¹Ù²ò´Ï´Ù: 1) ù ¹ø° ¸Å°³º¯¼ö°¡ IfWin[Not]Active/ExistÀÎ °æ¿ì ¹®Á¦ ÀÖÀ¸¸é 1ÀÌ ¼³Á¤µÇ°í ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù; ¶Ç´Â 2) ´Ü¾î UseErrorLevelÀÌ Options ¸Å°³º¯¼ö¿¡ Á¸ÀçÇÏ´Â °æ¿ìÀÔ´Ï´Ù.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
¿¡·¯¼³¸í
1Label ¸Å°³º¯¼ö°¡ Á¸ÀçÇÏÁö ¾Ê´Â ¶óº§ À̸§À» ÁöÁ¤ÇÕ´Ï´Ù.
2KeyName ¸Å°³º¯¼ö´Â ÇöÀç Å°º¸µå ·¹À̾ƿô/¾ð¾î°¡ ÀÎÁöÇÏÁö ¸øÇϰųª Áö¿øÇÏÁö ¾Ê´Â Çϳª ÀÌ»óÀÇ Å°¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
3Áö¿øµÇÁö ¾Ê´Â Á¢µÎ Å°. ¿¹¸¦ µé¾î, WheelDown & Enter°ú °°ÀÌ ¸¶¿ì½º ÈÙÀ» ÇÖÅ°¿¡ Á¢µÎ Å°·Î »ç¿ëÇÏ´Â °ÍÀº Áö¿øµÇÁö ¾Ê½À´Ï´Ù.
4KeyName ¸Å°³º¯¼ö°¡ AltTab ¶Ç´Â ShiftAltTab Á¶Ä¡¿Í ÇÔ²² »ç¿ëÇϱ⿡ ÀûÇÕÇÏÁö ¾Ê½À´Ï´Ù. µÎ Å°ÀÇ Á¶ÇÕÀÌ ÇÊ¿äÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: RControl & RShift::AltTab.
5¸í·É¾î°¡ Á¸ÀçÇÏÁö ¾Ê´Â ÇÖÅ°¸¦ º¯°æÇÏ·Á°í ½ÃµµÇß½À´Ï´Ù.
6¸í·É¾î°¡ Á¸ÀçÇÏÁö ¾Ê´Â ±âÁ¸ ÇÖÅ°ÀÇ º¯ÇüÀ» º¯°æÇÏ·Á°í ½ÃµµÇß½À´Ï´Ù. À̸¦ ÇØ°áÇÏ·Á¸é, Hotkey IfWin¸¦ »ç¿ëÇØ º¯°æµÉ ±× ÇÖÅ°ÀÇ º¯ÇüÀÌ ºÎÇÕÇÒ ±âÁØÀ» ¼³Á¤ÇϽʽÿÀ.
98ÀÌ ÇÖÅ°¸¦ »ý¼ºÇÏ¸é ½ºÅ©¸³Æ®-´ç-1000-ÇÖÅ° Á¦ÇÑÀ» ÃÊ°úÇÕ´Ï´Ù (±×·¸Áö¸¸, °¢ ÇÖÅ°´Â ¹«ÇÑ °³¼öÀÇ º¯ÇüÀ» °¡Áú ¼ö ÀÖÀ¸¸ç, ÇÖ½ºÆ®¸µÀÇ °³¼ö¿¡µµ Á¦ÇÑÀÌ ¾ø½À´Ï´Ù).
99¸Þ¸ð¸® °í°¥. ¾ÆÁÖ Èñ±ÍÇÑ °æ¿ìÀÌ¸ç º¸Åë ¿î¿µ üÁ¦°¡ ºÒ¾ÈÁ¤ÇÑ »óÅ°¡ µÉ °æ¿ì¿¡¸¸ ÀϾ´Ï´Ù.
+


+ÆÁ: UseErrorLevel ¿É¼ÇÀº ÇÖÅ° º¯ÇüÀÇ Á¸À縦 Å×½ºÆ® ÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
Hotkey, ^!p,, UseErrorLevel
+if ErrorLevel in 5,6
+    MsgBox ÇÖÅ°°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ¾Æ´Ï¸é ÇöÀç IfWin ±âÁØ¿¡ ¸Â´Â º¯ÇüÀÌ ¾ø½À´Ï´Ù.
+ +

³íÆò

+

+ÇöÀçÀÇ IfWin ¼³Á¤Àº Hotkey ¸í·É¾î°¡ ó¸®ÇÒ ÇÖÅ°ÀÇ º¯ÇüÀ» °áÁ¤ÇÕ´Ï´Ù.

+

+¼±ÅÃµÈ ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀ» ÇöÀç È°¼º âÀÇ À¯Çü¿¡ ±â¹ÝÇÏ¿© ÀÚµ¿À¸·Î ²ô´Â °ÍÀÌ ¸ñÀûÀ̶ó¸é, Hotkey, ^!c, Offº¸´Ù º¸Åë #IfWinActive/Exist¸¦ (¶Ç´Â µ¿ÀûÀÎ »ó´ëÀÎ ¾Æ·¡ÀÇ "Hotkey IfWinActive/Exist"¸¦) »ç¿ëÇÏ´Â °ÍÀÌ ´õ Æí¸®ÇÕ´Ï´Ù.

+

+°ã-½ÖÁ¡ ¶óº§À» ÅëÇÏ¿© ÇÖÅ°¸¦ ¸¸µå´Â °ÍÀÌ Hotkey ¸í·É¾î¸¦ »ç¿ëÇÏ´Â ¹æ¹ýº¸´Ù ´õ ¼öÇ༺´ÉÀÌ ÁÁ½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ½ºÅ©¸³Æ®°¡ ½ÃÀÛÇÒ ¶§ ÇÖÅ°¸¦ (Çϳª ¾¿ÀÌ ¾Æ´Ï¶ó) ¸ðµÎ ÀÏ°ýÀûÀ¸·Î ÄÓ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ±×·¯¹Ç·Î, ½ºÅ©¸³Æ®°¡ ½ÇÇàÀ» ½ÃÀÛÇؾ߸¸ À̸§À» ¾Ë ¼ö ÀÖ´Â Å°µéÀ» »ý¼ºÇÏ´Â µ¥¿¡¸¸ ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ´Â °ÍÀÌ Á¦ÀÏ ÁÁ½À´Ï´Ù. ±×·± °æ¿ì ÇÑ °¡Áö´Â ´Ù¾çÇÑ ÇàÀ§¿¡ ´ëÇÑ ½ºÅ©¸³Æ®ÀÇ ÇÖÅ°¸¦ INI ÆÄÀÏÀ» ÅëÇÏ¿© ȯ°æ±¸¼ºÇÒ ¶§ÀÔ´Ï´Ù.

+

+ÁÖ¾îÁø ¶óº§Àº ¿©·¯ ÇÖÅ°ÀÇ ¸ñÇ¥°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. ¶óº§ÀÌ ÇÖÅ°¿¡ È£ÃâµÇ¾ú´Ù¸é, ³»Àå º¯¼ö A_ThisHotkey¸¦ Á¡°ËÇÏ¸é ¾î´À ÇÖÅ°ÀÎÁö ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù.

+

+½ºÅ©¸³Æ®°¡ º¸·ù(suspended) ÁßÀ̶ó¸é, »õ·Î Ãß°¡µÈ/È°¼ºÈ­µÈ ÇÖÅ°µµ º¸·ù°¡ ²¨Áú ¶§±îÁö ÇÔ²² º¸·ùµË´Ï´Ù (´Ü, Suspend ¼½¼Ç¿¡ ±â¼úµÈ ´ë·Î ¸éÁ¦µÈ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù).

+

+ÀÌ ¸í·É¾î°¡ °¡ÇÑ º¯°æ ¶§¹®¿¡ Á¤´ç¼ºÀ» ¾òÀ¸¸é Å°º¸µå ±×¸®°í/¶Ç´Â ¸¶¿ì½º °¥°í¸®°¡ ¼³Ä¡µÇ°Å³ª Á¦°ÅµË´Ï´Ù.

+

+Hotkey ¸í·É¾î´Â ÀÚ½ÅÀÇ ¼ÒÀ¯°¡ ¾Æ´Ñ ½ºÅ©¸³Æ®¿¡¼­ Á÷Á¢ÀûÀ¸·Î ÇÖÅ°¸¦ ÄѰųª ²ø ¼ö ¾øÁö¸¸, ´ëºÎºÐÀÇ °æ¿ì °°Àº ÇÖÅ°µéÀ» ¸¸µé°Å³ª È°¼ºÈ­ ÇÔÀ¸·Î½á ¿À¹ö¶óÀ̵å ÇÒ ¼ö ÀÖ½À´Ï´Ù. + +ÀÌ°ÍÀÇ ÀÛµ¿ ¿©ºÎ´Â ´ÙÀ½ ¿äÀÎÀÇ Á¶ÇÕ¿¡ µû¶ó ´Ù¸¨´Ï´Ù: +

    +
  1. ¿À¹ö¶óÀÌµå µÉ ÇÖÅ°°¡ ´Ù¸¥ ½ºÅ©¸³Æ®¿¡¼­ °¥°í¸® ÇÖÅ°Àΰ¡ (ºñ-°¥°í¸® ÇÖÅ°´Â ¾ðÁ¦³ª ¿À¹ö¶óÀ̵åÇÒ ¼ö ÀÖ½À´Ï´Ù); + +
  2. ÃÖ±Ù¿¡ ½ÃÀÛµÈ ½ºÅ©¸³Æ®ÀÇ ÇÖÅ°°¡ ÀϹÝÀûÀ¸·Î ´Ù¸¥ ½ºÅ©¸³Æ®ÀÇ ÇÖÅ°º¸´Ù ¿ì¼± ¼øÀ§°¡ ³ô´Ù´Â »ç½Ç +(±×·¯¹Ç·Î, ¿À¹ö¶óÀ̵å ÇÒ ½ºÅ©¸³Æ®°¡ ÃÖ±Ù¿¡ ½ÃÀ۵Ǿú´Ù¸é, ±×ÀÇ ¿À¹ö¶óÀ̵å´Â ¾ðÁ¦³ª ¼º°øÇÕ´Ï´Ù); + +
  3. ÀÌ ÇÖÅ°¸¦ È°¼ºÈ­ Çϰųª »ý¼ºÇÏ¸é »õ·Î Å°º¸µå ¶Ç´Â ¸¶¿ì½º °¥°í¸®°¡ È°¼ºÈ­ µÇ´Â°¡ (±×·¸´Ù¸é, ¿À¹ö¶óÀ̵å´Â ¾ðÁ¦³ª ¼º°øÇÕ´Ï´Ù). +
+ + +

+

+½ºÅ©¸³Æ®¿¡ ÇϳªÀÇ ÇÖÅ°¸¸ À־, ½ºÅ©¸³Æ®´Â ¿µ¼ÓÀûÀÌ µË´Ï´Ù. ExitÀÌ ¾Æ´Ï¶ó ExitApp¸¦ »ç¿ëÇØ¾ß Á¾·áÇÒ ¼ö ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù. ÇÖÅ° ½ºÅ©¸³Æ®´Â ¶Ç ÀÚµ¿À¸·Î #SingleInstance°¡ µË´Ï´Ù. ´Ü, #SingleInstance Off°¡ ÁöÁ¤µÈ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+ +

Hotkey, IfWinXX [, WinTitle, WinText]¿¡ °üÇÑ ³íÆò

+

+"Hotkey IfWin" ¸í·É¾î´Â ½ºÅ©¸³Æ®°¡ ½ÇÇàÁßÀÎ µ¿¾È¿¡ ¹®¸Æ °¨Áö ÇÖÅ°¸¦ »ý¼ºÇϵµ·Ï Çã¿ëÇÕ´Ï´Ù (´ëÁ¶ÀûÀ¸·Î, #IfWinActive/Exist Áö½Ã¾î´Â À§Ä¡¿¡ ¹Î°¨ÇÏ°í ½ºÅ©¸³Æ®°¡ ½ÇÇàÀ» ½ÃÀÛÇϱâ Àü¿¡ È¿°ú°¡ ÀÖ½À´Ï´Ù). ¿¹¸¦ µé¾î:

+ +
Hotkey, IfWinActive, ahk_class Notepad
+Hotkey, ^!e, MyLabel  ; ³ëÆ®Æе忡¼­¸¸ ÀÛµ¿ÇÏ´Â ÇÖÅ°¸¦ »ý¼ºÇÕ´Ï´Ù.
+

+"Hotkey IfWin"¸¦ »ç¿ëÇÏ¸é µÚÀÌ¾î »ý¼ºµÇ°Å³ª º¯°æµÇ´Â ¸ðµç ÇÖÅ°¿¡ ¹®¸Æ °¨Áö°¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù. + +°Ô´Ù°¡, IfWin ºÎ-¸í·É¾î´Â ¼­·Î ¹èŸÀûÀÔ´Ï´Ù; Áï, ÃÖ±ÙÀÇ ºÎ-¸í·É¾î¸¸ È¿°ú°¡ ÀÖ½À´Ï´Ù.

+

+ +¹®¸Æ °¨Áö¸¦ ²ô·Á¸é (Áï, À̾ »ý¼ºµÇ´Â ÇÖÅ°¸¦ ¸ðµç â¿¡ ÀÛµ¿½ÃÅ°·Á¸é), IfWin ºÎ-¸í·É¾î¸¦ ÁöÁ¤Ç쵂 WinTitle/Text ¸Å°³º¯¼ö¸¦ »ý·«ÇϽʽÿÀ. ¿¹¸¦ µé¾î: Hotkey, IfWinActive.

+

+"Hotkey IfWin"°¡ ½ºÅ©¸³Æ®¿¡¼­ »ç¿ëµÇÁö ¾ÊÀ¸¸é, ÃÖ±Ù¿¡ »ç¿ëÇÑ #IfWin Áö½Ã¾î°¡ (ÀÖ´Ù¸é) ±× Hotkey ¸í·É¾î¿¡ ´ëÇÏ¿© ¿µÇâÀ» ¹ÌĨ´Ï´Ù.

+

+¸¶¿ì½º³ª Å°º¸µå ÇÖÅ°°¡ IfWin¿¡ ÀÇÇÏ¿© ²¨Áú ¶§, ÀÚ½ÅÀÇ °íÀ¯ ÇÔ¼ö¸¦ ¼öÇàÇÕ´Ï´Ù; Áï, ¸¶Ä¡ ±×·± ÇÖÅ°°¡ ÀüÇô ¾ø´Â °Íó·³ È°¼ºÃ¢±îÁö °Ç³×Áý´Ï´Ù. ÇÑ °¡Áö ¿¹¿Ü°¡ ÀÖ½À´Ï´Ù: Á¶À̽ºÆ½ ÇÖÅ°´Â ¿¹¿ÜÀÔ´Ï´Ù: IfWinÀÌ ÀÛµ¿ÇÏ´õ¶óµµ, ¹öÆ°À» ´©¸£´Â °ÍÀ» ´Ù¸¥ ÇÁ·Î±×·¥ÀÌ º¸Áö ¸øÇϵµ·Ï ¸·Áö ¾Ê½À´Ï´Ù.

+ +

º¯Çü (Áߺ¹) ÇÖÅ°

+

+ƯÁ¤ ÇÖÅ°´Â °¢ Á¤ÀǸ¶´Ù IfWin ±âÁØÀÌ ´Ù¸£´Ù¸é ÇÑ ¹ø ÀÌ»ó ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± °ÍµéÀ» ÇÖÅ° º¯ÇüÀ̶ó°í ºÎ¸¨´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
Hotkey, IfWinActive, ahk_class Notepad
+Hotkey, ^!c, MyLabelForNotepad
+Hotkey, IfWinActive, ahk_class WordPadClass
+Hotkey, ^!c, MyLabelForWordPad
+Hotkey, IfWinActive
+Hotkey, ^!c, MyLabelForAllOtherWindows
+

+ÇÖÅ°ÀÇ º¯ÇüÀÌ Çϳª ÀÌ»ó Ã˹ßÇÒ ¼ö ÀÖ´Ù¸é, °¡Àå ÀÏÂï ¸¸µé¾îÁø º¯Çü¸¸ Ã˹ߵ˴ϴÙ. ÀÌ¿¡ ´ëÇÑ ¿¹¿Ü´Â Àü¿ª º¯ÇüÀÔ´Ï´Ù (IfWin ±âÁØÀÌ ¾ø´Â º¯Çü): Ç×»ó ¿ì¼± ¼øÀ§°¡ ³·½À´Ï´Ù. ±×·¡¼­ ´Ù¸¥ º¯ÇüÀÌ ÀüÇô ÃË¹ßµÉ ¼ö ¾øÀ» ¶§¸¸ Ã˹ߵ˴ϴÙ.

+

+Áߺ¹ ÇÖÅ°¸¦ »ý¼ºÇÒ ¶§, ^!+#¿Í °°Àº ¼ö½Ä ½Éº¼ÀÇ ¼ø¼­´Â ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, ^!c´Â !^c¿Í °°½À´Ï´Ù. ±×·¸Áö¸¸, Å°´Â ÀÏ°ü¼ºÀÖ°Ô Ã¶ÀÚ¸¦ ½á¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, Esc´Â ÀÌ·± ¸ñÀûÀ¸·Î Escape¿Í °°Áö ¾Ê½À´Ï´Ù (±×·¸Áö¸¸ ´ë¼Ò¹®ÀÚ´Â ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù). ¸¶Áö¸·À¸·Î, ¿ÍÀϵåÄ«µå Á¢µÎ ½Éº¼ (*)À» °¡Áø ÇÖÅ°´Â ¸ðµÎ ºñ-¿ÍÀϵåÄ«µå ÇÖÅ°¿Í ¿ÏÀüÈ÷ ´Ù¸¨´Ï´Ù; ¿¹¸¦ µé¾î, *F1°ú F1´Â °¢°¢ ÀÚ½ÅÀÇ º¯ÇüÀ» °¡Áý´Ï´Ù.

+

+IfWin ÇÖÅ°¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â #IfWinÀÇ ÃÑÆòÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

+ÇÖÅ° ½Éº¼, #IfWinActive/Exist, #MaxThreadsBuffer, #MaxThreadsPerHotkey, Suspend, IsLabel(), Threads, Thread, Critical, Gosub, Return, Menu, SetTimer

+ +

¿¹Á¦

+ +
Hotkey, ^!z, MyLabel
+return
+
+MyLabel:
+MsgBox You pressed %A_ThisHotkey%.
+return
+
+; ±âŸ ¿¹Á¦µé:
+Hotkey, RCtrl & RShift, AltTab ; RCtrl & RShift¸¦ Alt-Tab ó·³ ÀÛµ¿Çϵµ·Ï ¸¸µì´Ï´Ù.
+Hotkey, #c, On  ; Win-C ÇÖÅ°¸¦ ÀçÈ°¼ºÈ­ÇÕ´Ï´Ù.
+Hotkey, $+#c, Off  ; Shift-Win-C ÇÖÅ°¸¦ ²ü´Ï´Ù.
+Hotkey, ^!a, , T5  ; ÇÖÅ°°¡ ´Ù¼¸ °³ÀÇ ¾²·¹µå¸¦ Çã¿ëÇϵµ·Ï ¹Ù²ß´Ï´Ù.
+
+Hotkey, IfWinActive, ahk_class Notepad
+Hotkey, ^!c, MyLabelForNotepad  ; ³ëÆ®Æе忡¼­¸¸ ÀÛµ¿ÇÏ´Â ÇÖÅ°·Î Ctrl-Alt-C¸¦ »ý¼ºÇÕ´Ï´Ù..
+ + + diff --git a/src/docs/commands/IfBetween.htm b/src/docs/commands/IfBetween.htm new file mode 100644 index 0000000..c308492 --- /dev/null +++ b/src/docs/commands/IfBetween.htm @@ -0,0 +1,63 @@ + + + + +If var [not] between LowerBound and UpperBound + + + + + + + +

If var [not] between LowerBound and UpperBound

+ +

º¯¼öÀÇ ³»¿ëÀÌ ¼ýÄ¡ÀûÀ¸·Î ¶Ç´Â ¾ËÆĺª ¼øÀ¸·Î µÎ °ª(Æ÷ÇÔ) »çÀÌ¿¡ ÀÖ´ÂÁö Á¡°ËÇÕ´Ï´Ù.

+ +
if Var between LowerBound and UpperBound
+if Var not between LowerBound and UpperBound
+

¸Å°³º¯¼ö

+
+ +
Var
+

Á¡°ËÇÒ º¯¼öÀÇ À̸§.

+ +
LowerBound
+

ÁöÁ¤ÇÑ ¹üÀ§ ¾È¿¡ ÀÖÀ¸·Á¸é, Var´Â ÀÌ ¹®ÀÚ¿­º¸´Ù, ¼ýÀÚº¸´Ù ¶Ç´Â º¯¼ö ÂüÁ¶º¸´Ù Å©°Å³ª °°¾Æ¾ß ÇÕ´Ï´Ù.

+ +
UpperBound
+

ÁöÁ¤ÇÑ ¹üÀ§ ¾È¿¡ ÀÖÀ¸·Á¸é, Var´Â ÀÌ ¹®ÀÚ¿­º¸´Ù, ¼ýÀÚ º¸´Ù, ¶Ç´Â º¯¼ö ÂüÁ¶º¸´Ù À۰ųª °°¾Æ¾ß ÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+¸Å°³º¯¼ö ¼¼ °³°¡ ¸ðµÎ ¼ø¼öÇÏ°Ô ¼ýÄ¡À̸é, ¹®ÀÚ¿­ÀÌ ¾Æ´Ï¶ó ¼ýÀÚ·Î ºñ±³µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ¹®ÀÚ¿­Ã³·³ ¾ËÆĺª ¼øÀ¸·Î ºñ±³µË´Ï´Ù (Áï, ¾ËÆĺª ¼ø¼­·Î Var°¡ ÁöÁ¤ÇÑ ¹üÀ§ ¾È¿¡ ÀÖ´ÂÁö °áÁ¤µË´Ï´Ù). ±× °æ¿ì, StringCaseSense OnÀ» »ç¿ëÇÏ¸é ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇØ ºñ±³ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+¿¬»êÀÚ "between", "is", "in", ±×¸®°í "contains"´Â Ç¥Çö½Ä ¾È¿¡ Áö¿øµÇÁö ¾Ê½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+IfEqual/Greater/Less, if var in/contains MatchList, if var is type, IfInString, StringCaseSense, EnvAdd, ºí·Ï, Else

+ +

¿¹Á¦

+
if var between 1 and 5
+    MsgBox, %var%´Â ¹üÀ§°¡ 1 ÀÌ»ó 5 ÀÌÇÏÀÔ´Ï´Ù.
+
+if var not between 0.0 and 1.0
+    MsgBox %var%´Â ¹üÀ§°¡ 0.0 ÀÌ»ó 1.0 ÀÌÇÏÀÔ´Ï´Ù.
+
+if var between %VarLow% and %VarHigh%
+    MsgBox %var%´Â %VarLow%°ú %VarHigh% »çÀÌ¿¡ ÀÖ½À´Ï´Ù.
+
+if var between blue and red
+    MsgBox %var%´Â ¾ËÆĺª ¼ø¼­·Î ´Ü¾î blue¿Í red »çÀÌ¿¡ ÀÖ½À´Ï´Ù.
+
+LowerLimit = 1
+UpperLimit = 10
+InputBox, UserInput, %LowerLimit%°ú %UpperLimit% »çÀÌÀÇ ¼ýÀÚ¸¦ ÀÔ·ÂÇϽʽÿÀ.
+if UserInput not between %LowerLimit% and %UpperLimit%
+    MsgBox ÀÔ·ÂÀÌ À¯È¿ÇÑ ¹üÀ§ ¾È¿¡ ÀÖÁö ¾Ê½À´Ï´Ù.
+ + + diff --git a/src/docs/commands/IfEqual.htm b/src/docs/commands/IfEqual.htm new file mode 100644 index 0000000..462df2e --- /dev/null +++ b/src/docs/commands/IfEqual.htm @@ -0,0 +1,97 @@ + + + + +If/IfEqual/IfNotEqual/IfLess/IfLessOrEqual/IfGreater/IfGreaterOrEqual + + + + + + + +

If/IfEqual/IfNotEqual/IfLess/IfLessOrEqual/IfGreater/IfGreaterOrEqual

+ +

+º¯¼ö¸¦ º¯¼öÇØ ºñ±³ÇØ TRUE·Î Æò°¡µÉ °æ¿ì ¼öÇàÇÒ ¸í·É¾î(µé)À» ÁöÁ¤ÇÕ´Ï´Ù. ¸í·É¾î°¡ ¿©·µ Á¸ÀçÇϸé, ºí·Ï (È°°ýÈ£) ¾È¿¡ µÑ·¯ ½Î½Ê½Ã¿À.

+ +
IfEqual, var, value (same: if var = value)
+IfNotEqual, var, value (same: if var <> value) (!= can be used in place of <>)
+IfGreater, var, value (same: if var > value)
+IfGreaterOrEqual, var, value (same: if var >= value)
+IfLess, var, value (same: if var < value)
+IfLessOrEqual, var, value (same: if var <= value)
+If var ; º¯¼öÀÇ ³»¿ëÀÌ ºñ¾î Àְųª 0À̸é, °ÅÁþÀ¸·Î °£Áֵ˴ϴÙ. ±×·¸Áö ¾ÊÀ¸¸é ÂüÀÔ´Ï´Ù.
+
+´ÙÀ½µµ ÂüÁ¶: IfInString
+

¸Å°³º¯¼ö

+
+ +
var
+

º¯¼ö À̸§.

+ +
value
+

±âÈ£ ¹®ÀÚ¿­, ¼ýÀÚ ¶Ç´Â º¯¼ö ÂüÁ¶ (¿¹, %var2%). var¸¦ ºó ¹®ÀÚ¿­¿¡ ºñ±³ÇÏ°í ½Í´Ù¸é °ªÀ» »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +
+ +

³íÆò

+

+º¯¼ö(var)¿Í °ª(value)ÀÌ ¼ø¼öÇÏ°Ô ¼ýÄ¡¶ó¸é, ¹®ÀÚ¿­ÀÌ ¾Æ´Ï¶ó ¼ýÀÚ·Î ºñ±³µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ¹®ÀÚ¿­·Î ¾ËÆĺª ¼øÀ¸·Î ºñ±³µË´Ï´Ù (Áï, ¾ËÆĺª ¼ý¼­·Î var°¡ valueº¸´Ù Å«Áö ÀÛÀºÁö °°ÀºÁö °áÁ¤ÇÕ´Ï´Ù).

+

+IF ¶Ç´Â ELSE°¡ ¿©·¯ ÁÙÀ» ¼ÒÀ¯Çϸé, ±×·± ÁÙµéÀº È°°ýÈ£·Î µÑ·¯ ½Î¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
if count <= 0
+{
+    WinClose Untitled - Notepad
+    MsgBox ¾î¶² Ç׸ñµµ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.
+}
+

+±×·¸Áö¸¸, ÇÑ ÁÙ¸¸ IF ¶Ç´Â ELSE¿¡ ¼ÓÇÑ´Ù¸é, È°°ýÈ£´Â ¼±ÅÃÀûÀÔ´Ï´Ù.

+

+¸í·É¾î-À̸§ ½ºÅ¸ÀÏÀ» »ç¿ëÇÑ´Ù¸é, ¶Ç´Ù¸¥ ¸í·É¾î´Â IF ¼­¼ú¹®°ú °°Àº ÁÙ¿¡¸¸ ³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¸»·Î, ´ÙÀ½Àº À¯È¿ÇÕ´Ï´Ù:

+ +
IfEqual, x, 1, Sleep, 1
+IfGreater, x, 1, EnvAdd, x, 2
+

+±×·¯³ª ´ÙÀ½Àº À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù:

+ +
if x = 1 Sleep 1
+IfGreater, x, 1, x += 2
+

+One True Brace (OTB) ½ºÅ¸ÀÏÀº ÀÌ·± À¯ÇüÀÌ if ¼­¼ú¹®¿¡ »ç¿ëÇÏ¸é ¾È µË´Ï´Ù. ¿ÀÁ÷ Ç¥Çö½Ä if-¼­¼ú¹®¿¡¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+°ü·ÃÇÏ¿© ¸»¾¸µå¸®ÀÚ¸é, ´ÙÀ½ ¸í·É¾î if var [not] between LowerBound and UpperBound´Â º¯¼ö°¡ µÎ °ª »çÀÌ¿¡ ÀÖ´ÂÁö Á¡°ËÇÕ´Ï´Ù. ±×¸®°í if var [not] in value1,value2´Â º¯¼öÀÇ ³»¿ëÀÌ °ª ¸ñ·Ï ¾È¿¡ Á¸ÀçÇÏ´ÂÁö Á¡°ËÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+IF (expression), StringCaseSense, ÇÒ´ç Ç¥Çö½Ä (:=), if var in/contains MatchList, if var between, IfInString, ºí·Ï, Else

+ +

¿¹Á¦

+ +
if counter >= 1
+    Sleep, 10
+
+if counter >=1   ; ¸¸¾à IF¿¡ ¿©·¯ ÁÙÀÌ ÀÖ´Ù¸é, ±× ÁÙµéÀº È°°ýÈ£ ¾È¿¡ ½Î ³ÖÀ¸½Ê½Ã¿À:
+{
+    WinClose, Untitled - Notepad
+    Sleep 10
+}
+
+if MyVar = %MyVar2%
+    MsgBox MyVar¿Í MyVar2ÀÇ ³»¿ëÀº µ¿ÀÏÇÕ´Ï´Ù.
+else if MyVar =
+{
+    MsgBox, 4,, MyVar°¡ ºñ¾î ÀÖ½À´Ï´Ù. °è¼ÓÇϽðڽÀ´Ï±î?
+    IfMsgBox, No
+        Return
+}
+else if MyVar <> ,
+    MsgBox MyVarÀÇ °ªÀº ½°Ç¥°¡ ¾Æ´Õ´Ï´Ù.
+else
+    MsgBox MyVarÀÇ °ªÀº ½°Ç¥ÀÔ´Ï´Ù.
+
+if Done
+    MsgBox º¯¼ö DoneÀº ºñ¾î ÀÖÁöµµ ¾Ê°í 0µµ ¾Æ´Õ´Ï´Ù.
+ + + diff --git a/src/docs/commands/IfExist.htm b/src/docs/commands/IfExist.htm new file mode 100644 index 0000000..42fd923 --- /dev/null +++ b/src/docs/commands/IfExist.htm @@ -0,0 +1,41 @@ + + + + +IfExist / IfNotExist + + + + + + + +

IfExist / IfNotExist

+ +

ÆÄÀÏÀ̳ª Æú´õÀÇ Á¸Àç ¿©ºÎ¸¦ Á¡°ËÇÕ´Ï´Ù.

+ +
IfExist, FilePattern
+IfNotExist, FilePattern
+AttributeString := FileExist(FilePattern)
+

¸Å°³º¯¼ö

+
+ +
FilePattern
+

Á¡°ËÇÒ °æ·Î, ÆÄÀÏÀ̸§ ¶Ç´Â ÆÄÀÏ ÆÐÅÏ. Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é FilePatternÀº %A_WorkingDir%¿¡ ÀÖÀ» °ÍÀ̶ó°í °£Áֵ˴ϴÙ.

+ +
+ +

°ü·Ã Ç׸ñ

+

+FileExist(), ºí·Ï, Else, File-ȸµ¹ÀÌ

+ +

¿¹Á¦

+
IfExist, D:\
+    MsgBox, µå¶óÀ̺갡 Á¸ÀçÇÕ´Ï´Ù.
+IfExist, D:\Docs\*.txt
+    MsgBox, Àû¾îµµ ÇϳªÀÇ .txt ÆÄÀÏÀÌ Á¸ÀçÇÕ´Ï´Ù.
+IfNotExist, C:\Temp\FlagFile.txt
+    MsgBox, ¸ñÇ¥ ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.
+ + + diff --git a/src/docs/commands/IfExpression.htm b/src/docs/commands/IfExpression.htm new file mode 100644 index 0000000..5bc90e0 --- /dev/null +++ b/src/docs/commands/IfExpression.htm @@ -0,0 +1,75 @@ + + + + +if (expression) + + + + + + + +

if (Ç¥Çö½Ä)

+ +

Ç¥Çö½ÄÀÌ TRUE·Î Æò°¡µÇ¸é ¼öÇàÇÒ ¸í·É¾î(µé)À» ÁöÁ¤ÇÕ´Ï´Ù.

+ +
if (expression)
+

³íÆò

+

+Ç¥Çö½ÄÀÌ ÀÖ´Â if-¼­¼ú¹®Àº ÀüÅëÀûÀÎ-if¿Í ´Ù¸¨´Ï´Ù. If FoundColor <> Blue¿Í °°Àº °æ¿ì ´Ü¾î "if" ´ÙÀ½ ¹®ÀÚ°¡ ¿©´Â È°°ýÈ£°¡ ¾Æ´Õ´Ï´Ù. +º¸Åë Àüü Ç¥Çö½ÄÀ» È°°ýÈ£ ¾È¿¡ ½Î ³ÖÀ¸¸é ÀÌ·¸°Ô ÇÒ ¼ö ÀÖÁö¸¸, if (x > 0) and (y > 0)¿Í °°ÀÌ Çصµ ´Þ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. °Ô´Ù°¡, ´Ü¾î "if" ´ÙÀ½ÀÇ Ã¹ Ç׸ñÀÌ ÇÔ¼ö È£ÃâÀ̰ųª ¶Ç´Â "not"À̳ª "!"¿Í °°Àº ¿¬»êÀÚÀÏ °æ¿ì ¿©´Â-È°°ýÈ£´Â ¿ÏÀüÈ÷ »ý·«Çصµ µË´Ï´Ù.

+

+if-¼­¼ú¹®ÀÇ Ç¥Çö½ÄÀÌ ÂüÀ¸·Î Æò°¡µÇ¸é (ºó ¹®ÀÚ¿­ ¶Ç´Â ¼ýÀÚ 0¸¸ ¾Æ´Ï¸é ¾î¶² °á°úµµ ÂüÀ̹ǷÎ), ±× ÁÙ ¶Ç´Â ±× ¹ØÀÇ ºí·ÏÀÌ ½ÇÇàµË´Ï´Ù. ±×·¸Áö ¾Ê°í, »óÀÀÇÏ´Â ELSE°¡ ÀÖ´Ù¸é, ½ÇÇàÀº ±× ÁÙ ¶Ç´Â ±× ¹ØÀÇ ºí·ÏÀ¸·Î Á¡ÇÁÇÕ´Ï´Ù.

+

+IF ¶Ç´Â ELSE°¡ ¿©·¯ ÁÙÀ» ¼ÒÀ¯Çϸé, ±×·± ÁÙµéÀº ¹Ýµå½Ã È°°ýÈ£ ¾È¿¡ µÑ·¯½Î¾ß ÇÕ´Ï´Ù. ±×·¸Áö¸¸, ÇÑ ÁÙ¸¸ IF³ª ELSE¿¡ ¼ÓÇÑ´Ù¸é, È°°ýÈ£´Â ¾ø¾îµµ µË´Ï´Ù. ÀÌ ÆäÀÌÁö ¾Æ·¡ÀÇ ¿¹Á¦µéÀ» ÂüÁ¶ÇϽʽÿÀ.

+

+One True Brace (OTB) ½ºÅ¸ÀÏÀº ¼±ÅÃÀûÀ¸·Î Ç¥Çö½Ä if-¼­¼ú¹®°ú ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù (±×·¯³ª ÀüÅëÀûÀÎ if-¼­¼ú¹®Àº ¾È µË´Ï´Ù). ¿¹¸¦ µé¾î:

+
if (x < y) {
+    ...
+}
+if WinExist("Untitled - Notepad") {
+    WinActivate
+}
+if IsDone {
+    ...
+} else {
+    ...
+}
+

+"else" ¼­¼ú¹®°ú ´Ù¸£°Ô -- ±×ÀÇ ¿À¸¥ÂÊ¿¡ ¿À±â¸¸ ÇÏ¸é ¼­¼ú¹®¿¡ Á¾·ù¿¡ »ó°ü¾øÀÌ Áö¿øÇÏ´Â -- if-¼­¼ú¹®Àº ¿ÀÁ÷ ±×ÀÇ ¿À¸¥ÂÊ¿¡ ¿À´Â "{"¸¸ Áö¿øÇÕ´Ï´Ù.

+

+°ü·ÃÇÏ¿©, ¸í·É¾î if var [not] between LowerBound and UpperBound ´Â º¯¼ö°¡ µÎ º¯¼ö »çÀÌ¿¡ ÀÖ´ÂÁö Á¡°ËÇÕ´Ï´Ù. ±×¸®°í if var [not] in value1,value2´Â º¯¼öÀÇ ³»¿ëÀÌ °ª ¸ñ·Ï ¾È¿¡ Á¸ÀçÇÏ´ÂÁö Á¡°ËÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+Ç¥Çö½Ä, ÇÒ´ç Ç¥Çö½Ä (:=), if var in/contains MatchList, if var between, IfInString, ºí·Ï, Else, While-ȸµ¹ÀÌ

+ +

¿¹Á¦

+
if (A_Index > 100 or Done)
+    return
+
+if (A_TickCount - StartTime > 2*MaxTime + 100)
+{
+    MsgBox ³Ê¹« ¸¹Àº ½Ã°£Áö °æ°úÇÏ¿´½À´Ï´Ù.
+    ExitApp
+}
+
+if (Color = "Blue" or Color = "White")
+{
+    MsgBox Ä÷¯´Â Çã¿ëµÈ °ª Áß ÇϳªÀÔ´Ï´Ù.
+    ExitApp
+}
+else if (Color = "Silver")
+{
+    MsgBox ȸ»öÀº Çã¿ëÇÏÁö ¾Ê´Â »öÀÔ´Ï´Ù.
+    return
+}
+else
+{
+    MsgBox ÀÌ »öÀº ÀÎÁöÇÒ ¼ö ¾ø½À´Ï´Ù.
+    ExitApp
+}
+ + + diff --git a/src/docs/commands/IfIn.htm b/src/docs/commands/IfIn.htm new file mode 100644 index 0000000..c819d9f --- /dev/null +++ b/src/docs/commands/IfIn.htm @@ -0,0 +1,81 @@ + + + + +If var [not] in/contains value1,value2,... + + + + + + + +

If var [not] in/contains value1,value2,...

+ +

+º¯¼öÀÇ ³»¿ëÀÌ ¸ñ·Ï¿¡ ÀÖ´Â Ç׸ñ Áß Çϳª¿¡ ÀÏÄ¡ÇÏ´ÂÁö Á¡°ËÇÕ´Ï´Ù.

+ +
if Var in MatchList
+if Var not in MatchList
+
+if Var contains MatchList
+if Var not contains MatchList
+

¸Å°³º¯¼ö

+
+ +
Var
+
+

³»¿ëÀ» Á¡°ËÇÒ º¯¼öÀÇ À̸§. "in" ¿¬»êÀÚ´Â Á¤È®ÇÏ°Ô ¸®½ºÆ® Ç׸ñ¿¡ ºÎÇÕÇϱ⸦ ¿ä±¸ÇÕ´Ï´Ù. "contains" ¿¬»êÀÚ´Â ºÎÇÕÀÌ ´õ ½±°Ô ÀϾ´Ï´Ù: Var¿¡ ¸®½ºÆ® Ç׸ñ Áß Çϳª°¡ ºÎ¹®ÀÚ¿­·Î Æ÷ÇԵǾî Àֱ⸸ ÇÏ¸é ºÎÇÕÇÕ´Ï´Ù.

+ +
MatchList
+

½°Ç¥·Î-°¡¸¥ ¹®ÀÚ¿­ ¸®½ºÆ®. °¢ ¹®ÀÚ¿­Àº VarÀÇ ³»¿ë°ú ºñ±³ÇØ ºÎÇÕÇÕ´Ï´Ù. °¡¸£´Â ½°Ç¥ µÑ·¹ÀÇ ½ºÆäÀ̽º³ª ÅÇÀº Àǹ̰¡ ÀÖ½À´Ï´Ù. ºÎÇÕ ¹®ÀÚ¿­ÀÇ ÀϺΰ¡ µÈ´Ù´Â ¶æÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, MatchList¿¡ ABC , XYZ°¡ ¼³Á¤µÇ¸é Var¿¡´Â ¹Ýµå½Ã ABC¿Í µÚ¿¡ ÇϳªÀÇ ½ºÆäÀ̽º°¡ ´ã±â°Å³ª ¶Ç´Â XYZ¿Í ±× ¾Õ¿¡ ½ºÆäÀ̽º Çϳª°¡ µé¾î ÀÖ¾î¾ß ºÎÇÕÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ ¿¬¼ÓÀûÀÎ µÎ °³ÀÇ ½°Ç¥´Â ±ÛÀÚ ±×´ë·ÎÀÇ ½°Ç¥ Çϳª°¡ °á°úÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½Àº ±ÛÀÚ ±×´ë·ÎÀÇ ½°Ç¥ Çϳª¸¦ string1ÀÇ ³¡¿¡ »ý»êÇÕ´Ï´Ù: If Var In string1,,,string2. ºñ½ÁÇÏ°Ô, ´ÙÀ½ ¸ñ·Ï¿¡´Â Ç׸ñ Çϳª°¡ µé¾î ÀÖ°í ±× ¾È¿¡ ±ÛÀÚ ±×´ë·ÎÀÇ ½°Ç¥°¡ Çϳª µé¾î ÀÖ½À´Ï´Ù: If Var In single,,item. ¸ñ·Ï ¾È¿¡ ºó Ç׸ñÀ» Æ÷ÇÔÇÏ·Á¸é, ù ¹®ÀÚ¸¦ ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ½°Ç¥·Î ¸¸µå½Ê½Ã¿À: If Var In ,string1,string2 ("contains" ¿¬»êÀÚ¸¦ »ç¿ëÇÒ ¶§, ºó Ç׸ñÀº ¾ðÁ¦³ª ºÎÇÕÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ºó ¹®ÀÚ¿­Àº ¸ðµç ¹®ÀÚ¿­¿¡ Àֱ⠶§¹®ÀÔ´Ï´Ù).

+

+ MatchList ¾ÈÀÇ Ç׸ñµéÀº °³º°ÀûÀÎ ¸Å°³º¯¼ö·Î Ãë±ÞµÇÁö ¾Ê±â ¶§¹®¿¡, ¸®½ºÆ®´Â º¯¼ö ¾È¿¡ ¿ÏÀüÈ÷ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù. ½ÇÁ¦·Î, ±×ÀÇ ±æÀÌ°¡ 16383 ¹®ÀÚ¸¦ ³Ñ¾î¼­¸é º¯¼ö ¾È¿¡ ÀϺθ¸ Æ÷ÇԵ˴ϴÙ. ±× ±æÀÌ°¡ ½ºÅ©¸³Æ® ÁÙÀÇ ÃÖ´ë ±æÀÌÀ̱⠶§¹®ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, MatchList´Â %List1%,%List2%,%List3%À¸·Î ±¸¼ºµÉ ¼ö ÀÖ½À´Ï´Ù -- ¿©±â¿¡¼­ °¢°¢ÀÇ ºÎ¸ñ·ÏÀº ºÎÇÕÇÒ ¹æ´ëÇÑ ¸®½ºÆ®°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.

+

+ ¸ñ·Ï¿¡¼­ 16384 ¹®ÀÚº¸´Ù ±ä Ç׸ñÀº ÃÊ°úµÈ ¹®ÀÚµéÀ» »õ·Î¿î ¸®½ºÆ® Ç׸ñÀ¸·Î Ãë±ÞÇÕ´Ï´Ù. ±×·¡¼­, º¸Åë ±×·± Ç׸ñÀº ÇÇÇÏ´Â °ÍÀÌ °¡Àå ÁÁ½À´Ï´Ù.

+ +
+ +

³íÆò

+

+¾ðÁ¦³ª ¼ýÀÚ¼øÀÌ ¾Æ´Ï¶ó ¾ËÆĺª ¼øÀ¸·Î ºñ±³µË´Ï´Ù. ¿¹¸¦ µé¾î, ¹®ÀÚ¿­ "11"´Â ¸®½ºÆ® Ç׸ñ "11.0"°ú ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù.

+

+"contains" ¿¬»êÀÚ´Â IfInString/IfNotInString¸¦ »ç¿ëÇÑ °Í°ú °°½À´Ï´Ù. ´Ü, ´ÙÁß °Ë»ö ¹®ÀÚ¿­Àº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù (¹«¾ùÀÌµç ºÎÇÕÇÕ´Ï´Ù).

+

+StringCaseSense OnÀ» »ç¿ëÇÏ¸é ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇØ ºñ±³ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+MatchList°¡ ±æ¸é, ¿©·¯ °³ÀÇ ÂªÀº ÁÙ·Î ³ª´­ ¼ö ÀÖ½À´Ï´Ù. °è¼Ó ¼½¼ÇÀ» »ç¿ëÇÏ¸é µÇ´Âµ¥, ÀÌ´Â °¡µ¶¼º°ú À¯Áö°ü¸®¼ºµµ Çâ»ó½ÃÄÑ ÁÝ´Ï´Ù.

+

+¿¬»êÀÚ "between", "is", "in", ±×¸®°í "contains"Àº Ç¥Çö½Ä¿¡ Áö¿øµÇÁö ¾Ê½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+if var between, IfEqual/Greater/Less, IfInString, StringCaseSense, ºí·Ï, Else

+ +

¿¹Á¦

+
if var in exe,bat,com
+    MsgBox ÆÄÀÏ È®ÀåÀÚ°¡ ½ÇÇà À¯ÇüÀÔ´Ï´Ù.
+
+if var in 1,2,3,5,7,11 ; ¸®½ºÆ® ¾È¿¡ ½ºÆäÀ̽º¸¦ ȸÇÇÇÕ´Ï´Ù.
+    MsgBox %var%´Â ¼Ò¼öÀÔ´Ï´Ù.
+
+if var contains 1,3  ; °ªµéÀ» ¹®ÀÚ¿­·Î ºñ±³ÇÑ´Ù´Â °ÍÀ» ÁÖ¸ñÇϽʽÿÀ. ¼ýÀÚ·Î ºñ±³ÇÏÁö ¾Ê½À´Ï´Ù.
+    MsgBox Var¿¡ 1 ¶Ç´Â 3ÀÌ ´ã°Ü ÀÖ½À´Ï´Ù (Var´Â 1, 3, 10, 21, 23, µîµîÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù.)
+
+if var in %MyItemList%
+    MsgBox %var%´Â ¸ñ·Ï ¾È¿¡ ÀÖ½À´Ï´Ù.
+
+InputBox, UserInput, Enter YES or NO
+if UserInput not in yes,no
+    MsgBox ÀÔ·ÂÀÌ À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù.
+
+WinGetTitle, active_title, A
+if active_title contains Address List.txt,Customer List.txt
+    MsgBox ¿øÇϴ â Áß Çϳª°¡ È°¼ºÈ­ »óÅÂÀÔ´Ï´Ù.
+if active_title not contains metapad,Notepad
+    MsgBox ±×·¯³ª ¸ÞŸÆе忡µµ ³ëÆ®Æе忡µµ ÆÄÀÏÀÌ ¿­·Á ÀÖÁö ¾Ê½À´Ï´Ù.
+ + + diff --git a/src/docs/commands/IfInString.htm b/src/docs/commands/IfInString.htm new file mode 100644 index 0000000..2da7e52 --- /dev/null +++ b/src/docs/commands/IfInString.htm @@ -0,0 +1,60 @@ + + + + +IfInString / IfNotInString + + + + + + + +

IfInString / IfNotInString

+ +

º¯¼ö¿¡ ÁöÁ¤µÈ ¹®ÀÚ¿­ÀÌ ´ã°Ü ÀÖ´ÂÁö Á¡°ËÇÕ´Ï´Ù.

+ +
IfInString, var, SearchString
+IfNotInString, var, SearchString
+Position := InStr(Haystack, Needle [, CaseSensitive?, StartingPos]]) ; ÀÚ¼¼ÇÑ °ÍÀº InStr() function¸¦ ÂüÁ¶ÇÕ´Ï´Ù.
+ +

¸Å°³º¯¼ö

+
+ +
var
+
ºÎÇÕÀ» À§ÇØ ±×ÀÇ ³»¿ëÀ» °Ë»öÇÒ

º¯¼öÀÇ À̸§.

+ +
SearchString
+

°Ë»öÇÒ ¹®ÀÚ¿­. ºÎÇÕÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê½À´Ï´Ù. ´Ü, StringCaseSense°¡ ÄÑÁ® ÀÖ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+ +
+ +

³íÆò

+

+³»Àå º¯¼ö %A_Space%¿Í %A_Tab%´Â ¾È¿¡ ½ºÆäÀ̽º Çϳª¿Í ÅÇ ¹®ÀÚ Çϳª°¡ °¢°¢ µé¾î ÀÖ½À´Ï´Ù. ÀÌ·± ¹®ÀÚµéÀ» ´Üµ¶À¸·Î °Ë»öÇÒ ¶§ À¯¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+¶Ç´Ù¸¥ ¸í·É¾î´Â ÀÌ ¸í·É¾î¿Í °°Àº ÁÙ¿¡ ³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¸»·Î Çϸé, ´ÙÀ½Àº µÑ ´Ù µ¿µîÇÕ´Ï´Ù:

+
IfInString, MyVar, abc, Gosub, Process1
+IfInString, MyVar, abc
+    Gosub, Process1
+

+±×·¸Áö¸¸, À̸§ÀÖ´Â ¸í·É¾î ¸»°í ´Ù¸¥ Ç׸ñÀº °°Àº ÁÙ¿¡ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
IfInString, MyVar, abc, found := true  ; À¯È¿ÇÏÁö ¾ÊÀ½.
+ +

°ü·Ã Ç׸ñ

+

+InStr(), RegExMatch(), StringGetPos, StringCaseSense, IfEqual, if var in/contains MatchList, if var between, if var is type, ºí·Ï, Else

+ +

¿¹Á¦

+
Haystack = abcdefghijklmnopqrs
+Needle = abc
+IfInString, Haystack, %Needle%
+{
+    MsgBox, ¹®ÀÚ¿­ÀÌ ¹ß°ßµÇ¾ú½À´Ï´Ù.
+    return
+}
+else
+    Sleep, 1
+ + + diff --git a/src/docs/commands/IfIs.htm b/src/docs/commands/IfIs.htm new file mode 100644 index 0000000..376e686 --- /dev/null +++ b/src/docs/commands/IfIs.htm @@ -0,0 +1,100 @@ + + + + +If var is [not] type + + + + + + + +

If var is [not] type

+ +

º¯¼öÀÇ ³»¿ëÀÌ ¼ýÄ¡ÀÎÁö, ´ë¹®ÀÚÀÎÁö µîµîÀ» Á¡°ËÇÕ´Ï´Ù.

+ +
if var is type
+if var is not type
+ +

¸Å°³º¯¼ö

+
+ +
var
+

º¯¼ö À̸§.

+ +
type
+

¾Æ·¡ÀÇ ³íÆò ÂüÁ¶.

+ +
+ +

³íÆò

+

+Áö¿øµÇ´Â À¯Çü:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
integervar°¡ ºñ¾î ÀÖÁö ¾Ê°í ±×¸®°í ¼ø¼öÇÏ°Ô (¼Ò¼öÁ¡ ¾ø´Â) ¼ýÄ¡ ¹®ÀÚ¿­ (½ÊÀ°Áø¼ö ¶Ç´Â ½ÊÁø¼ö)À̸é ÂüÀÔ´Ï´Ù. ¼±µÎ¿Í ÈĹ̿¡ ½ºÆäÀ̽º¿Í ÅÇÀ» Çã¿ëÇÕ´Ï´Ù. ÀÌ ¹®ÀÚ¿­Àº Ç÷¯½º ¶Ç´Â ¸¶À̳ʽº »çÀÎÀ¸·Î ½ÃÀÛÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
floatvar±â ºñ¾î ÀÖÁö ¾Ê°í ±×¸®°í ºÎµ¿ ¼Ò¼öÁ¡ ¼ö¸¦ Æ÷ÇÔÇÏ°í ÀÖÀ¸¸é ÂüÀÔ´Ï´Ù; Áï, ¼Ò¼öÁ¡ÀÌ ÀÖ´Â ¼ø¼ö ¼ýÄ¡ ¹®ÀÚ¿­À̸é ÂüÀÔ´Ï´Ù. ¼±µÎ¿Í ÈĹ̿¡ ½ºÆäÀ̽º¿Í ÅÇÀ» Çã¿ëÇÕ´Ï´Ù. ÀÌ ¹®ÀÚ¿­À» Ç÷¯½º ¶Ç´Â ¸¶À̳ʽº »çÀÎÀ¸·Î ½ÃÀÛÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
numbervar¿¡ Á¤¼ö³ª ºÎµ¿ ¼Ò¼öÁ¡ ¼ö°¡ ´ã±â¸é ÂüÀÔ´Ï´Ù (°¢°¢ÀÇ Á¶°ÇÀº À§ÀÇ ±â¼úÀ» µû¸¨´Ï´Ù).
digitvar°¡ ºñ¾î Àְųª ¿ÀÁ÷ ¼ýÀÚ¸¸ ´ã°í ÀÖÀ¸¸é ÂüÀÔ´Ï´Ù. Áï, 0¿¡¼­ 9±îÁö·Î ±¸¼ºµÇ¸é ÂüÀÔ´Ï´Ù. ´Ù¸¥ ¹®ÀÚµéÀº ´ÙÀ½°ú °°ÀÌ Çã¿ëµÇÁö ¾Ê½À´Ï´Ù: ½ºÆäÀ̽º, ÅÇ, Ç÷¯½º »çÀÎ, ¸¶À̳ʽº »çÀÎ, ¼Ò¼ö Á¡, ½ÊÀ°Áø ¼ö, ±×¸®°í 0x Á¢µÎ»ç.
xdigit½ÊÀ°Áø ÀÚ¸®: digit¿Í µ¿ÀÏÇÏÁö¸¸ A ºÎÅÍ F (´ë¹®ÀÚ ¶Ç´Â ¼Ò¹®ÀÚ))µµ Çã¿ëÇÕ´Ï´Ù. v1.0.44.09+¿¡¼­´Â Á¢µÎ»ç 0xµµ Çã¿ëÇÕ´Ï´Ù.
alphavar°¡ ºñ¾î Àְųª ¾ËÆĺª¸¸ Æ÷ÇÔÇÏ°í ÀÖÀ¸¸é ÂüÀÔ´Ï´Ù. ¹®ÀÚ¿­¿¡ ¼ýÀÚ, ½ºÆäÀ̽º, ÅÇ, ±¸µÎÁ¡ ¶Ç´Â ±âŸ ºñ-¾ËÆĺª ¹®ÀÚ¸¦ ´ã°í ÀÖÀ¸¸é °ÅÁþÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, var¿¡ ½ºÆäÀ̽º°¡ ÀÖ°í ´ÙÀ½ ±âÈ£°¡ µû¶ó¿À¸é, ¾ËÆĺªÀ¸·Î °£ÁÖÇÏÁö ¾Ê½À´Ï´Ù.
uppervar°¡ ºñ¾î Àְųª ¶Ç´Â ¿ÀÁ÷ ´ë¹®ÀÚ¸¸ ´ã°í ÀÖÀ¸¸é ÂüÀÔ´Ï´Ù. ¹®ÀÚ¿­¿¡ ¼ýÀÚ, ½ºÆäÀ̽º, ÅÇ, ±¸µÎÁ¡ ¶Ç´Â ±âŸ ºñ-´ë¹®ÀÚ¸¦ ´ã°í ÀÖÀ¸¸é °ÅÁþÀÔ´Ï´Ù.
lowervar°¡ ºñ¾î Àְųª ¿ÀÁ÷ ¼Ò¹®ÀÚ¸¸ ´ã°í ÀÖÀ¸¸é ÂüÀÔ´Ï´Ù. ¼ýÀÚ°¡ Àְųª, ½ºÆäÀ̽º, ÅÇ, ±¸µÎÁ¡, ¶Ç´Â ±âŸ ºñ-¼Ò¹®ÀÚ°¡ ¹®ÀÚ¿­¿¡ ÀÖÀ¸¸é °ÅÁþÀÔ´Ï´Ù.
alnumalpha¿Í µ¿ÀÏÇÏÁö¸¸ 0 ºÎÅÍ 9 »çÀÌÀÇ ¹®ÀÚµµ Çã¿ëÇÕ´Ï´Ù.
spacevar°¡ ºñ¾î Àְųª °ø¹é ¹®ÀÚ¸¸ ´ã°í ÀÖÀ¸¸é ÂüÀÔ´Ï´Ù. °ø¹é ¹®ÀÚ´Â ´ÙÀ½°ú °°ÀÌ ±¸¼ºµË´Ï´Ù: ½ºÆäÀ̽º (%A_Space%), ÅÇ (%A_Tab% or `t), Áٳѱè (`n), ¸®ÅÏ (`r), ¼öÁ÷ ÅÇ (`v), ±×¸®°í ÀåÇǵå (`f).
time

var¿¡ À¯È¿ÇÑ ³¯Â¥-½Ã°£ µµÀåÀÌ µé¾î ÀÖÀ¸¸é ÂüÀÔ´Ï´Ù. Çü½ÄÀÌ YYYYMMDDHH24MISSÀ̰ųª ¾Æ´Ï¸é ¾ÕÂÊ ºÎºÐ¸¸ÀÌ¶óµµ µË´Ï´Ù. ¿¹¸¦ µé¾î, 2004¿Í °°Àº 4-ÀÚ¸® ¹®ÀÚ¿­Àº À¯È¿·Î °£ÁÖÇÕ´Ï´Ù. StringLenÀ» »ç¿ëÇϸé Ãß°¡·Î ½Ã°£ ±¸¼º ºÎºÐÀÌ Á¸ÀçÇÏ´ÂÁö ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù.

+

1601³â ¹Ì¸¸Àº À¯È¿·Î °£ÁÖÇÏÁö ¾Ê½À´Ï´Ù. ¿î¿µ üÁ¦°¡ º¸Åë Áö¿øÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ÃÖ´ë ÇØ´Â 9999³âÀÔ´Ï´Ù.

+

´Ü¾î DATE¸¦ ´Ü¾î TIME ´ë½Å »ç¿ëÇصµ, °á°ú´Â °°½À´Ï´Ù.

+
+

ÁÖÀÇ: ¿¬»êÀÚ "between", "is", "in", ±×¸®°í "contains"´Â Ç¥Çö½Ä¿¡ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.

+

+[AHK_L 42+]: ½Ã½ºÅÛ ·ÎÄÉÀÏÀº StringCaseSense LocaleÀÌ »ç¿ëµÇÁö ¾Ê´Â ÇÑ ¹«½ÃµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+%A_YYYY%, SetFormat, FileGetTime, IfEqual, if var in/contains MatchList, if var between, StringLen, IfInString, StringUpper, EnvAdd, ºí·Ï, Else

+ +

¿¹Á¦

+
if var is float
+    MsgBox, %var%´Â ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀÔ´Ï´Ù.
+else if var is integer
+    MsgBox, %var%´Â Á¤¼öÀÔ´Ï´Ù.
+if var is time
+    MsgBox, %var%´Â ¶ÇÇÑ À¯È¿ÇÑ ³¯Â¥-½Ã°£À̱⵵ ÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/IfMsgBox.htm b/src/docs/commands/IfMsgBox.htm new file mode 100644 index 0000000..5c35189 --- /dev/null +++ b/src/docs/commands/IfMsgBox.htm @@ -0,0 +1,49 @@ + + + + +IfMsgBox + + + + + + + +

IfMsgBox

+ +

°¡Àå ÃÖ±Ù¿¡ MsgBox ¸í·É¾î°¡ ÀÛµ¿ ÁßÀÎ µ¿¾È ¾î´À ¹öÆ°À» »ç¿ëÀÚ°¡ ´­·¶´ÂÁö Á¡°ËÇÕ´Ï´Ù.

+ +
IfMsgBox, ButtonName
+

¸Å°³º¯¼ö

+
+ +
ButtonName
+

»ç¿ëÀÚ°¡ ´©¸¥ ¹öÆ°Àº ´ÙÀ½ ¹®ÀÚ¿­ Áß ÇϳªÀÔ´Ï´Ù:

+

Yes
+ No
+ OK
+ Cancel
+ Abort
+ Ignore
+ Retry
+ Continue [v1.0.44.08+]
+ TryAgain [v1.0.44.08+]
+ Timeout (Áï, MsgBox°¡ ½Ã°£Á¦ÇÑ¿¡ °É·È´Ù¸é ´Ü¾î "timeout"ÀÌ Á¸ÀçÇÕ´Ï´Ù.)

+
+ +
+ +

°ü·Ã Ç׸ñ

+

MsgBox

+

¿¹Á¦

+
MsgBox, 4, , °è¼ÓÇϽðڽÀ´Ï´Ù?, 5  ; 5-ÃÊ·Î ½Ã°£ Á¦ÇÑ.
+IfMsgBox, No
+    Return  ; »ç¿ëÀÚ°¡ "No" ¹öÆ°À» ´­·¶½À´Ï´Ù.
+IfMsgBox, Timeout
+    Return ; Áï, »ý·«Çϸé "No"¶ó°í °£ÁÖÇÕ´Ï´Ù.
+; ±×·¸Áö ¾ÊÀ¸¸é, °è¼ÓÇÕ´Ï´Ù:
+...
+ + + diff --git a/src/docs/commands/ImageSearch.htm b/src/docs/commands/ImageSearch.htm new file mode 100644 index 0000000..d58649c --- /dev/null +++ b/src/docs/commands/ImageSearch.htm @@ -0,0 +1,95 @@ + + + + +ImageSearch + + + + + + + + +

ImageSearch

+ +

È­¸é ÇÑ ±¸¿ª¿¡¼­ À̹ÌÁö¸¦ °Ë»öÇÕ´Ï´Ù.

+ +
ImageSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ImageFile
+

¸Å°³º¯¼ö

+
+ +
OutputVarX/Y
+

È­¸é¿¡¼­ À̹ÌÁö°¡ ¹ß°ßµÈ Á»ó Çȼ¿ÀÇ X¿Í Y ÁÂÇ¥¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§ (ÀÏÄ¡°¡ ¹ß°ßµÇÁö ¾ÊÀ¸¸é, º¯¼ö´Â ºñ¿öÁý´Ï´Ù). ÁÂÇ¥´Â È°¼ºÃ¢¿¡ »ó´ëÀûÀÔ´Ï´Ù. ´Ü, CoordMode°¡ »ç¿ëµÇ´Â ÁÂÇ¥ ü°è¸¦ ¹Ù²Û °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+

ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î ÀÖ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. ±×·¯¸é ErrorLevel (¾Æ·¡ ÂüÁ¶)¸¦ »ç¿ëÇÏ¿© ÀÏÄ¡°¡ ¹ß°ßµÇ¾ú´ÂÁö ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù.

+ +
X1,Y1
+

°Ë»öÇÒ »ç°¢ÇüÀÇ Á»ó X¿Í Y ÁÂÇ¥, Ç¥Çö½Ä °¡´É. ÁÂÇ¥´Â È°¼º â¿¡ »ó´ëÀûÀÔ´Ï´Ù. ´Ü, CoordMode°¡ »ç¿ëµÇ¾î ÁÂÇ¥ ü°è¸¦ ¹Ù²Û °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+ +
X2,Y2
+

°Ë»öÇÒ »ç°¢ÇüÀÇ ¿ìÇÏ ¸ð¼­¸® X¿Í Y ÁÂÇ¥, Ç¥Çö½Ä °¡´É. ÁÂÇ¥´Â È°»ó â¿¡ »ó´ëÀûÀÔ´Ï´Ù. ´Ü, CoordMode°¡ »ç¿ëµÇ¾î ÁÂÇ¥ ü°è¸¦ ¹Ù²Û °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+ +
ImageFile
+

À̹ÌÁöÀÇ ÆÄÀÏ À̸§, Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ. ¸ðµç ¿î¿µ üÁ¦´Â GIF, JPG, BMP, ICO, CUR, ±×¸®°í ANI À̹ÌÁö¸¦ Áö¿øÇÕ´Ï´Ù (BMP À̹ÌÁö´Â ¹Ýµå½Ã 16-ºñÆ® ÀÌ»óÀ̾î¾ß ÇÕ´Ï´Ù). ´Ù¸¥ ¾ÆÀÌÄÜ ÀÚ¿øÀ¸·Î´Â ´ÙÀ½ ÆÄÀÏ À¯ÇüÀÌ Æ÷ÇԵ˴ϴÙ: EXE, DLL, CPL, SCR, ±×¸®°í ±âŸ ¾ÆÀÌÄÜ ÀÚ¿øÀ» Æ÷ÇÔÇÑ À¯Çüµé. Windows XP À̻󿡼­, Ãß°¡ À̹ÌÁö Æ÷¸ËÀ¸·Î PNG, TIF, Exif, WMF, ±×¸®°í EMF°¡ Áö¿øµË´Ï´Ù. ¿î¿µ üÁ¦°¡ XP ¹Ì¸¸À̸é Microsoft»çÀÇ ¹«·á GDI+ DLLÀ» AutoHotkey.exe Æú´õ ¾ÈÀ¸·Î º¹»çÇØ ³ÖÀ» ¼ö ÀÖ½À´Ï´Ù (±×·¯³ª ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®ÀÇ °æ¿ì¶ó¸é, ±× DLLÀ» ½ºÅ©¸³Æ®ÀÇ Æú´õ ¾ÈÀ¸·Î º¹»çÇØ ³ÖÀ¸½Ê½Ã¿À). ±× DLLÀ» ³»·Á ¹ÞÀ¸·Á¸é, ´ÙÀ½ ¹®±¸¸¦ www.microsoft.com¿¡ ³Ö°í °Ë»öÇØ º¸½Ê½Ã¿À: gdi redistributable

+

Options: ´ÙÀ½ ¹®ÀÚ¿­ÀÌ ¿À°í ´ÙÀ½¿¡ ¹Ù·Î À̹ÌÁö ÆÄÀÏ À̸§ÀÌ µû¶ó¿É´Ï´Ù. °¢ ¿É¼ÇÀº ´ÙÀ½ ¿É¼Ç°ú »çÀÌ¿¡ ÇϳªÀÇ ½ºÆäÀ̽º³ª ÅÇÀ¸·Î ±¸ºÐÇϽʽÿÀ. ¿¹¸¦ µé¾î: *2 *w100 *h-1 C:\Main Logo.bmp.

+

*IconN: ÆÄÀÏ¿¡¼­ ù ¹ø° ¾ÆÀÌÄÜ ¸»°í ¾ÆÀÌÄÜ ±×·ìÀ» »ç¿ëÇÏ·Á¸é, *Icon°ú ´ÙÀ½¿¡ ¹Ù·Î ±×·ìÀÇ ¹øÈ£¸¦ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, *Icon2ÀÌ¸é µÎ ¹ø° ¾ÆÀÌÄÜ ±×·ìÀ¸·ÎºÎÅÍ ±âº» ¾ÆÀÌÄÜÀÌ ÀûÀçµË´Ï´Ù.

+

+ *n (º¯Çü): n¿¡ 0ºÎÅÍ 255 (Æ÷ÇÔ) »çÀÌÀÇ ¼ýÀÚ¸¦ ÁöÁ¤Çϸé, Â÷¿ø¿¡ »ó°ü¾øÀÌ °¢ Çʼ¿ Ä÷¯ÀÇ Àû³ìû ¿ä¼ÒÀÇ Ã¤µµ¿¡ ´ëÇÏ¿© Çã¿ëµÈ ½¦ÀÌµå º¯ÇüÀÇ °³¼ö¸¦ ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, *2ÀÌ¸é µÎ °³ÀÇ ½¦ÀÌµå º¯ÇüÀ» Çã¿ëÇÕ´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â À̹ÌÁöÀÇ Ä÷¯°¡ Á¶±Ý¾¿ ¹Ù²ð °æ¿ì ¶Ç´Â ImageFileÀÌ GIF³ª JPG °°Àº Æ÷¸ËÀ» »ç¿ëÇÒ °æ¿ì µµ¿òÀÌ µË´Ï´Ù. ÀÌ Æ÷¸ËÀº È­¸é¿¡ À̹ÌÁö¸¦ Á¤È®ÇÏ°Ô ³ªÅ¸³»Áö ¸øÇÕ´Ï´Ù. 255 ½¦ÀÌµå º¯ÇüÀ» ÁöÁ¤Çϸé, ¸ðµç »öÀÌ ºÎÇÕÇÕ´Ï´Ù. ±âº» °ªÀº 0 ½¦À̵åÀÔ´Ï´Ù.

+

+ *TransN: ÀÌ ¿É¼ÇÀ» ÀÌ¿ëÇÏ¸é ´õ ½±°Ô ºÎÇÕÀ» ã¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. À̹ÌÁö ¾È¿¡¼­ È­¸é ¾ÈÀÇ ¾î´À Ä÷¯¿¡µµ ºÎÇÕÇÒ ÇÑ Ä÷¯¸¦ ÁöÁ¤ÇÏ¸é µË´Ï´Ù. Åõ¸í ±¸¿ªÀÌ ÀÖ´Â PNG, GIF, ±×¸®°í TIF ÆÄÀÏÀ» ã´Â µ¥ ¾ÆÁÖ ÀÚÁÖ »ç¿ëµË´Ï´Ù (±×·¸Áö¸¸, ¾ÆÀÌÄÜÀº ÀÌ ¿É¼ÇÀÌ ÇÊ¿ä ¾ø½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ¾ÆÀÌÄÜÀÇ Åõ¸í»öÀº ÀÚµ¿À¸·Î Áö¿øµÇ±â ¶§¹®ÀÔ´Ï´Ù). GIF ÆÄÀÏ¿¡ ´ëÇÏ¿©, *TransWhiteÀÌ¸é °ÅÀÇ ´ëºÎºÐ ÀÛµ¿ÇÒ °ÍÀÔ´Ï´Ù. PNG¿Í TIF ÆÄÀÏ¿¡ ´ëÇÏ¿©, *TransBlack°¡ Á¦ÀÏ ÁÁÀ» °ÍÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, N¿¡ ´Ù¸¥ ¾î¶² Ä÷¯ À̸§ ¶Ç´Â RGB °ªÀ» ÁöÁ¤ÇϽʽÿÀ (°¡À̵å´Â Ä÷¯ Â÷Æ®¸¦ ÂüÁ¶ÇϽʽÿÀ. ¾Æ´Ï¸é RGB ¸ðµå·Î PixelGetColor¸¦ »ç¿ëÇϽʽÿÀ ). ¿¹Á¦: *TransBlack, *TransFFFFAA, *Trans0xFFFFAA.

+

+ *wn and *hn: À̹ÌÁö Å©±â¸¦ Á¶ÀýÇÒ ³Êºñ¿Í ³ôÀÌ + (ÀÌ ³Êºñ¿Í ³ôÀÌ´Â ¶Ç ¿©·¯-¾ÆÀÌÄÜ .ICO ÆÄÀϷκÎÅÍ ¾î´À ¾ÆÀÌÄÜÀ» ÀûÀçÇÒÁö °áÁ¤Çϱ⵵ ÇÕ´Ï´Ù.). ÀÌ µÎ ¿É¼ÇÀ» ¸ðµÎ »ý·«Çϸé, ICO, DLL, ¶Ç´Â EXE ÆÄÀϷκÎÅÍ ÀûÀçµÈ ¾ÆÀÌÄÜÀº ½Ã½ºÅÛÀÇ ±âº» ¼ÒÇü-¾ÆÀÌÄÜ Å©±â·Î Á¶ÀýµË´Ï´Ù. º¸Åë ÀÌ´Â 16 x 16 ÀÔ´Ï´Ù (*w0 *h0¸¦ ÁöÁ¤ÇÏ¸é °­Á¦·Î ½ÇÁ¦ÀÇ/³»ºÎÀÇ Å©±â¸¦ »ç¿ëÇϵµ·Ï ¸¸µé ¼ö ÀÖ½À´Ï´Ù.). ¾ÆÀÌÄÜÀÌ ¾Æ´Ñ À̹ÌÁö´Â ±×ÀÇ ½ÇÁ¦ Å©±â·Î ÀûÀçµË´Ï´Ù. ÀÌ À̹ÌÁö¸¦ ±×ÀÇ °¡·Î ¼¼·Î ºñÀ²À» À¯ÁöÇÑ Ã¤ ´Ã¸®°Å³ª ÁÙÀÌ·Á¸é, ÇÑ Â÷¿ø¿¡ -1À» ÁöÁ¤ÇÏ°í ´Ù¸¥ Â÷¿ø¿¡´Â ¾ç¼ö¸¦ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, *w200 *h-1À» ÁöÁ¤Çϸé À̹ÌÁö°¡ 200 Çȼ¿ ³Êºñ°¡ µÇ¸ç ±×ÀÇ ³ôÀÌ´Â ÀÚµ¿À¸·Î ¼³Á¤µË´Ï´Ù.

+ +
+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â °Ë»öÇÏ´Â µ¿¾È ¹®Á¦°¡ ÀÖ´Ù¸é ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ErrorLevelÀº À̹ÌÁö¸¦ ÁöÁ¤µÈ ±¸¿ª ¾È¿¡¼­ ¹ß°ßÇϸé 0ÀÌ ¼³Á¤µÇ°í, ¹ß°ßÇÏÁö ¸øÇϸé 1ÀÌ ¼³Á¤µË´Ï´Ù. ¾Æ´Ï¸é ÀÌ ¸í·É¾î°¡ °Ë»öÀ» ¼öÇàÇÏÁö ¸øÇϵµ·Ï ¸·´Â ¹®Á¦°¡ ÀÖ¾ú´Ù¸é 2°¡ ¼³Á¤µË´Ï´Ù (¿¹¸¦ µé¾î À̹ÌÁö ÆÄÀÏÀ» ¿­Áö ¸øÇϰųª Æ÷¸Ë ¿É¼ÇÀÌ ½ÉÇÏ°Ô À߸øµÇ¾úÀ» °æ¿ì).

+ +

³íÆò

+

+ImageSearch¸¦ »ç¿ëÇϸé È­¸é¿¡¼­ ±×·¡ÇÈ °´Ã¼¸¦ ŽÁöÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¡ÇÈ °´Ã¼´Â ÅؽºÆ®°¡ ¾øÀ¸¸ç ÀÖ´Ù°í ÇÏ´õ¶óµµ ½±°Ô ŽÁöÇϱⰡ ¾î·Æ½À´Ï´Ù. ¿¹¸¦ µé¾î, ±×¸² ¹öÆ°, ¾ÆÀÌÄÜ, À¥ ÆäÀÌÁö ¸µÅ©, ¶Ç´Â °ÔÀÓ °´Ã¼ÀÇ À§Ä¡¸¦ ¾Ë¾Æ³»´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÏ´Ü ¹ß°ßµÇ¸é, ±×·± °´Ã¼´Â ClickÀ» ÅëÇÏ¿© Ŭ¸¯ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

Á¾Á¾ À¯¿ëÇÑ Àü·«ÀÌ ÀÖ½À´Ï´Ù. Àüü À̹ÌÁöº¸´Ù À̹ÌÁöÀÇ ÀÛÀº ±¸¿ª¸¸ ¶¼¾î³» °Ë»öÇÏ´Â °ÍÀÌ ´õ À¯¿ëÇÕ´Ï´Ù. ÀÌ·¸°Ô Çϸé À̹ÌÁö°¡ ÀüüÀûÀ¸·Î ¹Ù²îÁö¸¸, ±× ¾È¿¡¼­ ¾î¶² ºÎºÐÀº ¾ðÁ¦³ª °°Àº °æ¿ì, ½Å·Ú¼ºÀ» °³¼±ÇÒ ¼ö ÀÖ½À´Ï´Ù. Ŭ¸³ÇÎ ±¸¿ªÀ» ÃßÃâÇÏ´Â ÇÑ °¡Áö ¹æ¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù:

+
    +
  1. À̹ÌÁö°¡ È°¼º â¿¡ º¸ÀÌ´Â µ¿¾È Alt+PrintScreen¸¦ ´©¸¨´Ï´Ù. ÀÌ·¸°Ô Çϸé È­¸éÀÇ ÂûĬ±×¸²ÀÌ Å¬¸³º¸µå¿¡ ÀúÀåµË´Ï´Ù.
  2. +
  3. Paint¿Í °°Àº À̹ÌÁö ó¸® ÇÁ·Î±×·¥À» ¿±´Ï´Ù.
  4. +
  5. Ŭ¸³º¸µåÀÇ ³»¿ëÀ» ºÙ¿© ³Ö½À´Ï´Ù (Áï, À§ÀÇ ÂûĬ±×¸²).
  6. +
  7. ±× À̹ÌÁö¸¸ °¡Áö´Â º¯ÇÏÁö ¾Ê°í À¯ÀÏÇÑ ±¸¿ªÀ» ¼±ÅÃÇÕ´Ï´Ù.
  8. +
  9. ±× ±¸¿ªÀ» »õ À̹ÌÁö ¹®¼­¿¡ º¹»çÇØ ºÙ¿© ³Ö½À´Ï´Ù.
  10. +
  11. ImageSearch¿¡ »ç¿ëÇϱâ À§ÇØ ÀÛÀº ÆÄÀÏ·Î ÀúÀåÇÕ´Ï´Ù.
  12. +
+

+ÀÏÄ¡°¡ µÇ·Á¸é, È­¸é À§ÀÇ À̹ÌÁö´Â ImageFile ¸Å°³º¯¼ö¿Í ±×ÀÇ ¿É¼ÇÀ» ÅëÇÏ¿© ÀûÀçµÈ À̹ÌÁö¿Í Å©±â°¡ °°¾Æ¾ß ÇÕ´Ï´Ù.

+

+°Ë»öµÉ ±¸¿ªÀº ¹Ýµå½Ã º¸¿©¾ß ÇÕ´Ï´Ù; ´Ù¸¥ ¸»·Î, ´Ù¸¥ â µÚ¿¡ °¡·ÁÁø âÀÇ ±¸¿ªÀº °Ë»öÇÒ ¼ö ¾ø½À´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, ¸¶¿ì½º Ä¿¼­ ¾Æ·¡¿¡ ºÎºÐÀûÀ¸·Î °¡·ÁÁø À̹ÌÁö´Â º¸Åë ŽÁö°¡ °¡´ÉÇÕ´Ï´Ù. ÀÌ¿¡ ´ëÇÑ ¿¹¿Ü´Â °ÔÀÓ Ä¿¼­ÀÔ´Ï´Ù. °ÔÀÓ Ä¿¼­´Â ´ëºÎºÐÀÇ °æ¿ì ±× ¾Æ·¡¿¡ ÀÖ´Â À̹ÌÁö¸¦ µ¤¾î¹ö¸³´Ï´Ù.

+

+°Ë»öÀº ±¸¿ªÀÇ À§ÂÊ¿¡¼­ ½ÃÀÛÇØ ¾Æ·¡·Î ³»·Á¿À¹Ç·Î, ¿©·¯ °³°¡ ºÎÇÕÇÒ °æ¿ì, À§ÂÊ¿¡ °¡±î¿î ºÎÇÕÀÌ ¹ß°ßµË´Ï´Ù.

+

+Åõ¸í»öÀ» Æ÷ÇÔÇÑ ¾ÆÀÌÄÜÀº ÀÚµ¿À¸·Î ±× Åõ¸í Ä÷¯°¡ È­¸é À§ÀÇ ¾î¶² Ä÷¯¿Íµµ ºÎÇÕÇϵµ·Ï Çã¿ëÇÕ´Ï´Ù. ±×·¯¹Ç·Î, ¾ÆÀÌÄÜ µÚ¿¡ ÀÖ´Â »öÀº ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù.

+

+ImageSearch´Â 8-ºñÆ® Ä÷¯ È­¸é (256-Ä÷¯) ÀÌ»óÀ» Áö¿øÇÕ´Ï´Ù.

+

+°Ë»ö ÇàÀ§´Â µð½ºÇ÷¹ÀÌ ¾î´ðÅÍÀÇ Ä÷¯ ±íÀÌ¿¡ µû¶ó ´Þ¶óÁú ¼ö ÀÖ½À´Ï´Ù (ƯÈ÷ GIF ÆÄÀÏ°ú JPG ÆÄÀÏ). ±×·¯¹Ç·Î, ½ºÅ©¸³Æ®¸¦ ´ÙÁß Ä÷¯ ±íÀÌ¿¡¼­ ½ÇÇàÇÏ·Á¸é, °¢°¢ÀÇ ±íÀÌ ¼³Á¤¿¡ Å×½ºÆ®ÇØ º¸´Â °ÍÀÌ Á¦ÀÏ ÁÁ½À´Ï´Ù. ½¦ÀÌµå º¯Çü ¿É¼Ç (*n)À» »ç¿ëÇÏ¸é ´ÙÁß Ä÷³ ±íÀÌ¿¡ °ÉÃļ­ ±× ÇàÀ§¸¦ ÀÏ°ü¼ºÀÌ ÀÖ°Ô ¸¸µå´Â µ¥ µµ¿òÀÌ µË´Ï´Ù.

+

+È­¸é À§¿¡¼­ À̹ÌÁö°¡ ¹ÝÅõ¸íÀ̶ó¸é, ¾Æ¸¶µµ ImageSearch´Â ±×°ÍÀ» ã´Â µ¥ ½ÇÆÐÇÒ °ÍÀÔ´Ï´Ù. À̸¦ ¿ìȸÇÏ·Á¸é, ½¦ÀÌµå º¯Çü ¿É¼Ç (*n)À» »ç¿ëÇϰųª WinSet, Transparent, Off¸¦ »ç¿ëÇÏ¿© ±× âÀ» Àӽ÷ΠºÒÅõ¸íÇÏ°Ô ¸¸µå½Ê½Ã¿À.

+ +

°ü·Ã Ç׸ñ

+

PixelSearch, PixelGetColor, CoordMode, MouseGetPos

+ +

¿¹Á¦

+
ImageSearch, FoundX, FoundY, 40,40, 300, 300, C:\My Images\test.bmp
+
+CoordMode Pixel  ; ¾Æ·¡ÀÇ ÁÂÇ¥¸¦ È°¼º âÀÌ ¾Æ´Ï¶ó È­¸é¿¡ »ó´ëÀûÀ¸·Î ¹ø¿ªÇÕ´Ï´Ù.
+ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *Icon3 %A_ProgramFiles%\SomeApp\SomeApp.exe
+if ErrorLevel = 2
+    MsgBox °Ë»öÀ» ¼öÇàÇÒ ¼ö ¾ø¾ú½À´Ï´Ù.
+else if ErrorLevel = 1
+    MsgBox ¾ÆÀÌÄÜÀ» È­¸é¿¡¼­ ¹ß°ßÇÒ ¼ö ¾ø¾ú½À´Ï´Ù.
+else
+    MsgBox ¾ÆÀÌÄÜÀ» %FoundX%x%FoundY%¿¡¼­ ¹ß°ßÇÏ¿´½À´Ï´Ù.
+ + + diff --git a/src/docs/commands/IniDelete.htm b/src/docs/commands/IniDelete.htm new file mode 100644 index 0000000..655a188 --- /dev/null +++ b/src/docs/commands/IniDelete.htm @@ -0,0 +1,47 @@ + + + + +IniDelete + + + + + + + +

IniDelete

+ +

Ç¥ÁØ Æ÷¸ËÀÇ .ini ÆÄÀϷκÎÅÍ °ªÀ» Çϳª »èÁ¦ÇÕ´Ï´Ù.

+ +
IniDelete, Filename, Section [, Key]
+

¸Å°³º¯¼ö

+
+ +
Filename
+

.ini ÆÄÀÏÀÇ À̸§, Àý´ë °æ·Î°¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£ÁÖÇÕ´Ï´Ù.

+ +
Section
+

.ini ÆÄÀÏÀÇ ¼½¼Ç À̸§. °¢°ýÈ£ ¾È¿¡ ³ªÅ¸³ª´Â Á¦¸ñ ¹®±¸ÀÔ´Ï´Ù. (°¢°ýÈ£´Â ÀÌ ¸Å°³º¯¼ö ¾È¿¡ Æ÷ÇÔ½ÃÅ°Áö ¸¶½Ê½Ã¿À).

+ +
Key
+

.ini ÆÄÀÏÀÇ Å° À̸§. »ý·«Çϸé, Àüü SectionÀÌ »èÁ¦µË´Ï´Ù.

+ +
+

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ¸¹Àº Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1·Î ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù

+ +

³íÆò

+

+Ç¥ÁØ ini ÆÄÀÏÀº ¸ð½ÀÀÌ ´ÙÀ½°ú °°½À´Ï´Ù:

+
[SectionName]
+Key=Value
+ +

°ü·Ã Ç׸ñ

+

IniRead, IniWrite, RegDelete

+

¿¹Á¦

+
IniDelete, C:\Temp\myfile.ini, section2, key
+ + + diff --git a/src/docs/commands/IniRead.htm b/src/docs/commands/IniRead.htm new file mode 100644 index 0000000..9124992 --- /dev/null +++ b/src/docs/commands/IniRead.htm @@ -0,0 +1,76 @@ + + + + +IniRead + + + + + + + +

IniRead

+ +

Ç¥ÁØ Çü½ÄÀÇ .ini ÆÄÀϷκÎÅÍ ¼½¼Ç À̸§ÀÇ ¸®½ºÆ® ¶Ç´Â ¼½¼Ç, °ªÀ» ÀнÀ´Ï´Ù.

+ +
IniRead, OutputVar, Filename, Section, Key [, Default]
+IniRead, OutputVarSection, Filename, Section
+IniRead, OutputVarSectionNames, Filename
+
+ +

¸Å°³º¯¼ö

+
+ +
OutputVar
+
+

¿­¶÷µÈ °ªÀ» ÀúÀåÇÒ º¯¼öÀÇ À̸§. º¯¼ö¸¦ ¿­¶÷ÇÒ ¼ö ¾øÀ¸¸é, º¯¼ö´Â Default ¸Å°³º¯¼ö°¡ °¡¸®Å°´Â °ªÀÌ ¼³Á¤µË´Ï´Ù (¾Æ·¡¿¡ ±â¼úÇÔ).

+
+ +
OutputVarSection
+

[AHK_L 57+]: Key ¸Å°³º¯¼ö¸¦ »ý·«Çϸé Àüü ¼½¼ÇÀ» ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù. ÁÖ¼®°ú ºó ÁÙÀº »ý·«µË´Ï´Ù. ¿ÀÁ÷ ¼½¼Ç¿¡¼­ ¾Õ ÂÊ 65,533 ¹®ÀÚ¸¸ ¿­¶÷µË´Ï´Ù.

+ +
OutputVarSectionNames
+

[AHK_L 57+]: Key¿Í Section ¸Å°³º¯¼ö¸¦ ¸ðµÎ »ý·«ÇÏ¸é ¼½¼Ç À̸§À» ¶óÀÎÇǵå·Î (`n) ±¸ºÐÇÑ ¸®½ºÆ®¸¦ ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +
Filename
+

.ini ÆÄÀÏÀÇ À̸§, Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ.

+ +
Section
+

.ini ÆÄÀÏ¿¡ ÀÖ´Â ¼½¼Ç À̸§, °¢ °ýÈ£ ¾È¿¡ ³ªÅ¸³ª´Â Á¦¸ñ ¹®±¸ (ÀÌ ¸Å°³º¯¼ö¿¡ °¢°ýÈ£´Â Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù).

+ +
Key
+

.ini ÆÄÀÏ¿¡ ÀÖ´Â Å° À̸§.

+ +
Default
+

¿äûµÈ Å°°¡ ¹ß°ßµÇÁö ¾ÊÀ¸¸é OutputVar¿¡ ÀúÀåÇÒ °ª. »ý·«µÇ¸é, ´Ü¾î ERROR°¡ ±âº»°ªÀÔ´Ï´Ù. ºó °ª (ºó ¹®ÀÚ¿­)À» ÀúÀåÇÏ·Á¸é, %A_Space%¸¦ ÁöÁ¤ÇϽʽÿÀ.

+

[AHK_L 57+]: Key°¡ »ý·«µÇ¸é ÀÌ ¸Å°³º¯¼ö´Â »ç¿ëµÇÁö ¾Ê½À´Ï´Ù.

+
+ +
+

ErrorLevel

+

+ErrorLevel´Â ÀÌ ¸í·É¾î·Î ¼³Á¤µÇÁö ¾Ê½À´Ï´Ù. ¹®Á¦°¡ ÀÖ¾ú´Ù¸é, OutputVar¿¡´Â À§¿¡ ±â¼úÇÑ ¹Ù¿Í °°ÀÌ Default °ªÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+¿î¿µ üÁ¦´Â ÀÚµ¿À¸·Î ¿­¶÷µÈ ¹®ÀÚ¿­¿¡¼­ ¾Õ µÚ ½ºÆäÀ̽º/ÅÇÀ» »ý·«ÇÕ´Ï´Ù. À̸¦ ¹æÁöÇÏ·Á¸é, ¹®ÀÚ¿­À» Ȭµû¿ÈÇ¥ ¶Ç´Â °ãµû¿ÈÇ¥·Î µÑ·¯ ½Î½Ê½Ã¿À. °¡Àå ¹Ù±ùÂÊ È¬µû¿ÈÇ¥ ¶Ç´Â °ãµû¿ÈÇ¥µµ »ý·«µË´Ï´Ù. ±×·¯³ª µû¿ÈÇ¥ ¾ÈÀÇ ½ºÆäÀ̽º´Â À¯ÁöµË´Ï´Ù.

+

+65,535 ¹®ÀÚº¸´Ù ±ä °ªÀº °á°ú°¡ ÀÏ°ü¼ºÀÌ ¾øÀ» °¡´É¼ºÀÌ ³ô½À´Ï´Ù.

+

Ç¥ÁØ ini ÆÄÀÏÀÇ ¸ð½ÀÀº ´ÙÀ½°ú °°½À´Ï´Ù:

+
[SectionName]
+Key=Value
+

+À¯´ÏÄÚµå: IniRead¿Í IniWrite´Â ¿ÜºÎ ÇÔ¼ö GetPrivateProfileString¿Í WritePrivateProfileString¿¡ ÀÇÁ¸ÇØ °ªÀ» ÀÐ°í ¾¹´Ï´Ù. ÀÌ·± ÇÔ¼öµéÀº À¯´ÏÄڵ带 UTF-16 ÆÄÀϸ¸ Áö¿øÇÕ´Ï´Ù; ´Ù¸¥ ¸ðµç ÆÄÀÏÀº ½Ã½ºÅÛÀÇ ±âº» ANSI ÄÚµå ÆäÀÌÁö¸¦ »ç¿ëÇÑ´Ù°í °£Áֵ˴ϴÙ.

+ +

°ü·Ã Ç׸ñ

+

+IniDelete, IniWrite, RegRead, ÆÄÀÏ-Àбâ ȸµ¹ÀÌ, FileRead

+ +

¿¹Á¦

+ +
IniRead, OutputVar, C:\Temp\myfile.ini, section2, key
+MsgBox, °ªÀº %OutputVar%ÀÔ´Ï´Ù.
+ + + diff --git a/src/docs/commands/IniWrite.htm b/src/docs/commands/IniWrite.htm new file mode 100644 index 0000000..f8eb3af --- /dev/null +++ b/src/docs/commands/IniWrite.htm @@ -0,0 +1,73 @@ + + + + +IniWrite + + + + + + + +

IniWrite

+ +

°ªÀ̳ª ¼½¼ÇÀ» Ç¥ÁØ Çü½ÄÀÇ .ini ÆÄÀÏ¿¡ ¾¹´Ï´Ù.

+ +
IniWrite, Value, Filename, Section, Key
+IniWrite, Pairs, Filename, Section
+ +

¸Å°³º¯¼ö

+
+ +
Value
+
+

KeyÀÇ µîÈ£ »çÀÎ (=)ÀÇ ¿À¸¥ÂÊ¿¡ ¾º¿©Áú ¹®ÀÚ¿­À̳ª ¼ýÀÚ.

+

ÅؽºÆ®°¡ ±æ¸é, ¿©·¯ ªÀº ÁÙ·Î ÀÚ¸¦ ¼ö ÀÖ½À´Ï´Ù. °è¼Ó ¼½¼ÇÀ» »ç¿ëÇÏ¸é µÇ´Âµ¥, ÀÌ·¸°Ô ÇÏ¸é °¡µ¶¼º°ú À¯Áö°ü¸®¼ºÀÌ Çâ»óµË´Ï´Ù.

+
+ +
Pairs
+
+

[AHK_L 57+]: .ini ÆÄÀÏ¿¡ ¾µ ¼½¼ÇÀÇ ¿ÏÀüÇÑ ³»¿ë, [SectionName] Çì´õ´Â Á¦¿Ü. Key´Â »ý·«ÇØ¾ß ÇÕ´Ï´Ù. PairsÀº ºó ÁÙÀÌ µé¾î ÀÖÀ¸¸é ¾È µË´Ï´Ù. ¼½¼ÇÀÌ ÀÌ¹Ì Á¸ÀçÇϸé, ¸¶Áö¸· Å°=°ª ½Ö±îÁö ¸ðÁ¶¸® µ¤¾î¾²±â µË´Ï´Ù. Pairs¿¡´Â µîÈ£ »çÀÎ (=) ¾ø´Â ÁÙÀÌ µé¾î ÀÖÀ» ¼ö ÀÖÁö¸¸, ÀÌ·¸°Ô µÇ¸é °á°ú´Â ÀÏ°ü¼ºÀÌ ¾ø½À´Ï´Ù. ÁÖ¼®À» ÆÄÀÏ¿¡ ¾µ ¼ö ÀÖÁö¸¸, IniReadÀÌ ´Ù½Ã ÀÐÀ» ¶§ ´Ù °È¾î³» ¹ö¸³´Ï´Ù.

+
+ +
Filename
+

.ini ÆÄÀÏÀÇ À̸§, Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ.

+ +
Section
+

.ini ÆÄÀÏ¿¡ ÀÖ´Â ¼½¼ÇÀÇ À̸§, °¢ °ýÈ£ ¾È¿¡ ³ªÅ¸³ª´Â Á¦¸ñ ¹®±¸ÀÔ´Ï´Ù (ÀÌ ¸Å°³º¯¼ö¿¡ °¢°ýÈ£´Â Æ÷ÇÔÇÏÁö ¾Ê½À´Ï´Ù).

+ +
Key
+

.ini ÆÄÀÏ¿¡ ÀÖ´Â Å° À̸§.

+ +
+

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖ¾úÀ¸¸é 1 ¾ø¾úÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+65,535 ¹®ÀÚ°¡ ³Ñ´Â °ªÀ» ÆÄÀÏ¿¡ ¾µ ¼ö´Â ÀÖÁö¸¸, ±× °á°ú´Â ÀÏ°ü¼ºÀÌ ¾øÀ¸¹Ç·Î º¸Åë IniRead ¶Ç´Â ´Ù¸¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­ ¿Ã¹Ù¸£°Ô ÀÐ¾î µéÀÏ ¼ö ¾ø½À´Ï´Ù.

+ +

Ç¥ÁØ ini ÆÄÀÏÀÇ ¸ð½ÀÀº ´ÙÀ½°ú °°½À´Ï´Ù:

+ +
[SectionName]
+Key=Value
+

+»õ ÆÄÀÏÀº AutoHotkey ¹öÀü¿¡ µû¶ó ½Ã½ºÅÛÀÇ ±âº» ANSI ÄÚµåÆäÀÌÁö ¶Ç´Â UTF-16À¸·Î »ý¼ºµË´Ï´Ù. UTF-16 ÆÄÀÏÀº ºó ÁÙ·Î ½ÃÀÛÇÏ´Â µí º¸ÀÏ ¼ö ÀÖ½À´Ï´Ù. ù ÁÙ¿¡ UTF-16 ¹ÙÀÌÆ® ¼ø¼­ Ç¥½ÄÀÌ µé¾î Àֱ⠶§¹®ÀÔ´Ï´Ù. ¿ìȸåÀº ¾Æ·¡¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ +À¯´ÏÄÚµå: IniRead¿Í IniWrite´Â ¿ÜºÎ ÇÔ¼ö GetPrivateProfileString¿Í WritePrivateProfileString¿¡ ÀÇÁ¸ÇÏ¿© °ªÀ» ÀÐ°í ¾¹´Ï´Ù. ÀÌ ÇÔ¼öµéÀº À¯´ÏÄڵ带 ¿ÀÁ÷ UTF-16 ÆÄÀϸ¸ Áö¿øÇÕ´Ï´Ù; ´Ù¸¥ ¸ðµç ÆÄÀÏÀº ½Ã½ºÅÛÀÇ ±âº» ANSI ÄÚµå ÆäÀÌÁö¸¦ »ç¿ëÇÑ´Ù°í °£ÁÖÇÕ´Ï´Ù. À¯´ÏÄÚµå ½ºÅ©¸³Æ®¿¡¼­, IniWriteÀº °¢ »õ ÆÄÀÏ¿¡ UTF-16À» »ç¿ëÇÕ´Ï´Ù. ÀÌ°Ô ½È´Ù¸é, IniWrite¸¦ È£ÃâÇϱâ Àü¿¡ ÆÄÀÏÀÌ Á¸ÀçÇÏ´ÂÁö ¸ÕÀú È®ÀÎÇϽʽÿÀ. ¿¹¸¦ µé¾î:

+ +
FileAppend,, NonUnicode.ini, CP0 ; ¸¶Áö¸· ¸Å°³º¯¼ö´Â ´ëºÎºÐÀÇ °æ¿ì ¼±ÅÃÀûÀÔ´Ï´Ù.
+ +

°ü·Ã Ç׸ñ

+

IniDelete, IniRead, RegWrite

+ +

¿¹Á¦

+ +
IniWrite, ÀÌ°ÍÀÌ »õ °ªÀÔ´Ï´Ù, C:\Temp\myfile.ini, section2, key
+ + + diff --git a/src/docs/commands/Input.htm b/src/docs/commands/Input.htm new file mode 100644 index 0000000..394d569 --- /dev/null +++ b/src/docs/commands/Input.htm @@ -0,0 +1,177 @@ + + + + +Input + + + + + + + +

Input

+ +

»ç¿ëÀÚ°¡ ¹®ÀÚ¸¦ ŸÀÚÇϱ⸦ ±â´Ù¸³´Ï´Ù.

+ +
Input [, OutputVar, Options, EndKeys, MatchList]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

»ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ÅؽºÆ®¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§ (±âº»°ªÀ¸·Î, ÀÎÀ§Àû ÀԷµµ ³ªÆ÷µË´Ï´Ù).

+

+ ÀÌ ¸Å°³º¯¼ö ±×¸®°í ´Ù¸¥ ¸Å°³º¯¼öµéÀÌ »ý·«µÇ¸é, ¶Ç´Ù¸¥ ¾²·¹µå¿¡¼­ ÁøÇà ÁßÀÎ InputÀÌ Áï½Ã Á¾·áµË´Ï´Ù. ±×¸®°í ±×ÀÇ ErrorLevelÀº ´Ü¾î NewInputÀÌ ¼³Á¤µË´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, ÇöÀç ¸í·É¾îÀÇ ErrorLevelÀº ÀÌÀü InputÀÌ Á¾·áµÇ¾úÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù. ¶Ç´Â Á¾·áÇÒ ÀÌÀü InputÀÌ ¾ø¾úÀ¸¸é 1ÀÌ ¼³Á¤µË´Ï´Ù.

+

+ OutputVar´Â »ç½Ç»ó Å°´­¸²À» ÀúÀåÇÏÁö ¾Ê½À´Ï´Ù. ´ë½Å¿¡, Å°´­¸²À¸·Î »ý»êµÇ´Â ¹®ÀÚµéÀ» È°¼º âÀÇ Å°º¸µå ·¹À̾ƿô/¾ð¾î¿¡ ¸Â°Ô ÀúÀåÇÕ´Ï´Ù. °á°úÀûÀ¸·Î, ¹®ÀÚ¸¦ »ý»êÇÏÁö ¾Ê´Â Å°´­¸²Àº (¿¹¸¦ µé¾î PageUp ±×¸®°í Escape) ÀúÀåµÇÁö ¾Ê½À´Ï´Ù (±×·¸Áö¸¸ ¾Æ·¡ÀÇ EndKeys ¸Å°³º¯¼ö¸¦ ÅëÇÏ¿© ÀÎÁöÇÒ ¼ö ÀÖ½À´Ï´Ù).

+

TAB (`t)°ú °°Àº °ø¹é ¹®ÀÚµéÀº ¹®ÀÚ ±×´ë·Î ÀúÀåµË´Ï´Ù. ENTER´Â ¶óÀÎÇǵå (`n)·Î ÀúÀåµË´Ï´Ù.

+ +
Options
+

´Ù¸¥ ±âÈ£·Î ±¸¼ºµÇ´Â ¹®ÀÚ¿­ (¼ø¼­¿¡ »ó°ü¾øÀÌ, »çÀÌ¿¡ ¼±ÅÃÀûÀ¸·Î ½ºÆäÀ̽º Çã¿ë):

+

B: ¹é½ºÆäÀ̽º´Â ¹«½ÃµË´Ï´Ù. º¸Åë, Input µ¿¾È¿¡ ¹é½ºÆäÀ̽º¸¦ ´©¸£¸é ÃÖ±Ù¿¡ ´­¸° ¹®ÀÚ°¡ ¹®ÀÚ¿­ ³¡À¸·ÎºÎÅÍ Á¦°ÅµË´Ï´Ù. ÁÖÀÇ: (ÆíÁý±â¿¡¼­) ÀÔ·Â ÅؽºÆ®°¡ º¸ÀÌ°í ±×¸®°í È­»ìÇ¥ Å°³ª ±âŸ ¼ö´ÜÀ» »ç¿ëÇÏ¿© ±× ¾ÈÀ» Ç×ÇØÇϸé, ¹é½ºÆäÀ̽º´Â ij·µ ¾ÕÀÇ ¹®ÀÚ°¡ ¾Æ´Ï¶ó ¸¶Áö¸· ¹®ÀÚ¸¦ Á¦°ÅÇØ ¹ö¸³´Ï´Ù (»ðÀÔ ÁöÁ¡).

+

C: ´ë¼Ò¹®ÀÚ ±¸ºÐ. º¸Åë, MatchList´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê½À´Ï´Ù (1.0.43.03 ÀÌÀü¿¡¼­´Â ¿ÀÁ÷ A-Z ±âÈ£¸¸ ´ë¼Ò¹®ÀÚ·Î º¯È­µÈ´Ù°í ÀÎÁöÇÕ´Ï´Ù. ü/Ü¿Í °°Àº ±âÈ£´Â ÀÎÁöÇÏÁö ¾Ê½À´Ï´Ù).

+

I: ¿ÀÅäÇÖÅ° ½ºÅ©¸³Æ®°¡ »ý»êÇÏ´Â ÀÔ·ÂÀ» ¹«½ÃÇÕ´Ï´Ù. ¿¹¸¦ µé¾î SendEvent ¸í·É¾î. ±×·¸Áö¸¸ SendInput ±×¸®°í SendPlay ¹æ¹ýÀº ÀÌ ¼³Á¤¿¡ »ó°ü ¾øÀÌ ¾ðÁ¦³ª ¹«½ÃµË´Ï´Ù.

+

L: ±æÀÌ Á¦ÇÑ (¿¹, L5). ÃÖ´ë·Î Çã¿ëµÇ´Â ÀÔ·Â ±æÀÌ. ÅؽºÆ®°¡ ÀÌ ±æÀÌ¿¡ µµ´ÞÇϸé, InputÀº Á¾·áÇÏ°í ErrorLevelÀº ´Ü¾î Max°¡ ¼³Á¤µË´Ï´Ù. ´Ü, ÅؽºÆ®°¡ MatchList ¹®±¸ Áß Çϳª¿¡ ºÎÇÕÇÏ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù. ÀÌ °æ¿ì ErrorLevelÀº ´Ü¾î Match°¡ ¼³Á¤µË´Ï´Ù. ±æÀ̸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, 16383 ±æÀÌ·Î Á¦Çѵ˴ϴÙ. ÀÌ °ªÀº Àý´ë ÃÖ´ëÄ¡À̱⵵ ÇÕ´Ï´Ù.

+

M: Control-AºÎÅÍ Control-Z±îÁöÀÇ º¯Çü Å°´­¸²Àº ½ÇÁ¦ ASCII ¹®ÀÚ°¡±×¿¡ »óÀÀÇÑ´Ù¸é ÀÎÁöµÇ°í º¯È¯µË´Ï´Ù. ´ÙÀ½ ¿¹Á¦¸¦ ¿¬±¸ÇØ º¸½Ê½Ã¿À. Control-C¸¦ ÀÎÁöÇÕ´Ï´Ù:

+ +
Transform, CtrlC, Chr, 3 ; Ctrl-C¿¡ ´ëÇÑ ¹®ÀÚ¸¦ CtrlC º¯¼ö¿¡ ÀúÀåÇÕ´Ï´Ù.
+Input, OutputVar, L1 M
+if OutputVar = %CtrlC%
+    MsgBox, Control-C¸¦ ´­·¶½À´Ï´Ù.
+ExitApp
+

ÁÖÀÇ: Ctrl-AºÎÅÍ Ctrl-Z±îÁöÀÇ ¹®ÀÚ´Â Chr(1)ºÎÅÍ Chr(26)¿¡ »óÀÀÇÕ´Ï´Ù. ¶ÇÇÑ, M ¿É¼Ç ¶§¹®¿¡ Ctrl-LeftArrow¿Í °°ÀÌ ¾î¶² Å°º¸µå ´ÜÃàÅ°´Â InputÀÌ ÁøÇà ÁßÀÎ µ¿¾È À߸øµÈ ÇàÀ§¸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ T: Timeout (¿¹, T3). ÀÔ·ÂÀ» Á¾·áÇÏ°í ErrorLevel¿¡ ´Ü¾î TimeoutÀ» ¼³Á¤Çϱâ Àü¿¡ ±â´Ù¸± ÃÊÀÇ °³¼ö. ÀÔ·Â ½Ã°£ÀÌ ÃÊ°úÇϸé, OutputVar´Â »ç¿ëÀÚ°¡ ±× µ¿¾È ŸÀÚÇÑ ¸ðµç °ÍµéÀÌ ¼³Á¤µË´Ï´Ù. ÀÌ °ªÀº ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀÏ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î 2.5.

+

V: Visible. º¸Åë, »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ¸·½À´Ï´Ù (½Ã½ºÅÛÀ¸·ÎºÎÅÍ ¼û½À´Ï´Ù). ÀÌ ¿É¼ÇÀ» »ç¿ëÇÏ¸é »ç¿ëÀÚÀÇ Å°´­¸²À» È°¼º â¿¡ Àü´ÞÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

*: Wildcard (¾Æ¹«µ¥³ª ãÀ½). º¸Åë, »ç¿ëÀÚ°¡ ŸÀÚÇÑ °ÍÀº Á¤È®ÇÏ°Ô MatchList ¹®±¸ Áß Çϳª¿¡ ºÎÇÕÇØ¾ß ÀÏÄ¡°¡ ÀϾ´Ï´Ù. ÀÌ ¿É¼ÇÀ» »ç¿ëÇϸé ÀÔ·Â Å×½ºÆ®ÀÇ Àüü ±æÀ̸¦ °Ë»öÇؼ­ ºÎÇÕÀ» Á» ´õ ¸¹ÀÌ Ã£À» ¼ö ÀÖ½À´Ï´Ù.

+

E [v1.1.20+]: Å° Äڵ尡 ¾Æ´Ï¶ó ¹®ÀÚ ÄÚµå·Î ÇÑ-¹®ÀÚ Á¾·á Å°¸¦ ó¸®ÇÕ´Ï´Ù. + + ÀÌ·¸°Ô Çϸé È°¼º âÀÇ Å°º¸µå ·¹À̾ƿôÀÌ ½ºÅ©¸³Æ®ÀÇ Å°º¸µå ·¹À̾ƿô°ú ´Ù¸¦ °æ¿ì °á°ú°¡ ´õ ÀÏ°ü¼ºÀÌ ÀÖ½À´Ï´Ù. + + ¶ÇÇÑ ½ÇÁ¦·Î ÁÖ¾îÁø Á¾·á ¹®ÀÚ¸¦ »ý¼ºÇÏÁö ¾Ê´Â Å° Á¶ÇÕÀÌ ÀÔ·ÂÀ» Á¾·áÇÏÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù; + + ¿¹¸¦ µé¾î, @°¡ Á¾·á Å°À̸é, (E ¿É¼ÇÀÌ »ç¿ëµÉ °æ¿ì) US ·¹À̾ƿô¿¡¼­ Shift+2´Â Ã˹ߵÇÁö¸¸ Ctrl+Shift+2´Â Ã˹ߵÇÁö ¾Ê½À´Ï´Ù. C ¿É¼Çµµ »ç¿ëµÈ´Ù¸é, Á¾·á Å°´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù.

+
+ +
EndKeys
+

Å°·Î ±¸¼ºµÈ ¸®½ºÆ®, ±× Áß¿¡ Çϳª°¡ ´­¸®¸é ÀÔ·ÂÀ» Á¾·áÇÕ´Ï´Ù (EndKey ÀÚü´Â OutputVar¿¡ ¾º¿©ÁöÁö ¾Ê½À´Ï´Ù). ÀÔ·ÂÀÌ ÀÌ·± ½ÄÀ¸·Î Á¾·áµÉ ¶§, ErrorLevelÀº ´Ü¾î EndKey ´ÙÀ½¿¡ ½ÖÁ¡ ±×¸®°í EndKeyÀ̸§ÀÌ ¼³Á¤µË´Ï´Ù. ¿¹¸¦ µé¾î: EndKey:., EndKey:Escape.

+

+ EndKey ¸®½ºÆ®´Â Send ¸í·É¾î¿Í ºñ½ÁÇÑ Çü½ÄÀ» »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, {Enter}.{Esc}¸¦ ÁöÁ¤Çϸé ENTER, period (.), ¶Ç´Â ESCAPE°¡ ÀÔ·ÂÀ» Á¾·á½Ãŵ´Ï´Ù. È°°ýÈ£ ÀÚü¸¦ Á¾·á Å°·Î »ç¿ëÇÏ·Á¸é, {{} ±×¸®°í/¶Ç´Â {}}À» ÁöÁ¤ÇϽʽÿÀ.

+

+ Control, Alt, ¶Ç´Â Shift¸¦ Á¾·á Å°·Î »ç¿ëÇÏ·Á¸é, ±× Å°ÀÇ Á߸³ ¹öÀüÀÌ ¾Æ´Ï¶ó, ÁÂ/¿ì ¹öÀüÀ» »ç¿ëÇϽʽÿÀ. + ¿¹¸¦ µé¾î, {Control}°¡ ¾Æ´Ï¶ó {LControl}{RControl}·Î ÁöÁ¤ÇϽʽÿÀ.

+

+ Control-C (^c)¿Í °°Àº ¼ö½Ä Å°´Â Áö¿øµÇÁö ¾ÊÁö¸¸, ½¬ÇÁÆ® Å°¸¦ ÇÔ²² ´­·¯¾ß ÇÏ´Â ´Ù¸¥ ¹®ÀÚµéÀº -- Áï, ?!:@&{}¿Í °°Àº ±¸µÎÁ¡ -- v1.0.14+ºÎÅÍ Áö¿øµË´Ï´Ù. + ´Ù¸¥ ¹®ÀÚµéÀº v1.1.20+ºÎÅÍ À§¿¡ ±â¼úµÈ E ¿É¼ÇÀ¸·Î Áö¿øÇÕ´Ï´Ù. .

+

+ {vkFF}¿Í °°ÀÌ ¸í½ÃÀûÀÎ °¡»ó Å° º¸µåµµ ¿ª½Ã ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº Å°¿¡ À̸§µµ ¾ø°í °Ç³×Áú ¶§ º¸ÀÌ´Â ¹®ÀÚµµ »ý»êÇÏÁö ¾Ê´Â ¾ÆÁÖ Èñ±ÍÇÑ °æ¿ì¿¡ À¯¿ëÇÕ´Ï´Ù. ±×ÀÇ °¡»ó Å° ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ Á¾·áÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ Å° ¸®½ºÆ® ÆäÀÌÁö¿¡ ÀÖ´Â ´Ü°è¸¦ µû¸£½Ê½Ã¿À.

+
+ +
MatchList
+

Å° ¹®±¸¸¦ ½°Ç¥·Î-°¡¸¥ ¸®½ºÆ®. ÀÌ ¹®±¸¿¡ ºÎÇÕÇϸé InputÀº Á¾·áµË´Ï´Ù (±× °æ¿ì ErrorLevelÀº ´Ü¾î Match°¡ ¼³Á¤µË´Ï´Ù). »ç¿ëÀÚ°¡ ŸÀÚÇÑ ¸ðµç °ÍÀº Á¤È®ÇÏ°Ô ÀÌ ¹®±¸ Áß Çϳª¿¡ ºÎÇÕÇØ¾ß ÀÏÄ¡°¡ ÀϾ´Ï´Ù (´Ü, * ¿É¼ÇÀÌ ÀÖ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù). °Ô´Ù°¡, ±¸ºÐ ½°Ç¥ µÑ·¹¿¡ ÀÖ´Â ½ºÆäÀ̽º³ª ÅÇÀº Àǹ̰¡ ÀÖ½À´Ï´Ù. Áï, ºÎÇÕ ¹®ÀÚ¿­ÀÇ ÀϺΰ¡ µË´Ï´Ù. ¿¹¸¦ µé¾î, MatchList°¡ "ABC , XYZ "À̶ó¸é, »ç¿ëÀÚ°¡ ABC µÚ¿¡ ¶Ç´Â XYZ ¾Õ¿¡ ½ºÆäÀ̽º¸¦ ŸÀÚÇØ¾ß ºÎÇÕÀÌ ÀϾ´Ï´Ù.

+

¿¬¼ÓÀûÀ¸·Î ½°Ç¥ µÎ °³´Â ¹®ÀÚ ±×´ë·ÎÀÇ ½°Ç¥ Çϳª°¡ °á°úÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½Àº ¹®ÀÚ¿­ÀÇ ³¡¿¡ ¹®ÀÚ ±×´ë·ÎÀÇ ½°Ç¥ Çϳª¸¦ »ý»êÇÕ´Ï´Ù: "string1,,,string2". ºñ½ÁÇÏ°Ô, ´ÙÀ½ ¸®½ºÆ®´Â ¿ÀÁ÷ ¾È¿¡ ¹®ÀÚ ±×´ë·ÎÀÇ ½±Ç¥¸¦ °¡Áø ÇϳªÀÇ Ç׸ñ¸¸ ´ã½À´Ï´Ù: "single,,item".

+

+ MatchList ¾ÈÀÇ Ç׸ñµéÀº °³º°ÀûÀ¸·Î Ãë±ÞÇÏÁö ¾Ê±â ¶§¹®¿¡, ÀÌ ¸®½ºÆ®¸¦ ¿ÏÀüÈ÷ ÇÑ º¯¼ö ¾È¿¡ ´ãÀ» ¼ö ÀÖ½À´Ï´Ù. ½ÇÁ¦·Î, ±×ÀÇ ±æÀÌ°¡ 16383À» ÃÊ°úÇϸé ÀüºÎ ¶Ç´Â ÀϺθ¦ º¯¼ö¿¡ ´ã¾Æ¾ß ÇÕ´Ï´Ù. ½ºÅ©¸³Æ® ÁÙÀÇ ÃÖ´ë ±æÀÌÀ̱⠶§¹®ÀÔ´Ï´Ù. +¿¹¸¦ µé¾î, MatchList´Â %List1%,%List2%,%List3%À¸·Î ±¸¼ºµÉ ¼ö ÀÖ½À´Ï´Ù -- ¿©±â¿¡¼­ °¢ º¯¼ö´Â ºÎÇÕ ¹®±¸ÀÇ ¹æ´ëÇÑ ºÎ-¸®½ºÆ®¸¦ ´ã°í ÀÖ½À´Ï´Ù.

+
+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ¾Æ¹« ¸Å°³º¯¼ö ¾øÀÌ È£ÃâµÇ¾ú´Âµ¥ InputÀÌ ÁøÇà ÁßÀÌÁö ¾ÊÀ¸¸é ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ + + + + + + + + + + + + + + + + + + + + + + + + +

1 ¶Ç´Â 0

ÀÌ ¸í·É¾î°¡ ¸Å°³º¯¼ö ¾øÀÌ »ç¿ëµÉ ¶§¸¶´Ù, ErrorLevelÀº ÀÌÀü ÀÔ·ÂÀÌ ¼º°øÀûÀ¸·Î Á¾·áÇϸé 0ÀÌ ¼³Á¤µÇ°í, ¾Æ¹« Inputµµ ÁøÇàµÇÁö ¾Ê°í ÀÖÀ¸¸é 1ÀÌ ¼³Á¤µË´Ï´Ù.

NewInputInputÀÌ Input ¸í·É¾î¸¦ »ç¿ëÇÏ´Â ¶Ç´Ù¸¥ ¾²·¹µå¿¡ ÀÇÇÏ¿© ÀÎÅÍ·´Æ® µÇ¾ú½À´Ï´Ù.
MaxInputÀÌ Çã¿ëµÈ ÃÖ´ë ±æÀÌ¿¡ µµ´ÞÇÏ¿´½À´Ï´Ù. ±×¸®°í MatchList ¾ÈÀÇ Ç׸ñ¿¡ ºÎÇÕÇÏÁö ¸øÇß½À´Ï´Ù.
TimeoutInput ½Ã°£ Á¦ÇÑ ÃÊ°ú.
MatchInputÀÌ MatchList ¾ÈÀÇ Ç׸ñ Áß Çϳª¿¡ ºÎÇÕÇÕ´Ï´Ù.
EndKey:name +

EndKeys Áß Çϳª°¡ ´­·È½À´Ï´Ù. InputÀ» Á¾·áÇÕ´Ï´Ù. ÀÌ °æ¿ì, ErrorLevel¿¡ ´Ü¾î EndKey°¡ ´ã±â°í ´ÙÀ½¿¡ ½ÖÁ¡ Çϳª¿Í È°°ýÈ£ ¾øÀÌ Á¾·á Å°ÀÇ À̸§ÀÌ µû¶ó¿É´Ï´Ù. ¿¹, "EndKey:Enter", "EndKey:Escape", µîµî.

+

+ nameÀÌ Å°ÀÇ "Á¤±ÔÈ­ µÈ" À̸§ÀÓÀ» ÁÖ¸ñÇϽʽÿÀ. EndKeys¿¡ ¾î¶»°Ô ¾º¿©Á® ÀÖ´ÂÁö´Â »ó°üÀÌ ¾ø½À´Ï´Ù. ¿¹¸¦ µé¾î, {Esc} ±×¸®°í {vk1B}´Â ¸ðµÎ "ErrorLevel:Escape"¸¦ »ý»êÇÕ´Ï´Ù. GetKeyName()¸¦ »ç¿ëÇϸé Á¤±ÔÈ­µÈ À̸§À» ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ E ¿É¼ÇÀÌ »ç¿ëµÇ¾ú´Ù¸é, nameÀº ŸÀÚµÇ¾î µé¾î ¿Â ½ÇÁ¦ ¹®ÀÚÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, Å° À̸§Àº ½ºÅ©¸³Æ®ÀÇ È°¼º Å°º¸µå ·¹À̾ƿô¿¡ µû¶ó °áÁ¤µË´Ï´Ù.

+

+ [v1.1.20] ÀÌÀü¿¡¼­, Á¾·á Å°ÀÇ VK Äڵ尡 0x41 (A)ºÎÅÍ 0x5A (Z) ±îÁöÀÇ ¹üÀ§¿¡ ÀÖ´Ù¸é, ErrorLevelÀº º¸Åë ±×¿¡ »óÀÀÇÏ´Â ASCII ¹®ÀÚ¸¦ ´ã¾Ò½À´Ï´Ù. ÇöÀç Å°º¸µå ·¹À̾ƿô¿¡ ¿Ã¹Ù¸¥°¡ ¾Æ´Ñ°¡´Â »ó°üÀÌ ¾ø¾ú½À´Ï´Ù. v1.1.20 ÀÌÈÄ·Î, ¿Ã¹Ù¸¥ ¹®ÀÚ°¡ »ç¿ëµË´Ï´Ù. AºÎÅÍ Z ¹üÀ§ÀÇ ¹®ÀÚ°¡ »ç¿ëµÇ¸é, ÇÏÀ§ ȣȯÀ» À§ÇØ ´ë¹®ÀÚ°¡ »ç¿ëµË´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é º¸Åë ¼Ò¹®ÀÚÀÔ´Ï´Ù.

+
+

³íÆò

+

+ InputÀÌ ÀÌ¹Ì ¶Ç´Ù¸¥ ¾²·¹µå¿¡¼­ ÁøÇà ÁßÀÎ µ¿¾È ÀÌ ¸í·É¾î°¡ »ç¿ëµÇ¸é, ±× InputÀº Á¾·áµÇ°í ±×ÀÇ ErrorLevel¿¡ ´Ü¾î NewInputÀÌ ¼³Á¤µË´Ï´Ù. ±× ÀÌÈÄ (¸Å°³º¯¼ö°¡ ÁÖ¾îÁö¸é), »õ InputÀÌ ½ÃÀ۵˴ϴÙ.

+

+InputÀÌ ÁøÇà ÁßÀÎ µ¿¾È¿¡, ¸ÂÃã ¸Þ´º Ç׸ñ°ú ŸÀÌ¸Ó ¼­ºê·çƾ°ú °°Àº »õ ¾²·¹µå¸¦ ¿©ÀüÈ÷ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ºñ½ÁÇÏ°Ô, InputÀÌ º¸¿©µµ Å°º¸µå ÇÖÅ°µµ ¿©ÀüÈ÷ È¿°ú°¡ ÀÖ½À´Ï´Ù. InputÀÌ º¸ÀÌÁö ¾Ê´Â´Ù¸é, ¿ÀÁ÷ °¥°í¸® ÇÖÅ°¸¸ Ã˹߽Ãų ¼ö ÀÖ½À´Ï´Ù.

+

+½ºÅ©¸³Æ®°¡ óÀ½À¸·Î ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÒ ¶§, (¾ÆÁ÷ ¼³Ä¡µÇÁö ¾Ê¾Ò´Ù¸é) Å°º¸µå °¥°í¸®°¡ ¼³Ä¡µË´Ï´Ù. °Ô´Ù°¡, ÀÌ ½ºÅ©¸³Æ®´Â ¿µ¼ÓÀûÀÌ µË´Ï´Ù. Áï, ExitApp¸¦ »ç¿ëÇØ¾ß Á¾·áÇÒ ¼ö ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù. Å°º¸µå °¥°í¸®´Â ´ÙÀ½ Suspend ¸í·É¾î³ª Hotkey ¸í·É¾î¸¦ »ç¿ëÇÒ ¶§±îÁö ¿©ÀüÈ÷ ¼³Ä¡µÇ¾î ÀÖÀ» °ÍÀÔ´Ï´Ù. ±× ¼ø°£ ÇÖÅ°°¡ ÇÖÅ°°¡ ¿ä±¸ÇÏÁö ¾ÊÀ¸¸é Á¦°ÅµË´Ï´Ù.

+

+¿©·¯ ¾ð¾î³ª Å°º¸µå ·¹À̾ƿôÀ» »ç¿ëÇÑ´Ù¸é, InputÀº ½ºÅ©¸³Æ®°¡ ¾Æ´Ï¶ó È°¼º âÀÇ Å°º¸µå ·¹À̾ƿôÀ» »ç¿ëÇÕ´Ï´Ù (InputÀÌ º¸ÀÌ´ÂÁö ¿©ºÎ¿¡ »ó°üÀÌ ¾ø½À´Ï´Ù). ±×·¸Áö¸¸, 1.0.44.03 ÀÌÀüÀº ½ºÅ©¸³Æ® ÀÚ½ÅÀÇ ¶óÀ̾ƿôÀÌ »ç¿ëµË´Ï´Ù.

+

+±×·¸°Ô À¯¿¬ÇÏÁö´Â ¸øÇÏÁö¸¸, ÇÖ½ºÆ®¸µÀÌ ÀϹÝÀûÀ¸·Î Input ¸í·É¾îº¸´Ù ´õ »ç¿ëÇϱ⠽±½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

KeyWait, ÇÖ½ºÆ®¸µ, InputBox, #InstallKeybdHook, ¾²·¹µå, if var in/contains MatchList

+ +

¿¹Á¦

+ +
; »ç¿ëÀÚ°¡ Å°¸¦ ´©¸£±â¸¦ ±â´Ù¸³´Ï´Ù. º¸ÀÌÁö ¾Ê´Â ¹®ÀÚ¸¦ »ý»êÇÏ´Â Å°µéµµ 
+;  -- ¿¹¸¦ µé¾î ¼ö½Ä Å°, ÇÔ¼ö Å° ±×¸®°í È­»ìÇ¥ Å°µµ --  
+; Á¾·á Å°(end keys)¿¡ ³ª¿­µÇ¹Ç·Î ¿ª½Ã ŽÁöµË´Ï´Ù.
+Input, SingleKey, L1, {LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Capslock}{Numlock}{PrintScreen}{Pause}
+

 

+
; ´ÙÀ½Àº ÀÛµ¿ÇÏ´Â ÇÖÅ° ¿¹Á¦ÀÔ´Ï´Ù.
+; ÇÖÅ°¿¡ Æ¿µå (~) Á¢µÎ ½Éº¼ÀÌ ÀÖÀ¸¹Ç·Î, Å° ´­¸²ÀÌ È°¼º â±îÁö ¶Õ°í Àü´ÞµË´Ï´Ù.
+; ±×·¡¼­, ÆíÁý±â ¾È¿¡¼­ [btw¸¦ ŸÀÚÇϸé (¶Ç´Â ±âŸ ´Ù¸¥ ºÎÇÕÇÏ´Â ¹®±¸¸¦ ŸÀÚÇϸé)
+; ½ºÅ©¸³Æ®´Â ÀÚµ¿À¸·Î ¿©·¯ºÐÀÌ ÁöÁ¤ÇÑ ÇàÀ§¸¦ ¼öÇàÇÕ´Ï´Ù.
+; (¿¹¸¦ µé¾î ŸÀÚµÈ ÅؽºÆ®¸¦ ±³Ã¼ÇÕ´Ï´Ù):
+
+~[::
+Input, UserInput, V T5 L4 C, {enter}.{esc}{tab}, btw,otoh,fl,ahk,ca
+if (ErrorLevel = "Max")
+{
+    MsgBox, You entered "%UserInput%", which is the maximum length of text.
+    return
+}
+if (ErrorLevel = "Timeout")
+{
+    MsgBox, You entered "%UserInput%" at which time the input timed out.
+    return
+}
+if (ErrorLevel = "NewInput")
+    return
+If InStr(ErrorLevel, "EndKey:")
+{
+    MsgBox, You entered "%UserInput%" and terminated the input with %ErrorLevel%.
+    return
+}
+; ±×·¸Áö ¾ÊÀ¸¸é, ºÎÇÕÀÌ ¹ß°ßµÇ¾ú½À´Ï´Ù.
+if (UserInput = "btw")
+    Send, {backspace 4}by the way
+else if (UserInput = "otoh")
+    Send, {backspace 5}on the other hand
+else if (UserInput = "fl")
+    Send, {backspace 3}Florida
+else if (UserInput = "ca")
+    Send, {backspace 3}California
+else if (UserInput = "ahk")
+    Run, http://ahkscript.org
+return
+ + + diff --git a/src/docs/commands/InputBox.htm b/src/docs/commands/InputBox.htm new file mode 100644 index 0000000..2d1bb59 --- /dev/null +++ b/src/docs/commands/InputBox.htm @@ -0,0 +1,80 @@ + + + + +InputBox + + + + + + + +

InputBox

+ +

»ç¿ëÀÚ°¡ ¹®ÀÚ¿­À» ÀÔ·ÂÇϵµ·Ï ¿ä±¸ÇÏ´Â ÀÔ·Â ¹Ú½º¸¦ º¸¿©ÁÝ´Ï´Ù.

+ +
InputBox, OutputVar [, Title, Prompt, HIDE, Width, Height, X, Y, Font, Timeout, Default]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

»ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ÅؽºÆ®¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
Title
+

ÀÔ·Â ¹Ú½ºÀÇ Á¦¸ñ. ºñ¾î Àְųª »ý·«Çϸé, ½ºÅ©¸³ÀÇ À̸§ÀÌ ±âº»°ªÀÔ´Ï´Ù.

+ +
Prompt
+

ÀÔ·Â ¹Ú½ºÀÇ ÅؽºÆ®, º¸Åë ¾î¶² Á¾·ùÀÇ ÀÔ·ÂÀ» ¿¹»óÇÏ°í ÀÖ´ÂÁö »ç¿ëÀÚ¿¡°Ô º¸¿©ÁÖ´Â ¸Þ½ÃÁöÀÔ´Ï´Ù. Prompt°¡ ±æ¸é, °è¼Ó ¼½¼ÇÀ» ¼ö´ÜÀ¸·Î ÇÏ¿© ´õ ªÀº ÁÙµé·Î ºÐ¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¸é °¡µ¶¼º°ú À¯Áö°ü¸®¼ºÀÌ Çâ»óµË´Ï´Ù.

+ +
HIDE
+

ÀÌ ¸Å°³º¯¼ö°¡ ´Ü¾î HIDEÀ̸é, »ç¿ëÀÚÀÇ ÀÔ·ÂÀÌ °¡·ÁÁý´Ï´Ù. Æнº¿öµå¸¦ ÀÔ·ÂÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù.

+ +
Width
+

ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î Àְųª »ý·«Çϸé, âÀÇ ½ÃÀÛ ³Êºñ´Â 375ÀÔ´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.

+ +
Height
+

ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î Àְųª »ý·«µÇ¸é, âÀÇ ½ÃÀÛ ³Êºñ´Â 189°¡ µË´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.

+ +
X, Y
+

âÀÇ X ÁÂÇ¥¿Í Y ÁÂÇ¥ (0,0À» »ç¿ëÇÏ¸é ¹ÙÅÁÈ­¸éÀÇ Á»ó ¸ð¼­¸®·Î À̵¿ÇÕ´Ï´Ù), Ç¥Çö½Ä °¡´É. ÁÂÇ¥°¡ ºñ¾î Àְųª »ý·«Çϸé, ´ëÈ­»óÀÚ´Â ÇØ´ç Â÷¿øÀÇ °¡¿îµ¥¿¡ Á¤·ÄµË´Ï´Ù. ÁÂÇ¥°¡ À½¼öÀÌ¸é ±× Ã¢À» ºÎºÐÀûÀ¸·Î ¹èÄ¡Çϰųª ¿ÏÀüÈ÷ ¹ÙÅÁÈ­¸é ¹ÛÀ¸·Î ¹èÄ¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +
Font
+

¾ÆÁ÷ ±¸ÇöµÇÁö ¾Ê¾Ò½À´Ï´Ù (ºó ä·Î µÎ½Ê½Ã¿À). ¾ÕÀ¸·Î verdana:8¿Í °°Àº °ÍÀ» ¹Þ°Ô µÉ °ÍÀÔ´Ï´Ù.

+ +
Timeout
+

ÃÊ ´ÜÀ§ ½Ã°£Á¦ÇÑ (¼Ò¼öÁ¡À» Æ÷ÇÔÇÒ ¼ö ÀÖ°í Ç¥Çö½Ä °¡´É). ÀÌ °ªÀÌ 2147483 (24.8 ÀÏ)À» ÃÊ°úÇϸé, 2147483À¸·Î ¼³Á¤µË´Ï´Ù. ½Ã°£Á¦ÇÑÀ» °æ°úÇϸé, InputBox âÀÌ ÀÚµ¿À¸·Î ´ÝÈ÷°í ErrorLevel¿¡ 2°¡ ¼³Á¤µË´Ï´Ù. OutputVar´Â ¿©ÀüÈ÷ »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ °ÍÀÌ ¼³Á¤µË´Ï´Ù.

+ +
Default
+

InputBox ´ëÈ­»óÀÚ°¡ óÀ½ ½ÃÀÛÇÒ ¶§ ÆíÁý Çʵ忡 ³ªÅ¸³¯ ÅؽºÆ®. »ç¿ëÀÚ´Â ¹é½ºÆäÀ̽º³ª ±âŸ ¼ö´ÜÀ¸·Î º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +
+

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

¾Æ·¡ ÂüÁ¶.

+ +

³íÆò

+

+ÀÌ ´ëÈ­»óÀÚ·Î »ç¿ëÀÚ´Â ÅؽºÆ®¸¦ ÀÔ·ÂÇÏ°í OK ¶Ç´Â CANCEL¸¦ ´©¸¦ ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ´Â ´ëÈ­»óÀÚÀÇ Å׵θ®¸¦ ²ø¾î Å©±â¸¦ Á¶ÀýÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ErrorLevel´Â »ç¿ëÀÚ°¡ CANCEL ¹öÆ°À» ´©¸£¸é 1ÀÌ ¼³Á¤µÇ°í OK ¹öÆ°À» ´©¸£¸é 0ÀÌ ¼³Á¤µË´Ï´Ù. ¾Æ´Ï¸é ´ëÈ­»óÀÚ°¡ ½Ã°£ Á¦ÇÑ¿¡ °É¸®¸é 2°¡ ¼³Á¤µË´Ï´Ù. ¼¼ °æ¿ì ¸ðµÎ OutputVar¿¡´Â »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ °ªÀÌ ¼³Á¤µË´Ï´Ù. + +ÀÌ·¸°Ô Çϸé CANCEL ¹öÆ°Àº CANCEL¸»°í ½ºÅ©¸³Æ® µðÀÚÀ̳ʰ¡ ¿øÇÏ´Â ÇÔ¼ö¸¦ ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+GUI âÀº Gui +OwnDialogs¸¦ »ç¿ëÇÏ¿© ¸ð´Þ InputBox¸¦ º¸¿©ÁÙ ¼öµµ ÀÖ½À´Ï´Ù. ¸ð´Þ InputBox¸¦ »ç¿ëÇÏ¸é »ç¿ëÀÚ´Â InputBox¸¦ ³¡³¾ ¶§±îÁö GUI â°ú »óÈ£ÀÛ¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+GUI, Input, MsgBox, FileSelectFile, FileSelectFolder, SplashTextOn, ToolTip

+ +

¿¹Á¦

+
InputBox, password, ¾ÏÈ£¸¦ ÀÔ·ÂÇϽʽÿÀ, (ÀÔ·ÂÀº º¸ÀÌÁö ¾ÊÀ» °Ì´Ï´Ù), hide 
+InputBox, UserInput, Phone Number, ÀüÈ­ ¹øÈ£¸¦ ÀÔ·ÂÇϽʽÿÀ., , 640, 480
+if ErrorLevel
+    MsgBox, CANCELÀ» ´­·¶½À´Ï´Ù.
+else
+    MsgBox, "%UserInput%"À» ÀÔ·ÂÇß½À´Ï´Ù.
+ + + diff --git a/src/docs/commands/KeyHistory.htm b/src/docs/commands/KeyHistory.htm new file mode 100644 index 0000000..25d7e83 --- /dev/null +++ b/src/docs/commands/KeyHistory.htm @@ -0,0 +1,44 @@ + + + + +KeyHistory + + + + + + + +

KeyHistory

+ +

½ºÅ©¸³Æ® Á¤º¸¸¦ º¸¿©ÁÖ°í ÃÖ±ÙÀÇ Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯ÀÇ ÀÌ·ÂÀ» º¸¿©ÁÝ´Ï´Ù.

+ +
KeyHistory
+

³íÆò

+

+ÀÌ ¸í·É¾î´Â ¸ÞÀΠâ¿¡¼­ "View->Key history" ¸Þ´º Ç׸ñÀ» ¼±ÅÃÇÑ °Í°ú µ¿µîÇÕ´Ï´Ù.

+

+Å° ÀÌ·ÂÀ» ²ô·Á¸é, ´ÙÀ½ ÁÙÀ» ½ºÅ©¸³Æ® ¾Æ¹«µ¥³ª ÁöÁ¤ÇϽʽÿÀ:

+ +
#KeyHistory 0
+

+#KeyHistory´Â ¶Ç º¸¿©ÁÙ À̺¥Æ®ÀÇ °³¼ö¸¦ ¹Ù²Ù´Â µ¥¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ÀÌ Æ¯Â¡Àº ¸ñÀûÀÌ ½ºÅ©¸³Æ®¿Í ÇÖÅ°ÀÇ µð¹ö±×¸¦ µ½´Â µ¥ ÀÖ½À´Ï´Ù. ¶ÇÇÑ ºñ-Ç¥ÁØ Å°º¸µå Å°ÀÇ ½ºÄµ Äڵ带 ŽÁöÇÏ´Â µ¥¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Å° ¸®½ºÆ® ÆäÀÌÁö ¾Æ·¡¿¡ ±â¼úµÈ ´Ü°è¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù (½ºÄµ Äڵ带 ¾Ë¸é ±×·± Å°¸¦ ÇÖÅ°·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù).

+

+ÈÙ À̺¥Æ®ÀÇ °¡»ó Å° (VK) (WheelDown, WheelUp, WheelLeft, ±×¸®°í WheelRight)´Â °ª º¸À¯Àڷμ­ ¿ÀÅäÇÖÅ°ÀÇ ¹Ù±ù¿¡¼­´Â ¾Æ¹« Àǹ̰¡ ¾ø½À´Ï´Ù. ¶ÇÇÑ ÈÙ À̺¥Æ®ÀÇ ½ºÄµ ÄÚµå´Â ½ÇÁ¦·Î´Â ÈÙÀ» µ¹¸®´Â ´«±ÝÀÇ °³¼öÀÔ´Ï´Ù (º¸Åë 1).

+

+½ºÅ©¸³Æ®¿¡ Å°º¸µå °¥°í¸®°¡ ¼³Ä¡µÇ¾î ÀÖÁö ¾ÊÀ¸¸é, KeyHistory âÀº ½ºÅ©¸³Æ® ÀÚü¿¡¼­ ¸¸µé¾î³»´Â Å°º¸µå À̺¥Æ®¸¸ º¸¿©ÁÝ´Ï´Ù (Áï, »ç¿ëÀÚÀÇ À̺¥Æ®´Â º¸¿©ÁÖÁö ¾Ê½À´Ï´Ù). ½ºÅ©¸³Æ®¿¡ ¸¶¿ì½º °¥°í¸®°¡ ¼³Ä¡µÇ¾î ÀÖÁö ¾ÊÀ¸¸é, ¸¶¿ì½º ¹öÆ° À̺¥Æ®´Â º¸ÀÌÁö ¾Ê½À´Ï´Ù. ½ºÅ©¸³Æ®°¡ °¥°í¸®¸¦ »ç¿ëÇÏ´Â Áö ±× ¿©ºÎ´Â ½ºÅ©¸³Æ®ÀÇ ¸ÞÀΠâ¿¡¼­ "View->Key History"¸¦ ÅëÇÏ¿© º¼ ¼ö ÀÖ½À´Ï´Ù (Æ®·¹ÀÌ ¾ÆÀÌÄÜÀÇ "Open"À» ÅëÇÏ¿© Á¢±ÙÀÌ °¡´ÉÇÕ´Ï´Ù). °­Á¦·Î °¥°í¸®¸¦ ¼³Ä¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ½ºÅ©¸³Æ®¿¡ ´ÙÀ½ ÁÙÀ» Ãß°¡ÇÏ¸é µË´Ï´Ù:

+
#InstallKeybdHook
+#InstallMouseHook
+ +

°ü·Ã Ç׸ñ

+

+#KeyHistory, #InstallKeybdHook, #InstallMouseHook, ListHotkeys, ListLines, ListVars, GetKeyState, KeyWait, A_PriorKey

+ +

¿¹Á¦

+
KeyHistory ; ÀÌ·Â Á¤º¸¸¦ ⠾ȿ¡ º¸¿©ÁÝ´Ï´Ù.
+ + + diff --git a/src/docs/commands/KeyWait.htm b/src/docs/commands/KeyWait.htm new file mode 100644 index 0000000..7985c38 --- /dev/null +++ b/src/docs/commands/KeyWait.htm @@ -0,0 +1,100 @@ + + + + +KeyWait + + + + + + + +

KeyWait

+ +

Å°³ª ¸¶¿ì½º/Á¶À̽ºÆ½ ¹öÆ°ÀÌ ´­¸®°Å³ª ¶¼¾îÁö±â¸¦ ±â´Ù¸³´Ï´Ù.

+ +
KeyWait, KeyName [, Options]
+

¸Å°³º¯¼ö

+
+ +
KeyName
+

ÀÌ°ÍÀº Å°º¸µå·ÎºÎÅÍ ¹®ÀÚ Çϳª ¶Ç´Â Å° ¸®½ºÆ®·ÎºÎÅÍÀÇ À̸§ Áß Çϳª°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. ¸¶¿ì½º/Á¶À̽ºÆ½ ¹öÆ°°ú °°Àº °æ¿ì, Á¶À̽ºÆ½ ¼Ó¼ºÀº ¹öÆ° Áö¿øÇÕ´Ï´Ù.

+

+ ¸í½ÃÀûÀÎ °¡»ó Å° Äڵ嵵 vkFF¿Í °°ÀÌ ¿ª½Ã ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. Èñ±ÍÇÑ °æ¿ìÀ̱â´Â ÇÏÁö¸¸ Å°¿¡ À̸§ÀÌ ¾ø°Å³ª ´­¸± ¶§ º¸ÀÌÁö ¾Ê´Â ¹®ÀÚ¸¦ »ý»êÇÏ´Â °æ¿ì¿¡ À¯¿ëÇÕ´Ï´Ù. ±×ÀÇ °¡»ó Å° ÄÚµå´Â ´ÙÀ½ Å° ¸®½ºÆ® ÆäÀÌÁö ¾Æ·¡¿¡ ÀÖ´Â ´Ü°è¸¦ ¹â¾Æ ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù .

+ +
Options
+

ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î ÀÖÀ¸¸é, ¸í·É¾î´Â ÁöÁ¤µÈ Å°³ª ¸¶¿ì½º/Á¶À̽ºÆ½ ¹öÆ°À» ¹°¸®ÀûÀ¸·Î »ç¿ëÀÚ°¡ ¶¼±â¸¦ ¹«ÇÑÁ¤ ±â´Ù¸³´Ï´Ù. ±×·¸Áö¸¸, Å°º¸µå °¥°í¸®°¡ ¼³Ä¡µÇ¾î ÀÖÁö ¾Ê°í KeyNameÀÌ Send ¸í·É¾î¿Í °°Àº ¼ö´ÜÀ¸·Î ÀÎÀ§ÀûÀ¸·Î ¶¾ Å°º¸µå Å°À̸é, ±× Å°´Â ¹°¸®ÀûÀ¸·Î ¶¾ °Íó·³ º¸ÀÏ °ÍÀÔ´Ï´Ù. ¸¶¿ì½º °¥°í¸®°¡ ¼³Ä¡µÇ¾î ÀÖÁö ¾ÊÀ» ¶§ ¸¶¿ì½º ¹öÆ°µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.

+

Options: ´ÙÀ½ ±âÈ£·Î ±¸¼ºµÇ´Â ¹®ÀÚ¿­ (¼ø¼­´ë·Î, ¼±ÅÃÀûÀ¸·Î »çÀÌ¿¡ ½ºÆäÀ̽º Çã¿ë):

+

D: Å°°¡ ´­¸®±â¸¦ ±â´Ù¸³´Ï´Ù.

+

L: Å°ÀÇ ³í¸®Àû »óŸ¦ Á¡°ËÇÕ´Ï´Ù. ÀÌ´Â OS¿Í È°¼º âÀÌ ¹Ï°í ÀÖ´Â Å°ÀÇ »óÅÂÀÔ´Ï´Ù (¹Ýµå½Ã ¹°¸®Àû »óÅÂ¿Í °°Àº °ÍÀº ¾Æ´Õ´Ï´Ù). ÀÌ ¿É¼ÇÀº Á¶À̽ºÆ½ ¹öÆ°¿¡ ´ëÇؼ­´Â ¹«½ÃµË´Ï´Ù.

+

T: ½Ã°£Á¦ÇÑ (¿¹, T3). ½ÃÇÑ Á¾·á¸¦ ¼±¾ðÇϱâ Àü¿¡ ±â´Ù¸± ÃÊÀÇ °³¼ö. ½ÃÇÑÀÌ Áö³ª¸é ErrorLevel¿¡ 1ÀÌ ¼³Á¤µË´Ï´Ù. Å°³ª ¹öÆ°ÀÌ ÁöÁ¤µÈ »óŸ¦ ÀÌ·ç¸é, ÀÌ ¸í·É¾î´Â ½ÃÇÑÀÌ Áö³ª±â¸¦ ±â´Ù¸®Áö ¾Ê½À´Ï´Ù. ´ë½Å¿¡, Áï½Ã ErrorLevel¿¡ 0À» ¼³Á¤ÇÏ°í ½ºÅ©¸³Æ®´Â ½ÇÇàÀ» °è¼ÓÇÕ´Ï´Ù.

+

½Ã°£Á¦ÇÑ °ªÀº 2.5¿Í °°ÀÌ ºÎµ¿ ¼Ò¼öÁ¡ ¼ö°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª 0x03¿Í °°Àº ½ÊÀ°Áø ¼ö´Â ¾ÈµË´Ï´Ù.

+ +
+ +

ErrorLevel

+

+¸í·É¾î°¡ ½ÃÇÑÁ¦ÇÑ¿¡ °É¸®¸é ErrorLevel¿¡ 1ÀÌ ¼³Á¤µÇ°í ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+Å°³ª ¸¶¿ì½º ¹öÆ°ÀÇ ¹°¸®Àû »óÅ´ º¸Åë ³í¸®Àû »óÅÂ¿Í °°½À´Ï´Ù. ´Ü, Å°º¸µå/¸¶¿ì½º °¥°í¸®°¡ ¼³Ä¡µÇ¾î ÀÖÁö ¾Ê¾Æ¾ß ÇÕ´Ï´Ù. ¼³Ä¡°¡ µÇ¾î ÀÖÀ¸¸é, »ç¿ëÀÚ°¡ ¹°¸®ÀûÀ¸·Î Å°¸¦ ´©¸£°í ÀÖ´ÂÁö ¾Æ´ÑÁö Á¤È®ÇÏ°Ô ¹Ý¿µÇÕ´Ï´Ù. ¿©·¯ºÐÀÇ ½ºÅ©¸³Æ®°¡ °¥°í¸®¸¦ »ç¿ëÇÏ°í ÀÖ´ÂÁö ¾Ë°í ½ÍÀ¸¸é KeyHistory ¸í·É¾î ¶Ç´Â ¸Þ´º¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. µÎ °¥°í¸®¸¦ ¸ðµÎ °­Á¦·Î ¼³Ä¡ÇÏ·Á¸é ½ºÅ©¸³Æ®¿¡ #InstallKeybdHook Áö½Ã¾î¿Í #InstallMouseHook Áö½Ã¾î¸¦ Ãß°¡ÇÏ¸é µË´Ï´Ù.

+

+ÀÌ ¸í·É¾î°¡ ´ë±â »óÅ¿¡ ÀÖ´Â µ¿¾È, »õ ¾²·¹µå¸¦ ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀ̸Ӹ¦ ÅëÇÏ¿© ±âµ¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+µÎ °³ ÀÌ»óÀÇ Å°°¡ ¶¼¾îÁö±â¸¦ ±â´Ù¸®·Á¸é, KeyWait¸¦ ¿¬¼ÓÀûÀ¸·Î »ç¿ëÇϽʽÿÀ. ¿¹¸¦ µé¾î:

+ +
KeyWait Control  ; Control°ú Alt°¡ ¸ðµÎ ¶¼¾îÁö±â¸¦ ±â´Ù¸³´Ï´Ù.
+KeyWait Alt
+

+Å° ÁýÇÕ ÁßÀÇ ÇÑ Å°°¡ ¶¼¾îÁö±â¸¦ ±â´Ù¸®·Á¸é, Input ¸í·É¾îÀÇ ¿¹Á¦ ¼½¼ÇÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

+GetKeyState, Key List, Input, KeyHistory, #InstallKeybdHook, #InstallMouseHook, ClipWait, WinWait

+ +

¿¹Á¦

+ +
; ¿¹Á¦ #1: ±âº» »ç¿ë¹ý:
+KeyWait, a  ; A Å°°¡ ¶¼¾îÁö±â¸¦ ±â´Ù¸³´Ï´Ù.
+KeyWait, LButton, D  ; ¿ÞÂÊ ¸¶¿ì½º ¹öÆ°ÀÌ ´­¸®±â¸¦ ±â´Ù¸³´Ï´Ù.
+KeyWait, Joy1, D T3  ; ù ¹ø° Á¶À̽ºÆ½ ¹öÆ°ÀÌ ´­¸®±â¸¦ 3 ÃʱîÁö ±â´Ù¸³´Ï´Ù.
+KeyWait, LAlt, L  ; ¿ÞÂÊ Alt Å°°¡ ³í¸®ÀûÀ¸·Î ¶¼¾îÁö±â¸¦ ±â´Ù¸³´Ï´Ù.
+

 

+
; ¿¹Á¦ #2: °£´ÜÇÑ ÇÖÅ°:
+~Capslock::
+KeyWait, Capslock  ; »ç¿ëÀÚ°¡ ¹°¸®ÀûÀ¸·Î ¶¼±â¸¦ ±â´Ù¸³´Ï´Ù.
+MsgBox Capslock Å°¸¦ ´©¸£°í ¶Ã½À´Ï´Ù.
+return
+

 

+
; ¿¹Á¦ #3: Å° ¶Ç´Â ¸¶¿ì½º ¹öÆ° ¸®¸ÊÇÎÇϱâ
+; (ÀÌ°ÍÀº ¿ÀÁ÷ ½Ã¿¬¿ëÀÔ´Ï´Ù. ³»ÀåµÈ ¸®¸ÊÇΠƯ¡À» »ç¿ëÇÏ´Â °ÍÀÌ ´õ ½±½À´Ï´Ù):
+; ¿Þ¹öÆ°ÀÌ ´­·Á ÀÖ´Â µ¿¾È NumpadAdd¸¦ ´­·¶½À´Ï´Ù.
+; ±× È¿°ú·Î NumpadAdd°¡ ¿Þ ¹öÆ°À¸·Î º¯½ÅÇÕ´Ï´Ù.
+*NumpadAdd::
+MouseClick, left,,, 1, 0, D  ; ¿Þ¹öÆ°À» ´©¸£°í ÀÖ½À´Ï´Ù.
+KeyWait, NumpadAdd  ; Å°°¡ ¶¼¾îÁö±â¸¦ ±â´Ù¸³´Ï´Ù.
+MouseClick, left,,, 1, 0, U  ; ¸¶¿ì½º ¹öÆ°À» ¶Á´Ï´Ù.
+return
+

 

+
; ¿¹Á¦ #4: Å°°¡ µÎ ¹ø ´­¸± ¶§¸¦ ŽÁöÇÕ´Ï´Ù (´õºí Ŭ¸¯°ú À¯»ç).
+; KeyWait´Â Å°º¸µåÀÇ ÀÚµ¿ ¹Ýº¹ Ư¡ ¶§¹®¿¡ RControl Å°¸¦ ´©¸¥ ä ¶Ç´Ù¸¥ Å°¸¦ º¯°æÇÒ ¶§
+; ¿øÇÏÁö ¾Ê´Â ÀÌÁß-´­¸²ÀÌ µÇÁö ¾Êµµ·Ï ¹æÁöÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. 
+; ÇÖÅ°ÀÇ ¾²·¹µå¸¦ °è¼Ó ½ÇÇàµÇµµ·Ï À¯ÁöÇØ ÀÚµ¿-¹Ýº¹À» ¸·°í,
+; #MaxThreadsPerHotkeyÀÌ ±âº» ¼³Á¤À¸·Î 1À» À¯ÁöÇϵµ·Ï ÇÔÀ¸·Î½á ÀÌ ±â´ÉÀ» ±¸ÇöÇÕ´Ï´Ù.
+; ÁÖÀÇ:  SetTimer ÆäÀÌÁö ÇÏ´Ü¿¡ 1, 2, 3-Ŭ¸¯À» ±¸º°ÇÏ´Â
+; ´õ Á¤±³ÇÑ ½ºÅ©¸³Æ®°¡ ÀÖ½À´Ï´Ù.
+
+~RControl::
+if (A_PriorHotkey <> "~RControl" or A_TimeSincePriorHotkey > 400)
+{
+    ; ´­¸² »çÀÌ¿¡ ³Ê¹« ½Ã°£ÀÌ ¸¹½À´Ï´Ù. ±×·¡¼­ ÀÌ°ÍÀº ´õºí Ŭ¸¯ÀÌ ¾Æ´Õ´Ï´Ù.
+    KeyWait, RControl
+    return
+}
+MsgBox ¿À¸¥ÂÊ ÄÜÆ®·Ñ Å°¸¦ µÎ ¹ø ´­·¶½À´Ï´Ù.
+return
+ + + diff --git a/src/docs/commands/ListHotkeys.htm b/src/docs/commands/ListHotkeys.htm new file mode 100644 index 0000000..ecff58d --- /dev/null +++ b/src/docs/commands/ListHotkeys.htm @@ -0,0 +1,43 @@ + + + + +ListHotkeys + + + + + + + +

ListHotkeys

+ +

ÇöÀç ½ºÅ©¸³Æ®°¡ »ç¿ë ÁßÀÎ ÇÖÅ°¸¦ º¸¿©ÁÝ´Ï´Ù. ±×µéÀÇ ¼­ºê·çƾÀÌ ÇöÀç ½ÇÇàÁßÀÎÁö ±×¸®°í ±×µéÀÌ Å°º¸µå ¶Ç´Â ¸¶¿ì½º °¥°í¸®¸¦ »ç¿ëÇÏ´ÂÁö ¿©ºÎ¸¦ º¸¿©ÁÝ´Ï´Ù.

+ +
ListHotkeys
+

+ÀÌ ¸í·É¾î´Â ¸ÞÀΠâÀÇ View->Hotkeys ¸Þ´º Ç׸ñÀ» ¼±ÅÃÇÑ °Í°ú µ¿ÀÏÇÕ´Ï´Ù.

+

+ÇÖÅ°°¡ Hotkey ¸í·É¾î¸¦ ÅëÇÏ¿© ²¨Á® ÀÖÀ¸¸é, OFF ¶Ç´Â PART·Î ³ª¿­µÉ °ÍÀÔ´Ï´Ù("PART"¶õ ÇÖÅ°ÀÇ º¯ÇüÁß ÀϺθ¸ ²¨Á® ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù).

+

+[v1.1.16+]: ÇÖÅ°ÀÇ º¯ÇüÁß Çϳª¶óµµ 0-¾Æ´Ñ #InputLevelÀ» °¡Áö°í ÀÖ´Ù¸é, ±× ·¹º§ (¶Ç´Â ÃÖ¼Ò ±×¸®°í ÃÖ´ë ·¹º§)À» º¸¿©ÁÝ´Ï´Ù.

+

+ÇÖÅ°ÀÇ ¼­ºê ·çƾ Áß Çϳª¶óµµ ÇöÀç ½ÇÇà ÁßÀ̸é, ±× ÇÖÅ°¿¡ ´ëÇÏ¿© ¾²·¹µåÀÇ Àüü °³¼ö¸¦ º¸¿©ÁÝ´Ï´Ù.

+

+¸¶Áö¸·À¸·Î, ÇÖÅ°ÀÇ À¯Çüµµ º¸¿©ÁÝ´Ï´Ù. ÇÖÅ°ÀÇ À¯ÇüÀº ´ÙÀ½ Áß ÇϳªÀÔ´Ï´Ù:

+

+reg: ÇÖÅ°°¡ ¿î¿µ üÁ¦ÀÇ RegisterHotkey() ÇÔ¼ö¸¦ ÅëÇÏ¿© ±¸ÇöµÇ¾ú½À´Ï´Ù.
+ reg(no): À§¿Í µ¿ÀÏÇÏÁö¸¸ ÀÌ ÇÖÅ°´Â ºñÈ°¼º »óÅÂÀÔ´Ï´Ù (Áö¿øµÇÁö ¾Ê°Å³ª ¶Ç´Â º¸·ù(suspended) µÇ¾ú±â ¶§¹®).
+ k-hook: ÇÖÅ°°¡ Å°º¸µå °¥°í¸®¸¦ ÅëÇÏ¿© ±¸ÇöµÇ¾ú½À´Ï´Ù.
+ m-hook: ÇÖÅ°°¡ ¸¶¿ì½º °¥°í¸®¸¦ ÅëÇÏ¿© ±¸ÇöµÇ¾ú½À´Ï´Ù.
+ 2-hooks: ÇÖÅ°°¡ À§¿¡ ¾ð±ÞµÈ µÎ °¥°í¸®¸¦ ¸ðµÎ ¿ä±¸ÇÕ´Ï´Ù.
+ joypoll: ÇÖÅ°°¡ Á¶À̽ºÆ½À» ±ÔÄ¢ÀûÀÎ °£°ÝÀ¸·Î Æú¸µÇؼ­ ±¸ÇöµÇ¾ú½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

#InstallKeybdHook, #InstallMouseHook, #UseHook, KeyHistory, ListLines, ListVars, #MaxThreadsPerHotkey, #MaxHotkeysPerInterval

+ +

¿¹Á¦

+
ListHotkeys
+ + + diff --git a/src/docs/commands/ListLines.htm b/src/docs/commands/ListLines.htm new file mode 100644 index 0000000..e39cf93 --- /dev/null +++ b/src/docs/commands/ListLines.htm @@ -0,0 +1,63 @@ + + + + +ListLines + + + + + + + +

ListLines

+ +

ÃÖ±Ù¿¡ ½ÇÇàµÈ ½ºÅ©¸³Æ® ÁÙµéÀ» º¸¿©ÁÝ´Ï´Ù.

+ +
ListLines [, On|Off]
+

¸Å°³º¯¼ö

+
+ +
On|Off
+

ºñ¾î Àְųª »ý·«Çϸé, ÃÖ±Ù¿¡ ½ÇÇàµÈ ÁÙ ÀÌ·ÂÀ» º¸¿©ÁÝ´Ï´Ù. v1.0.48.01+¿¡¼­, ¼±ÅÃÀûÀΠù ¹ø° ¸Å°³º¯¼ö¸¦ Ãß°¡Çߴµ¥, ÀÌ°ÍÀº On ¶Ç´Â OffÀÏ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½°ú °°ÀÌ ÇöÀç ¾²·¹µåÀÇ ÇàÀ§¿¡¸¸ ¿µÇâÀ» ÁÝ´Ï´Ù:

+

On: ÀÕµû¶ó-½ÇÇàµÇ´Â ÁÙµéÀ» À̷¿¡ Æ÷ÇÔÇÕ´Ï´Ù. ÀÌ°ÍÀº ¸ðµç ½ºÅ©¸³Æ®°¡ ½ÃÀÛÇÒ ¶§ ±âº»°ªÀÔ´Ï´Ù.

+

Off: ÀÕµû¶ó-½ÇÇàµÇ´Â ÁÙµéÀ» ÀÌ·ÂÀ¸·ÎºÎÅÍ Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+(¸Å°³º¯¼ö ¾øÀÌ) ListLines´Â ¸ÞÀΠâ¿¡¼­ "View->Lines most recently executed" ¸Þ´º Ç׸ñÀ» ¼±ÅÃÇÑ °Í°ú µ¿µîÇÕ´Ï´Ù. ½ºÅ©¸³Æ®¸¦ µð¹ö±×ÇÏ´Â µ¥ µµ¿òÀ» ÁÙ ¼ö ÀÖ½À´Ï´Ù.

+

+ListLines Off/On¸¦ »ç¿ëÇÏ¸é ¼±ÅÃÀûÀ¸·Î ¾î¶² ÁÙµéÀ» ÀÌ·ÂÀ¸·ÎºÎÅÍ Á¦¿ÜÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¸é ÀÌ·ÂÀÌ ³Ê¹« ºü¸£°Ô ²Ë Â÷´Â °ÍÀ» ¸·´Âµ¥ µµ¿òÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù (¿¹¸¦ µé¾î ºü¸£°í ¸¹Àº ¹Ýº¹ÀÌ Àִ ȸµ¹ÀÌ °°Àº °æ¿ì). ListLines Offµµ ¸î ÆÛ¼¾Æ®´Â ¼öÇ༺´É Çâ»ó¿¡ µµ¿òÀÌ µË´Ï´Ù.

+

+»õ·Î ±âµ¿µÈ ¾²·¹µå´Â ¸ðµÎ (ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾÀº) ÀÌ ¸í·É¾î¿¡ ´ëÇÑ ±âº» ¼³Á¤À» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ±âº» °ªÀº ÀÚµ¿ ½ÇÇà ¼½¼Ç (½ºÅ©¸³Æ®ÀÇ »ó´Ü)¿¡¼­ ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ¿© ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+

+³»Àå º¯¼ö "A_ListLines"°°Àº °ÍÀº ¾øÁö¸¸, ºñ½ÁÇÑ ±â´ÉÀ» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ½ºÅ©¸³Æ®¿¡ ´ÙÀ½À» Æ÷ÇÔÇϽʽÿÀ:

+ +
ListLines(PassTrueToTurnOnOrFalseToTurnOff)  ; ListLinesÀÇ ÀÌÀü ¼³Á¤À» µ¹·ÁÁÝ´Ï´Ù (´ÙÀ½À» È£ÃâÇϱâ Àü¿¡).
+{
+    static sListLines := true  ; ¸ðµç ½ºÅ©¸³Æ®°¡ ½ÃÀÛÇÒ ¶§ ±âº»°ªÀº "ListLines On"ÀÔ´Ï´Ù.
+    ListLines % PassTrueToTurnOnOrFalseToTurnOff ? "On" : "Off"  ; ÀÌ ¾Æ·¡·Î ½ÇÇàµÇ´Â ÁÙµéÀ» ·Î±×·ÎºÎÅÍ Á¦¿ÜÇϱâ À§ÇØ ListLines¸¦ ¹«Á¶°Ç ½ÇÇàÇÕ´Ï´Ù.
+    ListLines_prev := sListLines
+    sListLines := PassTrueToTurnOnOrFalseToTurnOff
+    return ListLines_prev
+}
+
+; À§ÀÇ ÇÔ¼ö¸¦ »ç¿ëÇÏ·Á¸é:
+prev_ListLines := ListLines(false)  ; ListLines¸¦ Àӽ÷Π²ü´Ï´Ù.
+; ...
+ListLines(prev_ListLines)  ; ListLines¸¦ ÀÌÀüÀÇ ¼³Á¤À¸·Î º¹±¸ÇÕ´Ï´Ù.
+

+°ü·ÃÇÏ¿© ÇÑ ¸¶µð Çϸé, ³»Àå º¯¼ö A_LineNumber¿Í A_LineFile¿¡´À °¢°¢ ÇöÀç ½ÇÇà ÁßÀÎ ÁÙ ¹øÈ£¿Í ÀÚ½ÅÀÌ ¼ÓÇÑ ÆÄÀÏ À̸§ÀÌ ´ã±é´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+KeyHistory, ListHotkeys, ListVars

+ +

¿¹Á¦

+
ListLines
+ListLines Off
+ + + diff --git a/src/docs/commands/ListVars.htm b/src/docs/commands/ListVars.htm new file mode 100644 index 0000000..f465258 --- /dev/null +++ b/src/docs/commands/ListVars.htm @@ -0,0 +1,37 @@ + + + + +ListVars + + + + + + + +

ListVars

+ +

½ºÅ©¸³Æ®ÀÇ º¯¼öµéÀ» º¸¿©ÁÝ´Ï´Ù: À̸§°ú ÇöÀç ³»¿ë.

+ +
ListVars
+

³íÆò

+

+ÀÌ ¸í·É¾î´Â ¸ÞÀΠâ¿¡¼­ "View->Variables" ¸Þ´º Ç׸ñÀ» ¼±ÅÃÇÑ °Í°ú µ¿µîÇÕ´Ï´Ù. ½ºÅ©¸³Æ®¸¦ µð¹ö±×ÇÒ ¶§ µµ¿òÀÌ µË´Ï´Ù.

+

¸®½ºÆ®ÀÇ °¢ ÁÙÀº ´ÙÀ½°ú °°ÀÌ ±¸¼ºµË´Ï´Ù:
+ 1) º¯¼öÀÇ À̸§.
+ 2) º¯¼ö ³»¿ëÀÇ ±æÀÌ¿Í º¯¼öÀÇ °¡¿ë´É·Â. ¿¹¸¦ µé¾î: [50 of 63]
+ 3) º¯¼ö ³»¿ëÀÇ ¾ÕÂÊ ¹®ÀÚ 60°³.

+

+ÀÌ ¸í·É¾î°¡ ÇÔ¼ö ¾È¿¡ »ç¿ëµÇ¸é, ±× ÇÔ¼öÀÇ Áö¿ª º¯¼öµéÀÌ (½ºÅ©¸³Æ®ÀÇ Àü¿ª º¯¼öµéº¸´Ù) ¸ÕÀú È­¸é¿¡ º¸¿©Áý´Ï´Ù.

+

+¾Ë·ÁÁø ÇÑ°è: ÇÔ¼ö¿¡ (¶Ç´Â Àü¿ª º¯¼ö ¸®½ºÆ®¿¡) 10,000°³°¡ ³Ñ°Ô º¯¼ö°¡ µé¾î ÀÖ´Ù¸é, ÀÌ ¸í·É¾î´Â Á¤È®ÇÏ°Ô ¾ËÆĺª ¼ø¼­·Î º¸¿©ÁÖÁö ¸øÇÒ ¼ö ÀÖ½À´Ï´Ù; Áï, ¾î¶² °ÍÀº »©°í º¸¿©ÁÙ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

KeyHistory, ListHotkeys, ListLines

+ +

¿¹Á¦

+
ListVars
+ + + diff --git a/src/docs/commands/ListView.htm b/src/docs/commands/ListView.htm new file mode 100644 index 0000000..84fed41 --- /dev/null +++ b/src/docs/commands/ListView.htm @@ -0,0 +1,621 @@ + + + + +ListView (GUI) + + + + + + + + +

ListView

+ +

¸ñÂ÷

+ +

¼Ò°³¿Í °£´ÜÇÑ ¿¹Á¦

+

+List-View´Â ¿î¿µ üÁ¦°¡ Á¦°øÇÏ´Â ´ë´ÜÈ÷ Á¤±³ÇÑ ÄÜÆ®·Ñ Áß ÇϳªÀÔ´Ï´Ù. ÀÚÁÖ º¸´Â ÇüÅ·δÂ, Çà°ú ¿­À» Å×ÀÌºí ¹æ½ÄÀ¸·Î º¸¿©ÁÖ´Â °ÍÀÌ ÀÖ½À´Ï´Ù. ±× ¿¹·Î´Â À©µµ¿ìÁî Ž»ö±â¿¡¼­ ÆÄÀÏ°ú Æú´õ¸¦ (ÀÚ¼¼È÷ º¸±â) ³ª¿­ÇØ º¸¿©ÁÝ´Ï´Ù.

+

+Á¤±³Çϱâ´Â ÇÏÁö¸¸, ±âº»ÀûÀΠƯ¡Àº »ç¿ëÇϱ⠽±½À´Ï´Ù. ListView¸¦ »ý¼ºÇÏ´Â ±¸¹®Àº ´ÙÀ½°ú °°½À´Ï´Ù:

+ +
Gui, Add, ListView, Options, ColumnTitle1|ColumnTitle2|...
+

+´ÙÀ½Àº ÀÛµ¿ÇÏ´Â ½ºÅ©¸³Æ®ÀÔ´Ï´Ù. »ç¿ëÀÚÀÇ "My Documents" Æú´õ¿¡ µç ÆÄÀÏ ¸ñ·ÏÀ» ´ãÀº ListView¸¦ ¸¸µé°í º¸¿©ÁÝ´Ï´Ù:

+ +
; ListView¸¦ µÎ °³ÀÇ ¿­, À̸§°ú Å©±â·Î Çؼ­ ¸¸µì´Ï´Ù:
+Gui, Add, ListView, r20 w700 gMyListView, Name|Size (KB)
+
+; Æú´õ·ÎºÎÅÍ ÆÄÀÏ À̸§ ¸ñ·ÏÀ» ¼öÁýÇØ ±×°ÍÀ» ListView¿¡ ³Ö½À´Ï´Ù:
+Loop, %A_MyDocuments%\*.*
+    LV_Add("", A_LoopFileName, A_LoopFileSizeKB)
+
+LV_ModifyCol()  ; ±×ÀÇ ³»¿ë¿¡ ¸Â°Ô °¢ ¿­Àº ÀÚµ¿À¸·Î Å©±â°¡ Á¶ÀýµË´Ï´Ù.
+LV_ModifyCol(2, "Integer")  ; Á¤·ÄÀÇ ¸ñÀûÀ¸·Î, 2 ¹ø ¿­Àº Á¤¼ö¶ó´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù.
+
+; âÀ» º¸¿©ÁÖ°í µ¹¾Æ°©´Ï´Ù. »ç¿ëÀÚ°¡ ÇàÀ» ´õºí Ŭ¸¯ÇÒ ¶§¸¶´Ù ½ºÅ©¸³Æ®¿¡ °íÁöµË´Ï´Ù.
+Gui, Show
+return
+
+MyListView:
+if A_GuiEvent = DoubleClick
+{
+    LV_GetText(RowText, A_EventInfo)  ; ÇàÀÇ Ã¹ Çʵå·ÎºÎÅÍ ÅؽºÆ®¸¦ ¾ò½À´Ï´Ù.
+    ToolTip You double-clicked row number %A_EventInfo%. Text: "%RowText%"
+}
+return
+
+GuiClose:  ; âÀÌ ´ÝÈ÷¸é ½ºÅ©¸³Æ®°¡ ÀÚµ¿À¸·Î Á¾·áÇØ¾ß ÇÑ´Ù°í ¾Ë¸³´Ï´Ù.
+ExitApp
+ +

"Gui, Add, ListView, Options"¿¡ ´ëÇÑ ¿É¼Ç°ú ½ºÅ¸ÀÏ

+

+AltSubmit: ½ºÅ©¸³Æ®¿¡°Ô Á¤»óº¸´Ù ´õ ¸¹Àº À¯ÇüÀÇ ListView À̺¥Æ®¸¦ °íÁöÇÕ´Ï´Ù. ´Ù¸¥ ¸»·Î Çϸé, g-¶óº§ÀÌ ´õ ÀÚÁÖ ±âµ¿µË´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀºListView °íÁö¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+Background: ´Ü¾î Background ´ÙÀ½¿¡ ¹Ù·Î »ö À̸§ (Ä÷¯ Â÷Æ® ÂüÁ¶) ¶Ç´Â RGB °ªÀ» ÁöÁ¤ÇϽʽÿÀ (0x Á¢µÎ»ç´Â ¼±ÅÃÀûÀÔ´Ï´Ù). ¿¹¸¦ µé¾î: BackgroundSilver, BackgroundFFDD99. +ÀÌ ¿É¼ÇÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ListView´Â óÀ½¿¡ ±âº»°ªÀÌ Gui ColorÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö·Î ¼³Á¤µÈ ¹è°æ»öÀ¸·Î ½ÃÀÛÇÕ´Ï´Ù. (¾ø´Ù¸é, ½Ã½ºÅÛÀÇ ±âº» ¹è°æ»öÀÌ »ç¿ëµË´Ï´Ù). BackgroundDefault¸¦ ÁöÁ¤ÇÏ¸é ½Ã½ºÅÛÀÇ ±âº» ¹è°æ»ö¿¡ Àû¿ëµË´Ï´Ù (º¸Åë Èò»ö). ¿¹¸¦ µé¾î, GuiControl, +BackgroundDefault, MyListView¸¦ ÅëÇÏ¿© ListView¸¦ ±âº»°ªÀ¸·Î º¹±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+C: ÅؽºÆ® Ä÷¯. ±âÈ£ C ´ÙÀ½¿¡ ¹Ù·Î Ä÷¯ À̸§ (Ä÷¯ Â÷Æ® ÂüÁ¶) ¶Ç´Â RGB °ªÀ» ÁöÁ¤ÇϽʽÿÀ (0x Á¢µÎ»ç´Â ¼±ÅÃÀûÀÔ´Ï´Ù). ¿¹¸¦ µé¾î: cRed, cFF2211, c0xFF2211, cDefault.

+

+Checked: °¢ ÇàÀÇ ¿ÞÂÊ¿¡ üũ¹Ú½º¸¦ Á¦°øÇÕ´Ï´Ù. ÇàÀ» Ãß°¡ÇÒ ¶§, ´Ü¾î Check¸¦ ±×ÀÇ ¿É¼Ç¿¡ ÁöÁ¤ÇÏ¸é ¹Ú½º¸¦ üũǥ½ÄµÈ »óÅ·Π½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ´Â ±× üũ¹Ú½º¸¦ Ŭ¸¯Çϰųª ½ºÆäÀ̽º¹Ù¸¦ ´­·¯ ÇàÀ» üũÇϰųª ÇØÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Count: ´Ü¾î Count ´ÙÀ½¿¡ ¹Ù·Î ListView°¡ ±Ã±ØÀûÀ¸·Î ´ãÀ» ÇàÀÇ ÃÑ °³¼ö¸¦ ÁöÁ¤ÇϽʽÿÀ. Á¦ÇÑÀº ¾ø½À´Ï´Ù: ÀÌ ÇѰ踦 ³Ñ¾î¼­µµ ÇàÀº ¿©ÀüÈ÷ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ë½Å¿¡, ÀÌ ¿É¼ÇÀº ÇàÀ» Ãß°¡ÇÒ ¶§¸¶´Ù ¸Þ¸ð¸®¸¦ ÇÒ´çÇϱ⠺¸´Ù ÇÑ ¹ø¸¸ ÇÒ´çÇÒ ¼ö ÀÖµµ·Ï Á¦¾îÇϱâ À§ÇÑ ÈùÆ®·Î ±â¿©ÇÕ´Ï´Ù. ±×·¯¸é Çà-Ãß°¡ ¼öÇ༺´ÉÀÌ Å©°Ô °³¼±µË´Ï´Ù (¶ÇÇÑ Á¤·Ä ¼öÇ༺´Éµµ Çâ»óµË´Ï´Ù). ¼öÇ༺´ÉÀ» ´õ¿í °³¼±ÇÏ·Á¸é, ¹æ´ëÇÑ °³¼öÀÇ ÇàÀ» Ãß°¡Çϱâ Àü¿¡ GuiControl, -Redraw, MyListView¸¦ »ç¿ëÇϽʽÿÀ. ÀÌÈÄ·Î, GuiControl, +Redraw, MyListView¸¦ »ç¿ëÇÏ¸é ´Ù½Ã ±×¸®±â¸¦ ´Ù½Ã ÄÓ ¼ö ÀÖ½À´Ï´Ù (¶ÇÇÑ ÄÜÆ®·Ñµµ ´Ù½Ã Ä¥ÇÕ´Ï´Ù).

+

+Grid: ¼öÁ÷ ¼öÆò ÁÙÀ» ½Ã°¢ÀûÀ¸·Î Á¦°øÇØ Çà¿Í ¿­ »çÀÌÀÇ °æ°è¸¦ ³ªÅ¸³À´Ï´Ù.

+

+Hdr: -Hdr (¸¶À̳ʽº Hdr)À» ÁöÁ¤ÇÏ¸é ¿­ Á¦¸ñÀÌ ´ã±ä Ưº°ÇÑ ÃÖ»óÀ§ ÇàÀ» »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. ³ªÁß¿¡ ´Ù½Ã º¸ÀÌ°Ô ÇÏ·Á¸é, GuiControl, +Hdr, MyListView¸¦ »ç¿ëÇϽʽÿÀ.

+

+LV: ¹®ÀÚ¿­ LV ´ÙÀ½¿¡ ¹Ù·Î È®Àå ListView ½ºÅ¸ÀÏ ¹øÈ£¸¦ ÁöÁ¤ÇϽʽÿÀ. ÀÌ·± ½ºÅ¸ÀϵéÀº ¿ÏÀüÈ÷ ÃÑĪ È®Àå ½ºÅ¸ÀÏ°ú ´Ù¸¨´Ï´Ù. +¿¹¸¦ µé¾î, -E0x200¸¦ ÁöÁ¤Çϸé ÄÜÆ®·ÑÀÇ ±âº» Å׵θ®¸¦ ¾ø¾Ö±â À§ÇØ ÃÑĪ È®Àå ½ºÅ¸ÀÏ WS_EX_CLIENTEDGE°¡ Á¦°ÅµË´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, -LV0x20¸¦ ÁöÁ¤Çϸé LVS_EX_FULLROWSELECTÀÌ Á¦°ÅµË´Ï´Ù.

+

+LV0x10: -LV0x10À» ÁöÁ¤ÇÏ¸é »ç¿ëÀÚ°¡ ¿­ Çì´õ¸¦ ¿ÞÂÊÀ̳ª ¿À¸¥ÂÊÀ¸·Î ²ø¾î¼­ ÀçÁ¤·ÄÇÒ ¼ö ¾ø½À´Ï´Ù. ±×·¸Áö¸¸, ÀÌ·¸°Ô ÇÏ´Â °ÍÀº º¸Åë ºÒÇÊ¿äÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ¿­À» ¹°¸®ÀûÀ¸·Î Àç¹èÄ¡ÇÏ´Â °ÍÀº ½ºÅ©¸³Æ®¿¡ º¸¿©Áö´Â ¿­ ¼ø¼­¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ù ¹ø° ¿­Àº ½ºÅ©¸³Æ®ÀÇ °üÁ¡¿¡¼­ ¾ðÁ¦³ª ¿­ 1ÀÔ´Ï´Ù. »ç¿ëÀÚ°¡ ¹°¸®ÀûÀ¸·Î ±× ¿­À» ¿ÞÂÊÀ̳ª ¿À¸¥ÂÊ ´Ù¸¥ ¿­·Î À̵¿Çß´Ù°í ÇÒÁö¶óµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.

+

+LV0x20: -LV0x20À» ÁöÁ¤Çϸé Çà¿¡¼­ ù ¹ø° Çʵ带 Ŭ¸¯Çؾ߸¸ ¼±Åõ˴ϴ٠(º¸Åë, ÇÊµå ¾Æ¹«µ¥³ª Ŭ¸¯Çصµ ¼±Åõ˴ϴÙ). ÀÌ·¸°Ô Çϸé +»ç¿ëÀÚ°¡ Çà ±×·ì µÑ·¹ÀÇ »ç°¢ ¹Ú½º¸¦ ²ø¾î¼­ ÇàµéÀ» ´õ ½±°Ô ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Multi: -Multi (¸¶À̳ʽº Multi)¸¦ ÁöÁ¤ÇÏ¸é »ç¿ëÀÚ°¡ ÇÑ ¹ø¿¡ Çϳª¾¿¸¸ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+NoSortHdr: Çì´õ¸¦ Ŭ¸¯Çصµ ¼±ÅõÇÁö ¾Ê½À´Ï´Ù. +º¸ÅëÀÇ ¹öưó·³ º¸ÀÌÁö ¾Ê°í ³³Â¦ ´­¸° ¸ð½ÀÀÔ´Ï´Ù. ´ëºÎºÐÀÇ ´Ù¸¥ ListView ½ºÅ¸ÀÏ°ú ´Ù¸£°Ô, ÀÌ ½ºÅ¸ÀÏÀº ListView°¡ »ý¼ºµÈ ÈÄ¿¡ º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù.

+

+NoSort: »ç¿ëÀÚ°¡ ¿­ Çì´õ¸¦ Ŭ¸¯Çϸé ÀϾ´Â ÀÚµ¿ Á¤·ÄÀ» ²ü´Ï´Ù. ±×·¸Áö¸¸, ±× Çì´õ´Â ¿©ÀüÈ÷ ½Ã°¢ÀûÀ¸·Î ¹öưó·³ ÇàÀ§ÇÕ´Ï´Ù (´Ü, NoSortHdr°¡ ÁöÁ¤µÈ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù). °Ô´Ù°¡, g-¶óº§Àº ¿©ÀüÈ÷ ColClick notificationÀ» ¹Þ¾Æ¼­, °Å±â¿¡ ¸ÂÃã Á¤·Ä ¶Ç´Â ±âŸ Á¶Ä¡·Î ÀÀ´äÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ReadOnly: -ReadOnly (¸¶À̳ʽº ReadOnly)¸¦ ÁöÁ¤ÇÏ¸é °¢ ÇàÀÇ Ã¹ ¿­¿¡ ÀÖ´Â ÅؽºÆ®¸¦ ÆíÁýÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇàÀ» ÆíÁýÇÏ·Á¸é, ¼±ÅÃÇÑ ´ÙÀ½, F2 Å°¸¦ ´©¸£½Ê½Ã¿À. ´Ù¸¥ ¹æ¹ýÀ¸·Î, ÇàÀ» ÇÑ ¹ø Ŭ¸¯Çؼ­ ¼±ÅÃÇÑ ´ÙÀ½, 0.5 Ãʸ¦ ±â´Ù¸° ´ÙÀ½, °°Àº ÇàÀ» ´Ù½Ã Ŭ¸¯Çϸé ÆíÁýÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+R: ÇàÀÇ ³ôÀÌ (»ý¼º½Ã). ±âÈ£ R ´ÙÀ½¿¡ ¹Ù·Î ÄÜÆ®·Ñ ¾È¿¡ ¿©À¯¸¦ ÁÖ±â À§ÇØ Çã¿ëÇÒ ÇàÀÇ °³¼ö¸¦ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, R10´Â ÄÜÆ®·Ñ¿¡ 10 Çà ³ôÀ̸¦ ¸¸µì´Ï´Ù. ListView°¡ º¸°í ¸ðµå°¡ ¾Æ´Ï¶ó º¸±â ¸ðµå·Î »ý¼ºµÇ¾ú´Ù¸é, ÄÜÆ®·ÑÀº Å©±â°¡ ÅؽºÆ® ÇàÀÌ ¾Æ´Ï¶ó ¾ÆÀÌÄÜ Çà¿¡ ¸ÂÃß¾î Á¶ÀýµË´Ï´Ù. ÁÖÀÇ: ¾ÆÀÌÄÜÀ» ListViewÀÇ Çà¿¡ Ãß°¡ÇÏ¸é °¢ ÇàÀÇ ³ôÀÌ°¡ Áõ°¡ÇÕ´Ï´Ù. ±×·¡¼­ ÀÌ ¿É¼ÇÀÌ ºÎÁ¤È®ÇÏ°Ô µË´Ï´Ù.

+

+Sort: ÄÜÆ®·ÑÀÌ Ã¹ ¿­ÀÇ ³»¿ë¿¡ ¸ÂÃß¾î ¾ËÆĺª ¼ø¼­·Î Á¤·ÄÀ» À¯ÁöÇÕ´Ï´Ù.

+

+SortDesc: À§¿Í °°Áö¸¸ ³»¸² Â÷¼øÀÔ´Ï´Ù.

+

+WantF2 [v1.0.44+]: -WantF2 (¸¶À̳ʽº WantF2)¸¦ ÁöÁ¤Çϸé F2 Å°·Î ÇöÀç ÃÊÁ¡ÀÌ ÀÖ´Â ÇàÀ» ÆíÁýÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ ¼³Á¤Àº -ReadOnlyµµ ÄÑÁ® ÀÖ¾î¾ß È¿°ú°¡ ÀÖ½À´Ï´Ù. ÀÌ ¼³Á¤¿¡ »ó°ü ¾øÀÌ, g-¶óº§Àº ¿©ÀüÈ÷ F2 °íÁö¸¦ ¹Þ½À´Ï´Ù.

+

+(À̸§ ¾ø´Â ¹øÈ£ ½ºÅ¸ÀÏ): À§ÀÇ ½ºÅ¸ÀÏ ¸»°í´Â ÀÚÁÖ »ç¿ëµÇÁö ¾Ê±â ¶§¹®¿¡, ³ª¸ÓÁö ½ºÅ¸ÀÏÀº À̸§ÀÌ ¾ø½À´Ï´Ù. ¸ñ·ÏÀº ListView ½ºÅ¸ÀÏ Å×À̺íÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

º¸±â ¸ðµå

+

+ListView´Â ´Ù¼¸°¡Áö º¸±â ¸ðµå°¡ ÀÖ½À´Ï´Ù. ±× Áß¿¡ °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â º¸±â´Â º¸°í ¸ðµåÀÔ´Ï´Ù (ÀÌ°ÍÀÌ ±âº»°ª). ´Ù¸¥ º¸±â ¸ðµå Áß Çϳª¸¦ »ç¿ëÇÏ·Á¸é, ±× À̸§À» ¿É¼Ç ¸ñ·Ï¿¡ ÁöÁ¤ÇϽʽÿÀ. º¸±â ¸ðµå´Â ÄÜÆ®·ÑÀÌ »ý¼ºµÈ ÈÄ¿¡µµ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: GuiControl, +IconSmall, MyListView.

+

+Icon: Å«-¾ÆÀÌÄÜ º¸±â·Î º¸¿©ÁÝ´Ï´Ù. ÀÌ º¸±â ¸ðµå ±×¸®°í Report¸¦ Á¦¿ÜÇÏ°í ´Ù¸¥ ¸ðµç ¸ðµå¿¡¼­, ù ¿­ÀÌ ¾Æ´Ñ ´Ù¸¥ Ä÷³¿¡ ÀÖ´Â ÅؽºÆ®´Â º¸ÀÌÁö ¾Ê½À´Ï´Ù. ÀÌ ¸ðµå¿¡¼­ ¾ÆÀÌÄÜÀ» º¸¿©ÁÖ·Á¸é, ListView´Â Å«-¾ÆÀÌÄÜ ImageList¸¦ °Å±â¿¡ ÇÒ´çÇØ¾ß ÇÕ´Ï´Ù.

+

+Tile: Å«-¾ÆÀÌÄÜ º¸±â·Î º¸¿©ÁÝ´Ï´Ù. ±×·¯³ª °¢ Ç׸ñÀÇ ÅؽºÆ®¸¦ ¾Æ·¡°¡ ¾Æ´Ñ ¿À¸¥ÂÊ¿¡ º¸¿©Áشٰųª ÇÏ´Â ÀÎü°øÇÐÀû Â÷ÀÌ°¡ ÀÖ½À´Ï´Ù. + +Checkboxes´Â ÀÌ º¸±â ¸ðµå¿¡¼­ ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù. ¶ÇÇÑ, Windows XP ¹Ì¸¸ÀÌ ¿î¿µ üÁ¦¿¡¼­ ÀÌ ¸ðµå·Î º¸¿©Áֱ⸦ ½ÃµµÇØ ºÁ¾ß ¾Æ¹« È¿°úµµ ¾ø½À´Ï´Ù.

+

+IconSmall: ÀÛÀº-¾ÆÀÌÄÜ º¸±â·Î º¸¿©ÁÝ´Ï´Ù.

+

+List: ¸®½ºÆ® ÇüÅ·ΠÀÛÀº-¾ÆÀÌÄÜ º¸±â·Î º¸¿©ÁÝ´Ï´Ù. ¾ÆÀÌÄÜÀ» ¿­¿¡ º¸¿©ÁÝ´Ï´Ù. ¿­ÀÇ °³¼ö´Â ÄÜÆ®·ÑÀÇ ³Êºñ¿Í ±× ¾È¿¡ µç °¡Àå ³ÐÀº ÅؽºÆ®ÀÇ ³Êºñ¿¡ µû¶ó ´Ù¸¨´Ï´Ù

+

+Report: ´Ù½Ã º¸°í ¸ðµå·Î ÀüȯÇÕ´Ï´Ù. ÀÌ°ÍÀÌ ¿ø·¡ ÃʱⰪÀÔ´Ï´Ù. ¿¹¸¦ µé¾î: GuiControl, +Report, MyListView.

+ +

ListView¿ë ³»Àå ÇÔ¼ö

+

+¸ðµç ListView ÇÔ¼ö´Â ÇöÀç ¾²·¹µåÀÇ ±âº» GUI â¿¡ ÀÛµ¿ÇÕ´Ï´Ù (ÀÌ´Â Gui, 2:Default¸¦ ÅëÇÏ¿© ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù). ±âº» âÀÌ Á¸ÀçÇÏÁö ¾Ê°Å³ª ListView ÄÜÆ®·ÑÀÌ ¾øÀ¸¸é, ¸ðµç ÇÔ¼ö´Â 0À» µ¹·ÁÁÖ¾î ¹®Á¦¸¦ ¾Ë¸³´Ï´Ù.

+

+â¿¡ Çϳª ÀÌ»óÀÇ ListView ÄÜÆ®·ÑÀÌ ÀÖÀ¸¸é, ±âº»°ªÀ¸·Î ÇÔ¼öµéÀº ÃÖ±Ù¿¡ Ãß°¡µÈ ÄÜÆ®·Ñ¿¡ ÀÛµ¿ÇÕ´Ï´Ù. À̸¦ ¹Ù²Ù·Á¸é, Gui, ListView, ListViewName¸¦ ÁöÁ¤ÇϽʽÿÀ. ¿©±â¿¡¼­ ListViewNameÀº ListViewÀÇ ¿¬°ü º¯¼öÀÇ À̸§À̰ųª, Window Spy°¡ º¸¿©ÁÖ´Â ClassNN ¶Ç´Â(v1.1.04+¿¡¼­) ±×ÀÇ HWNDÀÏ ¼ö ÀÖ½À´Ï´Ù. ÀÏ´Ü º¯°æµÇ¸é, ¸ðµç ±âÁ¸ÀÇ ±×¸®°í ¹Ì·¡ÀÇ ¾²·¹µå´Â ÁöÁ¤µÈ ListView¸¦ »ç¿ëÇÕ´Ï´Ù.

+

+¹®±¸ "row number"°¡ ÀÌ ÆäÀÌÁö¿¡ »ç¿ëµÇ¸é, ListView ¾È¿¡¼­ ÇàÀÇ ÇöÀç À§Ä¡¸¦ ÂüÁ¶ÇÕ´Ï´Ù. ÃÖ»óÀ§ ÇàÀº 1ÀÌ°í, µÎ ¹ø° ÇàÀº 2À̸ç, ±×¸®°í µîµî. ÇÑ ÇàÀÌ Ãß°¡µÈ ÈÄ¿¡, ±×ÀÇ Çà ¹øÈ£´Â ´Ù¸¥ ÇàÀ» Á¤·ÄÇÏ°í Áö¿ì¸ç ±×¸®°í »ðÀÔÇϱ⠶§¹®¿¡ ¹Ù²î´Â °æÇâÀÌ ÀÖ½À´Ï´Ù. ±×·¯¹Ç·Î, ±×ÀÇ ³»¿ë¿¡ ±â¹ÝÇÏ¿© ƯÁ¤ÇÑ Çà(µé)À» ãÀ¸·Á¸é, º¸Åë ȸµ¹ÀÌ ¾È¿¡¼­ LV_GetText()¸¦ »ç¿ëÇÏ´Â °ÍÀÌ °¡Àå ÁÁ½À´Ï´Ù.

+ +

Çà ÇÔ¼ö

+

LV_Add([Options, Field1, Field2, ...])

+

+»õ ÇàÀ» ¸®½ºÆ® ¾Æ·¡¿¡ Ãß°¡ÇÕ´Ï´Ù. ¸Å°³º¯¼ö Field1°ú ±âŸ´Â »õ ÇàÀÇ ¿­·Î¼­, ÅؽºÆ® ¶Ç´Â ¼ýÄ¡ÀÏ ¼ö ÀÖ½À´Ï´Ù (¼ýÄ¡ Ç¥Çö½Ä °á°ú Æ÷ÇÔ). Çʵ带 ¸ðµå ºñ¿ì·Á¸é, "" ºñ½ÁÇÑ °ÍÀ» ÁöÁ¤ÇϽʽÿÀ. ¸ðµç ¿­À» ä¿ì±â¿¡ Çʵ尡 ºÎÁ·Çϸé, ¸¶Áö¸· ¿­Àº ºóä·Î ³²½À´Ï´Ù. ÇÊµæ ³Ê¹« ¸¹´Ù¸é, ¸¶Áö¸· ÇʵåµéÀº ¿ÏÀüÈ÷ ¹«½ÃµË´Ï´Ù.

+

+½ÇÆнÃ, LV_Add()´Â 0À» µ¹·ÁÁÝ´Ï´Ù. ¼º°øÇϸé, »õ Çà ¹øÈ£¸¦ µ¹·ÁÁÝ´Ï´Ù. ListView°¡ Sort ¶Ç´Â SortDesc ½ºÅ¸ÀÏÀ» °¡Áö°í ÀÖ´Ù¸é ¹Ýµå½Ã ¹ÌÀÚ¸· Çà ¹øÈ£ÀÏ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.

+ +

Çà ¿É¼Ç

+

+Options ¸Å°³º¯¼ö´Â¾Æ·¡ ¸®½ºÆ®ÀÇ ´Ü¾î·Î ±¸¼ºµÇ´Â ¹®ÀÚ¿­ÀÔ´Ï´Ù (´ë¼Ò¹®ÀÚ ±¸¹® ¾øÀ½). °¢ ´Ü¾î¸¦ ´Ù¸§ ´Ü¾î¿Í »çÀÌ¿¡ ½ºÆäÀ̽º³ª ÅÇÀ¸·Î ±¸ºÐÇϽʽÿÀ. ¿É¼ÇÀ» Á¦°ÅÇÏ·Á¸é, ¾Õ¿¡ ¸¶À̳ʽº »çÀÎÀ» Ãß°¡ÇϽʽÿÀ. ¿É¼ÇÀ» Ãß°¡ÇÏ·Á¸é, Ç÷¯½º »çÀÎÀ» Çã¿ëÇÏÁö¸¸ Çʼö´Â ¾Æ´Õ´Ï´Ù.

+

+Check: üũǥ½ÄÀ» Çà¿¡ º¸¿©ÁÝ´Ï´Ù (ListView°¡ üũ¹Ú½º¸¦ °¡Áö°í ÀÖ´Ù¸é). ³ªÁß¿¡ ÇØÁ¦ÇÏ·Á¸é, LV_Modify(RowNumber, "-Check")¸¦ »ç¿ëÇϽʽÿÀ.

+

+Col: ´Ü¾î Col ´ÙÀ½¿¡ ¹Ù·Î ¿­ ¹øÈ£¸¦ ÁöÁ¤ÇϽʽÿÀ. °Å±âºÎÅÍ ¸Å°³º¯¼ö Col1°ú ±âŸ¸¦ Àû¿ëÇϱ⠽ÃÀÛÇÕ´Ï´Ù. + +ÀÌ°ÍÀº ÇÑ Çà¿¡¼­ ¿ÞÂÊ¿¡ ÀÖ´Â Çʵ忡 ¿µÇâÀ» ÁÖÁö ¾Ê°í °³º° Çʵ带 º¯°æÇÏ´Â µ¥ LV_Modify()¿Í ¾ÆÁÖ ÀÚÁÖ »ç¿ëµË´Ï´Ù.

+

+Focus: Å°º¸µå ÃÊÁ¡À» Çà¿¡ ¼³Á¤ÇÕ´Ï´Ù (Á¾Á¾ Select¿Í ÇÔ²² »ç¿ëµË´Ï´Ù). ³ªÁß¿¡ ÃÊÁ¡À» ÇØÁ¦ÇÏ·Á¸é, LV_Modify(RowNumber, "-Focus")À» »ç¿ëÇϽʽÿÀ.

+

+Icon: ´Ü¾î Icon ´ÙÀ½¿¡ ¹Ù·Î ÀÌ ÇàÀÇ ¾ÆÀÌÄÜ ¹øÈ£¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ¾ÆÀÌÄÜÀº ù ¿­ÀÇ ¿ÞÂÊ¿¡ º¸¿©Áý´Ï´Ù. ÀÌ ¿É¼ÇÀÌ ¾øÀ¸¸é, ImageList¿¡¼­ ù ¾ÆÀÌÄÜÀÌ »ç¿ëµË´Ï´Ù. ºó ¾ÆÀÌÄÜÀ» º¸¿©ÁÖ·Á¸é, ImageListÀÇ ¾ÆÀÌÄÜÀÇ ¹øÈ£º¸´Ù ´õ Å« ¹øÈ£¸¦ ÁöÁ¤ÇϽʽÿÀ. ÄÜÆ®·Ñ¿¡ ÀÛÀº-¾ÆÀÌÄÜ ImageList°¡ ¾ø´Ù¸é, º¸°í ¸ðµå¿¡¼­ ¾ÆÀÌÄܵµ º¸ÀÌÁö ¾Ê°í ¾ÆÀÌÄÜÀ» À§ÇØ ½ºÆäÀ̽ºµµ º¸Á¸µÇÁö ¾Ê½À´Ï´Ù.

+

+Select: ÇàÀ» ¼±ÅÃÇÕ´Ï´Ù. ³ªÁß¿¡ ÇØÁ¦ÇÏ·Á¸é, LV_Modify(RowNumber, "-Select")¸¦ »ç¿ëÇϽʽÿÀ. ÇàµéÀ» ¼±ÅÃÇÒ ¶§, º¸Åë Àû¾îµµ ÇÑ ÇàÀº ¾ðÁ¦³ª ÃÊÁ¡ Ư¼ºÀ» °¡Áö´ÂÁö È®ÀÎÇÏ´Â °ÍÀÌ °¡Àå ÁÁ½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ±×·¡¼­ Apps Å°°¡ ±×ÀÇ ¹®¸Æ ¸Þ´º¸¦ (ÀÖ´Ù¸é) ÃÊÁ¡ Çà ±Ùó¿¡ º¸¿©ÁÙ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ´Ü¾î Select´Â ¼±ÅÃÀûÀ¸·Î ´ÙÀ½¿¡ ¹Ù·Î 0 ¶Ç´Â 1ÀÌ µû¶ó¿Í ½ÃÀÛ »óŸ¦ ¾Ë·ÁÁÙ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¸»·Î, "Select" ±×¸®°í "Select" . VarContainingOne´Â °°½À´Ï´Ù (¿©±â¿¡¼­ Á¡Àº °áÇÕ ¿¬»êÀÚÀÔ´Ï´Ù). ÀÌ Å×Å©´ÐÀº ¶ÇÇÑ À§ÀÇ Focus ±×¸®°í Check¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù

+

+Vis [v1.0.44+]: ÁöÁ¤µÈ ÇàÀÌ ÇÊ¿äÇϸé ListView¸¦ ½ºÅ©·ÑÇؼ­ ¿ÏÀüÈ÷ º¸À̵µ·Ï È®ÀÎÇÕ´Ï´Ù. ÀÌ°ÍÀº LV_Modify()¿¡¸¸ ¿µÇâÀ» ÁÝ´Ï´Ù; ¿¹¸¦ µé¾î: LV_Modify(RowNumber, "Vis").

+ +

LV_Insert(RowNumber [, Options, Col1, Col2, ...])

+

+LV_Add()¿Í µ¿ÀÏÇÏ°Ô ÇàÀ§ÇÕ´Ï´Ù. ´Ü, ù ¹ø° ¸Å°³º¯¼ö°¡ ´Ù¸¨´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â »õ·Î »ðÀÔµÈ ÇàÀÇ Çà ¹øÈ£¸¦ ÁöÁ¤ÇÕ´Ï´Ù. RowNumber ÀÌÇÏÀÇ ÇàÀº ¸ðµÎ ¾Æ·¡·Î À̵¿ÇØ »õ ÇàÀ» À§ÇØ ÀÚ¸®¸¦ ³» ÁÝ´Ï´Ù. RowNumber°¡ ¸®½ºÆ®ÀÇ Çà °¹¼öº¸´Ù ´õ Å©¸é (±×·¸Áö¸¸ 2147483647 ³ôÀ̱îÁö Çã¿ëµÊ), ±× »õ ÇàÀº ¸®½ºÆ® ³¡¿¡ Ãß°¡µË´Ï´Ù. Options¿¡ °üÇÑ °ÍÀº, Çà ¿É¼ÇÀ» ÂüÁ¶ÇϽʽÿÀ.

+

+LV_Modify(RowNumber, Options [, NewCol1, NewCol2, ...])

+

+ÇàÀÇ ÅؽºÆ®¿Í ¼Ó¼ºÀ» º¯°æÇÕ´Ï´Ù. ¼º°øÇϸé 1 ½ÇÆÐÇϸé 0À» µ¹·ÁÁÝ´Ï´Ù.RowNumber°¡ 0À̸é, ÄÜÆ®·Ñ ¾ÈÀÇ ¸ðµç ÇàÀÌ º¯°æµË´Ï´Ù (ÀÌ °æ¿ì ÇÔ¼ö´Â ¿ÏÀüÈ÷ ¼º°øÇϸé 1À» µ¹·ÁÁÖ°í ºÎºÐÀûÀ¸·Îµµ ½ÇÆÐÇϸé 0À» µ¹·ÁÁÝ´Ï´Ù). ù µÎ °³ÀÇ ¸Å°³º¯¼ö¸¸ Á¸ÀçÇϸé, ±× ÇàÀÇ ¼Ó¼º¸¸ º¯°æµÇ°í ±×ÀÇ ÅؽºÆ®´Â º¯°æµÇÁö ¾Ê½À´Ï´Ù. ºñ½ÁÇÏ°Ô, ³Ê¹« ¸Å°³º¯¼ö°¡ Àû¾î¼­ ¸ðµç ¿­À» ó¸®ÇÒ ¼ö ¾øÀ¸¸é, ¸¶Áö¸·¿¡ ÀÖ´Â ¿­µéÀº ¹Ù²îÁö ¾Ê½À´Ï´Ù. ColN option¸¦ »ç¿ëÇÏ¸é ´Ù¸¥ ¿­À» °Çµå¸®Áö ¾Ê°í ƯÁ¤ÇÑ ¿­À» ¾÷µ¥ÀÌÆ®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¿É¼ÇÀ¸, Çà ¿É¼ÇÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

LV_Delete([RowNumber])

+

+ÀÌ ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, ListView ¾ÈÀÇ ¸ðµç ÇàÀÌ »èÁ¦µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ¿ÀÁ÷ ÁöÁ¤µÈ RowNumber¸¸ »èÁ¦µË´Ï´Ù. ¼º°øÇϸé 1 ½ÇÆÐÇϸé 0À» µ¹·ÁÁÝ´Ï´Ù.

+ +

¿­ ÇÔ¼ö

+

+LV_ModifyCol([ColumnNumber, Options, ColumnTitle])

+

+ÁöÁ¤µÈ ¿­ÀÇ ÅؽºÆ®¿Í ¼Ó¼º ±×¸®°í Çì´õ¸¦ º¯°æÇÕ´Ï´Ù. ù ¿­Àº ¹øÈ£°¡ 1ÀÔ´Ï´Ù (0 ¾Æ´Ô). ¸ðµç ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, ¸ðµç ¿­ÀÇ ³Êºñ°¡ ÇàÀÇ ³»¿ë¿¡ ¸Â°Ô Á¶ÀýµË´Ï´Ù. ù ¸Å°³º¯¼ö¸¸ Á¸ÀçÇϸé, ¿ÀÁ÷ ÁöÁ¤µÈ Ä÷³¸¸ ÀÚµ¿À¸·Î Å©±â°¡ Á¶ÀýµË´Ï´Ù. ÀÚµ¿ Å©±â Á¶ÀýÀº º¸°í¼­ (ÀÚ¼¼ÇÏ°Ô) º¸±â ¸ðµå¿¡¼­¸¸ È¿°ú°¡ ÀÖ½À´Ï´Ù. ÀÌ ÇÔ¼ö´Â ¼º°øÇϸé 1 ½ÇÆÐÇϸé 0À» µ¹·ÁÁÝ´Ï´Ù.

+ +

¿­ ¿É¼Ç

+

+Options ¸Å°³º¯¼ö´Â ¾Æ·¡ ¸®½ºÆ®ÀÇ ´Ü¾î·Î ±¸¼ºµÈ ¹®ÀÚ¿­ÀÔ´Ï´Ù (´ë¼Ò¹®ÀÚ ±¸ºÐ ¾ÈÇÔ). °¢ ´Ü¾î¸¦ ´ÙÀ½ ´Ü¾î¿Í ½ºÆäÀ̽º³ª ÅÇÀ¸·Î °¡¸£½Ê½Ã¿À. ¿É¼ÇÀ» Á¦°ÅÇÏ·Á¸é, ±× ¾Õ¿¡ ¸¶À̳ʽº »çÀÎÀ» Ãß°¡ÇÕ´Ï´Ù. ¿É¼ÇÀ» Ãß°¡ÇÏ·Á¸é ±× ¾Õ¿¡ Ç÷¯½º »çÀÎÀ» Çã¿ëÇÏÁö¸¸ Çʼö´Â ¾Æ´Õ´Ï´Ù.

+ +

¿­ ¿É¼Ç: ÀϹÝ

+

+N: N ¿¡ ¿­ÀÇ »õ ³Êºñ¸¦ Çȼ¿ ´ÜÀ§·Î ÁöÁ¤ÇϽʽÿÀ. ÀÌ ¹øÈ£´Â ¿É¼ÇÀÌ Çϳª¸¸ ÀÖ´Ù¸é µû¿ÈÇ¥ ó¸®ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ µÎ ¿¹Á¦´Â ¸ðµÎ À¯È¿ÇÕ´Ï´Ù: LV_ModifyCol(1, 50) ±×¸®°í LV_ModifyCol(1, "50 Integer").

+

+Auto: ¿­ÀÇ ³Êºñ¸¦ ±×ÀÇ ³»¿ë¿¡ ¸Â°Ô Á¶ÀýÇÕ´Ï´Ù. ÀÌ°ÍÀº º¸°í¼­ (ÀÚ¼¼ÇÏ°Ô) º¸±â ¸ðµå°¡ ¾Æ´Ï¸é ¾Æ¹« ¿µÇâÀÌ ¾ø½À´Ï´Ù.

+

+AutoHdr: ¿­ÀÇ ³Êºñ¸¦ ±×ÀÇ ³»¿ë°ú Çì´õ ÅؽºÆ®ÀÇ ³Êºñ¿¡ ¸Â°Ô ´õ Å«ÂÊÀ¸·Î Á¶ÀýÇÕ´Ï´Ù. ¸¶Áö¸· ¿­¿¡ Àû¿ëµÇ¸é, ListView¿¡¼­ ³ª¸ÓÁö ¸ðµç ½ºÆäÀ̽ºÀÇ ³Êºñ¸¸Å­ ³Ð¾îÁý´Ï´Ù. º¸Åë ÇàµéÀ» Ãß°¡ÇÑ ÈÄ¿¡¸¸ ÀÌ ¼³Á¤À» Àû¿ëÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ±×·¡¾ß ¸¶Áö¸· ¿­ÀÇ Å©±â¸¦ Á¶ÀýÇÒ ¶§ »õ·Î µµÂøÇÑ ¼öÁ÷ ½ºÅ©·Ñ¹Ù¸¦ °í·ÁÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ÀÌ ¿É¼ÇÀº º¸°í¼­ (ÀÚ¼¼ÇÏ°Ô) º¸±â ¸ðµå°¡ ¾Æ´Ï¸é ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù.

+

+Icon: ´Ü¾î Icon ´ÙÀ½¿¡ ¹Ù·Î ImageListÀÇ ¾ÆÀÌÄÜ ¹øÈ£¸¦ ÁöÁ¤ÇÏ¸é ¿­ Çì´õÀÇ ÅؽºÆ® ¿·¿¡ º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. -Icon (¸¶À̳ʽº icon)À» ÁöÁ¤ÇÏ¸é ±âÁ¸ÀÇ ¾ÆÀÌÄÜÀ» Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+IconRight: ¾ÆÀÌÄÜÀ» ¿ÞÂÊÀÌ ¾Æ´Ï¶ó ¿­ÀÇ ¿À¸¥ÂÊ¿¡ ¹èÄ¡ÇÕ´Ï´Ù.

+ +

¿­ ¿É¼Ç: µ¥ÀÌÅÍ À¯Çü

+

+Float: Á¤·ÄÀÇ ¸ñÀûÀ¸·Î, ÀÌ ¿­¿¡ ºÎµ¿ ¼Ò¼öÁ¡ ¼ö°¡ µé¾î ÀÖ´Ù´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù (½ÊÀ°Áø Çü½ÄÀº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù). Float¿Í Text ¿­¿¡ ´ëÇÏ¿© Á¤·ÄÀÇ ¼öÇ༺´ÉÀº Á¤¼ö¿¡ ºñÇØ ÃÖ´ë 25 ¹è±îÁö ´À¸± ¼ö ÀÖ½º´Ï´Ù.

+

+Integer: Á¤·ÄÀÇ ¸ñÀûÀ¸·Î, ÀÌ ¿­¿¡ Á¤¼ö°¡ µé¾î ÀÖ´Ù´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù. ÀûÀýÇÏ°Ô Á¤·ÄµÇ·Á¸é, °¢ Á¤¼ö´Â 32-ºñÆ®¿©¾ß ÇÕ´Ï´Ù; Áï, ¹üÀ§°¡ -2147483648¿¡¼­ 2147483647 À̳»¿©¾ß ÇÕ´Ï´Ù. °ªÀÌ Á¤¼ö°¡ ¾Æ´Ï¶ó¸é, Á¤·ÄÇÒ ¶§ 0À¸·Î °£Áֵ˴ϴ٠(´Ü, ¼ýÀÚ·Î ½ÃÀÛÇÏ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù. ÀÌ °æ¿ì ±× ¼ýÀÚ°¡ »ç¿ëµË´Ï´Ù). ¼ýÀÚ´Â ½ÊÀ°Áø Çü½Ä ¶Ç´Â ½ÊÁø Çü½ÄÀ¸·Î ³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù (¿¹, 0xF9E0).

+

+Text: ¿­À» ´Ù½Ã ÅؽºÆ®-¸ðµå Á¤·Ä·Î ¹Ù²ß´Ï´Ù. ÀÌ°ÍÀÌ ¸ðµç ¿­¿¡ ±âº»°ªÀÔ´Ï´Ù. ¿ÀÁ÷ ÅؽºÆ®ÀÇ ¾ÕÂÊ 8190 ±ÛÀÚ¸¸ Á¤·ÄÀÇ ¸ñÀûÀ¸·Î Àǹ̰¡ ÀÖ½À´Ï´Ù (´Ü, Logical ¿É¼ÇÀº¿¹¿ÜÀε¥, ÀÌ °æ¿ì Á¦ÇÑ 4094 ±ÛÀÚÀÔ´Ï´Ù).

+ +

¿­ ¿É¼Ç: Á¤·Ä / Á¤µ·

+

+Center: ÅؽºÆ®¸¦ ¿­ °¡¿îµ¥·Î Á¤·ÄÇÕ´Ï´Ù. Á¤¼ö ¶Ç´Â ºÎµ¿ ¼Ò¼öÁ¡ ¼ö ¿­À» Áß¾Ó Á¤·ÄÇÏ·Á¸é, ´Ü¾î Center¸¦ ´Ü¾î Integer ¶Ç´Â Float µÚ¿¡ ³õÀ¸½Ê½Ã¿À.

+

+Left: ¿­ÀÇ ÅؽºÆ®¸¦ ¿ÞÂÊ¿¡ Á¤·ÄÇÕ´Ï´Ù. ÀÌ°ÍÀÌ ¸ðµç ¿­ÀÇ ±âº» °ªÀÔ´Ï´Ù. ¿¹Àü ¿î¿µÃ¼Á¦¿¡¼­, ù ¿­Àº °­Á¦·Î ¿ÞÂÊ Á¤·ÄµÉ ¼ö ÀÖ½À´Ï´Ù.

+

+Right: ¿­ÀÇ ÅؽºÆ®¸¦ ¿À¸¥ÂÊ¿¡ Á¤·ÄÇÕ´Ï´Ù. ÀÌ ¼Ó¼ºÀº Integer ±×¸®°í Float ¿­¿¡´Â ÁöÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ±âº»ÀûÀ¸·Î ¿ìÃø Á¤·ÄÀ̱⠶§¹®ÀÔ´Ï´Ù. ±âº» °ªÀº "Integer Left" ¶Ç´Â "Float Center"¿Í °°ÀÌ ÁöÁ¤ÇØ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+ +

¿­ ¿É¼Ç: Á¤·Ä

+

+Case: ¿­ÀÇ Á¤·ÄÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù (only ÅؽºÆ® ¿­¿¡¸¸ ¿µÇâÀ» ¹ÌĨ´Ï´Ù). ¿É¼Ç Case, CaseLocale, ±×¸®°í LogicalÀÌ ¸ðµÎ »ý·«µÇ¸é, ´ë¹®ÀÚ A-Z¸¦ Á¤·ÄÀÇ ¸ñÀûÀ¸·Î ¼Ò¹®ÀÚ¿Í µ¿ÀÏÇÏ°Ô Ãë±ÞÇÕ´Ï´Ù.

+

+CaseLocale [v1.0.43.03+]: ¿­ÀÇ Á¤·ÄÀº ÇöÀç »ç¿ëÀÚÀÇ ·ÎÄÉÀÏ¿¡ ±â¹ÝÇÏ¿© ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê½À´Ï´Ù (ÅؽºÆ® Ä÷³¿¡¸¸ ¿µÇâÀ» ¹ÌĨ´Ï´Ù). ¿¹¸¦ µé¾î, ´ëºÎºÐÀÇ ¿µ¾î¿Í ¼­±¸ À¯·´ ·ÎÄÉÀÏÀº ±âÈ£ A-Z ±×¸®°í Ä¿Í Ü °°Àº ANSI ±âÈ£µéÀ» ¼Ò¹®ÀÚ·Î Ãë±ÞÇÕ´Ï´Ù. ÀÌ ¹æ¹ýÀº ¶ÇÇÑ "word sort"¸¦ »ç¿ëÇϴµ¥, ÀÌ°ÍÀº "coop" ±×¸®°í "co-op"¿Í °°Àº ´Ü¾îµéÀÌ ÇÔ²² ÀÖ´Â °Íó·³ ÇÏÀÌÇ°ú ¾îÆ÷½ºÆ®·ÎÇǸ¦ Ãë±ÞÇÕ´Ï´Ù.

+

+Desc: ³»¸² Â÷¼øÀÔ´Ï´Ù. »ç¿ëÀÚ°¡ Á¤·ÄÀ» ½ÃÀÛÇÏ¸é ¿­À» ³»¸² Â÷¼øÀ¸·Î ½ÃÀÛÇÕ´Ï´Ù.

+

+Logical [v1.0.44.12+]: CaseLocale°ú °°½À´Ï´Ù. ´Ü, ÅؽºÆ®¿¡¼­ ¼ýÀÚ ¿¬¼ÓÀº ´Ü¼øÈ÷ ¹®ÀÚ°¡ ¾Æ´Ï¶ó ¼ø¼öÇÑ ¼ýÀÚ·Î Ãë±ÞµË´Ï´Ù. ¿¹¸¦ µé¾î, ¹®ÀÚ¿­ "T33"Àº "T4"º¸´Ù Å©´Ù°í °£Áֵ˴ϴÙ. Logical Àº Windows XP ÀÌ»óÀ» ¿ä±¸ÇÕ´Ï´Ù (ÀÌÀü ¿î¿µÃ¼Á¦¿¡¼­´Â CaseLocaleÀÌ ´ë½Å ÀÚµ¿À¸·Î »ç¿ëµË´Ï´Ù). °Ô´Ù°¡, Logical°ú Case´Â ÇöÀç ¼­·Î ¹èŸÀûÀÔ´Ï´Ù: µÑ Áß¿¡ ÃÖ±Ù¿¡ ÁöÁ¤µÈ °Í¸¸ È¿°ú°¡ ÀÖ½À´Ï´Ù.

+

+NoSort: »ç¿ëÀÚ°¡ ÀÌ ¿­À» Ŭ¸¯ÇÏ´õ¶óµµ ÀÚµ¿À¸·Î Á¤·ÄÇÏÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù. ¸ðµç ¿­¿¡ Á¤·ÄÀ» ²ô·Á¸é NoSort¸¦ ListViewÀÇ ¿É¼Ç¿¡ Æ÷ÇÔ½ÃÅ°½Ê½Ã¿À. ListView¿¡ g-¶óº§ÀÌ ÀÖ´Ù¸é, »ç¿ëÀÚ°¡ Á¤·Ä-ºÒ°¡ Ä÷³À» Ŭ¸¯ÇÒ ¶§ ColClick °íÁö¸¦ ¿©ÀüÈ÷ ¹Þ½À´Ï´Ù.

+

+Sort: Áï½Ã ¿À¸§ Â÷¼øÀ¸·Î ¿­À» Á¤·ÄÇÕ´Ï´Ù (Desc ¿É¼ÇÀÌ ÁöÁ¤µÇ¾î ÀÖ´õ¶óµµ ¿À¸§Â÷¼øÀ¸·Î Á¤·ÄÇÕ´Ï´Ù).

+

+SortDesc: Áï½Ã ¿­À» ³»¸² Â÷¼øÀ¸·Î Á¤·ÄÇÕ´Ï´Ù.

+

+Uni: ´Ü¹æÇâÀ¸·Î Á¤·ÄÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é °°Àº ¿­¿¡ µÎ ¹ø Ŭ¸¯ÇÏ´õ¶óµµ Á¤·Ä ¹æÇâÀÌ ¹Ù²îÁö ¾Ê½À´Ï´Ù.

+ +

LV_InsertCol(ColumnNumber [, Options, ColumnTitle])

+

+»õ ¿­À» »ý¼ºÇؼ­ ±×°ÍÀ» ÁöÁ¤µÈ ColumnNumber·Î »ðÀÔÇÕ´Ï´Ù (´Ù¸¥ ¿­Àº ¿À¸¥ÂÊÀ¸·Î À̵¿Çؼ­ µé¾î°¡ °ø°£À» ¸¸µì´Ï´Ù). ù ¿­Àº 1ÀÔ´Ï´Ù (0ÀÌ ¾Æ´Ô). ColumnNumberÀÌ ÇöÀç ÄÜÆ®·Ñ¿¡ ÀÖ´Â ¿­ÀÇ ÃÑ °³¼öº¸´Ù Å©¸é, ±× »õ ¿­Àº ¸®½ºÆ® ³¡¿¡ Ãß°¡µË´Ï´Ù. »õ·Î »ðÀÔµÈ ¿­Àº ±× ¾Æ·¡¿¡ ºó ³»¿ëÀ» °¡Áö°í ½ÃÀÛÇÕ´Ï´Ù. ´Ü, ù ¿­ÀÎ °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù. ÀÌ °æ¿ì´Â ¾ÕÀÇ Ã¹ ¿­ÀÇ ³»¿ëÀ» »ó¼Ó¹Þ°í ±× ù ¿­Àº ºó ³»¿ëÀ» ¾ò½À´Ï´Ù. »õ ¿­ÀÇ ¼Ó¼ºÀº -- ¿¹¸¦ µé¾î Á¤¼ö Á¤·ÄÀΰ¡ ¾Æ´Ñ°¡ ÇÏ´Â ¼Ó¼ºÀº -- ¾ðÁ¦³ª ±âº»°ªÀ» °¡Áö°í ½ÃÀÛÇÕ´Ï´Ù. ´Ü, OptionsÀ» ÅëÇÏ¿© ¹Ù²Û °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù. ÀÌ ÇÔ¼ö´Â »õ ¿­ÀÇ À§Ä¡ ¹øÈ£¸¦ µ¹·ÁÁÝ´Ï´Ù (½ÇÆÐÇϸé 0). ListView¿¡ÀÇ ¿­ÀÇ ÃÖ´ë °³¼ö´Â 200ÀÔ´Ï´Ù.

+ +

LV_DeleteCol(ColumnNumber)

+

+ÁöÁ¤µÈ ¿­°ú ±× ¾Æ·¡ÀÇ ¸ðµç ³»¿ëÀ» »èÁ¦ÇÕ´Ï´Ù. ¼º°øÇϸé 1 ½ÇÆÐÇϸé 0À» µ¹·ÁÁÝ´Ï´Ù. ¿­ÀÌ ÀÏ´Ü »èÁ¦µÇ¸é, ±× ¿À¸¥ÂÊ¿¡ ÀÖ´Â ¿­µéÀÇ ¹øÈ£´Â 1 ¸¸Å­¾¿ ÁÙ¾îµì´Ï´Ù. °á°úÀûÀ¸·Î, LV_DeleteCol(2)¸¦ µÎ ¹ø È£ÃâÇÏ¸é µÎ ¹ø° ¼¼ ¹ø° ¿­ÀÌ »èÁ¦µË´Ï´Ù. Windows XPº¸´Ù ¿À·¡µÈ ¿î¿µ üÁ¦¿¡¼­, ¿ø·¡ÀÇ Ã¹ ¿­À» »èÁ¦ÇÏ·Á°í ½ÃµµÇÏ¸é ½ÇÆÐÇÏ°í 0À» µ¹·ÁÁÝ´Ï´Ù.

+ +

ListView·ÎºÎÅÍ µ¥ÀÌÅÍ ¾ò±â

+

LV_GetCount(["Selected | Column"])

+

+¸Å°³º¯¼ö¸¦ »ý·«Çϸé, ÇÔ¼ö´Â ÄÜÆ®·Ñ¿¡ ÀÖ´Â ÇàÀÇ ÃÑ °³¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. ¸Å°³º¯¼ö°¡ "S" ¶Ç´Â "Selected"À̸é, ¼±ÅõÈ/°­Á¶µÈ Çàµé¸¸ °è»ê¿¡ Æ÷ÇԵ˴ϴÙ. ¸Å°³º¯¼ö°¡ "Col" ¶Ç´Â "Column"À̸é, ÇÔ¼ö´Â ÄÜÆ®·Ñ¿¡ ÀÖ´Â ¿­ÀÇ ÃÑ °³¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. ÀÌ ÇÔ¼ö´Â ¾ðÁ¦³ª ¼ø°£ÀûÀÔ´Ï´Ù. ¿Ö³ÄÇϸé ÄÜÆ®·ÑÀÌ ÀÌ·± °è¼öµéÀ» ÃßÀû°ü¸®ÇÏ°í Àֱ⠶§¹®ÀÔ´Ï´Ù.

+

+ÀÌ ÇÔ¼ö´Â Á¾Á¾ LoopÀÇ ÃÖ»ó´Ü¿¡ »ç¿ëµÇ¸ç, ÀÌ °æ¿ì ÇÔ¼ö´Â (ù ¹Ýº¹ÀÌ ½ÃÀÛÇϱâ Àü¿¡) ¿ÀÁ÷ ÇÑ ¹ø¸¸ È£ÃâµË´Ï´Ù. ¿¹¸¦ µé¾î:

+
Loop % LV_GetCount()
+{
+    LV_GetText(RetrievedText, A_Index)
+    if InStr(RetrievedText, "some filter text")
+        LV_Modify(A_Index, "Select")  ; ù Çʵ忡 ¿©°ú ÅؽºÆ®°¡ µé¾î ÀÖ´Â ÇàÀ» ¼±ÅÃÇÕ´Ï´Ù.
+}
+

+ListViewÀÇ ¿­ ³Êºñ¸¦ ¿­¶÷ÇÏ·Á¸é -- INI ÆÄÀÏ¿¡ ÀúÀåÇؼ­ ¼¼¼Ç »çÀÌ¿¡ ±â¾ïÇÏ´Â µ¥ »ç¿ëÇϱâ À§ÇØ -- ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:

+ +
Gui +LastFound
+Loop % LV_GetCount("Column")
+{
+    SendMessage, 4125, A_Index - 1, 0, SysListView321  ; 4125 is LVM_GETCOLUMNWIDTH.
+    MsgBox Column %A_Index%'s width is %ErrorLevel%.
+}
+

LV_GetNext([StartingRowNumber, "Checked | Focused"])

+

+´ÙÀ½À¸·Î ¼±ÅõÈ, üũµÈ ¶Ç´Â ÃÊÁ¡ÀÌ ÀÖ´Â ÇàÀÇ ¹øÈ£¸¦ ¿­¶÷ÇÕ´Ï´Ù. ¾Æ¹«°Íµµ ¹ß°ßµÇÁö ¾ÊÀ¸¸é, 0ÀÌ ¹ÝȯµË´Ï´Ù. StartingRowNumber°¡ »ý·«µÇ°Å³ª 1 º¸´Ù ÀÛÀ¸¸é, °Ë»öÀº ¸®½ºÆ®ÀÇ »ó´Ü¿¡¼­ ½ÃÀÛÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é °Ë»öÀº StartingRowNumber ´ÙÀ½ ÇàºÎÅÍ ½ÃÀÛÇÕ´Ï´Ù. µÎ ¹ø° ¸Å°³º¯¼ö°¡ »ý·«µÇ¸é, ÇÔ¼ö´Â ´Ù¸¥ ¼±ÅõÈ/°­Á¶µÈ ÇàÀ» °Ë»öÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é "C" ¶Ç´Â "Checked"¸¦ ÁöÁ¤ÇØ ´ÙÀ½ üũµÈ ÇàÀ» °Ë»öÇϽʽÿÀ; ¾Æ´Ï¸é "F" ¶Ç´Â "Focused"¸¦ ÁöÁ¤ÇØ ÃÊÁ¡ÀÌ ÀÖ´Â ÇàÀ» ãÀ¸½Ê½Ã¿À (Àü ¸®½ºÆ®¸¦ ÅëƲ¾î ÃÊÁ¡ÀÌ ÀÖ´Â ÇàÀº Àý´ë Çϳª ¹Û¿¡ ¾ø½À´Ï´Ù. ±×¸®°í Á¾Á¾ ÀüÇô ¾øÀ» ¼öµµ ÀÖ½À´Ï´Ù). ´ÙÀ½ ¿¹Á¦´Â ListView¿¡¼­ ¼±ÅÃµÈ ¸ðµç ÇàµéÀ» º¸°í ÇÕ´Ï´Ù:

+ +
RowNumber = 0  ; ÀÌ·¸°Ô Çϸé ù ȸµ¹ÀÌ ¹Ýº¹ÀÌ ¸®½ºÆ®ÀÇ ÃÖ»ó´Ü¿¡¼­ °Ë»öÀ» ½ÃÀÛÇÕ´Ï´Ù.
+Loop
+{
+    RowNumber := LV_GetNext(RowNumber)  ; ¾ÕÀÇ ¹Ýº¹¿¡¼­ ¹ß°ßÇÑ Çà ¹Ù·Î ´ÙÀ½ºÎÅÍ °Ë»öÀ» Àç°³ÇÕ´Ï´Ù.
+    if not RowNumber  ; À§¿¡¼­ 0À» µ¹·ÁÁÖ¾ú°í, ±×·¡¼­ ´õ ÀÌ»ó ¼±ÅÃµÈ ÇàÀÌ ¾ø½À´Ï´Ù.
+        break
+    LV_GetText(Text, RowNumber)
+    MsgBox The next selected row is #%RowNumber%, whose first field is "%Text%".
+}
+

+ƯÁ¤ Çà ¹øÈ£°¡ üũµÇ¾î ÀÖ´ÂÁö ¾Ë¾Æ ³»´Â ¶Ç´Ù¸¥ ¹æ¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù:

+ +
Gui +LastFound
+SendMessage, 4140, RowNumber - 1, 0xF000, SysListView321  ; 4140´Â LVM_GETITEMSTATE.ÀÔ´Ï´Ù. 0xF000´Â LVIS_STATEIMAGEMASKÀÔ´Ï´Ù.
+IsChecked := (ErrorLevel >> 12) - 1  ; RowNumber°¡ üũµÇ¾î ÀÖÀ¸¸é IsChecked¿¡ ÂüÀÌ ¼³Á¤µÇ°í,±×·¸Áö ¾ÊÀ¸¸é °ÅÁþÀÌ ¼³Á¤µË´Ï´Ù.
+ +

LV_GetText(OutputVar, RowNumber [, ColumnNumber])

+

+ÁöÁ¤µÈ RowNumber¿Í ColumnNumber¿¡¼­ ÅؽºÆ®¸¦ ã¾Æ OutputVar¿¡ ÀúÀåÇÕ´Ï´Ù. ColumnNumber¸¦ »ý·«Çϸé, ±âº»°ªÀº 1ÀÔ´Ï´Ù (ù ¿­¿¡ ÀÖ´Â ÅؽºÆ®). RowNumber°¡ 0À̸é, ¿­ Çì´õ ÅؽºÆ®°¡ ¿­¶÷µË´Ï´Ù. ÅؽºÆ®°¡ 8191ÀÚ º¸´Ù ±æ¸é, ¾ÕÂÊ 8191 ±ÛÀÚ¸¸ ¿­¶÷µË´Ï´Ù. ¼º°øÇϸé 1À» µ¹·ÁÁÖ°í ½ÇÆÐÇϸé 0À» µ¹·ÁÁÝ´Ï´Ù. ½ÇÆнÃ, OutputVarµµ ºñ¿öÁý´Ï´Ù.

+

+½ºÅ©¸³Æ®¿¡ º¸¿©Áö´Â ¿­ ¹øÈ£´Â »ç¿ëÀÚ°¡ ¿­À» ²ø¾î ¶³±¸¾îµµ ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î ¿ø·¡ÀÇ Ã¹ ¿­ÀÌ ¹øÈ£´Â 1ÀÔ´Ï´Ù. »ç¿ëÀÚ°¡ ±× ¿­À» ²ø¾î ¿À¸¥ÂÊ ´Ù¸¥ ¿­¿¡ ¶³±¸¾îµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.

+ +

G-¶óº§ °íÁö (Primary)

+

+gMySubroutine°ú °°Àº g-¶óº§Àº ÄÜÆ®·ÑÀÇ ¿É¼Ç¿¡ ³ª¿­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é »ç¿ëÀÚ°¡ ÄÜÆ®·Ñ¿¡ ¾î¶² Á¶Ä¡¸¦ ¼öÇàÇÒ ¶§¸¶´Ù MySubroutine ¶óº§ÀÌ ÀÚµ¿À¸·Î ±âµ¿µË´Ï´Ù. ÀÌ ¼­ºê·çƾÀº ³»Àå º¯¼ö A_Gui¿Í A_GuiControl¸¦ Âü°íÇØ ¾î´À â ¾î´À ListView°¡ ±× À̺¥Æ®¸¦ ¹ß»ý½ÃÄ×´ÂÁö ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ´õ Áß¿äÇÑ °ÍÀº, A_GuiEvent¸¦ Âü°íÇÒ ¼ö ÀÖ´Ù´Â °ÍÀε¥, ¿©±â¿¡ ´ÙÀ½ ¹®ÀÚ¿­À̳ª ±âÈ£ Áß Çϳª°¡ ´ã°Ü ÀÖ½À´Ï´Ù (¹Ì·¡ ¹öÀü°úÀÇ È£È¯À» À§ÇØ, ½ºÅ©¸³Æ®´Â À̰͸¸ÀÌ °¡´ÉÇÑ À¯ÀÏÇÑ °ªµéÀ̶ó°í °£ÁÖÇÏ¸é ¾ÈµË´Ï´Ù):

+

+DoubleClick: »ç¿ëÀÚ°¡ ÄÜÆ®·Ñ ¾È¿¡¼­ ´õºíŬ¸¯ Çß½À´Ï´Ù. º¯¼ö A_EventInfo¿¡ ÃÊÁ¡ Çà ¹øÈ£°¡ ´ã±é´Ï´Ù. LV_GetNext()¸¦ ´ë½Å »ç¿ëÇϸé ù ¹ø°·Î ¼±ÅÃµÈ Çà ¹øÈ£¸¦ ¾Ë ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ°¡ ºó °÷¿¡ ´õºíŬ¸¯ Çß´Ù¸é 0ÀÔ´Ï´Ù.

+

+R: »ç¿ëÀÚ°¡ ÄÜÆ®·Ñ ¾È¿¡¼­ ´õºí-¿ìŬ¸¯ Çß½À´Ï´Ù. º¯¼ö A_EventInfo ¾È¿¡ ÃÊÁ¡ Çà ¹øÈ£°¡ ´ã±é´Ï´Ù.

+

+ColClick: »ç¿ëÀÚ°¡ ¿­ Çì´õ¸¦ Ŭ¸¯ Çß½À´Ï´Ù. º¯¼ö A_EventInfo¿¡ ±× ¿­ ¹øÈ£°¡ ´ã±é´Ï´Ù. ÀÌ°ÍÀº ±× ¿­ÀÌ »ý¼ºµÉ ¶§ ÇÒ´çµÈ ¿ø·¡ÀÇ ¿­ ¹øÈ£ÀÔ´Ï´Ù; Áï, »ç¿ëÀÚ¿¡ ÀÇÇÑ ²ø±â¿Í ¶³±¸±â´Â ÀüÇô ¹Ý¿µÇÏÁö ¾Ê½À´Ï´Ù. ¿­ Ŭ¸¯¿¡ ÇÑ °¡Áö °¡´ÉÇÑ ¹ÝÀÀÀº ¼ûÀº ¿­ ±âºÐÀ¸·Î Á¤·ÄÇÏ´Â °ÍÀÔ´Ï´Ù (³Êºñ°¡ 0). ¾È¿¡ Á¤·Ä¿¡ ÀûÇÕÇÑ Çü½ÄÀ¸·Î µ¥ÀÌÅÍ°¡ µé¾î ÀÖ½À´Ï´Ù (¿¹¸¦ µé¾î YYYYMMDD Á¤¼ö ³¯Â¥). +±×·± ¼ûÀº ¿­Àº Á» ´õ Ä£¼÷ÇÑ Çü½ÄÀ¸·Î °°Àº µ¥ÀÌÅ͸¦ º¸¿©ÁÖ´Â ´Ù¸¥ Ä÷³À» ¹Ì·¯ÇÒ ¼ö ÀÖ½À´Ï´Ù (¿¹¸¦ µé¾î MM/DD/YY). +¿¹¸¦ µé¾î, ½ºÅ©¸³Æ®´Â LV_ModifyCol(3, 0)¸¦ ÅëÇÏ¿© ¿­ 3À» ¼û±æ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ LV_ModifyCol(2, "NoSort")¸¦ ÅëÇÏ¿© ´«¿¡ º¸ÀÌ´Â 2 ¹ø ¿­¿¡ ÀÚµ¿ Á¤·ÄÀ» ²¨¹ö¸³´Ï´Ù. ´ÙÀ½, 2 ¹ø ¿­¿¡ ´ëÇÑ ColClick °íÁö¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î, ½ºÅ©¸³Æ®´Â LV_ModifyCol(3, "Sort")¸¦ ÅëÇÏ¿© ¼ûÀº ¿­À» ±âÁØÀ¸·Î ListView¸¦ Á¤·ÄÇÒ °ÍÀÔ´Ï´Ù.

+

+D: »ç¿ëÀÚ°¡ ÇàÀ̳ª ¾ÆÀÌÄÜÀ» ²ø·Á°í ½ÃµµÇß½À´Ï´Ù (ÇöÀç ÇàÀ̳ª ¾ÆÀÌÄÜ ²ø±â´Â ³»ºÎÀûÀ¸·Î Áö¿øÇÏÁö ¾Ê½À´Ï´Ù). º¯¼ö A_EventInfo¿¡ ÃÊÁ¡ Çà ¹øÈ£°¡ ´ã±é´Ï´Ù. v1.0.44+¿¡¼­, ÀÌ °íÁö´Â ½ÉÁö¾î AltSubmitÀÌ ¾ø¾îµµ ÀϾ´Ï´Ù.

+

+d (¼Ò¹®ÀÚ D): ¿ÞŬ¸¯ ²ø±â°¡ ¾Æ´Ï¶ó ¿ìŬ¸¯ ²ø±â¶ó´Â Á¡¸¸ Á¦¿ÜÇϸé À§¿Í °°½À´Ï´Ù.

+

+e (¼Ò¹®ÀÚ E): »ç¿ëÀÚ°¡ ÇàÀÇ Ã¹ Çʵå ÆíÁýÀ» ¸¶ÃƽÀ´Ï´Ù (»ç¿ëÀÚ´Â ListViewÀÇ ¿É¼Ç¿¡ -ReadOnly°¡ ÀÖÀ» °æ¿ì¿¡¸¸ ÆíÁýÇÒ ¼ö ÀÖ½À´Ï´Ù). º¯¼ö A_EventInfo¿¡ ±× Çà ¹øÈ£°¡ ´ã±é´Ï´Ù.

+ +

G-¶óº§ °íÁö (Secondary)

+

+ListView°¡ ¿É¼Ç¿¡ ´Ü¾î AltSubmitÀ» °¡Áö°í ÀÖ´Ù¸é, ±×ÀÇ g-¶óº§Àº ÈξÀ ´õ ÀÚÁÖ ±âµ¿µÇ°í A_GuiEvent¿¡ ´ÙÀ½ Ãß°¡ °ªÀÌ ´ã±æ ¼ö ÀÖ½À´Ï´Ù:

+

+Normal: »ç¿ëÀÚ°¡ ÇàÀ» ¿ÞŬ¸¯ Çß½À´Ï´Ù. º¯¼ö A_EventInfo¿¡ ÃÊÁ¡ Çà ¹øÈ£°¡ ´ã±é´Ï´Ù.

+

+RightClick: »ç¿ëÀÚ°¡ ÇàÀ» ¿ìŬ¸¯ Çß½À´Ï´Ù. º¯¼ö A_EventInfo¿¡ ÃÊ÷ Çà ¹øÈ£°¡ ´ã±é´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì, ÀÌ¿¡ ÀÀ´äÇÏ¿© ¸Þ´º¸¦ º¸¿©ÁÖ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ´ë½Å¿¡, GuiContextMenu label¸¦ »ç¿ëÇϽʽÿÀ. ¿Ö³ÄÇϸé Apps Å°µµ ÀÎÁöÇϱ⠶§¹®ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
GuiContextMenu:  ; ¿ìŬ¸¯ ¶Ç´Â Apps Å°ÀÇ ´©¸§¿¡ ÀÀ´äÇÏ¿© ±âµ¿µË´Ï´Ù.
+if A_GuiControl <> MyListView  ; ÀÌ Á¡°ËÀº ¼±ÅÃÀûÀÔ´Ï´Ù. ListView ¾È¿¡ Ŭ¸¯ÇßÀ» °æ¿ì¿¡¸¸ ¸Þ´º¸¦ º¸¿©ÁÝ´Ï´Ù.
+    return
+; ¸Þ´º¸¦ ÁÖ¾îÁø A_GuiX ±×¸®°í A_GuiY ÁÂÇ¥¿¡ º¸¿©ÁÝ´Ï´Ù. ÀÌ°ÍÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù
+; ¿Ö³ÄÇÏ¸é »ç¿ëÀÚ°¡ Apps Å°¸¦ ´©¸£´õ¶óµµ ¿Ã¹Ù¸¥ ÁÂÇ¥¸¦ Á¦°øÇϱ⠶§¹®ÀÔ´Ï´Ù:
+Menu, MyContextMenu, Show, %A_GuiX%, %A_GuiY%
+return
+

+A: ÇÑ ÇàÀÌ È°¼ºÈ­µÇ¾ú½À´Ï´Ù. ±âº»À¸·Î ´õºí Ŭ¸¯µÇ¸é È°¼ºÈ­µË´Ï´Ù. º¯¼ö A_EventInfo¿¡ ±× Çà ¹øÈ£°¡ ´ã±é´Ï´Ù.

+

+C: ListView°¡ ¸¶¿ì½º ¸¶¿ì½º ³ªÆ÷¸¦ ³õ¾Ò½À´Ï´Ù.

+

+E: »ç¿ëÀÚ°¡ ÇÑ ÇàÀÇ Ã¹ Çʵå ÆíÁýÀ» ½ÃÀÛÇß½À´Ï´Ù (»ç¿ëÀÚ´Â ListView°¡ ¿É¼Ç¿¡ -ReadOnly¸¦ °¡Áö°í ÀÖÀ» °æ¿ì¿¡¸¸ ÆíÁýÀÌ Çã¿ëµË´Ï´Ù). º¯¼ö A_EventInfo¿¡ Çà ¹øÈ£°¡ ´ã±é´Ï´Ù.

+

+F: ListView°¡ Å°º¸µå ÃÊÁ¡À» ¹Þ¾Ò½À´Ï´Ù.

+

+f (¼Ò¹®ÀÚ F): ListView°¡ Å°º¸µå ÃÊÁ¡À» ÀÒ¾ú½À´Ï´Ù.

+

+I: Ç׸ñÀÌ º¯°æµÊ. ¼±ÅÃ/üũ/ÇØÁ¦ µîµîÀ¸·Î ÀÎÇØ ÇÑ ÇàÀÌ º¯°æµÇ¾ú½À´Ï´Ù. »ç¿ëÀÚ°¡ »õ ÇàÀ» ¼±ÅÃÇϸé, Àû¾îµµ ±×·± °íÁö¸¦ µÎ °³ ¹Þ½À´Ï´Ù: Çϳª´Â ÀÌÀü ÇàÀÇ ÇØÁ¦ÀÌ°í ´Ù¸¥ Çϳª´Â »õ ÇàÀÇ ¼±Åÿ¡ °íÁö°¡ ¿É´Ï´Ù. v1.0.44+¿¡¼­, º¯¼ö A_EventInfo¿¡ ±× Çà ¹øÈ£°¡ ´ã±é´Ï´Ù. v1.0.46.10+¿¡¼­, ErrorLevel¿¡ ´ÙÀ½ ±âÈ£ Áß Çϳª°¡ ´ã°Ü ¾î¶»°Ô Ç׸ñÀÌ º¯°æµÇ¾ú´ÂÁö ¾Ë·ÁÁÝ´Ï´Ù: S (select) ¶Ç´Â s (de-select), ±×¸®°í/¶Ç´Â F (focus) ¶Ç´Â f (de-focus), ±×¸®°í/¶Ç´Â C (checkmark) ¶Ç´Â c (uncheckmark). +¿¹¸¦ µé¾î, SF´Â ÇàÀÌ ¼±ÅõǾî ÀÖ²¿ ÃÊÁ¡ÀÌ ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù. ƯÁ¤ ±âÈ£°¡ Á¸ÀçÇÏ´ÂÁö ŽÁöÇÏ·Á¸é ÆÄ½Ì È¸µ¹ÀÌ ¶Ç´Â ´ë¼Ò¹®ÀÚ ±¸ºÐ ¿É¼ÇÀ¸·Î InStr()À» »ç¿ëÇϽʽÿÀ; ¿¹¸¦ µé¾î: InStr(ErrorLevel, "S", true). ÁÖÀÇ: ¹Ì·¡ ¹öÀü°úÀÇ È£È¯À» À§ÇØ, ½ºÅ©¸³Æ®´Â "SsFfCc"¸¸ÀÌ À¯ÀÏÇÏ°Ô °¡´ÉÇÏ´Ï ±âÈ£¶ó°í °£ÁÖÇÏ¸é ¾ÈµË´Ï´Ù. ¶ÇÇÑ, CriticalÀ» g-¶óº§ÀÇ Ã¹ ÁÙ¿¡ ÁöÁ¤ÇÏ¸é ¸ðµç "I" °íÁö¸¦ ¹ÞÀ» ¼ö ÀÖ´Ù´Â °ÍÀ» È®½ÅÇÒ ¼ö ÀÖ½À´Ï´Ù (±×·¸Áö ¾ÊÀ¸¸é, ½ºÅ©¸³Æ®°¡ µû¶ó °¡Áö ¸øÇÒ °æ¿ì ¾î¶² °íÁö´Â ÀÒ¾î ¹ö¸± ¼ö ÀÖ½À´Ï´Ù).

+

+K: ListView¿¡ ÃÊÁ¡ÀÌ ÀÖ´Â µ¿¾È¿¡ »ç¿ëÀÚ°¡ Å°¸¦ ´­·¶½À´Ï´Ù. A_EventInfo¿¡ ±× Å°ÀÇ °¡»ó Å°Äڵ尡 ´ã±é´Ï´Ù. ÀÌ ¼ýÀÚ´Â ¹üÀ§°¡ 1°ú 255 »çÀÌÀÔ´Ï´Ù. ÀÌ°ÍÀ» GetKeyNameÀ» ÅëÇÏ¿© Å° À̸§À̳ª ¹®ÀÚ·Î º¯È¯ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, key := GetKeyName(Format("vk{:x}", A_EventInfo)). ´ëºÎºÐÀÇ Å°º¸µå ·¹À̾ƿô¿¡¼­ A-Z Å°´Â Chr(A_EventInfo)¸¦ ÅëÇÏ¿© ±×¿¡ »óÀÀÇÏ´Â ¹®ÀÚ·Î º¯È¯ÇÒ ¼ö ÀÖ½À´Ï´Ù. F2 Å°´­¸²Àº WantF2¿¡ »ó°ü ¾øÀÌ ¹Þ½À´Ï´Ù. ±×·¸Áö¸¸, Enter Å°´­¸²Àº ¹ÞÁö ¾Ê½À´Ï´Ù; ±×¸¦ ¹ÞÀ¸·Á¸é, ¾Æ·¡¿¡ ±â¼úÇÏ´Â °Íó·³ ±âº» ¹öÆ°À» »ç¿ëÇϽʽÿÀ.

+

+M: Marquee. »ç¿ëÀÚ°¡ ÇÑ ±×·ìÀÇ ÇàÀ̳ª ¾ÆÀÌÄÜ µÑ·¹ÀÇ ¼±Åà »ç°¢ÇüÀ» ²ø±â ½ÃÀÛÇß½À´Ï´Ù.

+

+S: »ç¿ëÀÚ°¡ ListView¸¦ ½ºÅ©·ÑÇϱ⠽ÃÀÛÇß½À´Ï´Ù.

+

+s (¼Ò¹®ÀÚ S): »ç¿ëÀÚ°¡ ListView ½ºÅ©·ÑÀ» ³¡³Â½À´Ï´Ù.

+ +

ImageList (¾ÆÀÌÄÜÀ» ListView¿¡ Ãß°¡ÇÏ´Â ¼ö´Ü)

+

+À̹ÌÁö-¸®½ºÆ®´Â ÇÑ ±×·ìÀÇ µ¿ÀÏÇÑ Å©±âÀÇ ¾ÆÀÌÄÜÀ¸·Î¼­ ¸Þ¸ð¸®¿¡ ÀúÀåµÇ¾î ÀÖ½À´Ï´Ù. »ý¼ºµÉ ¶§, °¢ ImageList´Â ºñ¾î ÀÖ½À´Ï´Ù. ½ºÅ©¸³Æ®´Â IL_Add()¸¦ ¹Ýº¹ÀûÀ¸·Î È£ÃâÇØ ¾ÆÀÌÄÜÀ» ±× ¸®½ºÆ®¿¡ Ãß°¡ÇÕ´Ï´Ù. °¢ ¾ÆÀÌÄÜÀº ¼ø¼­´ë·Î ¹øÈ£°¡ 1 ºÎÅÍ ÇÒ´çµË´Ï´Ù. ½ºÅ©¸³Æ®´Â ÀÌ ¹øÈ£¸¦ ÂüÁ¶ÇØ Æ¯Á¤ ¾ÆÀÌÄÜÀ» ÇàÀ̳ª ¿­ Çì´õ¿¡ º¸¿©ÁÝ´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â ¾ÆÀÌÄÜÀ» ListViewÀÇ Çà¿¡ »ðÀÔÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù:

+ +
Gui, Add, ListView, h200 w180, Icon & Number|Description  ; ListView¸¦ »ý¼ºÇÕ´Ï´Ù.
+ImageListID := IL_Create(10)  ; ImageList¸¦ ¸¸µé¾î 10 °³ÀÇ ÀÛÀº ¾ÆÀÌÄÜÀ» º¸À¯ÇÕ´Ï´Ù.
+LV_SetImageList(ImageListID)  ; À§ÀÇ ImageList¿¡ ÇöÀç ListView¸¦ ÇÒ´çÇÕ´Ï´Ù.
+Loop 10  ; ImageList¿¡ ÀÏ·ÃÀÇ ¾ÆÀÌÄÜÀ» DLL·ÎºÎÅÍ ÀûÀçÇÕ´Ï´Ù.
+    IL_Add(ImageListID, "shell32.dll", A_Index) 
+Loop 10  ; ÇàµéÀ»ListView¿¡ Ãß°¡ÇÕ´Ï´Ù (º¸¿©ÁÖ±â À§ÇÑ ¸ñÀûÀ¸·Î, °¢ ¾ÆÀÌÄÜ ´ç ÇÑ Ç྿).
+    LV_Add("Icon" . A_Index, A_Index, "n/a")
+LV_ModifyCol("Hdr")  ; ¿­ ³Êºñ¸¦ ÀÚµ¿-Á¶ÀýÇÕ´Ï´Ù.
+Gui Show
+return
+
+GuiClose:  ; »ç¿ëÀÚ°¡ ListViewÀÇ GUI âÀ» ´ÝÀ¸¸é ½ºÅ©¸³Æ®¸¦ Á¾·áÇÕ´Ï´Ù.
+ExitApp
+ +

IL_Create([InitialCount, GrowCount, LargeIcons?])

+

+»õ·Î ImageList¸¦ ¸¸µì´Ï´Ù. óÀ½¿¡´Â ºñ¾î ÀÖ°í, ImageListÀÇ À¯ÀÏÇÑ ID¸¦ µ¹·ÁÁÝ´Ï´Ù (½ÇÆÐÇϸé 0À» µ¹·ÁÁÝ´Ï´Ù). InitialCount´Â ¸®½ºÆ®¿¡ Áï½Ã »ðÀÔÇÒ °ÍÀ̶ó°í ¿¹»óÇÏ´Â ¾ÆÀÌÄÜÀÇ °³¼öÀÔ´Ï´Ù (»ý·«Çϸé, ±âº»°ªÀº 2ÀÔ´Ï´Ù). GrowCount´Â ¾ÆÀÌÄÜÀÇ °³¼öÀÔ´Ï´Ù. ÀÌ °ªÀ» ±âÁØÀ¸·Î ÇöÀç ¸®½ºÆ®°¡ °¡¿ë ´É·ÂÀ» ÃÊ°úÇÒ ¶§¸¶´Ù ¸®½ºÆ®°¡ Áõ°¡ÇÕ´Ï´Ù (»ý·«Çϸé, ±âº»°ªÀº 5ÀÔ´Ï´Ù). LargeIcons´Â ¼ýÄ¡ °ªÀ̾î¾ß ÇÕ´Ï´Ù: 0ÀÌ ¾Æ´Ï¸é, ImageList´Â Å« ¾ÆÀÌÄÜÀ» ´ã½À´Ï´Ù. 0À̸é ÀÛÀº ¾ÆÀÌÄÜÀ» ´ã½À´Ï´Ù (»ý·«Çϸé ÀÌ°ÍÀÌ ±âº»°ªÀÔ´Ï´Ù). ¸®½ºÆ®¿¡ Ãß°¡µÈ ¾ÆÀÌÄܵéÀº ÀÛ°í Å« ¾ÆÀÌÄÜ¿¡ ´ëÇÑ ½Ã½ºÅÛÀÇ Å©±â¸¦ ÁؼöÇÏ¿© ¸Â°Ô ÀÚµ¿À¸·Î Å©±â°¡ Á¶ÀýµË´Ï´Ù.

+ +

LV_SetImageList(ImageListID [, 0|1|2])

+

+ÀÌ ÇÔ¼ö´Â º¸Åë ÇàÀ» ListView¿¡ Ãß°¡Çϱâ ÀÌÀü¿¡ È£ÃâµË´Ï´Ù. ¾ÆÀÌÄÜÀÌ ListViewÀÇ Çà ¿·¿¡ (¼±ÅÃÀûÀ¸·Î ±×ÀÇ ¿­¿¡) º¸¿©Áöµµ·Ï ImageList¸¦ ¼³Á¤ÇÕ´Ï´Ù. ImageListID´Â ÀÌÀü¿¡ IL_Create()¸¦ È£ÃâÇØ ¹ÝȯµÈ ¹øÈ£ÀÔ´Ï´Ù. µÎ ¹ø° ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, ImageList¿¡¼­ ¾ÆÀÌÄÜÀÇ À¯ÇüÀÌ Å«Áö ÀÛÀºÁö ÀÚµ¿À¸·Î ŽÁöµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, Å« ¾ÆÀÌÄÜ¿¡ 0À» ÁöÁ¤ÇÏ°í, ÀÛÀº ¾ÆÀÌÄÜ¿¡ 1À» ÁöÁ¤Çϸç, ±×¸®°í »óÅ ¾ÆÀÌÄÜ¿¡´Â 2¸¦ ÁöÁ¤ÇϽʽÿÀ (»óÅ ¾ÆÀÌÄÜÀº ¾ÆÁ÷ Á÷Á¢ÀûÀ¸·Î Áö¿øÇÏÁö ¾ÊÁö¸¸, SendMessage¸¦ ÅëÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù).

+

+ListView´Â ÃÖ´ë µÎ °³ÀÇ ImageList¸¦ °¡Áú ¼ö ÀÖ½À´Ï´Ù: ÀÛÀº ¾ÆÀÌÄÜ / Å« ¾ÆÀÌÄÜ. ½ºÅ©¸³Æ®¿¡¼­ »ç¿ëÀÚ°¡ Å« ¾ÆÀÌÄÜ º¸±â¿¡¼­ ÀÛÀº ¾ÆÀÌÄÜ º¸±â·Î ÀüȯÇÒ ¼ö ÀÖµµ·Ï ÇØ ÁֹǷΠÀ¯¿ëÇÕ´Ï´Ù. ¿©·¯ ImageList¸¦ ListView¿¡ Ãß°¡ÇÏ·Á¸é, LV_SetImageList()¸¦ µÎ ¹ø È£ÃâÇÏ°í, µÎ ¹ø° ¸®½ºÆ®ÀÇ ImageListID¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ListView°¡ Å«-¾ÆÀÌÄÜ°ú ÀÛÀº-¾ÆÀÌÄÜ ImageList¸¦ ¸ðµÎ °®°í ÀÖ´Ù¸é µÎ ¸®½ºÆ®¿¡ °°Àº ¼ø¼­·Î ¾ÆÀÌÄÜÀÌ µé¾î ÀÖ´ÂÁö È®ÀÎÇØ¾ß ÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é °°Àº ID ¹øÈ£¸¦ »ç¿ëÇÏ¿© ƯÁ¤ ¾ÆÀÌÄÜÀÇ Å« ¾ÆÀÌÄÜ°ú ÀÛÀº ¾ÆÀÌÄÜÀ» ÂüÁ¶Çϱ⠶§¹®ÀÔ´Ï´Ù.

+

+¾ÆÀÌÄÜ°ú ŸÀÏÀ» Á¦¿ÜÇÏ°í ¸ðµç º¸±â ¸ðµå¿¡ ÀÛÀº ¾ÆÀÌÄÜÀ» º¸¿©ÁÖ´Â °ÍÀÌ ÀüÅëÀûÀÎ ¹æ½ÄÀÌÁö¸¸, ÀÌ ÇàÀ§´Â Å« ¾ÆÀÌÄÜ ¸®½ºÆ®¸¦ LV_SetImageList¿¡ °Ç³×°í 1 (ÀÛÀº-¾ÆÀÌÄÜ)À» µÎ ¹ø° ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇÏ¸é ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¶ÇÇÑ Å« ¾ÆÀÌÄÜ¿¡ ¸Â°Ô ListView¿¡¼­ °¢ ÇàÀÇ ³ôÀÌ°¡ Áõ°¡ÇÕ´Ï´Ù.

+

+¼º°øÇϸé, LV_SetImageList()´Â ÀÌÀü¿¡ ListView¿¡ ¿¬°üµÇ¾î ÀÖ´ø ImageListID¸¦ µ¹·ÁÁÝ´Ï´Ù (¾øÀ¸¸é 0). ±×·¸°Ô ¶¼¾î³½ ImageList´Â IL_Destroy(ImageListID)¸¦ ÅëÇÏ¿© Á¤»óÀûÀ¸·Î Æı«µË´Ï´Ù.

+ +

IL_Add(ImageListID, Filename [, IconNumber, ResizeNonIcon?])

+

+¾ÆÀÌÄÜÀ̳ª ±×¸²À» ÁöÁ¤µÈ ImageListID¿¡ Ãß°¡ÇÕ´Ï´Ù. ±×¸®°í ±× »õ·Î¿î ¾ÆÀÌÄÜÀÇ À妽º¸¦ µ¹·ÁÁÝ´Ï´Ù (1Àº ù ¹ø° ¾ÆÀÌÄÜ, 2´Â µÎ ¹ø° ¾ÆÀÌÄÜÀÌ°í ±×¸®°í. µîµî). FilenameÀº ¾ÆÀÌÄÜ (.ICO), Ä¿¼­ (.CUR), ¶Ç´Â ¾Ö´Ï¸ÞÀÌ¼Ç Ä¿¼­ (.ANI) ÆÄÀÏÀÇ À̸§ÀÔ´Ï´Ù (¾Ö´Ï¸ÞÀÌ¼Ç Ä¿¼­´Â ½ÇÁ¦·Î´Â ListView¿¡ º¸¿©Áú ¶§ ¿òÁ÷ÀÌÁö ¾Ê½À´Ï´Ù).´Ù¸¥ ¾ÆÀÌÄÜ ¼Ò½º·Î´Â ´ÙÀ½ À¯ÇüÀÇ ÆÄÀÏÀÌ Æ÷ÇԵ˴ϴÙ: EXE, DLL, CPL, SCR, ±×¸®°í ±âŸ ¾ÆÀÌÄÜ ÀÚ¿øÀ» Æ÷ÇÔÇÑ À¯Çüµé. ÆÄÀÏ¿¡ ù ¹ø° ¾ÆÀÌÄÜ ¸»°í ¾ÆÀÌÄÜ ±×·ìÀ» »ç¿ëÇÏ·Á¸é, ±×ÀÇ ¹øÈ£¸¦ IconNumber¿¡ ÁöÁ¤ÇϽʽÿÀ. IconNumber°¡ À½¼öÀ̸é, ±×ÀÇ Àý´ë °ªÀº ½ÇÇà ÆÄÀÏ ¾ÈÀÇ ¾ÆÀÌÄÜÀÇ ÀÚ¿ø ID·Î °£Áֵ˴ϴÙ. ´ÙÀ½ ¿¹Á¦¿¡¼­, µÎ ¹ø° ±×·ìÀ¸·ÎºÎÅÍ ±âº» ¾ÆÀÌÄÜÀÌ »ç¿ëµË´Ï´Ù: + +IL_Add(ImageListID, "C:\My Application.exe", 2).

+

+BMP, GIF ±×¸®°í JPG °°Àº ºñ-¾ÆÀÌÄÜ À̹ÌÁöµµ ÀûÀç°¡ °¡´ÉÇÕ´Ï´Ù. ±×·¸Áö¸¸, ÀÌ °æ¿ì µÎ °³ÀÇ ¸Å°³º¯¼ö¸¦ ÁöÁ¤ÇØ¾ß ¿Ã¹Ù¸¥ ÇàÀ§¸¦ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù: IconNumber´Â ¸¶½ºÅ©/Åõ¸í »ö ¹øÈ£À̾î¾ß ÇÕ´Ï´Ù (0xFFFFFF [Èò»ö]´Â ´ëºÎºÐÀÇ ±×¸²¿¡ °¡Àå ÁÁÀº ¼±ÅÃÀÔ´Ï´Ù); + +±×¸®°í ResizeNonIcon´Â 0ÀÌ ¾Æ´Ï¾î¾ß ÇÕ´Ï´Ù. ±×·¡¾ß ±×¸² Å©±â¸¦ Á¶ÀýÇÏ¿© ¾ÆÀÌÄÜ Çϳª°¡ µÉ ¼ö Àְųª, ¾Æ´Ï¸é ±× À̹ÌÁö¸¦ ºÐÇØÇÏ¿© ±×ÀÇ ½ÇÁ¦ Å©±â¿¡ ¸Â°Ô ¾ó¸¶µçÁö ¸¹Àº ¾ÆÀÌÄÜÀ» ¸¸µé¾î ³¾ ¼ö ÀÖ½À´Ï´Ù.

+

+¸ðµç ¿î¿µ üÁ¦´Â GIF, JPG, BMP, ICO, CUR, ±×¸®°í ANI À̹ÌÁö¸¦ Áö¿øÇÕ´Ï´Ù. Windows XP ÀÌÈÄ·Î, PNG, TIF, Exif, WMF, ±×¸®°í EMF °°Àº À̹ÌÁö Çü½ÄÀ» Ãß°¡·Î Áö¿øÇÕ´Ï´Ù. XPº¸´Ù ¿À·¡µÈ ¿î¿µ üÁ¦´Â ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®»çÀÇ ¹«·á GDI+ DLLÀ» AutoHotkey.exe Æú´õ ¾ÈÀ¸·Î º¹»çÇØ ³Ö¾î Áö¿øÇÒ ¼ö ÀÖ½À´Ï´Ù (±×·¯³ª ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®ÀÇ °æ¿ì, DLLÀ» ½ºÅ©¸³Æ®ÀÇ Æú´õ ¾ÈÀ¸·Î º¹»çÇØ ³ÖÀ¸½Ê½Ã¿À). DLLÀ» ³»·Á ¹ÞÀ¸·Á¸é, www.microsoft.com¿¡¼­ ´ÙÀ½ ±¸ÀýÀ» °Ë»öÇϽʽÿÀ: gdi redistributable

+ +

IL_Destroy(ImageListID)

+

+ÁöÁ¤µÈ ImageList¸¦ »èÁ¦ÇÕ´Ï´Ù ±×¸®°í ¼º°øÇϸé 1À» µ¹·ÁÁÖ°í ½ÇÆÐÇϸé 0À» µ¹·ÁÁÝ´Ï´Ù. º¸Åë ImageList¸¦ Æı«ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ¿Ö³ÄÇϸé ÀÏ´Ü ListView¿¡ ºÎÂøµÇ¸é, ListView³ªÀÇ ±×ÀÇ ºÎ¸ð âÀÌ Æı«µÉ ¶§ ÀÚµ¿À¸·Î °°ÀÌ Æı«µÇ±â ¶§¹®ÀÔ´Ï´Ù. ±×·¸Áö¸¸, ListView°¡ (±×ÀÇ ¿É¼Ç¿¡ 0x40¸¦ °¡Á®¼­) ImageList¸¦ ´Ù¸¥ ListView¿Í °øÀ¯Çϸé, ½ºÅ©¸³Æ®´Â ±×¸¦ »ç¿ëÇÏ´Â ¸ðµç ListView¸¦ Æı«ÇÑ ÈÄ¿¡ ¸í½ÃÀûÀ¸·Î ±× ImageList¸¦ Æı«ÇØ¾ß ÇÕ´Ï´Ù. ºñ½ÁÇÏ°Ô, ½ºÅ©¸³Æ®°¡ ListViewÀÇ ¿¹Àü ImageListÁß Çϳª¸¦ »õ °ÍÀ¸·Î ±³Ã¼Çϸé, ¸í½ÃÀûÀ¸·Î ±× ¿¹Àü ¸®½ºÆ®¸¦ Æı«ÇØ¾ß ÇÕ´Ï´Ù.

+ +

ListView ÃÑÆò

+

+Gui Submit ¸í·É¾î´Â ListView ÄÜÆ®·Ñ¿¡ ¾Æ¹« ¿µÇâÀÌ ¾ø½À´Ï´Ù. ±×·¯¹Ç·Î, ½ºÅ©¸³Æ®´Â ListViewÀÇ ¿¬°ü º¯¼ö¸¦ »ç¿ëÇÏ¿© (ÀÖ´Ù¸é) µ¤¾î¾µ °ÆÁ¤¾øÀÌ ´Ù¸¥ µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Ä÷³ÀÌ Á¤·ÄµÈ ÈÄ¿¡ -- »ç¿ëÀÚ°¡ ±×ÀÇ Çì´õ¸¦ Ŭ¸¯Ç߰ųª ½ºÅ©¸³Æ®°¡ LV_ModifyCol(1, "Sort")¸¦ È£ÃâÇÔÀ¸·Î½á -- ÀÌÈÄ¿¡ Ãß°¡µÇ´Â ÇàµéÀº Á¤·Ä ¼ø¼­¸¦ ÁؼöÇÏÁö ¾Ê°í ¸®½ºÆ®¿¡ ³¡¿¡ ³ªÅ¸³³´Ï´Ù. +ÀÌ¿¡ ´ëÇÑ ¿¹¿Ü´Â Sort¿Í SortDesc ½ºÅ¸ÀÏÀε¥, »õ·Î Ãß°¡µÈ ÇàµéÀ» ¿Ã¹Ù¸¥ À§Ä¡·Î À̵¿½Ãŵ´Ï´Ù.

+ +

+ListView¿¡ ÃÊÁ¡ÀÌ ÀÖ´Â µ¿¾È »ç¿ëÀÚ°¡ Enter¸¦ ´©¸¦ ¶§¸¦ ŽÁöÇÏ·Á¸é À» ¶§ ±âº» ¹öÆ°À» »ç¿ëÇϽʽÿÀ (¿øÇÏ¸é °¨Ãâ ¼ö ÀÖ½À´Ï´Ù). ¿¹¸¦ µé¾î:

+ +
Gui, Add, Button, Hidden Default, OK
+...
+ButtonOK:
+GuiControlGet, FocusedControl, FocusV
+if FocusedControl <> MyListView
+    return
+MsgBox % "Enter was pressed. The focused row number is " . LV_GetNext(0, "Focused")
+return
+

+Å°º¸µå·Î Çà¿¡¼­ ÇàÀ¸·Î Ç×ÇØÇÏ´Â ÀÏ ¿Ü¿¡µµ, »ç¿ëÀڴ ù ¿­ÀÇ ÇÑ Ç׸ñÀÇ Ã¹ ¹®ÀÚ¸¦ ŸÀÚÇϸé Á¡Áõ °Ë»öÀ» ¼öÇàÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¼±ÅÃÀÌ °¡Àå °¡±õ°Ô ºÎÇÕÇÏ´Â ÇàÀ¸·Î Á¡ÇÁÇÕ´Ï´Ù.

+

+±æÀÌ¿¡ »ó°ü¾øÀÌ ÅؽºÆ®¸¦ ListViewÀÇ °¢ Çʵ忡 ÀúÀåÇÒ ¼ö ÀÖÁö¸¸, ¾ÕÂÊ 260 ±ÛÀÚ¸¸ È­¸é¿¡ º¸¿©Áý´Ï´Ù.

+

ListView¿¡¼­ ÃÖ´ë ÇàÀÇ °³¼ö´Â ¿ÀÁ÷ ½Ã½ºÅÛ ¸Þ¸ð¸®¿¡¸¸ Á¦ÇѵÇÁö¸¸, Count ¿É¼Ç¿¡ ±â¼úÇÑ °Íó·³ Çà-Ãß°¡ ¼öÇ༺´ÉÀ» Å©°Ô °³¼±ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ListView µÑ·¹¿¡ ±×¸²À» ¹è°æÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù (Áï, ListView¸¦ ¾×ÀÚƲ¿¡ ³ÖÀ» ¼ö ÀÖ½À´Ï´Ù). ÀÌ·¸°Ô ÇÏ·Á¸é, ListView µÚ¿¡ ±×¸² ÄÜÆ®·ÑÀ»À» »ý¼ºÇÏ°í ±×¸²ÀÇ Options¿¡ 0x4000000¸¦ Æ÷ÇÔ½ÃÅ°½Ê½Ã¿À (WS_CLIPSIBLINGSÀÓ).

+

+½ºÅ©¸³Æ®¸¦ â ´ç ¿©·¯ ListView¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ±âº» ¸®½ºÆ®ºä ¸»°í ´Ù¸¥ ListView¸¦ ó¸®ÇÏ·Á¸é, ³»Àå ÇÔ¼ö¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+SendMessage·Î ¿­À» Á÷Á¢ »èÁ¦Çϰųª »ðÀÔÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ¿Ö³Ä¸é ÇÁ·Î±×·¥Àº °¢ ¿­¿¡ ¼±È£ÇÏ´Â Á¤·Ä ±âÁØÀÌ ´Ù µû·Î À־, µ¿±âÈ­°¡ ¾ÈµÉ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ´ë½Å¿¡, ³»Àå ¿­ ÇÔ¼ö¸¦ »ç¿ëÇϽʽÿÀ.

+

+ListViewÀÇ Å©±â¸¦ ¹Ù²Ù°Å³ª ¼û±â°Å³ª ±Û²ÃÀ» ¹Ù²Ù´Â °Í°ú °°Àº Á¶Ä¡µéÀ» ¼öÇàÇÏ·Á¸é GuiControlÀ» »ç¿ëÇϽʽÿÀ.

+

+ÅؽºÆ®¸¦ (½ºÅ©¸³Æ®°¡ ¼ÒÀ¯ÇÑ °ÍÀÌ ¾Æ´Ñ) ¿ÜºÎ ListView·ÎºÎÅÍ ÃßÃâÇÏ·Á¸é, ControlGet List¸¦ »ç¿ëÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

+TreeView, Other Control Types, Gui, GuiContextMenu, GuiControl, GuiControlGet, ListView ½ºÅ¸ÀÏ Å×À̺í

+ +

¿¹Á¦

+ +
; 0À» ù Çà ¹øÈ£·Î ÁöÁ¤ÇØ ¸ðµç ÇàÀ» ¼±ÅÃÇϰųª ÇØÁ¦ÇÕ´Ï´Ù:
+LV_Modify(0, "Select")   ; ¸ðµÎ ¼±ÅÃÇÕ´Ï´Ù.
+LV_Modify(0, "-Select")  ; ¸ðµÎ ÇØÁ¦ÇÕ´Ï´Ù.
+LV_Modify(0, "-Check")  ;  ¸ðµç üũ¹Ú½º¸¦ ÇØÁ¦ÇÕ´Ï´Ù.
+
+; ¸ðµç ¿­À» ±×ÀÇ ³»¿ë¿¡ ¸Â°Ô ÀÚµ¿ Å©±â Á¶ÀýÇÕ´Ï´Ù:
+LV_ModifyCol()  ; ÀÌ ¸ðµå¿¡´Â ¸Å°³º¯¼ö°¡ ¾ø½À´Ï´Ù.
+

 

+
; MAIN EXAMPLE
+; ´ÙÀ½ ½ºÅ©¸³Æ®´Â ÀÌ ÆäÀÌÁö À§¿¡ ÀÖ´Â ¿¹Á¦¿¡ ºñÇØ ´õ Á¤±³ÇÕ´Ï´Ù.
+; »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ Æú´õ ¾ÈÀÇ °¢ ÆÄÀϵéÀ» ±×ÀÇ À¯Çü¿¡ ¸Â°Ô ¾ÆÀÌÄÜÀ» ¿¬°üÁö¾î º¸¿©ÁÝ´Ï´Ù.
+; »ç¿ëÀÚ´Â ÆÄÀÏÀ» ´õºíŬ¸¯ Çϰųª Çϳª ÀÌ»óÀÇ ÆÄÀÏÀ» ¿ìŬ¸¯ÇØ ¹®¸Æ ¸Þ´º¸¦ º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù.
+
+; »ç¿ëÀÚ¿¡°Ô âÀ» ²ø¾î Å©±â¸¦ º¯°æÇϵµ·Ï Çã¿ëÇÕ´Ï´Ù:
+Gui +Resize
+
+; ¹öÆ°À» ¸¸µì´Ï´Ù:
+Gui, Add, Button, Default gButtonLoadFolder, Load a folder
+Gui, Add, Button, x+20 gButtonClear, Clear List
+Gui, Add, Button, x+20, Switch View
+
+; ListView¿Í ±×ÀÇ Ä÷³À» »ý¼ºÇÕ´Ï´Ù:
+Gui, Add, ListView, xm r20 w700 vMyListView gMyListView, Name|In Folder|Size (KB)|Type
+LV_ModifyCol(3, "Integer")  ; Á¤·ÄÀ» À§ÇØ, Size ¿­ÀÌ Á¤¼öÀÓÀ» ³ªÅ¸³À´Ï´Ù.
+
+; ListView°¡ ¾ÆÀÌÄÜÀ» º¸¿©ÁÙ ¼ö ÀÖµµ·Ï ImageList¸¦ ¸¸µì´Ï´Ù:
+ImageListID1 := IL_Create(10)
+ImageListID2 := IL_Create(10, 10, true)  ; ÀÛÀº ¾ÆÀÌÄÜ°ú ÇÔ²²ÇÒ Å« ¾ÆÀÌÄÜ ¸®½ºÆ®.
+
+; ImageList¸¦ ListView¿¡ ºÙ¿©¼­ ³ªÁß¿¡ ¾ÆÀÌÄÜÀ» º¸¿©ÁÙ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù:
+LV_SetImageList(ImageListID1)
+LV_SetImageList(ImageListID2)
+
+; ¹®¸Æ ¸Þ´º·Î »ç¿ëµÉ Æ˾÷ ¸Þ´º¸¦ ¸¸µì´Ï´Ù:
+Menu, MyContextMenu, Add, Open, ContextOpenFile
+Menu, MyContextMenu, Add, Properties, ContextProperties
+Menu, MyContextMenu, Add, Clear from ListView, ContextClearRows
+Menu, MyContextMenu, Default, Open  ; Make "Open" a bold font to indicate that double-click does the same thing.
+
+; âÀ» º¸¿©ÁÖ°í µ¹¾Æ¿É´Ï´Ù. OS´Â ½ºÅ©¸³Æ®¿¡°Ô
+; »ç¿ëÀÚ°¡ Àû¹ýÇÑ ÇàÀ§¸¦ ¼öÇàÇÒ ¶§¸¶´Ù °íÁöÇÕ´Ï´Ù:
+Gui, Show
+return
+
+
+ButtonLoadFolder:
+Gui +OwnDialogs  ; ¸ÞÀΠâÀ» »ç¿ëÇϱâ Àü¿¡ »ç¿ëÀÚ¿¡°Ô ´ÙÀ½ ´ëÈ­»óÀÚ¸¦ °­Á¦·Î Ãë¼ÒÇϵµ·Ï ¸¸µì´Ï´Ù..
+FileSelectFolder, Folder,, 3, Select a folder to read:
+if not Folder  ; »ç¿ëÀÚ°¡ ´ëÈ­»óÀÚ¸¦ Ãë¼ÒÇß½À´Ï´Ù.
+    return
+
+; Æú´õ À̸§ÀÇ ¸¶Áö¸· ±ÛÀÚÀÚ ¿ª»ç¼±ÀÎÁö Á¡°ËÇÕ´Ï´Ù. Ȥ½Ã ·çÆ® µð·ºÅ丮 ÀÏ ¼ö ÀÖ½À´Ï´Ù.
+; ¸¸¾à C:\¿Í °°´Ù¸é, ±×°ÍÀ» Á¦°ÅÇØ ³ªÁß¿¡ µÎ°³ÀÇ ¿ª»ç¼±ÀÌ µÇ´Â °ÍÀ» ¸·½À´Ï´Ù.
+StringRight, LastChar, Folder, 1
+if LastChar = \
+    StringTrimRight, Folder, Folder, 1  ; µÚ¿¡ µû¸£´Â ¿ª»ç¼±À» Á¦°ÅÇÕ´Ï´Ù.
+
+; SHFILEINFO ±¸Á¶¿¡ ÇÊ¿äÇÑ ¹öÆÛ Å©±â¸¦ °è»êÇÕ´Ï´Ù.
+sfi_size := A_PtrSize + 8 + (A_IsUnicode ? 680 : 340)
+VarSetCapacity(sfi, sfi_size)
+
+; ¼±ÅÃµÈ Æú´õ·ÎºÎÅÍ ÆÄÀÏ À̸§ ¸ñ·ÏÀ» ¼öÁýÇØ ±×°ÍÀ» ListView¿¡ Ãß°¡ÇÕ´Ï´Ù:
+GuiControl, -Redraw, MyListView  ; ÀûÀçÇÏ´Â µ¿¾È ´Ù½Ã ±×¸®±â¸¦ ²¨¼­ ¼öÇ༺´ÉÀ» Çâ»ó½Ãŵ´Ï´Ù.
+Loop %Folder%\*.*
+{
+    FileName := A_LoopFileFullPath  ; ¾Æ·¡¿¡ »ç¿ëÇϱâ À§ÇØ ¹Ýµå½Ã ¾²±â °¡´ÉÇÑ º¯¼ö¿¡ ÀúÀåÇØ¾ß ÇÕ´Ï´Ù.
+
+    ; À¯ÀÏÇÑ È®Àå ID¸¦ ±¸¼ºÇØ º¯¼ö À̸§¿¡ ºÒ¹ýÀÎ ¿¹¸¦ µé¾î ´ë½Ã °°Àº ¹®ÀÚµéÀ» ÇÇÇÕ´Ï´Ù.
+    ; ÀÌ À¯ÀÏÇÑ ID ¹æ¹ýÀº ¼öÇ༺´Éµµ ÁÁ½À´Ï´Ù.
+    ; ¿Ö³ÄÇÏ¸é ¹è¿­¿¡¼­ Ç׸ñÀ» ãÀ¸¸é °Ë»ö-ȸµ¹ÀÌ°¡ ÇÊ¿ä¾ø±â ¶§¹®ÀÔ´Ï´Ù.
+    SplitPath, FileName,,, FileExt  ; ÆÄÀÏÀÇ È®ÀåÀÚ¸¦ ¾ò½À´Ï´Ù.
+    if FileExt in EXE,ICO,ANI,CUR
+    {
+        ExtID := FileExt  ; Ư¼öÇÑ ID¸¦ À§Ä¡ º¸À¯ÀÚ·Î »ç¿ëÇÕ´Ï´Ù.
+        IconNumber = 0  ; ¹ß°ßÇÏÁö ¸øÇÑ °ÍÀ¸·Î Ç¥½ÄÀ» ºÙ¿©¼­ ÀÌ·± À¯ÇüÀÌ °¢°¢ À¯ÀÏÇÑ ¾ÆÀÌÄÜÀ» °¡Áöµµ·Ï ÇÕ´Ï´Ù.
+    }
+    else  ; ¾î¶² ´Ù¸¥ È®ÀåÀÚ/ÆÄÀÏ-À¯ÇüÀÔ´Ï´Ù. ±×·¡¼­ ±×ÀÇ À¯ÀÏÇÑ ID¸¦ °è»êÇÕ´Ï´Ù.
+    {
+        ExtID = 0  ; ´Ù¸¥ È®ÀåÀÚº¸´Ù ´õ ªÀº È®ÀåÀÚ¸¦ ó¸®Çϱâ À§ÇØ ÃʱâÈ­ÇÕ´Ï´Ù.
+        Loop 7     ; È®ÀåÀÚ ±æÀ̸¦ 7 ¹®ÀÚ·Î Á¦ÇÑÇÕ´Ï´Ù. ±×·¡¼­ 64-ºñÆ® °ª¿¡ ¸Â½À´Ï´Ù.
+        {
+            StringMid, ExtChar, FileExt, A_Index, 1
+            if not ExtChar  ; ´õ ÀÌ»ó ¹®ÀÚ°¡ ¾ø½À´Ï´Ù.
+                break
+            ;  °¢ ¹®ÀÚ¸¶´Ù ´Ù¸¥ ºñÆ® À§Ä¡¸¦ ÇÒ´çÇؼ­ À¯ÀÏÇÑ ID¸¦ ÃßÃâÇÕ´Ï´Ù.:
+            ExtID := ExtID | (Asc(ExtChar) << (8 * (A_Index - 1)))
+        }
+        ; ÀÌ ÆÄÀÏ È®ÀåÀÚ°¡ ÀÌ¹Ì ImageList¿¡ ¾ÆÀÌÄÜÀÌ ÀÖ´ÂÁö Á¡°ËÇÕ´Ï´Ù.
+        ; ±×·¸´Ù¸é, ¿©·¯ È£ÃâÀ» ÇÏÁö ¾Ê¾Æµµ µÇ°í ¼öÇ༺´ÉÀÌ Å©°Ô °³¼±µË´Ï´Ù,
+        ; ƯÈ÷, ¼ö ¹é°³ÀÇ ÆÄÀÏÀÌ µéÀº Æú´õ¶ó¸é ƯÈ÷ ±×·¸½À´Ï´Ù:
+        IconNumber := IconArray%ExtID%
+    }
+    if not IconNumber  ; ¾ÆÁ÷ ÀÌ È®ÀåÀÚ¿¡ ¾ÆÀÌÄÜÀÌ ¾ø½À´Ï´Ù. ±×·¡¼­ ÀûÀçÇÕ´Ï´Ù.
+    {
+        ; ÀÌ ÆÄÀÏ È®Àå¿¡ ¿¬°üµÈ °íÇ°ÁúÀÇ ÀÛÀº ¾ÆÀÌÄÜÀ» ¾ò½À´Ï´Ù:
+        if not DllCall("Shell32\SHGetFileInfo" . (A_IsUnicode ? "W":"A"), "str", FileName
+            , "uint", 0, "ptr", &sfi, "uint", sfi_size, "uint", 0x101)  ; 0x101 is SHGFI_ICON+SHGFI_SMALLICON
+            IconNumber = 9999999  ; ºó ¾ÆÀÌÄÜÀ» º¸¿©ÁÖ±â À§ÇØ ¹üÀ§¸¦ ¹þ¾î³ªµµ·Ï ¼³Á¤ÇÕ´Ï´Ù.
+        else ; ¾ÆÀÌÄÜÀÌ ¼º°øÀûÀ¸·Î ÀûÀçµÇ¾ú½À´Ï´Ù.
+        {
+            ; ±¸Á¶·ÎºÎÅÍ hIcon ¸â¹ö¸¦ ÃßÃâÇÕ´Ï´Ù:
+            hIcon := NumGet(sfi, 0)
+            ; HICONÀ» Á÷Á¢ ÀÛÀº-¾ÆÀÌÄÜ ±×¸®°í Å«-¾ÆÀÌÄÜ ¸®½ºÆ®¿¡ Ãß°¡ÇÕ´Ï´Ù.
+            ; ¾Æ·¡´Â +1À» »ç¿ëÇØ, ¹ÝȯµÈ À妽ºÆ®¸¦ 0 ±â¹Ý¿¡¼­ 1 ±â¹ÝÀ¸·Î º¯È¯ÇÕ´Ï´Ù:
+            IconNumber := DllCall("ImageList_ReplaceIcon", "ptr", ImageListID1, "int", -1, "ptr", hIcon) + 1
+            DllCall("ImageList_ReplaceIcon", "ptr", ImageListID2, "int", -1, "ptr", hIcon)
+            ; ÀÌÁ¦ ImageList ¾ÈÀ¸·Î º¹»çµÇ¾úÀ¸¹Ç·Î, ¿øº»Àº Æı«ÇØ¾ß ÇÕ´Ï´Ù:
+            DllCall("DestroyIcon", "ptr", hIcon)
+            ; ¾ÆÀÌÄÜÀ» ij½¬ÇØ ¸Þ¸ð¸®¸¦ Àý¾àÇÏ°í ÀûÀç ¼öÇ༺´ÉÀ» °³¼±ÇÕ´Ï´Ù:
+            IconArray%ExtID% := IconNumber
+        }
+    }
+
+    ; ListView¿¡ »õ ÇàÀ» ¸¸µé°í ±×°ÍÀ» À§¿¡¼­ °áÁ¤µÈ ¾ÆÀÌÄÜ ¹øÈ£¿¡ ÇÒ´çÇÕ´Ï´Ù:
+    LV_Add("Icon" . IconNumber, A_LoopFileName, A_LoopFileDir, A_LoopFileSizeKB, FileExt)
+}
+GuiControl, +Redraw, MyListView  ; (À§¿¡¼­ ²¨ ¹ö¸°) ´Ù½Ã ±×¸®±â¸¦ ´Ù½Ã ÄÕ´Ï´Ù.
+LV_ModifyCol()  ; ±×ÀÇ ³»¿ë¿¡ ¸Â°Ô °¢ ¿­ÀÇ Å©±â¸¦ ÀÚµ¿ Á¶ÀýÇÕ´Ï´Ù.
+LV_ModifyCol(3, 60) ;±×ÀÇ Çì´õ¸¦ ³ëÃâ½ÃÅ°±â À§ÇØ Size ¿­À» ¾à°£ ´õ ³Ð°Ô ÇÕ´Ï´Ù.
+return
+
+
+ButtonClear:
+LV_Delete()  ; ListView¸¦ Áö¿ìÁö¸¸, °£´ÜÇÏ°Ô ÇϱâÀ§ÇØ ¾ÆÀÌÄÜ Ä³½¬´Â ±×´ë·Î À¯ÁöÇÕ´Ï´Ù.
+return
+
+ButtonSwitchView:
+if not IconView
+    GuiControl, +Icon, MyListView    ; ¾ÆÀÌÄÜ º¸±â·Î ÀüȯÇÕ´Ï´Ù.
+else
+    GuiControl, +Report, MyListView  ; ÀÚ¼¼È÷ º¸±â·Î ´Ù½Ã ÀüȯÇÕ´Ï´Ù.
+IconView := not IconView             ; ´ÙÀ½À» ´ëºñÇØ µÚÁý½À´Ï´Ù.
+return
+
+MyListView:
+if A_GuiEvent = DoubleClick  ; ½ºÅ©¸³Æ®°¡ Á¡°ËÇÒ ¼ö ÀÖ´Ù´Â ´Ù¸¥ °ªµéÀÌ ¸¹ÀÌ ÀÖ½À´Ï´Ù.
+{
+    LV_GetText(FileName, A_EventInfo, 1) ; ù ÇʵåÀÇ ÅؽºÆ®¸¦ ¾ò½À´Ï´Ù.
+    LV_GetText(FileDir, A_EventInfo, 2)  ; µÎ ¹ø° ÇʵåÀÇ ÅؽºÆ®¸¦ ¾ò½À´Ï´Ù.
+    Run %FileDir%\%FileName%,, UseErrorLevel
+    if ErrorLevel
+        MsgBox Could not open "%FileDir%\%FileName%".
+}
+return
+
+GuiContextMenu:  ; ¿ìŬ¸¯À̳ª Apps Å° ´©¸§¿¡ ÀÀ´äÇÏ¿© ±âµ¿µË´Ï´Ù.
+if A_GuiControl <> MyListView  ; ListView ¾ÈÀ» Ŭ¸¯ÇÒ ¶§¸¸ ¸Þ´º¸¦ º¸¿©ÁÝ´Ï´Ù.
+    return
+; ¸Þ´º¸¦ Á¦°øµÈ A_GuiX¿Í A_GuiY ÁÂÇ¥¿¡ º¸¿©ÁÝ´Ï´Ù. ÀÌ°ÍÀ» ½á¾ß ÇÕ´Ï´Ù.
+; ¿Ö³ÄÇÏ¸é »ç¿ëÀÚ°¡ Apps Å°¸¦ ´©¸£´õ¶óµµ ¿Ã¹Ù¸¦ ÁÂÇ¥¸¦ Á¦°øÇϱ⠶§¹®ÀÔ´Ï´Ù:
+Menu, MyContextMenu, Show, %A_GuiX%, %A_GuiY%
+return
+
+ContextOpenFile:  ; »ç¿ëÀÚ°¡ ¹®¸Æ ¸Þ´º¿¡¼­ "Open"À» ¼±ÅÃÇß½À´Ï´Ù.
+ContextProperties:  ; »ç¿ëÀÚ°¡ ¹®¸Æ ¸Þ´º¿¡¼­ "Properties"¸¦ ¼±ÅÃÇß½À´Ï´Ù.
+; °£´ÜÇÏ°Ô Çϱâ À§ÇØ, ¼±ÅÃµÈ ¸ðµç ÇàÀÌ ¾Æ´Ï¶ó ¿ÀÁ÷ ÃÊÁ¡ Çุ ó¸®ÇÕ´Ï´Ù:
+FocusedRowNumber := LV_GetNext(0, "F")  ; ÃÊÁ¡ ÇàÀ» ã½À´Ï´Ù.
+if not FocusedRowNumber  ; ÃÊÁ¡ ÇàÀÌ ¾ø½À´Ï´Ù.
+    return
+LV_GetText(FileName, FocusedRowNumber, 1) ; ù ÇʵåÀÇ ÅؽºÆ®¸¦ ¾ò½À´Ï´Ù.
+LV_GetText(FileDir, FocusedRowNumber, 2)  ; µÎ ¹ø° ÇʵåÀÇ ÅؽºÆ®¸¦ ¾ò½À´Ï´Ù.
+IfInString A_ThisMenuItem, Open  ; »ç¿ëÀÚ°¡ ¹®¸Æ ¸Þ´º¿¡¼­ "Open"À» ¼±ÅÃÇß½À´Ï´Ù.
+    Run %FileDir%\%FileName%,, UseErrorLevel
+else  ; »ç¿ëÀÚ°¡ ¹®¸Æ ¸Þ´º¿¡¼­ "Properties"¸¦ ¼±ÅÃÇß½À´Ï´Ù.
+    Run Properties "%FileDir%\%FileName%",, UseErrorLevel
+if ErrorLevel
+    MsgBox Could not perform requested action on "%FileDir%\%FileName%".
+return
+
+ContextClearRows:  ; »ç¿ëÀÚ°¡ ¹®¸Æ ¸Þ´º¿¡¼­ "Clear"¸¦ ¼±ÅÃÇß½À´Ï´Ù.
+RowNumber = 0  ; ÀÌ·¸°Ô Çϸé ù ¹Ýº¹ÀÌ ÃÖ»ó´Ü¿¡¼­ °Ë»öÀ» ½ÃÀÛÇÕ´Ï´Ù.
+Loop
+{
+    ; ÇàÀ» »èÁ¦ÇÏ¸é ±× ¾Æ·¡ÀÇ ¸ðµç ´Ù¸¥ ÇàÀÇ RowNumber°¡ ÁÙ¾î µé±â ¶§¹®¿¡,
+    ; 1À» »©¼­ ÀÌÀü¿¡ ¹ß°ßµÈ Çà ¹øÈ£¿Í °°Àº ¹øÈ£¸¦ °Ë»ö¿¡ Æ÷ÇÔ½Ãŵ´Ï´Ù
+    ; (ÀÎÁ¢ ÇàµéÀÌ ¼±ÅÃµÈ °æ¿ì):
+    RowNumber := LV_GetNext(RowNumber - 1)
+    if not RowNumber  ; À§¿¡¼­ 0À» µ¹·ÁÁÖ¾ú½À´Ï´Ù. ±×·¡¼­ ´õ ÀÌ»ó ¼±ÅÃµÈ ÇàÀÌ ¾ø½À´Ï´Ù.
+        break
+    LV_Delete(RowNumber)  ; ListView·ÎºÎÅÍ ÇØ´ç ÇàÀ» Á¦°ÅÇÕ´Ï´Ù.
+}
+return
+
+GuiSize:  ; »ç¿ëÀÚÀÇ Ã¢ Å©±â Á¶Àý¿¡ ÀÀ´äÇÏ¿© ListView¸¦ Å°¿ì°Å³ª ÁÙÀÔ´Ï´Ù.
+if A_EventInfo = 1  ; âÀÌ ÃÖ¼ÒÈ­µÇ¾ú½À´Ï´Ù. ´õ ÀÌ»ó Á¶Ä¡°¡ ÇÊ¿ä ¾ø½À´Ï´Ù.
+    return
+; ±×·¸Áö ¾ÊÀ¸¸é, âÀÌ Å©±â°¡ ¹Ù²î¾ú°Å³ª ÃÖ´ëÈ­µÇ¾ú½À´Ï´Ù. ±×¿¡ ¸Âµµ·Ï ListViewÀÇ Å©±â¸¦ Á¶ÀýÇÕ´Ï´Ù.
+GuiControl, Move, MyListView, % "W" . (A_GuiWidth - 20) . " H" . (A_GuiHeight - 40)
+return
+
+GuiClose:  ; âÀÌ ´ÝÈú ¶§, ÀÚµ¿À¸·Î ½ºÅ©¸³Æ®¸¦ Á¾·áÇÕ´Ï´Ù:
+ExitApp
+ + + diff --git a/src/docs/commands/Loop.htm b/src/docs/commands/Loop.htm new file mode 100644 index 0000000..d6baeee --- /dev/null +++ b/src/docs/commands/Loop.htm @@ -0,0 +1,71 @@ + + + + +Loop + + + + + + + +

Loop (normal)

+ +

ÀÏ·ÃÀÇ ¸í·É¾îµéÀ» ¹Ýº¹ÀûÀ¸·Î ½ÇÇàÇÕ´Ï´Ù: ÁöÁ¤µÈ Ƚ¼ö ¸¸Å­ ¹Ýº¹Çϰųª ¾Æ´Ï¸é break¸¦ ¸¸³¯ ¶§±îÁö ¹Ýº¹ÇÕ´Ï´Ù.

+ +
Loop [, Count]
+

¸Å°³º¯¼ö

+
+ +
Count
+

ȸµ¹À̸¦ ¼öÇàÇÒ (¹Ýº¹) Ƚ¼ö. »ý·«µÇ¸é, ȸµ¹ÀÌ´Â break ¶Ç´Â returnÀ» ¸¸³¯ ¶§±îÁö ¹«ÇÑÈ÷ °è¼ÓµË´Ï´Ù.

+

+ Count°¡ %ItemCount%¿Í °°Àº º¯¼ö ÂüÁ¶À̸é, ȸµ¹ÀÌ´Â º¯¼ö°¡ ºñ°Å³ª 1º¸´Ù ÀÛÀº ¼ýÀÚ¸¦ Æ÷ÇÔÇÒ ¶§ ¿ÏÀüÈ÷ °Ç³Ê ¶Ý´Ï´Ù.

+

+ ÆÄÀÏ-ÆÐÅÏ È¸µ¹À̸¦ Áö¿øÇÒ ÇÊ¿ä°¡ Àֱ⠶§¹®¿¡, Count´Â Ç¥Çö½ÄÀÌ µÇ¸é ¾ÈµË´Ï´Ù. ±×·¸Áö¸¸, ¸ðµç ºñ-Ç¥Çö½Ä ¸Å°³º¯¼öó·³, ¾Õ¿¡´Ù %¿Í ½ºÆäÀ̽º Çϳª¸¦ µÎ¸é °­Á¦·Î Ç¥Çö½Äó·³ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: Loop % Count + 1. ±×·± °æ¿ì, Ç¥Çö½ÄÀº ȸµ¹ÀÌ°¡ ½ÃÀ۵DZâ Àü¿¡ ¿ÀÁ÷ ÇÑ ¹ø¸¸ Æò°¡µË´Ï´Ù.

+ +
+ +

³íÆò

+

+ȸµ¹ÀÌ ¸í·É¾î´Â º¸Åë ´ÙÀ½ ºí·ÏÀÌ µû¶ó¿É´Ï´Ù. ºí·ÏÀº ȸµ¹ÀÌÀÇ ¸öÀ» Çü¼ºÇÏ´Â ¼­¼ú¹® Áý´ÜÀÔ´Ï´Ù. ±×·¸Áö¸¸, ¼­¼ú¹®ÀÌ Çϳª¸¸ Àִ ȸµ¹ÀÌ´Â ºí·ÏÀÌ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù (ÀÌ·± ¸ñÀûÀ¸·Î "if"¿Í ±×ÀÇ "else"´Â ÇϳªÀÇ ¼­¼ú¹®À¸·Î °£Áֵ˴ϴÙ).

+

+ÀÌ ¸í·É¾îÀÇ ÀϹÝÀûÀÎ »ç¿ë¹ýÀº ¹«ÇÑ È¸µ¹ÀÌÀÔ´Ï´Ù. break ¸í·É¾î¸¦ ȸµ¹ÀÌÀÇ ¸ö ¾îµò°¡¿¡ »ç¿ëÇØ È¸µ¹À̸¦ ³¡³¾ ¶§¸¦ °áÁ¤ÇÕ´Ï´Ù.

+

+ȸµ¹ÀÌ ¾È¿¡ break¿Í continue¸¦ »ç¿ëÇÏ´Â °ÍÀ» Àû±Ø ±ÇÀåÇÕ´Ï´Ù. goto´Â ÀÚÁ¦ÇϽʽÿÀ. ¿Ö³ÄÇϸé ÀϹÝÀûÀ¸·Î ½ºÅ©¸³Æ®¸¦ ´õ ÀÌÇØÇϱ⠾î·Æ°Ô ¸¸µé°í À¯Áö°ü¸®Çϱ⵵ ´õ Èûµé°Ô ¸¸µé±â ¶§¹®ÀÔ´Ï´Ù. "Do...While" ȸµ¹À̸¦ ¸¸µé·Á¸é, ȸµ¹ÀÌ ¸öüÀÇ ¸¶Áö¸· ¼­¼ú¹®À» IF ¼­¼ú¹®À¸·Î ¸¸µé¾î¼­ Á¶°ÇÀûÀ¸·Î break ¸í·É¾î¸¦ ½ÇÇàÇϵµ·Ï ¸¸µå½Ê½Ã¿À. °°Àº Å×Å©´ÐÀ» »ç¿ëÇϸé "While" ȸµ¹À̸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ±× ´ë½Å¿¡ While ¸í·É¾î¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

+

+³»Àå º¯¼ö A_Index¿¡´Â ÇöÀç ȸµ¹ÀÌ ¹Ýº¹ Ƚ¼ö°¡ ´ã±é´Ï´Ù. ȸµ¹ÀÌÀÇ ¸öü°¡ óÀ½ ½ÇÇàµÉ ¶§ 1ÀÌ ´ã±â°í, ±× ´ÙÀ½ ½ÇÇà ¶§ 2°¡ ´ã±é´Ï´Ù; µîµî. ³»ºÎ ȸµ¹ÀÌ°¡ ¿ÜºÎ ȸµ¹ÀÌ·Î µÑ·¯ ½Î¿© ÀÖ´Ù¸é, ³»ºÎ ȸµ¹ÀÌ°¡ ¿ì¼± ¼øÀ§°¡ ÀÖ½À´Ï´Ù. A_Index´Â ¸ðµç À¯ÇüÀÇ È¸µ¹ÀÌ¿¡ ÀÛµ¿ÇÕ´Ï´Ù. ¿©±â¿¡´Â ÆÄÀÏ-ȸµ¹ÀÌ¿Í ·¹Áö½ºÆ®¸®-ȸµ¹ÀÌ°¡ Æ÷ÇԵ˴ϴÙ; ±×·¯³ª A_Index´Â ȸµ¹ÀÌ ¹ÛÀ̸é 0ÀÌ ´ã±é´Ï´Ù.

+

+One True Brace (OTB) ½ºÅ¸ÀÏÀ» ¼±ÅÃÀûÀ¸·Î Á¤»ó ȸµ¹ÀÌ¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù (±×·¯³ª Ưº°ÇÑ È¸µ¹ÀÌ¿¡´Â ¾ÈµË´Ï´Ù. ¿¹¸¦ µé¾î ÆÄÀÏ-ÆÐÅÏ È¸µ¹ÀÌ ±×¸®°í ÆÄ½Ì È¸µ¹ÀÌ). ¿¹¸¦ µé¾î:

+
Loop {
+    ...
+}
+Loop %RepeatCount% {
+    ...
+}
+

+Ư¼ö ȸµ¹ÀÌ: ȸµ¹À̸¦ »ç¿ëÇØ ÀÚµ¿À¸·Î ÆÄÀÏ, Æú´õ, ·¹Áö½ºÆ®¸® Ç׸ñÀ» (ÇÑ ¹ø¿¡ Çϳª¾¿) ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº ÆÄÀÏ-ȸµ¹ÀÌ ±×¸®°í ·¹Áö½ºÆ®¸®-ȸµ¹À̸¦ ÂüÁ¶ÇϽʽÿÀ. °Ô´Ù°¡, ÆÄÀÏ-Àбâ ȸµ¹ÀÌ´Â ÆÄÀÏÀÇ Àüü ³»¿ëÀ» ÇÑ ¹ø¿¡ ÇÑ ÁÙ¾¿ ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¶Áö¸·À¸·Î, ÆÄ½Ì È¸µ¹ÀÌ´Â °¡¸§ÀÚ·Î ±¸ºÐµÈ ¹®ÀÚ¿­ ¾È¿¡ Æ÷ÇÔµÈ °³º° ÇʵåµéÀ» ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+Until, While-ȸµ¹ÀÌ, For-ȸµ¹ÀÌ, ÆÄÀÏ°ú Æú´õ ȸµ¹ÀÌ, ·¹Áö½ºÆ®¸® ȸµ¹ÀÌ, ÆÄÀÏ-Àбâ ȸµ¹ÀÌ, ÆÄ½Ì È¸µ¹ÀÌ, Break, Continue, ºí·Ï

+ +

¿¹Á¦

+
Loop, 3
+{
+    MsgBox, ¹Ýº¹ ¼ýÀÚ´Â %A_Index%ÀÔ´Ï´Ù.  ; A_Index´Â 1, 2, ±× ´ÙÀ½¿¡ 3ÀÌ µË´Ï´Ù
+    Sleep, 100
+}
+
+Loop
+{
+    if a_index > 25
+        break  ; ȸµ¹À̸¦ Á¾·áÇÕ´Ï´Ù
+    if a_index < 20
+        continue ; ¾Æ·¡¸¦ °Ç³Ê ¶Ù°í »õ ¹Ýº¹À» ½ÃÀÛÇÕ´Ï´Ù
+    MsgBox, a_index = %a_index% ; ÀÌ °÷Àº ¼ýÀÚ¸¦ 20ºÎÅÍ 25 ±îÁö¸¸ º¸¿©ÁÝ´Ï´Ù.
+}
+ + + diff --git a/src/docs/commands/LoopFile.htm b/src/docs/commands/LoopFile.htm new file mode 100644 index 0000000..17d71b7 --- /dev/null +++ b/src/docs/commands/LoopFile.htm @@ -0,0 +1,241 @@ + + + + +Loop (files & folders) + + + + + + + +

Loop (files & folders)

+ +

ÁöÁ¤µÈ ÆÄÀÏÀ̳ª Æú´õ¸¦ , ÇÑ ¹ø¿¡ Çϳª¾¿ ¿­¶÷ÇÕ´Ï´Ù.

+ +
Loop, Files, FilePattern [, Mode]  ; v1.1.21+ (±ÇÀå)
+
Loop, FilePattern [, IncludeFolders?, Recurse?]
+

¸Å°³º¯¼ö

+
+ +
Files [v1.1.21+]
+

¹®ÀÚ ±×´ë·Î Files (´ë¼Ò¹®ÀÚ-±¸º°). º¯¼ö³ª Ç¥Çö½Ä ºÒ°¡´É.

+ +
FilePattern
+

ÆÄÀÏÀ̳ª Æú´õÀÇ À̸§, ¶Ç´Â C:\Temp\*.tmp¿Í °°Àº ¿ÍÀϵåÄ«µå ÆÐÅÏ. FilePatternÀº Àý´ë °æ·Î°¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ.

+

+ º°Ç¥¿Í ¹°À½Ç¥ Ç¥½Ä ¸ðµÎ ¿ÍÀϵåÄ«µå·Î Áö¿øµË´Ï´Ù. ÆÐÅÏÀÌ ÆÄÀÏÀÇ ±ä/º¸Åë À̸§¿¡ ¶Ç´Â ±×ÀÇ 8.3 ªÀº À̸§¿¡ ³ªÅ¸³ª¸é ÀÏÄ¡°¡ ÀϾ´Ï´Ù.

+

+ ÀÌ ¸Å°³º¯¼ö°¡ ´ÜÀÏ ÆÄÀÏÀ̳ª Æú´õÀÌ°í (Áï, ¿ÍÀϵåÄ«µå°¡ ¾Æ´Ï°í) Recurse°¡ 1·Î ¼³Á¤µÇ¾ú°Å³ª Mode¿¡ RÀÌ Æ÷ÇԵǾî ÀÖÀ¸¸é, ºÎÇÕÇÏ´Â °ÍÀÌ ¿©·µÀÏ ¼ö ÀÖ½À´Ï´Ù. ÁöÁ¤µÈ ÆÄÀÏ À̸§ÀÌ °Ë»öµÇ´Â ¿©·¯ Æú´õ¿¡ ³ªÅ¸³ª±â ¶§¹®ÀÔ´Ï´Ù.

+ +
Mode [v1.1.21+]
+

´ÙÀ½ ±âÈ£µé·Î ±¸¼ºµË´Ï´Ù:

+

D: µð·ºÅ丮 Æ÷ÇÔ (Æú´õ).
+ F: ÆÄÀÏ Æ÷ÇÔ. F¿Í D¸¦ ¸ðµÎ »ý·«Çϸé ÆÄÀϵµ Æ÷ÇԵ˴ϴÙ.
+ R: ¼­ºêµð·ºÅ丮 ¾ÈÀ¸·Î Àç±ÍÇÕ´Ï´Ù (¼­ºêÆú´õ). RÀÌ »ý·«µÇ¸é, ¼­ºêµð·ºÅ丮ÀÇ ÆÄÀÏ°ú Æú´õ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.

+
+ +
IncludeFolders?
+

´ÙÀ½ ¼ýÀÚ Áß Çϳª, ¶Ç´Â ºñ¾î ÀÖÀ¸¸é ±âº»°ª »ç¿ë:
+ 0 (±âº»°ª) Æú´õ´Â ¿­¶÷ÇÏÁö ¾Ê½À´Ï´Ù (ÆÄÀϸ¸ ¿­¶÷).
+ 1 ¿ÍÀϵåÄ«µå ÆÐÅÏ¿¡ ºÎÇÕÇÏ´Â ¸ðµç ÆÄÀÏ°ú Æú´õ¸¦ ¿­¶÷ÇÕ´Ï´Ù.
+ 2 Æú´õ¸¸ ¿­¶÷ÇÕ´Ï´Ù (ÆÄÀÏ ¿­¶÷ ¾ÈÇÔ).

+ +
Recurse?
+
´ÙÀ½ ¼ýÀÚ Áß Çϳª, ¶Ç´Â ºñ¾î ÀÖÀ¸¸é ±âº»°ªÀ» »ç¿ëÇÕ´Ï´Ù:
+ 0 (±âº»°ª) ¼­ºêÆú´õ ¾ÈÀ¸·Î Àç±ÍÇÏÁö ¾Ê½À´Ï´Ù.
+1 ¼­ºêÆú´õ ¾ÈÀ¸·Î Àç±ÍÇØ µé¾î°¡ °Å±â¿¡¼­ FilePattern¿¡ ºÎÇÕÇÏ´Â ¸ðµç ÆÄÀÏ°ú Æú´õ¸¦ ¿­¶÷ÇÕ´Ï´Ù. À̸§ÀÌ FilePattern¿¡ ºÎÇÕÇÏÁö ¾Ê¾Æµµ ¸ðµç ¼­ºêÆú´õ¸¦ Àç±ÍÇØ µé¾î°©´Ï´Ù.
+ +
+ +

ÆÄÀÏ-ȸµ¹ÀÌ ¾È¿¡¼­ »ç¿ëÇÒ ¼ö Àִ Ưº°ÇÑ º¯¼ö

+

+´ÙÀ½ º¯¼öµéÀº ÆÄÀÏ-ȸµ¹À̶ó¸é ¸ðµÎ Á¸ÀçÇÕ´Ï´Ù. ¾ÈÂÊ ÆÄÀÏ-ȸµ¹ÀÌ°¡ ¹Ù±ù ÆÄÀÏ-ȸµ¹ÀÌ¿¡ µÑ·¯ ½Î¿© ÀÖ´Ù¸é, ¾ÈÂÊ ÆÄÀÏ È¸µ¹ÀÌ°¡ ¿ì¼±±ÇÀÌ ÀÖ½À´Ï´Ù:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
A_LoopFileNameÇöÀç ¿­¶÷µÈ ÆÄÀÏÀ̳ª Æú´õÀÇ À̸§ (°æ·Î ¾øÀ½).
A_LoopFileExtÆÄÀÏ È®ÀåÀÚ (¿¹, TXT, DOC, ¶Ç´Â EXE). ¸¶Ä§Ç¥ (.)´Â Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.
A_LoopFileFullPathÇöÀç ¿­¶÷µÈ ÆÄÀÏ/Æú´õÀÇ Àüü °æ·Î¿Í À̸§. FilePattern¿¡ Àý´ë °æ·Î°¡ ¾Æ´Ï¶ó »ó´ë °æ·Î°¡ ´ã°Ü ÀÖ´Ù¸é, ¿©±â¿¡µµ »ó´ë °æ·Î°¡ ´ã±é´Ï´Ù. °Ô´Ù°¡, FilePatternÀÌ ÂªÀº (8.3) Æú´õ À̸§ÀÌ¸é ¿ª½Ã ªÀº À̸§ÀÌ ´ã±é´Ï´Ù (±ä ¹öÀüÀ» ¾òÀ¸·Á¸é ´ÙÀ½ Ç׸ñÀ» ÂüÁ¶ÇϽʽÿÀ).
A_LoopFileLongPath´ÙÀ½°ú °°Àº Á¡¿¡¼­ A_LoopFileFullPath¿Í ´Ù¸¨´Ï´Ù: +
    +
  1. ¾ðÁ¦³ª ÆÄÀÏÀÇ Àý´ë/¿ÏÀüÇÑ °æ·Î°¡ ´ã±é´Ï´Ù. FilePattern¿¡ Àý´ë °æ·Î°¡ ´ã°Ü À־ »ó°üÀÌ ¾ø½À´Ï´Ù; +
  2. FilePattern ÀÚüÀÇ ÂªÀº (8.3) Æú´õ À̸§Àº ±ä À̸§À¸·Î º¯È¯µË´Ï´Ù; +
  3. FilePattern ¾ÈÀÇ ¹®ÀÚ´Â ÆÄÀÏ ½Ã½ºÅÛ¿¡ ÀúÀåµÈ ´ë¼Ò¹®ÀÚ¿¡ ¸ÂÃß¾î ´ë¹®ÀÚ³ª ¼Ò¹®ÀÚ·Î º¯È¯µË´Ï´Ù . ÀÌ´Â ÆÄÀÏ À̸§À» Ž»ö±â¿¡ º¸À̵íÀÌ Á¤È®ÇÑ °æ·Î À̸§À¸·Î -- ¿¹¸¦ µé¾î ½ºÅ©¸³Æ® ¾È¿¡ ¸í·É ÁÙ ¸Å°³º¯¼ö·Î °Ç³×¾îÁö´Â °æ·Î -- º¯È¯ÇÏ´Â µ¥ À¯¿ëÇÕ´Ï´Ù. +
+
A_LoopFileShortPath

ÇöÀç ¿­¶÷µÈ ÆÄÀÏ/Æú´õÀÇ 8.3 ªÀº °æ·Î¿Í À̸§. ¿¹¸¦ µé¾î: C:\MYDOCU~1\ADDRES~1.txt. FilePattern¿¡ Àý´ë °æ·Î°¡ ¾Æ´Ï¶ó »ó´ë °æ·Î°¡ ´ã±â¸é, ¿©±â¿¡¼­ °æ·Îµµ ¿ª½Ã »ó´ë °æ·Î°¡ µË´Ï´Ù.

+

+ ´ÜÀÏ ÆÄÀÏÀ̳ª Æú´õ¿¡ ´ëÇÏ¿© ¿Ïº®ÇÑ 8.3 °æ·Î¿Í À̸§À» ¿­¶÷ÇÏ·Á¸é, FilePattern¿¡ ±×ÀÇ À̸§À» ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ÁöÁ¤ÇϽʽÿÀ:

+ +
Loop, C:\My Documents\Address List.txt
+    ShortPathName = %A_LoopFileShortPath%
+

+ ÁÖÀÇ: ÀÌ º¯¼ö´Â ÆÄÀÏÀÌ ÂªÀº À̸§ÀÌ ¾ø´Ù¸é ºñ¾î ÀÖ½À´Ï´Ù. ÀÌ·± ÀÏÀº ·¹Áö½ºÆ®¸®¿¡ NtfsDisable8dot3NameCreation°¡ ¼³Á¤µÇ¾î ÀÖ´Â ½Ã½ºÅÛ¿¡¼­ ÀϾ ¼ö ÀÖ½À´Ï´Ù. + ¶Ç FilePattern¿¡ »ó´ë °æ·Î°¡ µé¾î ÀÖ°í ȸµ¹ÀÌÀÇ ¸öü°¡ SetWorkingDir¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡µµ ÀϾ ¼ö ÀÖ½À´Ï´Ù. + ÇöÀç ȸµ¹ÀÌ ÀÚü¿¡ ¿µÇâÀÌ ÀÖ´Â ÇöÀç ÀÛ¾÷ µð·ºÅ丮·ÎºÎÅÍ ´Ù¸¥ µð·ºÅ丮·Î ÀüȯÇÏ¸é ¾ÈµË´Ï´Ù.

A_LoopFileShortName + 8.3 ªÀº À̸§, ¶Ç´Â ÆÄÀÏÀÇ ¶Ç´Ù¸¥ À̸§. ÆÄÀÏ¿¡ ªÀº À̸§ÀÌ ¾ø´Ù¸é (±ä À̸§ÀÌ 8.3º¸´Ù ´õ ª°Å³ª ¶Ç´Â ¾î¼¸é NTFS ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ ªÀº-À̸§ »ý¼ºÀÌ ²¨Á® Àֱ⠶§¹®¿¡), A_LoopFileNameÀÌ ´ë½Å ¿­¶÷µË´Ï´Ù.
A_LoopFileDirA_LoopFileNameÀÌ °ÅÁÖÇÏ´Â µð·ºÅ丮ÀÇ °æ·Î. FilePattern¿¡ Àý´ë °æ·Î°¡ ¾Æ´Ï¶ó »ó´ë °æ·Î°¡ µé¾î ÀÖ´Ù¸é, ¿©±âÀÇ °æ·Îµµ »ó´ë °æ·Î°¡ µË´Ï´Ù. ·çÆ® µð·ºÅ丮´Â µÚ¿¡ ¿ª»ç¼±À» Æ÷ÇÔÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î: C:
A_LoopFileTimeModifiedÆÄÀÏÀÌ ¸¶Áö¸·À¸·Î ¼öÁ¤µÈ ½Ã°¢. Çü½ÄÀº YYYYMMDDHH24MISS.
A_LoopFileTimeCreatedÆÄÀÏÀÌ »ý¼ºµÈ ½Ã°¢. Çü½ÄÀº YYYYMMDDHH24MISS.
A_LoopFileTimeAccessedÆÄÀÏ¿¡ ¸¶Áö¸·À¸·Î Á¢±ÙÇÑ ½Ã°¢. Çü½ÄÀº YYYYMMDDHH24MISS.
A_LoopFileAttribÇöÀç ¿­¶÷µÈ ÆÄÀÏÀÇ ¼Ó¼º.
A_LoopFileSizeÇöÀç ¿­¶÷µÈ ÆÄÀÏÀÇ ¹ÙÀÌÆ® ´ÜÀ§ Å©±â. 4 ±â°¡ ¹ÙÀÌÆ®º¸´Ù Å« ÆÄÀϵµ Áö¿øÇÕ´Ï´Ù.
A_LoopFileSizeKBÇöÀç ¿­¶÷µÈ ÆÄÀÏÀÇ Kbytes ´ÜÀ§ Å©±â, °¡Àå °¡±î¿î Á¤¼ö·Î ¹Ý³»¸²µË´Ï´Ù.
A_LoopFileSizeMBÇöÀç ¿­¶÷µÈ ÆÄÀÏÀÇ Mbytes ´ÜÀ§ Å©±â, °¡Àå °¡±î¿î Á¤¼ö·Î ¹Ý³»¸² µË´Ï´Ù.
+

³íÆò

+

+ÆÄÀÏ È¸µ¹ÀÌ´Â ÆÄÀÏ/Æú´õÀÇ Áý´ÜÀ» ÇÑ ¹ø¿¡ Çϳª¾¿ ó¸®ÇÏ°í ½ÍÀ» ¶§ À¯¿ëÇÕ´Ï´Ù.

+

+¼ûÀº ÆÄÀÏÀ» Æ÷ÇÔÇÏ¿©, ºÎÇÕÇÏ´Â ¸ðµç ÆÄÀÏÀÌ ¿­¶÷µË´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, DIR¿Í °°Àº OS Ư¡Àº ±âº»À¸·Î ¼ûÀº ÆÄÀÏÀ» Á¦¿ÜÇÕ´Ï´Ù. ¼ûÀº, ½Ã½ºÅÛ, ¶Ç´Â Àбâ Àü¿ë ÆÄÀÏÀ» ó¸®ÇÏÁö ¾Êµµ·Ï ÇÏ·Á¸é, ȸµ¹ÀÌ ¾È¿¡ ´ÙÀ½°ú °°Àº Äڵ带 »ç¿ëÇϽʽÿÀ:

+ +
if A_LoopFileAttrib contains H,R,S  ; ¼Ó¼ºÀÌ H (Hidden), R (Read-only), ¶Ç´Â S (System)ÀÎ ÆÄÀÏÀº °Ç³Ê ¶Ý´Ï´Ù. ÁÖÀÇ: "H,R,S"¿¡ ½ºÆäÀ̽º°¡ ¾ø½À´Ï´Ù.
+    continue  ; ÀÌ ÆÄÀÏÀ» °Ç³Ê ¶Ù°í ´ÙÀ½ ÆÄÀÏ·Î °©´Ï´Ù.
+

+ÆÄÀÏÀ» Àç±ÍÀûÀ¸·Î °Ë»öÇÏ´Â µ¿¾È Àý´ë °æ·Î ´ë½Å¿¡ »ó´ë °æ·Î¸¦ ¾òÀ¸·Á¸é, SetWorkingDirÀ» »ç¿ëÇÏ¿© ȸµ¹À̸¦ ½ÃÀÛÇϱâ Àü¿¡ ¸ÕÀú ±âº» Æú´õ·Î º¯°æÇÑ ´ÙÀ½, Loop¿¡¼­´Â ±× °æ·Î¸¦ »ý·«ÇϽʽÿÀ (¿¹, Loop, *.*, 0, 1). ±×·¯¸é A_LoopFileFullPath¿¡ ±× ±âº» Æú´õ¿¡ »ó´ëÀûÀÎ ÆÄÀÏÀÇ °æ·Î°¡ ´ã±é´Ï´Ù.

+

+ÆÄÀÏ-ȸµ¹ÀÌ´Â ÀÚ½ÅÀÇ ¹üÀ§ ¾È¿¡¼­ ÆÄÀÏÀ̳ª Æú´õ¸¦ ¸¸µé°Å³ª À̸§À» ¹Ù²Ü °æ¿ì ½º½º·Î¸¦ È¥¶õ¿¡ ºüÆ®¸± ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, FileMove³ª ±âŸ ¼ö´ÜÀ¸·Î ÆÄÀÏ À̸§À» º¯°æÇÑ´Ù¸é, ±×·± ÆÄÀÏÀº °¢°¢ µÎ ¹ø ¹ß°ßÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù: ÇÑ ¹øÀº ±×ÀÇ ¿¹Àü À̸§À¸·Î ±×¸®°í ´Ù½Ã »õ À̸§À¸·Î ¹ß°ßµË´Ï´Ù. + +À̸¦ ¿ìȸÇÏ·Á¸é, ÆÄÀÏ ¸®½ºÆ®°¡ »ý¼ºµÈ ÈÄ¿¡¸¸ ÆÄÀÏÀÇ À̸§À» ¹Ù²Ù½Ê½Ã¿À. ¿¹¸¦ µé¾î:

+ +
FileList =
+Loop, Files, *.jpg
+   FileList = %FileList%%A_LoopFileName%`n
+Loop, Parse, FileList, `n
+   FileMove, %A_LoopField%, renamed_%A_LoopField%
+

+NTFS ÆÄÀÏ ½Ã½ºÅÛÀÇ ÆÄÀÏÀº ¾Æ¸¶µµ ¾ðÁ¦³ª ¾ËÆĺª ¼ø¼­·Î ¿­¶÷µÉ °ÍÀÔ´Ï´Ù. ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­´Â Ưº°ÇÑ ¼ø»ç°¡ ¾øÀÌ ¿­¶÷µË´Ï´Ù. ƯÁ¤ ¼ø¼­·Î ¿­¶÷ÇÏ·Á¸é, ¾Æ·¡ ¼½¼ÇÀÇ ¿¡Á¦¿¡¼­ º¸¿©ÁÖ´Â °Íó·³ Sort ¸í·É¾î¸¦ »ç¿ëÇϽʽÿÀ.

+

+ÆÄÀÏÀ̳ª Æú´õ À̸§ÀÌ 259 ¹®ÀÚ°¡ ³Ñ¾î°¡¸é ¸¶Ä¡ Á¸ÀçÇÏÁö ¾Ê´Â °Íó·³ °Ç³Ê ¶Ý´Ï´Ù. ±×·± ÆÄÀÏÀº °ÅÀÇ ¾ø½À´Ï´Ù. º¸Åë ¿î¿µ üÁ¦¿¡¼­ ±×·± ÆÄÀÏÀº »ý¼ºÀ» Çã¿ëÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù.

+

+Blocks, Break, Continue, ±×¸®°í A_Index º¯¼ö (¸ðµç À¯ÇüÀÇ È¸µ¹ÀÌ¿¡ Á¸ÀçÇÔ)¿¡ °üÇÑ Á¤º¸´Â Loop¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

Loop, Break, Continue, Blocks, SplitPath, FileSetAttrib, FileSetTime

+ +

¿¹Á¦

+ +
; ¿¹Á¦ #1:
+Loop Files, %A_ProgramFiles%\*.txt, R  ; ¼­ºêÆú´õ ¾ÈÀ¸·Î Àç±ÍÇÕ´Ï´Ù.
+{
+    MsgBox, 4, , Filename = %A_LoopFileFullPath%`n`nContinue?
+    IfMsgBox, No
+        break
+}
+

 

+
; ¿¹Á¦ #2: Æú´õÀÇ Å©±â¸¦ °è»êÇÕ´Ï´Ù. ±×ÀÇ ¼­ºêÆú´õ ¾È¿¡ ÀÖ´Â ÆÄÀϵéÀ» ¸ðµÎ Æ÷ÇÔÇÕ´Ï´Ù:
+SetBatchLines, -1  ; ÃÖ´ë ¼Óµµ·Î ¿¬»êÀ» ½ÇÇàÇÕ´Ï´Ù.
+FolderSizeKB = 0
+FileSelectFolder, WhichFolder  ; »ç¿ëÀÚ¿¡°Ô Æú´õ¸¦ °í¸£µµ·Ï ¿ä±¸ÇÕ´Ï´Ù.
+Loop, Files, %WhichFolder%\*.*, R
+    FolderSizeKB += %A_LoopFileSizeKB%
+MsgBox Size of %WhichFolder% is %FolderSizeKB% KB.
+

 

+
; ¿¹Á¦ #3: À̸§À¸·Î Á¤·ÄµÈ ÆÄÀÏ À̸§µéÀ» ¿­¶÷ÇÕ´Ï´Ù. (´ÙÀ½ ¿¹Á¦´Â ³¯Â¥·Î Á¤·Ä):
+FileList =  ; ºó °ªÀ¸·Î ÃʱâÈ­ÇÕ´Ï´Ù.
+Loop, C:\*.*
+    FileList = %FileList%%A_LoopFileName%`n
+Sort, FileList, R  ; R ¿É¼ÇÀº ¿ª¼øÀ¸·Î Á¤·ÄÇÕ´Ï´Ù. ´Ù¸¥ ¿É¼ÇÀº Sort¸¦ ÂüÁ¶ÇϽʽÿÀ.
+Loop, parse, FileList, `n
+{
+    if A_LoopField =  ; ¸®½ºÆ® ¸Ç ³¡¿¡ ÀÖ´Â ºó Ç׸ñÀº ¹«½ÃÇÕ´Ï´Ù.
+        continue
+    MsgBox, 4,, File number %A_Index% is %A_LoopField%.  Continue?
+    IfMsgBox, No
+        break
+}
+

 

+
; ¿¹Á¦ #4: ¼öÁ¤ ³¯Â¥·Î Á¤·ÄµÈ ÆÄÀÏ À̸§µéÀ» ¿­¶÷ÇÕ´Ï´Ù:
+FileList =
+Loop, Files, %A_MyDocuments%\Photos\*.*, FD  ; ÆÄÀÏ°ú µð·ºÅ丮¸¦ Æ÷ÇÔÇÕ´Ï´Ù
+    FileList = %FileList%%A_LoopFileTimeModified%`t%A_LoopFileName%`n
+Sort, FileList  ; Sort by date.
+Loop, Parse, FileList, `n
+{
+    if A_LoopField =  ; ¸®½ºÆ® ¸Ç ³¡ÀÇ ¸¶Áö¸· ¶óÀÎÇǵå (ºó Ç׸ñ)Àº ¹«½ÃÇÕ´Ï´Ù.
+        continue
+    StringSplit, FileItem, A_LoopField, %A_Tab%  ; ÅÇ ¹®ÀÚ¿¡¼­ µÎ ºÎºÐÀ¸·Î ³ª´¯´Ï´Ù.
+    MsgBox, 4,, The next file (modified at %FileItem1%) is:`n%FileItem2%`n`nContinue?
+    IfMsgBox, No
+        break
+}
+

 

+
; ¿¹Á¦ #5: ¸ñÇ¥ ÆÄÀÏ°ú ºñ±³Çؼ­ ´õ »õ·Î¿î ¼Ò½º ÆÄÀϸ¸ º¹»çÇÕ´Ï´Ù:
+CopyIfNewer:
+; È£ÃâÀÚ´Â º¯¼ö CopySourcePattern°ú CopyDest¸¦ ¿ì¸® ´ë½Å ¼³Á¤ÇØ ÁÝ´Ï´Ù.
+Loop, Files, %CopySourcePattern%
+{
+    copy_it = n
+    IfNotExist, %CopyDest%\%A_LoopFileName%  ; ¸ñÇ¥ ÆÄÀÏÀÌ ¾ÆÁ÷ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é Ç×»ó º¹»çÇÕ´Ï´Ù.
+        copy_it = y
+    else
+    {
+        FileGetTime, time, %CopyDest%\%A_LoopFileName%
+        EnvSub, time, %A_LoopFileTimeModified%, seconds  ; ¸ñÇ¥ ÆÄÀÏÀÇ ½Ã°£À¸·ÎºÎÅÍ ¼Ò½º ÆÄÀÏÀÇ ½Ã°£À» »®´Ï´Ù.
+        if time < 0  ; ¼Ò½º ÆÄÀÏÀº ¸ñÇ¥ ÆÄÀϺ¸´Ù ´õ »õ·Ó½À´Ï´Ù.
+            copy_it = y
+    }
+    if copy_it = y
+    {
+        FileCopy, %A_LoopFileFullPath%, %CopyDest%\%A_LoopFileName%, 1   ;  overwrite=yes¸¦ »ç¿ëÇÏ¿© º¹»çÇÕ´Ï´Ù
+        if ErrorLevel
+            MsgBox, Could not copy "%A_LoopFileFullPath%" to "%CopyDest%\%A_LoopFileName%".
+    }
+}
+Return
+

 

+
; ¿¹Á¦ #6: ¸í·ÉÁÙ ¸Å°³º¯¼ö¸¦ ÅëÇÏ¿© °Ç³×¾îÁø ÆÄÀÏ À̸§À» ±ä À̸§, ¿ÏÀüÇÑ À̸§À¸·Î º¯È¯ÇÕ´Ï´Ù.
+; ±×¸®°í ÆÄÀÏ ½Ã½ºÅÛ¿¡ ÀúÀåµÈ ´ë¼Ò¹®ÀÚ¿¡ ¸Â°Ô À̸§À» ´ë¹®ÀÚ³ª ¼Ò¹®ÀÚ·Î ±³Á¤ÇÕ´Ï´Ù.
+Loop %0%  ; ½ºÅ©¸³Æ®¿¡ ¶³±¸¾îÁø °¢ ÆÄÀÏ¿¡ ´ëÇÏ¿© (¶Ç´Â ¸Å°³º¯¼ö·Î °Ç³×¾îÁø).
+{
+    GivenPath := %A_Index%  ; ´ÙÀ½ ¸í·ÉÁÙ ¸Å°³º¯¼ö¸¦ ¿­¶÷ÇÕ´Ï´Ù.
+    Loop %GivenPath%, 1
+        LongPath = %A_LoopFileLongPath%
+    MsgBox The case-corrected long path name of file`n%GivenPath%`nis:`n%LongPath%
+}
+ + + diff --git a/src/docs/commands/LoopParse.htm b/src/docs/commands/LoopParse.htm new file mode 100644 index 0000000..c4e7742 --- /dev/null +++ b/src/docs/commands/LoopParse.htm @@ -0,0 +1,137 @@ + + + + +Loop (parse a string) + + + + + + + +

Loop (¹®ÀÚ¿­À» Çؼ®ÇÔ)

+ +

+¹®ÀÚ¿­·ÎºÎÅÍ ºÎ¹®ÀÚ¿­(Çʵå)¸¦ ÇÑ ¹ø¿¡ Çϳª¾¿ ¿­¶÷ÇÕ´Ï´Ù.

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

¸Å°³º¯¼ö

+
+ +
Parse
+

ÀÌ °³º¯¼ö´Â ´Ü¾î PARSE¸¸ µË´Ï´Ù. ´Ù¸¥ ȸµ¹ÀÌ À¯Çü°ú ´Ù¸£°Ô, º¯¼ö ÂüÁ¶´Â ´Ü¾î PARSE·Î °áÁ¤µÈ´Ù°í ÇÒÁö¶óµµ Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù.

+ +
InputVar
+
+

³»¿ëÀ» ºÐ¼®ÇÒ º¯¼öÀÇ À̸§. À̸§À» ÆÛ¼¾Æ® »çÀÎÀ¸·Î µÑ·¯ ½ÎÁö ¸¶½Ê½Ã¿À. º¯¼öÀÇ ³»¿ëÀ» À̸§À¸·Î »ç¿ëÇÏ°í ½Í´Ù¸é ¿¹¿ÜÀÔ´Ï´Ù.

+

[v1.1.21+]: ÀÌ ¸Å°³º¯¼ö´Â % Ç¥Çö½ÄÀÌ µÉ ¼ö ÀÖÁö¸¸, ÆÛ¼¾Æ®-½ºÆäÀ̽º Á¢µÎ»ç°¡ ¹Ýµå½Ã »ç¿ëµÇ¾î¾ß ÇÕ´Ï´Ù.

+
+ +
Delimiters
+

ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î Àְųª »ý·«µÇ¸é, InputVarÀÇ °¢ ¹®ÀÚ´Â º°µµÀÇ ºÎ¹®ÀÚ¿­·Î °£Áֵ˴ϴÙ.

+

+ ÀÌ ¸Å°³º¯¼ö°¡ CSVÀ̸é, InputVar´Â Ç¥ÁØÀÇ ½°Ç¥·Î °¡¸¥ °ª Çü½ÄÀ¸·Î Çؼ®µË´Ï´Ù. ´ÙÀ½Àº CSVÁÙÀÇ ¿¹·Î¼­ MS Excel·Î »ý»êÇß½À´Ï´Ù:

+ +
"first field",SecondField,"the word ""special"" is quoted literally",,"last field, has literal comma"
+ +

+ ±×·¸Áö ¾ÊÀ¸¸é, Delimiters¿¡´Â Çϳª ÀÌ»óÀÇ ¹®ÀÚ°¡ ´ã±é´Ï´Ù (´ë¼Ò¹®ÀÚ ±¸º°), °¢ ¹®ÀÚ¸¶´Ù InputVar¿¡¼­ ºÎ¹®ÀÚ¿­ÀÌ ÀϾ´Â °æ°è¸¦ °áÁ¤ÇÕ´Ï´Ù.

+

+ Delimiter ¹®ÀÚµéÀº ºÎ¹®ÀÚ¿­ ÀÚüÀÇ ÀϺηΠ°£ÁÖµÇÁö ¾Ê½À´Ï´Ù. ¶Ç, InputVar ¾È¿¡¼­ ÇÑ ½ÖÀÇ ±¸ºÐÀÚ »çÀÌ¿¡ ¾Æ¹«°Íµµ ¾ø´Ù¸é, »óÀÀÇÏ´Â ¹®ÀÚ¿­Àº ºñ¾î ÀÖ½À´Ï´Ù.

+

¿¹¸¦ µé¾î: `, (ÇÇ½ÅµÈ ½°Ç¥)´Â ¹®ÀÚ¿­À» ½°Ç¥°¡ ÃâÇöÇÒ ¶§¸¶´Ù °¡¸¨´Ï´Ù. ºñ½ÁÇÏ°Ô, %A_Tab%%A_Space%´Â InputVar¿¡¼­ ½ºÆäÀ̽º³ª ÅÇÀ» ¸¸³¯ ¶§¸¶´Ù »õ ¹®ÀÚ¿­À» ½ÃÀÛ½Ãŵ´Ï´Ù.

+

+ ¹®ÀÚ Çϳª°¡ ¾Æ´Ï¶ó ¹®ÀÚ¿­À» ±¸ºÐÀÚ·Î »ç¿ëÇÏ·Á¸é, ¸ÕÀú StringReplace¸¦ »ç¿ëÇØ ÇØ´ç ¹®ÀÚ¿­ÀÌ ³ªÅ¸³ª¸é ¸ðµÎ ÅؽºÆ®¿¡¼­ Àý´ë·Î ¹®ÀÚ ±×´ë·Î »ç¿ëµÇÁö ¾Ê´Â ¹®ÀÚ Çϳª·Î ±³Ã¼ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ÀÇ Æ¯¼ö ¹®ÀÚµé Áß Çϳª: ¢¤¥¦§©ª«®µ¶. ´ÙÀ½ ¿¹Á¦¸¦ ¿¬±¸ÇØ º¸½Ê½Ã¿À. ¹®ÀÚ¿­ <br>À» ±¸ºÐÀÚ·Î »ç¿ëÇÕ´Ï´Ù:

+ +
StringReplace, NewHTML, HTMLString, <br>, ¢, All
+Loop, parse, NewHTML, ¢ ; ¼¾Æ® ½Éº¼¿¡ ±â¹ÝÇÏ¿© ¹®ÀÚ¿­À» Çؼ®ÇÕ´Ï´Ù.
+{
+...
+}
+ +
OmitChars
+

+ °¢ ºÎ¹®ÀÚ¿­ÀÇ ¼±µÎ¿Í ÈĹ̿¡¼­ ¹èÁ¦ÇÒ ¹®ÀÚÀÇ (¼±ÅÃÀû) ¸®½ºÆ® (´ë¼Ò¹®ÀÚ ±¸ºÐ). ¿¹¸¦ µé¾î, OmitChars°¡ %A_Space%%A_Tab%À̸é, ½ºÆäÀ̽º¿Í ÅÇÀÌ ¿­¶÷µÈ ¸Å ºÎ¹®ÀÚ¿­·ÎºÎÅÍ ¼±µÎ¿Í ÈĹ̿¡¼­ Á¦°ÅµË´Ï´Ù (°¡¿îµ¥´Â ¾Æ´Ô).

+

+ Delimiters°¡ ºñ¾î ÀÖÀ¸¸é, OmitChars´Â °í·Á ´ë»ó¿¡¼­ ¹èÁ¦ÇÒ ¹®ÀÚµéÀ» °¡¸®Åµ´Ï´Ù (ȸµ¹ÀÌ´Â ±×·± ¹®ÀÚµéÀ» º¸Áö ¸øÇÕ´Ï´Ù).

+

+ ´ëºÎºÐÀÇ ´Ù¸¥ ¸í·É¾îÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö¿Í ´Ù¸£°Ô, OmitChars¿¡¼­ ½°Ç¥´Â ¹Ýµå½Ã ÇǽŽÃÄÑ¾ß ÇÕ´Ï´Ù (`,).

+ +
+ +

³íÆò

+

+¹®ÀÚ¿­ ÆÄ½Ì È¸µ¹ÀÌ´Â ¹®ÀÚ¿­¿¡ µé¾î ÀÖ´Â °¢ Çʵ带 ÇÑ ¹ø¿¡ Çϳª¾¿ ó¸®ÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù. (StringSplitÀº ¿µ±¸ÀûÀÎ ÀÇ»ç-¹è¿­À» »ý¼ºÇϱ⠶§¹®¿¡) ÆÄ½Ì È¸µ¹ÀÌ´Â StringSplit º¸´Ù ¸Þ¸ð¸®¸¦ ´ú »ç¿ëÇÏ°í ´ëºÎºÐÀÇ °æ¿ì ´õ »ç¿ëÇϱ⠽±½À´Ï´Ù.

+

+³»Àå º¯¼ö A_LoopField´Â ¸ðµç ÆÄ½Ì È¸µ¹ÀÌ ¾È¿¡ Á¸ÀçÇÕ´Ï´Ù. ¾È¿¡ InputVar·ÎºÎÅÍ ÆĽÌÇÑ ÇöÀçÀÇ ºÎ¹®ÀÚ¿­(Çʵå)°¡ µé¾î ÀÖ½À´Ï´Ù. ³»ºÎ ÆÄ½Ì È¸µ¹ÀÌ°¡ ¹Ù±ù ÆÄ½Ì È¸µ¹ÀÌ·Î µÑ·¯ ½Î¿© ÀÖ´Ù¸é ³»ºÎ ȸµ¹ÀÌÀÇ Çʵ尡 ¿ì¼± ¼øÀ§°¡ ³ô½À´Ï´Ù.

+

+³»Àå º¯¼ö "A_LoopDelimiter"´Â ÀüÇô ¾øÁö¸¸, ÀÌ ÆäÀÌÁö ¸Ç ¾Æ·¡ ¿¹Á¦´Â °¢ Çʵ帶´Ù ¾î´À ±¸ºÐÀÚ¸¦ »ç¿ëÇÏ°í ÀÖ´Â º¸¿©ÁÝ´Ï´Ù.

+

+InputVarÀÇ Å©±â ¶Ç´Â ±×ÀÇ ÇʵåÀÇ Å©±â¿¡´Â Á¦ÇÑÀÌ ¾ø½À´Ï´Ù. °Ô´Ù°¡, InputVarÀÇ ³»¿ëÀÌ È¸µ¹À̸¦ ½ÇÇàÇÏ´Â µ¿¾È¿¡ ¹Ù²ï´Ù¸é, ±× ȸµ¹ÀÌ´Â ±× º¯È­¸¦ "º¸Áö ¸øÇÕ´Ï´Ù". ¿Ö³ÄÇÏ¸é ¿ø·¡ ³»¿ëÀÇ Àӽà »çº»À» ó¸®ÇÏ°í Àֱ⠶§¹®ÀÔ´Ï´Ù.

+

+Çؼ®Çϱâ Àü¿¡ Çʵ带 ´Ù¸¥ ¼ø¼­·Î Á¤µ·ÇÏ·Á¸é, Sort ¸í·É¾î¸¦ »ç¿ëÇϽʽÿÀ.

+

+Blocks, Break, Continue, ±×¸®°í A_Index º¯¼ö (¸ðµç ȸµ¹ÀÌ¿¡ Á¸Àç)¿¡ °üÇÑ Á¤º¸´Â Loop¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

+StringSplit, file-reading loop, Loop, Break, Continue, Blocks, Sort, FileSetAttrib, FileSetTime

+ +

¿¹Á¦

+ +
; ¿¹Á¦ #1:
+Colors = red,green,blue
+Loop, parse, Colors, `,
+{
+    MsgBox, Color number %A_Index% is %A_LoopField%.
+}
+

 

+ +
; ¿¹Á¦ #2: º¯¼ö ¾È¿¡ ÁÙµéÀ» Çϳª¾¿ ÀÐ¾î µéÀÔ´Ï´Ù (ÆÄÀÏ-Àбâ ȸµ¹ÀÌ¿Í À¯»ç).
+; FileRead¸¦ ÅëÇÏ¿© ÆÄÀÏÀ» º¯¼ö ¾È¿¡ ÀûÀçÇÒ ¼ö ÀÖ½À´Ï´Ù:
+Loop, parse, FileContents, `n, `r  ; `nÀ» ¸ÕÀú `rÀ» ´ÙÀ½¿¡ ÁöÁ¤ÇØ¾ß Windows¿Í Unix ÆÄÀÏÀ» ¸ðµÎ Çؼ®ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+{
+    MsgBox, 4, , Line number %A_Index% is %A_LoopField%.`n`nContinue?
+    IfMsgBox, No, break
+}
+

 

+
; ¿¹Á¦ #3: À§ÀÇ ¿¹Á¦¿Í °°Áö¸¸ Ŭ¸³º¸µå¿ëÀÔ´Ï´Ù.
+; Ŭ¸³º¸µå¿¡ ÆÄÀÏÀÌ ´ã°Ü ÀÖÀ» ¶§ À¯¿ëÇÕ´Ï´Ù. ±×·± ÆÄÀÏÀº º¸Åë Ž»öâÀ¸·ÎºÎÅÍ º¹»çµË´Ï´Ù 
+; (ÇÁ·Î±×·¥Àº ÀÚµ¿À¸·Î ±×·± ÆÄÀÏÀ» ±×µéÀÇ ÆÄÀÏ À̸§À¸·Î º¯È¯ÇÕ´Ï´Ù):
+Loop, parse, clipboard, `n, `r
+{
+    MsgBox, 4, , File number %A_Index% is %A_LoopField%.`n`nContinue?
+    IfMsgBox, No, break
+}
+

 

+
; Example #4: ½°Ç¥·Î °¡¸¥ °ª (CSV) ÆÄÀÏÀ» Çؼ®ÇÕ´Ï´Ù:
+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
+    }
+}
+

 

+
; ¿¹Á¦ #5: ¾î´À ±¸ºÐÀÚ¿¡ ¸¶ÁÖÇß´ÂÁö ¾Ë¾Æ³»±â.
+
+; °Ë»öÇÒ ¹®ÀÚ¿­À» ÃʱâÈ­ ÇÕ´Ï´Ù.
+Colors = red,green|blue;yellow|cyan,magenta
+; ¹®ÀÚ¿­¿¡¼­ À§Ä¡¸¦ ÃßÀûÇÒ °è¼ö¸¦ ÃʱâÈ­ÇÕ´Ï´Ù.
+Position := 0
+
+Loop, Parse, Colors, `,|;
+{
+    ; ÀÌ ÇʵåÀÇ ³¡¿¡¼­ ±¸ºÐÀÚÀÇ À§Ä¡¸¦ °è»êÇÕ´Ï´Ù.
+    Position += StrLen(A_LoopField) + 1
+    ; Çؼ® ȸµ¹ÀÌ°¡ ¹ß°ßÇÑ ±¸ºÐÀÚ¸¦ ¿­¶÷ÇÕ´Ï´Ù.
+    Delimiter := SubStr(Colors, Position, 1)
+
+    MsgBox Field: %A_LoopField%`nDelimiter: %Delimiter%
+}
+ + + diff --git a/src/docs/commands/LoopReadFile.htm b/src/docs/commands/LoopReadFile.htm new file mode 100644 index 0000000..5a40f08 --- /dev/null +++ b/src/docs/commands/LoopReadFile.htm @@ -0,0 +1,164 @@ + + + + +Loop (read file contents) + + + + + + + +

Loop (ÆÄÀÏ ³»¿ë Àбâ)

+ +

ÅؽºÆ® ÆÄÀÏ¿¡¼­ ÇÑ ¹ø¿¡ ÇÑ ÁÙ¾¿ ¿­¶÷ÇÕ´Ï´Ù (FileReadLineº¸´Ù ¼öÇ༺´ÉÀÌ ÁÁ½À´Ï´Ù).

+ +
Loop, Read, InputFile [, OutputFile]
+

¸Å°³º¯¼ö

+
+ +
Read
+

ÀÌ ¸Å°³º¯¼ö´Â ¹Ýµå½Ã ´Ü¾î READÀ̾î¾ß ÇÕ´Ï´Ù.

+ +
InputFile
+

±×ÀÇ ³»¿ëÀÌ È¸µ¹ÀÌ¿¡ ÀÐÇô Áú ÅؽºÆ® ÆÄÀÏÀÇ À̸§. Àý´ë °æ·Î°¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ. Windows¿Í Unix Çü½ÄÀ» Áö¿øÇÕ´Ï´Ù; Áï, ÆÄÀÏ ÁÙÀº ij¸®Áö ¸®ÅÏ°ú ¶óÀÎÇǵå·Î (`r`n) ³¡³ª°Å³ª ¾Æ´Ï¸é ±×³É ¶óÀÎÇǵå·Î (`n) ³¡³¯ ¼ö ÀÖ½À´Ï´Ù.

+ +
OutputFile
+

(¼±ÅÃÀû) ȸµ¹À̸¦ ÇÏ´Â µ¿¾È ¿­¾î µÑ ÆÄÀÏÀÇ À̸§. Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ.

+

ȸµ¹ÀÌ ¸öü ¾È¿¡¼­ ¸Å°³ º¯¼ö Çϳª¸¸ (¾º¿©Áú ÅؽºÆ®¸¸) °¡Áö°í FileAppend ¸í·É¾î¸¦ »ç¿ëÇϸé ÀÌ Æ¯º°ÇÑ ÆÄÀÏ¿¡ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± ¹æ½ÄÀ¸·Î ÆÄÀÏ¿¡ Ãß°¡Çϸé FileAppend¸¦ ¸Å°³º¯¼ö 2 °³¿Í ÇÔ²² »ç¿ëÇÏ´Â °Íº¸´Ù ´õ ¼öÇ༺´ÉÀÌ ÁÁ½À´Ï´Ù. ¿Ö³ÄÇϸé ÆÄÀÏÀ» °¢ ¿¬»ê¸¶´Ù ´Ý°í ´Ù½Ã ¿­ ÇÊ¿ä°¡ ¾ø±â ¶§¹®ÀÔ´Ï´Ù. ÀØÁö ¸»°í ÅؽºÆ® ³¡¿¡ ¶óÀÎÇǵ带 (`n) Ãß°¡ÇϽʽÿÀ.

+

+ ¾Æ¹«°Íµµ ¾º¿©ÁöÁö ¾ÊÀ¸¸é ÆÄÀÏÀº ¿­¸®Áö ¾Ê½À´Ï´Ù. ÀÌ·± ÀÏÀº Loop°¡ ÀüÇô ¹Ýº¹À» ¼öÇàÇÏÁö ¾Ê°Å³ª FileAppend ¸í·É¾î¸¦ ÀüÇô »ç¿ëÇÏÁö ¾ÊÀ» ¶§ ÀϾ´Ï´Ù.

+

+ ÀÌÁø ¸ðµå: ÅؽºÆ® ¸ðµå°¡ ¾Æ´Ï¶ó ÀÌÁø ¸ðµå·Î Ãß°¡ÇÏ·Á¸é, ÆÄÀÏ À̸§ ¾Õ¿¡ º°Ç¥¸¦ ¹èÄ¡ÇϽʽÿÀ. ÀÌ·¸°Ô ÇÏ¸é °¢ ¶óÀÎÇÇµå ¹®ÀÚ°¡ (`n) À©µµ¿ìÁîÀÇ Ç¥ÁØ CR+LF°¡ ¾Æ´Ï¶ó ´ÜÀÏ ¶óÀÎÇǵå·Î ¾º¿©Áý´Ï´Ù (LF). ¿¹¸¦ µé¾î: *C:\My Unix File.txt. º°Ç¥°¡ ¾ø´õ¶óµµ, FileAppend¸¦ óÀ½ »ç¿ëÇÒ ¶§ Loop¿¡¼­ ij¸®Áö ¸®ÅÏ°ú ¶óÀÎÇǵ带 ¾²¸é (`r`n) ÀÌÁø ¸ðµå°¡ ÀÚµ¿À¸·Î ÄÑÁý´Ï´Ù(?).

+

+ Ç¥ÁØ Ãâ·Â (stdout): º°Ç¥¸¦ (*) OutputFile¿¡ ÁöÁ¤Çϸé FileAppend°¡ ¾²´Â ¸ðµç ÅؽºÆ®´Â Ç¥ÁØ Ãâ·ÂÀ¸·Î Àü¼ÛµË´Ï´Ù (stdout). ±×·± Ãâ·ÂÀ» ÆÄÀÏ¿¡ ¹æÇâÀüȯÇϰųª, ¶Ç´Ù¸¥ EXE·Î ÆÄÀÌÇÁ ó¸®Çϰųª, ¶Ç´Â ¸ÚÁø ÅؽºÆ® ÆíÁý±â·Î ³ªÆ÷ÇÒ ¼ö´Â ÀÖÁö¸¸, ±âµ¿µÈ ¸í·É¾î ÇÁ·ÒÇÁÆ®¿¡ ½ºÅ©¸³Æ®°¡ ³ªÅ¸³ªÁö ¾Ê½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ °ÍÀº FileAppend¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ ÇÇ½ÅµÈ ½°Ç¥: ´ëºÎºÐÀÇ ´Ù¸¥ ¸í·É¾îÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö¿Í ´Ù¸£°Ô, OutputFile¿¡¼­ ½°Ç¥´Â ¹Ýµå½Ã ÇǽŽÃÄÑ¾ß ÇÕ´Ï´Ù (`,).

+ +
+ +

³íÆò

+

+ÆÄÀÏ-Àбâ ȸµ¹ÀÌ´Â ÅؽºÆ® ÆÄÀÏ¿¡ µç °¢ ÁÙÀ» ÇÑ ¹ø¿¡ Çϳª¾¿ ó¸®ÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù. FileReadLineÀ» »ç¿ëÇÏ´Â °Íº¸´Ù ´õ ¼öÇ༺´ÉÀÌ ÁÁ½À´Ï´Ù. ¿Ö³ÄÇá¸é: 1) ¿¬»ê ±â°£µ¿¾È ÆÄÀÏÀÌ ¿­¸° »óÅ·ΠÀÖÀ» ¼ö ÀÖ½À´Ï´Ù; ±×¸®°í 2) ±× ÆÄÀÏÀº ¿äûµÈ ÁÙ ¹øÈ£Ãú ã±â À§ÇØ ¸Å¹ø ´Ù½Ã ½ºÄµÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+³»Àå º¯¼ö A_LoopReadLineÀº ¸ðµç ÆÄÀÏ-Àбâ ȸµ¹ÀÌ ¾È¿¡ Á¸ÀçÇÕ´Ï´Ù. ¾È¿¡ ÇöÀç ÁÙÀÇ ³»¿ëÀÌ ´ã°Ü ÀÖ½À´Ï´Ù. ÁÙ ³¡À» Ç¥½ÄÇϴ ij¸®Áö ¸®ÅÏ°ú ¶óÀÎÇǵå´Â Á¦¿ÜµÇ¾î ÀÖ½À´Ï´Ù (`r`n). ³»ºÎ ÆÄÀÏ-Àбâ ȸµ¹ÀÌ°¡ ¹Ù±ù ÆÄÀÏ-Àбâ ȸµ¹ÀÌ·Î µÑ·¯ ½Î¿© ÀÖ´Ù¸é, °¡Àå ¾ÈÂÊ È¸µ¹ÀÌÀÇ ÆÄÀÏ-ÁÙÀÌ ¿ì¼± ¼øÀ§¸¦ °®½À´Ï´Ù.

+

+ÁÙ ´ç 65,534 ¹®ÀÚ ±æÀ̱îÁö ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù. ÁÙ ±æÀÌ°¡ ÀÌ Á¦ÇÑÀ» ÃÊ°úÇϸé, ³ª¸ÓÁö ¹®ÀÚµéÀ» ´ÙÀ½ ȸµ¹ÀÌ ¶§ ÀÐÈü´Ï´Ù.

+

+InputFileÀ¸·ÎºÎÅÍ ¿­¶÷µÈ °¢ ÁÙÀÇ ³»¿ëÀ» ºÐÇØÇϱâ À§ÇØ StringSplit ¶Ç´Â ÆÄ½Ì È¸µ¹ÀÌ°¡ Á¾Á¾ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î, InputFileÀÇ °¢ ÁÙÀÌ ÅÇÀ¸·Î-±¸ºÐµÈ ÀÏ·ÃÀÇ Çʵå·Î ±¸¼ºµÇ¾î ÀÖ´Ù¸é, ±× ÇʵåµéÀº ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ °³º°ÀûÀ¸·Î ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
Loop, read, C:\Database Export.txt
+{
+    Loop, parse, A_LoopReadLine, %A_Tab%
+    {
+        MsgBox, Field number %A_Index% is %A_LoopField%.
+    }
+}
+

+Àüü ÆÄÀÏÀ» º¯¼ö ¾ÈÀ¸·Î ÀûÀçÇÏ·Á¸é, FileRead¸¦ »ç¿ëÇϽʽÿÀ. ¿Ö³ÄÇϸé ȸµ¹À̺¸´Ù ¼öÇ༺´ÉÀÌ (ƯÈ÷ ¹æ´ëÇÑ ÆÄÀÏ¿¡ ´ëÇÏ¿©) ÈξÀ ´õ ÁÁ±â ¶§¹®ÀÔ´Ï´Ù.

+

+¿©·¯ ÆÄÀÏÀ» µ¿½Ã¿¡ ¿­·Á¸é, ´ÙÀ½ ¿¹Á¦¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ DllCall()¸¦ »ç¿ëÇϽʽÿÀ.

+

+Blocks, Break, Continue, ±×¸®°í (¸ðµç À¯ÇüÀÇ È¸µ¹ÀÌ¿¡ Á¸ÀçÇÏ´Â) A_Index º¯¼ö¿¡ °üÇÑ Á¤º¸´Â Loop¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+¹ÙÀÌÆ® ¼ø¼­ Ç¥½ÄÀÌ ¾øÀ» ¶§ ÆÄÀÏÀ» ¾î¶»°Ô µðÄÚµåÇÒÁö Á¦¾îÇÏ·Á¸é FileEncodingÀ» »ç¿ëÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

FileEncoding, FileOpen/File Object, FileRead, FileReadLine, FileAppend, Sort, Loop, Break, Continue, Blocks, FileSetAttrib, FileSetTime

+ +

¿¹Á¦

+
; ¿¹Á¦ #1: 1st ÆÄÀÏ¿¡¼­ ´Ü¾î FAMILY°¡ µç Áٵ鸸 2nd ÆÄÀÏ¿¡ ¾º¿©Áý´Ï´Ù.
+; ±âÁ¸ÀÇ ÆÄÀÏ¿¡ Ãß°¡ÇÏ´Â°Ô ¾Æ´Ï¶ó µ¤¾î¾²·Á¸é ù ÁÙÀ» ÁÖ¼® ÇØÁ¦ÇϽʽÿÀ.
+;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
+}
+

 

+
; ¿¹Á¦ #2: ÅؽºÆ® ÆÄÀϷκÎÅÍ ¸¶Áö¸· ÁÙÀ» ¿­¶÷ÇÕ´Ï´Ù.
+Loop, read, C:\Log File.txt
+    last_line := A_LoopReadLine  ; ȸµ¹ÀÌ°¡ ³¡³¯ ¶§, ¿©±â¿¡ ±× ¸¶Áö¸· ÁÙÀ» º¸À¯ÇÕ´Ï´Ù.
+

 

+
; ¿¹Á¦ #3: ´ÙÀ½ ½ºÅ©¸³Æ®´Â HTMLÀ̳ª ÅؽºÆ® ÆÄÀϷκÎÅÍ
+; FTP¿Í HTTPÀÇ URLÀ» ¸ðµÎ ÃßÃâÇÏ·Á°í ½ÃµµÇÕ´Ï´Ù:
+FileSelectFile, SourceFile, 3,, Pick a text or HTML file to analyze.
+if SourceFile =
+    return  ; ÀÌ °æ¿ì Á¾·áÇÕ´Ï´Ù.
+
+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:
+; ´ÙÀ½°ú °°ÀÌ Æ¯º°ÇÑ ¹æ½ÄÀ¸·Î 󸮵˴ϴÙ. ¿Ö³ÄÇÏ¸é ¾î¶² URLÀº ´Ù¸¥ URLÀ» ÀڽŠ¾È¿¡ ³»ÀåÇϱ⠶§¹®ÀÔ´Ï´Ù:
+StringGetPos, URLStart1, URLSearchString, http://
+StringGetPos, URLStart2, URLSearchString, ftp://
+StringGetPos, URLStart3, URLSearchString, www.
+
+; °¡Àå ¿ÞÂÊÀÇ ½ÃÀÛ ÁöÁ¡À» ã½À´Ï´Ù:
+URLStart = %URLStart1%  ; ±âº» ½ÃÀÛ ÁöÁ¡À» ¼³Á¤ÇÕ´Ï´Ù.
+Loop
+{
+    ; "URLStart%A_Index%"¸¦ ÇÑ ¹ø¸¸ °áÁ¤Çϸé
+    ; (Àû¾îµµ ¸¹Àº º¯¼ö°¡ ÀÖ´Â ½ºÅ©¸³Æ®¿¡¼­) ¼öÇ༺´ÉÀÌ Çâ»óµË´Ï´Ù
+    ArrayElement := URLStart%A_Index%
+    if ArrayElement =  ; ÀÇ»ç-¹è¿­ÀÇ ³¡¿¡ µµ´ÞÇß½À´Ï´Ù.
+        break
+    if ArrayElement = -1  ; ÀÌ ¿ä¼Ò´Â ÀÚ°ÝÀÌ ¾ø½À´Ï´Ù.
+        continue
+    if URLStart = -1
+        URLStart = %ArrayElement%
+    else ; URLStart´Â ¾È¿¡ À¯È¿ÇÑ À§Ä¡¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.. ±×·¡¼­ ±×°ÍÀ» ArrayElement¿Í ºñ±³ÇÕ´Ï´Ù.
+    {
+        if ArrayElement <> -1
+            if ArrayElement < %URLStart%
+                URLStart = %ArrayElement%
+    }
+}
+
+if URLStart = -1  ; URLÀÌ URLSearchString¿¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.
+    return
+
+; ±×·¸Áö ¾ÊÀ¸¸é, ÀÌ URLÀ» ÃßÃâÇÕ´Ï´Ù:
+StringTrimLeft, URL, URLSearchString, %URLStart%  ; ½ÃÀÛ/ºÎÀûÀý ºÎºÐÀ» Á¦°ÅÇÕ´Ï´Ù.
+Loop, parse, URL, %A_Tab%%A_Space%<>  ; (ÀÖ´Ù¸é) ù ¹ø° ½ºÆäÀ̽º, ÅÇ, ¶Ç´Â ¾Þ±Û ¹®ÀÚ¸¦ ã½À´Ï´Ù.
+{
+    URL = %A_LoopField%
+    break  ; Áï, ù ¹ø° "Çʵå"¸¦ °¡Á® ¿À±â À§ÇØ ¿ÀÁ÷ ÇÑ ¹ø¸¸ ȸµ¹À̸¦ ¼öÇàÇÕ´Ï´Ù.
+}
+; Á¾·á ¹®ÀÚ°¡ ¹ß°ßµÇÁö ¾Ê¾Æ¼­ À§ÀÇ È¸µ¹ÀÌ¿¡ ¹Ýº¹ÀÌ ¾ø´Ù¸é,
+; URL º¯¼öÀÇ ³»¿ëÀ» ±×´ë·Î µÓ´Ï´Ù.
+
+; URLÀÌ °ãµû¿ÈÇ¥·Î ³¡³ª¸é, °ãµû¿ÈÇ¥¸¦ Á¦°ÅÇÕ´Ï´Ù. Áö±Ý ´çÀåÀº StringReplace°¡ »ç¿ëµË´Ï´Ù.
+; ±×·¯³ª °ãµû¿ÈÇ¥°¡ URL ¾È¿¡ Á¸ÀçÇصµ À¯È¿ÇÑ °Í °°½À´Ï´Ù.
+; ±×·¡¼­ Á¦°ÅÇÏ¸é ¼Õ»óÀ» ÀÔÈú ¼öµµ ÀÖ½À´Ï´Ù:
+StringReplace, URLCleansed, URL, ",, All
+FileAppend, %URLCleansed%`n
+LinkCount += 1
+
+; ÀÌ ÁÙ¿¡ ´Ù¸¥ URLµéÀÌ ÀÖ´Â ¾Ë¾Æ º¾´Ï´Ù:
+StringLen, CharactersToOmit, URL
+CharactersToOmit += %URLStart%
+StringTrimLeft, URLSearchString, URLSearchString, %CharactersToOmit%
+Gosub, URLSearch  ; Àڽſ¡°Ô Àç±Í È£ÃâÀ» ÇÕ´Ï´Ù.
+return
+ + + diff --git a/src/docs/commands/LoopReg.htm b/src/docs/commands/LoopReg.htm new file mode 100644 index 0000000..39e42f8 --- /dev/null +++ b/src/docs/commands/LoopReg.htm @@ -0,0 +1,182 @@ + + + + +Loop (registry) + + + + + + + +

Loop (·¹Áö½ºÆ®¸®)

+ +

ÁöÁ¤µÈ ·¹Áö½ºÆ®¸® ¼­ºêÅ°ÀÇ ³»¿ëÀ» ÇÑ ¹ø¿¡ Çϳª¾¿ ¿­¶÷ÇÕ´Ï´Ù.

+ +
Loop, Reg, RootKey[\Key, Mode]  ; v1.1.21+ (̵̧)
+
Loop, RootKey [, Key, IncludeSubkeys?, Recurse?]
+

¸Å°³º¯¼ö

+
+ +
Reg [v1.1.21+]
+

¹®ÀÚ ±×´ë·ÎÀÇ ´Ü¾î Reg (´ë¼Ò¹®ÀÚ ±¸ºÐ). ÀÌ°ÍÀº º¯¼ö ¶Ç´Â Ç¥Çö½ÄÀÌ µÇ¸é ¾ÈµË´Ï´Ù. ÀÌ Å°¿öµå°¡ Á¸ÀçÇϸé, Key´Â ¹Ýµå½Ã ½°Ç¥ ´ë½Å¿¡ Á¤»ç¼±À¸·Î RootKey¿Í ºÐ¸®ÇØ¾ß ÇÕ´Ï´Ù. µÑ ¸ðµÎ ÇϳªÀÇ º¯¼ö¿¡ ´ã±æ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Loop, Reg, HKLM\Software ¶Ç´Â Loop, Reg, %FullPathOfKey%.

+ +
RootKey
+

HKEY_LOCAL_MACHINE (HKLM), HKEY_USERS (HKU), HKEY_CURRENT_USER (HKCU), HKEY_CLASSES_ROOT (HKCR), ¶Ç´Â HKEY_CURRENT_CONFIG (HKCC) Áß Çϳª°¡ µÇ¾î¾ß ÇÕ´Ï´Ù.

+

¿ø°Ý ·¹Áö½ºÆ®¸®¿¡ Á¢±ÙÇÏ·Á¸é, ÄÄÇ»ÅÍ À̸§°ú ½ÖÁ¡À» ¾Õ¿¡ ¹èÄ¡ÇϽʽÿÀ. ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ: \\workstation01:HKEY_LOCAL_MACHINE

+ +
Key
+

Å°ÀÇ À̸§ (¿¹, Software\SomeApplication). ºñ¾î Àְųª »ý·«Çϸé, RootKeyÀÇ ³»¿ëÀÌ ¿­¶÷µË´Ï´Ù.

+ +
Mode [v1.1.21+]
+

´ÙÀ½ ±âÈ£·Î ±¸¼ºµË´Ï´Ù:

+

K: Å°¸¦ Æ÷ÇÔÇÕ´Ï´Ù.
+ V: °ªÀ» Æ÷ÇÔÇÕ´Ï´Ù. K¿Í V¸¦ ¸ðµÎ »ý·«ÇÏ¸é °ªµéµµ Æ÷ÇԵ˴ϴÙ.
+ R: ÇÏÀ§Å°·Î Àç±ÍÇØ µé¾î°©´Ï´Ù. RÀÌ »ý·«µÇ¸é, KeyÀÇ ÇÏÀ§Å°ÀÇ Å°¿Í °ªÀº Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.

+
+ +
IncludeSubkeys?
+

0 (±âº»°ª) Key ¾È¿¡ Æ÷ÇÔµÈ ÇÏÀ§Å°´Â ¿­¶÷ÇÏÁö ¾Ê½À´Ï´Ù (¿ÀÁ÷ °ª¸¸ ¿­¶÷ÇÕ´Ï´Ù).
+ 1 ¸ðµç °ªµé°ú ÇÏÀ§Å°¸¦ ¿­¶÷ÇÕ´Ï´Ù.
+ 2 ÇÏÀ§Å°¸¸ ¿­¶÷ÇÕ´Ï´Ù (°ªÀº ¿­¶÷ÇÏÁö ¾Ê½À´Ï´Ù).

+ +
Recurse?
+
0 (±âº»°ª) ÇÏÀ§Å°¿¡ Àç±ÍÇÏÁö ¾Ê½À´Ï´Ù.
+1 ÇÏÀ§Å°¿¡ Àç±ÍÇØ µé¾î°©´Ï´Ù. ±×·¡¼­ ±× ¾È¿¡ Æ÷ÇÔµÈ ¸ðµç °ª°ú Å°¸¦ ¿­¶÷ÇÕ´Ï´Ù.
+ +
+ +

³íÆò

+

+·¹Áö½ºÆ®¸®-ȸµ¹ÀÌ´Â ·¹Áö½ºÆ®¸® °ª ¶Ç´Â ÇÏÀ§Å°ÀÇ Áý´ÜÀ» ÇÑ ¹ø¿¡ Çϳª¾¿ ó¸®ÇÏ°í ½ÍÀ» ¶§ À¯¿ëÇÕ´Ï´Ù. °ª°ú ÇÏÀ§Å°´Â ¿ª¼øÀ¸·Î (¾Æ·¡¿¡¼­ À§·Î) ¿­¶÷µÇ¹Ç·Î ȸµ¹À̸¦ ¹æÇØÇÏÁö ¾Ê°í ȸµ¹ÀÌ ¾È¿¡ RegDelete¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

´ÙÀ½ º¯¼öµéÀÌ ·¹Áö½ºÆ®¸®-ȸµ¹ÀÌ ¾È¿¡ Á¸ÀçÇÕ´Ï´Ù. ³»ºÎ ·¹Áö½ºÆ®¸®-ȸµ¹ÀÌ°¡ ¿ÜºÎ ·¹Áö½ºÆ®¸®-ȸµ¹ÀÌ ¾È¿¡ ½Î¿© ÀÖ´Ù¸é, ³»ºÎ ȸµ¹ÀÌÀÇ ·¹Áö½ºÆ®¸® Ç׸ñÀÌ ¿ì¼± ¼øÀ§¸¦ °®½À´Ï´Ù:

+ + + + + + + + + + + + + + + + + + + + + +
A_LoopRegNameÇöÀç ¿­¶÷µÈ Ç׸ñÀÇ À̸§. °ª À̸§ ¶Ç´Â ÇÏÀ§Å°ÀÇ À̸§ Áß ÇϳªÀÔ´Ï´Ù. + °ª À̸§¿¡ °ªÀÌ ÇÒ´çµÇ¾î ÀÖÀ¸¸é Windows RegEditÀÌ "(Default)"·Î º¸¿©ÁÖ´Â °ª À̸§ÀÌ ¿­¶÷µË´Ï´Ù. ±×·¯³ª A_LoopRegName´Â °ª À̸§¿¡ ´ëÇÏ¿© ºñ¿öÁý´Ï´Ù.
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ÇöÀç SubKeyÀÇ À̸§. ÀÌ Å°´Â Key ¸Å°³º¯¼ö¿Í °°½À´Ï´Ù. ´Ü, Recurse ¸Å°³º¯¼ö°¡ Àç±ÍÀûÀ¸·Î ´Ù¸¥ ÇÏÀ§Å°µéÀ» ŽÇèÇÏ´Â µ¥ »ç¿ëÁßÀÌ¸é ¿¹¿ÜÀÔ´Ï´Ù. ±×·± °æ¿ì¶ó¸é, ÇöÀç ¿­¶÷µÈ Ç׸ñÀÇ Àüü °æ·ÎÀÔ´Ï´Ù. ·çÆ® Å°¸¦ Æ÷ÇÔÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î: Software\SomeApplication\My SubKey
A_LoopRegTimeModifiedÇöÀç ÇÏÀ§Å° ¶Ç´Â ±×ÀÇ °ªÀÌ ¸¶Áö¸·À¸·Î º¯°æµÈ ½Ã°£. Çü½ÄÀº YYYYMMDDHH24MISSÀÔ´Ï´Ù. ÀÌ º¯¼ö´Â ÇöÀç ¿­¶÷µÈ Ç׸ñÀÌ ÇÏÀ§Å°°¡ ¾Æ´Ï¸é ºñ¾î ÀÖ½À´Ï´Ù (Áï, A_LoopRegType´Â ´Ü¾î KEY°¡ ¾Æ´Õ´Ï´Ù).
+

+·¹Áö½ºÆ®¸®-ȸµ¹ÀÌ ¾È¿¡¼­ »ç¿ëµÉ ¶§, ´ÙÀ½ ¸í·É¾îµéÀ» »ç¿ëÇϸé ÇöÀç ¿­¶÷µÈ Ç׸ñÀ» ó¸®ÇØ¾ß ÇÒÁö ¸»Áö °£´ÜÇÏ°Ô ¾Ë·ÁÁÙ ¼ö ÀÖ½À´Ï´Ù:

+ + + + + + + + + + + + + +
RegRead, OutputVarÇöÀç Ç׸ñÀ» ÀнÀ´Ï´Ù. ÇöÀç Ç׸ñÀÌ Å°À̸é, ErrorLevel¿¡ 1ÀÌ ¼³Á¤µÇ°í OutputVar´Â ºñ¿öÁý´Ï´Ù.
RegWrite [, Value]ÇöÀç Ç׸ñÀ» ¾¹´Ï´Ù. Value¸¦ »ý·«Çϸé, Ç׸ñÀº ±×ÀÇ À¯Çü¿¡ µû¶ó 0ÀÌ µÇ°Å³ª ºñ¿öÁý´Ï´Ù. ÇöÀç Ç׸ñÀÌ Å°À̸é, ErrorLevelÀº 1ÀÌ ¼³Á¤µÇ°í ´Ù¸¥ È¿°ú´Â ÀüÇô ¾ø½À´Ï´Ù.
RegDeleteÇöÀç Ç׸ñÀ» »èÁ¦ÇÕ´Ï´Ù. ÇöÀç Ç׸ñÀÌ Å°À̸é, ±×ÀÇ ¼­ºêÅ° ±×¸®°í ±× ¾È¿¡ Æ÷ÇÔµÈ °ª±îÁö ÇÔ²² »èÁ¦µË´Ï´Ù.
+

+(À§¿¡ ±â¼úµÈ RootKey ¸Å°³º¯¼ö¸¦ ÅëÇÏ¿©) ¿ø°Ý ·¹Áö½ºÆ®¸®¿¡ Á¢±ÙÇÒ ¶§, ´ÙÀ½ »çÇ×ÀÌ Àû¿ëµË´Ï´Ù:

+
    +
  • ¸ñÇ¥ ¸Ó½ÅÀº ¿ø°Ý ·¹Áö½ºÆ®¸® ¼­ºñ½º¸¦ ½ÇÇàÇÏ°í ÀÖ¾î¾ß ÇÕ´Ï´Ù.
  • +
  • ¸ñÇ¥ ÄÄÇ»ÅÍ°¡ ¿©·¯ºÐÀÇ µµ¸ÞÀΰú °°Àº µµ¸ÞÀο¡ ÀÖÁö ¾Ê´Ù¸é ¶Ç´Â Áö¿ªÀ̳ª ¿ø°Ý »ç¿ëÀÚÀ̸§ÀÌ ÃæºÐÇÑ ±ÇÇÑÀÌ ¾ø´Ù¸é ¿ø°Ý ·¹Áö½ºÆ®¸® Á¢±ÙÀº ½ÇÆÐÇÒ ¼ö ÀÖ½À´Ï´Ù (±×·¸Áö¸¸, °¡´ÉÇÑ ÇØ°áÃ¥Àº ¾Æ·¡¸¦ ÂüÁ¶ÇϽʽÿÀ).
  • +
  • »ç¿ëÀÚÀ̸§ÀÇ µµ¸ÞÀÎ, ÀÛ¾÷±×·ì, ±×¸®°í/¶Ç´Â ±ÇÇÑ¿¡ µû¶ó, ¿ø°Ý ·¹Áö½ºÆ®¸® Á¢±ÙÀ» ½ÃµµÇϱâ Àü¿¡, ¸ÕÀú µå¶óÀ̺긦 ¸ÊÇÎÇϰųª ÇÔÀ¸·Î½á, °øÀ¯ ÀåÄ¡¿¡ Á¢¼ÓÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. + + ±×·± ½ÄÀ¸·Î Á¢¼ÓÇϸé -- ·¹Áö½ºÆ®¸®¿¡ Á¢±ÙÇϰųª ÆíÁýÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ÀÖ´Â ¿ø°Ý »ç¿ëÀÚÀ̸§°ú ¾ÏÈ£¸¦ »ç¿ëÇÏ¿© Á¢¼ÓÇϸé -- ¿ø°Ý ·¹Áö½ºÆ®¸® Á¢±ÙÀÌ È°¼ºÈ­µÇ´Â ºÎÀÛ¿ëÀÌ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.
  • +
  • + ÀÌ¹Ì ¸ñÇ¥ ÄÄÇ»ÅÍ¿¡ ´Ù¸¥ »ç¿ëÀÚ·Î Á¢¼ÓÇß´Ù¸é (¿¹¸¦ µé¾î, »ç¿ëÀÚ Guest¸¦ ÅëÇÏ¿© ¸Ê µå¶óÀ̺꿡 Á¢¼ÓÇß´Ù¸é), Á¢¼ÓÀ» ²÷¾î¼­ ¿ø°Ý ·¹Áö½ºÆ®¸® Ư¡¿¡ ´Ù½Ã Á¢¼ÓÇØ ¿©·¯ºÐÀÇ ÇöÀç ·Î±×-¿Â »ç¿ëÀÚÀ̸§À¸·Î Àç-ÀÎÁõ¹ÞÀ» ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.
  • +
  • Windows Server 2003 ±×¸®°í Windows XP Professional¿¡ ´ëÇÏ¿©, MSDNÀÌ ¾ð±ÞÇÑ ¹Ù¿¡ ÀÇÇϸé: "[·¹Áö½ºÆ®¸® ¼­¹ö] ÄÄÇ»ÅÍ°¡ ÀÛ¾÷±×·ì¿¡ Âü¿©ÇÏ°í ·ÎÄà °èÁ¤À» »ç¿ëÇÏ´Â ³×Å©¿öÅ© ·Î±×¿Â »ç¿ëÀÚ¸¦ °­Á¦·Î Guest·Î ÀÎÁõ¹Þ°Ô ÇÏ´Â Á¤Ã¥ÀÌ È°¼ºÈ­µÇ¾î ÀÖ´Ù¸é, ±× ±â´ÉÀº ½ÇÆÐÇÕ´Ï´Ù. ÄÄÇ»ÅÍ°¡ ÀÛ¾÷±×·ì¿¡ Âü¿©ÇÑ´Ù¸é ÀÌ Á¤Ã¥ÀÌ ±âº»°ªÀ¸·Î È°¼ºÈ­µÇ¾î ÀÖ´ÂÁö È®ÀÎ ÇϽʽÿÀ."
  • +
  • Windows XP Home Edition¿¡ ´ëÇÏ¿©, MSDNÀÌ ¾ð±ÞÇÑ ¹Ù¿¡ ÀÇÇϸé "ÀÌ ±â´ÉÀº ¾ðÁ¦³ª ½ÇÆÐÇÕ´Ï´Ù". Home EditionÀº ·¹Áö½ºÆ®¸® ¼­¹öµµ Ŭ¶óÀ̾ðÆ®µµ ¾ø½À´Ï´Ù. ¹°·Ð Ŭ¶óÀ̾ðÆ®´Â OS cab ÆÄÀÏ Áß¿¡¼­ ÃßÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • +
+

+Blocks, Break, Continue, ±×¸®°í A_Index º¯¼ö (¸ðµç ȸµ¹ÀÌ¿¡ Á¸Àç)¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â Loop¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

+Loop, Break, Continue, ºí·Ï, RegRead, RegWrite, RegDelete, SetRegView

+ +

¿¹Á¦

+
; ¿¹Á¦: »ç¿ëÀÚ°¡ ŸÀÚÇÑ ÀÎÅÍ³Ý ÀͽºÇ÷η¯ÀÇ URL ÀÌ·ÂÀ» »èÁ¦ÇÕ´Ï´Ù:
+Loop, HKEY_CURRENT_USER, Software\Microsoft\Internet Explorer\TypedURLs
+    RegDelete
+

 

+
; ¿¹Á¦: ÀÛµ¿ÇÏ´Â Å×½ºÆ® ½ºÅ©¸³Æ®:
+Loop, Reg, HKEY_CURRENT_USER\Software\Microsoft\Windows, KVR
+{
+    if a_LoopRegType = key
+        value =
+    else
+    {
+        RegRead, value
+        if ErrorLevel
+            value = *error*
+    }
+    MsgBox, 4, , %a_LoopRegName% = %value% (%a_LoopRegType%)`n`nContinue?
+    IfMsgBox, NO, break
+}
+

 

+
; ¿¹Á¦: Àüü ·¹Áö½ºÆ®¸®¿¡¼­ ƯÁ¤ °ªÀ»
+; Àç±ÍÀûÀ¸·Î ¿­¶÷ÇÏ´Â ¿¹Á¦.
+SetBatchLines -1  ; ÃÖ´ë ¼Óµµ·Î °Ë»öÇÕ´Ï´Ù.
+RegSearchTarget = Notepad  ; ¼­ºê·çƾ¿¡ ¹«¾ùÀ» °Ë»öÇÏ°í ½ÍÀºÁö ¾Ë¸³´Ï´Ù.
+Gosub, RegSearch
+return
+
+RegSearch:
+ContinueRegSearch = y
+Loop, Reg, HKEY_LOCAL_MACHINE, KVR
+{
+    Gosub, CheckThisRegItem
+    if ContinueRegSearch = n ; ¸ØÃß¾î¾ß ÇÕ´Ï´Ù.
+        return
+}
+Loop, Reg, HKEY_USERS, KVR
+{
+    Gosub, CheckThisRegItem
+    if ContinueRegSearch = n ; ¸ØÃß¾î¾ß ÇÕ´Ï´Ù.
+        return
+}
+Loop, Reg, HKEY_CURRENT_CONFIG, KVR
+{
+    Gosub, CheckThisRegItem
+    if ContinueRegSearch = n ; ¸ØÃß¾î¾ß ÇÕ´Ï´Ù.
+        return
+}
+; ÁÖÀÇ: HKEY_USERS¸¦ °Ë»ö ÁßÀ̶ó¸é 
+; HKEY_CURRENT_USER´Â °Ë»öÇÒ ÇÊ¿ä°¡ ¾ø´Ù°í ÇÊÀÚ´Â ¹Ï½À´Ï´Ù.
+; ¸¶Âù°¡Áö·Î HKEY_LOCAL_MACHINE¸¦ °Ë»ö ÁßÀ̶ó¸é.
+; HKEY_CLASSES_ROOTµµ °Ë»öÇÒ ÇÊ¿ä°¡ ¾øÀ» °ÍÀÔ´Ï´Ù.
+
+return
+
+CheckThisRegItem:
+if A_LoopRegType = KEY  ; Å° À̸§µµ Á¡°ËÇÏ°í ½Í´Ù¸é ´ÙÀ½ µÎ ÁÙÀ» Á¦°ÅÇϽʽÿÀ.
+    return
+RegRead, RegValue
+if ErrorLevel
+    return
+IfInString, RegValue, %RegSearchTarget%
+{
+    MsgBox, 4, , The following match was found:`n%A_LoopRegKey%\%A_LoopRegSubKey%\%A_LoopRegName%`nValue = %RegValue%`n`nContinue?
+    IfMsgBox, No
+        ContinueRegSearch = n  ; È£ÃâÀÚ¿¡°Ô °Ë»öÀ» ¸ØÃ߶ó°í ¾Ë¸³´Ï´Ù.
+}
+return
+ + + diff --git a/src/docs/commands/Menu.htm b/src/docs/commands/Menu.htm new file mode 100644 index 0000000..f695abf --- /dev/null +++ b/src/docs/commands/Menu.htm @@ -0,0 +1,285 @@ + + + + +Menu + + + + + + + +

Menu

+ +

+¸Þ´º¿Í ¸Þ´º Ç׸ñÀ» ¸¸µé°í, Á¦°ÅÇÏ°í, º¯°æÇÏ°í ±×¸®°í º¸¿©ÁÝ´Ï´Ù. Æ®·¹ÀÌ ¾ÆÀÌÄÜ°ú ÅøÆÁÀ» º¯°æÇÕ´Ï´Ù. ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®ÀÇ ¸ÞÀΠâÀÌ ¿­¸±Áö ¸»Áö Á¦¾îÇÕ´Ï´Ù.

+ +
Menu, MenuName, Cmd [, P3, P4, P5]
+

¸Å°³º¯¼ö

+
+ +
MenuName
+

TRAY ¶Ç´Â ¸ÂÃã ¸Þ´ºÀÇ À̸§ÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ¸ÂÃã ¸Þ´º´Â ±×ÀÇ À̸§ÀÌ Add ¸í·É¾î¿¡ óÀ½ »ç¿ëµÉ ¶§ ÀÚµ¿À¸·Î »ý¼ºµË´Ï´Ù. ¿¹¸¦ µé¾î: Menu, MyMenu, Add, Item1.

+

ÀÏ´Ü »ý¼ºµÇ¸é, ¸ÂÃã ¸Þ´º´Â Show ¸í·É¾î·Î º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. Add ¸í·É¾î¸¦ ÅëÇÏ¿© ¿©·¯ ¸Þ´º¿¡ ºÎ¸Þ´º·Î ºÎÂøÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

+ +
Cmd, P3, P4, P5
+

ÀÌ ³× °³ÀÇ ¸Å°³º¯¼ö´Â ¼­·Î ÀÇÁ¸ÀûÀÔ´Ï´Ù. Çã¿ëµÇ´Â Á¶ÇÕÀº ¾Æ·¡ÀÇ ¸®½ºÆ®¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +
+ +

¸Þ´º¿¡ Ç׸ñÀ» Ãß°¡Çϰųª º¯°æÇϱâ

+

+Add [, MenuItemName, Label-or-Submenu, Pn]: ÀÌ°ÍÀº ´ÙÁß ¸ñÀûÀÇ ¸í·É¾î·Î¼­ ¸Þ´º Ç׸ñÀ» Ãß°¡Çϰųª, ºÎ¸Þ´º¸¦ »õ·Î¿î ºÎ¸Þ´º ¶Ç´Â ¶óº§·Î °»½ÅÇϰųª ¶Ç´Â ÇÑ Ç׸ñÀ» Á¤»ó Ç׸ñ¿¡¼­ ºÎ¸Þ´º·Î (¶Ç´Â ±× ¹Ý´ë·Î) º¯È¯ÇÕ´Ï´Ù. MenuItemNameÀÌ ¾ÆÁ÷ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ¸Þ´º¿¡ Ãß°¡µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, MenuItemNameÀº »õ·Î ÁöÁ¤µÈ ¶óº§ ¶Ç´Â ºÎ¸Þ´º(Label-or-Submenu)·Î °»½ÅµË´Ï´Ù.

+

+¸Þ´º °¡¸§ÁÙÀ» Ãß°¡ÇÏ·Á¸é, ¼¼ °³ÀÇ ¸Å°³º¯¼ö¸¦ ¸ðµÎ »ý·«ÇϽʽÿÀ.

+

+¶óº§ ¼­ºê·çƾÀº »ç¿ëÀÚ°¡ ¸Þ´º Ç׸ñÀ» ¼±ÅÃÇÒ ¶§ »õ ¾²·¹µå·Î ½ÇÇàµË´Ï´Ù (Gosub ±×¸®°í ÇÖÅ° ¼­ºê·çƾ°ú ºñ½ÁÇÕ´Ï´Ù). Label-or-Submenu¸¦ »ý·«Çϸé, MenuItemNameÀÌ ¶óº§°ú ¸Þ´º Ç׸ñÀÇ À̸§À¸·Î »ç¿ëµË´Ï´Ù.

+

[v1.1.20+]: ±âÁ¸ÀÇ ¶óº§ À̸§ÀÌ ¾Æ´Ï¸é, Label-or-Submenu´Â ÇÔ¼öÀÇ À̸§À̰ųª, ¾Æ´Ï¸é ÇÔ¼ö °´Ã¼¸¦ ´ã°í ÀÖ´Â ´ÜÀÏ º¯¼ö ÂüÁ¶ÀÏ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, %funcobj% ¶Ç´Â % funcobj. °´Ã¼¸¦ µ¹·ÁÁÖ´Â ´Ù¸¥ Ç¥Çö½ÄÀº ÇöÀç Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ÇÔ¼ö´Â ¾Æ·¡¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ ¼±ÅÃÀûÀ¸·Î ¸Å°³º¯¼ö¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù:

+ +
FunctionName(ItemName, ItemPos, MenuName)
+

+MenuItemName¸¦ ºÎ¸Þ´º°¡ µÇ°Ô ¸¸µé·Á¸é -- ¼±ÅÃµÇ¸é »õ ¸Þ´º¸¦ ¿©´Â ¸Þ´º Ç׸ñÀ» ¸¸µé·Á¸é -- Label-or-Submenu¿¡ ½ÖÁ¡ ±×¸®°í ±âÁ¸ ¸ÂÃã ¸Þ´ºÀÇ MenuNameÀ» ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î:

+ +
Menu, MySubmenu, add, Item1
+Menu, tray, add, ÀÌ ¸Þ´º Ç׸ñÀº ºÎ¸Þ´ºÀÔ´Ï´Ù, :MySubmenu
+

+¸¶Áö¸· ¸Å°³º¯¼ö¿¡´Â ±âÈ£ P ±×¸®°í ´ÙÀ½¿¡ ¸Þ´ºÀÇ ¾²·¹µå ¿ì¼±¼øÀ§°¡ ´ã±æ ¼ö ÀÖ½À´Ï´Ù. ¿¹, P1. ¸Þ´º Ç׸ñÀ» Ãß°¡ÇÒ ¶§ ÀÌ ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, ¿ì¼±¼øÀ§´Â 0ÀÌ µÉ ÅÙµ¥, ÀÌ°ÍÀÌ ±âº»°ªÀÔ´Ï´Ù. ¸Þ´º Ç׸ñÀ» °»½ÅÇÒ ¶§ »ý·«Çϸé, Ç׸ñÀÇ ¿ì¼±¼øÀ§´Â ¹Ù²îÁö ¾Ê½À´Ï´Ù. ±âÁ¸ Ç׸ñÀÇ ¿ì¼± ¼øÀ§¸¸ ¹Ù²Ù·Á¸é, Label-or-Submenu ¸Å°³º¯¼ö¸¦ »ý·«ÇϽʽÿÀ. ¿ì¼± ¼øÀ§¿¡ ½ÊÁø¼ö¸¦ »ç¿ëÇϽʽÿÀ (½ÊÀ°Áø¼ö´Â ºÒ°¡).

+

+Delete [, MenuItemName]: ¸Þ´º·ÎºÎÅÍ MenuItemNameÀ» »èÁ¦ÇÕ´Ï´Ù. Exit (¾Æ·¡ ÂüÁ¶)¿Í °°Àº Ç¥ÁØ ¸Þ´º Ç׸ñÀº °³º°ÀûÀ¸·Î »èÁ¦ÇÒ ¼ö ¾ø½À´Ï´Ù. ±âº» ¸Þ´º Ç׸ñÀÌ »èÁ¦µÇ¸é, ±× È¿°ú´Â NoDefault ¿É¼ÇÀ» »ç¿ëÇÑ °Í°ú ºñ½ÁÇÕ´Ï´Ù. MenuItemNameÀ» »ý·«Çϸé, Àüü MenuName ¸Þ´º°¡ »èÁ¦µË´Ï´Ù. MenuNameÀ» ºÎ¸Þ´º·Î »ç¿ëÇÏ°í ÀÖ´Â ´Ù¸¥ ¸Þ´º¿¡ ÀÖ´Â ¸Þ´º Ç׸ñµµ ¸¶Âù°¡Áö·Î »èÁ¦µË´Ï´Ù.

+

+DeleteAll: ¸Þ´º·ÎºÎÅÍ ¸ðµç ¸ÂÃã ¸Þ´º Ç׸ñÀ» Á¦°ÅÇÏ°í, ¸Þ´º¸¦ ºó ä·Î µÓ´Ï´Ù. ´Ü, Ç¥ÁØ Ç׸ñµéÀÌ ´ã°Ü ÀÖ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù (¾Æ·¡ ÂüÁ¶). Delete ¸í·É¾î·Î ¿ÏÀüÈ÷ »èÁ¦µÇ´Â ¸Þ´º¿Í ´Ù¸£°Ô (À§ ÂüÁ¶), ºó ¸Þ´º´Â ¿©ÀüÈ÷ Á¸ÀçÇÕ´Ï´Ù. ±×·¡¼­ ±× ¸Þ´º¸¦ ºÎ¸Þ´º·Î »ç¿ëÇÏ´Â ´Ù¸¥ ¸Þ´ºµµ ¿©ÀüÈ÷ ±× ºÎ¸Þ´º¸¦ À¯ÁöÇÕ´Ï´Ù.

+

+Rename, MenuItemName [, NewName]: MenuItemNameÀ» NewNameÀ¸·Î º¯°æÇÕ´Ï´Ù (NewNameÀÌ ºñ¾î ÀÖ´Ù¸é, MenuItemName´Â °¡¸§ÁÙ·Î º¯È¯µË´Ï´Ù). NewName´Â ±âÁ¸ÀÇ ¸ÂÃã ¸Þ´º Ç׸ñ°ú °°À¸¸é ¾ÈµË´Ï´Ù. ±× ¸Þ´º Ç׸ñÀÇ ÇöÀç ¸ñÇ¥ ¶óº§À̳ª ºÎ¸Þ´º´Â ¹Ù²îÁö ¾Ê½À´Ï´Ù.

+

+Check, MenuItemName: º¸À̴ üũǥ½ÄÀ» (¾ÆÁ÷ ¾ø´Ù¸é) MenuItemName¿·ÀÇ ¸Þ´º¿¡ Ãß°¡ÇÕ´Ï´Ù.

+

+Uncheck, MenuItemName: MenuItemNameÀ¸·ÎºÎÅÍ Ã¼Å©Ç¥½ÄÀ» (ÀÖ´Ù¸é) Á¦°ÅÇÕ´Ï´Ù.

+

+ToggleCheck, MenuItemName: üũǥ½ÄÀ» ¾ø´Ù¸é Ãß°¡ÇÕ´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é, Á¦°ÅÇÕ´Ï´Ù.

+

+Enable, MenuItemName: ÀÌÀü¿¡ ²¨Á® ÀÖ¾ú´Ù¸é (ȸ»öó¸®) MenuItemNameÀ» »ç¿ëÀÚ°¡ ´Ù½Ã ÇÑ ¹ø ¼±ÅÃÇϵµ·Ï Çã¿ëÇÕ´Ï´Ù.

+

+Disable, MenuItemName: MenuItemName¸¦ ȸ»öÀ¸·Î ¹Ù²Ù¾î¼­ »ç¿ëÀÚ°¡ ¼±ÅÃÇÒ ¼ö ¾ø´Ù´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù.

+

+ToggleEnable, MenuItemName: ÀÌÀü¿¡ ÄÑÁ® ÀÖ¾ú´Ù¸é MenuItemName¸¦ ²ü´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é ÄÕ´Ï´Ù.

+

+Default [, MenuItemName]: ¸Þ´ºÀÇ ±âº» Ç׸ñÀ» MenuItemNameÀ¸·Î ¹Ù²Ù°í ±× Ç׸ñÀÇ ±Û²ÃÀ» º¼µåü·Î ¸¸µì´Ï´Ù (TRAY ¸»°í ¸Þ´º¿¡ ±âº» Ç׸ñÀ» ¼³Á¤ÇÏ´Â °ÍÀº ¼øÀüÈ÷ Àå½ÄÀûÀÎ È¿°úÀÔ´Ï´Ù). »ç¿ëÀÚ°¡ Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» Ŭ¸¯ÇÒ ¶§, ±×ÀÇ ±âº» ¸Þ´º Ç׸ñÀÌ ±âµ¿µË´Ï´Ù. ±âº» Ç׸ñÀÌ ¾ø´Ù¸é, ´õºíŬ¸¯Çصµ ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù. MenuItemName¸¦ »ý·«Çϸé, ±× È¿°ú´Â ¾Æ·¡ÀÇNoDefault¸¦ »ç¿ëÇÑ °Í°ú µ¿ÀÏÇÕ´Ï´Ù.

+

+NoDefault: Æ®·¹ÀÌ ¸Þ´º¿¡ ´ëÇÏ¿©: ¸Þ´º°¡ ´Ù½Ã Ç¥ÁØÀÇ ±âº» ¸Þ´º Ç׸ñÀ» °¡Áöµµ·Ï ¹Ù²ß´Ï´Ù. ºñ-ÄÄÆÄÀÏ ½ºÅ©¸³Æ®¿¡ ±âº» ¸Þ´º Ç׸ñÀº OPENÀÌ°í ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®¿¡ ´ëÇؼ­´Â ¾ø½À´Ï´Ù (´Ü, MainWindow ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ» °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù). ÀÌÀü¿¡ NoStandard ¸í·É¾î¸¦ »ç¿ëÇ߱⠶§¹®¿¡ (¾Æ·¡ ÂüÁ¶) OPEN ¸Þ´º Ç׸ñÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ±âº» Ç׸ñÀÌ ¾øÀ¸¹Ç·Î Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» ´õºí Ŭ¸¯Çصµ ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù. TRAY ¸»°í ´Ù¸¥ ¸Þ´º¿¡ ´ëÇÏ¿©: ±âÁ¸ÀÇ ±âº» Ç׸ñ¿¡´Â º¼µåü°¡-¾Æ´Ñ ±Û²ÃÀ» µ¹·ÁÁÝ´Ï´Ù.

+

+Standard: Ç¥ÁØ ¸Þ´º Ç׸ñÀ» (¾ÆÁ÷ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é) ¸Þ´º ¾Æ·¡¿¡ »ðÀÔÇÕ´Ï´Ù. ÀÌ ¸í·É¾î´Â Æ®·¹ÀÌ ¸Þ´º³ª ±âŸ ¸Þ´º¿¡ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù.

+

+NoStandard: ¸ðµç Ç¥ÁØ (¸ÂÃã-¾Æ´Ñ) ¸Þ´º Ç׸ñÀ» (Á¸ÀçÇÑ´Ù¸é) Æ®·¹ÀÌ ¸Þ´º·ÎºÎÅÍ Á¦°ÅÇÕ´Ï´Ù.

+ + +

+Icon, MenuItemName, FileName [, IconNumber, IconWidth]: MenuItemNameÀÇ ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù. FileNameÀº ¾ÆÀÌÄÜ ÆÄÀÏÀ̰ųª AutoHotkey°¡ Áö¿øÇÏ´Â Çü½ÄÀÌ À̹ÌÁöÀÏ ¼ö ÀÖ½À´Ï´Ù. ÆÄÀÏ¿¡¼­ ù ¹ø° ¾ÆÀÌÄÜ ¸»°í ¾ÆÀÌÄÜ ±×·ìÀ» »ç¿ëÇÏ·Á¸é, ±× ¹øÈ£¸¦ IconNumber¿¡ ÁöÁ¤ÇϽʽÿÀ (»ý·«Çϸé, ±âº» °ªÀº 1ÀÔ´Ï´Ù). IconNumber°¡ À½¼öÀ̸é, ±×ÀÇ Àý´ë °ªÀÌ ½ÇÇà ÆÄÀÏ ¾È¿¡ Á¸ÀçÇÏ´Â ¾ÆÀÌÄÜÀÇ ÀÚ¿ø IDÀÏ °Å¶ó°í °£ÁÖÇÕ´Ï´Ù. ¾ÆÀÌÄÜÀÇ ³Êºñ´Â IconWidth¿¡ ÁöÁ¤ÇϽʽÿÀ. IconNumberÀÌ ³ªÅ¸³»´Â ¾ÆÀÌÄÜ ±×·ì ¾È¿¡ ¿©·¯ ¾ÆÀÌÄÜ Å©±â°¡ ÀÖ´Ù¸é, °¡Àå ±ÙÁ¢ÇÏ°Ô ºÎÇÕÇÏ´Â ¾ÆÀÌÄÜÀÌ »ç¿ëµÇ°í ±× ¾ÆÀÌÄÜÀÌ ÁöÁ¤µÈ Å©±â¿¡ ¸Â°Ô Á¶ÀýµË´Ï´Ù. »ç¿ë¹ýÀº ¿¹Á¦ ¼½¼ÇÀ» ÂüÁ¶ÇϽʽÿÀ.

+

+ÇöÀç Windows Vista ÀÌÈÄ¿¡¼­ ¾ÆÀÌÄÜ¿¡ Åõ¸í¼ºÀ» À¯ÁöÇϵµ·Ï ¼³Á¤ÇÏ·Á¸é "½ÇÁ¦ Å©±â"¸¦ ÁöÁ¤ÇÏ´Â °ÍÀÌ ÇÊ¿äÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
Menu, MenuName, Icon, MenuItemName, Filename.png,, 0
+

+¾Ë·ÁÁø ÇÑ°è: Gui ¸Þ´º ¹ÙÀÇ ¾ÆÀÌÄܵéÀº Windows XP ÀÌÀü¿¡¼­ ¿Ã¹Ù¸£°Ô ¹èÄ¡µÇÁö ¾Ê½À´Ï´Ù.

+

+NoIcon, MenuItemName: MenuItemNameÀÇ ¾ÆÀÌÄÜÀ», ÀÖ´Ù¸é Á¦°ÅÇÕ´Ï´Ù. + +

Æ®·¹ÀÌ ¾ÆÀÌÄÜ ¶Ç´Â ÅøÆÁ º¯°æÇϱâ (MenuNameÀÌ ¹Ýµå½ÃTRAYÀ̾î¾ß ÇÔ)

+

+Icon [, FileName, IconNumber, 1]: ½ºÅ©¸³Æ®ÀÇ ¾ÆÀÌÄÜÀ» FileNameÀÇ ¾ÆÀÌÄÜ Áß Çϳª·Î ¹Ù²ß´Ï´Ù. ´ÙÀ½ À¯ÇüÀÇ ÆÄÀÏÀ» Áö¿øÇÕ´Ï´Ù: ICO, CUR, ANI, EXE, DLL, CPL, SCR, ±×¸®°í ¾ÆÀÌÄÜ ÀÚ¿øÀ» º¸À¯ÇÑ ±âŸ À¯Çüµé. ÆÄÀÏÀÇ Ã¹ ¹ø° ¾ÆÀÌÄÜ ¸»°í ¾ÆÀÌÄÜ ±×·ìÀ» »ç¿ëÇÏ·Á¸é, ±×ÀÇ ¹øÈ£¸¦ IconNumber¿¡ ÁöÁ¤ÇϽʽÿÀ (»ý·«Çϸé, ±âº»°ªÀº 1ÀÔ´Ï´Ù). ¿¹¸¦ µé¾î, 2ÀÌ¸é ±âº» ¾ÆÀÌÄÜÀ» µÎ ¹ø° ¾ÆÀÌÄÜ ±×·ìÀ¸·ÎºÎÅÍ ÀûÀçÇÒ °ÍÀÔ´Ï´Ù. IconNumber°¡ À½¼öÀ̸é, ±×ÀÇ Àý´ë °ªÀÌ ½ÇÇà ÆÄÀÏ ¾È¿¡ ÀÖ´Â ¾ÆÀÌÄÜÀÇ ÀÚ¿ø IDÀÏ °Å¶ó°í °£ÁÖÇÕ´Ï´Ù. º°Ç¥ (*)¸¦ FileName¿¡ ÁöÁ¤ÇÏ¸é ½ºÅ©¸³Æ®¸¦ ±âº» ¾ÆÀÌÄÜÀ¸·Î º¹±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+¸¶Áö¸· ¸Å°³º¯¼ö: 1À» ÁöÁ¤ÇÏ¸é ¾ÆÀÌÄÜÀ» µ¿°áÇÕ´Ï´Ù. ¶Ç´Â 0ÀÌ¸é ±× ¾ÆÀÌÄÜÀ» Çص¿ÇÕ´Ï´Ù (¶Ç´Â ºñ¿ö µÎ¸é µ¿°á/Çص¿ »óŸ¦ ¹Ù²ÙÁö ¾Ê°í ±×´ë·Î À¯ÁöÇÒ ¼ö ÀÖ½À´Ï´Ù). ¾ÆÀÌÄÜÀÌ µ¿°áµÉ ¶§, Pause¿Í Suspend´Â ±×°ÍÀ» ¹Ù²ÙÁö ¾Ê½À´Ï´Ù. ÁÖÀÇ: ÇöÀç ¾ÆÀÌÄÜÀ» µ¿°áÇϰųª Çص¿ÇÏ·Á¸é, 1 ¶Ç´Â 0À» ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ »ç¿ëÇϽʽÿÀ: Menu, Tray, Icon,,, 1.

+

+Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» º¯°æÇϸé InputBox, Progress, ±×¸®°í À̾-»ý¼ºµÇ´Â GUI âÀÌ º¸¿©ÁÖ´Â ¾ÆÀÌÄܵµ º¯°æµË´Ï´Ù. ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®µµ ¿µÇâÀ» ¹Þ½À´Ï´Ù. ÄÄÆÄÀÏÇÒ ¶§ ¸ÂÃã ¾ÆÀÌÄÜÀ» ÁöÁ¤Çß´õ¶óµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. ÁÖÀÇ: ¾ÆÀÌÄÜÀ» º¯°æÇÏ´õ¶óµµ Æ®·¹ÀÌ ¾ÆÀÌÄÜÀº ¾ðÇÏÀ̵åµÇÁö ¾Ê½À´Ï´Ù. ÀÌÀü¿¡ #NoTrayIcon°ú °°Àº ¼ö´ÜÀ¸·Î ¼û°å´Ù¸é ¸»ÀÔ´Ï´Ù; ¾ðÇÏÀ̵å ÇÏ·Á¸é, (¸Å°³º¯¼ö ¾øÀÌ) Menu, Tray, Icon¸¦ »ç¿ëÇϽʽÿÀ.

+

+ .ICO ¸»°í ´Ù¸¥ À¯ÇüÀ¸·ÎºÎÅÍ Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» ÀûÀçÇÒ ¶§ ¾à°£ ¿Ö°îÀÌ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ 16x16 ¾ÆÀÌÄÜÀÌ ±×·¸½À´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é, ¿øÇÏ´Â Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» .ICO ÆÄÀÏ¿¡ ÀúÀåÇϽʽÿÀ.

+

+¾î¶² ¾ÆÀÌÄܵéÀº ¿î¿µ üÁ¦ÀÇ DLL°ú CPL¿¡ ³»ÀåµÇ¾î À־ À¯¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: Menu, Tray, Icon, Shell32.dll, 174.

+

+³»Àå º¯¼ö A_IconNumber¿Í A_IconFile¿¡´Â ÇöÀç ¾ÆÀÌÄÜÀÇ ¹øÈ£¿Í (¿ÏÀüÇÑ °æ·Î) À̸§ÀÌ µé¾î ÀÖ½À´Ï´Ù (±âº» ¾ÆÀÌÄÜÀÌ¸é µÑ ´Ù ºñ¾î ÀÖ½À´Ï´Ù).

+

+Icon (¸Å°³º¯¼ö ¾øÀ½): ¾ÆÁ÷ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» »ý¼ºÇÕ´Ï´Ù. ÀÌ·¸°Ô Çϸé #NoTrayIconÀÌ ¿À¹ö¶óÀÌµå µË´Ï´Ù. ÀÌ Áö½Ã¾î°¡ ½ºÅ©¸³Æ®¿¡ Á¸ÀçÇصµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.

+

+NoIcon: Æ®·¹ÀÌ ¾ÆÀÌÄÜÀÌ Á¸ÀçÇϸé Á¦°ÅÇÕ´Ï´Ù. ÀÌ ¸í·É¾î¸¦ ½ºÅ©¸³Æ® ¸Ç ²À´ë±â¿¡ »ç¿ëÇϸé, ½ºÅ©¸³Æ®°¡ ±âµ¿ÇÒ ¶§ Æ®·¹ÀÌ ¾ÆÀÌÄÜÀÌ Àá±ñ º¸ÀÏ ¼ö ÀÖ½À´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é , ´ë½Å #NoTrayIconÀ» »ç¿ëÇϽʽÿÀ. Æ®·¹ÀÌ ¾ÆÀÌÄÜÀÌ ÇöÀç ¼û¾î ÀÖÀ¸¸é ³»Àå º¯¼ö A_IconHidden ¾È¿¡ 1ÀÌ ´ã±é´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ´ã±é´Ï´Ù.

+

+Tip [, Text]: Æ®·¹ÀÌ ¾ÆÀÌÄÜÀÇ ÅøÆÁÀ» º¯°æÇÕ´Ï´Ù -- ÅøÆÁÀº ¸¶¿ì½º°¡ À§¸¦ Áö³ª°¥ ¶§ º¸¿©Áý´Ï´Ù. ¿©·¯-ÁÙ ÅøÆÁÀ» »ý¼ºÇÏ·Á¸é, °¢ ÁÙ »çÀÌ¿¡ ¶óÀÎÇǵå (`n) ¹®ÀÚ¸¦ »ç¿ëÇϽʽÿÀ. ¿¹, Line1`nLine2. Text¿¡¼­ ¾ÕÂÊ 127 °³¸¸ º¸¿©ÁÝ´Ï´Ù. ±×¸®°í Text´Â (Á¸ÀçÇϸé) ù ¹ø° ÅÇ ¹®ÀÚ¿¡¼­ Àß·Á ³ª°©´Ï´Ù. Text¸¦ »ý·«Çϸé, ÅøÆÁÀº ±×ÀÇ ±âº» ÅؽºÆ®·Î º¹±¸µË´Ï´Ù. ³»Àå º¯¼ö A_IconTip¿¡´Â ÅøÆÁÀÇ ÇöÀç ÅؽºÆ®°¡ ´ã±é´Ï´Ù (ÅؽºÆ®°¡ ±âº» °ªÀÌ¸é ºñ¾î ÀÖ½À´Ï´Ù).

+ +

±âŸ ¸í·É¾î

+

Show [, X, Y]: MenuNameÀ» º¸¿©ÁֹǷÎ, »ç¿ëÀÚ´Â È­»ìÇ¥ Å°, ¸Þ´º ´ÜÃàÅ° (¹ØÁÙ ±âÈ£), ¶Ç´Â ¸¶¿ì½º·Î Ç׸ñÀ» ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾î¶² ¸Þ´ºµµ º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. ¿©±â¿¡´Â Æ®·¹ÀÌ ¸Þ´ºµµ Æ÷ÇÔµÇÁö¸¸, GUI ¸Þ´º ¹Ù´Â ¿¹¿ÜÀÔ´Ï´Ù. X¿Í Y¸¦ ¸ðµÎ »ý·«Çϸé, ¸Þ´º´Â ¸¶¿ì½º Ä¿¼­ÀÇ ÇöÀç À§Ä¡¿¡ º¸¿©Áý´Ï´Ù. µÑ Áß¿¡ Çϳª¸¸ »ý·«Çϸé, »ý·«µÈ À§Ä¡¿¡ ¸¶¿ì½º Ä¿¼­ÀÇ À§Ä¡°¡ ´ë½Å »ç¿ëµË´Ï´Ù. X¿Í Y´Â È°¼º â¿¡ »ó´ëÀûÀÔ´Ï´Ù. Àüü È­¸é¿¡ »ó´ëÀûÀ¸·Î ¸¸µé·Á¸é ¹Ì¸® "CoordMode, Menu"¸¦ ÁöÁ¤ÇϽʽÿÀ.

+

+Color, ColorValue [, Single]: ¸Þ´ºÀÇ ¹è°æ»öÀ» ColorValue·Î ¹Ù²ß´Ï´Ù. ÀÌ »öÀº 16 °¡Áö ±âº» HTML »ö»ó À̸§ ¶Ç´Â 6-ÀÚ¸® RGB Ä÷¯ °ªÀÔ´Ï´Ù (Ä÷¯ Â÷Æ® ÂüÁ¶). +ColorValue¸¦ ºñ¿ö µÎ¸é (¶Ç´Â ´Ü¾î Default¸¦ ÁöÁ¤Çϸé) ¸Þ´º¸¦ ±×ÀÇ ±âº» Ä÷¯·Î º¹±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ü¾î SingleÀÌ ´ÙÀ½ ¸Å°³º¯¼ö¿¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ÀÌ ¸Þ´º¿¡ ºÎÂøµÈ ºÎ¸Þ´ºµéµµ ¸ðµÎ »öÀÌ ¹Ù²ò´Ï´Ù.

+

+Click, ClickCount: 1À» ClickCount¿¡ ÁöÁ¤Çϸé ÇÑ ¹ø Ŭ¸¯À¸·Î Æ®·¹ÀÌ ¸Þ´ºÀÇ ±âº» ¸Þ´º Ç׸ñÀ» È°¼ºÈ­ ÇÒ ¼ö ÀÖ½À´Ï´Ù. 2¸¦ ClickCount¿¡ ÁöÁ¤Çϸé (´õºí-Ŭ¸¯ÇØ) ±âº» ÇàÀ§·Î µ¹¾Æ¿Ã ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: Menu, Tray, Click, 1.

+

+MainWindow: ÀÌ ¸í·É¾î´Â ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®¿¡¸¸ ¿µÇâÀ» ÁÝ´Ï´Ù. ½ºÅ©¸³Æ®ÀÇ ¸ÞÀΠâÀ» Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» ÅëÇÏ¿© ¿­ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ºÒ°¡´ÉÇÕ´Ï´Ù. + +¶ÇÇÑ ¿¹¸¦ µé¾î "ÃÖ±Ù¿¡ ½ÇÇàµÈ ÁÙ"°ú °°ÀÌ, ¸ÞÀΠâÀÇ View ¸Þ´º¿¡ ÀÖ´Â Ç׸ñµéÀ» È°¼ºÈ­ ÇÕ´Ï´Ù. ÀÌ ¸Þ´º´Â ½ºÅ©¸³Æ®ÀÇ ¼Ò½º ÄÚµå¿Í ±âŸ Á¤º¸¸¦ º¸¿©ÁÝ´Ï´Ù. +MenuName´Â ¹Ýµå½Ã TRAYÀ̾î¾ß ÇÕ´Ï´Ù.

+

+NoMainWindow (default): ÀÌ ¸í·É¾î´Â ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®¿¡¸¸ ¿µÇâÀ» ÁÝ´Ï´Ù. ½ºÅ©¸³Æ®¸¦ ±×ÀÇ ±âº» ÇàÀ§·Î º¹±¸ÇÕ´Ï´Ù. Áï, ¸ÞÀΠâÀÌ ¿­¸®Áö ¸øÇϵµ·Ï ¸·½À´Ï´Ù. ÀÌ ¿É¼ÇÀÌ ÄÑÁ® ÀÖ´Â µ¿¾È¿¡µµ, ´ÙÀ½ ¸í·É¾îµéÀº ½ºÅ©¸³Æ®¿¡¼­ ½ÇÇà½Ã°£¿¡ ¸¸³ª¸é ¿©ÀüÈ÷ ¸ÞÀΠâÀ» º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù: ListLines, ListVars, ListHotkeys, ±×¸®°í KeyHistory. MenuNameÀº ¹Ýµå½Ã TRAYÀ̾î¾ß ÇÕ´Ï´Ù.

+

+UseErrorLevel [, off]: ÀÌ ¿É¼ÇÀÌ ½ºÅ©¸³Æ®¿¡ »ç¿ëµÇÁö ¾ÊÀ¸¸é, ±âº» °ªÀº OFFÀÔ´Ï´Ù. OFF ¼³Á¤Àº Menu ¸í·É¾î°¡ ¿¡·¯¸¦ ¹ß»ý½Ãų ¶§¸¶´Ù ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÖ°í ÇöÀç ¾²·¹µå¸¦ Á¾·áÇÕ´Ï´Ù. Menu, Tray, UseErrorLevel¸¦ ÁöÁ¤ÇÏ¸é ±× ´ëÈ­»óÀÚ¿Í ¾²·¹µå Á¾·á¸¦ ¸·À» ¼ö ÀÖ½À´Ï´Ù; ´ë½Å¿¡, ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1ÀÌ ¾øÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù. ÀÌ ¿É¼ÇÀ» ´Ù½Ã ²ô·Á¸é, ´ÙÀ½ ¸Å°³º¯¼ö¿¡ OFF¸¦ ÁöÁ¤ÇϽʽÿÀ. ÀÌ ¼³Á¤Àº Àü¿ªÀûÀÔ´Ï´Ù. MenuNameÀº ¹°·ÐÀÌ°í, ¸ðµç ¸Þ´º¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù´Â ¶æÀÔ´Ï´Ù.

+ +

³íÆò

+

+¸Þ´º Ç׸ñ ÀÇ À̸§¿¡ ÀÖ´Â ±ÛÀÚ Áß Çϳª¿¡ ¹ØÁÙÀ» ±×À¸·Á¸é, ±× ±ÛÀÚ ¾Õ¿¡ ¾ÚÆÛ¼¾µå¸¦ (&) ¹èÄ¡ÇϽʽÿÀ. ¸Þ´º°¡ ³ªÅ¸³¯ ¶§, ±×·± Ç׸ñÀº Å°º¸µå¿¡¼­ »óÀÀÇÏ´Â Å°¸¦ ´­·¯¼­ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ±ÛÀÚ ±×´ë·Î ¾ÚÆÛ¼¾µå¸¦ º¸¿©ÁÖ·Á¸é, ¿¬¼ÓÀûÀ¸·Î ¾ÚÆÛ¼¾µå µÎ °³¸¦ ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ÁöÁ¤ÇϽʽÿÀ: "Save && Exit"

+

+¸Þ´º¿Í ¸Þ´º Ç׸ñÀÇ À̸§Àº ÃÖ´ë 260 ¹®ÀÚ±îÁö Çã¿ëµË´Ï´Ù.

+

+±âÁ¸ÀÇ ¸Þ´º³ª ¸Þ´º Ç׸ñÀ» ÂüÁ¶ÇÒ ¶§, ±× À̸§Àº ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾ÊÁö¸¸ ¾ÚÆÛ¼¾µå´Â ¹Ýµå½Ã Æ÷ÇÔ½ÃÄÑ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: &Open

+

+°¡¸§ ÁÙÀº Menu, Tray, Add¸¦ »ç¿ëÇÏ¸é ¸Þ´º¿¡ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù (Áï, ´Ù¸¥ ¸ðµç ¸Å°³º¯¼ö »ý·«). ±×·¸Áö¸¸, °¡¸§ ÁÙÀº ÇöÀç °³º°ÀûÀ¸·Î Á¦°ÅÇÒ ¼ö ¾ø½À´Ï´Ù. À̸¦ ¿ìȸÇÏ·Á¸é, Menu, Tray, DeleteAll¸¦ »ç¿ëÇÑ ´ÙÀ½ ¿©·¯ºÐÀÇ ¸Â¿ò ¸Þ´º Ç׸ñÀ» ´Ù½Ã ºÎÂøÇϽʽÿÀ.

+

+»õ ¸Þ´º Ç׸ñÀº ¾ðÁ¦³ª ¸Þ´º ¾Æ·¡¿¡ Ãß°¡µË´Ï´Ù. Æ®·¹ÀÌ ¸Þ´º¿¡ ´ëÇÏ¿©: ¿©·¯ºÐÀÌ ¸Þ´º Ç׸ñÀ» Ç¥ÁØ ¸Þ´º Ç׸ñº¸´Ù À§¿¡ ³õÀ¸·Á¸é (¿©·¯ºÐÀÇ ¸Þ´º Ç׸ñÀ» Ãß°¡ÇÑ ÈÄ) Menu, Tray, NoStandard¸¦ ½ÇÇàÇÑ ´ÙÀ½¿¡ Menu, Tray, Standard¸¦ ½ÇÇàÇϽʽÿÀ.

+

+"Pause Script" ±×¸®°í "Suspend Hotkeys"¿Í °°Àº Ç¥ÁØ ¸Þ´º Ç׸ñÀº ¸Þ´º ºÎ-¸í·É¾î·Î °³º°ÀûÀ¸·Î ÀÛµ¿½Ãų ¼ö ¾ø½À´Ï´Ù.

+

+¸Þ´º°¡ ¿ÏÀüÈ÷ ºñ°Ô µÇ¸é -- ¿¹¸¦ µé¾î Menu, MyMenu, DeleteAllÀ» »ç¿ëÇÏ¿© -- º¸¿©ÁÙ ¼ö ¾ø½À´Ï´Ù. Æ®·¹ÀÌ ¸Þ´º°¡ ºñ°Ô µÇ¸é, Æ®·¹ÀÌ ¾ÆÀÌÄÜ¿¡ ¿ìŬ¸¯°ú ´õºíŬ¸¯ÀÌ ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù (±×·± °æ¿ì º¸Åë #NoTrayIconÀ» »ç¿ëÇÏ´Â ÆíÀÌ ´õ ÁÁ½À´Ï´Ù).

+

+¸Þ´º Ç׸ñÀÇ ¼­ºê·çƾÀÌ ÀÌ¹Ì ½ÇÇà ÁßÀÌ°í »ç¿ëÀÚ°¡ °°Àº ¸Þ´º¸¦ ´Ù½Ã ¼±ÅÃÇÑ´Ù¸é, »õ ¾²·¹µå°¡ »ý¼ºµÇ°í ÀÌÀüÀÇ ¾²·¹µå¸¦ °¡·Îä¾î °°Àº ¼­ºê·çƾÀ» ½ÇÇàÇÕ´Ï´Ù. ´ë½Å¿¡ ±×·± À̺¥Æ®¸¦ ³ªÁßÀ¸·Î ¹öÆÛ Ã³¸®ÇÏ·Á¸é, CriticalÀ» ¼­ºê·çƾÀÇ Ã¹ ÁÙ¿¡ »ç¿ëÇϽʽÿÀ (±×·¸Áö¸¸, ÀÌ·¸°Ô ÇÏ¸é ¶Ç ÇÖÅ° ´©¸§°ú °°Àº ´Ù¸¥ ¾²·¹µåµµ ¿ª½Ã ¹öÆÛ/¿¬±â 󸮵˴ϴÙ).

+

+¼­ºê·çƾÀÌ ¸Þ´º Ç׸ñÀ» ÅëÇÏ¿© ±âµ¿ÇÒ ¶§¸¶´Ù ±× ¼­ºê·çƾÀº ¿¹¸¦ µé¾î SendMode¿¡ ¼³Á¤µÈ ±âº» °ªÀ» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ·± ±âº» °ªÀº ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡¼­ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+

+³»Àå º¯¼ö A_ThisMenuItem ±×¸®°í A_ThisMenuItemPos¿¡ »ç¿ëÀÚ°¡ ÃÖ±Ù¿¡ ¼±ÅÃÇÑ ¸ÂÃã ¸Þ´º Ç׸ñÀÇ À̸§°ú À§Ä¡°¡ ´ã°Ü ÀÖ½À´Ï´Ù (ºñ¾î ÀÖÀ¸¸é ¼±Åà ¾øÀ½). ºñ½ÁÇÏ°Ô, A_ThisMenu´Â A_ThisMenuItem°¡ ¼±ÅÃµÈ ¸Þ´ºÀÇ À̸§ÀÔ´Ï´Ù. ÀÌ·± º¯¼öµéÀº ³»¿ëÀÌ ¾ðÁ¦³ª °°Áö ¾ÊÀº ¸Þ´º¸¦ ±¸¼ºÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù. ±×·± °æ¿ì, º¸Åë ±×·± ¸ðµç ¸Þ´º Ç׸ñÀÌ °°Àº ¶óº§À» °¡¸®Å°µµ·Ï ¸¸µé°í ±× ¶óº§ÀÌ À§ÀÇ º¯¼öµéÀ» ÂüÁ¶Çؼ­ ¾î¶² ÇàÀ§¸¦ ÃëÇÒÁö °áÁ¤ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.

+

+ºñ-ÇÖÅ°, ºñ-GUI ½ºÅ©¸³Æ®¸¦ °è¼Ó ½ÇÇàµÇµµ·Ï À¯ÁöÇÏ·Á¸é -- ¿¹¸¦ µé¾î ¿ÀÁ÷ ¸ÂÃã ¸Þ´º³ª ¸Þ´º Ç׸ñ¸¸ ´ã°í ÀÖ´Â ½ºÅ©¸³Æ® -- #Persistent¸¦ »ç¿ëÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

GUI, Threads, Thread, Critical, #NoTrayIcon, Gosub, Return, SetTimer, #Persistent

+ +

¿¹Á¦

+
; ¿¹Á¦ #1: ÀÌ ½ºÅ©¸³Æ®´Â »õ ¸Þ´º Ç׸ñÀ» Æ®·¹ÀÌ ¾ÆÀÌÄÜ ¸Þ´ºÀÇ ¾Æ·¡¿¡ ºÎÂøÇÕ´Ï´Ù.
+
+#Persistent  ; »ç¿ëÀÚ°¡ Á¾·áÇÒ ¶§±îÁö ½ºÅ©¸³Æ®ÀÇ ½ÇÇàÀ» °è¼Ó À¯ÁöÇÕ´Ï´Ù.
+Menu, tray, add  ; °¡¸§ ÁÙÀ» ¸¸µì´Ï´Ù.
+Menu, tray, add, Item1, MenuHandler  ; »õ ¸Þ´º Ç׸ñÀ» ¸¸µì´Ï´Ù.
+return
+
+MenuHandler:
+MsgBox You selected %A_ThisMenuItem% from menu %A_ThisMenu%.
+return
+

 

+
; ¿¹Á¦ #2: ÀÌ ½ºÅ©¸³Æ®´Â »ç¿ëÀÚ°¡ Win-Z ÇÖÅ°¸¦ ´©¸¦ ¶§ º¸¿©ÁÙ Æ˾÷ ¸Þ´º¸¦ »ý¼ºÇÕ´Ï´Ù.
+
+; ¾à°£ÀÇ Ç׸ñÀ» ºÎÂøÇؼ­ Æ˾÷ ¸Þ´º¸¦ »ý¼ºÇÕ´Ï´Ù.
+Menu, MyMenu, Add, Item1, MenuHandler
+Menu, MyMenu, Add, Item2, MenuHandler
+Menu, MyMenu, Add  ; Add a separator line.
+
+; À§ÀÇ ¸Þ´ºÀÇ ºÎ¸Þ´º°¡ µÉ ¶Ç´Ù¸¥ ¸Þ´º¸¦ »ý¼ºÇÕ´Ï´Ù.
+Menu, Submenu1, Add, Item1, MenuHandler
+Menu, Submenu1, Add, Item2, MenuHandler
+
+; ù ¹ø° ¸Þ´º¿¡ ºÎ¸Þ´º¸¦ Çϳª »ý¼ºÇÕ´Ï´Ù (¿À¸¥ÂÊ È­»ìÇ¥ Ç¥½Ã). »ç¿ëÀÚ°¡ ±×°ÍÀ» ¼±ÅÃÇϸé, µÎ ¹ø° ¸Þ´º°¡ º¸¿©Áý´Ï´Ù.
+Menu, MyMenu, Add, My Submenu, :Submenu1
+
+Menu, MyMenu, Add  ; ±× ºÎ¸Þ´º ¾Æ·¡¿¡ °¡¸§ ÁÙÀ» Ãß°¡ÇÕ´Ï´Ù.
+Menu, MyMenu, Add, Item3, MenuHandler  ; ±× ºÎ¸Þ´º ¾Æ·¡¿¡ ¶Ç´Ù¸¥ ¸Þ´º Ç׸ñÀ» Ãß°¡ÇÕ´Ï´Ù.
+return  ; ½ºÅ©¸³Æ®ÀÇ ÀÚµ¿ ½ÇÇà ¼½¼ÇÀÌ ³¡³µ½À´Ï´Ù.
+
+MenuHandler:
+MsgBox You selected %A_ThisMenuItem% from the menu %A_ThisMenu%.
+return
+
+#z::Menu, MyMenu, Show  ; Áï, Win-Z ÇÖÅ°¸¦ ´©¸£¸é ¸Þ´º°¡ ³ªÅ¸³³´Ï´Ù.
+

 

+ +
; ¿¹Á¦ #3: ÀÌ ½ºÅ©¸³Æ®´Â ´Ù¾çÇÑ ¸Þ´º ¸í·É¾îÀÇ ¿¹¸¦ º¸¿©ÁÝ´Ï´Ù.
+
+#Persistent
+#SingleInstance
+menu, tray, add ; °¡¸§ ÁÙ
+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 ; ´ÙÀ½ Å×½ºÆ®µµ È°¼ºÈ­ µË´Ï´Ù. ÀÚ±â ÀÚ½ÅÀ» ²ö °ÍÀº ¾ðµÎÇÒ ¼ö ¾ø±â ¶§¹®ÀÔ´Ï´Ù.
+menu, tray, add, TestDelete ; À§¿Í ºñ½ÁÇÕ´Ï´Ù.
+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
+ +
; ¿¹Á¦ #4: ÀÌ ½ºÅ©¸³Æ®´Â ¾ÆÀÌÄÜÀ» ±×ÀÇ ¸Þ´º Ç׸ñ¿¡ Ãß°¡ÇÕ´Ï´Ù.
+Menu, FileMenu, Add, Script Icon, MenuHandler
+Menu, FileMenu, Add, Suspend Icon, MenuHandler
+Menu, FileMenu, Add, Pause Icon, MenuHandler
+Menu, FileMenu, Icon, Script Icon, %A_AhkPath%, 2 ; ÆÄÀϷκÎÅÍ µÎ ¹ø° ¾ÆÀÌÄÜ ±×·ìÀ» »ç¿ëÇÕ´Ï´Ù.
+Menu, FileMenu, Icon, Suspend Icon, %A_AhkPath%, -206 ; ÀÚ¿ø ½Äº°ÀÚ°¡ 206ÀÎ ¾ÆÀÌÄÜÀ» »ç¿ëÇÕ´Ï´Ù.
+Menu, FileMenu, Icon, Pause Icon, %A_AhkPath%, -207 ; ÀÚ¿ø ½Äº°ÀÚ°¡ 207ÀÎ ¾ÆÀÌÄÜÀ» »ç¿ëÇÕ´Ï´Ù.
+Menu, MyMenuBar, Add, &File, :FileMenu
+Gui, Menu, MyMenuBar
+Gui, Add, Button, gExit, Exit This Example
+Gui, Show
+MenuHandler:
+Return
+
+Exit:
+ExitApp
+
+ + diff --git a/src/docs/commands/MouseClick.htm b/src/docs/commands/MouseClick.htm new file mode 100644 index 0000000..dbe88db --- /dev/null +++ b/src/docs/commands/MouseClick.htm @@ -0,0 +1,100 @@ + + + + +MouseClick + + + + + + + +

MouseClick

+ +

¸¶¿ì½º ¹öÆ°À» Ŭ¸¯Çϰųª ´©¸¨´Ï´Ù. ¶Ç´Â ¸¶¿ì½º ÈÙÀ» µ¹¸³´Ï´Ù. ÁÖÀÇ: Click ¸í·É¾î°¡ ÀϹÝÀûÀ¸·Î ´õ À¯¿¬ÇÏ°í »ç¿ëÇϱ⠽±½À´Ï´Ù.

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

¸Å°³º¯¼ö

+
+ +
WhichButton
+

Ŭ¸¯ÇÒ ¹öÆ°: Left (±âº»°ª), Right, Middle (¶Ç´Â °¢°¢ ±×³É ¾Õ ¸Ó¸® ±ÛÀÚ Çϳª); ¶Ç´Â ³× ¹ø° ´Ù¼¸ ¹ø° ¸¶¿ì½º ¹öÆ° (X1 ¶Ç´Â X2). ¿¹¸¦ µé¾î: MouseClick, X1. ÀÌ ¸Å°³º¯¼ö´Â »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. »ý·«ÇÒ °æ¿ì ±âº»°ªÀº Left(¿ÞÂÊ)ÀÔ´Ï´Ù.

+

¸¶¿ì½º ÈÙÀ» µ¹¸²: WheelUp ¶Ç´Â WU¸¦ ÁöÁ¤Çϸé ÈÙÀ» À§·Î µ¹¸³´Ï´Ù (¸Ö¸®); WheelDown ¶Ç´Â WD¸¦ ÁöÁ¤Çϸé ÈÙÀ» ¾Æ·¡·Î µ¹¸³´Ï´Ù (°¡±îÀÌ). v1.0.48+¿¡¼­, WheelLeft (WL) ¶Ç´Â WheelRight (WR)À» ÁöÁ¤Çϸé ÈÙÀ» ¿ÞÂÊ ¶Ç´Â ¿À¸¥ÂÊÀ¸·Î °¢°¢ µ¹¸± ¼ö ÀÖ½À´Ï´Ù (±×·¯³ª ÀÌ°ÍÀº Windows Vista ¹Ì¸¸ÀÇ ¿î¿µ üÁ¦¿¡¼­´Â ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù). ClickCount´Â ÈÙÀ» µ¹¸± ´«±ÝÀÇ °³¼öÀÔ´Ï´Ù.

+

+ »ç¿ëÀÚ°¡ Á¦¾îÆÇÀ» ÅëÇÏ¿© ¸¶¿ì½ºÀÇ ÁÂ¿ì ¹öÆ°À» ¹Ù²Û °æ¿ì¿¡ ÀÚµ¿À¸·Î º¸¿ÏÇÏ·Á¸é ´ë½Å¿¡ Click ¸í·É¾î¸¦ »ç¿ëÇϽʽÿÀ.

+ +
X, Y
+

Ŭ¸¯Çϱâ Àü¿¡ ¸¶¿ì½º Ä¿¼­°¡ À̵¿ÇØ °¥ x/y ÁÂÇ¥, Ç¥Çö½Ä °¡´É. ÁÂÇ¥´Â È°¼º â¿¡ »ó´ëÀûÀÔ´Ï´Ù. ´Ü, CoordMode¸¦ »ç¿ëÇÏ¿© ÁÂÇ¥ ü°è¸¦ ¹Ù²Û °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù. »ý·«Çϸé, Ä¿¼­ÀÇ ÇöÀç À§Ä¡°¡ »ç¿ëµË´Ï´Ù.

+ +
ClickCount
+

¸¶¿ì½º¸¦ Ŭ¸¯ÇÒ È½¼ö, Ç¥Çö½Ä °¡´É. »ý·«Çϸé, ¹öÆ°Àº ÇÑ ¹ø¸¸ Ŭ¸¯µË´Ï´Ù.

+ +
Speed
+

¸¶¿ì½º°¡ À̵¿ÇÒ ¼Óµµ. ¹üÀ§´Â 0 (°¡Àå ºü¸§)ºÎÅÍ 100 (°¡Àå ´À¸²)±îÁö, Ç¥Çö½Ä °¡´É. ÁÖÀÇ: ¼Óµµ°¡ 0ÀÌ¸é ¸¶¿ì½º´Â ¼ø°£ À̵¿ÇÕ´Ï´Ù. »ý·«Çϸé, ±âº» ¼Óµµ (SetDefaultMouseSpeed°¡ ¼³Á¤ÇÑ °ª, ¾Æ´Ï¸é 2)°¡ »ç¿ëµË´Ï´Ù.

+

Speed´Â SendInput/Play ¸ðµå¿¡¼­ ¹«½ÃµË´Ï´Ù; ÀÌ ¸ðµå´Â ¸¶¿ì½º¸¦ ¼ø°£ À̵¿½Ãŵ´Ï´Ù (¹°·Ð SetMouseDelay´Â SendPlay¿¡ Àû¿ëÇÏ´Â ¸ðµå°¡ ÀÖ½À´Ï´Ù). ½Ã°¢ÀûÀ¸·Î ¸¶¿ì½º¸¦ ´õ õõÈ÷ À̵¿½ÃÅ°·Á¸é -- ¿¹¸¦ µé¾î ûÁßÀ» À§ÇÏ¿© µ¥¸ð¸¦ ¼öÇàÇÏ´Â ½ºÅ©¸³Æ®¿Í °°ÀÌ -- (¼±ÅÃÀûÀ¸·Î BlockInput°ú ÇÔ²²) SendEvent {Click 100, 200} ¶Ç´Â SendMode Event¸¦ »ç¿ëÇϽʽÿÀ .

+ +
D|U
+

ÀÌ ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, °¢ Ŭ¸¯Àº "down" À̺¥Æ® ´ÙÀ½¿¡ "up" À̺¥Æ®·Î ±¸¼ºµË´Ï´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î´Â:
+ D = ¸¶¿ì½º ¹öÆ°À» ´©¸£Áö¸¸ ¶¼Áö´Â ¾Ê½À´Ï´Ù(Áï, ´©¸§ À̺¥Æ®¸¦ ¹ß»ý½Ãŵ´Ï´Ù).
+ U = ¸¶¿ì½º ¹öÆ°À» ³õ½À´Ï´Ù (Áï, ¶À À̺¥Æ®¸¦ ¹ß»ý½Ãŵ´Ï´Ù).

+ +
R
+

ÀÌ ¸Å°³º¯¼ö°¡ ±â RÀ̸é, X¿Í Y ÁÂÇ¥´Â ÇöÀç ¸¶¿ì½º À§Ä¡·ÎºÎÅÍÀÇ »ó´ë°Å¸®(offsets)À¸·Î Ãë±ÞµË´Ï´Ù. ´Ù¸¥ ¸»·Î, Ä¿¼­´Â ÇöÀç À§Ä¡·ÎºÎÅÍ X Çȼ¿ ¸¸Å­ ¿À¸¥ÂÊÀ¸·Î (À½¼öÀÌ¸é ¿ÞÂÊÀ¸·Î) ±×¸®°í Y Çȼ¿ ¸¸Å­ ¾Æ·¡ÂÊÀ¸·Î (À½¼öÀ̸é À§ÂÊÀ¸·Î) À̵¿ÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

ÀÌ ¸í·É¾î´Â SendMode°¡ ¼³Á¤ÇÑ Àü¼Û ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù.

+

+MouseClickº¸´Ù Click ¸í·É¾î¸¦ ±ÇÀåÇÕ´Ï´Ù. ¿Ö³ÄÇϸé:

+
    +
  1. Á¦¾îÆÇÀ» ÅëÇÏ¿© ¸¶¿ì½º ÁÂ¿ì ¹öÆ°ÀÌ ¹Ù²Ù¾îµµ ÀÚµ¿À¸·Î º¸»óÇÕ´Ï´Ù.
  2. +
  3. ÀϹÝÀûÀ¸·Î ´õ »ç¿ëÇϱ⠽±½À´Ï´Ù.
  4. +
+

shift-click ¶Ç´Â control-clickÀ» ¼öÇàÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¿¬»êÀÇ ¾Õ µÚ¿¡ Send ¸í·É¾î¸¦ »ç¿ëÇϽʽÿÀ:

+ +
; ¿¹Á¦ #1: 
+Send, {Control down}
+MouseClick, left, 55, 233
+Send, {Control up}
+
+; ¿¹Á¦ #2:
+Send, {Shift down}
+MouseClick, left, 55, 233
+Send, {Shift up}
+

+SendPlay ¸ðµå´Â ´Ù¸¥ ¸ðµå¿¡ ºñÇØ ±¤¹üÀ§ÇÑ °ÔÀÓ¿¡ ¼º°øÀûÀ¸·Î ¸¶¿ì½º À̺¥Æ®¸¦ ¹ß»ý½Ãų ¼ö ¾ø½À´Ï´Ù. °Ô´Ù°¡, ¾î¶² ¾îÇø®ÄÉÀ̼ǰú °ÔÀÓÀº ¸¶¿ì½º¸¦ ³Ê¹« »¡¸® ¿òÁ÷ÀÌ¸é ¸¶¿ì½º¸¦ ÃßÀûÇÏ´Â µ¥ ¾î·Á¿òÀÌ ÀÖÀ» ¼öÀÖ½À´Ï´Ù. speed ¸Å°³º¯¼ö ¶Ç´Â SetDefaultMouseSpeed¸¦ »ç¿ëÇÏ¸é ¼Óµµ¸¦ ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù (±âº» SendEvent ¸ðµå Àü¿ë).

+

+¾î¶² ¾îÇø®ÄÉÀ̼ÇÀº ¸¶¿ì½º ÈÙ¿¡ ´ëÇÏ¿© 1º¸´Ù Å« ClickCount¸¦ ÁؼöÇÏÁö ¾Ê½À´Ï´Ù. ±×·± °æ¿ì´Â ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ Loop(ȸµ¹ÀÌ)¸¦ »ç¿ëÇϽʽÿÀ:

+ +
Loop, 5
+    MouseClick, WheelUp
+

+BlockInput ¸í·É¾î¸¦ »ç¿ëÇÏ¸é »ç¿ëÀÚ°¡ ¹°¸®ÀûÀ¸·Î ¸¶¿ì½º¸¦ ¿òÁ÷¿©µµ ¸¶¿ì½º ¸í·É¾î·Î Èä³»³½ ¸¶¿ì½º À̺¥Æ®°¡ ¹æÇØ ¹ÞÁö ¾Ê½À´Ï´Ù. ±×·¸Áö¸¸, ÀϹÝÀûÀ¸·Î SendInput/Play ¸ðµå¿¡´Â ºÒÇÊ¿äÇÕ´Ï´Ù. ¿Ö³ÄÇϸé ÀÚµ¿À¸·Î »ç¿ëÀÚÀÇ ¹°¸®Àû ¸¶¿ì½º À̵¿À» ´ÙÀ½À¸·Î ¿¬±âÇϱ⠶§¹®ÀÔ´Ï´Ù.

+

+¸¶¿ì½ºÀÇ Å¬¸¯ ´Ù¿î°ú Ŭ¸¯ ¾÷ »çÀÌ¿¡ ÀÚµ¿À¸·Î Áö¿¬ ½Ã°£ÀÌ »ðÀԵ˴ϴ٠(´Ü, SendInput ¸ðµå¿Í ¸¶¿ì½º È٠ȸÀüÀº ¿¹¿Ü). Áö¿¬ ½Ã°£ÀÇ ±æÀ̸¦ º¯°æÇÏ·Á¸é SetMouseDelay¸¦ »ç¿ëÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

+CoordMode, SendMode, SetDefaultMouseSpeed, SetMouseDelay, Click, MouseClickDrag, MouseGetPos, + MouseMove, ControlClick, BlockInput

+ +

¿¹Á¦

+ +
; ÇöÀç ¸¶¿ì½º À§Ä¡¿¡ ´õºíŬ¸¯ ÇÕ´Ï´Ù:
+MouseClick, left
+MouseClick, left
+
+; À§¿Í µ¿ÀÏÇÕ´Ï´Ù:
+MouseClick, left, , , 2
+
+; ÁöÁ¤µÈ ÁÂÇ¥·Î À̵¿ÇÑ ´ÙÀ½ ¿ìŬ¸¯ÇÕ´Ï´Ù:
+MouseClick, right, 200, 300
+
+; ´ÙÀ½Àº ¸¶¿ì½º ÈÙÀ» µ¹¸®´Â µÎ °³ÀÇ ÇÖÅ°ÀÔ´Ï´Ù:
+#up::MouseClick, WheelUp, , , 2  ; µÎ ´«±Ý ¸¸Å­ µ¹¸³´Ï´Ù.
+#down::MouseClick, WheelDown, , , 2
+ + + diff --git a/src/docs/commands/MouseClickDrag.htm b/src/docs/commands/MouseClickDrag.htm new file mode 100644 index 0000000..618d474 --- /dev/null +++ b/src/docs/commands/MouseClickDrag.htm @@ -0,0 +1,83 @@ + + + + +MouseClickDrag + + + + + + + +

MouseClickDrag

+ +

ÁöÁ¤µÈ ¸¶¿ì½º ¹öÆ°À» Ŭ¸¯ÇÏ°í ´©¸¨´Ï´Ù. ¸¶¿ì½º¸¦ ¸ñÇ¥ ÁÂÇ¥·Î À̵¿½ÃŲ ´ÙÀ½, ¹öÆ°À» ³õ½À´Ï´Ù.

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

¸Å°³º¯¼ö

+
+ +
WhichButton
+

Ŭ¸¯ÇÒ ¹öÆ°: Left, Right, Middle (¶Ç´Â °¢°¢ ¾Õ ±ÛÀÚ Çϳª). X1Àº ³× ¹ø° ¹öÆ°, X2´Â ´Ù¼¸ ¹ø° ¹öÆ°ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î: MouseClickDrag, X1, ....

+

+ »ç¿ëÀÚ°¡ Á¦¾îÆÇÀ» ÅëÇÏ¿© ¸¶¿ì½º ÁÂ¿ì ¹öÆ°À» ¹Ù²Û °æ¿ì ÀÚµ¿À¸·Î º¸»óÇÏ·Á¸é, ´ë½Å¿¡ Click ¸í·É¾î¸¦ »ç¿ëÇϽʽÿÀ.

+ +
X1, Y1
+

²ø±â¸¦ ½ÃÀÛÇÒ À§Ä¡ÀÇ x/y ÁÂÇ¥, Ç¥Çö½Ä °¡´É (¸¶¿ì½º´Â ²ø±â°¡ ½ÃÀ۵DZ⠹ٷΠÀü ÀÌ ÁÂÇ¥·Î À̵¿ÇÕ´Ï´Ù). ÁÂÇ¥´Â È°¼º â¿¡ »ó´ëÀûÀÔ´Ï´Ù. ´Ü, CoordMode¸¦ »ç¿ëÇÏ¿© ÁÂÇ¥ ü°è¸¦ ¹Ù²Û °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù. »ý·«Çϸé, ¸¶¿ì½ºÀÇ ÇöÀç À§Ä¡°¡ »ç¿ëµË´Ï´Ù.

+ +
X2, Y2
+

¸¶¿ì½º¸¦ ²ø¾î´Ù ³õÀ» x/y ÁÂÇ¥ (Áï, ¹öÆ°ÀÌ ´­·Á ÀÖ´Â µ¿¾È), Ç¥Çö½Ä. ÁÂÇ¥´Â È°¼º â¿¡ »ó´ëÀûÀÔ´Ï´Ù. ´Ü, CoordMode¸¦ »ç¿ëÇÏ¿© ÁÂÇ¥¸¦ ¹Ù²Û °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+ +
Speed
+

¸¶¿ì½º¸¦ À̵¿ÇÒ ¼Óµµ. ¹üÀ§´Â 0 (°¡Àå ºü¸§)ºÎÅÍ 100 (°¡Àå ´À¸²)±îÁöÀÔ´Ï´Ù. Ç¥Çö½Ä °¡´É. ÁÖÀÇ: ¼Óµµ°¡ 0ÀÌ¸é ¸¶¿ì½º¸¦ ¼ø°£ À̵¿½Ãŵ´Ï´Ù. »ý·«Çϸé, ±âº» ¼Óµµ (SetDefaultMouseSpeed°¡ ¼³Á¤Çϰųª ±×·¸Áö ¾ÊÀ¸¸é 2)°¡ »ç¿ëµË´Ï´Ù.

+

Speed´Â SendInput/Play ¸ðµå¿¡¼­ ¹«½ÃµË´Ï´Ù; ÀÌ ¸ðµå¿¡¼­ ¸¶¿ì½º´Â ¼ø°£ À̵¿ÇÕ´Ï´Ù (¹°·Ð SetMouseDelay¿¡´Â SendPlay¿¡ Àû¿ëÇÒ ¸ðµå°¡ ÀÖ½À´Ï´Ù). ½Ã°¢ÀûÀ¸·Î ¸¶¿ì½º¸¦ ´õ ´À¸®°Ô À̵¿½ÃÅ°·Á¸é -- ¿¹¸¦ µé¾î ûÁßÀ» À§ÇÑ µ¥¸ð¸¦ ¼öÇàÇÏ´Â ½ºÅ©¸³Æ®¶ó¸é -- (¼±ÅÃÀûÀ¸·Î BlockInput°ú ÇÔ²²) SendEvent {Click 100, 200} ¶Ç´Â SendMode Event¸¦ »ç¿ëÇϽʽÿÀ.

+ +
R
+

ÀÌ ¸Å°³º¯¼ö°¡ ±âÈ£ RÀ̸é, X1°ú Y1 ÁÂÇ¥´Â ÇöÀç ¸¶¿ì½º À§Ä¡·ÎºÎÅÍÀÇ »óÅ°Ÿ®(offsets)·Î Ãë±ÞµË´Ï´Ù. ´Ù¸¥ ¸»·Î, Ä¿¼­´Â ÇöÀç À§Ä¡·ÎºÎÅÍ X1 Çȼ¿ ¸¸Å­ ¿À¸¥ÂÊÀ¸·Î (À½¼öÀÌ¸é ¿ÞÂÊÀ¸·Î) ±×¸®°í Y1 Çȼ¿ ¸¸Å­ ¾Æ·¡·Î (À½¼öÀ̸é À§·Î) À̵¿ÇÕ´Ï´Ù.

+

+ ºñ½ÁÇÏ°Ô, X2¿Í Y2 ÁÂÇ¥´Â X1°ú Y1 ÁÂÇ¥·ÎºÎÅÍÀÇ »ó´ë°Å¸®·Î Ãë±ÞµË´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½Àº ¸ÕÀú ±×ÀÇ ½ÃÀÛ À§Ä¡·ÎºÎÅÍ Ä¿¼­¸¦ ¾Æ·¡·Î ¿À¸¥ÂÊÀ¸·Î 5 Çȼ¿ ¸¸Å­ À̵¿½Ãŵ´Ï´Ù. ±× ´ÙÀ½¿¡ ±× À§Ä¡·ÎºÎÅÍ ¸¶¿ì½º¸¦ ¾Æ·¡·Î ±×¸®°í ¿À¸¥ÂÊÀ¸·Î 10 Çȼ¿ ¸¸Å­ ²ø¾î ³õ½À´Ï´Ù: MouseClickDrag, Left, 5, 5, 10, 10, , R.

+ +
+ +

³íÆò

+

+ÀÌ ¸í·É¾î´Â SendMode¿¡ ÀÇÇÏ¿© ¼³Á¤µÈ Àü¼Û ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù.

+

+²ø±â´Â ´Ù¾çÇÑ Send ¸í·É¾îµéÀ» ÅëÇؼ­ ´Þ¼ºÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ ÆíÀÌ ´õ À¯¿¬ÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ¸í·É¾î À̸§À» ÅëÇÏ¿© ¸ðµå¸¦ ÁöÁ¤ÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
SendEvent {Click 6, 52, down}{click 45, 52, up}
+

+À§ÀÇ ¹æ¹ýÀÇ ¶Ç´Ù¸¥ ÀåÁ¡Àº MouseClickDrag¿Í ´Ù¸£°Ô, »ç¿ëÀÚ°¡ Á¦¾îÆÇÀ» ÅëÇÏ¿© ¸¶¿ì½º ÁÂ¿ì ¹öÆ°À» ¹Ù²Û °æ¿ì¿¡µµ ÀÚµ¿À¸·Î º¸»óÇØ Áشٴ °ÍÀÔ´Ï´Ù.

+

+SendPlay ¸ðµå´Â ´Ù¸¥ ¸ðµå¿¡ ºñÇØ ´õ ±¤¹üÀ§ÇÑ °ÔÀÓ¿¡ ¼º°øÀûÀ¸·Î ¸¶¿ì½º À̺¥Æ®¸¦ ¹ß»ý½Ãų ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, SendPlay¸¦ ÅëÇÏ¿© ²ô´Â °ÍÀº ¿¹¸¦ µé¾î WordPad¿Í Metapad °°ÀÌ RichEdit ÄÜÆ®·Ñ¿¡ ÀÛµ¿ÇÏÁö ¾ÊÀ» °¡´É¼ºÀÌ ³ô½À´Ï´Ù (±×¸®°í ´Ù¸¥ °Íµéµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù).

+

+¾î¶² ¾îÇø®ÄÉÀ̼ǰú¤¿ °ÔÀÓÀº ¸¶¿ì½º°¡ ³Ê¹« »¡¸® À̵¿Çϸé ÃßÀûÇÏÁö ¸øÇÒ ¼ö ÀÖ½À´Ï´Ù. speed ¸Å°³º¯¼ö³ª SetDefaultMouseSpeed¸¦ »ç¿ëÇÏ¸é ±× ¼Óµµ¸¦ ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù (±âº» SendEvent ¸ðµå Àü¿ë).

+

+BlockInput ¸í·É¾î¸¦ »ç¿ëÇÏ¸é »ç¿ëÀÚÀÇ ¹°¸®Àû ¸¶¿ì½º ¿òÁ÷ÀÓ¿¡ ¸¶¿ì½º ¸í·É¾î·Î ¹ß»ýµÈ ¸¶¿ì½º À̺¥Æ®µéÀÌ ¹æÇØ ¹ÞÁö ¾Ê½À´Ï´Ù. ±×·¸Áö¸¸, ÀϹÝÀûÀ¸·Î SendInput/Play ¸ðµå¿¡´Â ºÒÇÊ¿äÇÕ´Ï´Ù. ¿Ö³ÄÇϸé ÀÚµ¿À¸·Î »ç¿ëÀÚÀÇ ¹°¸®Àû ¸¶¿ì½º ¿òÁ÷ÀÓÀ» µÚ·Î ¿¬±â½ÃÄÑ Áֱ⠶§¹®ÀÔ´Ï´Ù.

+

+¸¶¿ì½ºÀÇ Å¬¸¯ ´Ù¿î°ú Ŭ¸¯ ¾÷ »çÀÌ¿¡ ÀÚµ¿ ½Ã°£ Áö¿¬ÀÌ ÀÖ½À´Ï´Ù (SendInput ¸ðµå´Â ¿¹¿Ü). ÀÌ Áö¿¬Àº ¶Ç ¸¶¿ì½º°¡ ²ø±â ¿¬»êÀ» ÇÏ´Â µ¿¾È À̵¿ »çÀÌ¿¡¼­µµ ÀϾ´Ï´Ù. Áö¿¬ ½Ã°£ÀÇ ±æÀ̸¦ º¯°æÇÏ·Á¸é SetMouseDelay¸¦ »ç¿ëÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

CoordMode, SendMode, SetDefaultMouseSpeed, SetMouseDelay, Click, MouseClick, MouseGetPos, + MouseMove, BlockInput

+ +

¿¹Á¦

+
MouseClickDrag, left, 0, 200, 600, 400
+
+; ´ÙÀ½ ¿¹Á¦´Â MS Paint¸¦ ¿­¾î ÀÛÀº ÁýÀ» ±×¸³´Ï´Ù:
+Run, mspaint.exe
+WinWaitActive, ahk_class MSPaintApp,, 2
+if ErrorLevel
+    return
+MouseClickDrag, L, 150, 250, 150, 150
+MouseClickDrag, L, 150, 150, 200, 100
+MouseClickDrag, L, 200, 100, 250, 150
+MouseClickDrag, L, 250, 150, 150, 150
+MouseClickDrag, L, 150, 150, 250, 250
+MouseClickDrag, L, 250, 250, 250, 150
+MouseClickDrag, L, 250, 150, 150, 250
+MouseClickDrag, L, 150, 250, 250, 250
+ + + diff --git a/src/docs/commands/MouseGetPos.htm b/src/docs/commands/MouseGetPos.htm new file mode 100644 index 0000000..3e66fb1 --- /dev/null +++ b/src/docs/commands/MouseGetPos.htm @@ -0,0 +1,69 @@ + + + + +MouseGetPos + + + + + + + +

MouseGetPos

+ +

¸¶¿ì½º Ä¿¼­ÀÇ ÇöÀç À§Ä¡¸¦ ¿­¶÷ÇÕ´Ï´Ù. ¼±ÅÃÀûÀ¸·Î ¾î´À â°ú ÄÜÆ®·Ñ¿¡ ¸¶¿ì½º Ä¿¼­°¡ ¿Ã¶ó°¡ ÀÖ´ÂÁö ¿­¶÷ÇÕ´Ï´Ù.

+ +
MouseGetPos, [OutputVarX, OutputVarY, OutputVarWin, OutputVarControl, 1|2|3]
+

¸Å°³º¯¼ö

+
+ +
OutputVarX/Y
+

X¿Í Y ÁÂÇ¥¸¦ ¿­¶÷ÇÒ º¯¼öÀÇ À̸§. ¿­¶÷µÈ ÁÂÇ¥´Â È°¼º â¿¡ »ó´ëÀûÀÔ´Ï´Ù. ´Ü, CoordMode¸¦ »ç¿ëÇÏ¿© È­¸é ÁÂÇ¥¸¦ ¹Ù²Û °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+
+ +
OutputVarWin
+

ÀÌ ¼±ÅÃÀûÀÎ ¸Å°³º¯¼ö´Â ¸¶¿ì½º Ä¿¼­ ¾Æ·¡¿¡ Àִ âÀÇ À¯ÀÏÇÑ ID ¹øÈ£¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§ÀÔ´Ï´Ù. âÀ» ¾Ë¾Æ³¾ ¼ö ¾øÀ¸¸é, ÀÌ º¯¼ö´Â ºñ¿öÁý´Ï´Ù.

+

âÀº È°¼ºÈ­µÇÁö ¾Ê¾Æµµ ŽÁöµË´Ï´Ù. ¼ûÀº âÀº ŽÁöÇÒ ¼ö ¾ø½À´Ï´Ù.

+ +
OutputVarControl
+

ÀÌ ¼±ÅÂÀûÀÎ ¸Å°³º¯¼ö´Â ¸¶¿ì½º Ä¿¼­ ¾Æ·¡¿¡ ÀÖ´Â ÄÜÆ®·ÑÀÇ À̸§(ClassNN)À» ÀúÀåÇÒ º¯¼öÀÇ À̸§ÀÔ´Ï´Ù. ÄÜÆ®·ÑÀ» °áÁ¤ÇÒ ¼ö ¾øÀ¸¸é, ÀÌ º¯¼ö´Â ºñ¿öÁý´Ï´Ù.

+

+ ÄÜÆ®·ÑÀÇ À̸§Àº ¾ðÁ¦³ª Window Spy·Î º¸¿©Áö´Â À̸§°ú ÀÏÄ¡ÇØ¾ß ÇÕ´Ï´Ù. ÃÖ¼Ò v1.0.14+ÀÌ»ó ¿ä±¸. ±×·¸Áö¸¸ Window Spy¿Í ´Ù¸£°Ô, ¸¶¿ì½º Ä¿¼­ ¾Æ·¡ÀÇ Ã¢ÀÌ È°¼ºÈ­µÇ¾î ÀÖÁö ¾Ê¾Æµµ ÄÜÆ®·ÑÀ» ŽÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +
1|2|3
+

»ý·«Çϸé, ±âº» °ªÀº 0ÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ´ÙÀ½ ¼ýÀÚ Áß Çϳª¸¦ ÁöÁ¤ÇϽʽÿÀ:

+

1: OutputVarControlÀ» ¾Ë¾Æ ³»´Â µ¥ ´õ °£´ÜÇÑ ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù. ÀÌ ¹æ¹ýÀº SysEditÀ̳ª TextPad °°Àº ´ÙÁß ¹®¼­ ÀÎÅÍÆäÀ̽º(Multiple Document Interface (MDI)) ¾îÇø®ÄÉÀ̼ǿ¡¼­ È°¼º/ÃÖ»óÀ§ ÀÚ¼Õ Ã¢À» ¿Ã¹Ù¸£°Ô ¿­¶÷ÇÕ´Ï´Ù. ±×·¸Áö¸¸, ´Ù¸¥ ¸ñÀûÀ¸·Î´Â Á¤¹ÐÇÏÁö ¸øÇÕ´Ï´Ù. ¿¹¸¦ µé¾î GroupBox ÄÜÆ®·Ñ ¾ÈÀÇ ÄÜÆ®·ÑÀº Á¦´ë·Î ŽÁöÇÏÁö ¸øÇÕ´Ï´Ù.

+

+ 2 [v1.0.43.06+]: ÄÜÆ®·ÑÀÇ ClassNNÀÌ ¾Æ´Ï¶ó ÄÜÆ®·ÑÀÇ HWND¸¦ OutputVarControl¿¡ ÀúÀåÇÕ´Ï´Ù.

+

3 [v1.0.43.06+]: À§ÀÇ 1°ú 2ÀÇ Á¶ÇÕ.

+ +
+ +

³íÆò

+

+»óÀÀÇÏ´Â Á¤º¸°¡ ÇÊ¿äÇÏÁö ¾ÊÀ» °æ¿ì Ãâ·Â º¯¼ö´Â ¸ðµÎ »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+CoordMode, WinGet, SetDefaultMouseSpeed, Click

+ +

¿¹Á¦

+
MouseGetPos, xpos, ypos 
+Msgbox, The cursor is at X%xpos% Y%ypos%. 
+
+; ÀÌ ¿¹Á¦¿¡¼­ ¸¶¿ì½º¸¦ À̵¿½ÃÄѼ­ ÇöÀç ¸¶¿ì½º ¾Æ·¡¿¡ ÀÖ´Â
+; âÀÇ Á¦¸ñÀ» º¼ ¼ö ÀÖ½À´Ï´Ù:
+#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
+ + + diff --git a/src/docs/commands/MouseMove.htm b/src/docs/commands/MouseMove.htm new file mode 100644 index 0000000..f594031 --- /dev/null +++ b/src/docs/commands/MouseMove.htm @@ -0,0 +1,62 @@ + + + + +MouseMove + + + + + + + +

MouseMove

+ +

¸¶¿ì½º Ä¿¼­¸¦ À̵¿½Ãŵ´Ï´Ù.

+ +
MouseMove, X, Y [, Speed, R]
+

¸Å°³º¯¼ö

+
+ +
X, Y
+

¸¶¿ì½º¸¦ À̵¿ÇÒ x/y ÁÂÇ¥, Ç¥Çö½Ä °¡´É. Á¶Ç¥´Â È°¼º â¿¡ »ó´ëÀûÀÔ´Ï´Ù. ´Ü, CoordMode¸¦ »ç¿ëÇÏ¿© ÁÂÇ¥ ü°è¸¦ ¹Ù²Ù¾ú´Ù¸é ¿¹¿ÜÀÔ´Ï´Ù.

+ +
Speed
+

¸¶¿ì½º¸¦ À̵¿ÇÒ ¼Óµµ. ¹üÀ§´Â 0 (°¡Àå ºü¸§)ºÎÅÍ 100 (°¡Àå ´À¸²)±îÁö. Ç¥Çö½Ä °¡´É. ÁÖÀÇ: ¼Óµµ°¡ 0ÀÌ¸é ¸¶¿ì½º´Â ¼ø°£ À̵¿ÇÕ´Ï´Ù. »ý·«Çϸé, ±âº» ¼Óµµ°¡ (SetDefaultMouseSpeed°¡ ¼³Á¤ÇÑ ¶Ç´Â 2) »ç¿ëµË´Ï´Ù.

+

Speed´Â SendInput/Play ¸ðµå¿¡ ´ëÇؼ­´Â ¹«½ÃµË´Ï´Ù; ¸¶¿ì½º¸¦ ¼ø°£ À̵¿½Ãŵ´Ï´Ù (±×·¸Áö¸¸ SetMouseDelay´Â SendPlay¿¡ Àû¿ëÇÒ ¸ðµå°¡ ÀÖ½À´Ï´Ù). ½Ã°¢ÀûÀ¸·Î ¸¶¿ì½º¸¦ ´õ ´À¸®°Ô À̵¿½ÃÅ°·Á¸é -- ûÁßÀ» À§ÇØ µ¥¸ð¸¦ ¼öÇàÇÏ´Â ½ºÅ©¸³Æ®¶ó¸é -- SendEvent {Click 100, 200} ¶Ç´Â SendMode Event (¼±ÅÃÀûÀ¸·Î BlockInput°ú ÇÔ²²) »ç¿ëÇϽʽÿÀ.

+ +
R
+

ÀÌ ¸Å°³º¯¼ö°¡ ±âÈ£ RÀ̸é, X¿Í Y ÁÂÇ¥´Â ÇöÀç ¸¶¿ì½º À§Ä¡·ÎºÎÅÍÀÇ »ó´ë°Å¸®(offsets)·Î Ãë±ÞµË´Ï´Ù. ´Ù¸¥ ¸»·Î, Ä¿¼­´Â °ÅÀÇ ÇöÀç À§Ä¡ X Çȼ¿ ¸¸Å­ ¿À¸£ÂÊÀ¸·Î (À½¼öÀÌ¸é ¿ÞÂÊÀ¸·Î) ±×¸®°í Y Çȼ¿ ¸¸Å­ ¾Æ·¡ÂÊÀ¸·Î (À½¼öÀ̸é À§·Î) À̵¿ÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+ÀÌ ¸í·É¾î´Â SendMode°¡ ¼³Á¤ÇÑ Àü¼Û ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù.

+

+SendPlay ¸ðµå´Â ´Ù¸¥ ¸ðµåº¸´Ù ´õ ±¤¹üÀ§ÇÑ °ÔÀÓ¿¡¼­ ¼º°øÀûÀ¸·Î ¸¶¿ì½º À̺¥Æ®¸¦ ¹ß»ý½Ãų ¼ö ÀÖ½À´Ï´Ù. °Ô´Ù°¡, ¾î¶² ¾îÇø®ÄÉÀ̼ǰú °ÔÀÓÀº ¸¶¿ì½º°¡ ³Ê¹« ºü¸£°Ô ¿òÁ÷Àδٸé ÃßÀûÇÏ´Â µ¥ ¾î·Á¿òÀÌ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. speed ¸Å°³º¯¼ö³ª SetDefaultMouseSpeed¸¦ »ç¿ëÇÏ¸é ±× ¼Óµµ¸¦ ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù (±âº» SendEvent ¸ðµå Àü¿ë).

+

+BlockInput ¸í·É¾îÀ» »ç¿ëÇÏ¸é »ç¿ëÀÚÀÇ ¹°¸®ÀûÀÎ ¸¶¿ì½º È°µ¿ ¶§¹®¿¡ ¸¶¿ì½º ¸í·É¾î·Î »ý»êÇÑ Èä³»³½ ¸¶¿ì½º À̺¥Æ®°¡ ¾îÁö·´°Ô µÇ´Â °ÍÀ» ¸·À» ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ÀÌ°ÍÀº º¸Åë SendInput/Play ¸ðµå¿¡´Â ºÒÇÊ¿äÇÕ´Ï´Ù. ¿Ö³ÄÇϸé ÀÚµ¿À¸·Î »ç¿ëÀÚÀÇ ¹°¸®Àû ¸¶¿ì½º È°µ¿À» ³ªÁßÀ¸·Î ¿¬±âÇϱ⠶§¹®ÀÔ´Ï´Ù.

+

+¸¶¿ì½ºÀÇ ¸Å ¿òÁ÷ÀÓ¸¶´Ù ÀÚµ¿À¸·Î Áö¿¬ ½Ã°£ÀÌ »ðÀԵ˴ϴ٠(SendInput ¸ðµå´Â ¿¹¿Ü). SetMouseDelay¸¦ »ç¿ëÇϸé Áö¿¬ ½Ã°£ÀÇ ±æÀ̸¦ º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+´ÙÀ½Àº ¸¶¿ì½º Ä¿¼­¸¦ À̵¿ÇÏ´Â ´Ù¸¥ ¹æ¹ýÀÔ´Ï´Ù. ¾î¶² ´ÙÁß-¸ð´ÏÅÍ ±¸¼º¿¡¼­´Â ´õ Àß ÀÛµ¿ÇÒ ¼öµµ ÀÖ½À´Ï´Ù:

+ +
DllCall("SetCursorPos", int, 100, int, 400)  ; ù ¹ø° ¼ýÀÚ´Â X-ÁÂÇ¥ÀÌ°í µÎ ¹ø° ÁÂÇ¥´Â YÀÔ´Ï´Ù (È­¸é¿¡ »ó´ëÀûÀÔ´Ï´Ù).
+

+°ü·ÃÇÏ¿© ¸»¾¸µå¸®¸é, ¸¶¿ì½º Ä¿¼­´Â Ä¿¼­-¼û±â±â ¿¹Á¦¿Í °°ÀÌ Àӽ÷Π¼ûÀ» ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+CoordMode, SendMode, SetDefaultMouseSpeed, SetMouseDelay, Click, MouseClick, MouseClickDrag, MouseGetPos, BlockInput

+ +

¿¹Á¦

+
; ¸¶¿ì½º¸¦ »õ À§Ä¡·Î À̵¿ÇÕ´Ï´Ù:
+MouseMove, 200, 100
+
+; ¸¶¿ì½º¸¦ õõÈ÷ (¼Óµµ 50 vs. 2) ÇöÀç À§Ä¡·ÎºÎÅÍ
+; 20 Çȼ¿¸¸Å­ ¿À¸¥ÂÊÀ¸·Î ±×¸®°í 30 Çȼ¿ ¸¸Å­ ¾Æ·¡ÂÊÀ¸·Î À̵¿½Ãŵ´Ï´Ù:
+MouseMove, 20, 30, 50, R
+ + + diff --git a/src/docs/commands/MsgBox.htm b/src/docs/commands/MsgBox.htm new file mode 100644 index 0000000..8536985 --- /dev/null +++ b/src/docs/commands/MsgBox.htm @@ -0,0 +1,229 @@ + + + + +MsgBox + + + + + + + + +

MsgBox

+ +

ÁöÁ¤µÈ ÅؽºÆ®¸¦ ÀÛÀº â¿¡ º¸¿©ÁÝ´Ï´Ù. ±× ¾È¿¡ Çϳª ÀÌ»óÀÇ ¹öÆ°ÀÌ µé¾î ÀÖ½À´Ï´Ù (¿¹¸¦ µé¾î Yes ±×¸®°í No).

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

¸Å°³º¯¼ö

+
+ +
Text
+

¸ðµç ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, MsgBox´Â ÅؽºÆ® "°è¼ÓÇÏ·Á¸é OK¸¦ ´©¸£½Ê½Ã¿À."¸¦ º¸¿©ÁÝ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ÀÌ ¸Å°³º¯¼ö´Â »ç¿ëÀÚ¿¡°Ô ¹«¾ùÀ» ÇØ¾ß ÇÏ´ÂÁö ¶Ç´Â Á¤º¸¸¦ Á¦°øÇϱâ À§ÇØ ¸Þ½ÃÁö ¹Ú½º ¾È¿¡ º¸¿©ÁÖ´Â ÅؽºÆ®ÀÔ´Ï´Ù.

+

ÇǽŠ¿¬¼Ó¿­À» »ç¿ëÇϸé Ư¼ö ¹®ÀÚ¸¦ Ç¥±âÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, `nÀº ¶óÀÎÇÇµå ¹®ÀÚ¸¦ ³ªÅ¸³À´Ï´Ù. ÀÌ ¹®ÀÚ´Â ÇöÀç ÁÙÀ» ³¡³»°í »õ ÁÙÀ» ½ÃÀÛÇÕ´Ï´Ù. ±×¸®ÇÏ¿©, text1`n`ntext2´Â text1°ú text2 »çÀÌ¿¡ ºó ÁÙÀ» ¸¸µì´Ï´Ù.

+

+ Text°¡ ±æ¸é, °è¼Ó ¼½¼ÇÀ» ¼ö´ÜÀ¸·Î ¿©·¯ ªÀº ÁÙµé·Î °¡¸¦ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é °¡µ¶¼º°ú À¯Áö°ü¸®¼ºÀÌ °³¼±µË´Ï´Ù.

+ +
Options
+

¸Þ½ÃÁö ¹Ú½ºÀÇ Á¾·ù¿Í °¡´ÉÇÑ ¹öÆ° Á¶ÇÕÀ» ³ªÅ¸³À´Ï´Ù. ºñ¾î Àְųª »ý·«Çϸé, ±âº»°ªÀº 0ÀÔ´Ï´Ù. Çã¿ëµÇ´Â °ªµéÀº ¾Æ·¡ÀÇ Ç¥¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ ÀÌ ¸Å°³º¯¼ö´Â ±âÈ£ ±×´ë·ÎÀÇ ¼ýÀÚÀ̰ųª (v1.1.06+) ¶Ç´Â % Options¿Í °°Àº °­Á¦ Ç¥Çö½ÄÀÔ´Ï´Ù. ºñ¾î ÀÖÁö ¾ÊÀº ´Ù¸¥ °ªµéÀº ÀÌ ¸Å°³º¯¼ö·Î ÀÎÁöÇÏÁö ¾Ê°í, ´ÜÀÏ-¸Å°³º¯¼öÀÇ TextÀÇ ÀϺηΠÀÎÁöÇÕ´Ï´Ù.

+ +
Title
+

¸Þ½ÃÁö ¹Ú½º âÀÇ Á¦¸ñ. »ý·«Çϰųª ºñ¾î ÀÖÀ¸¸é, ±âº»°ªÀº ½ºÅ©¸³Æ®ÀÇ (°æ·Î ¾øÀÌ) À̸§ÀÔ´Ï´Ù.

+ +
Timeout
+

(¼±ÅÃÀû) ÃÊ´ÜÀ§ ½Ã°£ Á¦ÇÑ, ¾È¿¡ ½ÊÁø ¼Ò¼öÁ¡ÀÌ µé¾î ÀÖÁö¸¸ ±âº»ÀûÀ¸·Î Ç¥Çö½ÄÀÌ ¾Æ´Õ´Ï´Ù. v1.1.06+¿¡¼­, % mins*60¿Í °°Àº °­Á¦ Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.

+

+ °ªÀÌ 2147483 (24.8 ÀÏ)À» ³Ñ¾î¼­¸é, 2147483ÀÌ ¼³Á¤µË´Ï´Ù. ½Ã°£Á¦ÇÑÀÌ °æ°úÇÑ ÈÄ¿¡ ¸Þ½ÃÁö ¹Ú½º´Â ÀÚµ¿À¸·Î ´ÝÈü´Ï´Ù. ±×¸®°í IfMsgBox ¸í·É¾î°¡ ±× °ª TIMEOUTÀ» º¸°Ô µË´Ï´Ù.

+

+ ¾Ë·ÁÁø ÇÑ°è: MsgBox¿¡ ¿ÀÁ÷ OK ¹öÆ°¸¸ ÀÖÀ» °æ¿ì, ¶Ç´Ù¸¥ ¾²·¹µå¿¡ ÀÇÇØ ÀÚ½ÅÀÇ ¾²·¹µå°¡ ÀÎÅÍ·´Æ® µÇ¾î ÀÖ´Â µ¿¾È¿¡ MsgBox ½Ã°£Á¦ÇÑÀÌ ³¡³ª¸é IfMsgBox´Â OK ¹öÆ°ÀÌ ´­·È´Ù°í »ý°¢ÇÕ´Ï´Ù.

+ +
+ +

+Options ¸Å°³º¯¼ö´Â ´ÙÀ½ °ªÀ» Á¶ÇÕ(ÇÕ)À¸·Î ±¸¼ºµË´Ï´Ù.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
±â´É½ÊÁø¼ö °ª½ÊÀ°Áø¼ö °ª
OK (Áï, OK ¹öÆ°ÀÌ º¸¿©Áý´Ï´Ù)00x0
OK/Cancel10x1
Abort/Retry/Ignore20x2
Yes/No/Cancel30x3
Yes/No40x4
Retry/Cancel50x5
Cancel/Try Again/Continue60x6
µµ¿ò¸» ¹öÆ° Ãß±â (¾Æ·¡ ³íÆò ÂüÁ¶)163840x4000
   
¼Õ ¾ÆÀÌÄÜ (ÁßÁö/¿¡·¯)160x10
Áú¹® ¾ÆÀÌÄÜ320x20
°¨Åº ¾ÆÀÌÄÜ480x30
º°Ç¥ ¾ÆÀÌÄÜ (Á¤º¸)640x40
   
2nd ¹öÆ°ÀÌ ±âº»°ª2560x100
3rd ¹öÆ°ÀÌ ±âº»°ª5120x200
   
System Modal (Ç×»ó À§)40960x1000
Task Modal81920x2000
Ç×»ó À§ (½ºÅ¸ÀÏ WS_EX_TOPMOST)
+ (½Ã½ºÅÛ ¸ðµ¨°ú °°Áö¸¸ Á¦¸ñ ¹Ù ¾ÆÀÌÄÜÀÌ »ý·«µË´Ï´Ù)
2621440x40000
   
ÅؽºÆ®¸¦ ¿ìÃø Á¤·Ä5242880x80000
Hebrew/Arabic¿¡ ´ëÇÏ¿© ¿À¸¥ÂÊ¿¡¼­ ¿ÞÂÊÀ¸·Î ÀÐÀ½ 10485760x100000
+

³íÆò

+

+À§ÀÇ Ç¥¿¡¼­ MsgBox¿¡ º¸¿©ÁÙ °ªµéÀ» ´õÇؼ­ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î, ±âº» ¹öÆ°À» Yes ´ë½Å¿¡ No·Î ÇÏ¿© Yes/No ¹Ú½º¸¦ ÁöÁ¤ÇÏ·Á¸é, Options °ªÀº 256+4 (260)°¡ µË´Ï´Ù. ½ÊÀ°Áø¼ö·Î 0x100+0x4 (0x104)°¡ µË´Ï´Ù.

+

+MsgBox´Â ¶È¶ÈÇÏ°Ô ½°Ç¥¸¦ ó¸®ÇÕ´Ï´Ù. ±×·¡¼­ º¸Åë Text ¸Å°³º¯¼ö ¾È¿¡ ÀÖ´Â ½°Ç¥¸¦ ÇǽŠ½Ãų ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+ÃÖ±ÙÀÇ MsgBox¿¡¼­ »ç¿ëÀÚ°¡ ¾î´À ¹öÆ°À» ´­·¶´ÂÁö ¾Ë¾Æ ³»·Á¸é, IfMsgBox ¸í·É¾î¸¦ »ç¿ëÇϽʽÿÀ. ¿¹¸¦ µé¾î:

+ +
MsgBox, 4,, °è¼Ó ÇϽðڽÀ´Ï±î? (Yes ¶Ç´Â No¸¦ ´©¸£½Ê½Ã¿À)
+IfMsgBox Yes
+    MsgBox Yes¸¦ ´©¸£¼Ì½À´Ï´Ù.
+else
+    MsgBox No¸¦ ´©¸£¼Ì½À´Ï´Ù.
+

+¹öÆ°ÀÇ À̸§µéÀº ´ÙÀ½ ¿¹Á¦¸¦ µû¶ó Àç´ÜÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Á¤º¸: MsgBox âÀÌ È°¼ºÈ­µÇ¾î ÀÖ´Â µ¿¾È Control-C¸¦ ´©¸£¸é ±×ÀÇ ÅؽºÆ®¸¦ Ŭ¸³º¸µå·Î º¹»çÇÕ´Ï´Ù. ÀÌ°ÍÀº AutoHotkey°¡ »ý»êÇÑ MsgBox´Â ¹°·ÐÀÌ°í ¸ðµç MsgBox¿¡ Àû¿ëµË´Ï´Ù.

+

+GUI â°ú ÇÔ²² MsgBox »ç¿ëÇϱâ: GUI âÀº Gui +OwnDialogs¸¦ »ç¿ëÇÏ¸é ¸ð´Þ MsgBox¸¦ º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. ¸ð´Þ MsgBox¿¡¼­ »ç¿ëÀÚ´Â MsgBox¸¦ ³¡³¾ ¶§±îÁö GUI â°ú »óÈ£ ÀÛ¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ±×·± °æ¿ì, À§ÀÇ Å×ÀÌºí¿¡ ÀÖ´Â System Modal ¶Ç´Â Task Modal ¿É¼ÇÀ» ÁöÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+Gui +OwnDialogs°¡ °ÜÁ® ÀÖÁö ¾ÊÀ¸¸é, Task Modal ¿É¼Ç(8192)À» »ç¿ëÇÏ¸é »ç¿ëÀÚ°¡ MsgBox¸¦ ³¡³¾ ¶§±îÁö ½ºÅ©¸³Æ®ÀÇ ¸ðµç âÀ» ²ø ¼ö ÀÖ½À´Ï´Ù.

+

+µµ¿ò¸» ¹öÆ°: µµ¿ò¸» ¹öÆ° ¿É¼Ç (83)ÀÌ Options¿¡ Á¸ÀçÇϸé, µµ¿ò¸» ¹öÆ°À» Ŭ¸¯Çصµ ¾Æ¹« È¿°úµµ ¾ø½À´Ï´Ù. ´Ü, ´ÙÀ½ µÎ Á¶°ÇÀÌ ¸ðµÎ ÂüÀÎ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù:

+
    +
  1. Gui +OwnDialogs¸¦ ¼ö´ÜÀ¸·Î MsgBox¸¦ GUI âÀÌ ¼ÒÀ¯ÇÕ´Ï´Ù.
  2. +
  3. ½ºÅ©¸³Æ®°¡ WM_HELP ¸Þ½ÃÁö (0x53)¸¦ °¨½ÃÇÏ°í ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: OnMessage(0x53, "WM_HELP"). WM_HELP() ÇÔ¼ö°¡ È£ÃâµÉ ¶§, »ç¿ëÀÚ¸¦ ¾È³» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ¶Ç´Ù¸¥ âÀ̳ª MsgBox¸¦ º¸¿©ÁÝ´Ï´Ù.
  4. +
+

+´Ý±â ¹öÆ° (MsgBoxÀÇ Á¦¸ñ ¹Ù¿¡ ÀÖ´Â): MsgBox âÀº ¿î¿µ üÁ¦ÀÇ ³»Àå Ư¡À̱⠶§¹®¿¡ , ±×ÀÇ X ¹öÆ°Àº ¾î¶² ¹öÆ°ÀÌ Á¸ÀçÇÒ °æ¿ì¿¡¸¸ È°¼º È­µË´Ï´Ù. ¿ÀÁ÷ OK ¹öÆ°¸¸ ÀÖ´Ù¸é, X ¹öÆ°À» Ŭ¸¯ÇÏ´õ¶óµµ OK¸¦ Ŭ¸¯ÇÑ °Í°ú °°½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, X ¹öÆ°Àº ºñÈ°¼ºÈ­ µË´Ï´Ù. ´Ü, Cancel ¹öÆ°ÀÌ ÀÖ´Ù¸é ¿¹¿ÜÀε¥, ÀÌ °æ¿ì X¸¦ Ŭ¸¯ÇÑ °ÍÀº Cancel¸¦ ´©¸¥ °Í°ú °°½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

IfMsgBox, InputBox, FileSelectFile, FileSelectFolder, ToolTip, GUI

+ +

¿¹Á¦

+
MsgBox ÀÌ°ÍÀº ¸Å°³º¯¼ö°¡ ÇÑ °³ÀÎ ¹æ¹ýÀÔ´Ï´Ù. ½°Ç¥ (,)´Â ÇǽŽÃų ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.
+MsgBox, 4, , ÀÌ°ÍÀº ¸Å°³º¯¼ö°¡ ¼¼ °³ÀÎ ¹æ¹ýÀÔ´Ï´Ù. ½°Ç¥ (,)´Â ÇǽŠ½Ãų ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.
+MsgBox, 4, , °è¼ÓÇϽðڽÀ´Ï±î? (YES ¶Ç´Â NO¸¦ ´©¸¨´Ï´Ù)
+IfMsgBox No
+    return
+MsgBox, 4, , ¸Å°³º¯¼ö°¡ ³× °³ÀÎ ¹æ¹ý: ÀÌ MsgBox´Â ½Ã°£Á¦ÇÑÀÌ 5ÃÊÀÔ´Ï´Ù. °è¼ÓÇϽðڽÀ´Ï±î?, 5
+IfMsgBox Timeout
+    MsgBox 5 ÃÊ ¾È¿¡ YES ¶Ç´Â NO¸¦ ´©¸£Áö ¾Ê¾Ò½À´Ï´Ù.
+else IfMsgBox No
+    return
+    
+; ¸Å°³º¯¼ö ¾Õ¿¡ "% "¸¦ ¹èÄ¡Çϸé, Ç¥Çö½ÄÀÌ µË´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­,
+; °è»êÀÌ ¼öÇàµÇ°í, ÀǽÃ-¹è¿­ ¿ø¼Ò¿¡ Á¢±ÙÇÕ´Ï´Ù. ±×¸®°í ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù.
+; ÀÌ ¸ðµç Ç׸ñµéÀº "." ¿¬»êÀÚ·Î °áÇյǾî ÇϳªÀÇ ¹®ÀÚ¿­À» Çü¼ºÇØ MsgBox¿¡ º¸¿©Áý´Ï´Ù:
+MsgBox % "New width for object #" . A_Index . " is: " . RestrictWidth(ObjectWidth%A_Index% * ScalingFactor)
+
+; ´ÙÀ½ ¿¹Á¦´Â MsgBox°¡ ÃÊÁ¡À» ÈÉÄ¡°í ÀÖ´Ù°í »ç¿ëÀÚ¿¡°Ô °æ°íÇÕ´Ï´Ù (ÀÌ °æ¿ì »ç¿ëÀÚ°¡ ŸÀÚÇÏ°í ÀÖÀ½).
+SplashTextOn,,, MsgBox°¡ °ð »ç¶óÁý´Ï´Ù.
+Sleep 3000
+SplashTextOff
+MsgBox ¹é¾÷ÀÌ ¿Ï·áµÇ¾ú½À´Ï´Ù.
+ + + diff --git a/src/docs/commands/NumGet.htm b/src/docs/commands/NumGet.htm new file mode 100644 index 0000000..cd96cff --- /dev/null +++ b/src/docs/commands/NumGet.htm @@ -0,0 +1,53 @@ + + + + +NumGet + + + + + + +

NumGet

+

ÁöÁ¤µÈ ÁÖ¼Ò+¿ÀÇÁ¼Â¿¡ ÀúÀåµÈ ÀÌÁø ¼ýÀÚ¸¦ µ¹·ÁÁÝ´Ï´Ù.

+
Number := NumGet(VarOrAddress [, Offset = 0][, Type = "UPtr"])
+ +

¸Å°³º¯¼ö

+
+ +
VarOrAddress
+
+

¸Þ¸ð¸® ÁÖ¼Ò ¶Ç´Â º¯¼ö. VarOrAddress°¡ MyVar °°Àº º¯¼ö À̸é, ±× º¯¼öÀÇ ¹®ÀÚ¿­ ¹öÆÛÀÇ ÁÖ¼Ò°¡ »ç¿ëµË´Ï´Ù. ÀÌ°ÍÀº º¸Åë &MyVar¸¦ °Ç³×´Â °Í°ú µ¿µîÇÏÁö¸¸, "&"¸¦ »ý·«ÇÏ¸é ´õ ¼öÇ༺´ÉÀÌ ÁÁ°í ¸ñÇ¥ ÁÖ¼Ò + ¿ÀÇÁ¼ÂÀÌ À¯È¿ÇÏ´Ù´Â È®½ÅÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

º¯¼ö¿¡ ¸ñÇ¥ ÁÖ¼Ò°¡ ´ã°Ü ÀÖÀ¸¸é º¯¼ö ÂüÁ¶¸¦ °Ç³×Áö ¸¶½Ê½Ã¿À; ±× °æ¿ì, MyVar+0¿Í °°Àº Ç¥Çö½ÄÀ» °Ç³×½Ê½Ã¿À.

+
+ +
Offset
+

»ó´ë°Å¸®(¿ÀÇÁ¼Â) - ¹ÙÀÌÆ® ´ÜÀ§ - VarOrAddress¿¡ ´õÇØÁ®¼­ ¸ñÇ¥ ÁÖ¼Ò¸¦ °áÁ¤ÇÕ´Ï´Ù.

+ +
Type
+
+

´ÙÀ½ ¹®ÀÚ¿­ Áß Çϳª (»ý·«Çϸé UPtrÀÌ ±âº»°ªÀÔ´Ï´Ù):
+ UInt, Int, Int64, Short, UShort, Char, UChar, Double, Float, Ptr ¶Ç´Â UPtr

+

DllCall¿Í ´Ù¸£°Ô, À̰͵éÀº ¹®ÀÚ ±×´ë·ÎÀÇ ¹®ÀÚ¿­·Î »ç¿ëµÉ ¶§ ¹Ýµå½Ã µû¿ÈÇ¥·Î µÑ·¯ ½Î¾ß ÇÕ´Ï´Ù.

+

ÀÚ¼¼ÇÑ °ÍÀº DllCall À¯ÇüÀ» ÂüÁ¶ÇϽʽÿÀ.

+
+ +
+ +

¹Ýȯ °ª

+

+¸ñÇ¥ ÁÖ¼Ò°¡ À¯È¿ÇÏÁö ¾ÊÀ¸¸é, ºó ¹®ÀÚ¿­ÀÌ µ¹¾Æ¿É´Ï´Ù. ±×·¸Áö¸¸, ¾î¶² ¹«È¿ ÁÖ¼Ò´Â ±×·± ½ÄÀ¸·Î ŽÁöÇÒ ¼ö ¾ø½À´Ï´Ù. ±×·¡¼­ ¿¹»óÄ¡ ¸øÇÑ ÇàÀ§¸¦ ¾ß±âÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+±×·¸Áö ¾ÊÀ¸¸é, ÁöÁ¤µÈ ÁÖ¼Ò+¿ÀÇÁ¼Â¿¡ ÀÖ´Â ¼ýÀÚ°¡ ¹ÝȯµË´Ï´Ù.

+ +

ÃÑÆò

+

+¼¼ °³ÀÇ ¸Å°³º¯¼ö¸¸ Á¸ÀçÇϸé, ¼¼ ¹ø° ¸Å°³º¯¼ö´Â Offset ¶Ç´Â TypeÀÏ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, NumPut(x, var, "int")´Â À¯È¿ÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

NumPut, DllCall, VarSetCapacity

+ + + + diff --git a/src/docs/commands/NumPut.htm b/src/docs/commands/NumPut.htm new file mode 100644 index 0000000..0d249cb --- /dev/null +++ b/src/docs/commands/NumPut.htm @@ -0,0 +1,61 @@ + + + + +NumPut + + + + + + +

NumPut

+

ÁöÁ¤µÈ ÁÖ¼Ò + ¿ÀÇÁ¼Â¿¡ ÀÌÁø Çü½ÄÀ¸·Î ¼ýÀÚ¸¦ ÀúÀåÇÕ´Ï´Ù.

+
NumPut(Number, VarOrAddress [, Offset = 0][, Type = "UPtr"])
+ +

¸Å°³º¯¼ö

+
+ +
Number
+

ÀúÀåÇÒ ¼ýÀÚ.

+ +
VarOrAddress
+
+

+ ¸Þ¸ð¸® ÁÖ¼Ò ¶Ç´Â º¯¼ö. VarOrAddress°¡ MyVar¿Í °°Àº º¯¼öÀ̸é, º¯¼öÀÇ ¹®ÀÚ¿­ ¹öÆÛÀÇ ÁÖ¼Ò°¡ »ç¿ëµË´Ï´Ù. ÀÌ°ÍÀº º¸Åë &MyVar¸¦ °Ç³×´Â °Í°ú µ¿µîÇÏÁö¸¸, "&"¸¦ »ý·«ÇÏ¸é ¼öÇ༺´ÉÀÌ Çâ»óµÇ°í ¸ñÇ¥ ÁÖ¼Ò + ¿ÀÇÁ¼ÂÀÌ À¯È¿ÇÏ´Ù°í È®½ÅÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ º¯¼ö¿¡ ¸ñÇ¥ ÁÖ¼Ò°¡ µé¾î ÀÖ´Ù¸é º¯¼ö ÂüÁ¶¸¦ °Ç³×Áö ¸¶½Ê½Ã¿À; ±×·² °æ¿ì, MyVar+0¿Í °°Àº Ç¥Çö½ÄÀ» °Ç³×½Ê½Ã¿À.

+
+ +
Offset
+

¸ñÇ¥ ÁÖ¼Ò¸¦ °áÁ¤Çϱâ À§ÇØ VarOrAddress¿¡ ´õÇØÁö´Â - ¹ÙÀÌÆ® ´ÜÀ§ - ¿ÀÇÁ¼Â.

+ +
Type
+
+

´ÙÀ½ ¹®ÀÚ¿­ Áß Çϳª (»ý·«Çϸé UPtrÀÌ ±âº»°ª):
+ UInt, Int, Int64, Short, UShort, Char, UChar, Double, Float, Ptr or UPtr

+

DllCall°ú ´Ù¸£°Ô, À̰͵éÀº ±âÈ£ ¹®ÀÚ¿­·Î »ç¿ëµÉ ¶§ ¹Ýµå½Ã µû¿ÈÇ¥·Î µÑ·¯¾ß ÇÕ´Ï´Ù.

+

ÀÚ¼¼ÇÑ °ÍÀº DllCall Types¸¦ ÂüÁ¶ÇϽʽÿÀ.

+
+ +
+ +

¹Ýȯ °ª

+

+¸ñÇ¥ ÁÖ¼Ò°¡ À¯È¿ÇÏÁö ¾ÊÀ¸¸é, ºó ¹®ÀÚ¿­ÀÌ ¹ÝȯµË´Ï´Ù. ±×·¸Áö¸¸, ¾î¶² ¹«È¿ÇÑ ÁÖ¼Ò´Â ±×´ë·Î ŽÁöÇÒ ¼ö ¾øÀ¸¹Ç·Î, ¿¹»óÄ¡ ¸øÇÑ ÇàÀ§¸¦ ¾ß±âÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+±×·¸Áö ¾ÊÀ¸¸é, ¹æ±Ý ¾º¿©Áø Ç׸ñÀÇ ¿À¸¥ÂÊ ÁÖ¼Ò°¡ ¹ÝȯµË´Ï´Ù. ÀÌ°ÍÀº ¿¹¸¦ µé¾î DllCall¿¡ »ç¿ëÇÒ ±¸Á¶Ã¼¿¡¼­ ´Ù¸¥ À¯ÇüÀÇ ¼ýÀÚ¸¦ ¿¬¼ÓÀûÀ¸·Î ¾µ ¶§ º¸Åë »ç¿ëµË´Ï´Ù.

+ +

ÃÑÆò

+

+Á¤¼ö°¡ ³Ê¹« Ä¿¼­ ÁöÁ¤µÈ Type¿¡ ¸ÂÁö ¾ÊÀ¸¸é, Á¦ÀÏ Áß¿äÇÑ ºñÆ®(MSB)°¡ ¹«½ÃµË´Ï´Ù; ¿¹, NumPut(257, var, 0, "Char")´Â ¼ýÀÚ 1À» ÀúÀåÇÕ´Ï´Ù.

+

+¸Å°³º¯¼ö°¡ ¼¼ °³¸¸ ÀÖÀ¸¸é, ¼¼ ¹ø° ¸Å°³º¯¼ö´Â Offset ¶Ç´Â TypeÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, NumPut(x, var, "int")´Â À¯È¿ÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+NumGet, DllCall, VarSetCapacity

+ + + + diff --git a/src/docs/commands/ObjAddRef.htm b/src/docs/commands/ObjAddRef.htm new file mode 100644 index 0000000..bc65323 --- /dev/null +++ b/src/docs/commands/ObjAddRef.htm @@ -0,0 +1,58 @@ + + + + +ObjAddRef() / ObjRelease() + + + + + + + + +

ObjAddRef() / ObjRelease() [AHK_L 53+]

+ +

°´Ã¼ÀÇ ÂüÁ¶ Ƚ¼ö¸¦ ÁÙÀ̰ųª ´Ã¸³´Ï´Ù.

+ +
ObjAddRef(Ptr)
ObjRelease(Ptr)
+

¸Å°³º¯¼ö

+
+ +
Ptr
+

°ü¸®µÇÁö ¾Ê´Â °´Ã¼ Æ÷ÀÎÅÍ ¶Ç´Â COM ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅÍ.

+ +
+ +

¹Ýȯ °ª

+

ÀÌ ÇÔ¼öµéÀº »õ·Î¿î ÂüÁ¶ Ƚ¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. ÀÌ °ªÀº µð¹ö±ë ¸ñÀûÀ¸·Î¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+´ÙÀ½ ±ÛµéÀº COM¿¡ Àû¿ëµÉ ¶§ÀÇ ÂüÁ¶ Ƚ¼ö¸¦ ´Ù·ç°í ÀÖÁö¸¸, ÀϹÝÀûÀ¸·Î ¿ÀÅäÇÖÅ° °´Ã¼¿¡µµ Àû¿ëµÇ´Â Áß¿äÇÑ °³³ä°ú ±ÔÄ¢À» ¾ð±ÞÇÕ´Ï´Ù: IUnknown::AddRef, IUnknown::Release, ÂüÁ¶ Ƚ¼ö ±ÔÄ¢.

+ +

¿¹Á¦

+

ComObjConnect¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +
obj := Object()
+
+; ´ÙÀ½ µÎ ÁÙÀº µ¿µîÇÕ´Ï´Ù:
+ptr1 := Object(obj)
+ptr2 := ObjectToPointer(obj)
+
+ObjectToPointer(obj) {
+    if !IsObject(obj)
+        return ""
+    ptr := &obj
+    ObjAddRef(ptr)
+    return ptr
+}
+
+; Object() ¶Ç´Â ObjectToPointer()¸¦ ÅëÇÏ¿© ¿­¶÷µÈ Æ÷ÀÎÅÍ´Â °¢°¢ ¼öÀÛ¾÷À¸·Î Ç®¾îÁÖ¾î¾ß ÇÕ´Ï´Ù.
+; ±×·¡¾ß °´Ã¼°¡ ¿µ¿øÈ÷ ÇØÁ¦µÇ¸ç »ç¿ëµÈ ¸Þ¸ð¸®µµ µ¹·ÁÁÙ ¼ö ÀÖ½À´Ï´Ù.
+ObjRelease(ptr2)
+ObjRelease(ptr1)
+
+ + + diff --git a/src/docs/commands/ObjBindMethod.htm b/src/docs/commands/ObjBindMethod.htm new file mode 100644 index 0000000..2e1b3ec --- /dev/null +++ b/src/docs/commands/ObjBindMethod.htm @@ -0,0 +1,37 @@ + + + + +ObjBindMethod() + + + + + + + +

ObjBindMethod() [v1.1.20+]

+ +

ÁÖ¾îÁø °´Ã¼ÀÇ ¸Þ½îµå¸¦ È£ÃâÇÏ´Â BoundFunc object¸¦ »ý¼ºÇÕ´Ï´Ù.

+ +
BoundFunc := ObjBindMethod(Obj, Method, Params)
+ +

¸Å°³º¯¼ö

+
+ +
Obj
+

°´Ã¼.

+ +
Method
+

¸Þ½îµå À̸§.

+ +
Params
+

¸Å°³º¯¼ö °³¼ö.

+ +
+ +

³íÆò

+

ÀÚ¼¼ÇÑ °ÍÀº BoundFunc °´Ã¼¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ + + diff --git a/src/docs/commands/OnClipboardChange.htm b/src/docs/commands/OnClipboardChange.htm new file mode 100644 index 0000000..a56edf6 --- /dev/null +++ b/src/docs/commands/OnClipboardChange.htm @@ -0,0 +1,92 @@ + + + + +OnClipboardChange + + + + + + + +

OnClipboardChange

+ +

¾îÇø®ÄÉÀ̼ÇÀÌ (½ºÅ©¸³Æ®µµ ¸¶Âù°¡Áö·Î) Ŭ¸³º¸µåÀÇ ³»¿ëÀ» º¯°æÇÒ ¶§¸¶´Ù (Á¸ÀçÇÑ´Ù¸é) À̸§ÀÌ OnClipboardChangeÀÎ ¶óº§ÀÌ ÀÚµ¿À¸·Î ±âµ¿µË´Ï´Ù. ÀÌ ¶óº§Àº ¶Ç ½ºÅ©¸³Æ®°¡ óÀ½ ½ÃÀÛÇÒ ¶§ ÇÑ ¹ø ½ÇÇàµË´Ï´Ù.

+

+³»Àå º¯¼ö A_EventInfo¿¡ ´ÙÀ½°ú °°ÀÌ ´ã°Ü ÀÖ½À´Ï´Ù:
+0 ÇöÀç Ŭ¸³º¸µå°¡ ºñ¾î ÀÖ½À´Ï´Ù;
+1 ÅؽºÆ®·Î Ç¥ÇöÀÌ °¡´ÉÇÑ °ÍÀÌ µé¾î ÀÖ½À´Ï´Ù (¿©±â¿¡´Â Ž»ö âÀ¸·ÎºÎÅÍ º¹»çµÈ ÆÄÀÏÀÌ Æ÷ÇԵ˴ϴÙ);
+2 ±×¸²°ú °°ÀÌ ÀüÇô ÅؽºÆ®°¡ ¾Æ´Ñ °ÍÀÌ µé¾î ÀÖ½À´Ï´Ù.

+

+´ÙÀ½ ¿¹Á¦´Â ÀÛµ¿ÇÏ´Â ½ºÅ©¸³Æ®ÀÔ´Ï´Ù. ½ÇÇàµÉ ¶§¸¶´Ù, °£·«ÇÏ°Ô °¢ Ŭ¸³º¸µåÀÇ º¯°æ¿¡ ´ëÇÏ¿© ÅøÆÁÀ» º¸¿©ÁÝ´Ï´Ù.

+ +
#Persistent
+return
+
+OnClipboardChange:
+ToolTip Clipboard data type: %A_EventInfo%
+Sleep 1000
+ToolTip  ; Turn off the tip.
+return
+ +  +

OnClipboardChange() [v1.1.20+]

+

+Ŭ¸³º¸µåÀÇ ³»¿ëÀÌ º¯°æµÉ ¶§¸¶´Ù ½ÇÇàµÉ ÇÔ¼ö ¶Ç´Â ÇÔ¼ö °´Ã¼¸¦ µî·ÏÇÕ´Ï´Ù.

+ +
OnClipboardChange(Func [, AddRemove])
+

¸Å°³º¯¼ö

+
+ +
Func
+

È£ÃâÇÒ ÇÔ¼ö À̸§ ¶Ç´Â ÇÔ¼ö °´Ã¼. ÇÔ¼öÀÇ ¸Å°³º¯¼ö¿Í ¹Ýȯ °ªÀº ¾Æ·¡¿¡ ±â¼úÇÕ´Ï´Ù.

+ +
AddRemove
+

´ÙÀ½ °ª Áß Çϳª:
+ 1 (±âº»°ª): ÀÌÀü¿¡ µî·ÏµÈ ÇÔ¼ö ´ÙÀ½¿¡ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù.
+ -1: ÀÌÀü¿¡ µî·ÏµÈ ÇÔ¼ö º¸´Ù ¸ÕÀú ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù.
+ 0: ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾Ê½À´Ï´Ù.

+

+ OnClipboardChange ¶óº§ÀÌ Á¸ÀçÇϸé, ¾ðÁ¦³ª ¸ÕÀú È£ÃâµË´Ï´Ù.

+ +
+ +

Func

+
FunctionName(Type)
+
+
Type
+

´ÙÀ½ °ª Áß Çϳª°¡ ´ã°Ü ÀÖ½À´Ï´Ù:
+ 0 Ŭ¸³º¸µå°¡ ÇöÀç ºñ¾î ÀÖ½À´Ï´Ù;
+ 1 ÅؽºÆ®·Î Ç¥ÇöÇÒ ¼ö ÀÖ´Â °ÍÀÌ µé¾î ÀÖ½À´Ï´Ù (¿©±â¿¡´Â Ž»ö âÀ¸·ÎºÎÅÍ º¹»çµÈ ÆÄÀÏÀÌ Æ÷ÇԵ˴ϴÙ);
+ 2 ±×¸²°ú °°ÀÌ ÀüÇô ÅؽºÆ®°¡ ¾Æ´Ñ °ÍÀÌ µé¾î ÀÖ½À´Ï´Ù.

+ +
Return Value
+

+ ÀÌ°ÍÀÌ ¸¶Áö¸· ÇÔ¼ö ¶Ç´Â À¯ÀÏÇÑ OnClipboardChange ÇÔ¼ö¶ó¸é ¹Ýȯ°ªÀº ¹«½ÃµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ÇÔ¼ö´Â 0 ¾Æ´Ñ °ªÀ» µ¹·ÁÁÖ¾î ¿¬À̾ ´Ù¸¥ ÇÔ¼ö°¡ È£ÃâµÇÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù.

+
+ +

¿¹Á¦

+

+´ÙÀ½ ¿¹Á¦´Â À§ÀÇ ¿¹Á¦¿Í µ¿µîÇÕ´Ï´Ù. ±×·¯³ª ÀÌ ÇÔ¼ö´Â ½ºÅ©¸³Æ®°¡ óÀ½ ½ÇÇàµÉ ¶§ È£ÃâµÇÁö ¾Ê½À´Ï´Ù; ¿ÀÁ÷ Ŭ¸³º¸µåÀÇ ³»¿ëÀÌ º¯°æµÉ ¶§¸¸ È£ÃâµË´Ï´Ù.

+
#Persistent
+OnClipboardChange("ClipChanged")
+return
+
+ClipChanged(Type) {
+    ToolTip Clipboard data type: %Type%
+    Sleep 1000
+    ToolTip  ; Turn off the tip.
+}
+ +

³íÆò

+

+OnClipboardChange ¶óº§ ¶Ç´Â ÇÔ¼ö°¡ ÀÌ¹Ì ½ÇÇàµÇ°í ÀÖ´Â µ¿¾È¿¡ Ŭ¸³º¸µå°¡ º¯°æµÇ¸é, ±× °íÁö À̺¥Æ®´Â Æó±âµË´Ï´Ù. ÀÌ°ÍÀÌ ¹Ù¶÷Á÷ÇÏÁö ¾Ê´Ù¸é, CriticalÀ» ¶óº§ÀÇ Ã¹ ÁÙ¿¡ ÁöÁ¤ÇϽʽÿÀ. ±×·¸Áö¸¸, ÀÌ°ÍÀº ¶Ç OnClipboardChange ¾²·¹µå°¡ ½ÇÇà ÁßÀÎ µ¿¾È¿¡ ÀϾ´Â ´Ù¸¥ ¾²·¹µå¸¦ (¿¹¸¦ µé¾î ÇÖÅ° ´©¸§À») ¹öÆÛó¸®/¿¬±âÇÕ´Ï´Ù.

+

+½ºÅ©¸³Æ® ÀÚü°¡ Ŭ¸³º¸µå¸¦ ¹Ù²Ù¸é, ±×ÀÇ OnClipboardChange ¶óº§ ¶Ç´Â ÇÔ¼ö´Â ÀüÇüÀûÀ¸·Î Áï½Ã ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù; Áï, Ŭ¸³º¸µå¸¦ º¯°æÇÑ ¸í·É¾î ¹Ù·Î ¾Æ·¡ÀÇ ¸í·É¾îµéÀÌ ¸ÕÀú ½ÇÇàµÉ °¡´É¼ºÀÌ ³ô½À´Ï´Ù. ÀÌ ¶óº§À̳ª ÇÔ¼ö¸¦ °­Á¦·Î Áï½Ã ½ÇÇàÇÏ·Á¸é, Ŭ¸³º¸µå¸¦ º¯°æÇÑ ÈÄ¿¡ Sleep 20¿Í °°ÀÌ Âª°Ô Áö¿¬ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

Clipboard, OnExit, OnMessage(), RegisterCallback()

+ + + diff --git a/src/docs/commands/OnExit.htm b/src/docs/commands/OnExit.htm new file mode 100644 index 0000000..6c9fb76 --- /dev/null +++ b/src/docs/commands/OnExit.htm @@ -0,0 +1,154 @@ + + + + +OnExit + + + + + + + +

OnExit

+ +

+½ºÅ©¸³Æ®°¡ Á¾·áÇÒ ¶§ ÀÚµ¿À¸·Î ½ÇÇàÇÒ ¼­ºê·çƾ ¶Ç´Â ÇÔ¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù.

+ +
OnExit [, Label]
+OnExit(Func [, AddRemove])  ; Requires [v1.1.20+]
+

¸Å°³º¯¼ö

+
+ +
Label
+

»ý·«Çϸé, ÀÌÀü¿¡ µî·ÏµÈ ¶óº§ÀÌ µî·Ï ÇØÁ¦µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ½ºÅ©¸³Æ®°¡ ¾î¶² ¹æ½ÄÀ¸·Îµç Á¾·áÇÒ ¶§ ±×ÀÇ ³»¿ëÀÌ (»õ ¾²·¹µå·Î) ½ÇÇàµÉ ¶óº§ÀÇ À̸§À» ÁöÁ¤ÇϽʽÿÀ.

+ +
Func
+

½ºÅ©¸³Æ®°¡ Á¾·áÇÒ ¶§ È£ÃâÇÒ ÇÔ¼ö À̸§ ¶Ç´Â ÇÔ¼ö °´Ã¼. ÀÌ ÇÔ¼ö´Â ¼±ÅÃÀûÀ¸·Î ¾Æ·¡¿Í °°ÀÌ ¸Å°³º¯¼ö¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. OnExit ÇÔ¼ö°¡ 0 ¾Æ´Ñ Á¤¼ö °ªÀ» µ¹·Á ÁÖ¸é, ½ºÅ©¸³Æ®´Â Á¾·áÇÏÁö ¾Ê½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ½ºÅ©¸³Æ®´Â ¸ðµç µî·ÏµÈ ÇÔ¼ö¸¦ È£ÃâÇÑ ÈÄ¿¡ Á¾·áÇÕ´Ï´Ù.

+ +
ExitFunc(ExitReason, ExitCode)
+ +
AddRemove
+

´ÙÀ½ °ª Áß Çϳª:
+ 1 (±âº»°ª): ÀÌÀü¿¡ µî·ÏµÈ ÇÔ¼öµé ´ÙÀ½¿¡ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù.
+ -1: ÀÌÀü¿¡ µî·ÏµÈ ÇÔ¼öº¸´Ù ¸ÕÀú ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù.
+ 0: ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾Ê½À´Ï´Ù.

+

¶óº§(¼­ºê·çƾ)ÀÌ µî·ÏµÇ¾î ÀÖÀ¸¸é, ±×°ÍÀÌ ¾ðÁ¦³ª ¸ÕÀú È£ÃâµË´Ï´Ù.

+ +
+ +

³íÆò

+

Áß¿ä: ½ºÅ©¸³Æ®¸¦ Á¾·áÇÏ´Â ´ë½Å¿¡ ÁöÁ¤µÈ ¼­ºê·çƾÀÌ È£ÃâµÇ±â ¶§¹®¿¡, ±× ¼­ºê·çƾÀº Á¾·á°¡ ÇÊ¿äÇÏ¸é ¹Ýµå½Ã ExitApp ¸í·É¾î¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. [v1.1.20+]: »õ ½ºÅ©¸³Æ®´Â ¼­ºê·çƾ ´ë½Å¿¡ ÇÔ¼ö¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù -- ÀÌ·¸°Ô ÇÏ¸é ¿ì¹ßÀûÀ¸·Î Á¾·á°¡ ºÒ°¡´ÉÇÑ ½ºÅ©¸³Æ®¸¦ ¸¸µé¾î ³¾ À§ÇèÀ» ÁÙ¿© ÁÝ´Ï´Ù. ±×¸®°í Exit ¶Ç´Â ExitApp¿¡ °Ç³Ù Á¾·á Äڵ尡 º¸Á¸µÈ´Ù´Â È®½ÅÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+[v1.1.20+]: ¾ó¸¶µçÁö OnExit ÇÔ¼ö¸¦ µî·ÏÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶óº§ (¼­ºê·çƾ)µµ µî·ÏµÇ¾î ÀÖ´Ù¸é, ÇÔ¼ö´Â ¼­ºê·çƾÀÌ ExitApp¸¦ È£ÃâÇÑ µÚ¿¡ È£ÃâµË´Ï´Ù. OnExit ÇÔ¼ö´Â º¸Åë ExitApp¸¦ È£ÃâÇÏ¸é ¾ÈµË´Ï´Ù; ±×·² °æ¿ì, ½ºÅ©¸³Æ®´Â Áï½Ã Á¾·áÇÕ´Ï´Ù.

+

+¾î¶² ¼ö´ÜÀ¸·Îµç ½ºÅ©¸³Æ®°¡ Á¾·áÇÒ ¶§ OnExit ¼­ºê·çƾÀÌ È£ÃâµË´Ï´Ù (´Ü, "End Task"¿Í °°Àº °ÍÀ¸·Î Á¾·áµÇ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù). ¶ÇÇÑ #SingleInstance ±×¸®°í Reload ¸í·É¾î°¡ ÀÌÀüÀÌ ½Çü¸¦ Á¾·áÇϵµ·Ï ¿ä±¸ÇÒ ¶§¸¶´Ù È£ÃâµË´Ï´Ù.

+

+½ºÅ©¸³Æ®´Â OnMessage(0x11, "WM_QUERYENDSESSION")¸¦ ÅëÇÏ¿© ½Ã½ºÅÛ ¼Ë´Ù¿îÀ̳ª ·Î±×¿ÀÇÁ¸¦ ŽÁöÇÒ ¼ö ÀÖ°í ¼±ÅÃÀûÀ¸·Î Ãë¼ÒÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

+

+ +OnExit ¾²·¹µå´Â #MaxThreads¸¦ ÁؼöÇÏÁö ¾Ê½À´Ï´Ù. + +(ÇÊ¿äÇÏ¸é ¾ðÁ¦µçÁö ±âµ¿ÇÕ´Ï´Ù). + +°Ô´Ù°¡, ½ÇÇà ÁßÀÎ µ¿¾È, ´Ù¸¥ ¾²·¹µå·Î ÀÎÅÍ·´Æ® ÇÒ ¼ö ¾ø½À´Ï´Ù. ¿©±â¿¡´Â ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ±×¸®°í ŸÀÌ¸Ó ¼­ºê·çƾÀÌ Æ÷ÇԵ˴ϴÙ. + +±×·¸Áö¸¸, »ç¿ëÀÚ°¡ ¸ÞÀÎ ¸Þ´º³ª Æ®·¹ÀÌ ¸Þ´º·ÎºÎÅÍ ExitÀ» ¼±ÅÃÇß´Ù¸é ÀÎÅÍ·´Æ® µË´Ï´Ù (±×¸®°í ½ºÅ©¸³Æ®´Â Á¾·áÇÕ´Ï´Ù). ±×·¸Áö ¾ÊÀ¸¸é ½ºÅ©¸³Æ®¿¡ Reload ¶Ç´Â #SingleInstance °á°ú·Î Á¾·áÇϵµ·Ï ¿ä±¸ÇÕ´Ï´Ù. ÀÌ ¶§¹®¿¡ OnExit ¼­ºê·çƾÀº »¡¸® ³¡³ªµµ·Ï ¼³°èÇØ¾ß ÇÕ´Ï´Ù. ´Ü, »ç¿ëÀÚ°¡ ¹«½¼ ÀÏÀÌ ÁøÇàµÇ´ÂÁö ¾Ë°í ÀÖ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+

+OnExit ¾²·¹µå°¡ ½ÇÇà½Ã°£ ¿¡·¯ °°Àº ½ÇÆÐ Á¶°ÇÀ» ¸¸³ª¸é, ½ºÅ©¸³Æ®´Â Á¾·áÇÕ´Ï´Ù. ÀÌ ¶§¹®¿¡ °áÇÔÀÌ ÀÖ´Â OnExit ¼­ºê·çƾÀº ½ºÅ©¸³Æ®¸¦ Á¾·áÇÏÁö ¸øÇÏ°Ô ¸·À» ¼ö ¾ø½À´Ï´Ù.

+

+Exit ¶Ç´Â ExitApp ¸í·É¾î ¶§¹®¿¡, Á¾·á Äڵ带 ÁöÁ¤ÇÑ OnExit ¼­ºê·çƾÀÌ ±âµ¿µÇ¸é, v1.1.19 ÀÌÀü¿¡¼­ ±× ÄÚµå´Â ¹«½ÃµÇ°í ´õ ÀÌ»ó »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. + +[v1.1.20+]¿¡¼­ ÃÖÃÊÀÇ Á¾·á Äڵ尡 »ç¿ëµË´Ï´Ù. ´Ü, ExitApp È£ÃâÇÏ¿© »õ Á¾·á ÄÚµå·Î ¿À¹ö¶óÀ̵åÇÑ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+

+OnExit ¼­ºê·çƾÀÌ Á¾·á ½Ãµµ·Î È£ÃâµÉ ¶§¸¶´Ù, SendMode¿Í °°Àº ¼³Á¤¿¡ ´ëÇÑ ±âº» °ªµéÀ» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ·± ±âº»°ªµéÀº ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡¼­ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+

+³»Àå ÇÔ¼ö A_ExitReason´Â ºñ¾î ÀÖ½À´Ï´Ù. ´Ü, OnExit ¼­ºê·çƾÀÌ ÇöÀç ½ÇÇà ÁßÀ̰ųª ÀÌÀüÀÌ Á¾·á ½Ãµµ·Î ÀÎÇØ Àû¾îµµ ÇÑ ¹ø È£ÃâµÈ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù. ºñ¾î ÀÖÁö ¾ÊÀ¸¸é, ´ÙÀ½ ´Ü¾î Áß ÇϳªÀÔ´Ï´Ù:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Logoff»ç¿ëÀÚ°¡ ·Î±×¿ÀÇÁ ÁßÀÔ´Ï´Ù.
Shutdown¿¹¸¦ µé¾î Shutdown ¸í·É¾î·Î ½Ã½ºÅÛÀÌ ´ÝÈ÷°í ÀÖ´Â ÁßÀ̰ųª Àç½ÃÀÛ ÁßÀÔ´Ï´Ù.
Close½ºÅ©¸³Æ®¿¡ WM_CLOSE ¶Ç´Â WM_QUIT ¸Þ½ÃÁö°¡ Àü¼ÛµÇ¾ú½À´Ï´Ù. ½ºÅ©¸³Æ®¿¡ ½É°¢ÇÑ ¿¡·¯°¡ ÀÖ½À´Ï´Ù. ¶Ç´Â ´Ù¸¥ ¾î¶² ¹æ¹ýÀ¸·Î ´ÝÇû½À´Ï´Ù. ÀÌ ¸ðµç °ÍÀÌ ºñÁ¤»óÀûÀÌÁö¸¸, WM_CLOSE´Â ½ºÅ©¸³Æ®ÀÇ ¸ÞÀΠâ¿¡ »ç¿ëµÈ WinClose¿¡ ÀÇÇØ ¾ß±âµÉ ¼öµµ ÀÖ½À´Ï´Ù. À̸¦ ¹æÁöÇÏ·Á¸é, ¸ÞÀΠâÀ» Send, !{F4}·Î Ãë¼ÒÇϽʽÿÀ.
Error½ÇÇà½Ã°£ ¿¡·¯°¡ ÇÖÅ°°¡ ¾ø°í ¿µ¼ÓÀûÀÌ ¾Æ´Ñ ½ºÅ©¸³Æ®¿¡ ÀϾ½À´Ï´Ù. ½ÇÇà½Ã°£ ¿¡·¯ÀÇ ¿¹´Â Run/RunWait°¡ ÁöÁ¤µÈ ÇÁ·Î±×·¥À̳ª ¹®¼­¸¦ ±âµ¿½ÃÅ°Áö ¸øÇÏ´Â °æ¿ìÀÔ´Ï´Ù.
Menu»ç¿ëÀÚ°¡ ¸ÞÀΠâÀÇ ¸Þ´º ¶Ç´Â Ç¥ÁØ Æ®·¹ÀÌ ¸Þ´º·ÎºÎÅÍ ·ÎºÎÅÍ Exit¸¦ ¼±ÅÃÇß½À´Ï´Ù.
ExitExit ¶Ç´Â ExitApp ¸í·É¾î°¡ »ç¿ëµÇ¾ú½À´Ï´Ù (¸ÂÃã ¸Þ´º Ç׸ñ Æ÷ÇÔ).
Reload½ºÅ©¸³Æ®°¡Reload ¸í·É¾î³ª ¸Þ´º Ç׸ñÀ» ÅëÇÏ¿© ÀçÀûÀç ÁßÀÔ´Ï´Ù.
Single#SingleInstanceÀÇ °á°ú·Î ½ºÅ©¸³Æ®°¡ ÀÚ½ÅÀÇ »õ ½Çü·Î ±³Ã¼ ÁßÀÔ´Ï´Ù.
+ +

°ü·Ã Ç׸ñ

+

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

+ +

¿¹Á¦

+

+´ÙÀ½ ¿¹Á¦´Â #Persistent¸¦ »ç¿ëÇÏ¿© ½ºÅ©¸³Æ®°¡ ÀÚµ¿À¸·Î Á¾·áÇÏ´Â °ÍÀ» ¸·½À´Ï´Ù. ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÑ ÈÄ¿¡, Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» ¿ìŬ¸¯ÇÏ°í ExitÀ» Ŭ¸¯ÇØ º¸¸é OnExit ¶Ç´Â ÇÔ¼ö°¡ ÀÛµ¿ÇÏ´ÂÁö °ËÁõÇØ º¼ ¼ö ÀÖ½À´Ï´Ù. ±× ´ÙÀ½ "Yes"¸¦ Ŭ¸¯ÇÏ¸é ½ºÅ©¸³Æ®°¡ Á¾·áÇÏ°í "No"¸¦ Ŭ¸¯ÇÏ¸é ½ÇÇàÀ» ±×´ë·Î À¯ÁöÇÕ´Ï´Ù.

+ +
#Persistent
+OnExit, ExitSub
+return
+
+ExitSub:
+if A_ExitReason not in Logoff,Shutdown  ; ÀÌ ÁÙ¿¡¼­ ½°Ç¥ µÑ·¹¿¡ ½ºÆäÀ̽º¸¦ ÇÇÇϽʽÿÀ.
+{
+    MsgBox, 4, , Á¾·áÇÏ°í ½Í½À´Ï±î?
+    IfMsgBox, No
+        return
+}
+ExitApp  ; OnExit ¼­ºê·çƾÀÌ ÀÖ´Â ½ºÅ©¸³Æ®´Â Á¾·áÇÏÁö ¾Ê½À´Ï´Ù. ´Ü, ¼­ºê·çƾÀÌ ExitApp¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.
+  +
#Persistent
+
+; Á¾·á½Ã¿¡ È£ÃâµÉ ÇÔ¼ö¸¦ µî·ÏÇÕ´Ï´Ù:
+OnExit("ExitFunc")
+
+; Á¾·á½Ã¿¡ È£Ãâµ¹ °´Ã¼¸¦ µî·ÏÇÕ´Ï´Ù:
+OnExit(ObjBindMethod(MyObject, "Exiting"))
+
+ExitFunc(ExitReason, ExitCode)
+{
+    if ExitReason not in Logoff,Shutdown
+    {
+        MsgBox, 4, , ³¡³»°í ½Í½À´Ï±î?
+        IfMsgBox, No
+            return 1  ; OnExit ÇÔ¼ö´Â Á¾·á¸¦ ¸·±â À§ÇØ ¹Ýµå½Ã 0 ¾Æ´Ñ °ªÀ» µ¹·ÁÁÖ¾î¾ß ÇÕ´Ï´Ù.
+    }
+    ; ExitApp¸¦ È£ÃâÇÏÁö ¸¶½Ê½Ã¿À -- ±×·¯¸é ´Ù¸¥ OnExit ÇÔ¼ö°¡ È£ÃâµÇÁö ¸øÇÕ´Ï´Ù.
+}
+
+class MyObject
+{
+    Exiting()
+    {
+        MsgBox, Á¾·áÇϱâ Àü¿¡ MyObject°¡ û¼Ò ÁßÀÔ´Ï´Ù...
+        /*
+        this.SayGoodbye()
+        this.CloseNetworkConnections()
+        */
+    }
+}
+ + + diff --git a/src/docs/commands/OnMessage.htm b/src/docs/commands/OnMessage.htm new file mode 100644 index 0000000..f003808 --- /dev/null +++ b/src/docs/commands/OnMessage.htm @@ -0,0 +1,289 @@ + + + + +OnMessage + + + + + + + +

OnMessage()

+ +

+½ºÅ©¸³Æ®°¡ ÁöÁ¤µÈ ¸Þ½ÃÁö¸¦ ¹ÞÀ» ¶§ ÀÚµ¿À¸·Î È£ÃâÇÒ ÇÔ¼ö ¶Ç´Â ÇÔ¼ö °´Ã¼¸¦ ÁöÁ¤ÇÕ´Ï´Ù .

+
OnMessage(MsgNumber [, Function, MaxThreads])
+

¸Å°³º¯¼ö

+
+ +
MsgNumber
+

°¨½Ã ¶Ç´Â ÁúÀÇÇÒ ¸Þ½ÃÁö ¹øÈ£, ¹üÀ§´Â 0ºÎÅÍ 4294967295 (0xFFFFFFFF)±îÁö. ½Ã½ºÅÛ ¸Þ½ÃÁö (Áï, 0x400 ¾Æ·¡ÀÇ ¸Þ½ÃÁö)¸¦ °¨½ÃÇÏ°í ½ÍÁö ¾ÊÀ¸¸é, °¡´ÉÇϸé 4096 (0x1000)º¸´Ù ´õ Å« ¹øÈ£¸¦ °í¸£´Â °ÍÀÌ Á¦ÀÏ ÁÁ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¿ÀÅäÇÖÅ°¿¡ ³»ºÎÀûÀ¸·Î »ç¿ëµÇ´Â ¸Þ½ÃÁö¸¦ °£¼·ÇÒ ±âȸ°¡ ÁÙ¾îµì´Ï´Ù.

+ +
Function
+

ÇÔ¼öÀÇ À̸§, [v1.1.20+]¿¡¼­´Â ÇÔ¼ö °´Ã¼. ±âÈ£ ±×´ë·ÎÀÇ ÇÔ¼ö À̸§À» °Ç³×·Á¸é, µû¿ÈÇ¥·Î µÑ·¯ ½Î¾ß ÇÕ´Ï´Ù.

+

+ ¾î¶»°Ô ÇÔ¼ö°¡ µî·ÏµÇ´Â°¡ ±×¸®°í OnMessageÀÇ ¹Ýȯ °ªÀº ÀÌ ¸Å°³º¯¼ö°¡ ¹®ÀÚ¿­Àΰ¡ ¾Æ´Ï¸é ÇÔ¼ö °´Ã¼Àΰ¡¿¡ ´Þ·Á ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ °ÍÀº ÇÔ¼ö À̸§ vs °´Ã¼¸¦ ÂüÁ¶ÇϽʽÿÀ.

+
+ +
MaxThreads [v1.0.47+]
+

ÀÌ Á¤¼ö´Â º¸Åë »ý·«µË´Ï´Ù. ÀÌ °æ¿ì °¨½Ã ÇÔ¼ö´Â ÇÑ ¹ø¿¡ ÇÑ ¾²·¹µå·Î Á¦Çѵ˴ϴÙ. ÀÌ°ÍÀÌ º¸Åë Á¦ÀÏ ÁÁ½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ½ºÅ©¸³Æ®°¡ °¨½Ã ÇÔ¼ö°¡ ÀÚ½ÅÀ» È£ÃâÇÏ¸é ½Ã°£ ¼ø¼­°¡ ¾û¸ÁÀΠä·Î ¸Þ½ÃÁöµéÀ» ó¸®Çϱ⠶§¹®ÀÔ´Ï´Ù. ±×·¯¹Ç·Î, MaxThreads¿¡ ´ëÇÑ ´ë¾ÈÀ¸·Î¼­, ¾Æ·¡¿¡ ±â¼úÇÏ´Â °Íó·³ CriticalÀ» »ç¿ëÀ» °í·ÁÇØ º¸½Ê½Ã¿À.

+

+ [v1.1.20+]: ±âº»°ªÀ¸·Î, ¿©·¯ ÇÔ¼ö°¡ ÇϳªÀÇ MsgNumber¿¡ µî·ÏµÇ¾î ÀÖÀ¸¸é, µî·ÏµÈ ¼ø¼­´ë·Î È£ÃâµË´Ï´Ù. ÀÌÀü¿¡ µî·ÏµÈ ÇÔ¼öº¸´Ù ¸ÕÀú È£ÃâµÉ ÇÔ¼ö¸¦ µî·ÏÇÏ·Á¸é, MaxThreads¿¡ À½¼ö¸¦ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, OnMessage(Msg, Fn, -2)´Â ÀÌÀü¿¡ Msg¿¡ µî·ÏµÈ ´Ù¸¥ ¾î¶² ÇÔ¼öº¸´Ùµµ ¸ÕÀú FnÀ» È£ÃâµÇµµ·Ï µî·ÏÇÕ´Ï´Ù. ±×¸®°í Fn¿¡ ÃÖ´ë 2 °³ÀÇ ¾²·¹µå¸¦ Çã¿ëÇÕ´Ï´Ù. ±×·¸Áö¸¸, ±× ÇÔ¼ö°¡ ÀÌ¹Ì µî·ÏµÇ¾î ÀÖÀ¸¸é, µî·ÏÀ» ÇØÁ¦ÇÏ°í ´Ù½Ã Àçµî·Ï ÇÏÁö ¾ÊÀº ÇÑ ¼ø¼­°¡ ¹Ù²îÁö ¾Ê½À´Ï´Ù.

+ +
+ +

ÇÔ¼ö À̸§ vs ÇÔ¼ö

+

OnMessageÀÇ ¹Ýȯ °ª°ú ÇàÀ§´Â Function ¸Å°³º¯¼ö°¡ ÇÔ¼ö À̸§Àΰ¡ ¾Æ´Ï¸é °´Ã¼Àΰ¡¿¡ µû¶ó ´Ù¸¨´Ï´Ù.

+ +

ÇÔ¼ö À̸§

+

+ÇÏÀ§ ȣȯÀ» À§ÇØ, °¢°¢ÀÇ À¯ÀÏÇÑ MsgNumber¸¦ °¨½ÃÇÏ·Á¸é ±â²¯ÇØ¾ß ÇÑ °³ÀÇ ÇÔ¼ö¸¸ À̸§À¸·Î µî·ÏÇÒ ¼ö ÀÖ½À´Ï´Ù -- ÀÌ°ÍÀ» "legacy" °¨½Ã¶ó°í ºÎ¸¨´Ï´Ù.

+

+legacy °¨½Ã ÇÔ¼ö°¡ óÀ½ µî·ÏµÇ¸é, ÀÌÀü¿¡ µî·ÏµÈ °¨½Ã ÇÔ¼öµé ¾Õ¿¡ È£ÃâµÉÁö µÚ¿¡ È£ÃâµÉÁö´Â MaxThreads ¸Å°³º¯¼ö¿¡ ´Þ·Á ÀÖ½À´Ï´Ù. ÀÌ °¨½Ã ÇÔ¼ö°¡ ´Ù¸¥ ÇÔ¼ö¸¦ È£ÃâÇϵµ·Ï ¾÷µ¥ÀÌÆ®ÇÏ´õ¶óµµ ¸ÕÀú µî·ÏÇØÁ¦ ÇÏÁö ¾Ê´Â ÇÑ ¼ø¼­¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù.

+

+´ÙÀ½ ÄÚµå´Â MsgNumber¿¡ ´ëÇÏ¿© ÇöÀç legacy °¨½Ã ÇÔ¼ö¸¦ µî·ÏÇϰųª ¾÷µ¥ÀÌÆ®ÇÕ´Ï´Ù (º¯¼ö¸¦ °Ç³Ù´Ù¸é µû¿ÈÇ¥´Â »ý·«ÇÕ´Ï´Ù):

+ +
Name := OnMessage(MsgNumber, "FunctionName")
+ +

¹Ýȯ °ªÀº ´ÙÀ½ Áß ÇϳªÀÔ´Ï´Ù:

+
    +
  • ½ÇÆнà ºó ¹®ÀÚ¿­
  • +
  • ÀÖ¾ú´Ù¸é, ÀÌÀü ÇÔ¼öÀÇ À̸§
  • +
  • ±×·¸Áö ¾ÊÀ¸¸é, »õ ÇÔ¼öÀÇ À̸§.
  • +
+

+´ÙÀ½Àº MsgNumber¿¡ ´ëÇÏ¿© ÇöÀçÀÇ legacy °¨½ÃÀÚ¸¦ (ÀÖ´Ù¸é) µî·ÏÀ» ÇØÁ¦ÇÏ°í ±×ÀÇ À̸§À» µ¹·ÁÁÝ´Ï´Ù (¾øÀ¸¸é ºó °ªÀ» µ¹·ÁÁÜ):

+ +
Name := OnMessage(MsgNumber, "")
+

+´ÙÀ½Àº MsgNumber¿¡ ´ëÇÏ¿© ÇöÀçÀÇ legacy °¨½ÃÀÚÀÇ À̸§À» µ¹·ÁÁÝ´Ï´Ù (¾ø´Ù¸é ºó °ªÀ» µ¹·ÁÁÜ):

+ +
Name := OnMessage(MsgNumber)
+ +

ÇÔ¼ö °´Ã¼

+

+ (Á¤»ó ÇÔ¼ö¸¦ Æ÷ÇÔÇÏ¿©) °¹¼ö¿¡ »ó°ü¾øÀÌ ¾ó¸¶µçÁö ÇÔ¼ö °´Ã¼´Â ÁÖ¾îÁø MsgNumber¸¦ °¨½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+´ÙÀ½ µÎ ÁÙÀº ÀÌÀü¿¡ µî·ÏÇÑ ÇÔ¼öµé ´ÙÀ½¿¡ È£ÃâµÉ ÇÔ¼ö °´Ã¼¸¦ µî·ÏÇÕ´Ï´Ù:

+ +
+OnMessage(MsgNumber, FuncObj)     ; Option 1
+OnMessage(MsgNumber, FuncObj, 1)  ; Option 2 (MaxThreads = 1)
+
+

+´ÙÀ½Àº ÀÌÀü¿¡ µî·ÏµÈ ÇÔ¼öº¸´Ù ¸ÕÀú È£ÃâµÉ ÇÔ¼ö °´Ã¼¸¦ µî·ÏÇÕ´Ï´Ù:

+ +
OnMessage(MsgNumber, FuncObj, -1)
+

+ÇÔ¼ö °´Ã¼¸¦ µî·Ï ÇØÁ¦ÇÏ·Á¸é MaxThreads¿¡ 0À» ÁöÁ¤ÇϽʽÿÀ:

+
OnMessage(MsgNumber, FuncObj, 0)
+ +

½ÇÆÐ

+

½ÇÆд FunctionÀÌ ´ÙÀ½°ú °°Àº °æ¿ì¿¡ ÀϾ´Ï´Ù:

+
    +
  1. °´Ã¼°¡ ¾Æ´Ï°Å³ª, »ç¿ëÀÚ-Á¤ÀÇ ÇÔ¼öÀÇ À̸§ ¶Ç´Â ºó¹®ÀÚ¿­ÀÔ´Ï´Ù;
  2. +
  3. ¸Å°³º¯¼ö¸¦ ´Ù¼¸ °³ ÀÌ»ó ¿ä±¸ÇÑ´Ù°í ¾Ë·ÁÁ® ÀÖ½À´Ï´Ù
  4. +
  5. ¶Ç´Â v1.0.48.05 ÀÌÀü¿¡¼­, ByRef ¶Ç´Â ¼±ÅÃÀû ¸Å°³º¯¼ö¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.
  6. +
+

+v1.1.19.03 ÀÌÀü¿¡¼­ ½ÇÆд ÀÌ¹Ì 500 °³ÀÇ ¸Þ½ÃÁö¸¦ °¨½Ã ÁßÀε¥ ½ºÅ©¸³Æ®°¡ »õ ¸Þ½ÃÁö¸¦ °¨½ÃÇÏ·Á°í ½ÃµµÇÏ´Â °æ¿ì¿¡µµ ÀϾ´Ï´Ù.

+

+FunctionÀÌ °´Ã¼À̸é, ½ÇÆнà ¿¹¿Ü¸¦ ´øÁý´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ºó ¹®ÀÚ¿­À» µ¹·ÁÁÝ´Ï´Ù.

+ +

ÇÔ¼öÀÇ ¸Å°³º¯¼ö

+

+¿©·¯ ¸Þ½ÃÁö¸¦ °¨½ÃÇϵµ·Ï ÇÒ´çµÈ ÇÔ¼ö´Â ÃÖ´ë ³× °³±îÁö ¸Å°³º¯¼ö¸¦ ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù:

+ +
MyMessageMonitor(wParam, lParam, msg, hwnd)
+{
+    ... body of function...
+}
+

+¸Å°³º¯¼ö¿¡ °Ç³Ù À̸§¿¡ »ó°ü ¾øÀÌ, ´ÙÀ½ Á¤º¸°¡ ¼ø¼­´ë·Î ¸Å°³º¯¼ö¿¡ ÇÒ´çµË´Ï´Ù.:

+

+¸Å°³º¯¼ö #1: ¸Þ½ÃÁöÀÇ WPARAM °ª.
+¸Å°³º¯¼ö #2: ¸Þ½ÃÁöÀÇ LPARAM °ª.
+¸Å°³º¯¼ö #3: ¸Þ½ÃÁö ¹øÈ£, ÇÔ¼ö°¡ ¿©·¯ ¸Þ½ÃÁö¸¦ °¨½ÃÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù.
+¸Å°³º¯¼ö #4: ¸Þ½ÃÁö°¡ Àü¼ÛµÈ âÀ̳ª ÄÜÆ®·ÑÀÇ HWND (À¯ÀÏÇÑ ID). HWND´Â ahk_id¿Í ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+WPARAM ±×¸®°í LPARAMÀº ½ºÅ©¸³Æ®ÀÇ ½ÇÇà ÆÄÀÏÀÌ 32-ºñÆ®ÀÎÁö 64-ºñÆ®ÀÎÁö¿¡ µû¶ó ºÎÈ£ ¾ø´Â 32-ºñÆ® Á¤¼öÀ̰ųª (0ºÎÅÍ 232-1±îÁö) ¶Ç´Â ºÎÈ£ ÀÖ´Â 64-ºñÆ® Á¤¼öÀÔ´Ï´Ù (-263ºÎÅÍ 263-1±îÁö). +32-ºñÆ® ½ºÅ©¸³Æ®¿¡ ´ëÇÏ¿©, µé¾î¿À´Â ¸Å°³º¯¼ö°¡ ºÎÈ£ ÀÖ´Â Á¤¼ö¸¦ ÀǵµÇÑ´Ù¸é, À½¼ö´Â ´ÙÀ½ ¿¹Á¦¸¦ µû¶ó ³ëÃâ½Ãų ¼ö ÀÖ½À´Ï´Ù:

+ +
if (A_PtrSize = 4 && wParam > 0x7FFFFFFF)  ; A_PtrSize¸¦ Á¡°ËÇØ ½ºÅ©¸³Æ®°¡ 32-ºñÆ®ÀÓÀ» È®ÀÎÇÕ´Ï´Ù.
+    wParam := -(~wParam) - 1
+

+»óÀÀÇÏ´Â Á¤º¸°¡ ÇÊ¿äÇÏÁö ¾ÊÀ¸¸é ¸®½ºÆ®ÀÇ ³¡À¸·ÎºÎÅÍ Çϳª ÀÌ»óÀÇ ¸Å°³º¯¼ö¸¦ »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, MyMsgMonitor(wParam, lParam)·Î Á¤ÀÇµÈ ÇÔ¼ö´Â ¾Õ¿¡¼­ µÎ °³ÀÇ ¸Å°³º¯¼ö¸¸ ¹Þ½À´Ï´Ù. ±×¸®°í MyMsgMonitor()·Î Á¤ÀÇµÈ ÇÔ¼ö´Â ¸Å°³º¯¼ö¸¦ ÀüÇô ¹ÞÁö ¾Ê½À´Ï´Ù.

+ +

ÇÔ¼ö¿¡¼­ »ç¿ë°¡´ÉÇÑ Ãß°¡ Á¤º¸

+

+À§¿¡¼­ ¹ÞÀº ¸Å°³º¯¼ö ¸»°íµµ, ÇÔ¼ö´Â ´ÙÀ½ ³»Àå º¯¼ö·ÎºÎÅÍ °ªµéÀ» Âü°íÇÒ ¼öµµ ÀÖ½À´Ï´Ù:

+
    +
  • A_Gui: ¸Þ½ÃÁö°¡ GUI ⠶Ǵ ÄÜÆ®·Ñ¿¡ Àü¼ÛµÇÁö ¾Ê¾Ò´Ù¸é ºñ¾î ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì A_Gui´Â Gui â ¹øÈ£ÀÔ´Ï´Ù (ÀÌ Ã¢Àº ¶Ç ÇÔ¼öÀÇ ±âº» GUI âÀ¸·Î ¼³Á¤µË´Ï´Ù).
  • +
  • A_GuiControl: ¸Þ½ÃÁö°¡ GUI ÄÜÆ®·Ñ¿¡ Àü¼ÛµÇÁö ¾Ê¾Ò´Ù¸é ºñ¾î ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì ¾È¿¡ ÄÜÆ®·ÑÀÇ º¯¼ö À̸§À̳ª ´Ù¸¥ °ªÀÌ µé¾î ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº A_GuiControl¿¡ ±â¼úÇÕ´Ï´Ù. ¾î¶² ÄÜÆ®·ÑµéÀº ¾î¶² Á¾·ùÀÇ ¸Þ½ÃÁöµµ ¹ÞÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, »ç¿ëÀÚ°¡ ÅؽºÆ® ÄÜÆ®·ÑÀ» Ŭ¸¯ÇÒ ¶§, ¿î¿µ üÁ¦´Â WM_LBUTTONDOWNÀ» ±× ÄÜÆ®·ÑÀÌ ¾Æ´Ï¶ó ºÎ¸ð â¿¡ Àü¼ÛÇÕ´Ï´Ù. A_GuiControl´Â ºñ¾î ÀÖ½À´Ï´Ù.
  • +
  • A_GuiX ±×¸®°í A_GuiY: µé¾î¿À´Â ¸Þ½ÃÁö°¡ SendMessage¸¦ ÅëÇÏ¿© Àü¼ÛµÇ¾ú´Ù¸é µÑ ¸ðµÎ -2147483648°¡ ´ã±é´Ï´Ù. PostMessage¸¦ ÅëÇÏ¿© Àü¼ÛµÇ¾ú´Ù¸é, ¸Þ½ÃÁö°¡ Æ÷½ºÆ®µÇ´Â ¼ø°£¿¡ (È­¸é¿¡ »ó´ëÀûÀÎ) ¸¶¿ì½º Ä¿¼­ÀÇ ÁÂÇ¥°¡ ´ã±é´Ï´Ù.
  • +
  • A_EventInfo: ¸Þ½ÃÁö°¡ SendMessage¸¦ ÅëÇÏ¿© Àü¼ÛµÇ¾ú´Ù¸é 0ÀÌ ´ã±é´Ï´Ù. PostMessage¸¦ ÅëÇÏ¿© Àü¼ÛµÇ¾ú´Ù¸é, ¸Þ½ÃÁö°¡ Æ÷½ºÆ®µÈ ƽ-Ä«¿îÆ® ½Ã°£ÀÌ ´ã±é´Ï´Ù.
  • +
+

°¨½Ã ÇÔ¼öÀÇ ¸¶Áö¸· ¹ß°ß âÀº ¸Þ½ÃÁö°¡ Àü¼ÛµÈ ºÎ¸ð âÀ¸·Î ½ÃÀÛÇÕ´Ï´Ù (ÄÜÆ®·Ñ¿¡ Àü¼ÛµÇ¾ú¾îµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù). âÀº ¼û¾î ÀÖÁö¸¸ GUI âÀº ¾Æ´Ï¶ó¸é (¿¹¸¦ µé¾î ½ºÅ©¸³Æ®ÀÇ ¸ÞÀΠâ), »ç¿ëÇϱâ Àü¿¡ ¸ÕÀú DetectHiddenWindows¸¦ ÄѽʽÿÀ. ¿¹¸¦ µé¾î:

+
DetectHiddenWindows On
+MsgParentWindow := WinExist()  ; ¸Þ½ÃÁö°¡ Àü¼ÛµÈ âÀÇ À¯ÀÏÇÑ ID¸¦ ÀúÀåÇÕ´Ï´Ù.
+ +

ÇÔ¼ö´Â ¹«¾ùÀ»µ¹·ÁÁÖ¾î¾ß Çϴ°¡

+

+°¨½Ã ÇÔ¼ö°¡ ¸Å°³º¯¼ö ¾øÀÌ ReturnÀ» »ç¿ëÇϰųª, ""¿Í °°Àº ºó °ªÀ» ÁöÁ¤Çϸé (¶Ç´Â ÀüÇô ReturnÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¸é), µé¾î¿À´Â ¸Þ½ÃÁö´Â ÇÔ¼ö°¡ ³¡³¯ ¶§ Á¤»óÀûÀ¸·Î 󸮵˴ϴÙ. +ÇÔ¼ö°¡ Á¾·áÇϰųª(Exits) Á¸ÀçÇÏÁö ¾Ê´Â ÆÄÀÏÀ» ½ÇÇàÇÏ´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ¾ß±âÇÏ´õ¶óµµ °°Àº ÀÏÀÌ ÀϾ´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, Á¤¼ö¸¦ µ¹·ÁÁÖ¸é, ±× ¸Þ½ÃÁö´Â Áï½Ã ¹Ý¼ÛµË´Ï´Ù; Áï, ÇÁ·Î±×·¥Àº ¸Þ½ÃÁö¸¦ ´õ ÀÌ»ó ó¸®ÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, WM_LBUTTONDOWN (0x201)À» °¨½ÃÇÏ´Â ÇÔ¼ö°¡ Á¤¼ö¸¦ µ¹·ÁÁÖ¸é ¸ñÇ¥ âÀº ¸¶¿ì½º Ŭ¸¯ÀÌ ÀϾ »ç½ÇÀ» °íÁö ¹ÞÁö ¸øÇÕ´Ï´Ù. ¸¹Àº °æ¿ì (¿¹¸¦ µé¾î PostMessage¸¦ ÅëÇÏ¿© µµÂøÇÏ´Â ¸Þ½ÃÁöÀÇ °æ¿ì), ¾î¶² Á¤¼ö°¡ ¹ÝȯµÇ¾îµµ »ó°üÇÏÁö ¾Ê½À´Ï´Ù; ±×·¯³ª Àß ¸ð¸£°Ú´Ù¸é, 0ÀÌ º¸Åë °¡Àå ¾ÈÀüÇÕ´Ï´Ù.

+

+À¯È¿ÇÑ ¹Ýȯ °ªÀÇ ¹üÀ§´Â ½ºÅ©¸³Æ®ÀÇ ½ÇÇàÆÄÀÏÀÌ 32-ºñÆ®Àΰ¡ 64-ºñÆ®Àΰ¡¿¡ µû¶ó ´Ù¸¨´Ï´Ù. ºñ¾î ÀÖÁö ¾ÊÀº °ªÀº ¹Ýµå½Ã ¹üÀ§°¡ 32ºñÆ®-½ºÅ©¸³Æ®¿¡ ´ëÇÏ¿© (A_PtrSize = 4) -231ºÎÅÍ 232-1±îÁö ±×¸®°í 64-ºñÆ® ½ºÅ©¸³Æ®¿¡ ´ëÇÏ¿©(A_PtrSize = 8) -263ºÎÅÍ 263-1±îÁöÀÔ´Ï´Ù.

+

+[v1.1.20+]: ÇϳªÀÇ ¸Þ½ÃÁö¿¡ ´ëÇÏ¿© ¿©·¯ °¨½Ã ÇÔ¼ö°¡ ÀÖ´Ù¸é, ºñ¾î ÀÖÁö ¾ÊÀº °ªÀ» µ¹·ÁÁÙ ¶§±îÁö Çϳª¾¿ È£ÃâµË´Ï´Ù.

+ +

ÃÑÆò

+

+Á¤»ó ÇÔ¼ö-È£Ãâ°ú ´Ù¸£°Ô, °¨½Ã ¸Þ½ÃÁö°¡ µµÂøÇϸé ÇÔ¼ö´Â »õ·Î¿î ¾²·¹µå·Î È£ÃâµË´Ï´Ù. ÀÌ ¶§¹®¿¡, ÇÔ¼ö´Â SendMode ±×¸®°í DetectHiddenWindows°ú °°Àº ±âº»°ªÀ» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ±âº»°ªÀº ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡¼­ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+

+ÄÜÆ®·Ñ¿¡ (Æ÷½ºÆ® ¹æ½ÄÀÌ ¾Æ´Ï¶ó) ¼¾µå ¹æ½ÄÀ¸·Î Àü¼ÛµÇ´Â ¸Þ½ÃÁö´Â °üÁ¦µÇÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ½Ã½ºÅÛÀº ±×·± ¸Þ½ÃÁöµéÀ» È­¸é µÚÀÇ ÄÜÆ®·Ñ¿¡ Á÷Á¢ º¸³» ¹ö¸®±â ¶§¹®ÀÔ´Ï´Ù. ÀÌ·± ÀÏÀº ½Ã½ºÅÛ¿¡¼­-»ý¼ºµÇ´Â ¸Þ½ÃÁöµé¿¡´Â º°·Î ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ´ëºÎºÐ Æ÷½ºÆ® ¹æ½ÄÀ¸·Î Àü¼ÛµÇ±â ¶§¹®ÀÔ´Ï´Ù..

+

+OnMessage¸¦ È£ÃâÇÏ´Â ½ºÅ©¸³Æ®´Â ÀÚµ¿À¸·Î ¿µ¼ÓÀûÀÌ µË´Ï´Ù. ¶ÇÇÑ ´ÜÀÏ ½ÇüÀ̱⵵ ÇÕ´Ï´Ù. ´Ü, #SingleInstance¸¦ »ç¿ëÇÏ¿© ¿À¹ö¶óÀ̵åµÈ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+

+ÇÔ¼ö°¡ ¿©ÀüÈ÷ ½ÇÇàÁßÀÎ µ¿¾È¿¡ ¶Ç °°Àº ¸Þ½ÃÁö°¡ µµÂøÇϸé, ±× ÇÔ¼ö´Â ´Ù½Ã È£ÃâµÇÁö ¾Ê½À´Ï´Ù (´Ü, MaxThreads°¡ 1º¸´Ù Å« °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù); ´ë½Å¿¡, ±× ¸Þ½ÃÁö´Â °¨½ÃµÇÁö ¾ÊÀº °ÍÀ¸·Î Ãë±ÞµË´Ï´Ù. ÀÌ°ÍÀÌ ¸¶À½¿¡ µéÁö ¾ÊÀ¸¸é, 0x312 ÀÌ»óÀÇ ¸Þ½ÃÁö´Â ±×ÀÇ ÇÔ¼ö°¡ ¿Ï·áÇÒ ¶§±îÁö ¹öÆÛ Ã³¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÔ¼öÀÇ Ã¹ ÁÙ¿¡ CriticalÀ» ÁöÁ¤ÇÏ¸é µË´Ï´Ù. ´ë¾ÈÀ¸·Î, °¨½Ã ÇÔ¼ö°¡ ÀÏÀ» ³¡³¾¸¸Å­ ÃæºÐÈ÷ ±ä ½Ã°£À» Áö¼ÓÇϱ⸸ ÇÏ¸é ¾²·¹µå ÀÎÅÍ·´Æ®·Î °°Àº ÀÏÀ» ´Þ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, 0x312º¸´Ù ÀÛÀº ¸Þ½ÃÁö´Â Critical ¶Ç´Â Thread InterruptÀ¸·Î ¹öÆÛ Ã³¸®ÇÒ ¼ö ¾ø½À´Ï´Ù (±×·¸Áö¸¸, v1.0.46+¿¡¼­, CriticalÀº µµ¿òÀÌ µË´Ï´Ù. ¿Ö³ÄÇÏ¸é ¸Þ½ÃÁö¸¦ ´ú Á¡°ËÇϱ⠶§¹®¿¡, ÇÔ¼ö°¡ ´õ ¸¹Àº ½Ã°£À» °¡Áö°í ÀÏÀ» ³¡³¾ ¼ö ÀÖ½À´Ï´Ù). ±×·± ¸Þ½ÃÁö¸¦ ³õÄ¡Áö ¾Êµµ·Ï º¸ÀåÇÏ´Â À¯ÀÏÇÑ ¹æ¹ýÀº ÇÔ¼ö°¡ 6¹Ð¸®ÃÊ ¾Æ·¡¿¡¼­ ÀÏÀ» ³¡³»µµ·Ï È®ÀÎÇÏ´Â °ÍÀÔ´Ï´Ù (¹°·Ð ÀÌ Á¦ÇÑÀº Critical 30À» ÅëÇÏ¿© ´õ ¿Ã¸± ¼ö ÀÖ½À´Ï´Ù). + +ÀÌ·¸°Ô ÇÏ´Â ÇÑ °¡Áö ¹æ¹ýÀº 0x312º¸´Ù Å« °¨½Ã ¸Þ½ÃÁö¸¦ ÀÚ½ÅÀÇ ½ºÅ©¸³Æ®¿¡ Æ÷½ºÆ®Çؼ­ ¹Ì·¡ÀÇ ¾²·¹µå¸¦ ¹Ì¸® Å¥¿¡ ÁغñÇÏ´Â °ÍÀÔ´Ï´Ù. ±× ¸Þ½ÃÁöÀÇ ÇÔ¼ö´Â ÀӰ豸¿ªÀ» ±×ÀÇ Ã¹ ÁÙ¿¡ ÁöÁ¤Çؼ­ ±×ÀÇ ¸Þ½ÃÁö°¡ ¹öÆÛ Ã³¸® µÇµµ·Ï È®ÀÎÇØ¾ß ÇÕ´Ï´Ù.

+

+½ºÅ©¸³Æ®°¡ Àý´ëÀûÀ¸·Î ÀÎÅÍ·´Æ®°¡ ºÒ°¡´ÉÇÑ µ¿¾È¿¡ 0x312º¸´Ù ÀÛÀº °¨½Ã ¸Þ½ÃÁö°¡ µµÂøÇϸé -- ¿¹¸¦ µé¾î ¸Þ´º°¡ º¸¿©Áö°Å³ª, KeyDelay/MouseDelay°¡ ÁøÇà ÁßÀ̰ųª, ¶Ç´Â Ŭ¸³º¸µå°¡ ¿­·Á ÀÖ´Ù¸é -- ±× ¸Þ½ÃÁöÀÇ ÇÔ¼ö´Â È£ÃâµÇÁö ¾Ê½À´Ï´Ù. ±×¸®°í ±× ¸Þ½ÃÁö´Â °üÁ¦µÇÁö ¾ÊÀº °ÍÀ¸·Î 󸮵˴ϴÙ. ´ëÁ¶ÀûÀ¸·Î 0x312 ÀÌ»óÀÇ °¨½Ã ¸Þ½ÃÁö´Â ÀÌ·± ÀÎÅÍ·´Æ® ºÒ°¡´É ±â°£µ¿¾È¿¡ ¹öÆÛ Ã³¸®µË´Ïµð; Áï, ±×ÀÇ ÇÔ¼ö´Â ½ºÅ©¸³Æ®°¡ ÀÎÅÍ·´Æ® °¡´ÉÇØÁú ¶§ È£ÃâµË´Ï´Ù.

+

+ ¾²·¹µå ÀÎÅÍ·´Æ® ¶Ç´Â ÀӰ豸¿ªÀÇ ¼³Á¤ ¶§¹®¿¡ ½ºÅ©¸³Æ®°¡ ÀÎÅÍ·´Æ®°¡ ºÒ°¡´ÉÇÑ µ¿¾È¿¡ 0x312 º¸´Ù ÀÛÀº °¨½Ã ¸Þ½ÃÁö°¡ µµÂøÇϸé, ÇöÀç ¾²·¹µå°¡ ÀÎÅÍ·´Æ® µÇ¾î ±×ÀÇ °¨½Ã ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î 0x312 ÀÌ»óÀÇ °¨½Ã ¸Þ½ÃÁö´Â ¾²·¹µå°¡ ÀÏÀ» ³¡³»°Å³ª ÀÎÅÍ·´Æ®°¡ °¡´ÉÇØÁú ¶§±îÁö ¹öÆÛ Ã³¸®µË´Ï´Ù.

+

+OnMessage ¾²·¹µåÀÇ ¿ì¼± ¼øÀ§´Â ¾ðÁ¦³ª 0ÀÔ´Ï´Ù. °á°úÀûÀ¸·Î ÇöÀç ¾²·¹µåÀÇ ¿ì¼± ¼øÀ§°¡ 0º¸´Ù ³ôÀ¸¸é ¾î¶² ¸Þ½ÃÁöµµ °üÁ¦µÇÁö ¾Ê°í ¹öÆÛ Ã³¸®µÇÁö ¾Ê½À´Ï´Ù.

+

+(0x400¹Ì¸¸ÀÇ) ½Ã½ºÅÛ ¸Þ½ÃÁö´Â ÁÖÀÇÇؼ­ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, °¨½Ã ÇÔ¼ö°¡ »¡¸® ÀÏÀ» ³¡³»Áö ¸øÇϸé, ±× ¸Þ½ÃÁö¿¡ ´ëÇÑ ÀÀ´äÀº ½Ã½ºÅÛÀÇ ¿¹»óº¸´Ù ÈξÀ ´õ °É¸³´Ï´Ù. ÀÌ ¶§¹®¿¡ ºÎÀÛ¿ëÀ» ¾ß±âÇÒ ¼ö ÀÖ½À´Ï´Ù. °¨½Ã ÇÁ·Î±×·¥ÀÌ ´õ ÀÌ»óÀÇ ¸Þ½ÃÁö 󸮸¦ ¾ï´©¸£±â À§ÇØ Á¤¼ö¸¦ µ¹·ÁÁÖ¸é ¿øÇÏÁö ¾Ê´Â ÇàÀ§°¡ ÀϾ ¼öµµ ÀÖ½À´Ï´Ù. ½Ã½ºÅÛÀº ´Ù¸¥ ó¸® ´Ù¸¥ ÀÀ´äÀ» ¿¹»óÇÏ°í Àֱ⠶§¹®ÀÔ´Ï´Ù.

+

+½ºÅ©¸³Æ®°¡ MsgBox¿Í °°Àº ½Ã½ºÅÛ Ã¢À» º¸¿©ÁÖ°í ÀÖÀ» ¶§, ÄÜÆ®·Ñ¿¡ Æ÷½ºÆ®µÇ´Â ¸Þ½ÃÁö´Â ¸ðµÎ °üÁ¦°¡ µÇÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, ½ºÅ©¸³Æ®°¡ MsgBox¸¦ º¸¿©ÁÖ°í ÀÖ°í »ç¿ëÀÚ°¡ GUI â¿¡ ¹öÆ°À» Ŭ¸¯Çϸé, WM_LBUTTONDOWN ¸Þ½ÃÁö´Â °¨½Ã ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾Ê°í Á÷Á¢ ¹öÆ°¿¡ Àü¼ÛµË´Ï´Ù.

+

+¿ÜºÎ ÇÁ·Î±×·¥Àº PostThreadMessage() ¶Ç´Â ±âŸ API È£ÃâÀ» ÅëÇÏ¿© ¸Þ½ÃÁö¸¦ Á÷Á¢ ½ºÅ©¸³Æ®ÀÇ ¾²·¹µå¿¡ Æ÷½ºÆ®ÇÒ ¼ö ÀÖÁö¸¸, ÀÌ°ÍÀº ±ÇÀåÇÏÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ±× ¸Þ½ÃÁöµéÀº ½ºÅ©¸³Æ®°¡ MsgBox °°Àº ½Ã½ºÅÛ Ã¢À» º¸¿©ÁÖ°í ÀÖ´Â ÁßÀ̶ó¸é ¼Ò½ÇµÇ¾î ¹ö¸®±â ¶§¹®ÀÔ´Ï´Ù. ´ë½Å¿¡, º¸Åë ½ºÅ©¸³Æ®ÀÇ ¸ÞÀΠâÀ̳ª ±×ÀÇ GUI â ÁßÀÇ Çϳª¿¡ ¸Þ½ÃÁö¸¦ º¸³»´Â °ÍÀÌ °¡Àå ÁÁ½À´Ï´Ù (send vs post).

+ +

°ü·Ã Ç׸ñ

+

RegisterCallback(), OnExit, OnClipboardChange, Post/SendMessage, ÇÔ¼ö, â ¸Þ½ÃÁö ¸ñ·Ï, ¾²·¹µå, Critical, DllCall()

+ +

¿¹Á¦

+ +
; ¿¹Á¦: ´ÙÀ½ÀÇ ÀÛµ¿ÇÏ´Â ½ºÅ©¸³Æ®´Â GUI â¿¡¼­ ¸¶¿ì½º Ŭ¸¯À» °¨½ÃÇÕ´Ï´Ù
+; °ü·Ã ÁÖÁ¦: GuiContextMenu
+
+Gui, Add, Text,, ÀÌ Ã¢ ¾Æ¹«µ¥³ª Ŭ¸¯ÇϽʽÿÀ.
+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 Gui #%A_Gui% â¿¡¼­ Ŭ¶óÀ̾ðÆ® ÁÂÇ¥ %X%x%Y%.%Control%¿¡ ¿ÞŬ¸¯ Çß½À´Ï´Ù.
+}
+
+GuiClose:
+ExitApp
+ +
; ¿¹Á¦: ´ÙÀ½ ½ºÅ©¸³Æ®´Â ½Ã½ºÅÛ ¼Ë´Ù¿î/·Î±×¿ÀÆ÷¸¦ ŽÁöÇÕ´Ï´Ù. ±×¸®°í ±×°ÍÀ» Ãë¼ÒÇÒ ±âȸ¸¦ ÁÝ´Ï´Ù
+; Windows Vista ÀÌÈÄ´Â ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù°í º¸°íµÇ¾ú½À´Ï´Ù).
+; °ü·Ã ÁÖÁ¦: OnExit
+
+; ´ÙÀ½ DllCallÀº ¼±ÅÃÀûÀÔ´Ï´Ù: OS¿¡°Ô ÀÌ ½ºÅ©¸³Æ®¸¦ (´Ù¸¥ ¸ðµç ¾îÇø®ÄÉÀ̼Ǻ¸´Ù) ¸ÕÀú ´ÝÀ¸¶ó°í ¸í·ÉÇÕ´Ï´Ù.
+DllCall("kernel32.dll\SetProcessShutdownParameters", UInt, 0x4FF, UInt, 0)
+OnMessage(0x11, "WM_QUERYENDSESSION")
+return
+
+WM_QUERYENDSESSION(wParam, lParam)
+{
+    ENDSESSION_LOGOFF = 0x80000000
+    if (lParam & ENDSESSION_LOGOFF)  ; »ç¿ëÀÚ°¡ ·Î±×¿ÀÇÁÁßÀÔ´Ï´Ù.
+        EventType = Logoff
+    else  ; ½Ã½ºÅÛÀº ¼Ë´Ù¿î ¶Ç´Â Àç½ÃÀÛ ÁßÀÔ´Ï´Ù.
+        EventType = Shutdown
+    MsgBox, 4,, %EventType% in progress.  Allow it?
+    IfMsgBox Yes
+        return true  ; OS¿¡°Ô ¼Ë´Ù¿î/·Î±×¿ÀÇÁ¸¦ °è¼Ó Çã¿ëÇϵµ·Ï ¸í·ÉÇÕ´Ï´Ù.
+    else
+        return false  ; OS¿¡°Ô ¼Ë´Ù¿î/·Î±×¿ÀÇÁ¸¦ Ãë¼ÒÇϵµ·Ï ¸í·ÉÇÕ´Ï´Ù.
+}
+ +
; ¿¹Á¦: ½ºÅ©¸³Æ®¿¡°Ô ´Ù¸¥ ½ºÅ©¸³Æ®³ª ÇÁ·Î±×·¥À¸·ÎºÎÅÍ ¸ÂÃã ¸Þ½ÃÁö¿Í ÃÖ´ë µÎ °³ÀÇ ¼ýÀÚ¸¦ ¹Þµµ·Ï ¸¸µì´Ï´Ù.
+; (¼ýÀÚ ´ë½Å¿¡ ¹®ÀÚ¿­À» Àü¼ÛÇÏ·Á¸é, ÀÌ ´ÙÀ½ ¿¹Á¦¸¦ º¸½Ê½Ã¿À).
+
+OnMessage(0x5555, "MsgMonitor")
+OnMessage(0x5556, "MsgMonitor")
+
+MsgMonitor(wParam, lParam, msg)
+{
+    ; ½Å¼ÓÇÏ°Ô µ¹¾Æ°¡´Â °ÍÀÌ Áß¿äÇÏ´Ù¸é, ToolTipÀ» »ç¿ëÇÏ´Â ÆíÀÌ ´õ ÁÁ½À´Ï´Ù.
+    ; MsgBox °°Àº °æ¿ì´Â ÇÔ¼ö°¡ ÀÏÀ» ³¡³»Áö ¸øÇϵµ·Ï ¹æÇØÇϱ⠶§¹®ÀÔ´Ï´Ù:
+    ToolTip Message %msg% arrived:`nWPARAM: %wParam%`nLPARAM: %lParam%
+}
+
+; ´ÙÀ½À» ´Ù¸¥ ½ºÅ©¸³Æ® ¾È¿¡¼­ »ç¿ëÇϸé À§ÀÇ ½ºÅ©¸³Æ® ¾È¿¡¼­ ÇÔ¼ö¸¦ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù:
+SetTitleMatchMode 2
+DetectHiddenWindows On
+if WinExist("Name of Receiving Script.ahk ahk_class AutoHotkey")
+    PostMessage, 0x5555, 11, 22  ; ÀÌ ¸Þ½ÃÁö´Â À§ÀÇ WinExist() ¶§¹®¿¡ "¸¶Áö¸· ¹ß°ß â"À¸·Î Àü¼ÛµË´Ï´Ù.
+DetectHiddenWindows Off  ; PostMessage°¡ ³¡³¯ ¶§±îÁö ²ô¸é ¾ÈµË´Ï´Ù.
+ +
; ¿¹Á¦: ¹®ÀÚ¿­À» ±æÀÌ¿¡ »ó°ü¾øÀÌ ÇÑ ½ºÅ©¸³Æ®¿¡¼­ ´Ù¸¥ ½ºÅ©¸³Æ®·Î Àü¼ÛÇÕ´Ï´Ù.  ´ÙÀ½Àº ÀÛµ¿ÇÏ´Â ¿¹Á¦ÀÔ´Ï´Ù.
+; »ç¿ëÇÏ·Á¸ç´Ï, ´ÙÀ½ ½ºÅ©¸³Æ®µéÀ» ÀúÀåÇÏ°í ½ÇÇàÇÑ ´ÙÀ½ Win+Space¸¦ ´©¸£¸é 
+; InputBox¸¦ º¼¼ö ÀÖ½À´Ï´Ù. ±× ¾È¿¡ ¹®ÀÚ¿­À» ŸÀÚÇØ ³ÖÀ¸¸é µË´Ï´Ù.
+
+; ´ÙÀ½ ½ºÅ©¸³Æ®¸¦ "Receiver.ahk"·Î ÀúÀåÇÏ°í ±âµ¿½ÃÅ°½Ê½Ã¿À:
+#SingleInstance
+OnMessage(0x4a, "Receive_WM_COPYDATA")  ; 0x4a is WM_COPYDATA
+return
+
+Receive_WM_COPYDATA(wParam, lParam)
+{
+    StringAddress := NumGet(lParam + 2*A_PtrSize)  ; CopyDataStructÀÇ lpData ¸â¹ö¸¦ ¹Þ½À´Ï´Ù.
+    CopyOfData := StrGet(StringAddress)  ; ±¸Á¶Ã¼·ÎºÎÅÍ ¹®ÀÚ¿­À» º¹»çÇÕ´Ï´Ù.
+    ; ±×°ÍÀ» ToolTip vs. MsgBox·Î º¸¿©ÁÝ´Ï´Ù. ±×·¡¼­ ÀûÀýÇÑ ½Ã°£¿¡ µ¹·ÁÁÙ ¼ö ÀÖ½À´Ï´Ù:
+    ToolTip %A_ScriptName%`nReceived the following string:`n%CopyOfData%
+    return true  ;  1 (true)À» µ¹·ÁÁÖ´Â °ÍÀÌ ÀÌ ¸Þ½ÃÁö¸¦ ½ÂÀÎÇÏ´Â ÀüÅëÀûÀÎ ¹æ½ÄÀÔ´Ï´Ù.
+}
+
+; ´ÙÀ½ ½ºÅ©¸³Æ®¸¦ "Sender.ahk"·Î ÀúÀåÇÑ ´ÙÀ½ ±âµ¿½ÃÅ°½Ê½Ã¿À. ±× ´ÙÀ½, Win+Space ÇÖÅ°¸¦ ´©¸£½Ê½Ã¿À.
+TargetScriptTitle = Receiver.ahk ahk_class AutoHotkey
+
+#space::  ; Win+Space ÇÖÅ°. ´©¸£¸é ¸Þ½ÃÁö ¹®ÀÚ¿­À» ÀÔ·ÂÇÒ InputBox°¡ ³ªÅ¸³³´Ï´Ù.
+InputBox, StringToSend, Send text via WM_COPYDATA, Enter some text to Send:
+if ErrorLevel  ; »ç¿ëÀÚ°¡ Ãë¼Ò ¹öÆ°À» ´­·¶½À´Ï´Ù.
+    return
+result := Send_WM_COPYDATA(StringToSend, TargetScriptTitle)
+if result = FAIL
+    MsgBox SendMessage failed. Does the following WinTitle exist?:`n%TargetScriptTitle%
+else if result = 0
+    MsgBox Message sent but the target window responded with 0, which may mean it ignored it.
+return
+
+Send_WM_COPYDATA(ByRef StringToSend, ByRef TargetScriptTitle)  ; ByRef´Â ÀÌ °æ¿ì ¸Þ¸ð¸®¸¦ »ó´çÈ÷ Àý¾àÇØ ÁÝ´Ï´Ù.
+; ´ÙÀ½ ÇÔ¼ö´Â ÁöÁ¤µÈ ¹®ÀÚ¿­À» ÁöÁ¤µÈ â¿¡ Àü¼ÛÇÏ°í ÀÀ´äÀ» µ¹·ÁÁÝ´Ï´Ù.
+; ¸ñÇ¥ âÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇßÀ¸¸é ÀÀ´äÀº 1ÀÔ´Ï´Ù. ¶Ç´Â ¹«½ÃÇß´Ù¸é 0ÀÔ´Ï´Ù.
+{
+    VarSetCapacity(CopyDataStruct, 3*A_PtrSize, 0)  ; ±¸Á¶Ã¼ÀÌ ¸Þ¸ð¸® ±¸¿ªÀ» ¼³Á¤ÇÕ´Ï´Ù.
+    ; ¸ÕÀú ±¸Á¶Ã¼ÀÇ cbData ¸â¹ö¿¡ ¹®ÀÚ¿­ÀÇ Å©±â¸¦ ¼³Á¤ÇÕ´Ï´Ù. ±×ÀÇ 0 Á¾·á¹®ÀÚ¸¦ Æ÷ÇÔÇÕ´Ï´Ù:
+    SizeInBytes := (StrLen(StringToSend) + 1) * (A_IsUnicode ? 2 : 1)
+    NumPut(SizeInBytes, CopyDataStruct, A_PtrSize)  ; OSÀÇ ¿ä±¸´ë·Î ÀÌ·¸°Ô ó¸®ÇÕ´Ï´Ù.
+    NumPut(&StringToSend, CopyDataStruct, 2*A_PtrSize)  ; lpData¿¡ ¹®ÀÚ¿­ ÀÚü¸¦ °¡¸®Å°µµ·Ï ¼³Á¤ÇÕ´Ï´Ù.
+    Prev_DetectHiddenWindows := A_DetectHiddenWindows
+    Prev_TitleMatchMode := A_TitleMatchMode
+    DetectHiddenWindows On
+    SetTitleMatchMode 2
+    SendMessage, 0x4a, 0, &CopyDataStruct,, %TargetScriptTitle%  ; 0x4a´Â WM_COPYDATAÀÔ´Ï´Ù. Post°¡ ¾Æ´Ï¶ó Send¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
+    DetectHiddenWindows %Prev_DetectHiddenWindows%  ; È£ÃâÀÚ¿¡ ´ëÇÏ¿© ¿ø·¡ ¼³Á¤À» º¹±¸ÇÕ´Ï´Ù.
+    SetTitleMatchMode %Prev_TitleMatchMode%         ; À§¿Í °°½À´Ï´Ù.
+    return ErrorLevel  ; SendMessageÀÇ ÀÀ´äÀ» ´Ù½Ã È£ÃâÀÚ¿¡°Ô Àü¼ÛÇÕ´Ï´Ù.
+}
+ +
; ¿¹Á¦: WinLIRC Ŭ¶óÀ̾ðÆ® ½ºÅ©¸³Æ®¸¦ ÂüÁ¶ÇϽʽÿÀ.
+; ³×Æ®¿öÅ© Á¢¼Ó¿¡ µ¥ÀÌÅÍ°¡ µµÂøÇÒ ¶§ OnMessage()¸¦ »ç¿ëÇÏ¿© °íÁö¸¦ ¹Þ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù.
+ + + diff --git a/src/docs/commands/OutputDebug.htm b/src/docs/commands/OutputDebug.htm new file mode 100644 index 0000000..082864c --- /dev/null +++ b/src/docs/commands/OutputDebug.htm @@ -0,0 +1,40 @@ + + + + +OutputDebug + + + + + + + +

OutputDebug

+ +

¹®ÀÚ¿­À» µð¹ö°Å¿¡ (ÀÖ´Ù¸é) Àü¼ÛÇÏ¿© º¸¿©ÁÝ´Ï´Ù.

+ +
OutputDebug, Text
+

¸Å°³º¯¼ö

+
+ +
Text
+

º¸¿©ÁÖ±â À§ÇØ µð¹ö°Å¿¡ Àü¼ÛÇÒ ÅؽºÆ®. ÀÌ ÅؽºÆ®¿¡´Â ¶óÀÎÇǵå (`n)°¡ Æ÷ÇÔµÇ¾î »õ ÁÙÀ» ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. °Ô´Ù°¡, ±â´Ù¶õ ÇÑ ÁÙÀº °è¼Ó ¼½¼ÇÀ» ¼ö´ÜÀ¸·Î ¿©·¯ °³ÀÇ ÂªÀº ÁÙµé·Î °¡¸¦ ¼ö ÀÖ½À´Ï´Ù.

+ +
+ +

³íÆò

+

+½ºÅ©¸³Æ®ÀÇ ÇÁ·Î¼¼½º¿¡ µð¹ö°Å°¡ ¾ø´Ù¸é, ½Ã½ºÅÛ µð¹ö°Å°¡ ±× ¹®ÀÚ¿­À» È­¸é¿¡ º¸¿©ÁÝ´Ï´Ù. ½Ã½ºÅÛ µð¹ö°Å°¡ ²¨Á® ÀÖ´Ù¸é, ÀÌ ¸í·É¾î´Â ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù.

+

+µð¹ö°ÅÀÇ ÇÑ °¡Áö ¿¹´Â DebugViewÀÔ´Ï´Ù. ÀÌ µð¹ö°Å´Â ¹«·áÀ̸ç www.sysinternals.com¿¡¼­ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.

+

+´ÙÀ½µµ ÂüÁ¶ÇϽʽÿÀ: ´Ù¸¥ µð¹ö±ë ¹æ¹ýµé

+ +

°ü·Ã Ç׸ñ

+

FileAppend, °è¼Ó ¼½¼Ç

+

¿¹Á¦

+
OutputDebug, %A_Now%: â "%TargetWindowTitle%"°¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¹Ç·Î, ÇÁ·Î¼¼½º°¡ Á¾·áµÇ¾ú½À´Ï´Ù.
+ + + diff --git a/src/docs/commands/Pause.htm b/src/docs/commands/Pause.htm new file mode 100644 index 0000000..ed3b2d8 --- /dev/null +++ b/src/docs/commands/Pause.htm @@ -0,0 +1,70 @@ + + + + +Pause + + + + + + + +

Pause

+ +

½ºÅ©¸³Æ®ÀÇ ÇöÀç ¾²·¹µå¸¦ Á¤ÁöÇÕ´Ï´Ù.

+ +
#p::Pause ; Win+P¸¦ ÇÑ ¹ø ´©¸£¸é ½ºÅ©¸³Æ®°¡ Á¤ÁöµË´Ï´Ù. ´Ù½Ã ´©¸£¸é ½ºÅ©¸³Æ®°¡ Àç°³µË´Ï´Ù.
+Pause [, On|Off|Toggle, OperateOnUnderlyingThread?]
+

¸Å°³º¯¼ö

+
+ +
On|Off|Toggle
+

ºñ¾î Àְųª »ý·«µÇ¸é, ±âº» °ªÀº ToggleÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ´ÙÀ½ ´Ü¾î Áß Çϳª¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù:

+

Toggle: ÇöÀç ¾²·¹µå¸¦ Á¤ÁöÇÕ´Ï´Ù. ´Ü, ±× ¾Æ·¡ÀÇ ¾²·¹µå°¡ Á¤ÁöÇØ ÀÖ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù. ÀÌ °æ¿ì ±× ¾Æ·¡ÀÇ ¾²·¹µå°¡ Àç°³µË´Ï´Ù.

+

On: ÇöÀç ¾²·¹µå¸¦ Á¤ÁöÇÕ´Ï´Ù.

+

Off: ÇöÀç ¾²·¹µå ¾Æ·¡ÀÇ ¾²·¹µå°¡ Á¤ÁöµÇ¾î ÀÖÀ¸¸é, Àç°³µÉ ¶§ ±× ¾Æ·¡ÀÇ ¾²·¹µå°¡ Àç°³µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ÀÌ ¸í·É¾î´Â ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù.
+

+ +
OperateOnUnderlyingThread?
+

Pause Off¿¡ ´ëÇÏ¿© ÀÌ ¸Å°³º¯¼ö´Â ¹«½ÃµË´Ï´Ù. ¿Ö³ÄÇÏ¸é ¾ðÁ¦³ª ±× ¾Æ·¡ÀÇ ¾²·¹µå À§¿¡¼­ ÀÛµ¿Çϱ⠶§¹®ÀÔ´Ï´Ù. ´Ù¸¥ °Í¿¡ ´ëÇؼ­´Â, Pause°¡ ÄÑÁ® ÀÖÀ» °æ¿ì¿¡¸¸ È¿°ú°¡ ÀÖ½À´Ï´Ù (ToggleÀ» »ç¿ë Æ÷ÇÔ).

+

´ÙÀ½ ¼ýÀÚ Áß Çϳª¸¦ ÁöÁ¤ÇϽʽÿÀ:

+

0 (¶Ç´Â »ý·«): ÇöÀç ¾²·¹µå°¡ Á¤ÁöÇÕ´Ï´Ù; Áï, ÇöÀç Pause ¸í·É¾î¸¦ ½ÇÇàÇÑ ¾²·¹µå.

+

1: + ÇöÀç ¾²·¹µå ¾Æ·¡ÀÇ ¾²·¹µå¸¦ Á¤ÁöÇÑ °ÍÀ¸·Î Ç¥½ÄÀ» ´ä´Ï´Ù. ±×·¡¼­ Àç°³Çϸé, (ÀÖ´Ù¸é) ½ÇÇà ÁßÀÎ ¸í·É¾î¸¦ Á¾·áÇÑ ´ÙÀ½, Á¤Áö »óÅ·Πµé¾î°©´Ï´Ù. ÇöÀç ¾²·¹µå ¾Æ·¡¿¡ ¾²·¹µå°¡ ¾øÀ¸¸é, ½ºÅ©¸³Æ® ÀÚü°¡ Á¤ÁöÇÕ´Ï´Ù. ÀÌ ¶§¹®¿¡ ŸÀ̸Ӱ¡ ÀÛµ¿À» ¸ØÃä´Ï´Ù (ÀÌ È¿°ú´Â ½ºÅ©¸³Æ®¿¡ ¾²·¹µå°¡ ¾øÀ» ¶§ "Pause Script" ¸Þ´º Ç׸ñÀ» »ç¿ëÇÑ °Í°ú µ¿ÀÏÇÕ´Ï´Ù).

+

ÁÖÀÇ: A_IsPaused¿¡´Â ±× ¾Æ·¡ÀÇ ¾²·¹µåÀÇ Á¤Áö »óÅ°¡ ´ã±é´Ï´Ù.

+ +
+ +

³íÆò

+

+ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀ» ²¨¹ö¸®´Â Suspend¿Í ´Ù¸£°Ô, pause¸¦ ÄѸé ÇöÀç ¾²·¹µå°¡ µ¿°áµË´Ï´Ù. ºÎÀÛ¿ëÀ¸·Î, ±× ¾Æ·¡¿¡ ÀÎÅÍ·´Æ®µÈ ¾²·¹µå°¡ ÀÖ´Ù¸é µ¿¸é »óÅ°¡ µË´Ï´Ù.

+

+¾²·¹µå°¡ Á¤ÁöÇÒ ¶§¸¶´Ù, ŸÀ̸Ӵ ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, ¸í½ÃÀûÀ¸·Î ±âµ¿µÈ ¾²·¹µå´Â ÇÖÅ° ±×¸®°í ¸Þ´º Ç׸ñ°ú °°ÀÌ ¿©ÀüÈ÷ ±âµ¿µÉ ¼ö ÀÖ½À´Ï´Ù; ±×·¯³ª ¾²·¹µå°¡ ³¡³¯ ¶§, ±× ¾Æ·¡ÀÇ ¾²·¹µå´Â ¸ØÃâ °ÍÀÔ´Ï´Ù. ´Ù¸¥ ¸»·Î, °¢ ¾²·¹µå´Â ´Ù¸¥ ¾²·¹µå¿Í µ¶¸³ÀûÀ¸·Î Á¤ÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+½ºÅ©¸³Æ®ÀÇ ÇöÀç ¾²·¹µå°¡ Á¤Áö »óÅ¿¡ ÀÖÀ¸¸é Æ®·¹ÀÌ ¾ÆÀÌÄÜÀÇ »ö±òÀÌ ÃÊ·Ï»ö¿¡¼­ »¡°£»öÀ¸·Î ¹Ù²ò´Ï´Ù. ÀÌ Ä÷¯ º¯È­´Â ¾ÆÀÌÄÜÀ» µ¿°áÇϸé ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù. Menu ¸í·É¾îÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö¿¡ 1À» ÁöÁ¤ÇÏ¸é µË´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
Menu, Tray, Icon, C:\My Icon.ico, , 1
+

+½ºÅ©¸³Æ®¸¦ Á¤ÁöÇÏÁö ¾Ê°í ŸÀ̸Ӹ¦ ²ô·Á¸é Thread, NoTimers¸¦ »ç¿ëÇϽʽÿÀ.

+

+Pause ¸í·É¾î´Â ±â´É ¸é¿¡¼­ ³»Àå ¸Þ´º Ç׸ñ "Pause Script"¿Í ºñ½ÁÇÕ´Ï´Ù.

+

+¸Þ´º¸¦ (Æ®·¹ÀÌ ¸Þ´º, ¸Þ´º ¹Ù, GUI ¹®¸Æ ¸Þ´º, µîµî.) º¸¿©ÁÖ°í ÀÖ´Â µ¿¾È (°ø½ÄÀûÀ¸·Î Á¤ÁöÇÑ °ÍÀº ¾Æ´ÏÁö¸¸) ½ºÅ©¸³Æ®´Â ¾ðÁ¦³ª Á¤ÁöÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+Suspend, Menu, ExitApp, ¾²·¹µå, SetTimer

+ +

¿¹Á¦

+
Pause::Pause  ; Åä±Û-Á¤Áö ÇÔ¼ö¸¦ "pause" Å°¿¡ ÇÒ´çÇÕ´Ï´Ù...
+#p::Pause  ; ... ¶Ç´Â ±×°ÍÀ» Win+p³ª ±âŸ ´Ù¸¥ ÇÖÅ°¿¡ ÇÒ´çÇÕ´Ï´Ù.
+ +
; Pause ¸í·É¾î¸¦ ¶Ç´Ù¸¥ ½ºÅ©¸³Æ®¿¡ Àü¼ÛÇÕ´Ï´Ù.
+DetectHiddenWindows, On
+WM_COMMAND := 0x111
+ID_FILE_PAUSE := 65403
+PostMessage, WM_COMMAND, ID_FILE_PAUSE,,, C:\YourScript.ahk ahk_class AutoHotkey
+ + + diff --git a/src/docs/commands/PixelGetColor.htm b/src/docs/commands/PixelGetColor.htm new file mode 100644 index 0000000..8667d17 --- /dev/null +++ b/src/docs/commands/PixelGetColor.htm @@ -0,0 +1,65 @@ + + + + +PixelGetColor + + + + + + + +

PixelGetColor

+ +

ÁöÁ¤µÈ x,y ÁÂÇ¥¿¡ ÀÖ´Â Çȼ¿ÀÇ Ä÷¯¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+ +
PixelGetColor, OutputVar, X, Y [, Alt|Slow|RGB]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

½ÊÀ°Áø BGR Çü½ÄÀ¸·Î Ä÷¯ ID¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§. ¿¹¸¦ µé¾î, º¸¶ó»öÀº 0x800080À¸·Î Á¤Àǵ˴ϴÙ. û»öÀÇ Ã¤µµ°¡ 80ÀÌ°í Àû»öÀÇ Ã¤µµ°¡ 80 ±×¸®°í ³ì»öÀº äµµ°¡ 0À̱⠶§¹®ÀÔ´Ï´Ù.

+ +
X, Y
+

Çȼ¿ÀÇ X¿Í Y ÁÂÇ¥, Ç¥Çö½Ä °¡´É. ÁÂÇ¥´Â È°¼º â¿¡ »ó´ëÀûÀÔ´Ï´Ù. ´Ü, CoordMode¸¦ »ç¿ëÇÏ¿© ÁÂÇ¥ ü°è¸¦ ¹Ù²Ù¾ú´Ù¸é ¿¹¿ÜÀÔ´Ï´Ù.

+ +
Alt|Slow|RGB
+

ÀÌ ¸Å°³º¯¼ö´Â 0 °³ ÀÌ»óÀÇ ´ÙÀ½ ´Ü¾î°¡ ´ã±é´Ï´Ù. ´Ü¾î°¡ ¿©·¯ °³ Á¸ÀçÇϸé, ´ÙÀ½ ´Ü¾î¿Í ½ºÆäÀ̽º·Î °¡¸£½Ê½Ã¿À (¿¹, Alt RGB).

+

+ Alt [v1.0.43.10+]: ´ëü ¹æ¹ýÀ» »ç¿ëÇÏ¿© »öÀ» ¿­¶÷ÇÕ´Ï´Ù. Á¤»ó ¹æ¹ýÀ¸·Î´Â ƯÁ¤ À¯ÇüÀÇ Ã¢¿¡ ´ëÇÏ¿© Á¤È®Çϰųª À¯È¿ÇÑ Ä÷¯¸¦ ¾òÀ» ¼ö ¾øÀ» °æ¿ì¿¡ »ç¿ëµË´Ï´Ù. ÀÌ ¹æ¹ýÀº Á¤»ó ¹æ¹ýº¸´Ù ´ë·« 10% Á¤µµ ´À¸³´Ï´Ù.

+

+ Slow [v1.0.43.10+]: ´õ Á¤±³ÇÑ ¹æ¹ýÀ» »ç¿ëÇÏ¿© Ä÷¯¸¦ ¿­¶÷ÇÕ´Ï´Ù. ¾î¶² Àüü È­¸é ¾îÇø®ÄÉÀ̼ǿ¡¼­ ´Ù¸¥ ¸Þ½îµå´Â ½ÇÆÐÇÏÁö¸¸ ÀÌ ¹æ¹ýÀº ÀÛµ¿ÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ÀÌ ¹æ¹ýÀº Á¤»ó ¹æ¹ýº¸´Ù ´ë·« ¼¼ ¹è ´À¸³´Ï´Ù. ÁÖÀÇ: Slow°¡ Altº¸´Ù ¿ì¼± ¼øÀ§°¡ ³ô½À´Ï´Ù. ±×·¡¼­ ÀÌ °æ¿ì´Â Alt¸¦ ÁöÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+ RGB: Ä÷¯¸¦ RGB vs. BGR Æ÷¸ËÀ¸·Î ¿­¶÷ÇÕ´Ï´Ù. ´Ù¸¥ ¸»·Î, Àû»ö°ú û»öÀ» ±³È¯ÇÕ´Ï´Ù. ÀÌ´Â WinSet, Gui, Progress, ±×¸®°í SplashImage°ú ȣȯµÇ´Â Ä÷¯¸¦ ¿­¶÷ÇÏ´Â µ¥ À¯¿ëÇÕ´Ï´Ù.

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖ¾úÀ¸¸é 1 ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+Çȼ¿Àº ¹Ýµå½Ã º¸¿©¾ß ÇÕ´Ï´Ù; ´Ù¸¥ ¸»·Î, â¿¡¼­ ´Ù¸¥ â¿¡ °¡·ÁÁø Çȼ¿ Ä÷¯´Â ¿­¶÷ÇÒ ¼ö ¾ø½À´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, ¸¶¿ì½º ¾Æ·¡ÀÇ Ä¿¼­´Â º¸Åë ŽÁöÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ¿¡ ´ëÇÑ ¿¹¿Ü´Â °ÔÀÓ Ä¿¼­ÀÔ´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì °ÔÀÓ Ä¿¼­´Â ÀÚ½ÅÀÇ ¾Æ·¡¿¡ Çȼ¿À» ¼û±é´Ï´Ù.

+

+ÇöÀç È­¸éÀÇ Ä÷¯¸¦ ¾Ë¾Æ³»·Á¸é Window Spy (Æ®·¹ÀÌ ¾ÆÀÌÄÜ ¸Þ´º)¸¦ »ç¿ëÇϰųª ¶Ç´Â ÀÌ ÆäÀÌÁö ¾Æ·¡¿¡ ¿¡Á¦¸¦ »ç¿ëÇϽʽÿÀ.

+ +

¾Ë·ÁÁø ÇÑ°è:

+
    +
  • âÀÌ ºÎºÐÀûÀ¸·Î Åõ¸íÇϰųª ¶Ç´Â ÀÚ½ÅÀÇ Ä÷¯¸¦ º¸ÀÌÁö ¾Êµµ·Ï Ç¥½ÄÇß´Ù¸é (TransColor) ÀüÇüÀûÀ¸·Î ±× °á°ú Ä÷¯´Â ±× â¿¡ ¾Æ´Ï¶ó ±× â µÚÀÇ Ä÷¯°¡ µË´Ï´Ù.
  • +
  • PixelGetColor´Â ¾î¶² ¾îÇø®ÄÉÀ̼ǿ¡¼­ Á¤È®ÇÑ °á°ú¸¦ »ý»êÇÒ ¼ö ¾øÀ» ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ·± ÀÏÀÌ ÀϾ¸é, ´Ü¾î Alt ¶Ç´Â Slow¸¦ ¸¶Áö¸· ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇØ º¸½Ê½Ã¿À.
  • +
+ +

°ü·Ã Ç׸ñ

+

PixelSearch, ImageSearch, CoordMode, MouseGetPos

+ +

¿¹Á¦

+
^!z::  ; Control+Alt+Z ÇÖÅ°.
+MouseGetPos, MouseX, MouseY
+PixelGetColor, color, %MouseX%, %MouseY%
+MsgBox ÇöÀç Ä¿¼­ À§Ä¡ÀÇ Ä÷¯´Â %color%ÀÔ´Ï´Ù.
+return
+ + + diff --git a/src/docs/commands/PixelSearch.htm b/src/docs/commands/PixelSearch.htm new file mode 100644 index 0000000..2ceeafc --- /dev/null +++ b/src/docs/commands/PixelSearch.htm @@ -0,0 +1,73 @@ + + + + +PixelSearch + + + + + + + +

PixelSearch

+ +

È­¸éÀÇ ±¸¿ªÀ» °Ë»öÇØ ÁöÁ¤µÈ Ä÷¯ÀÇ Çȼ¿À» ã½À´Ï´Ù.

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

¸Å°³º¯¼ö

+
+ +
OutputVarX/Y
+

+ ColorID¿¡ ºÎÇÕÇϴ ù ¹ø° Çȼ¿ÀÇ X¿Í YÀÇ ÁÂÇ¥¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§ (ºÎÇÕÀÌ ¹ß°ßµÇÁö ¾ÊÀ¸¸é, º¯¼ö´Â ºñ¿öÁý´Ï´Ù). ÁÂÇ¥´Â È°¼º â¿¡ »ó´ëÀûÀÔ´Ï´Ù. ´Ü, CoordMode¸¦ »ç¿ëÇÏ¿© ÁÂÇ¥ ü°è¸¦ ¹Ù²Û °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+

+ ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î ÀÖÀ¸¸é, ErrorLevel (¾Æ·¡ ÂüÁ¶)¸¦ »ç¿ëÇÏ¿© ºÎÇÕÀÌ ¹ß°ßµÇ¾ú´ÂÁö ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù.

+ +
X1, Y1
+

°Ë»öÇÒ »ç°¢ ±¸¿ªÀÇ Á»ó ¸ð¼­¸®ÀÇ X¿Í YÀÇ ÁÂÇ¥. Ç¥Çö½Ä °¡´É. ÁÂÇ¥´Â È°¼º â¿¡ »ó´ëÀûÀÔ´Ï´Ù. ´Ü, CoordMode¸¦ »ç¿ëÇÏ¿© ÁÂÇ¥ ü°è¸¦ ¹Ù²Û °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù..

+ +
X2, Y2
+

°Ë»öÇÒ »ç°¢ ±¸¿ªÀÇ ¿ìÇÏ ¸ð¼­¸®ÀÇ X¿Í YÀÇ ÁÂÇ¥. Ç¥Çö½Ä °¡´É. ÁÂÇ¥´Â È°¼º â¿¡ »ó´ëÀûÀÔ´Ï´Ù. ´Ü, CoordMode¸¦ »ç¿ëÇÏ¿© ÁÂÇ¥ ü°è¸¦ ¹Ù²Û °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+ +
ColorID
+

°Ë»ö¿¡ »ç¿ëÇÒ Ã»-³ì-Àû(Blue-Green-Red (BGR)) Çü½ÄÀÇ ½ÊÀ°Áø ¶Ç´Â ½ÊÁø Ä÷¯ ID. Ç¥Çö½Ä °¡´É. Color ID´Â Window Spy¸¦ »ç¿ëÇÏ¿© ¶Ç´Â PixelGetColor¸¦ ÅëÇÏ¿© ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù (Æ®·¹ÀÌ ¸Þ´º·Î Á¢±Ù °¡´É). ¿¹¸¦ µé¾î: 0x9d6346.

+ +
Variation
+

0°ú 255 (Æ÷ÇÔ) »çÀÌÀÇ °ª. + Ä÷¯ÀÇ Àû³ìû äµµ¿¡ ´ëÇÏ¿© ¹æÇâ¿¡ °ü°è¾øÀÌ ¸î °³ÀÇ ½¦ÀÌµå º¯ÇüÀ» Çã¿ëÇÒÁö ³ªÅ¸³À´Ï´Ù. (Ç¥Çö½Ä °¡´É). ÀÌ ¸Å°³º¯¼ö´Â ±¸ÇÏ´Â Ä÷¯°¡ ¾ðÁ¦³ª Á¤È®ÇÏ°Ô °°Àº ½¦À̵尡 ¾Æ´Ò °æ¿ì À¯¿ëÇÕ´Ï´Ù. 255 ½¦À̵åÀÇ º¯ÇüÀ» ÁöÁ¤Çß´Ù¸é, ¸ðµç Ä÷¯°¡ ºÎÇÕÇÕ´Ï´Ù. ±âº»°ªÀº 0 ½¦À̵åÀÔ´Ï´Ù.

+ +
Fast|RGB
+

ÀÌ ¸Å°³º¯¼ö´Â ´Ü¾î Fast, RGB¸¦ ´ã°Å³ª ¶Ç´Â µÑ ´ãÀ» ¼ö ÀÖ½À´Ï´Ù (µÑ ´Ù Á¸ÀçÇϸé, ½ºÆäÀ̽º·Î µÑ»çÀ̸¦ °¡¸£½Ê½Ã¿À; Áï, Fast RGB).

+

+ Fast: + ºü¸¥ °Ë»ö ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì °Ë»ö¿¡ »ç¿ëµÈ CPU ½Ã°£ÀÇ ¾çÀ» ±ØÀûÀ¸·Î ÁÙ¿©ÁÝ´Ï´Ù. 8-ºñÆ® (256-»ö) Ä÷¯ ±íÀ̸¦ Áö¿øÇÏÁö¸¸, ºü¸¥ ¸ðµå´Â 24-ºñÆ® ¶Ç´Â 32-ºñÆ® Ä÷¯¿¡¼­ ÈξÀ ´õ ºü¸¨´Ï´Ù. È­¸éÀÇ Ä÷¯ ±íÀÌ°¡ 16-ºñÆ® ÀÌÇ϶ó¸é, Variation ¸Å°³º¯¼ö´Â ºü¸¥ ¸ðµå¿¡¼­ ´À¸° ¸ðµå¿Í ¾à°£ ´Ù¸£°Ô ÇൿÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¸¶Áö¸·À¸·Î, ºü¸¥ ¸ðµå´Â È­¸éÀ» Ä÷³ ´ÜÀ§°¡ ¾Æ´Ï¶ó ÁÙ ´ÜÀ§·Î (À§¿¡¼­ ¾Æ·¡·Î) °Ë»öÇÕ´Ï´Ù. ±×·¯¹Ç·Î, ºÎÇÕÇÏ´Â Çȼ¿ÀÌ ¸¹Àº °æ¿ì ´À¸° ¸ðµå¿¡¼­ ¹ß°ßµÇ´Â Çȼ¿°ú ´Ù¸¥ Çȼ¿À» ¹ß°ßÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

+

+ RGB: ColorID´Â BGRÀÌ ¾Æ´Ï¶ó RGB °ªÀ¸·Î ¹ø¿ªµË´Ï´Ù. ´Ù¸¥ ¸»·Î, Àû°ú û ±¸¼º¿ä¼Ò°¡ ¼­·Î ¹Ù²ò´Ï´Ù.

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â °Ë»öÇÏ´Â µ¿¾È ¹®Á¦°¡ ÀÖÀ¸¸é ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ÁöÁ¤µÈ ±¸¿ª¿¡¼­ Ä÷¯¸¦ ¹ß°ßÇÏ¿´À¸¸é 0ÀÌ ¼³Á¤µÇ°í, ¹ß°ßÇÏÁö ¸øÇßÀ¸¸é 1ÀÌ ¼³Á¤µË´Ï´Ù. ¾Æ´Ï¸é ¹®Á¦°¡ À־ °Ë»öÀ» ¼öÇàÇÏÁö ¸øÇßÀ¸¸é 2°¡ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+°Ë»öµÉ ±¸¿ªÀº ¹Ýµå½Ã º¸¿©¾ß ÇÕ´Ï´Ù; ´Ù¸¥ ¸»·Î, â¿¡¼­ ¶Ç´Ù¸¥ â¿¡ °¡·ÁÁø ±¸¿ªÀº °Ë»öÀÌ ºÒ°¡´ÉÇÏ´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, ¸¶¿ì½º Ä¿¼­ ¾Æ·¡ÀÇ Çȼ¿Àº º¸Åë ŽÁöÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ¿¡ ´ëÇÑ ¿¹¿Ü´Â °ÔÀÓ Ä¿¼­ÀÔ´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì °ÔÀÓ Ä¿¼­´Â ÀÚ½ÅÀÇ ¾Æ·¡¿¡ ÀÖ´Â Çȼ¿µéÀ» °¨Ãä´Ï´Ù.

+

+Slow ¸ðµå Àü¿ë: ±âº»°ªÀ¸·Î, °Ë»öÀº ÇØ´ç ±¸¿ªÀÇ Á»ó ¸ð¼­¸®·ÎºÎÅÍ ½ÃÀÛÇÏ¿© ¼öÁ÷À¸·Î ³»·Á°¡¸ç Çȼ¿ÀÌ ºÎÇÕÇÏ´ÂÁö ¸ÂÃß¾î º¾´Ï´Ù. ºÎÇÕÀ» ¹ß°ßÇÏÁö ¸øÇϸé, °Ë»öÀº Ä÷³ ¿À¸¥ÂÊ¿¡¼­ ºÎÇÕÇÏ´Â Çȼ¿À» ãÀ» ¶§±îÁö °è¼ÓµË´Ï´Ù. ±âº»°ªÀÌ Á¿¡¼­ ¿ì·Î °Ë»ö ¼ø¼­´Â ¸Å°³º¯¼ö ¸®½ºÆ®¿¡¼­ X1¿Í X2¸¦ ¹Ù²Ù¸é µÚÁý¾î Áý´Ï´Ù. ´Ù¸¥ ¸»·Î, X1ÀÌ X2º¸´Ù ´õ Å©¸é, °Ë»öÀº X1Ä÷³¿¡¼­ ½ÃÀÛÇÏ¿©, ¿À¸¥ÂÊ¿¡¼­ ¿ÞÂÊÀ¸·Î ¼öÇàµË´Ï´Ù. ºñ½ÁÇÏ°Ô, Y1ÀÌ Y2º¸´Ù Å©¸é, °Ë»öµÉ Çȼ¿ Ä÷³ÀÌ À§°¡ ¾Æ´Ï¶ó ¾Æ·¡ºÎÅÍ ½ÃÀÛÇÕ´Ï´Ù. ¸¶Áö¸·À¸·Î, °Ë»öµÉ ±¸¿ªÀÌ ¹æ´ëÇÏ°í °Ë»öÀÌ ³ôÀº ºóµµ·Ï ¹Ýº¹µÇ¸é, CPU ½Ã°£À» ¸¹ÀÌ ¼ÒºñÇÒ ¼ö ÀÖ½À´Ï´Ù. À̸¦ °æ°¨ÇÏ·Á¸é, °Ë»ö ±¸¿ªÀÇ Å©±â¸¦ ÃÖ¼ÒÇÑÀ¸·Î À¯ÁöÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

+PixelGetColor, ImageSearch, CoordMode, MouseGetPos

+ +

¿¹Á¦

+ +
PixelSearch, Px, Py, 200, 200, 300, 300, 0x9d6346, 3, Fast
+if ErrorLevel
+    MsgBox, ÇØ´ç Ä÷¯¸¦ ÁöÁ¤µÈ ±¸¿ª¿¡¼­ ¹ß°ßÇÏÁö ¸øÇß½À´Ï´Ù.
+else
+    MsgBox, 3 ½¦À̵åÀÇ º¯Çü ¾È¿¡¼­ Ä÷¯°¡ X%Px% Y%Py%¿¡¼­ ¹ß°ßµÇ¾ú½À´Ï´Ù.
+ + + diff --git a/src/docs/commands/PostMessage.htm b/src/docs/commands/PostMessage.htm new file mode 100644 index 0000000..3bfd442 --- /dev/null +++ b/src/docs/commands/PostMessage.htm @@ -0,0 +1,141 @@ + + +PostMessage / SendMessage + + + + + + + + +

PostMessage / SendMessage

+ +

¸Þ½ÃÁö¸¦ âÀ̳ª ÄÜÆ®·Ñ¿¡ º¸³À´Ï´Ù (SendMessage´Â ½ÂÀÎÀ» ±â´Ù¸³´Ï´Ù).

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

¸Å°³º¯¼ö

+
+ +
Msg
+

Àü¼ÛÇÒ ¸Þ½ÃÁö ¹øÈ£, Ç¥Çö½Ä°¡´É. ¼ýÀÚ¸¦ ¾Ë¾Æ ³»·Á¸é ¸Þ½ÃÁö ¸ñ·ÏÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +
wParam
+

¸Þ½ÃÁöÀÇ Ã¹ ¹ø° ±¸¼º¿ä¼Ò. Ç¥Çö½Ä °¡´É. ºñ¾î Àְųª »ý·«Çϸé 0ÀÌ Àü¼ÛµË´Ï´Ù.

+ +
lParam
+

¸Þ½ÃÁöÀÇ µÎ ¹ø° ±¸¼º¿ä¼Ò. Ç¥Çö½Ä °¡´É. ºñ¾î Àְųª »ý·«Çϸé 0ÀÌ Àü¼ÛµË´Ï´Ù.

+ +
Control
+

ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾îÀְųª »ý·«µÇ¸é, ¸Þ½ÃÁö´Â ±×ÀÇ ÄÜÆ®·Ñ Áß¿¡ Çϳª°¡ ¾Æ´Ï¶ó Á÷Á¢ ¸ñÇ¥ â¿¡ Àü¼ÛµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ÀÌ ¸Å°³º¯¼ö´Â ClassNN (Ŭ·¡½ºÀ̸§°ú ÄÜÆ®·ÑÀÇ ½Çü ¹øÈ£) ¶Ç´Â ÄÜÆ®·ÑÀÇ ÅؽºÆ®ÀÏ ¼ö ÀÖ½À´Ï´Ù. µÑ ¸ðµÎ Window Spy·Î ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ÅؽºÆ®¸¦ »ç¿ëÇÒ ¶§, ºÎÇÕ ÇàÀ§´Â SetTitleMatchMode·Î °áÁ¤µË´Ï´Ù.

+

+ ÄÜÆ®·ÑÀÇ HWND (â ÇÚµé)À» ó¸®ÇÏ·Á¸é, Control ¸Å°³º¯¼ö¸¦ ºñ¿ö µÎ°í ahk_id %ControlHwnd%¸¦ WinTitle ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇϽʽÿÀ (ÀÌ°ÍÀº ¼ûÀº â¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù. DetectHiddenWindows°¡ ²¨Á® À־(Off) ¸¶Âù°¡ÁöÀÔ´Ï´Ù). ÄÜÆ®·ÑÀÇ HWND´Â ÀüÇüÀûÀ¸·Î ControlGet Hwnd, MouseGetPos, ¶Ç´Â DllCall¸¦ ÅëÇÏ¿© ¿­¶÷ÇÕ´Ï´Ù.

+
+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖ¾î¾ß(ON) ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

+ +
Timeout
+

[AHK_L 42+]: ¸ñÇ¥ âÀÌ ¸Þ½ÃÁö¸¦ ó¸®Çϱ⸦ ±â´Ù¸± ¹Ð¸®ÃÊÀÇ ÃÖ´ë °³¼ö. »ý·«ÇÏ¸é ±âº»°ªÀº 5000 (¹Ð¸®ÃÊ)ÀÔ´Ï´Ù. ÀÌ °ªÀº ÀÌ ¸Å°³º¯¼ö¸¦ Áö¿øÇÏÁö ¾Ê¾Ò´ø ¿¹Àü ¹öÀüÀÇ AutoHotkey¿¡¼­ ±âº»°ªÀÔ´Ï´Ù. ¸Þ½ÃÁö°¡ ÀÌ ½Ã°£ ¾È¿¡ 󸮵ÇÁö ¾ÊÀ¸¸é, ¸í·É¾î´Â ³¡³ª°í ErrorLevel¿¡ ´Ü¾î FAILÀ» ¼³Á¤ÇÕ´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.

+ +
+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+PostMessage: ErrorLevelÀº ¹®Á¦°¡ ÀÖ¾úÀ¸¸é 1ÀÌ ¼³Á¤µË´Ï´Ù. ¿¹¸¦ µé¾î ¸ñÇ¥ âÀ̳ª ÄÜÆ®·ÑÀÌ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì¿¡ 1ÀÌ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

SendMessage: ErrorLevelÀº ¹®Á¦°¡ ÀÖ¾ú°Å³ª ½Ã°£Á¦ÇÑ¿¡ °É¸®¸é ´Ü¾î FAILÀÌ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ¸Þ½ÃÁöÀÇ ¼ýÀÚ °ª °á°ú°¡ ¼³Á¤µË´Ï´Ù. °¡²û ÀÌ °ªÀÌ ¸Þ½ÃÁö¿Í ±×ÀÇ ¸ñÇ¥ âÀÇ ¼ºÁú¿¡ µû¶ó "reply"ÀÏ °æ¿ì°¡ ÀÖ½À´Ï´Ù.

+

+°¡´ÉÇÑ °ªÀÇ ¹üÀ§´Â ¿ÀÅäÇÖÅ°ÀÇ ¹öÀü°ú ¸ñÇ¥ â¿¡ µû¶ó ´Ù¸¨´Ï´Ù. 32-ºñÆ® ¹öÀüÀÇ ¿ÀÅäÇÖÅ°¸¦ »ç¿ëÇϰųª, ¶Ç´Â ¸ñÇ¥ âÀÌ 32-ºñÆ®À̸é, ±× °á°ú´Â 0ºÎÅÍ 4294967295 ±îÁöÀÇ 32-ºñÆ® ¹«ºÎÈ£ Á¤¼öÀÔ´Ï´Ù. 64-ºñÆ® ¹öÀüÀÇ ¿ÀÅäÇÖÅ°¸¦ 64-ºñÆ® â¿¡ »ç¿ëÇϸé, ±× °á°ú´Â -9223372036854775808°ú 9223372036854775807 ±îÁöÀÇ 64-ºñÆ® ºÎÈ£ÀÖ´Â Á¤¼öÀÔ´Ï´Ù .

+

+°á°ú°¡ 32-ºñÆ® ºÎÈ£ ÀÖ´Â Á¤¼öÀ̱⸦ ¿øÇÑ´Ù¸é (-2147483648ºÎÅÍ 2147483648±îÁöÀÇ °ª), ´ÙÀ½°ú °°ÀÌ 32-ºñÆ®·Î Àß¶ó³»°í ºÎÈ£ÀÖ´Â °ªÀ¸·Î º¯È¯ÇÒ ¼ö ÀÖ½À´Ï´Ù:

+ +
MsgReply := ErrorLevel << 32 >> 32
+

+ÀÌ º¯È¯Àº AutoHotkey 64-ºñÆ®¿¡¼­µµ ÇÊ¿äÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ¿Ö³ÄÇϸé, 32-ºñÆ® âÀ¸·ÎºÎÅÍÀÇ °á°ú´Â È®ÀåµÇÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, 32-ºñÆ® âÀ¸·ÎºÎÅÍÀÇ °á°ú°¡ -1ÀÌ¸é ¾î´À ¿ÀÅäÇÖÅ° ¹öÀü¿¡¼­µµ 0xFFFFFFFFÀ¸·Î º¸ÀÔ´Ï´Ù. ¹Ý¸é¿¡ 64-ºñÆ® âÀ¸·ÎºÎÅÍÀÇ °á°ú°¡ -1À̸é 32ºñÆ® ¹öÀüÀÇ ¿ÀÅäÇÖÅ°¿¡¼­´Â 0xFFFFFFFFÀ¸·Î º¸ÀÌ°í 64ºñÆ® ¹öÀü¿¡¼­´Â -1·Î º¸ÀÔ´Ï´Ù.

+ +

³íÆò

+

+ÀÌ ¸í·É¾îµéÀº ÁÖÀÇÇؼ­ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ¾û¶×ÇÑ Ã¢¿¡ ¸Þ½ÃÁö¸¦ Àü¼ÛÇϸé (¶Ç´Â ¹«È¿ÇÑ ¸Þ½ÃÁö¸¦ Àü¼ÛÇϸé) ¿¹»óÄ¡ ¸øÇÑ ÇàÀ§¸¦ ¾ß±âÇÏ°Ô µÇ°í ½ÉÁö¾î ¸ñÇ¥ ¾îÇø®ÄÉÀ̼ÇÀÌ Ãæµ¹À» ÀÏÀ¸Å³ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ´ëºÎºÐÀÇ ¾îÇø®ÄÉÀ̼ÇÀº ¿ÜºÎ ¼Ò½º·ÎºÎÅÍ ¾î¶² À¯ÇüÀÇ ¸Þ½ÃÁö¸¦ ¹Þµµ·Ï ¼³°èµÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù.

+

+PostMessage´Â ¸Þ½ÃÁö¸¦ ¸ñÇ¥ â¿¡ ¿¬°üµÈ ¸Þ½ÃÁö Å¥¿¡ ³Ö½À´Ï´Ù. ½ÂÀÎÀ̳ª ÀÀ´äÀ» ±â´Ù¸®Áö ¾Ê½À´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, SendMessage´Â ¸ñÇ¥ âÀÌ ±× ¸Þ½ÃÁö¸¦ ó¸®Çϱ⸦ ½Ã°£Á¦ÇÑ¿¡ °É¸± ¶§±îÁö ±â´Ù¸³´Ï´Ù.

+

+wParam°ú lParam ¸Å°³º¯¼ö´Â Á¤¼ö¿©¾ß ÇÕ´Ï´Ù. AutoHotkey ¶Ç´Â ¸ñÇ¥ âÀÌ 32-ºñÆ®À̸é, ¿ÀÁ÷ ¾Æ·¡ÀÇ 32 ºñÆ®¸¸ »ç¿ëµË´Ï´Ù; Áï, °ªÀº ¹üÀ§°¡ -2147483648°ú 4294967295 (0xFFFFFFFF) »çÀÌÀÔ´Ï´Ù. ¿ÀÅäÇÖÅ°¿Í ¸ñÇ¥ âÀÌ ¸ðµÎ 64-ºñÆ®À̸é, ¿ÀÅäÇÖÅ°°¡ Áö¿øÇÏ´Â ¾î¶² Á¤¼öµµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿ÀÅäÇÖÅ°ÀÇ ¸ðµç Á¤¼ö °ªÃ³·³, Á¢µÎ»ç°¡ 0xÀÌ¸é ½ÊÀ°Áø¼ö¸¦ ³ªÅ¸³À´Ï´Ù. ¿¹¸¦ µé¾î 0xFF´Â 255¿Í µ¿µîÇÕ´Ï´Ù.

+

+¹®ÀÚ¿­Àº º¯¼öÀÇ ÁÖ¼Ò¸¦ ÁöÁ¤Çϸé wParam ¶Ç´Â lParamÀ» ÅëÇÏ¿© Àü¼ÛÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â ÁÖ¼Ò ¿¬»êÀÚ (&)¸¦ »ç¿ëÇØ Àü¼ÛÇÕ´Ï´Ù:

+ +
SendMessage, 0xC, 0, &MyVar, ClassNN, WinTitle  ; 0XC is WM_SETTEXT
+

+v1.0.43.06+¿¡¼­, ¸Þ½ÃÁö ¼ö½ÅÀÚ¿¡ ÀÇÇÏ¿© MyVar ¾È¿¡ ¹èÁ¤µÈ ¹®ÀÚ¿­Àº º°µµÀÇ Ãß°¡ ÀýÂ÷ ¾øÀÌ ÀûÀýÇÏ°Ô ÀÎÁöµË´Ï´Ù. ±×·¸Áö¸¸, ÀÌ°ÍÀº ¸Å°³º¯¼öÀÇ Ã¹ ¹®ÀÚ°¡ ¾ÚÆÛ¼¾µå (&)ÀÏ °æ¿ì¿¡¸¸ ÀÛµ¿ÇÕ´Ï´Ù; ¿¹¸¦ µé¾î, 5+&MyVar´Â ÀÛµ¿ÇÏÁö ¾ÊÁö¸¸ &MyVar ¶Ç´Â &MyVar+5´Â ÀÛµ¿ÇÕ´Ï´Ù.

+

+ÀοëºÎÈ£ 󸮵È/±âÈ£ ±×´ë·ÎÀÇ ¹®ÀÚ¿­µµ ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ Àü¼ÛÇÒ ¼ö ÀÖ½À´Ï´Ù (& ¿¬»êÀÚ´Â ÀÌ °æ¿ì »ç¿ëÇÏ¸é ¾È µË´Ï´Ù):

+ +
Run Notepad
+WinWait Untitled - Notepad
+SendMessage, 0xC, 0, "New Notepad Title"  ; 0XC is WM_SETTEXT
+

+¸Þ½ÃÁö Çϳª¸¦ ¼û¾î ÀÖµç ºñÈ°¼ºÈ­µÇ¾î ÀÖµç ½Ã½ºÅÛ¿¡ ÀÖ´Â ¸ðµç â¿¡ º¸³»·Á¸é, ahk_id 0xFFFF¸¦ WinTitle (0xFFFF´Â HWND_BROADCASTÀÓ)¿¡ ÁöÁ¤ÇϽʽÿÀ. ÀÌ Å×Å©´ÐÀº ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¹æ¼Û¿ë ÀǵµÀÇ ¸Þ½ÃÁö¿¡¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù:

+ +
SendMessage, 0x1A,,,, ahk_id 0xFFFF  ; 0x1A is WM_SETTINGCHANGE
+

+½ºÅ©¸³Æ®°¡ ¸Þ½ÃÁö¸¦ ¹Þµµ·Ï ÇÏ·Á¸é OnMessage()¸¦ »ç¿ëÇϽʽÿÀ.

+

+ÀÌ ¸í·É¾îµåµéÀ» »ç¿ëÇÏ´Â ¹æ¹ý¿¡ °üÇÑ ¼Ò°³´Â ¸Þ½ÃÁö ÀÚ½À¼­¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

Message List, Message Tutorial, OnMessage(), Automating Winamp, DllCall, ControlSend, WinMenuSelectItem

+ +

¿¹Á¦

+
#o::  ; ¸ð´ÏÅ͸¦ ²ø Win+O ÇÖÅ°.
+Sleep 1000  ; »ç¿ëÀÚ¿¡°Ô Å°¸¦ ¶¿ ±âȸ¸¦ ÁÝ´Ï´Ù (Å°¸¦ ¶¼¸é ¸ð´ÏÅÍ°¡ ´Ù½Ã ²¡´Ï´Ù).
+; Turn Monitor Off:
+SendMessage, 0x112, 0xF170, 2,, Program Manager  ; 0x112´Â WM_SYSCOMMANDÀÌ°í, 0xF170´Â SC_MONITORPOWERÀÔ´Ï´Ù.
+; À§¿¡ ÁÖ¸ñÇϽʽÿÀ: 2 ´ë½Å¿¡ -1À» »ç¿ëÇÏ¸é ¸ð´ÏÅÍ°¡ ÄÑÁý´Ï´Ù.
+; 2 ´ë½Å¿¡ 1À» »ç¿ëÇÏ¸é ¸ð´ÏÅÍÀÇ ÀúÀü·Â ¸ðµå°¡ ÄÑÁý´Ï´Ù.
+return
+
+; »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ È­¸é º¸È£±â¸¦ ½ÃÀÛÇÕ´Ï´Ù:
+SendMessage, 0x112, 0xF140, 0,, Program Manager  ; 0x112´Â WM_SYSCOMMANDÀÌ°í, 0xF140´Â SC_SCREENSAVEÀÔ´Ï´Ù.
+
+; ÇÑ ÁÙ À§·Î °¨½À´Ï´Ù (¼öÁ÷ ½ºÅ©·Ñ ¹Ù°¡ ÀÖ´Â ÄÜÆ®·Ñ¿¡ ´ëÇÏ¿©):
+ControlGetFocus, control, A
+SendMessage, 0x115, 0, 0, %control%, A
+
+; ÇÑ ÁÙ ¾Æ·¡·Î °¨½À´Ï´Ù:
+ControlGetFocus, control, A
+SendMessage, 0x115, 1, 0, %control%, A
+
+; È°¼º âÀÇ Å°º¸µå ·¹À̾ƿô/¾ð¾î¸¦ ¿µ¾î·Î ÀüȯÇÕ´Ï´Ù:
+PostMessage, 0x50, 0, 0x4090409,, A  ; 0x50Àº WM_INPUTLANGCHANGEREQUESTÀÔ´Ï´Ù.
+
+; ÀÌ ¿¹Á¦´Â Winamp¿¡°Ô ÇöÀç È°¼ºÈ­µÇ¾î ÀÖ´Â Æ®·¢ ¹øÈ£¸¦ ¹°¾îº¾´Ï´Ù:
+SetTitleMatchMode, 2
+SendMessage, 1024, 0, 120, - Winamp
+if ErrorLevel <> FAIL
+{
+    ErrorLevel++  ; WinampÀÇ Ä«¿îÆ®´Â "0"¿¡¼­ ½ÃÀÛÇÕ´Ï´Ù. ±×·¡¼­ 1·Î Á¶Á¤ÇÕ´Ï´Ù.
+    MsgBox, Track #%ErrorLevel% is active or playing.
+}
+; ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â Winamp ÀÚµ¿È­ Çϱ⸦ ÂüÁ¶ÇϽʽÿÀ.
+
+; AHK ½ºÅ©¸³Æ®ÀÇ ÇÁ·Î¼¼½º ID¸¦ ã±â À§ÇØ ("WinGet PID"¿¡ ´ëÇÑ ´ë¾È):
+SetTitleMatchMode, 2
+DetectHiddenWindows, on
+SendMessage, 0x44, 0x405, 0, , SomeOtherScript.ahk - AutoHotkey v
+MsgBox %ErrorLevel% is the process id.
+ + + diff --git a/src/docs/commands/Process.htm b/src/docs/commands/Process.htm new file mode 100644 index 0000000..8b35034 --- /dev/null +++ b/src/docs/commands/Process.htm @@ -0,0 +1,170 @@ + + + + +Process + + + + + + + +

Process

+ +

+´ÙÀ½ ¿¬»ê Áß Çϳª¸¦ ÇÁ·Î¼¼½º¿¡ ¼öÇàÇÕ´Ï´Ù: Á¸ÀçÇϴ°¡; ¿ì¼± ¼øÀ§ º¯°æ; ´Ý±â; ´ÝÈ÷±â¸¦ ±â´Ù¸®±â.

+ +
Process, Cmd [, PID-or-Name, Param3]
+

¸Å°³º¯¼ö

+
+ +
Cmd
+

´ÙÀ½ ´Ü¾î Áß Çϳª:

+

+ Exist: ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º°¡ Á¸ÀçÇϸé ErrorLevel¿¡ Process ID (PID)¸¦ ¼³Á¤ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù. PID-or-Name ¸Å°³º¯¼ö°¡ ºñ¾î ÀÖÀ¸¸é, ±× ½ºÅ©¸³Æ®ÀÇ PID°¡ ¿­¶÷µË´Ï´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î ½ºÅ©¸³Æ®ÀÇ PID¸¦ ¿­¶÷ÇÏ´Â ÇÑÁ٠¥¸® ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù: PID := DllCall("GetCurrentProcessId").

+

+ Close: ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º°¡ ¼º°øÀûÀ¸·Î Á¾·áÇϸé, ErrorLevel¿¡ ±×ÀÇ ÀÌÀü Process ID (PID)°¡ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é (ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º°¡ ¾ø°Å³ª Á¾·á¿¡ ¹®Á¦°¡ ÀÖ¾úÀ¸¸é), 0ÀÌ ¼³Á¤µË´Ï´Ù. ÇÁ·Î¼¼½º´Â °©ÀÚ±â Á¾·áÇϱ⠶§¹®¿¡ -- ÀÓ°è ÁöÁ¡¿¡¼­ ±×ÀÇ ÀÛ¾÷ÀÌ ÀÎÅÍ·´Æ® µÈ´Ù°Å³ª ±×ÀÇ Ã¢¿¡ µ¥ÀÌÅ͸¦ ÀúÀåÇÏÁö ¸øÇÏ°í ÀÒ¾î¹ö¸°´Ù°Å³ªÇÒ °¡´É¼ºÀÌ Àֱ⠶§¹®¿¡ -- ÀÌ ¹æ¹ýÀº ±×ÀÇ Ã¢ Áß¿¡ Çϳª¿¡ WinClose¸¦ »ç¿ëÇؼ­ ÇÁ·Î¼¼½º¸¦ ´ÝÀ» ¼ö ¾øÀ» °æ¿ì¿¡¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

+

+ List: List´Â ¾ÆÁ÷ Áö¿øÇÏÁö ¾ÊÁö¸¸, ¿¹Á¦ ¼½¼Ç¿¡¼­ DllCallÀ» ÅëÇÏ¿© ÇÁ·Î¼¼½º ¸ñ·ÏÀ» ¿­¶÷ÇÏ´Â ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.

+

+ Param3¿¡ óÀ½ ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½ºÀÇ Priority: ¿ì¼± ¼øÀ§¸¦ (À©µµ¿ìÁîÀÇ ÀÛ¾÷ °ü¸®ÀÚ¿¡ º¸¿©ÁÖ´Â ¼øÀ§) º¯°æÇÏ°í ErrorLevel¿¡ ±×ÀÇ Process ID (PID)¸¦ ¼³Á¤ÇÕ´Ï´Ù. PID-or-Name ¸Å°³º¯¼ö°¡ ºñ¾î ÀÖÀ¸¸é, ½ºÅ©¸³Æ®ÀÇ ÀÚ½ÅÀÇ ¿ì¼± ¼øÀ§°¡ º¯°æµË´Ï´Ù. ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º°¡ ¾ø°Å³ª ¿ì¼± ¼øÀ§¸¦ º¯°æÇÏ´Â µ¥ ¹®Á¦°¡ ÀÖ¾úÀ¸¸é, ErrorLevelÀº 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

+ Param3Àº ´ÙÀ½ ±âÈ£³ª ´Ü¾îÁß Çϳª°¡ µÇ¾î¾ß ÇÕ´Ï´Ù: L (Low), B (BelowNormal), N (Normal), A (AboveNormal), H (High), R (Realtime). ÁÖÀÇ: ½Ç½Ã°£ ¿ì¼± ¼øÀ§¸¦ °¡Áö°í ½ÇÇàµÇµµ·Ï ¼³°èµÇÁö ¾ÊÀº ÇÁ·Î¼¼½º´Â ½Ã½ºÅÛÀÇ ¾ÈÁ¤¼ºÀ» ÈѼÕÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ Wait: ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º°¡ ³¡³ª±â¸¦ Param3 ÃʱîÁö ±â´Ù¸³´Ï´Ù (¼Ò¼öÁ¡ Æ÷ÇÔ °¡´É). Param3À» »ý·«Çϸé, ¹«ÇÑÁ¤ ±â´Ù¸³´Ï´Ù. ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º¸¦ ¹ß°ßÇϸé, ErrorLevel¿¡ ±×ÀÇ Process ID (PID)°¡ ¼³Á¤µË´Ï´Ù. ¸í·É¾î°¡ ½Ã°£Á¦ÇÑ¿¡ °É¸®¸é, ErrorLevel¿¡ 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

+ WaitClose: ºÎÇÕÇÏ´Â ¸ðµç ÇÁ·Î¼¼½º°¡ ´ÝÈú ¶§±îÁö Param3 ÃʱîÁö ±â´Ù¸³´Ï´Ù (¼Ò¼öÁ¡ Æ÷ÇÔ °¡´É). Param3À» »ý·«Çϸé, ¹«ÇÑÁ¤ ±â´Ù¸³´Ï´Ù. ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º°¡ ¸ðµÎ ´ÝÈ÷¸é, ErrorLevel¿¡ 0ÀÌ ¼³Á¤µË´Ï´Ù. ¸í·É¾î°¡ ½Ã°£ Á¦ÇÑ¿¡ °É¸®¸é, ErrorLevel¿¡ ¿©ÀüÈ÷ Á¸ÀçÇϴ ù ¹ø° ºÎÇÕ Process ID (PID)°¡ ¼³Á¤µË´Ï´Ù.

+ +
PID-or-Name
+

ÀÌ ¸Å°³º¯¼ö´Â ¾Æ·¡¿¡ ±â¼úÇÏ´Â °Íó·³ ¼ýÀÚ (PID)À̰ųª ÇÁ·Î¼¼½º À̸§ÀÏ ¼ö ÀÖ½À´Ï´Ù. ¶Ç ºñ¿ö µÎ¸é ½ºÅ©¸³Æ® ÀÚüÀÇ ¿ì¼± ¼øÀ§¸¦ º¯°æÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

+

PID: Process ID´Â ƯÁ¤ÇÑ ÇÁ·Î¼¼½º Çϳª¸¦ À¯ÀÏÇÏ°Ô ½Äº°ÇÏ´Â ¼ýÀÚÀÔ´Ï´Ù (ÀÌ ¼ýÀÚ´Â ±× ÇÁ·Î¼¼½º°¡ »ì¾Æ ÀÖ´Â µ¿¾È¿¡¸¸ À¯È¿ÇÕ´Ï´Ù). »õ·Î ±âµ¿µÈ ÇÁ·Î¼¼½ºÀÇ PID´Â Run ¸í·É¾î¸¦ ÅëÇÏ¿© ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ºñ½ÁÇÏ°Ô, âÀÇ PID´Â WinGetÀ¸·Î ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. Process ¸í·É¾î ÀÚü·Îµµ PID¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù.

+

Name: ÇÁ·Î¼¼½ºÀÇ À̸§Àº º¸Åë (°æ·Î ¾øÀÌ) ½ÇÇà ÆÄÀÏÀÇ À̸§°ú °°½À´Ï´Ù. ¿¹, notepad.exe ¶Ç´Â winword.exe. À̸§Àº ¿©·¯ ½ÇÇà ÇÁ·Î¼¼½º¿¡ ºÎÇÕÇÒ ¼ö Àֱ⠶§¹®¿¡, ù ¹ø° ÇÁ·Î¼¼½º¿¡¸¸ ÀÛµ¿ÇÕ´Ï´Ù. À̸§Àº ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê½À´Ï´Ù.

+ +
Param3
+

ÀÚ¼¼ÇÑ °ÍÀº À§¿¡¼­ Cmd¸¦ ÂüÁ¶.

+ +
+ +

ErrorLevel

+

ÀÚ¼¼ÇÑ °ÍÀº À§¿¡¼­ Cmd¸¦ ÂüÁ¶.

+ +

³íÆò

+

+Wait ±×¸®°í WaitClose¿¡ ´ëÇÏ¿©: ÇÁ·Î¼¼½º´Â 100 ¹Ð¸®Ãʸ¶´Ù Á¡°ËµË´Ï´Ù; Á¶°ÇÀÌ ¸¸Á·µÇ´Â ¼ø°£, ¸í·É¾î´Â ±â´Ù¸®±â¸¦ ¸ØÃä´Ï´Ù. ´Ù¸¥ ¸»·Î, ½Ã°£Á¦ÇÑÀÌ °æ°úÇϱ⸦ ±â´Ù¸®Áö ¾Ê°í, Áï½Ã ErrorLevel¿¡ À§¿¡ ±â¼úÇÑ ´ë·Î ¼³Á¤ÇÑ ´ÙÀ½, °è¼ÓÇؼ­ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÕ´Ï´Ù. ¶ÇÇÑ, ¸í·É¾î°¡ ´ë±â »óÅ¿¡ ÀÖÀº µ¿¾È¿¡, ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀ̸Ӹ¦ ÅëÇÏ¿© »õ ¾²·¹µå¸¦ ±âµ¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

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

+ +

¿¹Á¦

+
; ¿¹Á¦ #1:
+
+Run Notepad.exe, , , NewPID
+Process, priority, %NewPID%, High
+MsgBox »õ·Î ±âµ¿µÈ ³ëÆ®ÆеåÀÇ PID´Â %NewPID%ÀÔ´Ï´Ù.
+

 

+
; ¿¹Á¦ #2:
+
+Process, wait, Notepad.exe, 5.5
+NewPID = %ErrorLevel%  ; ErrorLevelÀÌ ÀÚÁÖ ¹Ù²î±â ¶§¹®¿¡ °ªÀ» Áï½Ã ÀúÀåÇÕ´Ï´Ù.
+if NewPID = 0
+{
+    MsgBox ÁöÁ¤ÇÑ ÇÁ·Î¼¼½º°¡ 5.5 ÃÊ À̳»¿¡ ³ªÅ¸³ªÁö ¾Ê¾Ò½À´Ï´Ù.
+    return
+}
+; ±×·¸Áö ¾ÊÀ¸¸é:
+MsgBox ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º°¡ ³ªÅ¸³µ½À´Ï´Ù (ÇÁ·Î¼¼½º ID´Â %NewPID%ÀÔ´Ï´Ù).
+Process, priority, %NewPID%, Low
+Process, priority, , High  ; ½ºÅ©¸³Æ® ÀÚü¿¡ ³ôÀº ¼øÀ§¸¦ ¼³Á¤ÇÕ´Ï´Ù.
+WinClose Untitled - Notepad
+Process, WaitClose, %NewPID%, 5
+if ErrorLevel ; ÇØ´ç PID°¡ ¿©ÀüÈ÷ Á¸ÀçÇÕ´Ï´Ù.
+    MsgBox ÇÁ·Î¼¼½º°¡ 5 ÃÊ À̳»¿¡ ´ÝÈ÷Áö ¾Ê¾Ò½À´Ï´Ù.
+

 

+
; ¿¹Á¦ #3: È°¼º âÀÇ ÇÁ·Î¼¼½º ¿ì¼±¼øÀ§¸¦ º¯°æÇÒ ÇÖÅ°:
+
+#z:: ; Win+Z ÇÖÅ°
+WinGet, active_pid, PID, A
+WinGetTitle, active_title, A
+Gui, 5:Add, Text,, Ãë¼ÒÇÏ·Á¸é ESCAPE¸¦ ´©¸£°Å³ª, ´ÙÀ½ â¿¡ ´ëÇÏ¿© »õ ¿ì¼±¼øÀ§¸¦`n´õºí Ŭ¸¯ÇϽʽÿÀ:`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_GuiEvent <> DoubleClick
+    return
+; ±×·¸Áö ¾ÊÀ¸¸é ´ÙÀ½ ¶óº§·Î °©´Ï´Ù:
+5ButtonOK:
+GuiControlGet, MyListBox
+Gui, Destroy
+Process, Priority, %active_pid%, %MyListBox%
+if ErrorLevel
+    MsgBox ¼º°ø:  "%MyListBox%"¿¡ ¿ì¼±¼øÀ§°¡¹Ù²î¾ú½À´Ï´Ù.
+else
+    MsgBox ¿¡·¯: "%MyListBox%"¿¡ ¿ì¼± ¼øÀ§¸¦ ¹Ù²ÙÁö ¸øÇß½À´Ï´Ù.
+return
+

 

+
; ¿¹Á¦ #4: DllCallÀ» ÅëÇÏ¿© ½ÇÇà ÇÁ·Î¼¼½º ¸ñ·ÏÀ» ¿­¶÷ÇÏ°í ±× ¸ñ·ÏÀ» MsgBox¿¡ º¸¿©ÁÝ´Ï´Ù.
+
+d := "  |  "  ; ¹®ÀÚ¿­ °¡¸§ÀÚ
+s := 4096  ; ¹öÆÛ¿Í ¹è¿­ÀÇ Å©±â (4 KB)
+
+Process, Exist  ; ErrorLevel¿¡ ½ÇÇàÁßÀÎ ½ºÅ©¸³Æ®ÀÇ PID¸¦ ¼³Á¤ÇÕ´Ï´Ù
+; PROCESS_QUERY_INFORMATION (0x0400)·Î ÀÌ ½ºÅ©¸³Æ®ÀÇ ÇÚµéÀ» ¾ò½À´Ï´Ù
+h := DllCall("OpenProcess", "UInt", 0x0400, "Int", false, "UInt", ErrorLevel, "Ptr")
+; ´ÙÀ½ ÇÁ·Î¼¼½º·Î Á¶Àý°¡´ÉÇÑ Á¢±Ù ÅäÅ«À» ¿±´Ï´Ù (TOKEN_ADJUST_PRIVILEGES = 32)
+DllCall("Advapi32.dll\OpenProcessToken", "Ptr", h, "UInt", 32, "PtrP", t)
+VarSetCapacity(ti, 16, 0)  ; Ư±Ç ±¸Á¶Ã¼
+NumPut(1, ti, 0, "UInt")  ; Ư±Ç ¹è¿­¿¡ ÀÖ´Â ÇÑ ¿£Æ®¸®...
+; µð¹ö±× Ư±ÇÀÇ Áö¿ªÀûÀ¸·Î À¯ÀÏÇÑ ½Äº°ÀÚ¸¦ ¿­¶÷ÇÕ´Ï´Ù:
+DllCall("Advapi32.dll\LookupPrivilegeValue", "Ptr", 0, "Str", "SeDebugPrivilege", "Int64P", luid)
+NumPut(luid, ti, 4, "Int64")
+NumPut(2, ti, 12, "UInt")  ; ´ÙÀ½ Ư±ÇÀ» È°¼º È­ÇÕ´Ï´Ù: SE_PRIVILEGE_ENABLED = 2
+; ÀÌ ÇÁ·Î¼¼½ºÀÇ Æ¯±ÇÀ» »õ Á¢±Ù ÅäÅ«À¸·Î ¾÷µ¥ÀÌÆ®ÇÕ´Ï´Ù:
+r := DllCall("Advapi32.dll\AdjustTokenPrivileges", "Ptr", t, "Int", false, "Ptr", &ti, "UInt", 0, "Ptr", 0, "Ptr", 0)
+DllCall("CloseHandle", "Ptr", t)  ; ÀÌ Á¢±Ù ÅäÅ« ÇÚµéÀ» ´Ý¾Æ¼­ ¸Þ¸ð¸®¸¦ Àý¾àÇÕ´Ï´Ù
+DllCall("CloseHandle", "Ptr", h)  ; ÀÌ ÇÁ·Î¼¼½º ÇÚµéÀ» ´Ý¾Æ¼­ ¸Þ¸ð¸®¸¦ Àý¾àÇÕ´Ï´Ù
+
+hModule := DllCall("LoadLibrary", "Str", "Psapi.dll")  ; ¶óÀ̺귯¸®¸¦ ¹Ì¸® ÀûÀçÇØ ¼öÇ༺´ÉÀ» ³ôÀÌ´Ï´Ù.
+s := VarSetCapacity(a, s)  ; ÇÁ·Î¼¼½º ½Äº°ÀÚÀÇ ¸ñ·ÏÀ» ¹ÞÀ» ¹è¿­:
+c := 0  ; ÇÁ·Î¼¼½º ½Äº°ÀÚ¸¦ À§ÇÑ Ä«¿îÅÍ
+DllCall("Psapi.dll\EnumProcesses", "Ptr", &a, "UInt", s, "UIntP", r)
+Loop, % r // 4  ; ½Äº°ÀÚ¸¦ À§ÇÏ¿© ¹è¿­À» DWORD (32 ºñÆ®)·Î ºÐÇØÇÕ´Ï´Ù:
+{
+   id := NumGet(a, A_Index * 4, "UInt")
+   ; ´ÙÀ½À¸·Î ÇÁ·Î¼¼½º¸¦ ¿±´Ï´Ù: PROCESS_VM_READ (0x0010) | PROCESS_QUERY_INFORMATION (0x0400)
+   h := DllCall("OpenProcess", "UInt", 0x0010 | 0x0400, "Int", false, "UInt", id, "Ptr")
+   if !h
+      continue
+   VarSetCapacity(n, s, 0)  ; ¸ðµâÀÇ ±âº» À̸§À» ¹ÞÀ» ¹öÆÛ:
+   e := DllCall("Psapi.dll\GetModuleBaseName", "Ptr", h, "Ptr", 0, "Str", n, "UInt", A_IsUnicode ? s//2 : s)
+   if !e    ; 32-ºñÆ® ¸ðµåÀÏ ¶§ 64-ºñÆ® ÇÁ·Î¼¼½º¸¦ À§ÇÑ ´ëºñ ¹æ¹ý:
+      if e := DllCall("Psapi.dll\GetProcessImageFileName", "Ptr", h, "Str", n, "UInt", A_IsUnicode ? s//2 : s)
+         SplitPath n, n
+   DllCall("CloseHandle", "Ptr", h)  ; ÇÁ·Î¼¼½º ÇÚµéÀ» ´Ý¾Æ ¸Þ¸ð¸®¸¦ Àý¾àÇÕ´Ï´Ù
+   if (n && e)  ; À̹ÌÁö°¡ ³ÎÀÌ ¾Æ´Ï¸é ¸ñ·Ï¿¡ Ãß°¡ÇÕ´Ï´Ù:
+      l .= n . d, c++
+}
+DllCall("FreeLibrary", "Ptr", hModule)  ; ¶óÀ̺귯¸®¸¦ ³»·Á¼­ ¸Þ¸ð¸®¸¦ Ç®¾îÁÝ´Ï´Ù
+;Sort, l, C  ; ÀÌ ÁÙÀ» ÁÖ¼® ÇØÁ¦ÇÏ¸é ¸®½ºÆ®¸¦ ¾ËÆĺª ¼ø¼­·Î ¸®½ºÆ®¸¦ Á¤·ÄÇÒ ¼ö ÀÖ½À´Ï´Ù
+MsgBox, 0, %c% Processes, %l%
+

 

+
; ¿¹Á¦ #5: COMÀ» ÅëÇÏ¿© ÇöÀç ½ÇÇà ÁßÀÎ ÇÁ·Î¼¼½º ¸ñ·ÏÀ» ¿­¶÷ÇÕ´Ï´Ù.
+
+Gui, Add, ListView, x2 y0 w400 h500, Process Name|Command Line
+for process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process")
+    LV_Add("", process.Name, process.CommandLine)
+Gui, Show,, Process List
+
+; Win32_Process: http://msdn.microsoft.com/en-us/library/aa394372.aspx
+
+ + + diff --git a/src/docs/commands/Progress.htm b/src/docs/commands/Progress.htm new file mode 100644 index 0000000..a6975c7 --- /dev/null +++ b/src/docs/commands/Progress.htm @@ -0,0 +1,236 @@ + + + + +Progress/SplashImage + + + + + + + + +

Progress / SplashImage

+ +

ÇÁ·Î±×·¹½º ¹Ù³ª À̹ÌÁö¸¦ ´ã°í Àִ âÀ» »ý¼ºÇϰųª ¾÷µ¥ÀÌÆ® ÇÕ´Ï´Ù.

+ +
SplashImage, Off
+SplashImage [, ImageFile, Options, SubText, MainText, WinTitle, FontName]
+
+Progress, Off
+Progress, ProgressParam1 [, SubText, MainText, WinTitle, FontName]
+

¸Å°³º¯¼ö

+
+ +
ImageFile
+

´Ü¾î OFFÀ̸é, âÀº Æı«µË´Ï´Ù. ´Ü¾î SHOWÀ̸é, âÀÌ ÇöÀç ¼û¾î ÀÖÀ» °æ¿ì º¸¿©Áý´Ï´Ù.

+

±×·¸Áö ¾ÊÀ¸¸é, ÀÌ°ÍÀº º¸¿©ÁÙ BMP, GIF, ¶Ç´Â JPG À̹ÌÁöÀÇ ÆÄÀÏÀ̸§ÀÔ´Ï´Ù (PNG, TIF, ±×¸®°í ICO¿Í °°ÀÌ ´Ù¸¥ ÆÄÀÏ Çü½ÄÀ» º¸¿©ÁÖ·Á¸é, Gui ¸í·É¾î¸¦ »ç¿ëÇÏ¿© ±×¸² ÄÜÆ®·ÑÀÌ µé¾î Àִ âÀ» »ý¼ºÇÏ´Â ¹æ¹ýÀ» °í·ÁÇϽʽÿÀ).

+

[AHK_L 59+]: Gui°¡ Áö¿øÇÏ´Â Æ÷¸ËÀÌ¸é ¸ðµÎ SplashImage¿Í »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

ImageFileÀº Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£ÁÖÇÕ´Ï´Ù. ImageFile ±×¸®°í OptionsÀÌ ºñ¾î ÀÖ°í âÀÌ ÀÌ¹Ì Á¸ÀçÇϸé, ±×ÀÇ À̹ÌÁö´Â ¹Ù²îÁö ¾ÊÁö¸¸ ÅؽºÆ®´Â ¾÷µ¥ÀÌÆ®µÇ¾î SubText, MainText, ±×¸®°í WinTitle¿¡ Á¦°øµÈ »õ ¹®ÀÚ¿­À» ¹Ý¿µÇÕ´Ï´Ù.

+

»õ·Î »ý¼ºµÈ â¿¡ ´ëÇÏ¿©, ImageFileÀÌ ºñ¾î Àְųª À̹ÌÁö¸¦ ÀûÀçÇϴµ¥ ¹®Á¦°¡ ÀÖÀ¸¸é, âÀº ±×¸² ¾øÀÌ º¸¿©Áý´Ï´Ù.

+ +
ProgressParam1
+

ÇÁ·Î±×·¹½º âÀÌ ÀÌ¹Ì Á¸ÀçÇÏ´Â °æ¿ì: Param1ÀÌ ´Ü¾î OFFÀ̸é, âÀº Æı«µË´Ï´Ù. Param1ÀÌ ´Ü¾î SHOWÀ̸é, âÀÌ ÇöÀç ¼û¾î ÀÖÀ» °æ¿ì º¸¿©Áý´Ï´Ù.

+

±×·¸Áö ¾Ê°í, Param1ÀÌ ¼ø¼ö ¼ýÀÚÀ̸é, ±×ÀÇ ¹Ù À§Ä¡°¡ ±× °ª¿¡ ¸Â°Ô ¹Ù²ò´Ï´Ù. Param1ÀÌ ºñ¾î ÀÖÀ¸¸é, ±×ÀÇ ¹Ù À§Ä¡´Â ¹Ù²îÁö ¾ÊÁö¸¸ ±×ÀÇ ÅؽºÆ®´Â ¾÷µ¥ÀÌÆ®µÇ¾î SubText, MainText, ±×¸®°í WinTitle¿¡ Á¦°øµÈ »õ ¹®ÀÚ¿­À» ¹Ý¿µÇÕ´Ï´Ù. ÀÌ µÎ ¹æ¹ý ¸ðµÎ, âÀÌ ¾ÆÁ÷ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ¸ðµç ¿É¼Ç¿¡ ´ëÇÏ¿© ±âº» °ªÀ» °¡Áö°í âÀÌ »ý¼ºµË´Ï´Ù.

+

ÇÁ·Î±×·¹½º âÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é: »õ ÇÁ·Î±×·¹½º âÀÌ »ý¼ºµË´Ï´Ù (¿¹ÀüÀÇ ÇÁ·Î±×·¹½º âÀ» ±³Ã¼ÇÕ´Ï´Ù), ±×¸®°í Param1Àº ¾Æ·¡ ¸®½ºÆ®ÀÇ ¿É¼ÇÀ¸·Î ±¸¼ºµÈ ¹®ÀÚ¿­ÀÔ´Ï´Ù.

+ +
Options
+

´õ ¾Æ·¡ÀÇ ¸®½ºÆ® ¿É¼ÇÀ¸·Î ±¸¼ºµÈ ¹®ÀÚ¿­.

+ +
SubText
+

À̹ÌÁö³ª ¹Ù Ç¥½ÃÀÚ ¾Æ·¡¿¡ º¸¿©ÁÙ ÅؽºÆ®. ´Ü¾î-³Ñ±â±â°¡ ÀϾÁö¸¸, »õ ÁÙÀ» ¸í½ÃÀûÀ¸·Î ½ÃÀÛÇÏ·Á¸é, ¶óÀÎÇǵ带 »ç¿ëÇϽʽÿÀ (`n). ±âÁ¸ âÀÇ ÅؽºÆ®¸¦ ºñ¿ì·Á¸é, %A_Space%¸¦ ÁöÁ¤ÇϽʽÿÀ. â ³ôÀ̸¦ ÀÚµ¿ °è»êÇϱâ À§ÇØ, ºó ÁÙÀº ¾Æ·¡ÀÇ MainText¿Í ºñ½ÁÇÏ°Ô º¸Á¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +
MainText
+

À̹ÌÁö³ª ¹Ù Ç¥½ÃÀÚ À§¿¡ º¸¿©ÁÙ ÅؽºÆ® (±Û²ÃÀÌ ¹Ý-º¼µåüÀÓ). ´Ü¾î-³Ñ±â±â°¡ ÀϾÁö¸¸, »õ ÁÙÀ» ¸í½ÃÀûÀ¸·Î ½ÃÀÛÇÏ·Á¸é, ¶óÀÎÇǵ带 »ç¿ëÇϽʽÿÀ (`n).

+

ºñ¾î Àְųª »ý·«Çϸé, MainText¿¡ ´ëÇÏ¿© â¿¡ ½ºÆäÀ̽º°¡ º¸Á¸µÇÁö ¾Ê½À´Ï´Ù. ³ªÁß¿¡ ÇÑ ÁÙÀ» Ãß°¡Çϱâ À§ÇØ ½ºÆäÀ̽º¸¦ º¸Á¸ÇÏ·Á¸é, ¶Ç´Â ±âÁ¸ âÀÇ ÅؽºÆ®¸¦ ºñ¿ì·Á¸é, %A_Space%¸¦ ÁöÁ¤ÇϽʽÿÀ. ù ÁÙÀ» ³Ñ¾î µû·Î ´õ ÁÙÀ» À¯ÁöÇÏ·Á¸é, ¶óÀÎÇǵ带 ´õ Ãß°¡ÇϽʽÿÀ (`n).

+

ÀÏ´Ü MainTextÀÇ ÄÜÆ®·Ñ ±¸¿ªÀÇ ³ôÀÌ°¡ ¼³Á¤µÇ¸é, âÀ» ´Ù½Ã ¸¸µéÁö ¾ÊÀº ÇÑ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù.

+ +
WinTitle
+

âÀÇ Á¦¸ñ. »ý·«µÇ°í âÀÌ »õ·Î »ý¼ºµÇ¾ú´Ù¸é, â Á¦¸ñÀº (°æ·Î ¾øÀÌ) ½ºÅ©¸³Æ®ÀÇ À̸§ÀÌ ±âº»°ªÀÌ µË´Ï´Ù. B (borderless) ¿É¼ÇÀÌ ÁöÁ¤µÇ¾ú´Ù¸é, Á¦¸ñ ¹Ù´Â º¸ÀÌÁö ¾ÊÁö¸¸ âÀº ¿©ÀüÈ÷ WinMove¿Í °°Àº ¸í·É¾î¿¡¼­ ÀÌ Á¦¸ñÀ¸·Î ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +
FontName
+

MainText¿Í SubText¿¡ »ç¿ëÇÒ ±Û²ÃÀÇ À̸§. ±Û²Ã Å×ÀÌºí¿¡ ´Ù¾çÇÑ À©µµ¿ìÁî ¹öÀü¿¡ Æ÷ÇÔµÈ ±Û²ÃÀÌ ³ª¿­µÇ¾î ÀÖ½À´Ï´Ù. ±Û²ÃÀÌ ÁöÁ¤µÇÁö ¾Ê¾Ò°Å³ª ãÀ» ¼ö ¾øÀ¸¸é, ½Ã½ºÅÛÀÇ ±âº» GUI ±Û²ÃÀÌ »ç¿ëµË´Ï´Ù.

+

±Û²ÃÀÇ Å©±â¿Í µÎ²² ±×¸®°í »öÀ» º¯°æÇÏ´Â ¹æ¹ýÀº ¾Æ·¡ ¿É¼Ç ¼½¼ÇÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +
+ +

â Å©±â, À§Ä¡, ±×¸®°í ÇàÀ§

+

+A: âÀº ¾ðÁ¦³ª À§¿¡ ÀÖÁö ¾Ê½À´Ï´Ù.

+

+B: Borderless: â¿¡ Å׵θ®°¡ ¾ø°í Á¦¸ñ ¹Ù°¡ ¾ø½À´Ï´Ù. Å׵θ®´Â ÀÖÁö¸¸ Á¦¸ñ ¹Ù´Â ÇÊ¿ä ¾ø´Ù¸é, ¾ãÀº Å׵θ®¿¡ B1À» »ç¿ëÇÏ°í ´ëÈ­»óÀÚ ½ºÅ¸ÀÏÀÇ Å׵θ®¿¡ B2¸¦ »ç¿ëÇϽʽÿÀ.

+

+M: »ç¿ëÀÚ°¡ âÀ» À̵¿ÇÒ ¼ö ÀÖ½À´Ï´Ù (Å׵θ®°¡ ¾ø´Â °æ¿ì´Â ¿¹¿Ü). Ãß°¡·Î (Å׵θ®¸¦ ²ø¾î¼­) âÀÇ Å©±â¸¦ ¹Ù²Ù·Á¸é, M1À» ÁöÁ¤ÇϽʽÿÀ. Ãß°¡·Î ½Ã½ºÅÛ ¸Þ´º¸¦ Æ÷ÇÔÇÏ°í Á¦¸ñ ¹Ù¿¡ ÃÖ¼ÒÈ­/ÃÖ´ëÈ­/´Ý±â ¹öÆ° ÁýÇÕÀ» Æ÷ÇÔÇÏ·Á¸é, M2¸¦ ÁöÁ¤ÇϽʽÿÀ.

+

+Pn: ÇÁ·Î±×·¹½º â¿¡ ´ëÇÏ¿©, n¿¡ Á¦¸ñ ¹ÙÀÇ ½ÃÀÛ À§Ä¡¸¦ ÁöÁ¤ÇϽʽÿÀ (±âº»°ªÀº 0ÀÔ´Ï´Ù. ¶Ç´Â Çã¿ëµÇ´Â ¹üÀ§ ¾È¿¡¼­ 0¿¡ °¡Àå °¡±î¿î ¼ýÀÚÀÔ´Ï´Ù). +³ªÁß¿¡ ¹ÙÀÇ À§Ä¡¸¦ ¹Ù²Ù·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À: Progress, 50.

+

+Rx-y: ÇÁ·Î±×·¹½º â¿¡ ´ëÇÏ¿©, x-y¿¡ ¹ÙÀÇ ¹üÀ§¸¦ ÁöÁ¤ÇϽʽÿÀ (R ¿É¼ÇÀÌ ¾øÀ¸¸é, ±âº» °ªÀº 0-100ÀÔ´Ï´Ù). ¿¹¸¦ µé¾î, R0-1000À̸é 0ºÎÅÍ 1000±îÁöÀÌ ¼ýÀÚ¸¦ Çã¿ëÇÕ´Ï´Ù; R-50-50À̸é -50ºÎÅÍ 50±îÁö Çã¿ëÇÕˆ•; ±×¸®°í R-10--5À̸é -10ºÎÅÍ -5±îÁö Çã¿ëÇÕ´Ï´Ù.

+

+T: âÀÇ Å½ºÅ© ¹Ù¿¡ ¹öÆ°ÀÌ Çϳª ÁÖ¾îÁý´Ï´Ù. ±×¸®°í ¼ÒÀ¯ÁÖ°¡ ¾ø½À´Ï´Ù. º¸Åë, âÀº ½ºÅ©¸³Æ®ÀÇ ¸ÞÀΠâ¿¡ ¼ÓÇϱ⠶§¹®¿¡ ¹öÆ°ÀÌ ¾ø½À´Ï´Ù. ÀÌ ¼³Á¤Àº ¶ÇÇÑ GUI âÀÇ Gui +OwnDialogs ¼³Á¤ÀÌ ½ºÇ÷¹½Ã ¶Ç´Â ÇÁ·Î±×·¹½º âÀ» ¼ÒÀ¯ÇÏÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù.

+

+Hn: n¿¡ âÀÇ Å¬¶óÀ̾ðÆ® ±¸¿ªÀÇ ³ôÀ̸¦ ÁöÁ¤ÇϽʽÿÀ (Á¦¸ñ ¹Ù¿Í Å׵θ®¸¦ Á¦¿ÜÇÑ ±¸¿ªÀÔ´Ï´Ù). ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, âÀÇ ÅؽºÆ®¿Í À̹ÌÁö/¹ÙÀÇ ³ôÀÌ¿¡ ±â¹ÝÇÏ¿© ±× ³ôÀÌ°¡ ÀÚµ¿À¸·Î °è»êµË´Ï´Ù.

+

+Wn: n¿¡ âÀÇ Å¬¶óÀ̾ðÆ® ±¸¿ªÀÇ ³Êºñ¸¦ ÁöÁ¤ÇϽʽÿÀ. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, (À̹ÌÁö°¡ ÀÖ´Ù¸é) SplashImage¿¡ ´ëÇÏ¿© ³Êºñ°¡ ÀÚµ¿À¸·Î °è»êµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ±âº»°ªÀº 300ÀÔ´Ï´Ù.

+

+Xn: n¿¡ âÀÇ Á»ó ¸ð¼­¸®ÀÇ x-ÁÂÇ¥¸¦ ÁöÁ¤ÇϽʽÿÀ. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, âÀº ¼öÆòÀ¸·Î È­¸é °¡¿îµ¥¿¡ ³õÀÔ´Ï´Ù.

+

Yn: n¿¡ âÀÇ Á»ó ¸ð¼­¸®ÀÇ y-ÁÂÇ¥¸¦ ÁöÁ¤ÇϽʽÿÀ. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, âÀº ¼öÁ÷À¸·Î È­¸é °¡¿îµ¥¿¡ ³õÀÔ´Ï´Ù.

+

+Hide: âÀº ÃÖÃÊ¿¡ ¼û¾î ÀÖ½À´Ï´Ù. Progress Show ¶Ç´Â SplashImage Show¸¦ »ç¿ëÇØ ³ªÁß¿¡ º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù.

+ +

â¿¡ °´Ã¼ ¹èÄ¡Çϱâ

+

Cxy: Centered: ÀÌ ¿É¼ÇÀÌ ¾øÀ¸¸é, SubText ±×¸®°í MainText ¸ðµÎ â ÇÑ °¡¿îµ¥¿¡ ³õÀÔ´Ï´Ù. 0À» x¿¡ ÁöÁ¤Çϸé SubText°¡ ¿ÞÂÊ Á¤·ÄµË´Ï´Ù. 1À» ÁöÁ¤Çϸé Áß¾Ó¿¡ Á¤·ÄµË´Ï´Ù. y¿¡µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. ´Ü, MainText¿¡ Àû¿ëµÇ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù (y´Â »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù). ¿¹¸¦ µé¾î: c10.

+

+ZHn: °´Ã¼ÀÇ ³ôÀÌ: ÇÁ·Î±×·¹½º â¿¡ ´ëÇÏ¿©, n¿¡ ÇÁ·Î±×·¹½º ¹ÙÀÇ µÎ²²¸¦ ÁöÁ¤ÇϽʽÿÀ (±âº»°ª 20). SplashImage â¿¡ ´ëÇÏ¿©, n¿¡ À̹ÌÁö¸¦ Á¶ÀýÇÒ ³ôÀ̸¦ ÁöÁ¤ÇϽʽÿÀ. -1À» ÁöÁ¤ÇÏ¸é ³ôÀ̸¦ ZWn ÁöÁ¤µÈ ³Êºñ¿¡ ºñ·ÊÇϵµ·Ï Á¶ÀýÇÒ ¼ö ÀÖ½À´Ï´Ù (Áï, "È­¸é ºñÀ² À¯Áö"). ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, ½ÇÁ¦ À̹ÌÁö ³ôÀÌ°¡ »ç¿ëµË´Ï´Ù. ¾î´À °æ¿ìµç, °ªÀ» 0À¸·Î ÁöÁ¤ÇÏ¸é °´Ã¼¸¦ ¿ÏÀüÈ÷ »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¸é ¸ÂÃ㠱۲ðú Å©±â ±×¸®°í »öÀ¸·Î ¿ÀÁ÷ ÅؽºÆ®¸¸ º¸¿©ÁÖ´Â µ¥ âÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ZWn: °´Ã¼ÀÇ ³Êºñ (SplashImage â Àü¿ë): n¿¡ À̹ÌÁö¸¦ Á¶ÀýÇÒ ³Êºñ¸¦ ÁöÁ¤ÇϽýʽÿÀ. -1À» ÁöÁ¤ÇÏ¸é ³Êºñ¸¦ ZHn¿¡ ÁöÁ¤µÈ ³Êºñ¿¡ ºñ·ÊÇÏ¿© Á¶ÀýÇÒ ¼ö ÀÖ½À´Ï´Ù. (Áï, "È­¸é ºñÀ² À¯Áö"). ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, ½ÇÁ¦ À̹ÌÁö ³Êºñ°¡ »ç¿ëµË´Ï´Ù.

+

+ZXn: n¿¡ âÀÇ Á¿쿡 ³²±æ ¿©¹éÀÇ ¾çÀ» ÁöÁ¤ÇϽʽÿÀ. ±âº» °ªÀº 10 Çȼ¿ÀÔ´Ï´Ù. ´Ü, SplashImage âÀº ÅؽºÆ®°¡ ¾ø°í, ±âº» °ªÀº 0ÀÔ´Ï´Ù.

+

+ZYn: n¿¡ âÀÇ »óÇÏ ±×¸®°í ÄÜÆ®·Ñ »çÀÌ¿¡ ³²±æ ºó ¼öÁ÷ °ø°£ÀÇ ¾çÀ» ÁöÁ¤ÇϽʽÿÀ. ±âº» °ªÀº 5Çȼ¿ÀÔ´Ï´Ù. ´Ü, SplashImage âÀº ÅؽºÆ®°¡ ¾ø°í, ±âº»°ªÀº 0ÀÔ´Ï´Ù.

+

+ÁÖÀÇ: ¼öÁ÷ ÇÁ·Î±×·¹½º ¹Ù¸¦ ¸¸µé°Å³ª ·¹À̾ƿôÀ» Á» ´õ À¯¿¬ÇÏ°Ô Á¦¾îÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ Gui ¸í·É¾î¸¦ »ç¿ëÇϽʽÿÀ:

+ +
Gui, Add, Progress, Vertical vMyProgress
+Gui, Show
+return
+; ... later...
+GuiControl,, MyProgress, +10  ; ¹Ù¸¦ À§·Î10 ÆÛ¼¾Æ® À̵¿½ÃÅ°ºó´Ù. +¸¦ »ý·ª°²¸é Àý´ë À§Ä¡¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+ +

±Û²Ã Å©±â¿Í ¹«°Ô

+

+FMn: MainText¿¡ ´ëÇÑ ±Û²Ã Å©±â¸¦ n¿¡ ÁöÁ¤ÇϽʽÿÀ. ±âº»°ªÀº 0ÀÌ°í, ´ëºÎºÐÀÇ ½Ã½ºÅÛ¿¡¼­ 10 Æ÷ÀÎÆ®°¡ »ç¿ëµË´Ï´Ù. ÀÌ ±âº»°ªÀº Á¦¾îÆÇ > È­¸é ¼³Á¤¿¡¼­ ½Ã½ºÅÛÀÌ ¼±ÅÃÇÑ ±Û²Ã Å©±â¿¡ ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù.

+

+FSn: SubText¿¡ ´ëÇÑ ±Û²Ã Å©±â¸¦ n¿¡ ÁöÁ¤ÇϽʽÿÀ. ±âº»°ªÀº 0ÀÔÀÌ°í ´ëºÎºÐÀÇ ½Ã½ºÅÛ¿¡¼­ 0 Æ÷ÀÎÆ®°¡ »ç¿ëµË´Ï´Ù.

+

+WMn: MainText¿¡ ´ëÇÏ¿© ±Û²Ã ¹«°Ô¸¦ n¿¡ ÁöÁ¤ÇϽʽÿÀ. ÀÌ µÎ²²´Â ¹üÀ§°¡ 1ºÎÅÍ 1000±îÁöÀÔ´Ï´Ù. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, 600 (¹Ý-º¼µåü)ÀÌ »ç¿ëµË´Ï´Ù.

+

+WSn: SubText¿¡ ´ëÇÏ¿© ±Û²Ã ¹«°Ô¸¦ n¿¡ ÁöÁ¤ÇϽʽÿÀ. µÎ²²´Â ¹üÀ¨ 1ºÎÅÍ 1000±îÁö ÀÔ´Ï´Ù (700Àº ÀüÅëÀûÀ¸·Î "º¼µåü"·Î °£Áֵ˴ϴÙ). ÁöÁ¤ÇÏÁö¾ÊÀ¸¸é, 400 (º¸Åë)ÀÌ »ç¿ëµË´Ï´Ù.

+ +

°´Ã¼ »ö

+

+»öÀº ¾Æ·¡ ¸®½ºÆ®ÀÇ »ö À̸§ Áß ÇϳªÀ̰ųª ¶Ç´Â ¿©¼¸-ÀÚ¸® ½ÊÀ°Áø RGB °ªÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, cw1A00FF¸¦ ÁöÁ¤Çϸé â ¹è°æ»öÀÌ Àû»öÀº 1A, ³ì»öÀº 00, ±×¸®°í û»öÀº FF·Î ¼³Á¤µË´Ï´Ù.

+

+±× ´ÙÀ½¿¡ ¿É¼ÇÀÌ ´õ ÀÖÀ¸¸é °¢ Ä÷¯ ¿É¼Ç ´ÙÀ½¿¡ ½ºÆäÀ̽º¸¦ Ãß°¡ÇϽʽÿÀ. ¿¹¸¦ µé¾î: cbRed ct900000 cwBlue.

+

+CBn: ÇÁ·Î±×·¹½º ¹ÙÀÇ Ä÷¯: n¿¡ 16°¡Áö ±âº» HTML Ä÷³ À̸§ Áß Çϳª ¶Ç´Â 6-ÀÚ¸® RGB Ä÷¯ °ªÀ» ÁöÁ¤ÇϽʽÿÀ. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, ½Ã½ºÅÛÀÇ ±âº» ¹Ù Ä÷¯°¡ »ç¿ëµË´Ï´Ù. ´Ü¾î Default¸¦ ÁöÁ¤ÇÏ¸é ½Ã½ºÅÛÀÌ ±âº» ÇÁ·Î±×·¹½º ¹Ù Ä÷¯·Î µÇµ¹¾Æ ¿Ã ¼ö ÀÖ½À´Ï´Ù.

+

+CTn: ÅؽºÆ® Ä÷¯: n¿¡ 16°¡Áö ±âº» HTML Ä÷¯ À̸§ Áß Çϳª ¶Ç´Â 6-ÀÚ¸® RGB Ä÷¯ °ªÀ» ÁöÁ¤ÇϽʽÿÀ. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, ½Ã½ºÅÛÀÇ ±âº» ÅؽºÆ® Ä÷¯°¡ »ç¿ëµË´Ï´Ù (º¸Åë °ËÁ¤»ö). ´Ü¾î Default¸¦ ÁöÁ¤ÇÏ¸é ½Ã½ºÅÛÀÇ ±âº» ÅؽºÆ® Ä÷¯·Î µ¹¾Æ¿Ã ¼ö ÀÖ½À´Ï´Ù.

+

+CWn: âÀÇ Ä÷¯ (¹è°æ»ö): Sn¿¡ 16°¡Áö ±âº» HTML Ä÷¯ À̸§ Áß Çϳª ¶Ç´Â 6-ÀÚ¸® RGB Ä®·¯ °ªÀ» ÁöÁ¤ÇϽʽÿÀ. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, ½Ã½ºÅÛÀÇ ¹öÆ° »öÀÌ »ç¿ëµË´Ï´Ù (´Ü¾î Default ¸¦ ÁöÁ¤ÇÏ¸é ³ªÁß¿¡ ÀÌ Ä÷¯·Î µÇµ¹¾Æ ¿Ã ¼ö ÀÖ½À´Ï´Ù). ¹è°æ»öÀ» Åõ¸íÇÏ°Ô ¸¸µé·Á¸é, WinSet TransColor¸¦ »ç¿ëÇϽʽÿÀ.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Ä÷¯ À̸§°ú RGB °ª +
 Black = 000000 Green = 008000
 Silver = C0C0C0 Lime = 00FF00
 Gray = 808080 Olive = 808000
 White = FFFFFF Yellow = FFFF00
 Maroon = 800000 Navy = 000080
 Red = FF0000 Blue = 0000FF
 Purple = 800080 Teal = 008080
 Fuchsia = FF00FF Aqua = 00FFFF
+

³íÆò

+

+ù ¸Å°³º¯¼ö°¡ ´Ü¾î OFFÀ̸é, ±× âÀº Æı«µË´Ï´Ù.

+

+°¢ ½ºÅ©¸³Æ®´Â ÃÖ´ë 10°³ÀÇ ÇÁ·Î±×·¹½º ⠱׸®°í 10 °³ÀÇ SplashImage âÀ» º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. °¢ ⸶´Ù »ý¼º ¼ø°£¿¡ ÇÒ´çµÈ ¹øÈ£°¡ ÀÖ½À´Ï´Ù. ÁöÁ¤µÇÁö ¾ÊÀ¸¸é ±× ¹øÈ£´Â 1 (ù ¹ø°)ÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ù ¸Å°³º¯¼ö ¾Õ¿¡ û ¹øÈ£¿Í ½ÖÁ¡À» ¹èÄ¡ÇϽʽÿÀ. ¿¹¸¦ µé¾î, 2:Off·Î Progress ¸í·É¾î¸¦ »ç¿ëÇϸé 2 ¹ø ÇÁ·Î±×·¡½º âÀÌ ²¨Áý´Ï´Ù, 2:75ÀÌ¸é ±×ÀÇ ¹Ù¸¦ 75%·Î ¼³Á¤ÇÕ´Ï´Ù, 2:ÀÌ¸é ±×ÀÇ ÅؽºÆ® Çʵ尡 ¹Ù²ò´Ï´Ù. ±×¸®°í 2:BÀ̸é Å×Åõ¸® ¾ø´Â »õ ÇÁ·Î±×·¹½º âÀÌ »ý¼ºµË´Ï´Ù. ºñ½ÁÇÏ°Ô, SplashImage ¸í·É¾î¸¦ 2:Off¿Í ÇÔ²² »ç¿ëÇϸé 2 ¹ø SplashImage âÀÌ ²¨Áö°í, 2:ÀÌ¸é ±×ÀÇ ÅؽºÆ® Çʵ尡 ¹Ù²ò´Ï´Ù. ±×¸®°í 2:C:\My Images\Picture1.jpg ÀÌ¸é »õ·Î 2 ¹ø SplashImage âÀÌ »ý¼ºµË´Ï´Ù.

+

+»ý¼ºµÉ ¶§, ¹ÙÅÁÈ­¸éº¸´Ù Å« âÀº ÀÚµ¿À¸·Î ¹ÙÅÁÈ­¸é¿¡ ¸Â°Ô ÁÙ¾îµì´Ï´Ù.

+

+¸Ç ÇÁ·Î±×·¹½º ¹Ù¸¦ º¸¿© ÁÖ·Á¸é SubTextµµ MainTextµµ ÁöÁ¤ÇÏÁö ¾Ê°í, ´ÙÀ½ ¿É¼ÇÀ» Æ÷ÇÔÇÏ¸é µË´Ï´Ù: b zx0 zy0. ¸Ç À̹ÌÁö¸¦ º¸¿©ÁÖ·Á¸é °°Àº ¹æ½ÄÀ¸·Î Ç쵂 B ¿É¼ÇÀÌ ´õ ÇÊ¿äÇÕ´Ï´Ù.

+ +

+Windows XP ÀÌÈÄ·Î, ºñ-Ŭ·¡½Ä Å׸¶°¡ ÄÑÁ® ÀÖÀ¸¸é, ÇÁ·Î±×·¹½º ¹ÙÀÇ ³»ºÎ°¡ ºÎµå·´°Ô À̾îÁö´Â ¹Ù°¡ ¾Æ´Ï¶ó µüµüÇÏ°Ô ÀÏ·Ã ±¸È¹À¸·Î º¸ÀÏ ¼ö ÀÖ½À´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é, cbBlue¿Í °°ÀÌ ¹Ù Ä÷¯¸¦ ¸í½ÃÀûÀ¸·Î ÁöÁ¤ÇϽʽÿÀ.

+

+¿É¼Ç ±âÈ£¿¡ ÇÊ¿äÇÒ °æ¿ì (½ÊÀ°Áø¼ö°¡ ¾Æ´Ï¶ó) ½ÊÁø¼ö¸¦ »ç¿ëÇϽʽÿÀ. ´Ü, µû·Î °íÁöÇÏ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+

+WinSet ±×¸®°í WinMove °°Àº ¸í·É¾î¸¦ »ç¿ëÇÏ¸é ´Ù½Ã »ý¼ºÇÒ ÇÊ¿ä¾øÀÌ ±âÁ¸ âÀÇ ¼Ó¼ºÀ» ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+

+GUI âÀÌ Gui +OwnDialogs ¼ö´ÜÀ» »ç¿ëÇÏ¿© ÇÁ·Î±×·¹½º âÀ̳ª ½ºÇ÷¹½Ã âÀ» ¼ÒÀ¯ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ½ºÇ÷¹½Ã³ª ÇÁ·Î±×·¹½º âÀÌ ¼ÒÀ¯Ã¢ º¸´Ù ¾ðÁ¦³ª À§¿¡ ÀÖ°Ô µË´Ï´Ù. °Ô´Ù°¡, ±× GUI âÀÌ Æı«µÉ ¶§ ÇÁ·Î±×·¹½º âÀ̳ª ½ºÇ÷¹½Ã âµµ ÀÚµ¿À¸·Î Æı«µË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+GUI, SplashTextOn, ToolTip

+ +

¿¹Á¦

+ +
Progress, b w200, My SubText, My MainText, My Title
+Progress, 50 ; ¹ÙÀÇ À§Ä¡¸¦ 50%·Î ¼³Á¤ÇÕ´Ï´Ù.
+Sleep, 4000
+Progress, Off
+
+; 18-Æ÷ÀÎÆ® Courier ÅؽºÆ®¸¦ º¸¿©Á٠âÀ» »ý¼ºÇÕ´Ï´Ù:
+Progress, m2 b fs18 zh0, This is the Text.`nThis is a 2nd line., , , Courier New
+
+; °£´ÜÇÑ SplashImage âÀ» ¸¸µì´Ï´Ù:
+SplashImage, C:\My Pictures\Company Logo.gif
+
+; Å×Åõ¸® ¾ø´Â SplashImage âÀ» »ý¼ºÇÕ´Ï´Ù. À̹ÌÁö ¾Æ·¡¿¡ Å« ÅؽºÆ®°¡ ÀÖ½À´Ï´Ù:
+SplashImage, C:\My Pictures\Company Logo.gif, b fs18, This is our company logo.
+Sleep, 4000
+SplashImage, Off
+
+; ´ÙÀ½Àº SplashImage À§¿¡ ÇÁ·Î±×·¡½º âÀ» ÁßøÇؼ­
+; ¼³Ä¡ È­¸éÀ» ¸ÚÁö°Ô º¸¿©ÁÝ´Ï´Ù:
+IfExist, C:\WINDOWS\system32\ntimage.gif, SplashImage, %A_WinDir%\system32\ntimage.gif, A,,, Installation
+Loop, %A_WinDir%\system32\*.*
+{
+    Progress, %a_index%, %a_loopfilename%, Installing..., Draft Installation
+    Sleep, 50
+    if a_index = 100
+        break
+}
+; GUI ÆäÀÌÁö ¾Æ·¡¿¡ ºñ½ÁÇÑ ¿¹Á¦°¡ ÀÖ½À´Ï´Ù. ±×ÀÇ ÀåÁ¡Àº ¿ÀÁ÷ ÇϳªÀÇ Ã¢¸¸ »ç¿ëÇÏ°í
+; â ·¹À̾ƿôÀ» ´õ ¼¶¼¼ÇÏ°Ô Á¦¾îÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù.
+ + + diff --git a/src/docs/commands/Random.htm b/src/docs/commands/Random.htm new file mode 100644 index 0000000..b6bf07c --- /dev/null +++ b/src/docs/commands/Random.htm @@ -0,0 +1,106 @@ + + + + +Random + + + + + + + +

Random

+ +

ÀÇ»ç-¹«ÀÛÀ§ ¼ö¸¦ ¹ß»ý½Ãŵ´Ï´Ù.

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

¸Å°³º¯¼ö

+
+ +
OutputVar
+

°á°ú¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§. ÀúÀåµÈ ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀÇ Çü½ÄÀº SetFormat¿¡ ÀÇÇÏ¿© °áÁ¤µË´Ï´Ù.

+ +
Min
+
»ý¼ºµÉ °¡Àå ÀÛÀº ¼ö. À½¼ö³ª ºÎµ¿ ¼Ò¼öÁ¡¼ö ¶Ç´Â Ç¥Çö½Ä °¡´É. »ý·«Çϸé, °¡Àå ÀÛÀº °ªÀº 0ÀÔ´Ï´Ù. Á¤¼ö¿¡ ´ëÇÏ¿© Çã¿ëµÇ´Â °¡Àå ³·Àº °ªÀº -2147483648 for integersÀÌÁö¸¸, ºÎµ¿ ¼Ò¼öÁ¡ ¼ö´Â Á¦ÇÑÀÌ ¾ø½À´Ï´Ù.
+ +
Max
+

»ý¼ºµÉ °¡Àå Å« ¼ö, À½¼ö³ª ºÎµ¿ ¼Ò¼öÁ¡ ¼ö ¶Ç´Â Ç¥Çö½Ä °¡´É. »ý·«Çϸé, °¡Àå Å« ¼ö´Â Á¤¼ö¿¡ ´ëÇÏ¿© 2147483647ÀÔ´Ï´Ù (±×·¯³ª ºÎµ¿ ¼Ò¼öÁ¡ ¼ö´Â Á¦ÇÑÀÌ ¾ø½À´Ï´Ù).

+ +
NewSeed
+

ÀÌ ¸ðµå´Â ¹«ÀÛÀ§ ¼ö ¹ß»ýÀÚ¿¡ NewSeed·Î ´Ù½Ã ¾¾¾ÑÀ» ¸ÔÀÔ´Ï´Ù (Ç¥Çö½Ä °¡´É). ÀÌ°ÍÀº ÀÌ¾î ¹ß»ýµÇ´Â ¸ðµç ¹«ÀÛÀ§ ¼ö¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù. NewSeed´Â 0ºÎÅÍ 4294967295 (0xFFFFFFFF) »çÀÌÀÇ Á¤¼ö¿©¾ß ÇÕ´Ï´Ù. ´Ù½Ã ¾¾¾Ñ ¸Ô±â±â´Â ¹ß»ýµÈ ¹«ÀÛÀ§ ¼öÀÇ Ç°Áú/º¸¾È¼ºÀ» Çâ»ó½Ãų ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ NewSeed°¡ Ç°ÁúÀÌ ¶³¾îÁö´Â ÀÇ»ç-¹«ÀÛÀ§ ¼ö°¡ ¾Æ´Ï¶ó ÁøÂ¥ ¹«ÀÛÀ§¼öÀÌ¸é ´õ ÁÁ½À´Ï´Ù. ÀϹÝÀûÀ¸·Î, ¾¾¾Ñ ´Ù½Ã ¸ÔÀ̱â´Â ÇÑ ¹ø ÀÌ»ó ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+ ½ºÅ©¸³Æ®¿¡¼­ ´Ù½Ã ¾¾¾Ñ ¸ÔÀ̱Ⱑ »ç¿ëµÇÁö ¾Ê¾Ò´Ù¸é, ¾¾¾ÑÀº 64-ºñÆ® °ªÀÇ ¾Æ·¡ÂÊ 32-ºñÆ®·Î ½ÃÀÛÇÕ´Ï´Ù. ÀÌ °ªÀº 1601³â 1¿ù 1ÀÏ ÀÌÈÄ·Î 100-³ª³ëÃÊ °£°ÝÀ¸·Î ³ª´« °³¼öÀÔ´Ï´Ù. + ÀÌ °ªÀº ~7.2 ºÐ¸¶´Ù 0ºÎÅÍ 4294967295 »çÀ̸¦ ¿Ô´Ù °¬´Ù ÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+ÀÌ ¸í·É¾î´Â ÀÇ»ç-¹«ÀÛÀ§ ¼ö¸¦ »êÃâÇÕ´Ï´Ù. ÀÌ ¼ö´Â ÁøÂ¥ ¹«ÀÛÀ§ ¼ö¸¦ Èä³» ³»Áö¸¸ ½ÇÁ¦·Î´Â ´ÙÀ½ ¼ýÀÚ°¡ ¹«¾ùÀÎÁö ÃßÃø/°áÁ¤ÇϱⰡ Áö±ØÈ÷ ¾î·Á¿î º¹ÀâÇÑ °ø½Ä¿¡ ±â¹ÝÇÑ ¼ýÀÚÀÏ »ÓÀÔ´Ï´Ù.

+

+ÁöÁ¤µÈ ¹üÀ§ ¾ÈÀÇ ¼ýÀÚ´Â ¸ðµÎ ´ë·« ºñ½ÁÇÑ ºóµµ·Î ¹ß»ýµË´Ï´Ù (±×·¸Áö¸¸, ¾Æ·¡ÀÇ "¾Ë·ÁÁø ÇÑ°è"¸¦ ÂüÁ¶ÇϽʽÿÀ).

+

+Min ¶Ç´Â Max¿¡ ¼Ò¼ö Á¡ÀÌ µé¾î ÀÖ´Ù¸é, ÃÖÁ¾ °á°ú´Â ºÎµ¿ ¼Ò¼öÁ¡ ¼ö°¡ µË´Ï´Ù. Çü½ÄÀº SetFormat¿¡ ÀÇÇÏ¿© °áÁ¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ±× °á°ú´Â Á¤¼öÀÔ´Ï´Ù.

+

+¾Ë·ÁÁø ÇÑ°è: ºÎµ¿ ¼Ò¼öÁ¡ ¼ö¿¡ ´ëÇÏ¿© +

    +
  1. ƯÁ¤ ¹üÀ§¿¡ ´ëÇÏ¿© ´ë·« 4,294,967,296°³ÀÇ ±¸ºÐµÈ ¼ýÀÚ¸¸ ¹ß»ý½Ãų ¼ö ÀÖ½À´Ï´Ù. ±×·¡¼­ ¹üÀ§ ¾ÈÀÇ ´Ù¸¥ ¸ðµç ¼ýÀÚµéÀº Àý´ë·Î ¹ß»ýµÇÁö ¾Ê½À´Ï´Ù; +
  2. °¡²û °á°ú°¡ ÁöÁ¤µÈ ÃÖ´ë°ª(Max)º¸´Ù ´õ Å« °æ¿ì°¡ ÀÖ½À´Ï´Ù. (ÀÌ°ÍÀº ºÎºÐÀûÀ¸·Î ºÎµ¿ ¼Ò¼öÁ¡ ¼ö·ÎºÎÅÍ Á¤¹Ðµµ¸¦ ¹°·Á ¹Þ¾Ò±â ¶§¹®ÀÔ´Ï´Ù). +
+

+ +

°ü·Ã Ç׸ñ

+

SetFormat

+ +

¿¹Á¦

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

¿øº»¿¡ ÀÖ´Â ÁÖ¼® Àοë

+ +

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 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. +
  3. 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.
  4. +
  5. The names of its contributors may not be used to endorse or promote products + derived from this software without specific prior written permission.
  6. +
+

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.

+ + + diff --git a/src/docs/commands/RegDelete.htm b/src/docs/commands/RegDelete.htm new file mode 100644 index 0000000..affa84e --- /dev/null +++ b/src/docs/commands/RegDelete.htm @@ -0,0 +1,62 @@ + + + + +RegDelete + + + + + + + + +

RegDelete

+ +

·¹Áö½ºÆ®¸®·ÎºÎÅÍ °ªÀÎ ÇÏÀ§Å°¸¦ Á¦°ÅÇÕ´Ï´Ù.

+ +
RegDelete, RootKey\SubKey [, ValueName]  ; v1.1.21+
+RegDelete, RootKey, SubKey [, ValueName]
+

¸Å°³º¯¼ö

+
+ +
RootKey
+

¹Ýµå½Ã HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_USER, HKEY_CLASSES_ROOT, ¶Ç´Â HKEY_CURRENT_CONFIG ÁßÀÇ Çϳª¿©¾ß ÇÕ´Ï´Ù. (¶Ç´Â HKLM¿Í °°Àº ¾à¾î). ¿ø°Ý ·¹Áö½ºÆ®¸®¿¡ Á¢±ÙÇÏ·Á¸é, ÄÄÇ»ÅÍ À̸§À» ¾Õ¿¡ µÎ°í ´ÙÀ½¿¡ ½ÖÁ¡ (¶Ç´Â v1.1.21+À̸é, ¿ª»ç¼±)À», ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¹èÄ¡ÇϽʽÿÀ: \\workstation01:HKEY_LOCAL_MACHINE

+ +
SubKey
+

¼­ºêÅ°ÀÇ À̸§ (¿¹, Software\SomeApplication).

+ +
RootKey\SubKey [v1.1.21+]
+

RootKey ´ÙÀ½¿¡ ¹Ù·Î ¿ª»ç¼±ÀÌ µû¶ó¿À¸é (\), RootKey¿Í SubKey´Â ÇϳªÀÇ ¸Å°³º¯¼ö·Î º´Çյ˴ϴÙ.

+ +
ValueName
+

»èÁ¦ÇÒ °ªÀÇ À̸§. »ý·«µÇ¸é, Àüü SubKey°¡ »èÁ¦µË´Ï´Ù. SubkeyÀÇ ±âº» °ªÀ» »èÁ¦ÇÏ·Á¸é -- RegEditÀÌ "(±âº»)"À¸·Î º¸¿©ÁÖ´Â °ª -- ÀÌ ¸Å°³º¯¼ö¿¡ AHK_DEFAULT¸¦ »ç¿ëÇϽʽÿÀ.

+ +
+

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1 ¾øÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

+A_LastErrorÀº ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú°¡ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+·¹Áö½ºÆ®¸®¿¡¼­ »èÁ¦ÇÏ´Â °ÍÀº ÀáÀçÀûÀ¸·Î À§ÇèÇÕ´Ï´Ù - Á¶½ÉÇؼ­ ½ÃÇàÇϽʽÿÀ!

+

+¿©·¯ Å°¿Í °ª¿¡ ÀÛµ¿ÇÏ°í ¿­¶÷ÇÏ·Á¸é, ·¹Áö½ºÆ®¸®-ȸµ¹ÀÌÀÇ »ç¿ëÀ» °í·ÁÇϽʽÿÀ.

+

+¿ø°Ý ÄÄÇ»ÅÍÀÇ ·¹Áö½ºÆ®¸®¿¡ Á¢±ÙÇÏ´Â ¹ý¿¡ °üÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â ·¹Áö½ºÆ®¸®-ȸµ¹ÀÌ¿¡¼­ ³íÆòÀ» ÂüÁ¶ÇϽʽÿÀ.

+

+32-ºñÆ® ½ºÅ©¸³Æ®¿¡¼­ ·¹Áö½ºÆ®¸®ÀÇ 64-ºñÆ® ¼½¼ÇÀ» ¶Ç´Â ±× ¹Ý´ë·Î »èÁ¦ÇÏ·Á¸é, SetRegView¸¦ »ç¿ëÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

RegRead, RegWrite, ·¹Áö½ºÆ®¸®-ȸµ¹ÀÌ, SetRegView, IniDelete

+ +

¿¹Á¦

+
RegDelete, HKEY_LOCAL_MACHINE, Software\SomeApplication, TestValue
+RegDelete, HKEY_LOCAL_MACHINE\Software\SomeApplication, TestValue  ; v1.1.21+ ÇÊ¿ä
+ + + diff --git a/src/docs/commands/RegExMatch.htm b/src/docs/commands/RegExMatch.htm new file mode 100644 index 0000000..c3f18be --- /dev/null +++ b/src/docs/commands/RegExMatch.htm @@ -0,0 +1,109 @@ + + +RegExMatch + + + + + + + +

RegExMatch() [v1.0.45+]

+ +

¹®ÀÚ¿­¿¡ ÆÐÅÏÀÌ ´ã°Ü ÀÖ´ÂÁö ¾Ë¾Æ³À´Ï´Ù (Á¤±Ô Ç¥Çö½Ä).

+ +
FoundPos := RegExMatch(Haystack, NeedleRegEx [, UnquotedOutputVar = "", StartingPosition = 1])
+

¸Å°³º¯¼ö

+

+¿ªÁÖ : Á¤±ÔÇ¥Çö½ÄÀ¸·Î ¸ñÇ¥ ¹®ÀÚ¿­¿¡¼­ ÆÐÅÏÀ» ã´Â °ÍÀ»
+°ÇÃÊ´õ¹Ì(Haystack)¿¡¼­ ¹Ù´Ã(NeedleRegEx)À» ã´Â °Í¿¡ºñÀ¯ÇÔ. +

+
+
FoundPos
+

RegExMatch()´Â ¹®ÀÚ¿­ Haystack¿¡ NeedleRegEx°¡ ³ªÅ¸³­ °¡Àå ¿ÞÂÊÀÇ À§Ä¡¸¦ µ¹·ÁÁÝ´Ï´Ù. À§Ä¡°¡ 1À̸é ù ¹ø° ¹®ÀÚÀÔ´Ï´Ù. ÆÐÅÏÀÌ ¹ß°ßµÇÁö ¾ÊÀ¸¸é 0À» µ¹·ÁÁÝ´Ï´Ù. ¿¡·¯°¡ ÀϾ¸é (NeedleRegEx ¾È¿¡¼­ ±¸¹® ¿¡·¯°¡ ÀϾ¸é), ºó ¹®ÀÚ¿­ÀÌ ¹ÝȯµË´Ï´Ù. ErrorLevelÀº 0 ´ë½Å¿¡ ¾Æ·¡ÀÇ °ª Áß Çϳª°¡ »ç¿ëµË´Ï´Ù.

+ +
Haystack
+

³»¿ëÀ» °Ë»öÇÒ ¹®ÀÚ¿­.

+ +
NeedleRegEx
+

°Ë»ö ÇÒ ÆÐÅÏ, ÆÞ-ȣȯÀÇ Á¤±Ô Ç¥Çö½ÄÀÔ´Ï´Ù (PCRE). ÆÐÅÏÀÇ ¿É¼ÇÀº ¹®ÀÚ¿­ óÀ½¿¡ Æ÷ÇÔÇØ¾ß ÇÏ°í ±× ´ÙÀ½¿¡ ´Ý´Â ¹Ý°ýÈ£°¡ µû¶ó ¿É´Ï´Ù. ¿¹¸¦ µé¾î, ÆÐÅÏ "i)abc.*123"´Â ´ë¼Ò¹®ÀÚ ºñ±¸ºÐ ¿É¼ÇÀ» ÄÑ°í "abc"¸¦ °Ë»ö ÇÑ ´ÙÀ½, 0°³ ÀÌ»óÀÇ ¹®ÀÚ¸¦ °Ë»öÇÏ°í, ´ÙÀ½¿¡ "123"À» °Ë»öÇÕ´Ï´Ù. ¿É¼ÇÀÌ ¾ø´Ù¸é, ")"´Â ¼±ÅÃÀûÀÔ´Ï´Ù; ¿¹¸¦ µé¾î, ")abc"´Â "abc"¿Í µ¿µîÇÕ´Ï´Ù.

+ +
UnquotedOutputVar
+

Mode 1 (±âº»°ª): OutputVar´Â ÇÑ µû¿ÈÇ¥¸¦ Á¦°ÅÇÑ º¯¼öÀÔ´Ï´Ù. ±× ¾È¿¡´Ù Àüü ÆÐÅÏ¿¡ ºÎÇÕÇÑ Haystack ºÎºÐÀ» ÀúÀåÇÕ´Ï´Ù. ÆÐÅÏÀÌ ¹ß°ßµÇÁö ¾ÊÀ¸¸é (Áï, ÇÔ¼ö°¡ 0À» µ¹·ÁÁÖ¸é), ÀÌ º¯¼ö¿Í ¸ðµç ¹è¿­ ¿ø¼Ò´Â ºñ¿öÁý´Ï´Ù.

+

³ªÆ÷ ºÎÆÐÅÏÀÌ NeedleRegEx ¾È¿¡ Á¸ÀçÇϸé, ±×¿¡ ºÎÇÕÇÑ °ÍµéÀº ¹ÙÅÁ À̸§ÀÌ OutputVarÀÎ ÀÇ»ç-¹è¿­¿¡ ÀúÀåµË´Ï´Ù. ¿¹¸¦ µé¾î, º¯¼öÀÇ À̸§ÀÌ Match¶ó¸é, ù ºÎÆÐÅÏ¿¡ ºÎÇÕÇÏ´Â ºÎ¹®ÀÚ¿­Àº Match1¿¡ ÀúÀåµÇ°í, µÎ ¹ø°´Â Match2¿¡ ÀúÀåµË´Ï´Ù, µîµî. ÀÌ¿¡ ´ëÇÑ ¿¹¿Ü´Â À̸§ ºÙÀÎ ºÎÆÐÅÏÀÔ´Ï´Ù: ¼ýÀÚ°¡ ¾Æ´Ï¶ó À̸§À¸·Î ÀúÀåµË´Ï´Ù. ¿¹¸¦ µé¾î, À̸§ºÙÀÎ ºÎÆÐÅÏ"(?P<Year>\d{4})" ¿¡ ºÎÇÕÇÑ ºÎ¹®ÀÚ¿­Àº MatchYear¿¡ ÀúÀåµË´Ï´Ù. ƯÁ¤ÇÑ ºÎÆÐÅÏÀÌ ÀüÇô ºÎÇÕÇÏÁö ¾ÊÀ¸¸é (Áï, ÇÔ¼ö°¡ 0À» µ¹·ÁÁÖ¸é), ±×¿¡ »óÀÀÇÏ´Â º¯¼ö´Â ºñ¿öÁý´Ï´Ù.

+

ÇÔ¼ö ¾È¿¡¼­, Áö¿ªÀÌ ¾Æ´Ñ Àü¿ª ÀÇ»ç ¹è¿­À» »ý¼ºÇÏ·Á¸é, ÀÇ»ç ¹è¿­ÀÇ ¹ÙÅÁ À̸§À» »ç¿ëÇϱâ Àü¿¡ (¿¹, Match) Àü¿ª º¯¼ö·Î ¼±¾ð ÇϽʽÿÀ. Àü¿ª-°£ÁÖ ÇÔ¼ö¿¡ ´ëÇÏ¿© ±× ¹Ý´ëµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. ±×·¸Áö¸¸, ÈçÇÑ È¥¶õÀÇ ±Ù¿ø ¶§¹®¿¡ °¢ ¿ø¼Ò¸¶´Ù ¼±¾ðÇÒ ÇÊ¿ä°¡ ÀÖ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù.

+

Mode 2 (À§Ä¡¿Í ±æÀÌ): ´ë¹®ÀÚ P°¡ RegExÀÇ ¿É¼Ç¿¡ Á¸ÀçÇϸé -- ¿¹¸¦ µé¾î "P)abc.*123" --Àüü ÆÐÅÏ ºÎÇÕÀÇ ±æÀÌ°¡ OutputVar¿¡ ÀúÀåµË´Ï´Ù (ºÎÇÕÀÌ ¾øÀ¸¸é 0). ³ªÆ÷ ºÎÆÐÅÏÀÌ Á¸ÀçÇϸé, ±× À§Ä¡¿Í ±æÀÌ°¡ µÎ °³ÀÇ ÀÇ»ç-¹è¿­¿¡ ÀúÀåµË´Ï´Ù: OutputVarPos ±×¸®°í OutputVarLen. ¿¹¸¦ µé¾î, º¯¼öÀÇ ¹ÙÅÁ À̸§ÀÌ Match¶ó¸é, ù ºÎÆÐÅÏ ºÎÇÕÀÇ À§Ä¡°¡ 1-±â¹ÝÀ¸·Î MatchPos1¿¡ ÀúÀåµÇ°í, ±×ÀÇ ±æÀÌ´Â MatchLen1¿¡ ÀúÀåµË´Ï´Ù (ºÎÆÐÅÏ¿¡ ºÎÇÕÀÌ ¾ø°Å³ª ÇÔ¼ö°¡ 0À» µ¹·ÁÁÖ¸é 0ÀÌ ÀúÀåµË´Ï´Ù). ÀÌ¿¡ ´ëÇÑ ¿¹¿Ü´Â À̸§ºÙÀÎ ºÎÆÐÅÏÀÔ´Ï´Ù: ¼ýÀÚ°¡ ¾Æ´Ï¶ó À̸§À¸·Î ÀúÀåµË´Ï´Ù (¿¹, MatchPosYear ±×¸®°í MatchLenYear).

+

Mode 3 (ÀÏÄ¡ °´Ã¼) [v1.1.05+]: ´ë¹®ÀÚ O°¡ RegEx ¿É¼Ç¿¡ Á¸ÀçÇϸé -- ¿¹¸¦ µé¾î "O)abc.*123" -- ÀÏÄ¡ °´Ã¼°¡ UnquotedOutputVar¿¡ ÀúÀåµË´Ï´Ù. ÀÌ °´Ã¼¸¦ »ç¿ëÇϸé Àüü ºÎÇÕ°ú ³ªÆ÷µÈ ºÎÆÐÅÏ °¢°¢ÀÇ À§Ä¡¿Í ±æÀÌ ±×¸®°í °ªÀ» ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+
+ +
StartingPosition
+

StartingPositionÀ» »ý·«ÇÏ¸é ±âº»°ªÀº 1ÀÔ´Ï´Ù (HaystackÀÇ ½ÃÀÛ). ±×·¸Áö ¾ÊÀ¸¸é, 2¸¦ ÁöÁ¤ÇØ µÎ ¹ø° ¹®ÀÚ¿¡¼­ ½ÃÀÛÇϰųª 3À» ÁöÁ¤ÇØ ¼¼ ¹ø° ¹®ÀÚ¿¡¼­ ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. µîµî. StartingPositionÀÌ HaystackÀÇ ±æÀ̸¦ ³Ñ¾î °¡¸é, °Ë»öÀº Haystack ³¡ÀÇ ºó ¹®ÀÚ¿­¿¡¼­ ½ÃÀÛÇÕ´Ï´Ù (ÀüÇüÀûÀ¸·Î ºÎÇÕ °á°ú°¡ ¾ø½À´Ï´Ù).

+

StartingPositionÀÌ º¸´Ù ÀÛÀ¸¸é, Haystack ³¡À¸·ÎºÎÅÍÀÇ »ó´ë°Å¸®°í °£ÁÖÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, 0Àº ¸¶Áö¸· ¹®ÀÚ¿¡¼­ ½ÃÀÛÇÏ°í, -1Àº ¸¶Áö¸· ¹®ÀÚ ¹Ù·Î ¾Õ¿¡¼­ ½ÃÀÛÇÕ´Ï´Ù. StartingPositionÀÌ HaystackÀÇ ¿ÞÂÊ ³¡À» ³Ñ¾î¼­ ½ÃµµÇϸé, ¸ðµç HaystackÀ» °Ë»öÇÕ´Ï´Ù.

+

StartingPositionÀÇ °ª¿¡ »ó°ü¾øÀÌ, ¹Ýȯ °ªÀº ¾ðÁ¦³ª HaystackÀÇ Ã¹ ¹®ÀÚ¿¡ »ó´ëÀûÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, "123abc789"¿¡¼­ "abc"ÀÇ À§Ä¡´Â ¾ðÁ¦³ª 4ÀÔ´Ï´Ù.

+ +
+

ErrorLevel

+

[v1.1.04+] ÀÌ ÇÔ¼ö´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù ("ºÎÇÕ ¾øÀ½"°ú È¥µ¿ÇÏÁö ¸¶½Ê½Ã¿À). ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ´ÙÀ½ °ªÁß Çϳª°¡ ¼³Á¤µË´Ï´Ù:

+
    +
  • 0, ¿¡·¯°¡ ÀϾÁö ¾Ê¾Ò´Ù´Â ¶æÀÔ´Ï´Ù.
  • +
  • ´ÙÀ½°ú °°Àº ÇüÅÂÀÇ ¹®ÀÚ¿­: Compile error N at offset M: description. ÀÌ ¹®ÀÚ¿­¿¡¼­, NÀº PCRE ¿¡·¯ ¹øÈ£ÀÌ°í, MÀº Á¤±Ô Ç¥Çö½Ä ¾È¿¡¼­ÀÇ ¹üÄ¢ ¹®ÀÚÀÇ À§Ä¡ÀÔ´Ï´Ù. ±×¸®°í descriptionÀº ±× ¿¡·¯¸¦ ¼³¸íÇÏ´Â ÅؽºÆ®ÀÔ´Ï´Ù.
  • +
  • À½ÀÇ Á¤¼ö, Á¤±Ô Ç¥Çö½ÄÀ» ½ÇÇàÇÏ´Â µ¿¾È¿¡ ¿¡·¯°¡ ÀϾ´Ù´Â ¶æÀÔ´Ï´Ù. ±×·± ¿¡·¯°¡ ÀÚÁÖ ÀϾÁö´Â ¾ÊÁö¸¸ ÀϾ´Ù¸é ´ÙÀ½°ú °°Àº ¿¡·¯°¡ °ÅÀÇ ´ëºÎºÐÀÔ´Ï´Ù: "too many possible empty-string matches" (-22), "recursion too deep" (-21), ±×¸®°í "reached match limit" (-8). ÀÌ·± ¿¡·¯°¡ ÀϾ¸é, ÆÐÅÏÀ» ´õ ¾ö°ÝÇÏ°Ô Àç¼³°èÇϽʽÿÀ. ¿¹¸¦ µé¾î *¸¦ ?, +·Î ±³Ã¼Çϰųª °¡´ÉÇϸé {0,3}°ú °°ÀÌ Á¦ÇÑÇϽʽÿÀ.
  • +
+

Options

+

¼ö½ÄÀÚ¿¡ °üÇؼ­ Options¸¦ ÂüÁ¶ÇϽʽÿÀ. ¿¹¸¦ µé¾î "i)abc"¿Í °°Àº °æ¿ì, ÆÐÅÏ "abc"¿¡ ´ë¼Ò¹®ÀÚ ±¸ºÐÀ» ²ü´Ï´Ù.

+ +

Match Object v1.1.05+

+

+´ë¹®ÀÚ O°¡ RegEx ¿É¼Ç¿¡ Á¸ÀçÇϸé, ÀÏÄ¡ °´Ã¼°¡ UnquotedOutputVar¿¡ ÀúÀåµË´Ï´Ù. ÀÌ °´Ã¼´Â ´ÙÀ½°ú °°Àº Ư¼ºÀ» ¼ÒÀ¯ÇÕ´Ï´Ù:

+

+Match.Pos(N): ³ªÆ÷µÈ ºÎÆÐÅÏ ¶Ç´Â Àüü ºÎÇÕÀÇ À§Ä¡¸¦ µ¹·ÁÁÝ´Ï´Ù.

+

Match.Len(N): ³ªÆ÷µÈ ºÎÆÐÅÏ ¶Ç´Â Àüü ºÎÇÕÀÇ ±æÀ̸¦ µ¹·ÁÁÝ´Ï´Ù.

+

Match.Value(N): ³ªÆ÷µÈ ºÎÆÐÅÏ ¶Ç´Â Àüü ºÎÇÕÀ» µ¹·ÁÁÝ´Ï´Ù.

+

Match.Name(N): ÁÖ¾îÁø ºÎÆÐÅÏÀÇ À̸§À» µ¹·ÁÁÝ´Ï´Ù

+

Match.Count(): ºÎÆÐÅÏÀÇ Àüü °³¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.

+

Match.Mark(): ¸¶Áö¸·À¸·Î ¸¸³­ (*MARK:NAME)ÀÇ NAMEÀ» µ¹·ÁÁÝ´Ï´Ù.

+

Match[N]: NÀÌ 0À̰ųª À¯È¿ÇÑ ºÎÆÐÅÏ ¹øÈ£ ¶Ç´Â À̸§À̶ó¸é, ÀÌ°ÍÀº Match.Value(N)°ú µ¿µîÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, NÀº À§ÀÇ Æ¯¼ºÀÇ À̸§ Áß ÇϳªÀÏ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Match["Pos"] ±×¸®°í Match.Pos´Â Match.Pos()¿Í µ¿µîÇÕ´Ï´Ù. ´Ü, À̸§ÀÌ "Pos"ÀÎ ºÎÆÐÅÏÀÌ Á¸ÀçÇÏ¸é ¿¹¿ÜÀÔ´Ï´Ù. ÀÌ °æ¿ì Match.Value("Pos")¿Í µ¿µîÇÕ´Ï´Ù.

+

Match.N: À§¿Í °°½À´Ï´Ù. ´Ü, NÀÌ ÀοëºÎÈ£¸¦ ºÙÀÌÁö ¾ÊÀº À̸§À̰ųª ¼ýÀÚÀÎ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+

À§ÀÇ ¸ðµç Ư¼º¿¡ ´ëÇÏ¿©, NÀº ´ÙÀ½ Áß Çϳª°¡ µÉ ¼ö ÀÖ½À´Ï´Ù:

+
    +
  • ¸ðµç ºÎÇÕÇϸé 0.
  • +
  • ºÎÆÐÅÏÀÇ ¹øÈ£, À̸§ºÙÀº ºÎÆÐÅϵµ ¸¶Âù°¡Áö.
  • +
  • ºÎÆÐÅÏÀÇ À̸§.
  • +
+

NÀ» ÁöÁ¤ÇÏ¸é ¹Ý°ýÈ£ () ´ë½Å¿¡ °¢°ýÈ£ []¸¦ »ç¿ëÇصµ µË´Ï´Ù.

+ +

¼öÇ༺´É

+

¹®ÀÚ¿­ ¾È¿¡¼­ °£´ÜÇÑ ºÎ¹®ÀÚ¿­À» °Ë»öÇÏ·Á¸é InStr()À» »ç¿ëÇϽʽÿÀ. ¿Ö³ÄÇϸé RegExMatch()º¸´Ù ´õ ºü¸£±â ¶§¹®ÀÔ´Ï´Ù.

+

¼öÇ༺´ÉÀ» °³¼±Çϱâ À§ÇÏ¿©, ÀÚÁÖ »ç¿ëµÇ´Â Á¤±Ô Ç¥Çö½Ä 100°³¸¦ ¸Þ¸ð¸®¿¡ (ÄÄÆÄÀÏµÈ ÇüÅ·Î) ij½¬ÇÕ´Ï´Ù.

+

¿¬±¸ ¿É¼Ç (S)À¸·Î Á¾Á¾ (¿¹¸¦ µé¾î ȸµ¹ÀÌ ¾È¿¡¼­) ¸¹ÀÌ »ç¿ëµÇ´Â Á¤±Ô Ç¥Çö½ÄÀÇ ¼öÇ༺´ÉÀ» °³¼±½Ãų ¼ö ÀÖ½À´Ï´Ù.

+ +

³íÆò

+

+ºÎÆÐÅÏ¿¡ À̸§À» ºÎ¿©ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ÆÐÅÏ "(?P<Year>\d{4})"¿¡ ´Ü¾î Year°¡ ºÎ¿© µÇ¾î ÀÖ½À´Ï´Ù. À̸§Àº ÃÖ´ë 32°³ÀÇ ¾ËÆĺª¼ýÀÚ¿Í ¹ØÁÙ ¹®ÀÚ·Î ±¸¼ºµÇ´Ï´Ù. ´ÙÀ½ Á¦ÇÑÀº "O" (ÀÏÄ¡ °´Ã¼) ¸ðµå¿¡ Àû¿ëµÇÁö ¾Ê½À´Ï´Ù. À̸§ ºÙÀÎ ºÎÆÐÅϵµ RegEx ¿¬»ê ÀÚü¿¡¼­ ¼ýÀÚ·Î ÂüÁ¶ÇÒ ¼ö ÀÖÁö¸¸ (¿¹, \1Àº ù ³ªÆ÷ ÆÐÅÏ¿¡ ½ÇÁ¦·Î ºÎÇÕÇÑ ¹®ÀÚ¿­À» °¡¸®Å°´Â ¿ªÂüÁ¶ÀÔ´Ï´Ù), (¼ýÀÚ°¡ ¾Æ´Ï¶ó) À̸§À¸·Î¸¸ Ãâ·Â ÀÇ»ç-º¯¼ö¿¡ ÀúÀåµË´Ï´Ù. ¿¹¸¦ µé¾î, "Year"°¡ ù ¹ø° ºÎÆÐÅÏÀ̶ó¸é, OutputVarYearÀº ±× ºÎÇÕÇÑ ºÎ¹®ÀÚ¿­ÀÌ ¼³Á¤µÇÁö¸¸, OutputVar1Àº ÀüÇô ¹Ù²îÁö ¾Ê½À´Ï´Ù (ÀÌÀü °ªÀ» ±×´ë·Î À¯ÁöÇÕ´Ï´Ù). ±×·¸Áö¸¸, À̸§¾ø´Â ºÎÆÐÅÏÀÌ "Year" ´ÙÀ½¿¡ ÀϾ¸é, ±×°ÍÀº OutputVar1ÀÌ ¾Æ´Ï¶ó OutputVar2¿¡ ÀúÀåµË´Ï´Ù.

+

+abc123¿Í °°ÀÌ ´ëºÎºÐÀÇ ¹®ÀÚ´Â Á¤±Ô Ç¥Çö½Ä ¾È¿¡ ±âÈ£ ±×´ë·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, \.*?+[{|()^$¿Í °°Àº ¹®ÀÚ´Â ¹Ýµå½Ã ¾Õ¿¡ ¿ª»ç¼±À» ¹èÄ¡ÇØ¾ß ¹®ÀÚ ±×´ë·Î º¸¿©Áö°Ô µË´Ï´Ù. ¿¹¸¦ µé¾î, \.´Â ¹®ÀÚ ±×´ë·ÎÀÇ Á¡ÀÌ°í \\´Â ±âÈ£ ±×´ë·ÎÀÇ ¿ª»ç¼±ÀÔ´Ï´Ù. ÇǽÅÀº \Q...\EÀ» »ç¿ëÇÏ¿© ´ë½ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: \QLiteral Text\E.

+

+Á¤±Ô Ç¥Çö½Ä ¾È¿¡¼­, ÅÇ°ú »õÁÙ °°Àº Ư¼ö ¹®ÀÚµéÀº ¾×¼¾Æ® (`) ¶Ç´Â ¿ª»ç¼± (\)À¸·Î ÇǽŽÃų ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, `t´Â \t¿Í °°½À´Ï´Ù. ´Ü, x ¿É¼ÇÀÌ »ç¿ëµÈ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+

+Á¤±Ô Ç¥Çö½ÄÀÇ ±âº»À» ¹è¿ì·Á¸é (¶Ç´Â ÆÐÅÏ ±¸¹®À» »õ·Ó°Ô ±â¾ïÇØ º¸·Á¸é), RegEx °£Æí ÂüÁ¶¼­¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+¿ÀÅäÇÖÅ°ÀÇ Á¤±Ô Ç¥Çö½ÄÀº ÆÞ-ȣȯÀÇ Á¤±Ô Ç¥Çö½Ä (PCRE)À» »ç¿ëÇÏ¿© ±¸ÇöµÇ¾ú½À´Ï´Ù: www.pcre.org.

+ +

°ü·Ã Ç׸ñ

+

+RegExReplace(), RegEx Quick Reference, Á¤±Ô Ç¥Çö½Ä ¿ÜºÎ¿äû, InStr(), IfInString, StringGetPos, SubStr(), SetTitleMatchMode RegEx, Àü¿ªÀû ÀÏÄ¡¿Í Grep (Æ÷·³ ¸µÅ©)

+

+ÅؽºÆ® µ¥ÀÌÅ͸¦ ¾ò´Â ÈçÇÑ ¹æ¹ý: FileRead, UrlDownloadToFile, Clipboard, GUI ÆíÁý ÄÜÆ®·Ñ

+ +

¿¹Á¦

+
FoundPos := RegExMatch("xxxabc123xyz", "abc.*xyz")  ; 4¸¦ µ¹·ÁÁÝ´Ï´Ù, ºÎÇÕÀÌ ¹ß°ßµÈ À§Ä¡ÀÔ´Ï´Ù.
+FoundPos := RegExMatch("abc123123", "123$")  ; $°¡ ³¡¿¡ ºÎÇÕÇϱ⸦ ¿ä±¸Çϱ⠶§¹®¿¡ 7À» µ¹·ÁÁÝ´Ï´Ù.
+FoundPos := RegExMatch("abc123", "i)^ABC")  ; ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê´Â ¿É¼ÇÀ» ÅëÇÏ¿© ºÎÇÕÇßÀ¸¹Ç·Î 1À» µ¹·ÁÁÝ´Ï´Ù.
+FoundPos := RegExMatch("abcXYZ123", "abc(.*)123", SubPat)  ; 1À» µ¹·ÁÁÖ°í "XYZ"¸¦ SubPat1¿¡ ÀúÀåÇÕ´Ï´Ù.
+FoundPos := RegExMatch("abc123abc456", "abc\d+", "", 2)  ; ½ÃÀÛ À§Ä¡°¡ 1ÀÌ ¾Æ´Ï¶ó 2À̱⠶§¹®¿¡ 1 ÀÌ ¾Æ´Ï¶ó 7À» µ¹·ÁÁÝ´Ï´Ù..
+
+; ÀϹÝÀûÀÎ RegEx ¿¹Á¦µéÀº RegEx °£Æí ÂüÁ¶¼­¸¦ ÂüÁ¶ÇϽʽÿÀ.
+ + + diff --git a/src/docs/commands/RegExReplace.htm b/src/docs/commands/RegExReplace.htm new file mode 100644 index 0000000..2b92ea5 --- /dev/null +++ b/src/docs/commands/RegExReplace.htm @@ -0,0 +1,107 @@ + + + + +RegExReplace + + + + + + + +

RegExReplace() [v1.0.45+]

+ +

¹®ÀÚ¿­ ¾È¿¡ ³ªÅ¸³ª´Â ÆÐÅÏ (Á¤±Ô Ç¥Çö½Ä)À» ±³Ã¼ÇÕ´Ï´Ù.

+ +
NewStr := RegExReplace(Haystack, NeedleRegEx [, Replacement = "", OutputVarCount = "", Limit = -1, StartingPosition = 1])
+

¸Å°³º¯¼ö

+
+ +
NewStr
+

RegExReplace()´Â HaystackÀÇ ³»¿ëÀ» ¿¬»êÀ¸·Î ±³Ã¼ÇÏ¿© µ¹·ÁÁÝ´Ï´Ù. ±³Ã¼°¡ ÇÊ¿äÇÏÁö ¾ÊÀ¸¸é, HaystackÀº ±×´ë·Î ¹ÝȯµË´Ï´Ù. ¿¡·¯°¡ ÀϾ¸é (¿¹¸¦ µé¾î NeedleRegEx ¾ÈÀÇ ±¸¹® ¿¡·¯°¡ ÀÖÀ¸¸é), HaystackÀº ±×´ë·Î ¹ÝȯµË´Ï´Ù (1.0.46.06 ÀÌÀü ¹öÀüÀº ¿¹¿ÜÀε¥, ""¸¦ µ¹·ÁÁÝ´Ï´Ù) ±×¸®°í ErrorLevelÀº 0 ´ë½Å¿¡ ¾Æ·¡ÀÇ °ª Áß Çϳª°¡ ¼³Á¤µË´Ï´Ù.

+ +
Haystack
+

±×ÀÇ ³»¿ëÀÌ °Ë»öµÇ°í ±³Ã¼µÉ ¹®ÀÚ¿­.

+ +
NeedleRegEx
+

°Ë»öÇÒ ÆÐÅÏ, Perl-ȣȯ Á¤±Ô Ç¥Çö½Ä (PCRE)ÀÔ´Ï´Ù. ÆÐÅÏÀÇ ¿É¼ÇÀº (ÀÖ´Ù¸é) ¹®ÀÚ¿­ÀÇ ¸Ç ¾Õ¿¡ ´Ý´Â ¹Ý°ýÈ£¸¦ Æ÷ÇÔ½ÃÄÑ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ÆÐÅÏ "i)abc.*123"´Â ´ë¼Ò¹®ÀÚ ±¸ºÐ ¿É¼ÇÀ» ÄÑ°í "abc"¸¦ ãÀº ´ÙÀ½, 0 °³ ÀÌ»ó ¹®ÀÚ°¡ ³ªÅ¸³ª´ÂÁö ã°í, ´ÙÀ½¿¡ "123"À» ã½À´Ï´Ù. ¾Æ¹« ¿É¼Çµµ ¾ø´Ù¸é, ")"´Â ¼±ÅÃÀûÀÔ´Ï´Ù; ¿¹¸¦ µé¾î, ")abc"´Â "abc"¿Í µ¿µîÇÕ´Ï´Ù.

+ +
Replacement
+

ºÎÇÕÇÏ¸é ±³Ã¼µÉ ¹®ÀÚ¿­, Æò¹üÇÑ ÅؽºÆ®ÀÔ´Ï´Ù (Á¤±Ô Ç¥Çö½Ä ¾Æ´Ô). $1¿Í °°Àº ¿ªÂüÁ¶¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù. HaystackÀ¸·ÎºÎÅÍ Ã¹ ¹ø° ºÎÆÐÅÏ¿¡ ºÎÇÕÇÑ ºÎ¹®ÀÚ¿­À» °¡Áö°í ¿É´Ï´Ù. + + °¡Àå ´Ü¼øÇÑ ¿ªÂüÁ¶´Â $0ºÎÅÍ $9ÀÔ´Ï´Ù. $0Àº Àüü ÆÐÅÏ¿¡ ºÎÇÕÇÑ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù. $1Àº ù ºÎÆÐÅÏ¿¡ ºÎÇÕÇÑ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù. $2´Â µÎ ¹ø° ºÎÆÐÅÏ¿¡ ºÎÇÕÇÑ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù. µîµî. 10 ÀÌ»óÀÇ ¿ª ÂüÁ¶´Â (±×¸®°í ¼±ÅÃÀûÀ¸·Î 9 ÀÌÇϵµ), ¼ýÀÚ¸¦ È°°ýÈ£ ¾È¿¡ µÑ·¯ ½Î½Ê½Ã¿À; ¿¹, ${10}, ${11}, µîµî. À̸§ ºÎÆÐÅÏÀº ±× À̸§À» È°°ýÈ£ ¾È¿¡ µÑ·¯ ½Î½Ê½Ã¿À; ¿¹, ${SubpatternName}. ±âÈ£ ±×´ë·Î $¸¦ ÁöÁ¤ÇÏ·Á¸é, $$¸¦ »ç¿ëÇϽʽÿÀ (ÀÌ°ÍÀº ±×·± Ưº° Ãë±ÞÀÌ ÇÊ¿äÇÑ À¯ÀÏÇÑ ¹®ÀÚÀÔ´Ï´Ù; ¿ª»ç¼±Àº ÇǽŽÃÅ°´Â µ¥ ÀüÇô ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù).

+

+ ºÎÆÐÅÏÀÇ ´ë¼Ò¹®ÀÚ¸¦ º¯È¯ÇÏ·Á¸é, $ ´ÙÀ½¿¡ ´ÙÀ½ ¹®ÀÚ Áß Çϳª¸¦ ¹èÄ¡ÇϽʽÿÀ: U ¶Ç´Â u (´ë¹®ÀÚ), L ¶Ç´Â l (¼Ò¹®ÀÚ), T ¶Ç´Â t (Á¦¸ñ°ÝÀÔ´Ï´Ù. Áï, °¢ ´Ü¾îÀÇ Ã¹ ±ÛÀÚ°¡ ´ë¹®ÀÚ°¡ µÇ°í ´Ù¸¥ ¸ðµç ±ÛÀÚ´Â ¼Ò¹®ÀÚ°¡ µË´Ï´Ù). ¿¹¸¦ µé¾î, $U1¿Í $U{1} µÑ ¸ðµÎ ù ºÎÆÐÅÏÀÇ ´ë¹®ÀÚ ¹öÀüÀ¸·Î º¯È¯ÇÕ´Ï´Ù.

+

+ Á¸ÀçÇÏÁö ¾Ê´Â ¿ªÂüÁ¶¿Í Haystack¿¡¼­ ¾Æ¹« °Íµµ ºÎÇÕÇÏÁö ¸øÇÑ °ÍµéÀº -- ¿¹¸¦ µé¾î "(abc)|(xyz)"ÀÇ ºÎÆÐÅÏ Áß Çϳª -- ºó ¹®ÀÚ¿­·Î º¯È¯µË´Ï´Ù.

+ +
OutputVarCount
+

ÀϾ ±³Ã¼ÀÇ È½¼ö¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§. µû¿ÈÇ¥ ó¸® ¾øÀ½ (±³Ã¼°¡ ¾øÀ¸¸é 0).

+ +
Limit
+

+ LimitÀ» »ý·«Çϸé, ±âº»°ªÀº -1ÀÔ´Ï´Ù. ±âº»°ªÀº Haystack¿¡¼­ ¹ß°ßµÈ ÆÐÅÏ¿¡ ºÎÇÕÇÏ¸é ¸ðµÎ ±³Ã¼ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, Çã¿ëÇÒ ±³Ã¼ÀÇ ÃÖ´ë Ƚ¼ö¸¦ ÁöÁ¤ÇϽʽÿÀ. Haystack¿¡¼­ ¸¶Áö¸· ±³Ã¼ ÀÌÈÄÀÇ ¿À¸¥ÂÊ ºÎºÐÀº ¹Ù²îÁö ¾Ê½À´Ï´Ù.

+ +
StartingPosition
+

+ StartingPositionÀÌ »ý·«µÇ¸é, ±âº»°ªÀº 1ÀÔ´Ï´Ù (HaystackÀÇ ½ÃÀÛ). ±×·¸Áö¸¸, 2¸¦ ÁöÁ¤ÇÏ¸é µÎ ¹ø° ¹®ÀÚºÎÅÍ, 3À» ÁöÁ¤ÇÏ¸é ¼¼ ¹ø° ¹®ÀÚºÎÅÍ, µîµî ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. StartingPositionÀÌ HaystackÀÇ ±æÀ̸¦ ³Ñ¾î ¼­¸é, °Ë»öÀº Haystack ³¡ÀÇ ºó ¹®ÀÚ¿­¿¡¼­ ½ÃÀ۵˴ϴ٠(°á°úÀûÀ¸·Î ¾Æ¹« ±³Ã¼µµ ¾ø½À´Ï´Ù).

+

+ StartingPositionÀÌ 1º¸´Ù ÀÛÀ¸¸é, Haystack ³¡À¸·ÎºÎÅÍ »ó´ë°Å¸®(offset)¶ó°í °£ÁÖÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, 0Àº ¸¶Áö¸· ¹®ÀÚ¿¡¼­ ½ÃÀÛÇÏ°í, -1Àº ¸¶Áö¸· ¹®ÀÚ ¹Ù·Î Àü¿¡¼­ ½ÃÀÛÇÕ´Ï´Ù. StartingPositionÀÌ HaystackÀÇ ¿ÞÂÊ ³¡À» ³Ñ¾î°¡·Á°í ½ÃµµÇϸé, ¸ðµç HaystackÀÌ °Ë»öµË´Ï´Ù.

+

+ StartingPositionÀÇ °ª¿¡ »ó°ü ¾øÀÌ, ¹Ýȯ °ªÀº ¾ðÁ¦³ª HaystackÀÇ ¿ÏÀüÇÑ »çº»ÀÔ´Ï´Ù -- À¯ÀÏÇÑ Â÷ÀÌÁ¡Àº StartingPositionÀÌ 1À̾úÀ» ¶§¿Í ºñ±³ÇÏ¿© ¿ÞÂÊÀÌ Á» ´ú º¯°æµÈ´Ù´Â °ÍÀÔ´Ï´Ù.

+ +
+

ErrorLevel

+

[v1.1.04+] ÀÌ ÇÔ¼ö´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù ("ºÎÇÕÀÌ ¹ß°ßµÇÁö ¾ÊÀ½"°ú È¥µ¿ÇÏÁö ¸» °Í). ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ´ÙÀ½ Áß Çϳª°¡ ¼³Á¤µË´Ï´Ù:

+
    +
  • 0ÀÌ¸é ¿¡·¯°¡ ÀϾ³ªÁö ¾Ê¾Ò´Ù´Â ¶æÀÔ´Ï´Ù.
  • +
  • ´ÙÀ½ ÇüÅÂÀÇ ¹®ÀÚ¿­: Compile error N at offset M: description. ÀÌ ¹®ÀÚ¿­¿¡¼­, NÀº PCRE ¿¡·¯ ¹øÈ£ÀÌ°í, MÀº Á¤±Ô Ç¥Çö½Ä ¾È¿¡¼­ ¿¡·¯°¡ ÀϾ À§Ä¡À̸é, ±×¸®°í descriptionÀº ¿¡·¯¸¦ ¼³¸íÇÏ´Â ÅؽºÆ®ÀÔ´Ï´Ù.
  • +
  • À½¼öÀ̸é Á¤±Ô Ç¥Çö½ÄÀ» ½ÇÇàÇÏ´Â µ¿¾È¿¡ ¿¡·¯°¡ ÀϾ´Ù´Â ¶æÀÔ´Ï´Ù. ±×·± ¿¡·¯´Â º°·Î ¾øÁö¸¸, °¡Àå ÀÚÁÖ ÀϾ´Â ¿¡·¯´Â ´ÙÀ½°ú °°½À´Ï´Ù:
    + "too many possible empty-string matches" (-22), - ºó ¹®ÀÚ¿­ÀÌ ³Ê¹« ¸¹ÀÌ ºÎÇÕÇÔ
    + "recursion too deep" (-21), - ³Ê¹« ±íÀÌ Àç±ÍÇÔ
    + "reached match limit" (-8). - ºÎÇÕ Á¦ÇÑ¿¡ µµ´ÞÇÔ
    + + ÀÌ·± ÀÏÀÌ ÀϾ¸é, ÆÐÅÏÀ» Á» ´õ Á¦ÇÑÀûÀ¸·Î ´Ù½Ã ¼³°èÇϽʽÿÀ. ¿¹¸¦ µé¾î °¡´ÉÇϸé *´Â ?, +,·Î ±³Ã¼ÇÏ°í ¶Ç´Â {0,3}°ú °°ÀÌ Á¦ÇÑ ÇϽʽÿÀ.
  • +
+ +

¿É¼Ç

+

+¼ö½ÄÀÚ¿¡ °üÇÑ °ÍÀº ¿É¼ÇÀ» ÂüÁ¶ÇϽʽÿÀ. ¿¹¸¦ µé¾î "i)abc"¿Í °°Àº °æ¿ì, "abc" ÆÐÅÏ¿¡¼­ ´ë¼Ò¹®ÀÚ ±¸ºÐÀ» ²ü´Ï´Ù.

+ +

¼öÇ༺´É

+

+°£´ÜÇÑ ºÎ¹®ÀÚ¿­À» ±³Ã¼ÇÏ·Á¸é, StringReplace¸¦ »ç¿ëÇϽʽÿÀ. RegExReplace()º¸´Ù ´õ ºü¸¨´Ï´Ù.

+

+±³Ã¼ÀÇ ÃÖ´ë °³¼ö¸¦ ¾Ë °æ¿ì, ±×°ÍÀ» Limit ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇÏ¸é ¼öÇ༺´ÉÀÌ Çâ»óµË´Ï´Ù. °Ë»öÀÌ ´õ »¡¸® ³¡³¯ ¼ö ÀÖ½À´Ï´Ù (ÀÌ·¸°Ô ÇÏ¸é ¿¬»êÇÏ´Â µ¿¾È ½Ã½ºÅÛ¿¡ ¸Þ¸ð¸® ºÎÇϵµ ÁÙ¾îµì´Ï´Ù.). ¿¹¸¦ µé¾î, °Å´ëÇÑ ¹®ÀÚ¿­ÀÇ ¾ÕÂÊ ±Ùó¿¡ ¿ÀÁ÷ Çϳª¸¸ ºÎÇÕÇÑ´Ù´Â »ç½ÇÀ» ¾Ë°í ÀÖ´Ù¸é, 1·Î Á¦ÇÑÇϽʽÿÀ.

+

+¼öÇ༺´ÉÀ» °³¼±Çϱâ À§ÇØ, ÃÖ±Ù¿¡ »ç¿ëµÈ Á¤±Ô Ç¥Çö½Ä 100°³¸¦ (ÄÄÆÄÀÏµÈ ÇüÅ·Î) ¸Þ¸ð¸®¿¡ ij½¬ÇÕ´Ï´Ù.

+

+¿¬±¸ ¿É¼Ç (S)´Â Á¾Á¾ (¿¹¸¦ µé¾î ȸµ¹ÀÌ ¾È¿¡¼­) ¿©·¯ ¹ø »ç¿ëµÇ´Â Á¤±Ô Ç¥Çö½ÄÀÇ ¼öÇ༺´ÉÀ» Çâ»ó½Ãŵ´Ï´Ù.

+ +

³íÆò

+

+´ëºÎºÐÀÇ ¹®ÀÚµéÀº abc123°ú °°ÀÌ Á¤±Ô Ç¥Çö½Ä ¾È¿¡ ±âÈ£ ±×´ë·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, \.*?+[{|()^$ ¹®ÀÚµéÀº ¾Õ¿¡ ¿ª»ç¼±À» ¹èÄ¡ÇØ¾ß ±âÈ£·Î º¸ÀÌ°Ô µË´Ï´Ù. ¿¹¸¦ µé¾î, \.´Â ±âÈ£ ±×´ë·Î Á¡ÀÌ°í \\´Â ±âÈ£ ±×´ë·Î ¿ª»ç¼±ÀÔ´Ï´Ù. ÇǽÅÀº \Q...\E¸¦ »ç¿ëÇØ È¸ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: \QLiteral Text\E.

+

+Á¤±Ô Ç¥Çö½Ä ¾È¿¡¼­, ÅÇ°ú »õÁÙ¹®ÀÚ °°Àº Ư¼ö ¹®ÀÚ´Â ¾×¼¾Æ® (`) ¶Ç´Â ¿ª»ç¼± (\)À¸·Î ÇǽŽÃų ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, `t´Â \t°ú °°½À´Ï´Ù.

+

+Á¤±Ô Ç¥Çö½ÄÀÇ ±âÃʸ¦ ¹è¿ì·Á¸é (¶Ç´Â ÆÐÅÏ ±¸¹®À» ´Ù½Ã »ó±âÇØ º¸°í ½Í´Ù¸é), RegEx °£Æí ÂüÁ¶¼­¸¦ Àϵ¶ ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

+RegExMatch(), RegEx °£Æí ÂüÁ¶¼­, Á¤±Ô Ç¥Çö½Ä ¿ÜºÎ¿äû, StringReplace, InStr()

+

+ÅؽºÆ® µ¥ÀÌÅÍÀÇ ±Ù¿ø: FileRead, UrlDownloadToFile, Clipboard, GUI Edit ÄÜÆ®·Ñ

+ +

¿¹Á¦

+
NewStr := RegExReplace("abc123123", "123$", "xyz")  ; "abc123xyz"À» µ¹·ÁÁÝ´Ï´Ù. ¿Ö³ÄÇϸé $´Â ³¡¿¡¸¸ ºÎÇÕÀ» Çã¿ëÇϱâ 
+¶§¹®ÀÔ´Ï´Ù.
+NewStr := RegExReplace("abc123", "i)^ABC")  ; "123"À» µ¹·ÁÁÝ´Ï´Ù. ¿Ö³ÄÇÏ¸é ´ë¼Ò¹®ÀÚ ±¸ºÐ ¿É¼ÇÀ» ÅëÇÏ¿© ºÎÇÕ¿¡ ¼º°øÇ߱⠶§¹®ÀÔ´Ï´Ù.
+NewStr := RegExReplace("abcXYZ123", "abc(.*)123", "aaa$1zzz")  ; $1 ¿ªÂüÁ¶¸¦ »ç¿ëÇÏ¿© "aaaXYZzzz"À» µ¹·Á ÁÝ´Ï´Ù.
+NewStr := RegExReplace("abc123abc456", "abc\d+", "", ReplacementCount)  ; ""¸¦ µ¹·ÁÁÖ°í 2¸¦ ReplacementCount¿¡ ÀúÀåÇÕ´Ï´Ù.
+
+; ÀϹÝÀûÀÎ RegEx ¿¹Á¦´Â RegEx °£Æí ÂüÁ¶¼­¸¦ Àϵ¶ ÇϽʽÿÀ.
+ + + diff --git a/src/docs/commands/RegRead.htm b/src/docs/commands/RegRead.htm new file mode 100644 index 0000000..d2512db --- /dev/null +++ b/src/docs/commands/RegRead.htm @@ -0,0 +1,99 @@ + + + + +RegRead + + + + + + + +

RegRead

+ +

·¹Áö½ºÆ®¸®·ÎºÎÅÍ °ªÀ» ÀнÀ´Ï´Ù.

+ +
RegRead, OutputVar, RootKey\SubKey [, ValueName]  ; v1.1.21+
+RegRead, OutputVar, RootKey, SubKey [, ValueName]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

¿­¶÷µÈ °ªÀ» ÀúÀåÇÒ º¯¼öÀÇ À̸§. º¯¼ö¸¦ ¿­¶÷ÇÒ ¼ö ¾øÀ¸¸é, º¯¼ö´Â ºñ¿öÁö°í ErrorLevel¿¡ 1ÀÌ ¼³Á¤µË´Ï´Ù.

+ +
RootKey
+

´ÙÀ½ HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_USER, HKEY_CLASSES_ROOT, ¶Ç´Â HKEY_CURRENT_CONFIG Áß Çϳª (¶Ç´Â HKLM¿Í °°Àº ¾àÀÚ). ¿ø°Ý ·¹Áö½ºÆ®¸®¿¡ Á¢±ÙÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ÄÄÇ»ÅÍ À̸§°ú ½ÖÁ¡À» (¶Ç´Â v1.1.21+À̸é, Á¤»ç¼±À») ¾Õ¿¡ ¹èÄ¡ÇϽʽÿÀ: \\workstation01:HKEY_LOCAL_MACHINE

+ +
SubKey
+

ÇÏÀ§Å°ÀÇ À̸§ (¿¹, Software\SomeApplication).

+ +
RootKey\SubKey [v1.1.21+]
+

RootKey ´ÙÀ½¿¡ Á¤»ç¼±ÀÌ ¿À¸é (\), RootKey¿Í SubKey´Â ÇϳªÀÇ ¸Å°³º¯¼ö·Î ÇÕº´µË´Ï´Ù.

+ +
ValueName
+

¿­¶÷µÉ °ªÀÇ À̸§. »ý·«Çϸé, SubkeyÀÇ ±âº» °ªÀÌ ¿­¶÷µË´Ï´Ù. ÀÌ °ªÀº RegEditÀÌ "(Default)"·Î º¸¿©ÁÖ´Â °ªÀÔ´Ï´Ù. ±âº» °ªÀÌ ¾ø´Ù¸é (Áï, RegEdit "value not set"À̶ó°í º¸¿©ÁÖ¸é), OutputVar´Â ºñ¿öÁö°í ErrorLevelÀº 1ÀÌ ¼³Á¤µË´Ï´Ù.

+ +
+

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ErrorLevelÀº ¹®Á¦°¡ ÀÖ¾úÀ¸¸é 1ÀÌ ¼³Á¤µÇ°í (¿¹¸¦ µé¾î Á¸ÀçÇÏÁö ¾Ê´Â °ªÀ̳ª Å°) ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

+A_LastErrorÀº ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú°¡ ÀúÀåµË´Ï´Ù.

+ +

³íÆò

+

+ÇöÀç ´ÙÀ½ÀÇ °ª À¯Çü¸¸ Áö¿øµË´Ï´Ù: REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ, REG_DWORD, ±×¸®°í REG_BINARY.

+

+REG_DWORD °ªÀº ¾ðÁ¦³ª ¾çÀÇ ½ÊÁø¼ö·Î Ç¥ÇöµË´Ï´Ù.

+

+REG_BINARY Å°¸¦ ÀÐÀ» ¶§ ±× °á°ú´Â ½ÊÀ°Áø ¹®ÀÚ·Î ±¸¼ºµÈ ¹®ÀÚ¿­ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î REG_BINARY °ªÀÌ 01,a9,ff,77ÀÌ¸é ¹®ÀÚ¿­ 01A9FF77·Î ÀÐÈü´Ï´Ù.

+

+REG_MULTI_SZ Å°¸¦ ÀÐÀ» ¶§, °¢ ±¸¼º¿ä¼Ò´Â ¶óÀÎÇÇµå ¹®ÀÚ·Î ³¡³³´Ï´Ù (`n). ±¸¼º¿ä¼Ò°¡ ¾ø´Ù¸é, OutputVar´Â ºñ¿öÁý´Ï´Ù. OutputVar·ÎºÎÅÍ °³º°ÀûÀ¸·Î ±¸¼º¿ä¼Ò¸¦ ÃßÃâÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÖ´Â ¿¹´Â FileSelectFileÀ» ÂüÁ¶ÇϽʽÿÀ.

+

+REG_BINARY °ªÀÌ 64Kº¸´Ù Å©¸é v1.1.10.01 À̻󿡼­¸¸ ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù.

+

+¿©·¯ ·¹Áö½ºÆ®¸® Å°³ª °ªÀ» ¿­¶÷ÇÏ°í ó¸®ÇÏ·Á¸é, ·¹Áö½ºÆ®¸®-ȸµ¹ÀÌÀÇ »ç¿ëÀ» °í·ÁÇØ º¸½Ê½Ã¿À.

+

+¿ø°Ý ÄÄÇ»ÅÍÀÇ ·¹Áö½ºÆ®¸®¿¡ Á¢±ÙÇÏ´Â ¹ý¿¡ °üÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â ·¹Áö½ºÆ®¸®-ȸµ¹ÀÌÀÇ ³íÆòÀ» ÂüÁ¶ÇϽʽÿÀ.

+

+32-ºñÆ® ½ºÅ©¸³Æ®¿¡¼­ 64-ºñÆ® ¼½¼ÇÀÇ ·¹Áö½ºÆ®¸®·ÎºÎÅÍ ¿£Æ®¸®¸¦ ¶Ç´Â ±× ¹Ý´ë·Î ÀÐ°í ¾²·Á¸é, SetRegView¸¦ »ç¿ëÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

RegDelete, RegWrite, Registry-loop, SetRegView, IniRead

+ +

¿¹Á¦

+
; ¿¹Á¦: ÇÁ·Î±×·¥ ÆÄÀÏ µð·ºÅ丮ÀÇ °æ·Î¸¦ ¿­¶÷ÇÕ´Ï´Ù.
+
+; ¾Æ·¡ÀÇ ÁÙÀº OS´Â 64-ºñÆ®Àε¥ ½ºÅ©¸³Æ®´Â ±×·¸Áö ¾ÊÀ» °æ¿ì,
+; 64-ºñÆ® ÇÁ·Î±×·¥ ÆÄÀÏÀÇ °æ·Î°¡ ¹ÝȯµÈ´Ù´Â °ÍÀ» È®ÀÎÇÕ´Ï´Ù.
+SetRegView 64  ; v1.1.08+ ÇÊ¿ä
+
+RegRead, OutputVar, HKEY_LOCAL_MACHINE, SOFTWARE\Microsoft\Windows\CurrentVersion, ProgramFilesDir
+MsgBox, Program files are in: %OutputVar%
+
+; ´Ù¸¥ ±¸¹® (v1.1.21+ ÇÊ¿ä):
+RegRead, OutputVar, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion, ProgramFilesDir
+MsgBox, Program files are in: %OutputVar%
+
+; ÇÁ·Î±×·¥ ÆÄÀÏ µð·ºÅ丮 °æ·Î¸¦ ¿­¶÷ÇÏ´Â ¶Ç´Ù¸¥ ¹æ¹ý:
+EnvGet OutputVar, % A_Is64bitOS ? "ProgramW6432" : "ProgramFiles"
+MsgBox, Program files are in: %OutputVar%
+
+

 

+
; ´ÙÀ½ ¿¹Á¦´Â ·¹Áö½ºÆ®¸® °ªÀÇ À¯ÇüÀ» ¿­¶÷ÇÕ´Ï´Ù (¿¹, REG_SZ ¶Ç´Â REG_DWORD).
+MsgBox % RegKeyType("HKCU", "Environment", "TEMP")
+return
+
+RegKeyType(RootKey, SubKey, ValueName)  ; ÀÌ ÇÔ¼ö´Â ÁöÁ¤µÈ °ªÀÇ À¯ÇüÀ» µ¹·ÁÁÝ´Ï´Ù.
+{
+    Loop, %RootKey%, %SubKey%
+        if (A_LoopRegName = ValueName)
+            return A_LoopRegType
+    return "Error"
+}
+ + + diff --git a/src/docs/commands/RegWrite.htm b/src/docs/commands/RegWrite.htm new file mode 100644 index 0000000..1b1272a --- /dev/null +++ b/src/docs/commands/RegWrite.htm @@ -0,0 +1,78 @@ + + + + +RegWrite + + + + + + + +

RegWrite

+ +

·¹Áö½ºÆ®¸®¿¡ °ªÀ» ¾¹´Ï´Ù.

+ +
RegWrite, ValueType, RootKey\SubKey [, ValueName, Value]  ; v1.1.21+
+RegWrite, ValueType, RootKey, SubKey [, ValueName, Value]
+

¸Å°³º¯¼ö

+
+ +
ValueType
+

¹Ýµå½Ã REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ, REG_DWORD, ¶Ç´Â REG_BINARY Áß Çϳª.

+ +
RootKey
+

¹Ýµå½Ã HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_USER, HKEY_CLASSES_ROOT, ¶Ç´Â HKEY_CURRENT_CONFIG (¶Ç´Â HKLM¿Í °°Àº ¾àÀÚ) Áß Çϳª. ¿ø°Ý ·¹Áö½ºÆ®¸®¿¡ Á¢±ÙÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¾Õ¿¡ ÄÄÇ»ÅÍ À̸§°ú ½ÖÁ¡ (¶Ç´Â v1.1.21+À̸é, Á¤»ç¼±)À» ¹èÄ¡ÇϽʽÿÀ: \\workstation01:HKEY_LOCAL_MACHINE

+ +
SubKey
+

ÇÏÀ§Å°ÀÇ À̸§ (¿¹, Software\SomeApplication). SubKey°¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, (ÇÊ¿äÇÏ¸é ±×ÀÇ Á¶»óµµ ÇÔ²²) »ý¼ºµË´Ï´Ù. SubKey°¡ ºñ¾î ÀÖÀ¸¸é, °ªÀº Á÷Á¢ÀûÀ¸·Î RootKey¿¡ ¾º¿©Áý´Ï´Ù (±×·¸Áö¸¸ ¾î¶² ¿î¿µ üÁ¦´Â HKEY_CURRENT_USERÀÌ ÃÖ»óÀ§ ·¹º§¿¡ ¾²´Â °ÍÀ» °ÅºÎÇÒ ¼öµµ ÀÖ½À´Ï´Ù).

+ +
RootKey\SubKey [v1.1.21+]
+

RootKey ´ÙÀ½¿¡ ¹Ù·Î Á¤»ç¼± (\)ÀÌ µû¶ó¿À¸é, RootKey ¿Í SubKey´Â ÇϳªÀÇ ¸Å°³º¯¼ö·Î ÇÕº´µË´Ï´Ù.

+ +
ValueName
+

¾º¿©Áú °ªÀÇ À̸§. ºñ¾î Àְųª »ý·«Çϸé, SubkeyÀÇ ±âº»°ªÀÌ »ç¿ëµË´Ï´Ù. ±âº» °ªÀº RegEdit°¡ "(Default)"·Î º¸¿©ÁÖ´Â °ªÀÔ´Ï´Ù.

+ +
Value
+

¾º¿©Áú °ª. »ý·«Çϸé, ValueType¿¡ µû¶ó ºó ¹®ÀÚ¿­ ¶Ç´Â 0ÀÌ ±âº»°ªÀÔ´Ï´Ù. ÅؽºÆ®°¡ ±æ¸é, °è¼Ó ¼½¼ÇÀ» ¼ö´ÜÀ¸·Î ªÀº ÁÙ·Î °¡¸¦ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é °¡µ¶¼º°ú À¯Áö°ü¸®¼ºÀÌ Çâ»óµË´Ï´Ù.

+ +
+

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ¿¹¿Ü½Ã ¿¡·¯¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ErrorLevelÀº ¹®Á¦°¡ ÀÖ¾úÀ¸¸é 1ÀÌ ¼³Á¤µÇ°í ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

+A_LastErrorÀº ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú°¡ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+ValueTypeÀÌ REG_DWORDÀ̸é, Value´Â -2147483648¿Í 4294967295 (0xFFFFFFFF) »çÀÌÀÇ °ªÀ̾î¾ß ÇÕ´Ï´Ù.

+

+REG_BINARY Å°¸¦ ¾µ ¶§, ½ÊÀ°Áø ¹®ÀÚ·Î ±¸¼ºµÈ ¹®ÀÚ¿­À» »ç¿ëÇϽʽÿÀ. ¿¹¸¦ µé¾î REG_BINARY °ªÀÌ 01,a9,ff,77 ÀÌ¸é ¹®ÀÚ¿­ 01A9FF77À» »ç¿ëÇØ ¾µ ¼ö ÀÖ½À´Ï´Ù.

+

+REG_MULTI_SZ Å°¸¦ ¾µ ¶§, °¢ ±¸¼º¿ä¼Ò¸¦ ´ÙÀ½ ±¸¼º¿ä¼Ò¿Í ¶óÀÎÇÇµå ¹®ÀÚ·Î °¥¶ó¾ß ÇÕ´Ï´Ù (`n). ¸¶Áö¸· ±¸¼º¿ä¼Ò´Â ¼±ÅÃÀûÀ¸·Î ¶óÀÎÇǵå·Î ³¡³ªµµ µË´Ï´Ù. ºó ±¸¼º¿ä¼Ò´Â Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù. ´Ù¸¥ ¸»·Î, µÎ °³ÀÇ ¶óÀÎÇǵ带 ÇÑ ÁÙ¿¡ ÁöÁ¤ÇÏÁö ¸¶½Ê½Ã¿À (`n`n). ¿Ö³ÄÇÏ¸é ±×·¸°Ô ÇÏ¸é ¿¹»óº¸´Ù ´õ ªÀº °ªÀÌ ·¹Áö½ºÆ®¸®¿¡ ¾º¿©Áö±â ¶§¹®ÀÔ´Ï´Ù.

+

+REG_BINARY¿Í REG_MULTI_SZ °ªÀÌ 64Kº¸´Ù Å©¸é v1.1.10.01 ÀÌÈÄ¿¡¼­¸¸ Áö¿øÇÕ´Ï´Ù. ¿¹Àü ¹öÀü¿¡¼­´Â 64K±îÁö ¸¸ ³²±â°í Àß¶ó³» ¹ö¸³´Ï´Ù.

+

+¿©·¯ ·¹Áö½ºÆ®¸®³ª Å°¸¦ ¿­¶÷ÇÏ°í ó¸®ÇÏ·Á¸é, ·¹Áö½ºÆ®¸®-ȸµ¹ÀÌÀÇ »ç¿ëÀ» °í·ÁÇØ º¸½Ê½Ã¿À.

+

+¿ø°Ý ÄÄÇ»ÅÍÀÇ ·¹Áö½ºÆ®¸®¿¡ Á¢±ÙÇÏ´Â ¹ý¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ·¹Áö½ºÆ®¸®-ȸµ¹ÀÌÀÇ ³íÆòÀ» ÂüÁ¶ÇϽʽÿÀ.

+

+32-ºñÆ® ½ºÅ©¸³Æ®¿¡¼­ 64ºñÆ®- ¼½¼ÇÀÇ ·¹Áö½ºÆ®¸®¸¦ ¶Ç´Â ±× ¹Ý´ë·Î ÀÐ°í ¾²·Á¸é, SetRegView¸¦ »ç¿ëÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

RegDelete, RegRead, Registry-loop, SetRegView, IniWrite

+ +

¿¹Á¦

+
RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\TestKey, MyValueName, Test Value
+RegWrite, REG_BINARY, HKEY_CURRENT_USER, Software\TEST_APP, TEST_NAME, 01A9FF77
+RegWrite, REG_MULTI_SZ, HKEY_CURRENT_USER, Software\TEST_APP, TEST_NAME, Line1`nLine2
+
+; ¶Ç´Ù¸¥ ±¸¹® (v1.1.21+ ÇÊ¿ä):
+RegWrite, REG_SZ, HKEY_LOCAL_MACHINE\SOFTWARE\TestKey, MyValueName, Test Value
+RegWrite, REG_BINARY, HKEY_CURRENT_USER\Software\TEST_APP, TEST_NAME, 01A9FF77
+RegWrite, REG_MULTI_SZ, HKEY_CURRENT_USER\Software\TEST_APP, TEST_NAME, Line1`nLine2
+ + + diff --git a/src/docs/commands/RegisterCallback.htm b/src/docs/commands/RegisterCallback.htm new file mode 100644 index 0000000..4f70cb4 --- /dev/null +++ b/src/docs/commands/RegisterCallback.htm @@ -0,0 +1,181 @@ + + + + +RegisterCallback + + + + + + + +

RegisterCallback() [v1.0.47+]

+ +

¸Ó½Å-ÄÚµå ÁÖ¼Ò¸¦ »ý¼ºÇÕ´Ï´Ù. ÀÌ ÁּҴ ȣÃâµÉ ¶§, ½ºÅ©¸³Æ®ÀÇ ÇÔ¼ö·Î ¹æÇâÀüȯ ÇÕ´Ï´Ù.

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

¸Å°³º¯¼ö

+
+ +
Address
+

¼º°øÇϸé, RegisterCallback()Àº ¼ýÄ¡ Áַθ¦ µ¹·ÁÁÝ´Ï´Ù. ÀÌ ÁÖ¼Ò¸¦ DllCall() ¶Ç´Â ±âŸ ¸Ó½Å-ÄÚµå ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ´Â ´Ù¸¥ ÇÔ¼ö°¡ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ½ÇÆÐÇϸé, ºó ¹®ÀÚ¿­À» µ¹·ÁÁÝ´Ï´Ù. ½ÇÆа¡ ÀϾ´Â °æ¿ì´Â FunctionNameÀÌ: +

    +
  1. Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì; +
  2. ParamCount º¸´Ù ³Ê¹« ¸¹°Å³ª ³Ê¹« Àû°Ô ¸Å°³º¯¼ö¸¦ ¹ÞÀº °æ¿ì; +
  3. ¶Ç´Â ByRef ¸Å°³º¯¼ö¸¦ ¹ÞÀº °æ¿ìÀÔ´Ï´Ù. +
+

+ +
FunctionName
+
+

ÇÔ¼öÀÇ À̸§ÀÔ´Ï´Ù. ±âÈ£ ±×´ë·ÎÀÇ ¹®ÀÚ¿­ÀÏ °æ¿ì ¹Ýµå½Ã µû¿ÈÇ¥·Î µÑ·¯ ½Î¾ß ÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö´Â Address°¡ È£ÃâµÉ ¶§¸¶´Ù ÀÚµ¿À¸·Î È£ÃâµË´Ï´Ù. ÇÔ¼ö´Â ¶Ç Address¿¡ °Ç³×¾îÁø ¸Å°³º¯¼öµéµµ ¹Þ½À´Ï´Ù.

+

[v1.1.06+]: ÇÔ¼ö À̸§ ´ë½Å¿¡ ÇÔ¼ö ÂüÁ¶¸¦ °Ç³Ú ¼ö ÀÖ½À´Ï´Ù.

+
+ +
Options
+

0°³ ÀÌ»óÀÇ ´ÙÀ½ ´Ü¾îµéÀ» ÁöÁ¤ÇÕ´Ï´Ù. °¢ ¿É¼ÇÀº ´ÙÀ½ ¿É¼Ç°ú ½ºÆäÀ̽º·Î ±¸ºÐÇϽʽÿÀ (¿¹, C Fast).

+

Fast ¶Ç´Â F: FunctionNameÀÌ È£ÃâµÉ ¶§¸¶´Ù »õ ¾²·¹µå°¡ ½ÃÀÛÇÏ´Â °ÍÀ» ÇÇÇÕ´Ï´Ù. ºñ·Ï ¼öÇ༺´ÉÀº ÁÁ¾ÆÁöÁö¸¸, Address·Î È£ÃâµÇ´Â ¾²·¹µå°¡ ´Þ¶óÁú °æ¿ì´Â (¿¹, µé¾î¿À´Â ¸Þ½ÃÁö¿¡ ÀÇÇÏ¿© ¿ªÈ£ÃâÀÌ ÃË¹ßµÉ ¶§´Â) ÇÇÇØ¾ß ÇÕ´Ï´Ù. ¿Ö³ÄÇϸé È£ÃâµÇ´Â ¼ø°£¿¡ ¾²·¹µå°¡ ½ÇÇàµÇ´Â °æ¿ì FunctionNameÀÌ ErrorLevel, A_LastError, ±×¸®°í ¸¶Áö¸·À¸·Î-¹ß°ßµÈ â°ú °°ÀÌ Àü¿ª ¼³Á¤À» ¹Ù²Ù¾î ¹ö¸± À§ÇèÀÌ Àֱ⠶§¹®ÀÔ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ³íÆòÀ» º¸½Ê½Ã¿À.

+

CDecl ¶Ç´Â C: Address°¡ "C" È£Ãâ °ü·Ê¸¦ µû¸£µµ·Ï ¸¸µì´Ï´Ù. ÀÌ´Â ÀüÇüÀûÀ¸·Î »ý·«µË´Ï´Ù. ¿Ö³ÄÇϸé Ç¥ÁØ È£Ãâ °ü·Ê°¡ ÈξÀ ´õ ¸¹ÀÌ ¿ªÈ£Ãâ¿¡ »ç¿ëµÇ±â ¶§¹®ÀÔ´Ï´Ù.

+ +
ParamCount
+

¸Å°³º¯¼öÀÇ °³¼öÀÔ´Ï´Ù. AddressÀÇ È£ÃâÀÚ°¡ °Ç³Ü´Ï´Ù. ÀüºÎ »ý·«Çϸé, ±âº»°ªÀº FunctionName¿¡ Á¤ÀÇµÈ Çʼö ¸Å°³º¯¼öÀÇ °³¼öÀÔ´Ï´Ù. ¾î´À °æ¿ìµç, È£ÃâÀÚ°¡ Á¤È®ÇÏ°Ô ÀÌ °³¼öÀÇ ¸Å°³º¯¼ö¸¦ °Ç³×´ÂÁö È®ÀÎÇϽʽÿÀ.

+ +
EventInfo
+
+

FunctionNameÀÌ Address¸¦ ÅëÇÏ¿© È£ÃâµÉ ¶§¸¶´Ù A_EventInfo¿¡¼­ º¸°ÔµÉ Á¤¼öÀÔ´Ï´Ù. FunctionNameÀÌ Çϳª ÀÌ»óÀÇ Address·Î È£ÃâµÉ ¶§ À¯¿ëÇÕ´Ï´Ù. »ý·«µÇ¸é, ±âº»°ªÀº AddressÀÔ´Ï´Ù. ÁÖÀÇ: ´Ù¸¥ Àü¿ª ¼³Á¤°ú ´Ù¸£°Ô, ÇöÀç ¾²·¹µåÀÇ A_EventInfo´Â ºü¸¥ ¸ðµå¿¡ ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù.

+

+ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ´Â ÆÄÀÏÀÌ 32-ºñÆ®À̸é, ÀÌ ¸Å°³º¯¼ö´Â 0ºÎÅÍ 4294967295 »çÀÌÀÇ °ªÀÔ´Ï´Ù. 64ºñÆ®À̸é, ÀÌ ¸Å°³º¯¼ö´Â 64-ºñÆ® Á¤¼öÀÔ´Ï´Ù. A_EventInfo´Â º¸Åë ºÎÈ£¾ø´Â Á¤¼ö¸¦ µ¹·ÁÁÖÁö¸¸, ¿ÀÅäÇÖÅ°´Â ºÎÈ£¾ø´Â 64-ºñÆ® Á¤¼ö¸¦ ¿Ïº®ÇÏ°Ô Áö¿øÇÏÁö ¸øÇÕ´Ï´Ù. ±×·¡¼­ ¾î¶² ¿¬»êÀº ±× °ªÀ» ºÎÈ£ÀÖ´Â Á¤¼ö¿¡ ½Î¼­ µ¹·ÁÁֱ⵵ ÇÕ´Ï´Ù.

+ +
+ +

¿ªÈ£Ãâ ÇÔ¼öÀÇ ¸Å°³º¯¼ö

+

+¿ªÈ£Ãâ ÁÖ¼Ò¿¡ ÇÒ´çµÈ ÇÔ¼ö´Â ¸Å°³º¯¼ö¸¦ 31°³±îÁö ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. ¼±ÅÃÀû ¸Å°³º¯¼ö¸¦ Çã¿ëÇÕ´Ï´Ù. ÀÌ´Â ÇÔ¼ö°¡ ¿©·¯ È£ÃâÀÚ¿¡°Ô È£ÃâµÉ ¶§ À¯¿ëÇÕ´Ï´Ù.

+

+¸Å°³º¯¼ö¸¦ ¿Ã¹Ù¸£°Ô ¹ø¿ªÇÏ·Á¸é x86 È£Ãâ °ü·ÊÀÇ ÀÛµ¿ ¹æ½ÄÀ» ÀÌÇØÇØ¾ß ÇÕ´Ï´Ù. ¿ÀÅäÇÖÅ°´Â ¸Å°³º¯¼ö°¡ À¯ÇüÀÌ Á¤ÀǵÇÁö ¾ÊÀ¸¹Ç·Î, ¿ªÈ£Ãâ ÇÔ¼öÀÇ ¸Å°³º¯¼ö ¸®½ºÆ®´Â Á¤¼ö·Î ±¸¼ºµÇ¾î ÀÖ´Ù°í °£Áֵ˴ϴÙ. ±×¸®°í ¾à°£ÀÇ Àç¹ø¿ªÀÌ ¿ä±¸µË´Ï´Ù.

+ +

AutoHotkey 32-bit: µé¾î¿À´Â ¸ðµç ¸Å°³º¯¼ö´Â 32-ºñÆ® Á¤¼öÀÔ´Ï´Ù. ´õ ÀÛÀº À¯ÇüÀº 32ºñÆ®¿¡ ¸Â°Ô Æе带 µ¡´ð´Ï´Ù. ¹Ý¸é¿¡ ´õ Å« À¯ÇüÀº µÎ °³ÀÇ 32 ºñÆ® ¸Å°³º¯¼ö·Î ÂÉ°³¾îÁý´Ï´Ù.

+

+µé¾î¿À´Â ¸Å°³º¯¼ö°¡ ºÎÈ£ÀÖ´Â Á¤¼ö¸¦ ÀǵµÇϸé, À½ÀÇ Á¤¼ö´Â ´ÙÀ½ ¿¹Á¦ Áß Çϳª·Î ³ëÃâ½Ãų ¼ö ÀÖ½À´Ï´Ù:

+
; ¹æ¹ý #1
+if wParam > 0x7FFFFFFF
+    wParam := -(~wParam) - 1
+
+; ¹æ¹ý #2: ¿ÀÅäÇÖÅ°°¡ ±Ùº»ÀûÀ¸·Î ºÎÈ£ ÀÖ´Â 64-ºñÆ® Á¤¼ö¸¦ »ç¿ëÇÑ´Ù´Â »ç½Ç¿¡ ÀÇÁ¸ÇÕ´Ï´Ù.
+wParam := wParam << 32 >> 32
+ +

AutoHotkey 64-bit: µé¾î¿À´Â ¸ðµç ¸Å°³º¯¼ö´Â ºÎÈ£ÀÖ´Â 64-ºñÆ® Á¤¼öÀÔ´Ï´Ù. ¿ÀÅäÇÖÅ°´Â ºÎÈ£¾ø´Â 64-ºñÆ® Á¤¼ö¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ´õ ÀÛÀ¸¸é 64 ºñÆ®±îÁö Æе尡 µ¡´ë¾îÁö°í, ´õ Å©¸é ¾ðÁ¦³ª ÁÖ¼Ò·Î °Ç³×Áý´Ï´Ù.

+ +

AutoHotkey 32-bit/64-bit: µé¾î¿À´Â ¸Å°³º¯¼ö°¡ 8-ºñÆ® ¶Ç´Â 16-ºñÆ®¸¦ ÀǵµÇÑ´Ù¸é (¶Ç x64 ¸Ó½Å¿¡¼­´Â 32-ºñÆ® ), °ªÀÇ »óÀ§ ºñÆ®µéÀº "¾²·¹±â"·Î ä¿öÁý´Ï´Ù. ÀÌ ¾²·¹±âµéÀº ºñÆ®º°-and ¿¬»êÀ¸·Î ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¿©°úÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
Callback(UCharParam, UShortParam, UIntParam) {
+    UCharParam &= 0xFF
+    UShortParam &= 0xFFFF
+    UIntParam &= 0xFFFFFFFF
+    ;...
+}
+

+µé¾î¿À´Â ¸Å°³º¯¼ö°¡ ±×ÀÇ È£ÃâÀÚ¿¡°Ô ¹®ÀÚ¿­À̱⸦ ÀǵµÇÑ´Ù¸é, ½ÇÁ¦·Î ¹Þ´Â °ÍÀº ±× ¹®ÀÚ¿­ÀÇ ÁÖ¼ÒÀÔ´Ï´Ù. ¹®ÀÚ¿­ ÀÚü¸¦ ¹ÞÀ¸·Á¸é StrGetÀ» »ç¿ëÇϽʽÿÀ:

+
MyString := StrGet(MyParameter)  ; AHK_L 46+
+

+µé¾î¿À´Â ¸Å°³º¯¼ö°¡ ±¸Á¶Ã¼ÀÇ ÁÖ¼ÒÀ̸é, °¢ ¸â¹öµéÀº ´ÙÀ½ DllCall ±¸Á¶ÀÇ ´Ü°è¸¦ µû¶ó ÃßÃâÇÕ´Ï´Ù.

+ +

ÁÖ¼Ò·Î ¸Å°³º¯¼ö ¹Þ±â [AHK_L 60+]: ÇÔ¼ö°¡ °¡º¯ÇÔ¼ö·Î ¼±¾ðµÇ¾î ÀÖÀ¸¸é, ±×ÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö´Â ¿ªÈ£Ãâ ÇÔ¼öÀÇ Ã¹ ¸Å°³º¯¼ö ÁÖ¼Ò¿¡ ÇÒ´çµË´Ï´Ù. ½ºÅ©¸³Æ® ¸Å°³º¯¼ö¿¡ ÇÒ´çµÇÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
+callback := RegisterCallback("TheFunc", "F", 1)  ; ¸Å°³º¯¼ö °³¼ö¸¦ ¸í½ÃÇØ¾ß ÇÕ´Ï´Ù.
+TheFunc("TheFunc was called directly.")          ; Á÷Á¢ TheFunc¸¦ È£ÃâÇÕ´Ï´Ù.
+DllCall(callback, float, 10.5, int64, 42)        ; ¿ªÈ£ÃâÀ» ÅëÇÏ¿© TheFunc¸¦ È£ÃâÇÕ´Ï´Ù.
+TheFunc(params*) {
+    if IsObject(params)
+        MsgBox % params[1]
+    else
+        MsgBox % NumGet(params+0, "float") ", " NumGet(params+A_PtrSize, "int64")
+}
+

+´ëºÎºÐÀÇ ¿ªÈ£ÃâÇÔ¼ö´Â stdcall È£Ãâ °ü·Ê¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ °ü·Ê´Â °íÁ¤µÈ °³¼öÀÇ ¸Å°³º¯¼ö¸¦ ¿ä±¸ÇÕ´Ï´Ù. ±×·¯¹Ç·Î, ¿ªÈ£ÃâÀÌ »ý¼ºµÉ ¶§ ParamCount¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. 64-ºñÆ® ºôµå¿¡¼­´Â ParamCount¸¦ »ý·«ÇÒ ¼ö ÀÖ°í 32-ºñÆ® ºôµå´Â Cdecl ¿ªÈ£ÃâÀ» »ç¿ëÇÕ´Ï´Ù - ±×·± °æ¿ì ¸ðµç ¼±ÅÃÀûÀÎ ¸Å°³º¯¼ö´Â ±âº» °ªÀ» ¹Þ°í params¿¡ ÀúÀåÇϱâ À§ÇØ ÁÖ¼Ò¸¦ °è»êÇϱâ À§ÇÑ ¸ñÀûÀ¸·Î´Â ¹«½ÃµË´Ï´Ù.

+ +

ÇÔ¼ö´Â ¹«¾ùÀ» µ¹·ÁÁÖ¾î¾ß Çϴ°¡(Return)

+

+ÇÔ¼ö°¡ ¸Å°³º¯¼ö ¾øÀÌ ReturnÀ» »ç¿ëÇϰųª, ""¿Í °°ÀÌ ºó °ªÀ» ÁöÁ¤Çϸé (¶Ç´Â ÀüÇô ReturnÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¸é), 0ÀÌ ¿ªÈ£ÃâÀÇ È£ÃâÀÚ¿¡°Ô ¹ÝȯµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ÇÔ¼ö´Â Á¤¼ö¸¦ ¹ÝȯÇØ¾ß ÇÕ´Ï´Ù. ÀÌ °ªÀº ±×·¯¸é È£ÃâÀÚ¿¡°Ô ¹ÝȯµË´Ï´Ù. ¿ÀÅäÇÖÅ° 32-ºñÆ®´Â ¹Ýȯ °ªÀ» 32-ºñÆ®·Î À߶ó³À´Ï´Ù. ¹Ý¸é¿¡ ¿ÀÅäÇÖÅ° 64-ºñÆ®´Â 64-ºñÆ® ¹Ýȯ°ªÀ» Áö¿øÇÕ´Ï´Ù. ÀÌ º¸´Ù Å« °ªÀ» (°ªÀ¸·Î) ¹ÝȯÇÏ´Â °ÍÀº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.

+ +

ºü¸£°Ô vs. ´À¸®°Ô

+

+±âº»/´À¸®°Ô ¸ðµå¿¡¼­ ÇÔ¼ö´Â SendMode ±×¸®°í DetectHiddenWindows¿Í °°Àº ¼³Á¤¿¡ ´ëÇÏ¿© ±âº» °ªÀ¸·Î »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ±âº»°ªµéÀº ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡¼­ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù .

+

+´ëÁ¶ÀûÀ¸·Î, ºü¸¥ ¸ðµå´Â ÇÔ¼ö°¡ È£ÃâµÇ´Â ¼ø°£¿¡ ¿ì¿¬ÇÏ°Ô ½ÇÇàÁßÀÎ ¾²·¹µå·ÎºÎÅÍ Àü¿ª ¼³Á¤À» ¹°·Á¹Þ½À´Ï´Ù. °Ô´Ù°¡, ÇÔ¼ö°¡ Àü¿ª ¼³Á¤¿¡ °¡ÇÏ´Â ¸ðµç º¯°æÀº (ErrorLevel ±×¸®°í ¸¶Áö¸·À¸·Î-¹ß°ßµÈ âÀ» Æ÷ÇÔÇÏ¿©) ÇöÀç ¾²·¹µå ¾ÈÀ¸·Î ¿µÇâÀ» ÁÝ´Ï´Ù. °á°úÀûÀ¸·Î, ºü¸¥ ¸ðµå´Â Á¤È®ÇÏ°Ô ¾î´À ¾²·¹µå·ÎºÎÅÍ ÇÔ¼ö°¡ È£ÃâµÇ´ÂÁö ¾Ë °æ¿ì¿¡¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

+

+ÀÚ±â ÀڽŠ(¶Ç´Â ´Ù¸¥ ¾²·¹µå)·ÎºÎÅÍ ÀÎÅÍ·´Æ®µÇÁö ¾ÊÀ¸·Á¸é, ¿ªÈ£ÃâÇÔ¼ö´Â ÀÚ½ÅÀÇ Ã¹ ÁÙ¿¡ ÀÓ°è°ª(Critical)À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ±×·¸Áö¸¸, ÀÌ°ÍÀÌ ¿ÏÀüÇÏ°Ô È¿°ú°¡ ÀÖ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ÇÔ¼ö°¡ 0x312 º¸´Ù ÀÛÀº ¸Þ½ÃÁöÀÇ µµÂøÀ» ÅëÇÏ¿© °£Á¢ÀûÀ¸·Î È£ÃâµÉ ¶§´Â È¿·ÂÀ» ¹ÌÄ¡Áö ¸øÇÕ´Ï´Ù (CriticalÀÇ °£°ÝÀ» Áõ°¡½ÃÅ°¸é µµ¿òÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù). + +°Ô´Ù°¡, ÀÓ°è°ª(Critical)À¸·Î´Â ÇÔ¼ö°¡ °£Á¢ÀûÀ¸·Î ÀÚ½ÅÀ» È£ÃâÇÏ´Â °á°ú°¡ µÇ´Â °ÍÀ» ¸·Áö ¸øÇÕ´Ï´Ù. ¿¹¸¦ µé¾î SendMessageÀ̳ª DllCall¸¦ È£ÃâÇÏ´Â °ÍÀ» ¸·À» ¼ö ¾ø½À´Ï´Ù.

+ +

¸Þ¸ð¸®

+

+RegisterCallback()À» »ç¿ëÇÒ ¶§¸¶´Ù ÀÛÀº ¸Þ¸ð¸®°¡ ÇÒ´çµË´Ï´Ù (32 ¹ÙÀÌÆ®¿¡´Ù ¾à°£ÀÇ ½Ã½ºÅÛ ¿À¹öÇìµå). OS´Â ½ºÅ©¸³Æ®°¡ Á¾·áÇÒ ¶§ ÀÌ ¸Þ¸ð¸®¸¦ ÀÚµ¿À¸·Î ÇØÁ¦Çϱ⠶§¹®¿¡ , ½ºÅ©¸³Æ®°¡ ÀÛÀº, °íÁ¤ °³¼öÀÇ ¿ªÈ£ÃâÀ» µî·ÏÇÑ´Ù¸é ¸í½ÃÀûÀ¸·Î ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, ½ºÅ©¸³Æ®°¡ RegisterCallback()À» ¹«Á¦ÇÑ/³¡¾øÀÌ È£ÃâÇÑ´Ù¸é ¸í½ÃÀûÀ¸·Î ´ÙÀ½°ú °°ÀÌ »ç¿ëµÇÁö ¾Ê´Â ¿ªÈ£Ãâ ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÕ´Ï´Ù:

+
DllCall("GlobalFree", "Ptr", Address, "Ptr")
+ +

°ü·Ã Ç׸ñ

+

DllCall(), OnMessage(), OnExit, OnClipboardChange, SortÀÇ ¿ªÈ£Ãâ, Critical, Post/SendMessage, ÇÔ¼ö, À©µµ¿ìÁî ¸Þ½ÃÁö ¸®½ºÆ®, ¾²·¹µå

+ +

¿¹Á¦

+
; ¿¹Á¦: ´ÙÀ½ ¿¹Á¦´Â ÀÛµ¿ÇÏ´Â ½ºÅ©¸³Æ®·Î¼­ ¸ðµç ÃÖ»óÀ§ âÀÇ Á¤º¸¸¦ ¿ä¾àÇØ º¸¿©ÁÝ´Ï´Ù.
+
+; ¼öÇ༺´É°ú ¸Þ¸ð¸® º¸ÀüÀ» À§ÇØ, ÁÖ¾îÁø ¿ªÈ£Ãâ¿¡ ´ëÇؼ­ RegisterCallback()À» ÇÑ ¹ø¸¸ È£ÃâÇÕ´Ï´Ù:
+if not EnumAddress  ; ºü¸¥-¸ðµå´Â ÀÌ ¾²·¹µå¿¡¼­¸¸ È£ÃâµÇ±â ¶§¹®¿¡ ±¦Âú½À´Ï´Ù:
+    EnumAddress := RegisterCallback("EnumWindowsProc", "Fast")
+
+DetectHiddenWindows On  ; ºü¸¥ ¸ðµå ¶§¹®¿¡, ÀÌ ¼³Á¤Àº ¿ªÈ£Ãâ¿¡°Ôµµ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.
+
+; Á¦¾î¸¦ EnumWindows()¿¡°Ô °Ç³Ü´Ï´Ù. ÀÌ ÇÔ¼ö´Â ¹Ýº¹ÀûÀ¸·Î ¿ªÈ£ÃâÀ» È£ÃâÇÕ´Ï´Ù:
+DllCall("EnumWindows", Ptr, EnumAddress, Ptr, 0)
+MsgBox %Output%  ; ¿ªÈ£ÃâÀÌ ÃàÀûÇÑ Á¤º¸¸¦ º¸¿©ÁÝ´Ï´Ù.
+    
+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  ;  EnumWindows()¿¡°Ô ¸ðµç âÀÌ ¿­°ÅµÉ ¶§±îÁö °è¼ÓÇ϶ó°í ¸í·ÉÇÕ´Ï´Ù.
+}
+

 

+
; ¿¹Á¦: ´ÙÀ½ ÀÛµ¿ÇÏ´Â ½ºÅ©¸³Æ®·Î¼­ GUI âÀ» »ó¼Ó¹Þ´Â ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.
+; ±×ÀÇWindowProcÀ» ½ºÅ©¸³Æ®ÀÇ »õ WindowProcÀ¸·Î ¹æÇâ ÀüȯÇÕ´Ï´Ù. 
+; ÀÌ °æ¿ì, ÅؽºÆ® ÄÜÆ®·ÑÀÇ ¹è°æ»öÀº ¸ÂÃã »öÀ¸·Î ¹Ù²ò´Ï´Ù.
+
+TextBackgroundColor := 0xFFBBBB  ; BGR Æ÷¸ËÀÇ ¸ÂÃã »ö.
+TextBackgroundBrush := DllCall("CreateSolidBrush", UInt, TextBackgroundColor)
+
+Gui, Add, Text, HwndMyTextHwnd, Here is some text that is given`na custom background color.
+Gui +LastFound
+GuiHwnd := WinExist()
+
+; 64-ºñÆ® ½ºÅ©¸³Æ®´Â SetWindowLong ´ë½Å¿¡ SetWindowLongPtr¸¦ È£ÃâÇØ¾ß ÇÕ´Ï´Ù:
+SetWindowLong := A_PtrSize=8 ? "SetWindowLongPtr" : "SetWindowLong"
+
+WindowProcNew := RegisterCallback("WindowProc", ""  ; ""¸¦ ÁöÁ¤ÇÏ¿© »ó¼ÓÀ» ¹Þ´Âµ¥ ºü¸¥-¸ðµå¸¦ ȸÇÇÇÕ´Ï´Ù.
+    , 4, MyTextHwnd)  ; EventInfo ¸Å°³º¯¼ö°¡ Á¸ÀçÇϸé Á¤È®ÇÏ°Ô ParamCount¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù.
+WindowProcOld := DllCall(SetWindowLong, Ptr, GuiHwnd, Int, -4  ; -4 is GWL_WNDPROC
+    , Ptr, WindowProcNew, Ptr) ; ¹Ýȯ°ªÀº  Ptr ¶Ç´Â UPtr 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", Ptr, wParam, UInt, TextBackgroundColor)
+        return TextBackgroundBrush  ; HBRUSHÀ» µ¹·ÁÁÖ¾î OS¿¡°Ô HDC¸¦ º¯°æÇß´Ù°í ¾Ë¸³´Ï´Ù.
+    }
+    ; ±×·¸Áö ¾ÊÀ¸¸é (À§°¡ ¹ÝȯµÇÁö ¾Ê¾Ò±â ¶§¹®¿¡), 󸮵ÇÁö ¾ÊÀº ¸ðµç À̺¥Æ®¸¦ ¿ø·¡ÀÇ WindowProc¿¡ °Ç³Ü´Ï´Ù.
+    return DllCall("CallWindowProc", Ptr, WindowProcOld, Ptr, hwnd, UInt, uMsg, Ptr, wParam, Ptr, lParam)
+}
+
+GuiClose:
+ExitApp
+ + + diff --git a/src/docs/commands/Reload.htm b/src/docs/commands/Reload.htm new file mode 100644 index 0000000..fe2790d --- /dev/null +++ b/src/docs/commands/Reload.htm @@ -0,0 +1,39 @@ + + + + +Reload + + + + + + + +

Reload

+ +

½ºÅ©¸³Æ®ÀÇ ÇöÀç ½ÇÇà ÁßÀÎ ½Çü¸¦ »õ ½Çü·Î ±³Ã¼ÇÕ´Ï´Ù.

+ +
Reload
+

+ÀÌ ¸í·É¾î´Â ÀÚÁÖ º¯°æµÇ´Â ½ºÅ©¸³Æ®¿¡ À¯¿ëÇÕ´Ï´Ù. ÇÖÅ°¸¦ ÀÌ ¸í·É¾î¿¡ ÇÒ´çÇϸé, º¯°æÀ» ÆíÁý±â¿¡ ÀúÀåÇÑ ÈÄ¿¡ ½±°Ô ½ºÅ©¸³Æ®¸¦ Àç½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+¿ø·¡ ½ºÅ©¸³Æ®¿¡ °Ç³×Áö´Â ¸í·É¾î-ÁÙ ¸Å°³º¯¼ö´Â ¸ðµÎ »õ ½Çü·Î °Ç³×ÁöÁö ¾Ê½À´Ï´Ù. ±×·± ¸Å°³º¯¼ö¸¦ Àü´ÞÇÏ·Á¸é, Reload¸¦ »ç¿ëÇÏÁö ¸¶½Ê½Ã¿À. ´ë½Å¿¡, A_AhkPath ±×¸®°í A_ScriptFullPath¿Í ÇÔ²² RunÀ» »ç¿ëÇϽʽÿÀ (±×¸®°í ½ºÅ©¸³Æ®°¡ ÄÄÆÄÀÏµÈ ÇüÅ·Π»ç¿ëµÇ¾ú´Ù¸é A_IsCompiled¿Í ÇÔ²² »ç¿ëÇϽʽÿÀ). ¶Ç, ¹®ÀÚ¿­ /restart¸¦ ù ¸Å°³º¯¼ö·Î (Áï, ½ÇÇàÆÄÀÏÀÇ À̸§ µÚ¿¡) Æ÷ÇÔÇϽʽÿÀ. ±×·¯¸é ÇÁ·Î±×·¥Àº Reload¿Í °°Àº ÇàÀ§¸¦ »ç¿ëÇÕ´Ï´Ù. ´ÙÀ½µµ ÂüÁ¶ÇϽʽÿÀ: ¸í·É¾î ÁÙ ½ºÀ§Ä¡¿Í ±¸¹®.

+

+½ºÅ©¸³Æ®°¡ ½ÃÀÛÇÒ ¶§, ±×ÀÇ ¿ø·¡ ÀÛ¾÷ µð·ºÅ丮¿¡¼­ (óÀ½ ±âµ¿µÉ ¶§ Àû¿ëµÇ¾ú´ø µð·ºÅ丮¿¡¼­) ±âµ¿ÇÕ´Ï´Ù. ´Ù¸¥ ¸»·Î, SetWorkingDir´Â »õ ½Çü¿¡ »ç¿ëµÉ ÀÛ¾÷ µð·ºÅ丮¸¦ ¹Ù²ÙÁö ¾Ê½À´Ï´Ù.

+

+½ºÅ©¸³Æ®¸¦ ÀçÀûÀç ÇÒ ¼ö ¾øÀ¸¸é -- ¾Æ¸¶µµ ±¸¹® ¿¡·¯°¡ Àֱ⠶§¹®¿¡ -- ½ºÅ©¸³Æ®ÀÇ ¿ø·¡ ½Çü°¡ °è¼Ó ½ÇÇàµË´Ï´Ù. ±×·¯¹Ç·Î, ÀçÀûÀç ¸í·É¾î´Â ´ÙÀ½¿¡ ½ÇÆнÿ¡ ÃëÇÏ°í ½ÍÀº Á¶Ä¡°¡ µû¶ó¿Í¾ß ÇÕ´Ï´Ù (¿¹¸¦ µé¾î returnÀ̸é ÇöÀç ¼­ºê·çƾÀ» Á¾·áÇÕ´Ï´Ù). ¿ø·¡ ½Çü°¡ ½ÇÆи¦ ŽÁöÇϵµ·Ï ¸¸µé·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:

+ +
Reload
+Sleep 1000 ; ¼º°øÇϸé, ÀçÀûÀç ¶§¹®¿¡ ÀÌ ½Çü´Â Sleep ½Ã°£ µ¿¾È ´ÝÈü´Ï´Ù. ±×·¡¼­ ¾Æ·¡ ÁÙÀº Àý´ë µµ´ÞÇÏÁö ¸øÇÕ´Ï´Ù.
+MsgBox, 4,, ½ºÅ©¸³Æ®¸¦ ÀçÀûÀçÇÒ ¼ö ¾ø½À´Ï´Ù. ÆíÁýÀ» À§ÇØ ¿©½Ã°Ú½À´Ï±î?
+IfMsgBox, Yes, Edit
+return
+ +

°ü·Ã Ç׸ñ

+

Edit

+

¿¹Á¦

+
^!r::Reload  ; Ctrl-Alt-R¸¦ ½ºÅ©¸³Æ®¸¦ Àç½ÃÀÛÇÒ ÇÖÅ°¿¡ ÇÒ´çÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/Return.htm b/src/docs/commands/Return.htm new file mode 100644 index 0000000..e00882c --- /dev/null +++ b/src/docs/commands/Return.htm @@ -0,0 +1,65 @@ + + + + +Return + + + + + + + +

Return

+ +

ÇÔ¼ö-È£Ãâ, Gosub, Hotkey È°¼ºÈ­, GroupActivate, ¶Ç´Â ±âŸ ¹æ¹ýÀ» ÅëÇÏ¿©, ÀÌÀü¿¡ Á¡ÇÁÇØ °¬´ø ¼­ºê·çƾÀ¸·ÎºÎÅÍ µ¹¾Æ¿É´Ï´Ù.

+ +
Return [, Expression]
+

¸Å°³º¯¼ö

+
+ +
Expression
+

+ ÀÌ ¸Å°³º¯¼ö´Â »ý·«ÇØ¾ß ÇÕ´Ï´Ù. ´Ü, returnÀÌ ÇÔ¼ö ¾È¿¡ »ç¿ëµÉ ¶§´Â ¿¹¿ÜÀÔ´Ï´Ù.

+

+ ÀÌ ¸Å°³º¯¼ö°¡ Ç¥Çö½ÄÀ̸é, ´ÙÀ½Àº ¸ðµÎ À¯È¿ÇÑ ¿¹Á¦ÀÔ´Ï´Ù:

+ +
return 3
+return "¹®ÀÚ¿­À» ±×´ë·Î ¹Ýȯ"
+return MyVar 
+return i + 1
+return true  ; ¼ýÀÚ 1À» µ¹·ÁÁÖ¾î "true"¸¦ ³ªÅ¸³À´Ï´Ù.
+return ItemCount < MaxItems  ; ÂüÀ̳ª °ÅÁþÀ» µ¹·ÁÁÝ´Ï´Ù.
+return FindColor(TargetColor)
+

+¾Ë·ÁÁø ÇÑ°è: ÇÏÀ§ ȣȯÀ» À§ÇØ ±×¸®°í »ç¿ëÀÇ ÆíÀǸ¦ À§ÇØ, ´ÙÀ½ µÎ ¿¹Á¦´Â ±â´ÉÀûÀ¸·Î µ¿ÀÏÇÕ´Ï´Ù:

+ +
return MyVar
+return %MyVar%
+

+´Ù¸¥ ¸»·Î, º¯¼ö Çϳª°¡ ÆÛ¼¾Æ® »çÀο¡ µÑ·¯ ½Î¿© ÀÖÀ¸¸é Ç¥Çö½ÄÀÌ ¾Æ´Ñ °ÍÀ¸·Î Ãë±ÞµË´Ï´Ù. À̸¦ ¿ìȸÇÏ·Á¸é, ¹Ý°ýÈ£·Î µÑ·¯ ½Î¼­ È®½ÇÇÏ°Ô Ç¥Çö½ÄÀ¸·Î ¸¸µå½Ê½Ã¿À; ¿¹¸¦ µé¾î: return (%MyVar%).

+ +
+

³íÆò

+

+µ¹¾Æ°¥ È£ÃâÀÚ°¡ ¾ø´Ù¸é, ReturnÀº ´ë½Å¿¡ ExitÀ» ¼öÇàÇÕ´Ï´Ù.

+

+ÇÔ¼ö·ÎºÎÅÍ È£ÃâÀÚ¿¡°Ô ¿©·¯ °ªÀ» µ¹·ÁÁÖ´Â ´Ù¾çÇÑ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. °ªÀ» È£ÃâÀÚ¿¡°Ô µ¹·ÁÁֱ⿡ ÀÚ¼¼ÇÏ°Ô ±â¼úµÇ¾î ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+ÇÔ¼ö, Gosub, Exit, ExitApp, GroupActivate

+ +

¿¹Á¦

+ +
#z::
+MsgBox Win-Z ÇÖÅ°°¡ ´­·È½À´Ï´Ù.
+Gosub MySubroutine
+return
+   
+MySubroutine:
+Sleep 1000
+return
+ + + diff --git a/src/docs/commands/Run.htm b/src/docs/commands/Run.htm new file mode 100644 index 0000000..f931626 --- /dev/null +++ b/src/docs/commands/Run.htm @@ -0,0 +1,181 @@ + + + + +Run / RunWait + + + + + + + + +

Run / RunWait

+ +

¿ÜºÎ ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù. Run°ú ´Ù¸£°Ô, RunWait´Â ½ÇÇàÀ» °è¼ÓÇϱâ Àü¿¡ ÇÁ·Î±×·¥ÀÌ ³¡³¯ ¶§±îÁö ±â´Ù¸³´Ï´Ù.

+ +
Run, Target [, WorkingDir, Max|Min|Hide|UseErrorLevel, OutputVarPID]
+

¸Å°³º¯¼ö

+
+ +
Target
+

±âµ¿ÇÒ ¹®¼­, URL, ½ÇÇà ÆÄÀÏ (.exe, .com, .bat, etc.), ´ÜÃà ¾ÆÀÌÄÜ (.lnk), ¶Ç´Â ¹®¸Æ ¸Þ´º (³íÆò ÂüÁ¶). TargetÀÌ Áö¿ª ÆÄÀÏÀÌ°í °æ·Î°¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é, A_WorkingDirÀÌ Á¦ÀÏ ¸ÕÀú °Ë»öµË´Ï´Ù. °Å±â¿¡¼­ ºÎÇÕÇÏ´Â ÆÄÀÏÀÌ ¾øÀ¸¸é, ¿î¿µÃ¼Á¦´Â ("¾Ë°í ÀÖ´Â") PATH Æú´õ¸¦ °Ë»öÇØ ¹ß°ßÇÏ¸é ±× ÆÄÀÏÀ» ±âµ¿ÇÕ´Ï´Ù.

+

¸Å°³º¯¼ö¸¦ °Ç³×·Á¸é, ÇÁ·Î±×·¥À̳ª ¹®¼­ À̸§ ´ÙÀ½¿¡ ¹Ù·Î ±×°ÍµéÀ» Ãß°¡ÇÕ´Ï´Ù. ¸Å°³º¯¼ö¿¡ ½ºÆäÀ̽º°¡ ´ã°Ü ÀÖ´Ù¸é, (¾î¶² °æ¿ì´Â °ãµû¿ÈÇ¥ ¾øÀ̵µ Àß ÀÛµ¿ÇÏ°ÚÁö¸¸) ±×°ÍÀ» °ãµû¿ÈÇ¥ ¾È¿¡ µÑ·¯½Î´Â °ÍÀÌ °¡Àå ¾ÈÀüÇÕ´Ï´Ù.

+ +
WorkingDir
+

±âµ¿µÈ Ç׸ñÀ» À§ÇÑ ÀÛ¾÷ µð·ºÅ丮. ¾È¿¡ ½ºÆäÀ̽º°¡ ÀÖ´õ¶óµµ À̸§À» °ãµû¿ÈÇ¥·Î µÑ·¯½ÎÁö ¸¶½Ê½Ã¿À. »ý·«Çϸé, ½ºÅ©¸³Æ®ÀÇ ÀÛ¾÷ µð·ºÅ丮°¡ (A_WorkingDir) »ç¿ëµË´Ï´Ù.

+ +
Max|Min|Hide
+ UseErrorLevel
+

»ý·«µÇ¸é, TargetÀÌ Á¤»ó ±âµ¿ÇÕ´Ï´Ù. ´ë¾ÈÀ¸·Î, ´ÙÀ½ ´Ü¾îµéÀ» Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù:

+

Max: ÃÖ´ëÈ­ ±âµ¿

+

Min: ÃÖ¼ÒÈ­ ±âµî

+

Hide: ¼ûÀº ä·Î ±âµ¿ (À§¿Í Á¶ÇÕÇØ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù)

+

ÁÖÀÇ: ¾î¶² ¾îÇø®ÄÉÀ̼ÇÀº (¿¹, Calc.exe) ¿äûÇÑ ±âµ¿ »óŸ¦ ÁؼöÇÏÁö ¾Ê½À´Ï´Ù. ±×·± °æ¿ì Max/Min/Hide´Â ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù.

+

UseErrorLevel: UseErrorLevel Ȧ·Î ÁöÁ¤Çϰųª À§ÀÌ ´Ü¾î Áß Çϳª¿¡ Ãß°¡ÇØ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù (´Ù¸¥ ´Ü¾î¿Í´Â ½ºÆäÀ̽º·Î ±¸ºÐÇÕ´Ï´Ù). ±âµ¿¿¡ ½ÇÆÐÇϸé, ÀÌ ¿É¼ÇÀº °æ°í ´ëÈ­»óÀÚ¸¦ °Ç³Ê¶Ù°í, ErrorLevel¿¡ ERROR¸¦ ¼³Á¤Çϸç, ±×¸®°í ÇöÀç ¾²·¹µå¸¦ °è¼Ó ÁøÇàÇÕ´Ï´Ù. ±âµ¿¿¡ ¼º°øÇϸé, RunWait´Â ErrorLevelÀ» ÇÁ·Î±×·¥ÀÇ Á¾·á Äڵ忡 ¼³Á¤ÇÏ°í, RunÀº °Å±â¿¡ 0À» ¼³Á¤ÇÕ´Ï´Ù.

+

UseErrorLevelÀÌ ÁöÁ¤µÇ¸é, º¯¼ö A_LastError´Â ¿î¿µ üÁ¦ÀÇ GetLastError() ÇÔ¼öÀÇ °á°ú¿¡ ¼³Á¤µË´Ï´Ù. A_LastError´Â 0ºÎÅÍ 4294967295 »çÀÌÀÇ ¼ýÀÚÀÔ´Ï´Ù (½ÊÁø¼ö°¡ ¾Æ´Ï¶ó ¾ðÁ¦³ª 16Áø¼ö·Î Æ÷¸ËµË´Ï´Ù). ¿µ (0)Àº ¼º°øÀ» ¶æÇÏÁö¸¸, ´Ù¸¥ ¼ýÀÚ´Â ±âµ¿¿¡ ½ÇÆÐÇß´Ù´Â ¶æÀÔ´Ï´Ù. °¢ ¼ýÀڴ ƯÁ¤ÇÑ ¿¡·¯ Á¶°Ç¿¡ »ó´çÇÕ´Ï´Ù (¸ñ·ÏÀº www.microsoft.com¿¡¼­ "½Ã½ºÅÛ ¿¡·¯ ÄÚµå"¸¦ °Ë»öÇØ º¸½Ê½Ã¿À). ErrorLeveló·³, A_LastError´Â ¾²·¹µå¸¶´Ù ¼³Á¤µË´Ï´Ù; Áï, ´Ù¸¥ ¾²·¹µå°¡ ÀÎÅÍ·´Æ® Çصµ º¯°æµÇÁö ¾Ê½À´Ï´Ù. ±×·¸Áö¸¸, A_LastError´Â DllCallÀÌ ¼³Á¤Çϱ⵵ ÇÕ´Ï´Ù.

+ +
OutputVarPID
+

»õ·Î ±âµ¿ÇÑ ÇÁ·Î±×·¥ÀÇ À¯ÀÏÇÑ Process ID (PID)¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§ÀÔ´Ï´Ù. PID¸¦ °áÁ¤ÇÒ ¼ö ¾øÀ¸¸é º¯¼ö´Â ºñ¾î ÀÖ½À´Ï´Ù, º¸Åë ±×·± °æ¿ì´Â ½ÇÇà ÆÄÀÏ º¸´Ù´Â ¹®¸Æ ¸Þ´º, ¹®¼­, ¶Ç´Â ´ÜÃà ¾ÆÀÌÄÜÀ» ±âµ¿ÇÒ ¶§ ÀϾ´Ï´Ù. RunWaitµµ ÀÌ ¸Å°³º¯¼ö¸¦ Áö¿øÇÕ´Ï´Ù. ±×·¸Áö¸¸ ±×ÀÇ OuputVarPID´Â ¹Ýµå½Ã ¶Ç´Ù¸¥ ¸Þ½îµå¿¡¼­ Á¡°ËÇØ¾ß ÇÕ´Ï´Ù (±×·¸Áö ¾ÊÀ¸¸é, ´ÙÀ½ RunWait°¡ ½ÇÇàÇÏ´Â ÁÙ¿¡ µµ´ÞÇÒ ÁîÀ½À̸é ÇÁ·Î¼¼½º°¡ Á¾·áµÇ¾î ¹ö¸®±â ¶§¹®¿¡ PID´Â ¹«È¿°¡ µÇ¾î ¹ö¸³´Ï´Ù).

+

Run ¸í·É¾î°¡ PID¸¦ ½ÇÇàÇÑ ÈÄ, ÇØ´ç ÇÁ·Î¼¼½º°¡ ¸¸µç âÀº ¾ÆÁ÷ Á¸ÀçÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. Àû¾îµµ ÇϳªÀÇ Ã¢Àº ¸¸µé¾îÁö±â¸¦ ±â´Ù¸®·Á¸é, WinWait ahk_pid %OutputVarPID%¸¦ »ç¿ëÇϽʽÿÀ.

+ +
+

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

Run: (À§ÀÇ) UseErrorLevelÀÌ È¿°ú°¡ ¾ø´Â ÇÑ, ErrorLevelÀ» ¼³Á¤ÇÏÁö ¾Ê½À´Ï´Ù. ½ÇÆнà ErrorLevelÀº ´Ü¾î ERRORÀÌ ¼³Á¤µÇ°í ¼º°øÇϸé 0ÀÌ ¼³Á¤µË´Ï´Ù.

+

RunWait: ErrorLevelÀ» ÇÁ·Î±×·¥ÀÇ Á¾·á Äڵ忡 ¼³Á¤ÇÕ´Ï´Ù (ºÎÈ£ÀÖ´Â 32-ºñÆ® Á¤¼ö). UseErrorLevel°¡ ¿µÇâÀ» ¹ÌÄ¡°í ±âµ¿¿¡ ½ÇÆÐÇÏ¸é ´Ü¾î ERROR°¡ ÀúÀåµË´Ï´Ù.

+ +

³íÆò

+

+Run°ú ´Ù¸£°Ô, RunWait´Â TargetÀÌ Á¾·áÇϰųª ³¡³¯ ¶§±îÁö ±â´Ù¸³´Ï´Ù. Á¾·á ½Ã¿¡ ErrorLevelÀÌ ÇÁ·Î±×·¥ÀÇ Á¾·á Äڵ忡 ¼³Á¤µË´Ï´Ù (ºÎÈ£ÀÖ´Â 32-ºñÆ® Á¤¼ö). ¾î¶² ÇÁ·Î±×·¥Àº ¿©ÀüÈ÷ ½ÇÇà ÁßÀÓ¿¡µµ ºÒ±¸ÇÏ°í Áï½Ã ¹ÝȯµÇ´Â µí º¸ÀÔ´Ï´Ù; ÀÌ·± ÇÁ·Î±×·¥Àº ¶Ç´Ù¸¥ ÇÁ·Î¼¼½º¸¦ ÆÛÆ®¸³´Ï´Ù.

+

+Target¿¡ ½°Ç¥°¡ ´ã°Ü ÀÖÀ¸¸é, ´ÙÀ½ ¿¹Á¦¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ ¼¼ ¹ø ÇǽŽÃÄÑ¾ß ÇÕ´Ï´Ù:

+
Run rundll32.exe shell32.dll`,Control_RunDLL desk.cpl`,`, 3  ; Á¦¾îÆÇ > µð½ºÇ÷¹ÀÌ > ¼³Á¤ÀÌ ¿­¸³´Ï´Ù
+

+ComspecÀ» ÅëÇÏ¿© ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¶§ (cmd.exe) -- ¾Æ¸¶µµ ÇÁ·Î±×·¥ÀÇ ÀÔ·ÂÀ̳ª Ãâ·ÂÀ» ¹æÇâÀüȯÇØ¾ß ÇÒ ÇÊ¿ä°¡ Àֱ⠶§¹®¿¡ -- ½ÇÇà ÆÄÀÏÀÇ À̸§À̳ª °æ·Î¿¡ ½ºÆäÀ̽º°¡ Æ÷ÇԵǾî ÀÖÀ¸¸é, Àüü ¹®ÀÚ¿­À» ¹Ù±ùÂÊ¿¡¼­ µû¿ÈÇ¥·Î µÑ·¯ ½Î¾ß ÇÕ´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­, ¹Ù±ù µû¿ÈÇ¥´Â »¡°£»öÀ¸·Î º¸ÀÌ°í ¾ÆÂÊÀÇ ¸ðµç µû¿ÈÇ¥´Â °ËÁ¤»öÀ¸·Î º¸ÀÔ´Ï´Ù:

+
Run %comspec% /c ""C:\My Utility.exe" "param 1" "second param" >"C:\My File.txt""
+

+TargetÀ» ±âµ¿ÇÒ ¼ö ¾øÀ¸¸é, ¿¡·¯ âÀÌ È­¸é¿¡ ³ªÅ¸³ª°í ÇöÀç ¾²·¹µå´Â Á¾·áÇÕ´Ï´Ù. ¹®ÀÚ¿­ UseErrorLevelÀÌ ¼¼ ¹ø° ¸Å°³º¯¼ö¿¡ Æ÷ÇԵǾî Àְųª ¿¡·¯¸¦ Try/Catch ¼­¼ú¹®À¸·Î Àâ´Â °æ¿ì´Â ¿¹¿Ü·Î ÇÕ´Ï´Ù.

+

+TargetÀÌ Á¤È®ÇÑ °æ·ÎÀ̸é, ¼öÇ༺´ÉÀÌ ¾à°£ °³¼±µÉ ¼ö ÀÖ½À´Ï´Ù. ¿¹, Run, C:\My Documents\Test.txt ¸»°í Run, C:\Windows\Notepad.exe "C:\My Documents\Test.txt"À¸·Î ÁöÁ¤ÇÕ´Ï´Ù.

+

+Ư¼öÇÑ CLSID Æú´õ´Â RunÀ» ÅëÇÏ¿© ¿­ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
Run ::{20d04fe0-3aea-1069-a2d8-08002b30309d}  ; "³» ÄÄÇ»ÅÍ" Æú´õ°¡ ¿­¸³´Ï´Ù.
+Run ::{645ff040-5081-101b-9f08-00aa002f954e}  ; ¾²·¹±âÅëÀÌ ¿­¸³´Ï´Ù.
+

+¹®¸Æ ¸Þ´º´Â Ž»öâ¿¡¼­ ÆÄÀÏ¿¡ ¿ìŬ¸¯ÇÏ¸é ³ªÅ¸³ª´Â Á¶Ä¡µé¿¡ »óÀÀÇÕ´Ï´Ù. ÆÄÀÏÀÌ ¹®¸Æ ¸Þ´º ¾øÀÌ ±âµ¿Çϸé, ±âº» ¹®¸Æ ¸Þ´º°¡ (º¸Åë "open") ±× ƯÁ¤ÇÑ ÆÄÀÏ À¯Çü¿¡ ´ëÇÏ¿© »ç¿ëµË´Ï´Ù. ÁöÁ¤Çϸé, ¹®¸Æ ¸Þ´º´Â ¸ñÇ¥ ÆÄÀÏ À̸§ ´ÙÀ½¿¡ µû¶ó¿Í¾ß ÇÕ´Ï´Ù. ÇöÀç ´ÙÀ½ ¹®¸Æ ¸Þ´º¸¦ Áö¿øÇÕ´Ï´Ù:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
*verb[AHK_L 57+]: ½Ã½ºÅÛ¿¡-Á¤ÀÇµÈ ¶Ç´Â ¸ÂÃã ¹®¸Æ ¸Þ´º. ¿¹¸¦ µé¾î: Run *Compile %A_ScriptFullPath%
À©µµ¿ìÁî ºñ½ºÅ¸ ÀÌÈÄ¿¡¼­, *RunAs ¹®¸Æ ¸Þ´º¸¦ Run As Administrator ¿ìŬ¸¯ ¸Þ´º Ç׸ñ ´ë½Å¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
propertiesÁö½ÃÇÑ ÆÄÀÏ¿¡ ´ëÇÏ¿© Ž»ö±âÀÇ Æ¯¼º âÀ» º¸¿©ÁÝ´Ï´Ù. ¿¹¸¦ µé¾î: Run, properties "C:\My File.txt"
+ ÁÖÀÇ: Ư¼º âÀº ½ºÅ©¸³Æ®°¡ Á¾·áÇÒ ¶§ ÀÚµ¿À¸·Î ´ÝÈü´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é, WinWait¸¦ »ç¿ëÇØ Ã¢ÀÌ ³ªÅ¸³ª±â¸¦ ±â´Ù¸° ´ÙÀ½, WinWaitClose¸¦ »ç¿ëÇØ »ç¿ëÀÚ°¡ ´Ý±â¸¦ ±â´Ù¸®½Ê½Ã¿À.
findÁö½ÃµÈ Æú´õ¿¡ ´ëÇÏ¿© Ž»ö±âÀÇ ÆÄÀÏ °Ë»ö ¶Ç´Â ã±â âÀÇ ½Çü¸¦ ¿±´Ï´Ù. ¿¹¸¦ µé¾î: Run, find D:\
exploreÁö½ÃµÈ Æú´õ¿¡ Ž»ö±âÀÇ ½Çü¸¦ ¿±´Ï´Ù. ¿¹¸¦ µé¾î: Run, explore %A_ProgramFiles%.
editÁö½ÃµÈ ÆÄÀÏÀ» ÆíÁýÀ» À§ÇØ ¿±´Ï´Ù. Áö½ÃµÈ ÆÄÀÏÀÇ À¯Çü¿¡ "edit" Á¶Ä¡°¡ ¿¬°üµÇ¾î ÀÖÁö ¾ÊÀ¸¸é ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: Run, edit "C:\My File.txt"
openÁö½ÃµÈ ÆÄÀÏÀ» ¿±´Ï´Ù (º¸Åë ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù. ´ëºÎºÐÀÇ ÆÄÀÏ À¯Çü¿¡ ±âº» Á¶Ä¡À̱⠶§¹®ÀÔ´Ï´Ù). ¿¹¸¦ µé¾î: Run, open "My File.txt".
printÁö½ÃµÈ ÆÄÀÏÀ» ¿¬°üµÈ ¾îÇø®ÄÉÀ̼ÇÀ¸·Î ÀμâÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: Run, print "My File.txt"
+

+RunWait°¡ ´ë±â »óÅ¿¡ ÀÖ´Â µ¿¾È, »õ ¾²·¹µå¸¦ ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀ̸Ӹ¦ ÅëÇÏ¿© ±âµ¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

°ü·Ã Ç׸ñ

+

RunAs, Process, Exit, CLSID List, DllCall

+

¿¹Á¦

+
Run, Notepad.exe, C:\My Documents, max
+
+Run, mailto:someone@domain.com?subject=ÀÌ°ÍÀº Á¦¸ñ ÁÙÀÔ´Ï´Ù&body=ÀÌ°ÍÀº ¸Þ½ÃÁö ¸öüÀÇ ÅؽºÆ®ÀÔ´Ï´Ù.
+Run, ReadMe.doc, , Max UseErrorLevel  ; ÃÖ´ëÈ­ »óÅ·Π±âµ¿ÇÏ°í ½ÇÆÐÇÏ´õ¶óµµ ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÖÁö ¾Ê½À´Ï´Ù.
+if ErrorLevel = ERROR
+    MsgBox ¹®¼­¸¦ ±âµ¿ÇÒ ¼ö ¾ø¾ú½À´Ï´Ù.
+
+RunWait, %comspec% /c dir c:\ >>c:\DirTest.txt, , min
+Run, c:\DirTest.txt
+Run, properties c:\DirTest.txt
+
+Run, http://www.google.com ; Áï, ¾î¶² URLµµ ±âµ¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+Run, mailto:someone@somedomain.com  ; ±âº» À̸ÞÀÏ ÇÁ·Î±×·¥ÀÌ ¿­¸³´Ï´Ù.
+
+Run ::{20d04fe0-3aea-1069-a2d8-08002b30309d}  ; "³» ÄÄÇ»ÅÍ" Æú´õ°¡ ¿­¸³´Ï´Ù.
+Run ::{645ff040-5081-101b-9f08-00aa002f954e}  ; ¾²·¹±âÅëÀÌ ¿­¸³´Ï´Ù.
+
+; ¿©·¯ ¸í·É¾î¸¦ ¿¬¼ÓÀûÀ¸·Î ½ÇÇàÇÏ·Á¸é, »çÀÌ¿¡ "&&"¸¦ »ç¿ëÇϽʽÿÀ:
+Run, %comspec% /c dir /b > C:\list.txt && type C:\list.txt && pause
+
+ +
+; ´ÙÀ½À» »ç¿ëÇÏ¿© ¸í·É¾î¸¦ ½ÇÇàÇÏ°í ±× Ãâ·ÂÀ» ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù:
+MsgBox % RunWaitOne("dir " A_ScriptDir)
+
+; ...¶Ç´Â ´Ü ¹ø¿¡ ¿©·¯ ¸í·É¾î¸¦ ½ÇÇàÇÏ°í ±× Ãâ·ÂÀ» ¿­¶÷ÇÕ´Ï´Ù:
+MsgBox % RunWaitMany("
+(
+echo ¸í·É¾î´Â ¿©±â¿¡ ¹èÄ¡ÇÕ´Ï´Ù,
+echo Çϳª¾¿ ½ÇÇàµÉ °ÍÀÌ°í,
+echo °á±¹ Ãâ·ÂÀ» ¾ò°Ô µÉ °ÍÀÔ´Ï´Ù.
+)")
+
+RunWaitOne(command) {
+    ; WshShell °´Ã¼: http://msdn.microsoft.com/en-us/library/aew9yb99
+    shell := ComObjCreate("WScript.Shell")
+    ; cmd.exe¸¦ ÅëÇÏ¿© ¸í·É¾î Çϳª¸¦ ½ÇÇàÇÕ´Ï´Ù.
+    exec := shell.Exec(ComSpec " /C " command)
+    ; ±× ¸í·É¾îÀÇ Ãâ·ÂÀ» ÀÐ¾î µ¹·ÁÁÝ´Ï´Ù
+    return exec.StdOut.ReadAll()
+}
+
+RunWaitMany(commands) {
+    shell := ComObjCreate("WScript.Shell")
+    ; ¸í·É¾î ¹ÝÇâÀ» ²ô°í cmd.exe¸¦ ¿±´Ï´Ù
+    exec := shell.Exec(ComSpec " /Q /K echo off")
+    ; ½ÇÇàÇÒ ¸í·É¾î¸¦ »õÁÙ¹®ÀÚ·Î °¥¶ó¼­ Àü¼ÛÇÕ´Ï´Ù.
+    exec.StdIn.WriteLine(commands "`nexit")  ; ¾ðÁ¦³ª °á±¹ Á¾·áÇÕ´Ï´Ù!
+    ; ¸ðµç ¸í·É¾îÀÇ Ãâ·ÂÀ» ÀÐ¾î µ¹·ÁÁÝ´Ï´Ù.
+    return exec.StdOut.ReadAll()
+}
+
+ +
+; ExecScript: ÁÖ¾îÁø Äڵ带 »õ AutoHotkey ÇÁ·Î¼¼½º·Î ½ÇÇàÇÕ´Ï´Ù.
+ExecScript(Script, Wait:=true)
+{
+    shell := ComObjCreate("WScript.Shell")
+    exec := shell.Exec("AutoHotkey.exe /ErrorStdOut *")
+    exec.StdIn.Write(script)
+    exec.StdIn.Close()
+    if Wait
+        return exec.StdOut.ReadAll()
+}
+
+; ¿¹Á¦:
+InputBox expr,, »õ ½ºÅ©¸³Æ®·Î Æò°¡ÇÒ Ç¥Çö½ÄÀ» ÀÔ·ÂÇϽʽÿÀ.,,,,,,,, Asc("*")
+result := ExecScript("FileAppend % (" expr "), *")
+MsgBox % "Result: " result
+
+ + + diff --git a/src/docs/commands/RunAs.htm b/src/docs/commands/RunAs.htm new file mode 100644 index 0000000..bdf6d66 --- /dev/null +++ b/src/docs/commands/RunAs.htm @@ -0,0 +1,52 @@ + + + + +RunAs + + + + + + + +

RunAs

+ +

¿¬ÀÌ¾î »ç¿ëÇÒ ¸ðµç Run ±×¸®°í RunWait¿¡ ´ëÇÏ¿© »ç¿ëÀÚ ½Å¿ëÀå ¼¼Æ®¸¦ ÁöÁ¤ÇÕ´Ï´Ù.

+ +
RunAs [, User, Password, Domain]
+

¸Å°³º¯¼ö

+
+ +
User
+

ÀÌ ¸Å°³º¯¼ö¿Í ´Ù¸¥ ¸ðµç ¸Å°³º¯¼ö¸¦ ¸ðµÎ »ý·«Çϸé, RunAs Ư¡Àº ²¨Áý´Ï´Ù. ±×·¯¸é Run°ú RunWait´Â ±×µéÀÇ ±âº» ÇàÀ§·Î º¹±¸µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ÀÌ°ÍÀº »ç¿ëÀÚ À̸§À¸·Î¼­ ±× ¾Æ·¡¿¡ »õ ÇÁ·Î¼¼½º°¡ »ý¼ºµÉ °ÍÀÔ´Ï´Ù.

+ +
Password
+

UserÀÇ ¾ÏÈ£.

+ +
Domain
+

UserÀÇ ¿µ¿ª. ·ÎÄà °èÁ¤À» »ç¿ëÇÏ·Á¸é, ÀÌ ¸Å°³º¯¼ö¸¦ ºñ¿ö µÎ½Ê½Ã¿À. ÀÛµ¿¿¡ ½ÇÆÐÇϸé, @YourComputerName¸¦ »ç¿ëÇØ º¸½Ê½Ã¿À.

+
+ +
+

³íÆò

+

+ÀÌ ¸í·É¾î´Â ¿À·ÎÁö AutoHotkey¿¡°Ô ¾ÕÀ¸·Î Run°ú RunWait¸¦ »ç¿ëÇÒ ¶§¸¶´Ù ÀüºÎ º¸Á¶ »ç¿ëÀÚ ½Å¿ëÀåÀ» »ç¿ëÇ϶ó°í (¶Ç´Â »ç¿ëÇÏÁö ¸»¶ó°í) ¾Ë¸®´Â Àϸ¸ ÇÕ´Ï´Ù.

+

+ErrorLevelÀº ÀÌ ¸í·É¾î·Î ¹Ù²îÁö ¾Ê½À´Ï´Ù. ¹«È¿ÇÑ User, Password, ¶Ç´Â DomainÀÌ ÁöÁ¤µÇ¸é, Run°ú RunWait´Â ¹®Á¦¸¦ ¼³¸íÇÏ´Â ¿¡·¯ ¸Þ½ÃÁö¸¦ º¸¿©ÁÝ´Ï´Ù (´Ü, ±×µéÀÇ UseErrorLevel ¿É¼ÇÀÌ ÄÑÁ® ÀÖ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù).

+

+RunAs Ư¡ÀÌ ÄÑÁ® ÀÖ´Â µ¿¾È, Run°ú RunWait´Â ¹®¼­, URL, ¶Ç´Â ½Ã½ºÅÛ ¸í·É¾î¸¦ ±âµ¿ÇÒ ¼ö ¾ø½À´Ï´Ù. ´Ù¸¥ ¸»·Î, ±âµ¿µÉ ÆÄÀÏÀº ¹Ýµå½Ã ½ÇÇà ÆÄÀÏÀ̾î¾ß ÇÕ´Ï´Ù.

+

+ÀÌ ¸í·É¾î°¡ ÀÛµ¿ÇÏ·Á¸é "º¸Á¶ ·Î±×¿Â" ¼­ºñ½º°¡ ÀÚµ¿ÀÌµç ¼öµ¿ÀÌµç ¼³Á¤µÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù (¼öµ¿À¸·Î ¼³Á¤µÇ¾î ÀÖÀ»Áö¶óµµ ¿ä±¸Çϸé OS´Â ÀÚµ¿À¸·Î ±× ¼­ºñ½º¸¦ ½ÃÀÛÇÕ´Ï´Ù). ¿ªÁÖ: º¸Á¶ ·Î±×¿Â(Secondary logon) ¼­ºñ½º´Â À©µµ¿ì °èÁ¤À¸·Î °ü¸®ÀÚ ±ÇÇÑÀÌ ÇÊ¿äÇÑ ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+Run, RunWait

+

¿¹Á¦

+ +
RunAs, Administrator, MyPassword
+Run, RegEdit.exe
+RunAs  ; Á¤»ó ÇàÀ§·Î Àç¼³Á¤ÇÕ´Ï´Ù.
+ +  + diff --git a/src/docs/commands/Send.htm b/src/docs/commands/Send.htm new file mode 100644 index 0000000..41b61b0 --- /dev/null +++ b/src/docs/commands/Send.htm @@ -0,0 +1,561 @@ + + +Send/SendRaw/SendInput/SendPlay/SendEvent: Send keys & clicks + + + + + + + + + +

Send / SendRaw / SendInput / SendPlay / SendEvent: Send Keys & Clicks

+ +

Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯À» Èä³»³»¾î È°¼º â¿¡ Àü¼ÛÇÕ´Ï´Ù.

+ +
Send Keys
+SendRaw Keys
+SendInput Keys
+SendPlay Keys
+SendEvent Keys
+ +

¸Å°³º¯¼ö

+
+ +
Keys
+

Àü¼ÛÇÒ Å° ¿¬¼Ó¿­. ´Ù¸¥ ¸í·É¾îó·³, ù ¸Å°³º¯¼ö ¾ÕÀÇ ½°Ç¥´Â ¼±ÅÃÀûÀÔ´Ï´Ù.

+ +
+ +

³¯ ¸ðµå: SendRaw ¸í·É¾î´Â ¸ðµç ¹®ÀÚµé ¹®ÀÚ ±×´ë·Î Çؼ®ÇÕ´Ï´Ù. {Enter}¸¦ ENTER Å°´­¸²À¸·Î, ^c¸¦ Control-C·Î, µîµî º¯È¯ÇÏÁö ¾Ê½À´Ï´Ù. ±×·¸Áö¸¸, ÇǽŠ¿¬¼Ó¿­ÀÇ Á¤»ó ±ÔÄ¢, º¯¼ö ÂüÁ¶ ±×¸®°í Ç¥Çö½ÄÀº ¿©ÀüÈ÷ Àû¿ëµË´Ï´Ù. ¿Ö³ÄÇÏ¸é ¸í·É¾î°¡ ½ÇÇàµÇ±â Àü¿¡ À̰͵éÀÌ ¸ÕÀú 󸮵DZ⠶§¹®ÀÔ´Ï´Ù. SendInput, SendPlay, ¶Ç´Â SendEvent¿¡ ³¯ ¸ðµå¸¦ »ç¿ëÇÏ·Á¸é, ¹®ÀÚ¿­¿¡¼­ ù Ç׸ñ¿¡ {Raw}¸¦ ¾²½Ê½Ã¿À. ¿¹¸¦ µé¾î: SendInput {Raw}abc.

+

+Á¤»ó ¸ðµå: ³¯ ¸ðµå°¡ ¾Æ´Ò ¶§, ´ÙÀ½ ¹®ÀÚµéÀº ¼ö½ÄÀÚ·Î Ãë±ÞµË´Ï´Ù (ÀÌ ¼ö½Ä Å°µéÀº ¹Ù·Î ´ÙÀ½ Å°¿¡¸¸ ¿µÇâÀ» ÁÝ´Ï´Ù):

+

+!: ALT Å°´­¸²À» Àü¼ÛÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, Send This is text!a´Â "This is text"¸¦ Àü¼ÛÇÑ ´ÙÀ½ ALT+a¸¦ ´©¸¨´Ï´Ù. ÁÖÀÇ: !A´Â ¾î¶² ÇÁ·Î±×·¥¿¡¼­´Â !a¿Í ÀüÇô ´Ù¸¥ È¿°ú¸¦ ³À´Ï´Ù. ÀÌ°ÍÀº !A°¡ ALT+SHIFT+A¸¦ ´©¸£´Â ¹Ý¸é !a´Â ALT+a¸¦ ´©¸£±â ¶§¹®ÀÔ´Ï´Ù. Àß ¸ð¸£°ÚÀ¸¸é, ¼Ò¹®ÀÚ¸¦ »ç¿ëÇϽʽÿÀ.

+

++: SHIFT Å°´­¸²À» Àü¼ÛÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, Send +abC´Â "AbC"¸¦ Àü¼ÛÇÏ°í, Send !+a´Â ALT+SHIFT+a¸¦ ´©¸¨´Ï´Ù.

+

+^: CONTROL Å°´­¸²À» Àü¼ÛÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, Send ^!a´Â CTRL+ALT+a¸¦ ´©¸£°í, Send ^{Home}´Â CONTROL+HOMEÀ» ´©¸¨´Ï´Ù. ÁÖÀÇ: ^A´Â ¾î¶² ÇÁ·Î±×·¥¿¡¼­ ^a¿Í ÀüÇô ´Ù¸¥ È¿°ú¸¦ ³À´Ï´Ù. ¿Ö³ÄÇϸé ^A´Â CONTROL+SHIFT+A¸¦ ´©¸£´Â ¹Ý¸é ^a´Â CONTROL+a¸¦ ´©¸£±â ¶§¹®ÀÔ´Ï´Ù. Àß ¸ð¸£°ÚÀ¸¸é, ¼Ò¹®ÀÚ¸¦ »ç¿ëÇϽʽÿÀ.

+

+#: WIN Å°´­¸²À» Àü¼ÛÇÕ´Ï´Ù. ±×·¯¹Ç·Î Send #e´Â Windows Å°¸¦ ´©¸¥ ä·Î ±âÈ£ "e"¸¦ ´©¸¨´Ï´Ù.

+


+SendInput±×¸®°í SendPlay [v1.0.43+]: SendInput ±×¸®°í SendPlay´Â Send¿Í °°Àº ±¸¹®À» »ç¿ëÇÕ´Ï´Ù. ±×·¯³ª ÀϹÝÀûÀ¸·Î ´õ ºü¸£°í ´õ ½Å·Ú¼ºÀÌ ÀÖ½À´Ï´Ù. °Ô´Ù°¡, Àü¼ÛÇÏ´Â µ¿¾È¿¡ ¹°¸®Àû Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯À» ¹öÆÛ Ã³¸®ÇØ ÁÝ´Ï´Ù. ±× ´öºÐ¿¡ »ç¿ëÀÚÀÇ Å°´­¸²ÀÌ Èð¾îÁöÁö ¾Ê°í ¿ÂÀüÇÏ°Ô Àü¼ÛµË´Ï´Ù. SendModeÀ» »ç¿ëÇϸé Send¸¦ SendInput ¶Ç´Â SendPlay°ú ¶È°°ÀÌ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. °¢ ¸ðµå¿¡ °üÇÏ¿© ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ¾Æ·¡ÀÇ SendInput ±×¸®°í SendPlay¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+SendEvent [v1.0.43+]: SendEvent´Â 1.0.43-ÀÌÀüÀÇ Send ¸í·É¾î¿Í °°Àº ¹æ¹ýÀ¸·Î Å°´­¸²À» Àü¼ÛÇÕ´Ï´Ù. Å°´­¸²ÀÇ Àü¼Û ºñÀ²Àº SetKeyDelay·Î °áÁ¤µË´Ï´Ù. ±âº»°ªÀ¸·Î, Send´Â SendEvent¿Í µ¿ÀÏÇÏÁö¸¸; SendMode¸¦ ÅëÇÏ¿© SendInputÀ̳ª SendPlay¿Í °°°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù .

+

+Key Names: ´ÙÀ½ Å×À̺íÀº Àü¼ÛÀÌ °¡´ÉÇÑ Æ¯¼ö Å°µéÀ» ³ª¿­ÇÕ´Ï´Ù. (°¢ Å° À̸§Àº È°°ýÈ£·Î µÑ·¯½Î¾ß ÇÕ´Ï´Ù):

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Å° À̸§°á°ú Å°´­¸²
{F1} - {F24}±â´É Å°. ¿¹¸¦ µé¾î: {F12}´Â F12 Å°.
{!}!
{#}#
{+}+
{^}^
{{}{
{}}}
{Enter}¸ÞÀÎ Å°º¸µåÀÇ ¿£ÅÍÅ°
{Escape} ¶Ç´Â {Esc}ESCAPE
{Space}SPACE (½ºÆäÀ̽º°¡ Àü¼ÛÇÒ ¹®ÀÚ¿­ÀÇ ¾ÕÀ̳ª µÚ¿¡ ³ªÅ¸³¯ ¶§ ÇÊ¿äÇÕ´Ï´Ù -- °¡¿îµ¥ ÀÖ´Â ½ºÆäÀ̽º´Â ¹®ÀÚ ±×´ë·Î ½ºÆäÀ̽ºÀÔ´Ï´Ù)
{Tab}ÅÇÅ°
{Backspace} ¶Ç´Â {BS}¹é½ºÆäÀ̽º
{Delete} ¶Ç´Â {Del}»èÁ¦
{Insert} ¶Ç´Â {Ins}»ðÀÔ
{Up}¸ÞÀÎ À§ È­»ìÇ¥ Å°
{Down}¸ÞÀÎ ¾Æ·¡ È­»ìÇ¥ Å°
{Left}¸ÞÀÎ ¿ÞÂÊ È­»ìÇ¥ Å°
{Right}¸ÞÀÎ ¿À¸¥ÂÊ È­»ìÇ¥ Å°
{Home}¸ÞÀΠȨ Å°
{End}¸ÞÀÎ ¿£µå Å°
{PgUp}¸ÞÀÎ ÆäÀÌÁö ¾÷ Å°
{PgDn}¸ÞÀÎ ÆäÀÌÁö ´Ù¿î Å°
  
{CapsLock}CapsLock (Win 2k/XPÀ̶ó¸é SetCapsLockStateÀ» »ç¿ëÇÏ´Â ÆíÀÌ ´õ ½Å·Ú¼ºÀÌ ³ô½À´Ï´Ù). + + + {CapsLock}¸¦ Àü¼ÛÇÏ·Á¸é ¹Ì¸® SetStoreCapslockMode OffÀÌ µÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù.
{ScrollLock}ScrollLock (´ÙÀ½µµ ÂüÁ¶: SetScrollLockState)
{NumLock}NumLock (´ÙÀ½µµ ÂüÁ¶: SetNumLockState)
  
{Control} ¶Ç´Â {Ctrl}CONTROL (±â¼ú Á¤º¸: ÁÂ¿ì ±¸ºÐ ¾ø´Â °¡»ó Å°¸¦ º¸³»Áö¸¸ ½ºÄµ ÄÚµå´Â ¿ÞÂÊÀ» Àü¼ÛÇÔ)
{LControl} ¶Ç´Â {LCtrl}¿ÞÂÊ CONTROL Å° (±â¼ú Á¤º¸: ÁÂ¿ì ±¸ºÐ ¾ø´Â °¡»ó Å°°¡ ¾Æ´Ï¶ó ¿ÞÂÊ °¡»ó Å°¸¦ Àü¼ÛÇÔ)
{RControl} ¶Ç´Â {RCtrl}¿À¸¥ÂÊ CONTROL Å°
{Control Down} ¶Ç´Â {Ctrl Down}{Ctrl Up}ÀÌ Àü¼ÛµÉ ¶§±îÁö CONTROL Å°¸¦ ´©¸¨´Ï´Ù. ´ë½Å¿¡ ¿ÞÂÊ ¶Ç´Â ¿À¸¥ÂÊ Å°¸¦ ´©¸£°í ÀÖÀ¸·Á¸é, {RCtrl Down}°ú {RCtrl Up}À» »ç¿ëÇϽʽÿÀ.
  
{Alt}ALT (±â¼ú Á¤º¸: ÁÂ¿ì ±¸ºÐ¾ø´Â °¡»ó Å°¸¦ Àü¼ÛÇÏÁö¸¸ ½ºÄµ ÄÚµå´Â ¿ÞÂÊ ½ºÄµÄڵ带 Àü¼ÛÇÔ)
{LAlt}¿ÞÂÊ ALT Å° (±â¼ú Á¤º¸: ÁÂ¿ì ±¸ºÐ¾ø´Â °¡»ó Å°°¡ ¾Æ´Ï¶ó ¿ÞÂÊ °¡»ó Å°¸¦ Àü¼ÛÇÕ´Ï´Ù)
{RAlt}¿À¸¥ÂÊ ALT Å° (¶Ç´Â Å°º¸µå ·¹À̾ƿô¿¡ µû¶ó AltGr)
{Alt Down}{Alt Up}ÀÌ Àü¼ÛµÉ ¶§±îÁö ALT Å°¸¦ ´©¸¨´Ï´Ù. ´ë½Å¿¡ ¿ÞÂÊ ¶Ç´Â ¿À¸¥ÂÊ Å°¸¦ ´©¸£°í ÀÖÀ¸·Á¸é {RAlt Down}°ú {RAlt Up}À» »ç¿ëÇϽʽÿÀ.
  
{Shift}SHIFT (±â¼ú Á¤º¸: ÁÂ¿ì ±¸ºÐ¾ø´Â °¡»ó Å°¸¦ Àü¼ÛÇÏÁö¸¸ ½ºÄµÄÚµå´Â ¿ÞÂÊ ½ºÄµÄڵ带 Àü¼ÛÇÔ)
{LShift}¿ÞÂÊ SHIFT Å° (±â¼ú Á¤º¸: ÁÂ¿ì ±¸ºÐ ¾ø´Â °¡»ó Å°°¡ ¾Æ´Ï¶ó ¿ÞÂÊ °¡»ó Å°¸¦ Àü¼ÛÇÔ)
{RShift}¿À¸¥ÂÊ SHIFT Å°
{Shift Down}{Shift Up}ÀÌ Àü¼ÛµÉ ¶§±îÁö SHIFT Å°¸¦ ´©¸¨´Ï´Ù. ´ë½Å¿¡ ¿ÞÂÊ ¶Ç´Â ¿À¸¥ÂÊ Å°¸¦ ´©¸£°í ÀÖÀ¸·Á¸é {RShift Down}°ú {RShift Up}À» »ç¿ëÇϽʽÿÀ.
  
{LWin}¿ÞÂÊ Windows Å°
{RWin}¿À¸¥ÂÊ Windows Å°
{LWin Down}{LWin Up}ÀÌ Àü¼ÛµÉ ¶§±îÁö ¿ÞÂÊ Windows Å°¸¦ ´©¸¨´Ï´Ù
{RWin Down}{RWin Up}ÀÌ Àü¼ÛµÉ ¶§±îÁö ¿À¸¥ÂÊ Windows Å°¸¦ ´©¸¨´Ï´Ù
  
{AppsKey}Windows App Å° (¿À¸¥ÂÊ Å¬¸¯ ¶Ç´Â ¹®¸Æ ¸Þ´º¸¦ ¿äûÇÕ´Ï´Ù)
{Sleep}ÄÄÇ»ÅÍ SLEEP Å°.
{ASC nnnnn}

ALT+nnnnn Å°Æеå Á¶ÇÕÀ» Àü¼ÛÇÕ´Ï´Ù. À̸¦ ÀÌ¿ëÇÏ¿© Å°º¸µå¿¡ Á¸ÀçÇÏÁö ¾Ê´Â Ư¼ö ¹®ÀÚµéÀ» ¹ß»ý½Ãų ¼ö ÀÖ½À´Ï´Ù. ASCII ¹®ÀÚµéÀ» ¹ß»ý½ÃÅ°·Á¸é, 1ºÎÅÍ 255 »çÀÌÀÇ ¼ýÀÚ¸¦ ÁöÁ¤ÇϽʽÿÀ. (´ëºÎºÐÀÇ ¾ð¾î¿¡ Ç¥ÁØÀÎ) ANSI ¹®ÀÚ¸¦ ¹ß»ý½ÃÅ°·Á¸é, 128ºÎÅÍ 255 »çÀÌÀÇ ¼ýÀÚ¸¦ ÁöÁ¤ÇϵÇ, ¾Õ¿¡ 0À» µ¡ºÙÀ̽ʽÿÀ. ¿¹, {Asc 0133}.

+

À¯´ÏÄÚµå ¹®ÀÚ´Â 256ºÎÅÍ 65535 »çÀÌÀÇ ¼ýÀÚ¸¦ ÁöÁ¤ÇØ ¹ß»ý½Ãų ¼ö ÀÖ½À´Ï´Ù (¾Õ¿¡ 0À» ºÙÀÌÁö ¾ÊÀ½). ±×·¸Áö¸¸, ÀÌ ¹æ¹ýÀº ¸ðµç ¾îÇø®ÄÉÀ̼ǿ¡¼­ Áö¿øµÇÁö´Â ¾Ê½À´Ï´Ù. ´ë¾ÈÀº ¾Æ·¡ ¼½¼ÇÀ» ÂüÁ¶ÇϽʽÿÀ.

{U+nnnn}

[AHK_L 24+]: À¯´ÏÄÚµå ¹®ÀÚ¸¦ Àü¼ÛÇÕ´Ï´Ù. nnnnÀº ¾Õ¿¡ 0À» Á¦¿ÜÇÏ°í ¹®ÀÚÀÇ ½ÊÀ°Áø °ªÀÔ´Ï´Ù. À¯´ÏÄÚµå ¹öÀüÀÇ ¿ÀÅäÇÖÅ°¿¡¼­´Â ÀÚµ¿À¸·Î Send¿Í ControlSendÀÌ À¯´ÏÄÚµå ÅؽºÆ®¸¦ Áö¿øÇϱ⠶§¹®¿¡ ÀÌ ¹æ¹ýÀÌ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù.

+

¹®ÀÚ°¡ °¡»ó Å°º¸µå¿¡ ¦Áö¾îÁöÁö ¾Ê´Â´Ù¸é, SendInput() ¶Ç´Â WM_CHARÀ» ÀÌ¿ëÇØ ±× ¹®ÀÚ¸¦ Àü¼ÛÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇöÀçÀÇ Send ¸ðµå´Â ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù.

{vkXX}
+ {scYYY}
+ {vkXXscYYY}

°¡»ó Å° XX¿Í ½ºÄµ ÄÚµå YYYÀÎ Å°´­¸²À» Àü¼ÛÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: Send {vkFFsc159}. sc ¶Ç´Â vk ºÎºÐÀ» »ý·«Çϸé, ±× ÀÚ¸®¿¡ °¡Àå ÀûÀýÇÑ °ªÀÌ Àü¼ÛµË´Ï´Ù.

+

XX¿Í YYY¿¡ ´ëÇÑ °ªµéÀº ½ÊÀ°Áø¼öÀÌ°í º¸Åë ¸ÞÀΠâÀÌ View->Key history ¸Þ´º Ç׸ñÀ» ÅëÇÏ¿© ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½µµ ÂüÁ¶: Ư¼ö Å°

  
{Numpad0} - {Numpad9}³ÑÆÐµå ¼ýÀÚ Å° (NumlockÀ» ÄÑ¸é º¸ÀÓ). ¿¹¸¦ µé¾î: {Numpad5}´Â ¼ýÀÚ 5ÀÔ´Ï´Ù.
{NumpadDot}³ÑÆеå Á¡ (NumlockÀ» ÄÑ¸é º¸ÀÓ).
{NumpadEnter}Å°ÆеåÀÇ ¿£ÅÍ Å°
{NumpadMult}³ÑÆÐµå °ö¼À Å°
{NumpadDiv}³ÑÆÐµå ³ª´°¼À Å°
{NumpadAdd}³ÑÆÐµå µ¡¼À Å°
{NumpadSub}³ÑÆÐµå »¬¼À Å°
  
{NumpadDel}Å°ÆеåÀÇ »èÁ¦ Å° (ÀÌ Å°¿Í ¾Æ·¡ÀÇ ³ÑÆеå Å°µéÀº NumlockÀÌ ²¨Á® ÀÖÀ» ¶§ »ç¿ëµË´Ï´Ù)
{NumpadIns}Å°ÆеåÀÇ »ðÀÔ Å°
{NumpadClear}Å°ÆеåÀÇ ¼Ò°Å Å° (º¸Åë NumlockÀÌ ²¨Á® ÀÖÀ» ¶§ '5' Å°).
{NumpadUp}Å°ÆеåÀÇ À§ È­»ìÇ¥ Å°
{NumpadDown}Å°ÆеåÀÇ ¾Æ·¡ È­»ìÇ¥ Å°
{NumpadLeft}Å°ÆеåÀÇ ¿ÞÂÊ È­»ìÇ¥ Å°
{NumpadRight}Å°ÆеåÀÇ ¿À¸¥ÂÊ È­»ìÇ¥ Å°
{NumpadHome}Å°ÆеåÀÇ È¨ Å°
{NumpadEnd}Å°ÆеåÀÇ ¿£µå Å°
{NumpadPgUp}Å°ÆеåÀÇ ÆäÀÌÁö-¾÷ Å°
{NumpadPgDn}Å°ÆеåÀÇ ÆäÀÌÁö-´Ù¿î Å°
  
{Browser_Back}ºê¶ó¿ìÀúÀÇ "back" ¹öÆ°
{Browser_Forward}ºê¶ó¿ìÀúÀÇ "forward" ¹öÆ°
{Browser_Refresh}ºê¶ó¿ìÀúÀÇ "refresh" ¹öÆ°
{Browser_Stop}ºê¶ó¿ìÀúÀÇ "stop" ¹öÆ°
{Browser_Search}ºê¶ó¿ìÀúÀÇ "search" ¹öÆ°
{Browser_Favorites}ºê¶ó¿ìÀúÀÇ "favorites" ¹öÆ°
{Browser_Home}ºê¶ó¿ìÀú¸¦ ±âµ¿ÇÏ°í ȨÆäÀÌÁö·Î °©´Ï´Ù
{Volume_Mute}¸¶½ºÅÍ º¼·ý À½¼Ò°Å. º¸Åë SoundSet, +1, , mute¿Í µ¿µîÇÔ.
{Volume_Down}¸¶½ºÅÍ º¼·ýÀ» ÁÙÀÔ´Ï´Ù. º¸Åë SoundSet -5¿Í µ¿µî.
{Volume_Up}¸¶½ºÅÍ º¼·ýÀ» ³ôÀÔ´Ï´Ù. º¸Åë SoundSet +5¿Í µ¿µîÇÔ.
{Media_Next}¹Ìµð¾î Ç÷¹À̾¼­ ´ÙÀ½ Æ®·¢À¸·Î
{Media_Prev}¹Ìµð¾î Ç÷¹À̾¼­ ÀÌÀü Æ®·¢À¸·Î
{Media_Stop}¹Ìµð¾î Ç÷¹À̾î ÁßÁö
{Media_Play_Pause}¹Ìµð¾î Ç÷¹À̾î Á¤Áö/¿¬ÁÖ
{Launch_Mail}À̸ÞÀÏ ¾îÇø®ÄÉÀÌ¼Ç ±âµ¿
{Launch_Media}¹Ìµð¾î Ç÷¹ÀÌ¾î ±âµ¿
{Launch_App1}»ç¿ëÀÚ app1 ±âµ¿
{Launch_App2}»ç¿ëÀÚ app2 ±âµ¿
  
{PrintScreen}È­¸é Àμâ
{CtrlBreak}Ctrl+break
{Pause}Á¤Áö
  
{Click [Options]}
+ [v1.0.43+]
Click ¸í·É¾î¿Í °°Àº ¿É¼ÇÀ» »ç¿ëÇÏ¿© ¸¶¿ì½º Ŭ¸¯À» Àü¼ÛÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, {Click}Àº ¸¶¿ì½º Ä¿¼­ÀÇ ÇöÀç À§Ä¡¿¡ ¿Þ ¸¶¿ì½º ¹öÆ°À» ÇÑ ¹ø Ŭ¸¯ÇÕ´Ï´Ù. ±×¸®°í {Click 100, 200}´Â ÁÂÇ¥ 100, 200¿¡ Ŭ¸¯ÇÕ´Ï´Ù (CoordMode¿¡ ±â¹Ý). Ŭ¸¯ ¾øÀÌ ¸¶¿ì½º¸¦ À̵¿½ÃÅ°·Á¸é, ÁÂÇ¥ ´ÙÀ½¿¡ 0À» ÁöÁ¤ÇϽʽÿÀ; ¿¹¸¦ µé¾î: {Click 100, 200, 0}. ¸¶¿ì½º Ŭ¸¯ »çÀÌÀÇ Áö¿¬ ½Ã°£Àº SetMouseDelay·Î °áÁ¤µË´Ï´Ù (SetKeyDelay·Î °áÁ¤µÇÁö ¾Ê½À´Ï´Ù).
{WheelDown}, {WheelUp}, {WheelLeft}, {WheelRight}, {LButton}, {RButton}, {MButton}, {XButton1}, {XButton2}Ä¿¼­ÀÇ ÇöÀç À§Ä¡¿¡ ¸¶¿ì½º ¹öÆ° À̺¥Æ®¸¦ Àü¼ÛÇÕ´Ï´Ù (À§Ä¡¿Í ±âŸ ¿É¼Ç¿¡ °üÇÏ¿© ÅëÁ¦ÇÏ·Á¸é, À§ÀÇ {Click}À» »ç¿ëÇϽʽÿÀ). ¸¶¿ì½º Ŭ¸¯ »çÀÌÀÇ Áö¿¬ ½Ã°£Àº SetMouseDelayÀ¸·Î °áÁ¤µË´Ï´Ù. WheelLeft/Right´Â v1.0.48+À» ¿ä±¸ÇÏÁö¸¸, Windows Vista ¹Ì¸¸ÀÇ ¿î¿µ üÁ¦¿¡¼­´Â ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù.
{Blind}

¹®ÀÚ¿­¿¡¼­ {Blind}°¡ ù Ç׸ñÀ̸é, ÇÁ·Î±×·¥Àº Alt/Control/Shift/Win Å°°¡ ´­¸° »óÅ¿¡¼­ ½ÃÀÛÇßÀ» °æ¿ì ¶¼·Á°í ÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, ÇÖÅ° +s::Send {Blind}abc´Â abc°¡ ¾Æ´Ï¶ó ABC¸¦ Àü¼ÛÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é »ç¿ëÀÚ°¡ Shift Å°¸¦ ´©¸£°í Àֱ⠶§¹®ÀÔ´Ï´Ù.

+

{Blind}´Â ¶ÇÇÑ SetStoreCapslockMode¸¦ ¹«½ÃÇÕ´Ï´Ù; Áï, CapslockÀÇ »óÅ°¡ ¹Ù²îÁö ¾Ê½À´Ï´Ù. ¸¶Áö¸·À¸·Î, {Blind}´Â Ãß°¡ Control Å°´­¸²À» »ý·«ÇÕ´Ï´Ù; ±×·¯¹Ç·Î: 1) LWin/RWin Å°¸¦ ´­·¯µµ ½ÃÀÛ ¸Þ´º°¡ Ã˹ߵÇÁö ¾Ê½À´Ï´Ù; 2) Alt Å°¸¦ ´­·¯µµ ¸Þ´º ¹Ù°¡ È°¼ºÈ­µÇÁö ¾Ê½À´Ï´Ù.

+

¸Í¸ñ-¸ðµå´Â Å°¸¦ ¸®¸ÊÇÎÇÒ ¶§ ³»ºÎÀûÀ¸·Î »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î, ¸®¸ÊÇÎ a::b´Â: 1) "a"¸¦ ŸÀÚÇϸé "b"¸¦ »ý»êÇÏ°í; 2) ´ë¹®ÀÚ A¸¦ ŸÀÚÇÏ¸é ´ë¹®ÀÚ B¸¦ »ý»êÇϸç ; ±×¸®°í 3) Control-A¸¦ ŸÀÚÇϸé Control-B¸¦ »ý»êÇÕ´Ï´Ù.

+

{Blind}´Â SendRaw°ú ControlSendRaw°¡ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. °Ô´Ù°¡, SendPlayµµ ¿Ïº®ÇÏ°Ô´Â Áö¿øÇÏÁö ¸øÇÕ´Ï´Ù. ƯÈ÷ ¼ö½Ä Å°µéÀ» ´Ù·ê ¶§ (Control, Alt, Shift, ±×¸®°í Win) Áö¿øÇÏÁö ¸øÇÕ´Ï´Ù.

{Raw}
+ [v1.0.43+]
Å°´­¸²À» º¸ÀÌ´Â ±×´ë·Î Àü¼ÛÇÕ´Ï´Ù. {Enter}¸¦ ENTER Å°´­¸²À¸·Î º¯È¯ÇÏÁö ¾Ê°í, ^c¸¦ Control-C·Î º¯È¯ÇÏÁö ¾Ê½À´Ï´Ù, µîµî. ¹®ÀÚ¿­ {Raw}´Â ¹®ÀÚ¿­ÀÇ ½ÃÀÛºÎÅÍ ÀϾ ÇÊ¿ä´Â ¾øÁö¸¸, ÀÏ´Ü ÁöÁ¤µÇ¸é, ¹®ÀÚ¿­ÀÇ ³ª¸ÓÁö¿¡ È¿°ú¸¦ À¯ÁöÇÕ´Ï´Ù.
+ +

Å°¸¦ ¹Ýº¹Çϱ⠶Ǵ Ű¸¦ ´©¸£°í ÀÖ±â

+

+Å°¸¦ ¹Ýº¹ÇÏ·Á¸é: Å°ÀÇ À̸§¿¡ È°°ýÈ£¸¦ µÎ¸£°í ´ÙÀ½¿¡ ¹Ýº¹ÇÒ È½¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
Send {DEL 4}  ; Delete Å°¸¦ 4 ¹ø ´©¸¨´Ï´Ù.
+Send {S 30}   ; ´ë¹®ÀÚ S¸¦ 30°³ Àü¼ÛÇÕ´Ï´Ù.
+Send +{TAB 4}  ; Shift-TabÀ» 4 ¹ø ´©¸¨´Ï´Ù.
+

+Å°¸¦ ´©¸£°í Àְųª ¶¼±â: Å°ÀÇ À̸§À» È°°ýÈ£·Î µÑ·¯½Î°í ´ÙÀ½¿¡ ´Ü¾î Down ¶Ç´Â UpÀ» ÁöÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
Send {b down}{b up}
+Send {TAB down}{TAB up}
+Send {Up down}  ; À§ È­»ìÇ¥ Å°¸¦ ´©¸¨´Ï´Ù.
+Sleep 1000  ; 1ÃÊ µ¿¾È ´©¸£°í ÀÖ½À´Ï´Ù.
+Send {Up up}  ; À§ È­»ìÇ¥ Å°¸¦ ¶Á´Ï´Ù.
+

+Å°°¡ À§ÀÇ ¹æ¹ýÀ» ÅëÇÏ¿© ´­¸± ¶§, ÀÚµ¿ ¹Ýº¹À» ½ÃÀÛÇÏÁö ¾Ê½À´Ï´Ù. ¹Ý¸é¿¡ ¹°¸®ÀûÀ¸·Î Å°¸¦ ´©¸£°í ÀÖÀ¸¸é ÀÚµ¿ ¹Ýº¹À» ½ÃÀÛÇÕ´Ï´Ù (ÀÌ°ÍÀº ÀÚµ¿-¹Ýº¹ÀÌ µå¶óÀ̹ö/Çϵå¿þ¾îÀÇ Æ¯Â¡À̱⠶§¹®ÀÔ´Ï´Ù). ±×·¸Áö¸¸, Loop¸¦ »ç¿ëÇϸé ÀÚµ¿ ¹Ýº¹À» Èä³»³¾ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â 20 °³ÀÇ ÅÇ Å°´­¸²À» Àü¼ÛÇÕ´Ï´Ù:

+
Loop 20
+{
+    Send {Tab down}  ; ÀÚµ¿-¹Ýº¹Àº ¿¬¼ÓÀûÀÎ ´©¸£±â À̺¥Æ®·Î ±¸¼ºµË´Ï´Ù (¾÷-À̺¥Æ® ¾øÀ½).
+    Sleep 30  ; Å° ´­¸² »çÀÌ¿¡ ´ë±âÇÏ´Â ¹Ð¸® ÃÊ (¶Ç´Â SetKeyDelay¸¦ »ç¿ëÇϽʽÿÀ).
+}
+Send {Tab up}  ; Å°¸¦ ¶Á´Ï´Ù.
+

+´Ü¾î DownTempµµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×ÀÇ È¿°ú´Â ¼ö½Ä (Control/Shift/Alt/Win) Å°¸¦ Á¦¿ÜÇÏ°í Down°ú ¶È °°½À´Ï´Ù. + +±×·± °æ¿ì, DownTemp´Â ¿¬ÀÌÀº Àü¼Û¿¡ Å°°¡ ¿µ±¸È÷ ´­·Á ÀÖ´Â °ÍÀº ¾Æ´Ï¸ç, ±×·¯¹Ç·Î Å°´­¸²ÀÌ ¿ä±¸ÇÏ¸é ¾ðÁ¦µçÁö ¶¼¾îµµ ÁÁ´Ù°í ¾Ë·ÁÁÝ´Ï´Ù. ¿¹¸¦ µé¾î, Send {Control DownTemp} ´ÙÀ½¿¡ Send a°¡ µû¶ó¿À¸é º¸ÅëÀÇ "a" Å°´­¸²À» »ý»êÇϸç, control-A Å°´­¸²À» »ý»êÇÏÁö ¾Ê½À´Ï´Ù.

+ +

ÃÑÆò

+

+Send ¸í·É¾î°¡ Áö¿øÇÏ´Â ¹®ÀÚ¿¡ Ưº°ÇÑ Á¦ÇÑÀº ¾ø½À´Ï´Ù. ¹®ÀÚ°¡ ÇöÀç Å°º¸µå ·¹À̾ƿô¿¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ¿ÀÅäÇÖÅ° ¹öÀü¿¡ µû¶ó À¯´ÏÄÚµå ¹®ÀÚ ÆÐŶ ¶Ç´Â Alt+nnnnn Á¶ÇÕÀ» Àü¼ÛÇØ Èä³»³¾ ¼ö ÀÖ½À´Ï´Ù. À¯´ÏÄÚµå ¹®ÀÚ´Â ÅؽºÆ®·Î À¯´ÏÄÚµå ¹öÀüÀÇ ¿ÀÅäÇÖÅ°¿¡¼­ Á÷Á¢ÀûÀ¸·Î Áö¿øÇÕ´Ï´Ù. ¶Ç´Â ´Ù¸¥ ¹öÀüÀ̶ó¸é {U+nnnn} Ç¥±â¹ýÀ» »ç¿ëÇÏ¸é µË´Ï´Ù.

+

+SendInput/SendPlay¿Í ºñ±³ÇÑ BlockInput: BlockInput ¸í·É¾î´Â »ç¿ëÀÚ°¡ ¹°¸®ÀûÀ¸·Î ŸÀÚÇÏ´Â Å° ´­¸²ÀÌ Èä³»³½ Å°´­¸²¿¡ ¹æÇظ¦ ¹ÞÁö ¾Êµµ·Ï ¸·¾Æ ÁÖÁö¸¸, Á¾Á¾ SendInputÀ̳ª SendPlay¸¦ »ç¿ëÇÏ¸é ´õ ÁÁÀº °æ¿ì°¡ ÀÖ½À´Ï´Ù. Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯ÀÌ ÀÎÅÍ·´Æ®°¡ ºÒ°¡´ÉÇÕ´Ï´Ù. BlockInput°ú ´Ù¸£°Ô, SendInput/Play ´Â Àü¼ÛÇÏ´Â µ¿¾È »ç¿ëÀÚ°¡ ŸÀÚÇÑ Å°µéÀ» ¹ö¸®Áö ¾Ê½À´Ï´Ù; ´ë½Å, ±×·± Å°µéÀº ¹öÆÛ Ã³¸®µÇ¾ú´Ù°¡ ³ªÁß¿¡ Àü¼ÛµË´Ï´Ù.

+

+¾öû³ª°Ô ¸¹Àº Å°´­¸²À» Àü¼ÛÇÒ °æ¿ì, °è¼Ó ¼½¼ÇÀ» »ç¿ëÇÏ¸é °¡µ¶¼º°ú À¯Áö°ü¸®¼ºÀ» °³¼±ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+¿î¿µ üÁ¦´Â CTRL-ALT-DELETE Á¶ÇÕÀ» Çã¿ëÇÏÁö ¾Ê±â ¶§¹®¿¡, Send ^!{Delete}¿Í °°ÀÌ ÇÏ´õ¶óµµ ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù.

+

+Send´Â ¾Æ¹« È¿°ú°¡ ¾øÀ» ¼ö ÀÖ½À´Ï´Ù Windows Vista ÀÌÈÄ È°¼º âÀÌ °ü¸®ÀÚ ±ÇÇÑÀ¸·Î ½ÇÇàÁßÀε¥ ½ºÅ©¸³Æ®´Â °ü¸®ÀÚ ±ÇÇÑÀÌ ¾øÀ¸¸é ±×·¸½À´Ï´Ù. ÀÌ°ÍÀº »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º ±ÇÇÑ °Ý¸®(User Interface Privilege Isolation) º¸¾È ¸ÅÄ¿´ÏÁò ¶§¹®ÀÔ´Ï´Ù.

+ +

SendInput [v1.0.43+]

+

+SendInputÀº ÀϹÝÀûÀ¸·Î Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯À» Àü¼ÛÇÏ´Â µ¥ ¼±È£µÇ´Â ¹æ¹ýÀÔ´Ï´Ù. ¿Ö³ÄÇÏ¸é ¼Óµµ°¡ ¿ùµîÇÏ°í ½Å·Ú¼ºÀÌ Àֱ⠶§¹®ÀÔ´Ï´Ù. ´ëºÎºÐÀÇ »óȲ¿¡¼­, SendInputÀº °ÅÀÇ Áï½Ã ½ÇÇàµË´Ï´Ù. ±â´Ù¶õ ¹®ÀÚ¿­À» º¸³»µµ ¼ø½Ä°£ÀÔ´Ï´Ù. SendInputÀº ºü¸£±â ¶§¹®¿¡, ´õ ½Å·Ú¼ºÀÌ ÀÖ½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ´Ù¸¥ âÀÌ ÀǵµÄ¡ ¾Ê°Ô ³ªÅ¸³ª°Å³ª Å°´­¸²À» °¡·Î ä´Â ºóµµ°¡ ÁÙ¾îµé±â ¶§¹®ÀÔ´Ï´Ù. SendInput µ¿¾È¿¡ »ç¿ëÀÚ°¡ ŸÀÚÇÏ¸é ¿¬±âµÇ¾ú´Ù°¡ ³ªÁß¿¡ 󸮵ǹǷΠ½Å·Ú¼ºÀº ´õ¿í °³¼±µË´Ï´Ù.

+

+´Ù¸¥ Àü¼Û ¸ðµå¿Í ´Ù¸£°Ô, ¿î¿µ üÁ¦´Â SendInputÀ» ´ë·« 5000 ¹®ÀÚ·Î Á¦ÇÑÇÕ´Ï´Ù (ÀÌ °ªÀº ¿î¿µ üÁ¦ÀÇ ¹öÀü°ú ¼öÇ༺´É ¼³Á¤¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù). ÀÌ Á¦ÇÑÀ» ³Ñ¾î¼­ ¹®ÀÚµé°ú À̺¥Æ®µéÀº Àü¼ÛµÇÁö ¾Ê½À´Ï´Ù.

+

+ÁÖÀÇ: SendInputÀº SetKeyDelay¸¦ ¹«½ÃÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ¿î¿µ üÁ¦°¡ ÀÌ ¸ðµå¿¡¼­´Â Áö¿¬ ½Ã°£À» Áö¿øÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ±×·¸Áö¸¸, ¾Æ·¡¿¡ ±â¼úÇÑ »óȲ ¾Æ·¡¿¡¼­ SendInputÀº SendEvent¿¡ ÀÇÁ¸ÇÕ´Ï´Ù. SendEvent´Â SetKeyDelay -1, 0¸¦ »ç¿ëÇÕ´Ï´Ù + +(´Ü, SendEventÀÇ Å° Áö¿¬½Ã°£ÀÌ(KeyDelay) -1,-1ÀÎ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù. ÀÌ °æ¿ì´Â -1,-1ÀÌ »ç¿ëµË´Ï´Ù). + +SendInputÀÌ SendPlay¿¡ ÀÇÁ¸ÇÒ ¶§, SendPlayÀÇ Å° Áö¿¬½Ã°£(KeyDelay)À» »ç¿ëÇÕ´Ï´Ù.

+

+SendInputÀ» ½ÇÇàÇÏ´Â ½ºÅ©¸³Æ®¿¡ Àú-¼öÁØ Å°º¸µå °¥°í¸®°¡ ¼³Ä¡µÇ¾î ÀÖ´Ù¸é, SendInputÀº ÀÚµ¿À¸·Î SendEvent¿¡ ÀÇÁ¸ÇÕ´Ï´Ù (¾Æ´Ï¸é SendMode InputThenPlay°¡ ÄÑÁ® ÀÖÀ» °æ¿ì¶ó¸é SendPlay¿¡ ÀÇÁ¸ÇÕ´Ï´Ù). ¿ÜºÎ °¥°í¸®ÀÇ Á¸Àç ¶§¹®¿¡ SendInputÀÇ ¸ðµç ÀåÁ¡ÀÌ °¡·ÁÁý´Ï´Ù. ±× ¶§¹®¿¡ SendPlay¿Í SendEvent¿¡ ºñÇØ ¿­µîÇÕ´Ï´Ù. ±×·¸Áö¸¸, SendInputÀº AutoHotkey v1.0.43+ÀÌ ¾Æ´Ï¶ó¸é Àú-¼öÁØ °¥°í¸®¸¦ ŽÁöÇÒ ¼ö ¾ø±â ¶§¹®¿¡, ÀÌ·± °æ¿ì´Â ÀÇÁ¸ÇÒ °ÍÀÌ ¾øÀ¸¹Ç·Î SendPlay/Event º¸´Ù ½Å·Ú¼ºÀÌ ´õ ¶³¾îÁý´Ï´Ù.

+

+SendInputÀÌ {Click}¿Í °°Àº ¼ö´ÜÀ» ÅëÇÏ¿© ¸¶¿ì½º Ŭ¸¯À» Àü¼ÛÇÒ ¶§ ±×¸®°í CoordMode Mouse, Relative°¡ ÄÑÁ® ÀÖÀ» ¶§ (±âº»°ª), ¸ðµç Ŭ¸¯Àº Àü¼ÛÀÌ ½ÃÀÛµÉ ¶§ È°¼ºÈ­ µÈ â¿¡ »ó´ëÀûÀÔ´Ï´Ù. ±×·¯¹Ç·Î, SendInputÀÌ ÀǵµÀûÀ¸·Î (¾ËÆ®-ÅÇ °°Àº ¼ö´ÜÀ¸·Î) ¶Ç´Ù¸¥ âÀ» È°¼ºÈ­Çϸé, °°Àº ¸í·É¾î ¾È¿¡¼­ ¿¬ÀÌÀº Ŭ¸¯ÀÇ ÁÂÇ¥µéÀº ¿À·ù°¡ ÀϾ´Ï´Ù. ¿Ö³ÄÇÏ¸é ¿©ÀüÈ÷ »õ âÀÌ ¾Æ´Ï¶ó ¿¹Àü â¿¡ »ó´ëÀûÀ̱⠶§¹®ÀÔ´Ï´Ù.

+ +

SendPlay [v1.0.43+]

+

+SendPlayÀÇ °¡Àå Å« ÀåÁ¡Àº ´Ù¸¥ ¸ðµå¿Í ´Ù¸£°Ô ±¤¹üÀ§ÇÑ °ÔÀÓ¿¡¼­ ¸¶¿ì½º Ŭ¸¯°ú Å°´­¸²À» "Àç½Ã¿¬"ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ƯÁ¤ÇÑ °ÔÀÓÀº ¿ÀÁ÷ SendPlay ¿É¼ÇÀÌÀÌ ÀÖÀ» °æ¿ì¿¡¸¸ ÇÖ½ºÆ®¸µÀ» ¹Þ¾Æ µéÀÔ´Ï´Ù. ±×·¸Áö¸¸, SendPlay´Â Windows Vista ÀÌÈÄ¿¡¼­ »ç¿ëÀÚ °èÁ¤ ÅëÁ¦(User Account Control)°¡ ÄÑÁ® ÀÖÀ¸¸é, ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù. ½ºÅ©¸³Æ®°¡ »ç¿ëÀÚ ±ÇÇÑÀ¸·Î ½ÇÇàµÇ¾îµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. ´ÙÀ½ ½ºÅ©¸³Æ®´Â ÀÌ ¹®Á¦ÀÇ ¿ìȸåÀ» Á¦°øÇÕ´Ï´Ù: http://www.autohotkey.com/forum/topic75595.html.

+

+¼¼ °¡Áö Àü¼Û ¸ðµå Áß¿¡¼­, SendPlay°¡ °¡Àå ÀÌ»óÇÕ´Ï´Ù. ¿Ö³ÄÇϸé Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯À» »ç½Ç»ó Èä³»³»Áö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ´ë½Å¿¡, ÀÏ·ÃÀÇ À̺¥Æ® (¸Þ½ÃÁö)¸¦ ¸¸µé¾î ³À´Ï´Ù. ±× ¸Þ½ÃÁöµéÀÌ È°¼º âÀ¸·Î Á÷Á¢ Èê·¯ µé¾î°©´Ï´Ù (ControlSend¿Í ºñ½ÁÇÏ°Ô, ±×·¯³ª ³·Àº ¼öÁØ¿¡¼­). °á°úÀûÀ¸·Î, SendPlay´Â ÇÖÅ°³ª ÇÖÆ®¸µÀ» Ã˹߽ÃÅ°Áö ¾Ê½À´Ï´Ù.

+

+SendInputó·³, SendPlayÀÇ Å°´­¸²Àº »ç¿ëÀÚ°¡ ŸÀÚÇÑ Å°´­¸² ¶§¹®¿¡ Èð¾îÁöÁö ¾Ê½À´Ï´Ù. ±×·¡¼­, »ç¿ëÀÚ°¡ ¾î¼´Ù°¡ SendPlay Áß¿¡ ŸÀÚ¸¦ ÇÏ´õ¶óµµ, ±×·± Å°´­¸²Àº ¿¬±âµÇ¾ú´Ù°¡ ³ªÁß¿¡ 󸮵˴ϴÙ.

+

+SendPlay´Â SendInput¿¡ ºñÇØ »ó´çÈ÷ ´À¸³´Ï´Ù. ±×·¯³ª º¸Åë ÀüÅëÀûÀÎ SendEvent ¸ðµå º¸´Ù´Â ºü¸¨´Ï´Ù (KeyDelay°¡ -1ÀÏ °æ¿ì¿¡µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù).

+

+Windows Å° (LWin ±×¸®°í RWin)´Â Å°º¸µå °¥°í¸®°¡ ¼³Ä¡µÇ¾î ÀÖÀ¸¸é SendPlay µ¿¾È ÀÚµ¿À¸·Î ¸·Èü´Ï´Ù. ÀÌ ´öºÐ¿¡ Àü¼ÛÇÏ´Â µ¿¾È¿¡ »ç¿ëÀÚ°¡ ¿ì¹ßÀûÀ¸·Î Windows Å°¸¦ ´­·¯µµ ½ÃÀÛ ¸Þ´º°¡ ³ªÅ¸³ªÁö ¾Ê½À´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, LWin¿Í RWin ¸»°í ´Ù¸¥ Å°µéÀº ¸·¾ÆÁÙ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ¿î¿µ üÁ¦°¡ ÀÚµ¿À¸·Î Å°µéÀ» (¹öÆÛ Ã³¸®ÇÏ¿©) SendPlay°¡ ³¡³¯ ¶§±îÁö ¿¬±âÇØ Áֱ⠶§¹®ÀÔ´Ï´Ù.

+

+SendPlay´Â SetKeyDelay¿Í SetMouseDelayÀÇ Ç¥ÁØ ¼³Á¤À» »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. ´ë½Å¿¡, ±âº»°ªÀ¸·Î ÀüÇô ´ë±â ½Ã°£ÀÌ ¾ø½À´Ï´Ù. ÀÌ ´ë±â ½Ã°£Àº ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù:

+ +
SetKeyDelay, 0, 10, Play  ; SendPlay ¸ðµå¿¡¼­´Â 0°ú -1ÀÌ °°À½À» ÁÖ¸ñÇϽʽÿÀ.
+SetMouseDelay, 10, Play
+

+SendPlay´Â Capslock, Numlock, ¶Ç´Â Scroll-lock Å°¸¦ ÄÑ°í ²ø ¼ö ¾ø½À´Ï´Ù. ºñ½ÁÇÏ°Ô, GetKeyState·Î º¸ÀÌ´Â Å°ÀÇ »óŸ¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù. +´Ü, ±× Å°´­¸²µéÀÌ ½ºÅ©¸³Æ®ÀÇ Ã¢ Áß¿¡ Çϳª·Î Àü¼ÛµÈ´Ù¸é ¿¹¿ÜÀÔ´Ï´Ù. ±× ¶§±îÁö, ¿ÞÂÊ/¿À¸¥ÂÊ ¼ö½ÄÅ°¿¡ º¯È­°¡ ÀÖ´Ù¸é (¿¹, RControl) ¿ÀÁ÷ ÁÂ¿ì ±¸ºÐ ¾ø´Â ¼ö½ÄÅ°¸¦ ÅëÇؼ­¸¸ ŽÁöÇÒ ¼ö ÀÖ½À´Ï´Ù (¿¹, Control). ¶Ç, SendPlay´Â SendMode ÆäÀÌÁö¿¡ ±â¼úµÈ ´Ù¸¥ Á¦Çѵµ ÀÖ½À´Ï´Ù.

+

+SendInput ±×¸®°í SendEvent°ú ´Ù¸£°Ô, »ç¿ëÀÚ´Â Control-Alt-DelÀ̳ª Control-Escape¸¦ ´­·¯¼­ SendPlay¸¦ ÀÎÅÍ·´Æ®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± ÀÏÀÌ ÀϾ ¶§, ³ª¸ÓÁö Å°´­¸²Àº Àü¼ÛµÇÁö ¾ÊÁö¸¸ ½ºÅ©¸³Æ®¸¥ ¸¶Ä¡ SendPlay°¡ Á¤»óÀûÀ¸·Î Àü¼ÛÀ» ¿Ï·áÇÑ °Íó·³ ½ÇÇàÀ» °è¼ÓÇÕ´Ï´Ù.

+

+SendPlay´Â send LWin°ú RWin À̺¥Æ®¸¦ º¸³¾ ¼ö ÀÖÁö¸¸, â¿¡ Á÷Á¢ÀûÀ¸·Î Àü¼ÛÇÕ´Ï´Ù. ¿î¿µ üÁ¦ °íÀ¯ÀÇ ±â´ÉÀ» ¼öÇàÇÏÁö ¾Ê½À´Ï´Ù. À̸¦ ¿ìȸÇÏ·Á¸é SendEvent¸¦ »ç¿ëÇϽʽÿÀ. ¿¹¸¦ µé¾î, SendEvent #r´Â ½ÃÀÛ ¸Þ´ºÀÇ ½ÇÇà ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÙ °ÍÀÔ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+SendMode, SetKeyDelay, SetStoreCapslockMode, ÇǽŠ¿¬¼Ó¿­ (¿¹, `%), ControlSend, BlockInput, ÇÖ½ºÆ®¸µ, WinActivate

+ +

¿¹Á¦

+
Send Sincerely,{enter}John Smith  ; µÎ ÁÙÀÇ ¼­¸íÀ» ŸÀÚÇÕ´Ï´Ù.
+Send !fs ; File->Save ¸Þ´º¸¦ ¼±ÅÃÇÕ´Ï´Ù (Alt+F¸¦ ´©¸¥ ´ÙÀ½ S).
+Send {End}+{Left 4} ; ÅؽºÆ® ³¡À¸·Î Á¡ÇÁÇؼ­ ³× °³ÀÇ shift+left-arrow Å°´­¸²À» Àü¼ÛÇÕ´Ï´Ù.
+SendInput {Raw}±â´Ù¶õ ³¯ ¹®ÀÚ¿­µéÀÌ ºü¸¥ ¹æ¹ýÀ» »ç¿ëÇÏ¿© Àü¼ÛµÊ (SendInput).
+ + + diff --git a/src/docs/commands/SendLevel.htm b/src/docs/commands/SendLevel.htm new file mode 100644 index 0000000..a520edf --- /dev/null +++ b/src/docs/commands/SendLevel.htm @@ -0,0 +1,59 @@ + + + + +SendLevel + + + + + + + +

SendLevel [v1.1.06+]

+

ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀÌ ¹«½ÃÇÏ´Â ÀÎÀ§ÀûÀÎ Å°º¸µå ±×¸®°í ¸¶¿ì½º À̺¥Æ®¸¦ Á¦¾îÇÕ´Ï´Ù.

+
SendLevel, Level
+ +

¸Å°³º¯¼ö

+
+ +
Level
+

0ºÎÅÍ 100 »çÀÌÀÌ Á¤¼ö, Ç¥Çö½Ä °¡´É.

+ +
+ +

ÃÑÆò

+

+±âº»°ªÀ¸·Î, °¥°í¸®¿Í ÇÖÅ° ±×¸®°í ÇÖ½ºÆ®¸µÀº ¿ÀÅäÇÖÅ° ½ºÅ©¸³Æ®°¡ ¹ß»ý½ÃŲ Å°º¸µå¿Í ¸¶¿ì½º À̺¥Æ®¸¦ ¹«½ÃÇÕ´Ï´Ù. ¾î¶² °æ¿ì´Â ÀÌ ÇàÀ§¸¦ ¿À¹ö¶óÀ̵åÇϸé À¯¿ëÇÕ´Ï´Ù; ¿¹¸¦ µé¸é, ¸®¸Ê Å°¸¦ ´Ù¸¥ ÇÖÅ°¸¦ Ã˹߽ÃÅ°´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. SendLevel°ú #InputLevelÀº À̸¦ ¿Ï¼öÇÏ´Â ¼ö´ÜÀ» Á¦°øÇÕ´Ï´Ù.

+

+SendLevelÀº ÇöÀçÀÇ ½ºÅ©¸³Æ® ¾²·¹µå·Î ¹ß»ýµÈ À̺¥Æ®¿¡ ´ëÇÏ¿© ·¹º§À» ¼³Á¤ÇÕ´Ï´Ù. ¹Ý¸é¿¡ #InputLevelÀº ±× ¾Æ·¡¿¡ ÀÖ´Â ÇÖÅ°³ª ÇÖ½ºÆ®¸µ¿¡ ´ëÇÏ¿© ·¹º§À» ¼³Á¤ÇÕ´Ï´Ù. ½ºÅ©¸³Æ®°¡ ¹ß»ý½ÃŲ À̺¥Æ®°¡ ´Ù¸¥ ÇÖÅ°³ª ÇÖ½ºÆ®¸µÀ» Ã˹ßÇÒ ¼ö ÀÖÀ¸·Á¸é, À̺¥Æ®ÀÇ Àü¼Û ·¹º§ÀÌ ÇÖÅ°³ª ÇÖ½ºÆ®¸µÀÇ ÀÔ·Â ·¹º§º¸´Ù ´õ ³ô¾Æ¾ß ÇÕ´Ï´Ù.

+ +

ȣȯ¼º:

+
    +
  • SendPlay´Â SendLevel¿¡ ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù.
  • +
  • SendInputÀº SendLevel¿¡ ¿µÇâÀ» ¹Þ½À´Ï´Ù. ±×·¯³ª ½ºÅ©¸³Æ®ÀÇ °¥°í¸® ÇÖÅ°´Â SendInputÀÌ ÁøÇà ÁßÀÎ µ¿¾È È°¼ºÈ­µÉ ¼ö ¾ø½À´Ï´Ù. ¿Ö³ÄÇϸé SendInputÀÌ Àӽ÷Π°¥°í¸®¸¦ ²ô±â ¶§¹®ÀÔ´Ï´Ù.
  • +
  • "reg" ¹æ¹ýÀ» »ç¿ëÇÏ´Â ÇÖÅ°´Â ¹°¸®Àû ÀԷ°ú ÀÎÀ§Àû ÀÔ·ÂÀ» ±¸º°ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¡¼­ SendLevel¿¡ ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù. ±×·¸Áö¸¸, ·¹º§ÀÌ 0º¸´Ù ³ôÀº ÇÖÅ°´Â ¾ðÁ¦³ª Å°º¸µå ¶Ç´Â ¸¶¿ì½º °¥°í¸®¸¦ »ç¿ëÇÕ´Ï´Ù.
  • +
  • ÀÚµ¿-±³Ã¼ ÇÖ½ºÆ®¸µÀº ¾ðÁ¦³ª ·¹º§ 0¿¡¼­ Å°´­¸²À» ¹ß»ý½Ãŵ´Ï´Ù. ¿Ö³ÄÇÏ¸é ±³Ã¼ ÅؽºÆ®°¡ ¶Ç´Ù¸¥ ÇÖ½ºÆ®¸µ ¶Ç´Â ÇÖÅ°¸¦ Ã˹߽ÃÅ°´Â °ÍÀº º¸Åë ¹Ù¶÷Á÷ÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. À̸¦ ¿ìȸÇÏ·Á¸é, ºñ-ÀÚµ¿-±³Ã¼ ÇÖ½ºÆ®¸µ°ú Send ¸í·É¾î¸¦ »ç¿ëÇϽʽÿÀ.
  • +
  • ÇöÀç Å°º¸µå ·¹À̾ƿô¿¡ ÀÖ´Â Å°¿Í »óÀÀÇÏÁö ¾Ê´Â ¹®ÀÚ´Â ÇÖ½ºÆ®¸µÀ» Ã˹߽Ãų ¼ö ¾ø½À´Ï´Ù. SendLevelÀÌ »ç¿ëµÇ¾îµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. ÀÌ°ÍÀº ÇÖ½ºÆ®¸µ ÀνÄÀÚÀÇ ÇÑ°èÀÔ´Ï´Ù.
  • +
+

+»õ·Î ±âµ¿µÈ ÇÖÅ° ¶Ç´Â ÇÖ½ºÆ®¸µ ¾²·¹µå´Â Àü¼Û ·¹º§À» ÀÔ·Â ·¹º§°ú °°°Ô ¼³Á¤ÇÏ°í ½ÃÀÛÇÕ´Ï´Ù. »õ·Î ±âµ¿µÈ ´Ù¸¥ ¾²·¹µå´Â (¿¹¸¦ µé¾î ¸ÂÃã ¸Þ´º Ç׸ñ ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾ) ±âº» ¼³Á¤À» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ±âº»°ªÀº º¸Åë 0ÀÌÁö¸¸ ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡ ÀÌ ¸í·É¾îÀ» »ç¿ëÇÏ¿© ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+

+SendLevelÀÌ ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡ »ç¿ëµÇ¸é, Å°º¸µå¿Í ¸¶¿ì½º ¸®¸ÊÇο¡µµ ¿µÇâÀ» ÁÝ´Ï´Ù.

+

+v1.1.06 ¹Ì¸¸ ¹öÀü ¸¶Ä¡#InputLevel 0 ±×¸®°í SendLevel 0ÀÌ ÄÑÁø °Íó·³ ÇàÀ§ÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

#InputLevel, Send, Click, MouseClick, MouseClickDrag

+ +

¿¹Á¦

+
+SendLevel 1
+Send btw{Space} ; "by the way "¸¦ »ý»ê.
+
+; º°µµÀÇ ½ºÅ©¸³Æ®¿¡ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù:
+::btw::by the way
+
+ + + diff --git a/src/docs/commands/SendMode.htm b/src/docs/commands/SendMode.htm new file mode 100644 index 0000000..7d69b60 --- /dev/null +++ b/src/docs/commands/SendMode.htm @@ -0,0 +1,60 @@ + + + + +SendMode + + + + + + + +

SendMode [v1.0.43+]

+ +

Send¸¦ ±âº» (SendEvent)ÀÌ ¾Æ´Ï¶ó SendInput ¶Ç´Â SendPlay¿Í µ¿ÀǾî·Î ¸¸µì´Ï´Ù. ¶ÇÇÑ Click°ú MouseMove/Click/Drag°¡ ÁöÁ¤ÇÑ ¹æ¹ýÀ» »ç¿ëÇϵµ·Ï ¸¸µì´Ï´Ù.

+ +
SendMode Input|Play|Event|InputThenPlay
+

ù ¸Å°³º¯¼ö´Â ´ÙÀ½ ´Ü¾î Áß ÇϳªÀÔ´Ï´Ù:

+

+Event: ¸ðµç ½ºÅ©¸³Æ®°¡ ½ÃÀÛÇÒ ¶§ »ç¿ëÇÏ´Â ±âº» °ªÀÔ´Ï´Ù. Send, SendRaw, Click, ±×¸®°í MouseMove/Click/Drag¿¡ ´ëÇÏ¿© SendEvent ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù.

+

+Input: Send, SendRaw, Click, ±×¸®°í MouseMove/Click/Drag¿¡ ´ëÇÏ¿© SendInput ¹æ¹ýÀ¸·Î ÀüȯÇÕ´Ï´Ù .
+

+
    ¾Ë·ÁÁø ÇÑ°è: +
  • À©µµ¿ìÁî Ž»ö±â´Â SendInputÀÇ ¾î¶² Ç×ÇØ ÇÖÅ°¸¦ ¹«½ÃÇÕ´Ï´Ù. ¿¹¸¦ µé¾î Alt+LeftArrow¿Í °°Àº °æ¿ì, À̸¦ ¿ìȸÇÏ·Á¸é, SendEvent !{Left} ¶Ç´Â SendInput {Backspace}¸¦ »ç¿ëÇϽʽÿÀ.
  • +
+

+InputThenPlay [v1.0.43.02+]: À§¿Í µ¿ÀÏÇÕ´Ï´Ù. ±×·¯³ª SendInputÀÌ »ç¿ë ºÒ°¡´ÉÇÒ ¶§ Event ¸ðµå¿¡ ÀÇÁ¸Çϱ⠺¸´Ù, Play ¸ðµå¿¡ ÀÇÁ¸ÇÕ´Ï´Ù (¾Æ·¡ ÂüÁ¶). ÀÌ°ÍÀº ¶ÇÇÑ SendInputÀ» »ç¿ëÇÒ ¼ö ¾ø´Ù¸é SendInput ¸í·É¾î ÀÚüµµ Play ¸ðµå¿¡ ÀÇÁ¸ÇÏ°Ô ¸¸µì´Ï´Ù.

+

+Play: Send, SendRaw, Click, ±×¸®°í MouseMove/Click/Drag¿¡ ´ëÇÏ¿© SendPlay ¹æ¹ýÀ¸·Î ÀüȯÇÕ´Ï´Ù.
+

+
    ¾Ë·ÁÁø ÇÑ°è: +
  • ÇöÀç Å°º¸µå ·¹À̾ƿô¿¡ Á¸ÀçÇÏÁö ¾Ê´Â ¹®ÀÚ´Â (¿¹¸¦ µé¾î ¿µ¾îÀÇ Ô¿Í °°Àº °æ¿ì) Àü¼ÛÇÒ ¼ö ¾ø½À´Ï´Ù. À̸¦ ¿ìȸÇÏ·Á¸é, SendEvent¸¦ »ç¿ëÇϽʽÿÀ.
  • +
  • Èä³»³½ ¸¶¿ì½º ²ø±â´Â ¿¹¸¦ µé¾î WordPad¿Í Metapad °°ÀÌ RichEdit ÄÜÆ®·Ñ¿¡¼­ ¾Æ¹« È¿°úµµ ¾øÀ» ¼ö°¡ ÀÖ½À´Ï´Ù (´Ù¸¥ °Íµéµµ ¸¶Âù°¡ÁöÀÓ) . ƯÁ¤ÇÑ µå·¡±×¿¡ ´ëÇÏ¿© º¸Á¶ ¸ðµå¸¦ »ç¿ëÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À: SendEvent {Click 6, 52, down}{Click 45, 52, up}.
  • +
  • + Èä³»³½ ¸¶¿ì½º È٠ȸÀüÀº ÇÑ ÂÊ ¹æÇâÀ¸·Î¸¸ ¿òÁ÷ÀÓÀ» »ý»êÇÕ´Ï´Ù (º¸Åë ¾ÈÂÊÀÌÁö¸¸, ¾î¶² ¾îÇø®ÄÉÀ̼ǿ¡¼­´Â ¹Ù±ùÂÊÀ¸·Î). ¶ÇÇÑ, È٠ȸÀüÀº MS Word¿Í Notepad °°Àº ¾îÇø®ÄÉÀ̼ǿ¡¼­´Â ¾Æ¹« È¿°úµµ ¾øÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÁ¤ ȸÀü¿¡ ´ëÇÏ¿© º¸Á¶ ¸ðµå¸¦ »ç¿ëÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À: SendEvent {WheelDown 5}.
  • +
  • ÀÚµ¿-½ÇÇà ¼½¼Ç (½ºÅ©¸³Æ®ÀÇ »ó´Ü)¿¡¼­ SendMode Play¸¦ »ç¿ëÇÒ ¶§, ¸ðµç ¸®¸Ê Å°°¡ ¿µÇâÀ» ¹Þ°í ±â´ÉÀÇ ÀϺθ¦ ÀÒ¾î ¹ö¸± ¼öµµ ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº SendPlay ¸®¸ÊÇÎ ÇѰ踦 ÂüÁ¶ÇϽʽÿÀ.
  • +
  • SendPlay´Â ´Ù¸¥ ÇÁ·Î±×·¥À̳ª OS°¡ µî·ÏÇÑ AutoHotkeyÀÇ ÇÖÅ°³ª ÇÖ½ºÆ®¸µ ¶Ç´Â Àü¿ª ÇÖÅ°¸¦ Ã˹߽ÃÅ°Áö ¾Ê½À´Ï´Ù.
  • +
+ +

³íÆò

+

+SendMode´Â Click ±×¸®°í MouseMove/Click/DragÀÇ ¸ðµåµµ º¯°æÇϱ⠶§¹®¿¡, ƯÁ¤ÇÑ ¸¶¿ì½º À̺¥Æ®¿¡ ´ëÇÏ¿© ´Ù¸¥ ¸ðµå¸¦ »ç¿ëÇÏ°í ½ÍÀ» ¶§°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. °¡Àå ½¬¿î ¹æ¹ýÀº {Click}À» »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
SendEvent {Click 100, 200}  ; SendEventÀº ¿¹ÀüÀÇ ÀüÅëÀûÀÎ ¹æ½ÄÀÇ Å¬¸¯À» »ç¿ëÇÕ´Ï´Ù.
+

+SendMode°¡ ÀÚµ¿-½ÇÇà ¼½¼Ç (½ºÅ©¸³Æ®ÀÇ »ó´Ü)¿¡ »ç¿ëµÇ¸é, Å°º¸µå¿Í ¸¶¿ì½º ¸®¸ÊÇεµ ¿µÇâÀ» ¹Þ½À´Ï´Ù. ƯÈ÷, SendMode Play¸¦ ¸®¸ÊÇο¡ »ç¿ëÇÑ´Ù¸é, SendPlay ¸®¸ÊÇÎÀÇ ÇѰ踦 ÂüÁ¶ÇϽʽÿÀ.

+

+»õ·Î ±âµ¿µÈ ¾²·¹µå¸¶´Ù (¿¹¸¦ µé¾î ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾ) ÀÌ ¸í·É¾î¿¡ ´ëÇÑ ±âº» ¼³Á¤À» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ±âº» °ªÀº ÀÚµ¿-½ÇÇà ¼½¼Ç(½ºÅ©¸³Æ®ÀÇ »ó´Ü)¿¡¼­ ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ¸é ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+Send, SetKeyDelay, SetMouseDelay, Click, MouseClick, MouseClickDrag, MouseMove

+ +

¿¹Á¦

+
SendMode Input
+SendMode InputThenPlay
+ + + diff --git a/src/docs/commands/SetBatchLines.htm b/src/docs/commands/SetBatchLines.htm new file mode 100644 index 0000000..1b0b0b4 --- /dev/null +++ b/src/docs/commands/SetBatchLines.htm @@ -0,0 +1,54 @@ + + + + +SetBatchLines + + + + + + + +

SetBatchLines

+ +

½ºÅ©¸³Æ®°¡ ¾ó¸¶³ª »¡¸® ½ÇÇàµÉÁö °áÁ¤ÇÕ´Ï´Ù (CPU ÀÌ¿ë¿¡ ¿µÇâÀ» ÁÜ).

+ +
SetBatchLines, 20ms
+SetBatchLines, LineCount
+

¸Å°³º¯¼ö

+
+ +
20ms
+

(20ms´Â ±×³É ¿¹Á¦ÀÏ »ÓÀÔ´Ï´Ù.) °ªÀÌ ms·Î ³¡³ª¸é, ½ºÅ©¸³Æ®°¡ ¾ó¸¶³ª ÀÚÁÖ ÀáÀÚ¾ß ÇÏ´ÂÁö ³ªÅ¸³À´Ï´Ù (°¢ ÀáÀڱ⸶´Ù 10 ms ±æÀÌÀÔ´Ï´Ù). ´ÙÀ½ ¿¹Á¦¿¡¼­, ½ºÅ©¸³Æ®´Â 20ms µ¿¾È ½ÇÇàÇÑ ÈÄ¿¡ ¸Å¹ø 10ms µ¿¾È Àâ´Ï´Ù: SetBatchLines, 20ms.

+ +
LineCount
+

10ms µ¿¾È ÀáÀÚ±â Àü¿¡ ½ÇÇàÇÒ ½ºÅ©¸³Æ® ÁÙÀÇ °³¼ö. °ªÀº ÃÖ´ë 9223372036854775807ÀÔ´Ï´Ù. ¶ÇÇÑ, ÀÌ ¸ðµå´Â ¾Õ ¹®´Ü¿¡¼­ 20ms ¸ðµå µ¿¾È ¼­·Î ¹èŸÀûÀÔ´Ï´Ù; Áï, ÇÑ ¹ø¿¡ ±× Áß¿¡ Çϳª¸¸ È¿°ú°¡ ÀÖ½À´Ï´Ù.

+ +
+ +

³íÆò

+

+SetBatchLines -1¸¦ »ç¿ëÇϸé Àý´ë ÀáÀÚÁö ¾Ê½À´Ï´Ù (Áï, ½ºÅ©¸³Æ®´Â ÃÖ´ë ¼Óµµ·Î ½ÇÇàµË´Ï´Ù).

+

+±âº» ¼³Á¤Àº 10msÀÔ´Ï´Ù. ´Ü v1.0.16 ÀÌÀü ¹öÀü¿¡¼­´Â ´ë½Å¿¡ 10 (ÁÙ)À» »ç¿ëÇß½À´Ï´Ù.

+

+ "ms" ¹æ¹ýÀº ¼Óµµ¿Í Çù·ÂÀÌ Áß¿äÇÑ ½ºÅ©¸³Æ®¿¡ ±ÇÀåÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ´ëºÎºÐÀÇ ½Ã½ºÅÛ¿¡¼­ ¼³Á¤ÀÌ 10msÀÌ¸é ½ºÅ©¸³Æ®´Â CPU ÈÞ½Ä ½Ã°£ÀÇ 50%¸¦ ³ÑÁö ¾Ê°Ô »ç¿ëÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ½ºÅ©¸³Æ®´Â ºü¸£°Ô ½ÇÇàµÇ¸é¼­ µ¿½Ã¿¡ ¿¹¸¦ µé¾î °ÔÀÓ°ú ºñµð¿ÀĸÃÄ/»ó¿¬°ú °°ÀÌ CPU¿¡ ¹Î°¨ÇÑ ÀÛ¾÷°ú ¿©ÀüÈ÷ ³ôÀº ¼öÁØÀÇ Çù·ÂÀ» À¯ÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+³»Àå º¯¼ö A_BatchLines¿¡ ÇöÀç ¼³Á¤ÀÌ ´ã°Ü ÀÖ½À´Ï´Ù.

+

+½ºÅ©¸³Æ®ÀÇ ¼Óµµ´Â ¶ÇÇÑ ½ºÅ©¸³Æ®ÀÇ ¼ºÁú¿¡ µû¶ó ´ÙÀ½ ¸í·É¾îµé¿¡ ¿µÇâÀ» ¹Þ½À´Ï´Ù: SetWinDelay, SetControlDelay, SendMode, SetKeyDelay, SetMouseDelay, ±×¸®°í SetDefaultMouseSpeed.

+

+»õ·Î ±âµ¿µÈ ¾²·¹µå´Â (¿¹¸¦ µé¾î ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾ) ÀÌ ¸í·É¾î¿¡ ´ëÇÑ ±âº» ¼³Á¤À» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ±âº»°ªÀº ÀÚµ¿ ½ÇÇà ¼½¼Ç (½ºÅ©¸³Æ®ÀÇ »ó´Ü)¿¡¼­ ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ¸é ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+SetWinDelay, SetControlDelay, SendMode, SetKeyDelay, SetMouseDelay, SetDefaultMouseSpeed, Critical

+ +

¿¹Á¦

+ +
SetBatchLines, 10ms 
+SetBatchLines, 1000
+ + + diff --git a/src/docs/commands/SetControlDelay.htm b/src/docs/commands/SetControlDelay.htm new file mode 100644 index 0000000..dbc7b45 --- /dev/null +++ b/src/docs/commands/SetControlDelay.htm @@ -0,0 +1,49 @@ + + + + +SetControlDelay + + + + + + + +

SetControlDelay

+ +

°¢ ÄÜÆ®·Ñ-º¯°æ ¸í·É¾î ´ÙÀ½¿¡ ÀϾ Áö¿¬ ½Ã°£À» ¼³Á¤ÇÕ´Ï´Ù.

+ +
SetControlDelay, Delay
+

¸Å°³º¯¼ö

+
+ +
Delay
+

¹Ð¸®ÃÊ ´ÜÀ§ ½Ã°£, Ç¥Çö½Ä °¡´É. -1À̸é Áö¿¬ ½Ã°£ÀÌ ÀüÇô ¾ø½À´Ï´Ù. 0ÀÌ¸é °¡´ÉÇÑ Àû°Ô Áö¿¬µË´Ï´Ù. ¼³Á¤ÇÏÁö ¾ÊÀ¸¸é ±âº»°ªÀ¸·Î 20ÀÔ´Ï´Ù.

+ +
+ +

³íÆò

+

+ªÀº Áö¿¬ ½Ã°£Àº (sleep) ÄÜÆ®·ÑÀ» º¯°æÇÏ´Â Control ¸í·É¾î¸¶´Ù ÀÚµ¿À¸·Î »ðÀԵ˴ϴÙ. Áï, Control, ControlMove, ControlClick, ControlFocus, ±×¸®°í ControlSetText (ControlSend´Â SetKeyDelay¸¦ »ç¿ë). +ÀÌ·¸°Ô ÇÏ´Â ÀÌÀ¯´Â ½ºÅ©¸³Æ®ÀÇ ½Å·Ú¼ºÀ» Çâ»ó½ÃÅ°±â À§Çؼ­ÀÔ´Ï´Ù. ÄÜÆ®·ÑÀº Á¾Á¾ ÀÌ·± ¸í·É¾î ¶§¹®¿¡ º¯°æÀÌ µÇ¸é "Àá½Ã ½¬´Â ½Ã°£"ÀÌ ÇÊ¿äÇÕ´Ï´Ù. ½¬´Â ½Ã°£ÀÌ ÀÖ¾î¾ß ÀÚ½ÅÀ» °»½ÅÇÒ ¼ö ÀÖ°í ½ºÅ©¸³Æ®°¡ Àü¼ÛÇÏ·Á°í ½ÃµµÇÏ´Â ´ÙÀ½ ¸í·É¾î¿¡ ÀÀ´äÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.

+

+Áö¿¬ ½Ã°£ÀÌ -1ÀÌ¶óµµ (ÀüÇô Áö¿¬ ½Ã°£ ¾øÀ½) Çã¿ëÇÏÁö¸¸, Àû¾îµµ 0Àº »ç¿ëÇϱ⸦ ±ÇÀåÇÕ´Ï´Ù. ±×·¯¸é CPU¿¡ ºÎÇÏ°¡ ¸¹¾Æµµ ½ºÅ©¸³Æ®°¡ ¿Ã¹Ù¸£°Ô ½ÇÇàµÉ °ÍÀ̶ó´Â º¸ÀåÀÌ ³ô¾ÆÁý´Ï´Ù.

+

+Áö¿¬ ½Ã°£ÀÌ 0ÀÌ¸é ³»ºÎÀûÀ¸·Î Sleep(0)À» ½ÇÇàÇÕ´Ï´Ù. ÀÌ´Â ±×¸¦ ÇÊ¿ä·Î ÇÏ´Â ´Ù¸¥ ÇÁ·Î¼¼½º¿¡ ½ºÅ©¸³Æ®ÀÇ ½Ã°£Á¶°¢(timeslice)ÀÇ ³ª¸ÓÁö¸¦ ³ª´©¾î ÁÝ´Ï´Ù. ³²´Â °Ô ¾øÀ¸¸é, Sleep(0)Àº ÀüÇô ÀáÀÚÁö ¾Ê½À´Ï´Ù.

+

+CPU°¡ ´À¸®°Å³ª ºÎÇÏ°¡ ¸¹À¸¸é, ¶Ç´Â ⠾ִϸÞÀ̼ÇÀÌ ÄÑÁ® ÀÖÀ¸¸é, ³ôÀº Áö¿¬ ½Ã°£ÀÌ ÇÊ¿äÇÕ´Ï´Ù.

+

+³»Àå º¯¼ö A_ControlDelay¿¡ ÇöÀç ¼³Á¤ÀÌ ´ã°Ü ÀÖ½À´Ï´Ù.

+

+»õ·Î ±âµ¿µÈ ¾²·¹µå (¿¹¸¦ µé¾î ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾ) ÀÌ ¸í·É¾î¿¡ ´ëÇÑ ±âº» ¼³Á¤À» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ±âº» °ªÀº ÀÚµ¿-½ÇÇà ¼½¼Ç (½ºÅ©¸³Æ®ÀÇ »ó´Ü)¿¡¼­ ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ¸é ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+Control, ControlMove, ControlClick, ControlFocus, ControlSetText, SetWinDelay, SetKeyDelay, SetMouseDelay, SetBatchLines

+ +

¿¹Á¦

+
SetControlDelay, 0
+ + + diff --git a/src/docs/commands/SetDefaultMouseSpeed.htm b/src/docs/commands/SetDefaultMouseSpeed.htm new file mode 100644 index 0000000..7f11e3e --- /dev/null +++ b/src/docs/commands/SetDefaultMouseSpeed.htm @@ -0,0 +1,46 @@ + + + + +SetDefaultMouseSpeed + + + + + + + +

SetDefaultMouseSpeed

+ +

+ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é Click ±×¸®°í MouseMove/Click/Drag¿¡ »ç¿ëµÉ ¸¶¿ì½º ¼Óµµ¸¦ ¼³Á¤ÇÕ´Ï´Ù.

+ +
SetDefaultMouseSpeed, Speed
+

¸Å°³º¯¼ö

+
+ +
Speed
+

¸¶¿ì½º¸¦ À̵¿ÇÏ´Â ¼Óµµ. ¹üÀ§´Â 0 (°¡Àå ºü¸§)ºÎÅÍ 100 (°¡Àå ´À¸²)±îÁö. ÁÖÀÇ: ¼Óµµ°¡ 0ÀÌ¸é ¸¶¿ì½º¸¦ ¼ø°£ À̵¿ ½Ãŵ´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.

+ +
+ +

³íÆò

+

+SendInput/Play ¸ðµå¿¡ ´ëÇÏ¿© SetDefaultMouseSpeed´Â ¹«½ÃµË´Ï´Ù; ÀÌ ¸ðµå¿¡¼­´Â ¸¶¿ì½º°¡ ¼ø°£ À̵¿ÇÕ´Ï´Ù (±×·¸Áö¸¸, SetMouseDelay´Â SendPlay¿¡ Àû¿ëµÇ´Â ¸ðµå°¡ ÀÖ½À´Ï´Ù). ½Ã°¢ÀûÀ¸·Î ¸¶¿ì½º¸¦ ´õ ´À¸®°Ô À̵¿ÇÏ°í ½ÍÀ¸¸é -- ¿¹¸¦ µé¾î ûÁßÀ» À§ÇÏ¿© µ¥¸ð¸¦ ¼öÇàÇÏ´Â ½ºÅ©¸³Æ®¶ó¸é -- (¼±ÅÃÀûÀ¸·Î BlockInput°ú ÇÔ²²) SendEvent {Click 100, 200} ¶Ç´Â SendMode Event¸¦ »ç¿ëÇϽʽÿÀ.

+

+ÀÌ ¸í·É¾ï »ç¿ëµÇÁö ¾ÊÀ¸¸é, ±âº» ¸¶¿ì½º ¼Óµµ´Â 2ÀÔ´Ï´Ù. ³»Àå º¯¼ö A_DefaultMouseSpeed¿¡ ÇöÀç ¼³Á¤ÀÌ ´ã°Ü ÀÖ½À´Ï´Ù.

+

+¸í·É¾î MouseClick, MouseMove, ±×¸®°í MouseClickDrag´Â ¸ðµÎ ±âº» ¸¶¿ì½º ¼Óµµ¸¦ ¿À¹ö¶óÀ̵å ÇÒ ¸Å°³º¯¼ö°¡ ÀÖ½À´Ï´Ù.

+

+Speed°¡ 0 º¸´Ù Å©¸é, SetMouseDelayµµ ¸¶¿ì½º°¡ ¸ñÇ¥¸¦ ÇâÇØ Á¶±Ý¾¿ À̵¿ÇÒ ¶§¸¶´Ù Áö¿¬ ½Ã°£À» µÎ¾î¼­ ¼Óµµ¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.

+

+»õ·Î ±âµ¿µÇ´Â ¾²·¹µå´Â (¿¹¸¦ µé¾î ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾ) ÀÌ ¸í·É¾î¿¡ ´ëÇÑ ±âº» ¼³Á¤À» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ±âº»°ªÀº ÀÚµ¿ ½ÇÇà ¼½¼Ç (½ºÅ©¸³Æ®ÀÇ »ó´Ü)¿¡¼­ ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ¿© º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+SetMouseDelay, SendMode, Click, MouseClick, MouseMove, MouseClickDrag, SetWinDelay, SetControlDelay, SetKeyDelay, SetKeyDelay

+

¿¹Á¦

+
SetDefaultMouseSpeed, 0 ; ¸¶¿ì½º¸¦ ¼ø°£ À̵¿ ½Ãŵ´Ï´Ù.
+ + + diff --git a/src/docs/commands/SetEnv.htm b/src/docs/commands/SetEnv.htm new file mode 100644 index 0000000..1ffad36 --- /dev/null +++ b/src/docs/commands/SetEnv.htm @@ -0,0 +1,52 @@ + + + + +SetEnv + + + + + + + +

SetEnv (Var = Value)

+ +

ÁöÁ¤µÈ °ªÀ» º¯¼ö¿¡ ÇÒ´çÇÕ´Ï´Ù.

+ +
SetEnv, Var, Value
+Var = Value
+

¸Å°³º¯¼ö

+
+ +
Var
+

ValueÀ» ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
Value
+

ÀúÀåÇÒ ¼ýÀÚ ¶Ç´Â ¹®ÀÚ¿­. ¹®ÀÚ¿­ÀÌ ±æ¸é, °è¼Ó ¼½¼ÇÀ» ¼ö´ÜÀ¸·Î ´õ ªÀº ÁÙ·Î ³ª´­ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é °¡µ¶¼º°ú À¯Áö°ü¸®¼ºÀÌ Çâ»óµË´Ï´Ù.

+ +
+ +

³íÆò

+

±âº»°ªÀ¸·Î, Value ¾Õ µÚÀÇ ½ºÆäÀ̽º³ª ÅÇÀº Var¿¡¼­ Á¦¿ÜµË´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é, AutoTrim Off¿¡ ±â¼úµÈ ¹æ¹ýÀ» »ç¿ëÇϽʽÿÀ.

+

+"SetEnv"¶ó´Â À̸§Àº È¥¶õÀ» ÁÝ´Ï´Ù. ÀÌ°ÍÀº AutoIt v2·ÎºÎÅÍ ¹°·Á ¹ÞÀº À¯»êÀÔ´Ï´Ù. + +AutoIt v2¿Í ´Ù¸£°Ô, AutoHotkey´Â º¯¼ö¸¦ ȯ°æ¿¡ ÀúÀåÇÏÁö ¾Ê½À´Ï´Ù. ¼öÇ༺´ÉÀÌ ÁÁÁö ¾ÊÀ» »Ó¸¸ ¾Æ´Ï¶ó OS°¡ ȯ°æ º¯¼öÀÇ ±æÀ̸¦ 32 KB·Î Á¦ÇÑÇϱ⠶§¹®ÀÔ´Ï´Ù. ȯ°æ º¯¼ö¿¡ ¾²·Á¸é SetEnv ´ë½Å¿¡ EnvSetÀ» »ç¿ëÇϽʽÿÀ.

+

+°Å´ëÇÑ º¯¼ö°¡ Á¡À¯ÇÑ ¸Þ¸ð¸®´Â ¾Æ¹« °Íµµ ¼³Á¤ÇÏÁö ¾ÊÀ¸¸é ÇØÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹, Var =.

+

+ÀÌ ¸í·É¾î ±×¸®°í OutputVar¸¦ ¹Þ´Â ±âŸ ¸í·É¾î·Î ÀÇ»ç-¹è¿­À» »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. OuputVar¿¡ ¶Ç´Ù¸¥ º¯¼ö¸¦ °¡¸®Å°´Â ÂüÁ¶¸¦ ´ãµµ·Ï ¸¸µé¸é µË´Ï´Ù. ¿¹, array%i% = 123. ´õ ÀÚ¼¼ÇÑ °ÍÀº ¹è¿­À» ÂüÁ¶ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

+AutoTrim, EnvSet, EnvAdd, EnvSub, EnvMult, EnvDiv, If, ¹è¿­

+ +

¿¹Á¦

+
Var1 = ÀÌ°ÍÀº ¹®ÀÚ¿­ÀÔ´Ï´Ù.
+Color2 = 450
+Color3 = %Var1%
+Array%i% = %A_TICKCOUNT%
+ + + diff --git a/src/docs/commands/SetExpression.htm b/src/docs/commands/SetExpression.htm new file mode 100644 index 0000000..11371c8 --- /dev/null +++ b/src/docs/commands/SetExpression.htm @@ -0,0 +1,61 @@ + + + + +Var := expression + + + + + + + +

Var := expression

+ +

Ç¥Çö½ÄÀ» Æò°¡ÇØ ±× °á°ú¸¦ º¯¼ö¿¡ ÀúÀåÇÕ´Ï´Ù.

+ +
Var := expression
+

¸Å°³º¯¼ö

+
+ +
Var
+

Ç¥Çö½ÄÀÇ °á°ú¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
Expression
+

ÀÚ¼¼ÇÑ °ÍÀº Ç¥Çö½Ä°ú ¾Æ·¡ÀÇ ¿¹Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +
+ +

³íÆò

+

:= ¿¬»êÀÚ´Â ´ÙÀ½°ú °°ÀÌ °£´ÜÇÑ °æ¿ì¿¡ = ¿¬»êÀÚó·³ ¶È°°ÀÌ ºü¸£°Ô ¼öÇàµÇµµ·Ï ÃÖÀûÈ­ µË´Ï´Ù:

+
x := y  ; ¼öÇ༺´ÉÀº x = %y%¿Í °°À½
+x := 5  ; ¼öÇ༺´ÉÀº x = 5¿Í °°À½.
+x := "literal string"  ; ¼öÇ༺Àº x = literal string°ú °°À½.
+

+´Ü¾î true¿Í false´Â ³»Àå »ó¼ö·Î¼­ °¢°¢ 1°ú 0À» ´ã°í ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ½ºÅ©¸³Æ®¸¦ ´õ Àб⠽±°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù:

+ +
CaseSensitive := false
+ContinueSearch := true
+

+ÀÌ ¸í·É¾î¿Í ±×¸®°í OuputVar¸¦ ¹Þ´Â ´Ù¸¥ ¸í·É¾î·Î ÀÇ»ç-¹è¿­À» ¸¸µé ¼ö ÀÖ½À´Ï´Ù. OutputVar¿¡ ¶Ç´Ù¸¥ º¯¼ö¸¦ °¡¸®Å°´Â ÂüÁ¶¸¦ ´ãµµ·Ï ¸¸µé¸é µË´Ï´Ù. ¿¹, Array%i% := Var/100 + 5. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ¹è¿­À» ÂüÁ¶ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

+Ç¥Çö½Ä, IF (Ç¥Çö½Ä), Functions, SetEnv, EnvSet, EnvAdd, EnvSub, EnvMult, EnvDiv, If, ¹è¿­

+ +

¿¹Á¦

+
Var := 3
+Var := "literal string"
+Var := Price * (1 - Discount/100)
+
+Finished := not Done or A_Index > 100
+if not Finished
+{
+    FileAppend, %NewText%`n, %TargetFile%
+    return
+}
+else
+    ExitApp
+ + + diff --git a/src/docs/commands/SetFormat.htm b/src/docs/commands/SetFormat.htm new file mode 100644 index 0000000..657ca96 --- /dev/null +++ b/src/docs/commands/SetFormat.htm @@ -0,0 +1,108 @@ + + + + +SetFormat + + + + + + + +

SetFormat

+ +

¼öÇÐ ¿¬»êÀ¸·Î »ý¼ºµÈ ºÎµ¿ ¼Ò¼öÁ¡ ¼ö³ª Á¤¼öÀÇ Çü½ÄÀ» ¼³Á¤ÇÕ´Ï´Ù.

+ +
SetFormat, NumberType, Format
+

¸Å°³º¯¼ö

+
+ +
NumberType
+

¹Ýµå½Ã ´ÙÀ½ Áß ÇϳªÀÔ´Ï´Ù: IntegerFast, FloatFast, Integer, ¶Ç´Â Float (µÎ °³ÀÇ ºü¸¥ ¸ðµå´Â v1.0.48+¸¦ ¿ä±¸ÇÕ´Ï´Ù; ³íÆò ÂüÁ¶).

+ +
Format
+

NumberType Integer ¶Ç´Â IntegerFast¿¡ ´ëÇÏ¿©, ½ÊÀ°Áø¼ö´Â H ¶Ç´Â HEX¸¦ ÁöÁ¤Çϰųª, ¶Ç´Â ½ÊÁø¼öÀ̸é D¸¦ ÁöÁ¤ÇϽʽÿÀ. ½ÊÀ°Áø¼ö´Â ¸ðµÎ Á¢µÎ»ç 0x·Î ½ÃÀÛÇÕ´Ï´Ù (¿¹, 0xFF). [AHK_L 42+]: ½ÊÀ°Áø Á¤¼ö´Â A-F ÀÚ¸®ÀÇ Çü½ÄÀÌ ÀÌ ¸Å°³º¯¼ö°¡ hÀÌ¸é ¼Ò¹®ÀÚÀÌ°í HÀÌ¸é ´ë¹®ÀÚÀÔ´Ï´Ù.

+

NumberType Float ¶Ç´Â FloatFast¿¡ ´ëÇÏ¿©, TotalWidth.DecimalPlaces¸¦ ÁöÁ¤ÇϽʽÿÀ (¿¹, 0.6). + + v1.0.46.11+¿¡¼­, ±âÈ£ "e"¸¦ Ãß°¡ÇØ °úÇРǥ±â¹ýÀ» ¸¸µé¾î ³¾ ¼ö ÀÖ½À´Ï´Ù; ¿¹, 0.6e ¶Ç´Â 0.6E + (´ë¹®ÀÚ¸¦ »ç¿ëÇÏ¸é °¢ ¼ýÀÚ¿¡ ¼Ò¹®ÀÚ°¡ ¾Æ´Ï¶ó ´ë¹®ÀÚ E¸¦ »ý»êÇÕ´Ï´Ù). + + ÁÖÀÇ: AutoHotkey 1.x¿¡¼­, °úÇÐÀû Ç¥±â¹ýÀº ¹Ýµå½Ã ¼Ò¼ö Á¡À» Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù; ¿¹, 1.0e1´Â À¯È¿ÇÏÁö¸¸ 1e1´Â À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù.

+

+ TotalWidth´Â ÀüÇüÀûÀ¸·Î 0ÀÔ´Ï´Ù. ±× ¼ýÀÚ¿¡ ºó °ø°£ÀÌ Àְųª 0À¸·Î µ¡´ë¸é ¾ÈµÈ´Ù´Â ¶æÀÔ´Ï´Ù. ´õ ³ôÀº °ªÀ» »ç¿ëÇϸé, ±× ³Êºñ¸¸Å­ ¸¸µé±â À§ÇØ ¼ýÀÚµéÀº ½ºÆäÀ̽º³ª 0À¸·Î µ¡´ë¾îÁý´Ï´Ù (³íÆò ÂüÁ¶).

+

+ DecimalPlaces´Â º¸¿©ÁÙ ¼Ò¼ö Á¡ ÀÚ¸®ÀÇ °¹¼öÀÔ´Ï´Ù. (¹Ý¿Ã¸²ÀÌ ÀϾ´Ï´Ù). ºñ¾î Àְųª 0À̸é, ¼Ò¼öÁ¡ ºÎºÐµµ ¼Ò¼öÁ¡µµ º¸¿©ÁÖÁö ¾Ê½À´Ï´Ù. Áï, ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀÇ °á°ú´Â Á¤¼ö·Î È­¸é¿¡ º¸¿©ÁÝ´Ï´Ù. ½ÃÀÛ ±âº» °ªÀº 6ÀÔ´Ï´Ù.

+

Padding: ¸¸¾à TotalWidth°¡ ÆеùÀ» ¾ß±âÇÒ ¸¸Å­ ³ô´Ù¸é, ½ºÆäÀ̽º°¡ ±× ¿ÞÂÊ¿¡ Ãß°¡µË´Ï´Ù; Áï, °¢ ¼ýÀÚ´Â ¿À¸¥ÂÊÀ¸·Î Á¤·ÄµË´Ï´Ù. ´ë½Å¿¡ ¿ÞÂÊ Á¤·ÄÀ» ÇÏ·Á¸é, TotalWidth ¾Õ¿¡ ¸¶À̳ʽº »çÀÎÀ» Ãß°¡ÇϽʽÿÀ. ½ºÆäÀ̽º ´ë½Å¿¡ 0À¸·Î µ¡´ë·Á¸é, TotalWidth ¾Õ¿¡ 0À» Ãß°¡ÇϽʽÿÀ (¿¹, 06.2).

+ +
+ +

ºü¸¥ ¸ðµå vs. ´À¸° ¸ðµå

+v1.0.48+¿¡¼­, Integer ´ë½Å¿¡ IntegerFast ±×¸®°í Float ´ë½Å¿¡ FloatFast¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. +
    +
  • +ÀåÁ¡: ºü¸¥ ¸ðµå´Â ºÎµ¿ ¼Ò¼öÁ¡ ¼ö¿Í Á¤¼ö¸¦ ij½¬ÇÏ´Â º¯¼öÀÇ ´É·ÂÀ» º¸Á¸ÇÕ´Ï´Ù. ÀÌ ´öºÐ¿¡ ¼ýÄ¡ Áý¾àÀûÀÎ ¿¬»êÀÌ ´«¿¡ ¶ç°Ô »¡¶óÁý´Ï´Ù. (´ëÁ¶ÀûÀ¸·Î, ´À¸° ¸ðµå´Â ¸ðµç ¼öÄ¡ °á°ú¸¦ Áï½Ã ¹®ÀÚ¿­·Î º¯È¯ÇØ ÀúÀåÇϵµ·Ï °­Á¦ÇÕ´Ï´Ù.)
  • +
  • +´ÜÁ¡: ¼ýÀÚ¸¦ º¯¼ö¿¡ ÀúÀåÇÒ ¶§, ºü¸¥ ¸ðµå´Â (¿¹, MsgBox ¾È¿¡ º¸¿©ÁÖ±â À§ÇØ) ½ºÅ©¸³Æ®°¡ ½ÇÁ¦·Î ÅؽºÆ®/¹®ÀÚ¿­ ¹öÀüÀÇ º¯¼ö¸¦ ÇÊ¿ä·Î ÇÒ ¶§±îÁö SetFormatÀÇ È¿°ú¸¦ Áö¿¬½Ãŵ´Ï´Ù. ±× ¼ø°£ ´Ù¾çÇÑ SetFormatÀÌ È¿°ú°¡ ÀÖÀ» ¼ö Àֱ⠶§¹®¿¡ (¿¹, ¼Ò¼öÁ¡ ÀÚ¸®¼ö°¡ ´õ ¸¹°Å³ª ÀûÀ» ¼ö ÀÖÀ¸¹Ç·Î), ¿¹»óÄ¡ ¸øÇÑ °á°ú¿¡ À̸¦ ¼ö ÀÖ½À´Ï´Ù. ÇöÀçÀÇ ºü¸¥ Æ÷¸ËÀ» Áï½Ã Àû¿ëÇÏ·Á¸é, HexValue .= ""°ú °°Àº ¿¬»êÀ» »ç¿ëÇϽʽÿÀ. ÀÌ ÄÚµå´Â ºó ¹®ÀÚ¿­À» ÇöÀç HexValue¿¡ ÀúÀåµÈ ¼ýÀÚ¿¡ Ãß°¡ÇÕ´Ï´Ù.
  • +
+

+´À¸° ¸ðµåÀÎ "Integer" ¶Ç´Â "Float"°¡ ½ºÅ©¸³Æ® ¾îµð¼­µç »ç¿ëµÈ´Ù¸é, SetFormat ÁÙÀÌ ÀüÇô ½ÇÇàµÇÁö ¾Ê´õ¶óµµ, Á¤¼ö³ª ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀÇ Ä³½¬´Â (°¢°¢) ½ºÅ©¸³Æ®°¡ ±âµ¿ÇÏ´Â ¼ø°£ ²¨Áý´Ï´Ù.

+ +

ºÎµ¿ ¼Ò¼öÁ¡ Çü½Ä

+

+v1.0.48+¿¡¼­, ºÎµ¿ ¼Ò¼öÁ¡ º¯¼ö´Â ´ë·« ³»ºÎÀûÀ¸·Î 15 ÀÚ¸®ÀÇ Á¤¹Ðµµ¸¦ °¡Áý´Ï´Ù. ´Ü, SetFormat Float (Áï, ´À¸° ¸ðµå)°¡ ½ºÅ©¸³Æ®¿¡ Á¸ÀçÇÏ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù. ÀÌ °æ¿ì ÀúÀåµÈ Á¤¹ÐµµÀÇ ºÎµ¿ ¼Ò¼öÁ¡ ¼ö´Â DecimalPlaces¿¡ ÀÇÇÏ¿© °áÁ¤µË´Ï´Ù (pre-1.0.48 ¹öÀü°ú °°½À´Ï´Ù). ´Ù¸¥ ¸»·Î, ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀÇ °á°ú°¡ ÀÏ´Ü º¯¼ö ¾È¿¡ ÀúÀåµÇ¸é, ¿©ºÐÀÇ Á¤¹Ðµµ´Â ¼Ò½ÇµË´Ï´Ù. ±×¸®°í SetFormat, Float, 0.15¿Í °°Àº °ÍÀ¸·Î ´Ù½Ã °è»êÀ» ÇÏÁö ¾Ê°í´Â ´Ù½Ã ¿äûÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ·± Á¤¹ÐµµÀÇ ¼Õ½ÇÀ» ÇÇÇÏ·Á¸é, SetFormat FloatÀ» ½ºÅ©¸³Æ®¿¡ »ç¿ëÇÏÁö ¸¶½Ê½Ã¿À. ´Ù½Ã ¸»ÇØ, ´ë½Å SetFormat FloatFast¸¦ »ç¿ëÇϽʽÿÀ.

+

+´À¸° ¸ðµåÀÌµç ºü¸¥ ¸ðµåÀÌµç »ó°ü ¾øÀÌ, ºÎµ¿ ¼Ò¼öÁ¡ ¼ö°¡ °á°úÀÌ°í º¯¼ö´Â ÅؽºÆ® ¹®ÀÚ¿­·Î º¯È¯µÇ°Å³ª º¸¿©Áú ¶§ DecimalPlaces·Î ³»¸²µË´Ï´Ù. (¿¹, MsgBox ¶Ç´Â FileAppend). + +¿Ïº®ÇÑ Á¤¹Ðµµ¸¦ º¸·Á¸é, ´ÙÀ½ SetFormat, FloatFast, 0.15°ú °°ÀÌ »ç¿ëÇϽʽÿÀ.

+

+ºÎµ¿ ¼Ò¼öÁ¡ ¼ö¸¦ Á¤¼ö·Î º¯È¯ÇÏ·Á¸é, Var:=Round(Var), Var:=Floor(Var), ¶Ç´Â Var:=Ceil(Var)¸¦ »ç¿ëÇϽʽÿÀ. Á¤¼ö¸¦ ºÎµ¿ ¼Ò¼öÁ¡ ¼­·Î º¯È¯ÇÏ·Á¸é, 0.0À» ´õÇϽʽÿÀ (¿¹, Var+=0.0) ¶Ç´Â ´ÙÀ½ MyFloat:=Round(MyInteger, 1)ó·³ »ç¿ëÇϽʽÿÀ.

+

+³»Àå º¯¼ö A_FormatFloat¿¡´Â ÇöÀç ºÎµ¿ ¼Ò¼öÁ¡ Çü½ÄÀÌ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù (¿¹, 0.6).

+ +

Á¤¼ö Æ÷¸Ë

+

+Á¤¼ö °á°ú´Â º¸Åë ½ÊÀ°Áø¼ö°¡ ¾Æ´Ï¶ó ½ÊÁø¼ö·Î º¸¿©ÁÝ´Ï´Ù. ½ÊÀ°Áø¼ö·Î ÀüȯÇÏ·Á¸é, SetFormat, IntegerFast, Hex¸¦ »ç¿ëÇϽʽÿÀ. ÀÌ°ÍÀº µµ Á¤¼ö¸¦ ½ÊÁø¼ö¿¡¼­ ½ÊÀ°Áø¼ö·Î (¶Ç´Â ±× ¹Ý´ë·Î) º¯È­Çϴµ¥¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÆäÀÌÁö ¸Ç ¾Æ·¡¿¡ ¿¹Á¦¿¡ º¸¿©ÁÝ´Ï´Ù.

+

+½ºÅ©¸³Æ®¿¡ ÁöÁ¤µÈ ±âÈ£ ±×´ë·ÎÀÇ Á¤¼ö´Â ½ÊÀ°Áø¼ö ¶Ç´Â ½ÊÁø¼ö·Î ¾µ ¼ö ÀÖ½À´Ï´Ù. ½ÊÀ°Áø Á¤¼ö´Â ¸ðµÎ Á¢µÎ»ç 0x·Î ½ÃÀÛÇÕ´Ï´Ù (¿¹, 0xA9). ¼ýÄ¡ °ªÀÌ ¿¹»óµÇ´Â °÷ÀÌ¸é ¾îµðµç »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Sleep 0xFF´Â Sleep 255¿Í µ¿µîÇÕ´Ï´Ù. SetFormatÀ¸·Î ¼³Á¤µÈ ÇöÀç Á¤¼öÀÇ Çü½Ä¿¡ »ó°üÀÌ ¾ø½À´Ï´Ù.

+

+AutoHotkey´Â 64-ºñÆ® ºÎÈ£ÀÖ´Â Á¤¼ö¸¦ Áö¿øÇÕ´Ï´Ù. ±× ¹üÀ§´Â -9223372036854775808 (-0x8000000000000000)ºÎÅÍ 9223372036854775807 (0x7FFFFFFFFFFFFFFF) ±îÁöÀÔ´Ï´Ù.

+

+³»Àå º¯¼ö A_FormatInteger¿¡ ÇöÀç Á¤¼ö Çü½ÄÀÌ µé¾î ÀÖ½À´Ï´Ù (H ¶Ç´Â D).

+ +

ÃÑÆò

+

+SetFormatÀÌ ½ºÅ©¸³Æ®¿¡ »ç¿ëµÇÁö ¾ÊÀ¸¸é, Á¤¼ö´Â ±âº»°ªÀÌ ½ÊÁø Çü½ÄÀÌ°í, ºÎµ¿ ¼Ò¼öÁ¡ ¼ö´Â ±âº»°ªÀÌ TotalWidth.DecimalPlaces = 0.6ÀÔ´Ï´Ù. + +»õ·Î ±âµ¿µÈ ¾²·¹µå´Â ¸ðµÎ (¿¹¸¦ µé¾î ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾ) ´ÙÀ½ ±âº» °ªÀ» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù; ±×·¯³ª ÀÌ ±âº»°ªÀº ÀÚµ¿ ½ÇÇà ¼½¼Ç (½ºÅ©¸³Æ®ÀÇ »ó´Ü)¿¡¼­ SetFormat¸¦ »ç¿ëÇÏ¿© ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+

+x=%y%¿Í °°Àº ¿¹Àü-½ºÅ¸ÀÏÀÇ ÇÒ´çÀº ¾Õ µÚ¿¡ ½ºÆäÀ̽º¸¦ »ý·«ÇÕ´Ï´Ù (Áï, Æеù). À̸¦ ÇÇÇÏ·Á¸é, AutoTrim ¶Ç´Â ½ÖÁ¡-µîÈ£ ¿¬»êÀÚ¸¦ »ç¿ëÇϽʽÿÀ (¿¹, x:=y).

+

+"if var is number/integer/float"¸¦ »ç¿ëÇÏ¸é º¯¼ö¿¡ ¼öÄ¡ °ªÀÌ µé¾î ÀÖ´ÂÁö ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù.

+

+ºÎµ¿ ¼Ò¼öÁ¡ ¼ö ¿¬»êÀ» ÇÒ ÇÊ¿ä ¾øÀÌ Á¤¼ö¿¡ 0 ¶Ç´Â ½ºÆäÀ̽º¸¦ µ¡´ë·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:

+ +
Var := "          " . Var     ; µû¿ÈÇ¥ ¾È¿¡ 10°³ÀÇ ½ºÆäÀ̽º°¡ µé¾î ÀÖ½À´Ï´Ù.  0À¸·Î µ¡´ë·Á¸é, ½ºÆäÀ̽º¸¦ 0À¸·Î ±³Ã¼ÇϽʽÿÀ.
+StringRight, Var, Var, 10  ; Var ¾È¿¡ ÀÖ´Â ¼ýÀÚ¿¡ ½ºÆäÀ̽º¸¦ µ¡´ë ÃÑ ³Êºñ°¡ 10 ¹®ÀÚ¿¡ ¸Âµµ·Ï ¸¸µì´Ï´Ù.
+Var := SubStr("          " . Var, -9)  ; À§ÀÇ µÎ ÁÙÀ» ÇÑ ÁÙ·Î ´ë½ÅÇÕ´Ï´Ù.
+ +

°ü·Ã Ç׸ñ

+

Format(), Ç¥Çö½Ä ÇÒ´ç (:=), EnvAdd, EnvSub, EnvMult, EnvDiv, AutoTrim, if var is type

+ +

¿¹Á¦

+
Var = 11.333333
+SetFormat, float, 6.2
+Var -= 1  ; Var¿¡ 10.33À» ¼³Á¤ÇÕ´Ï´Ù. ÃÑ ³Êºñ°¡ 6À̹ǷΠ¾Õ¿¡ ½ºÆäÀ̽º°¡ Çϳª ÀÖ½À´Ï´Ù.
+SetFormat, float, 0.2
+Var += 1  ; Var¿¡ 11.33À» ¼³Á¤ÇÕ´Ï´Ù. ¾Õ¿¡ ½ºÆäÀ̽º°¡ ¾ø½À´Ï´Ù.
+SetFormat, float, 06.0
+Var += 0  ; Var¿¡ 000011À» ¼³Á¤ÇÕ´Ï´Ù.
+
+; ½ÊÁø Á¤¼ö¸¦ ½ÊÀ°Áø Çü½ÄÀ¸·Î º¯È¯ÇÕ´Ï´Ù:
+SetFormat, IntegerFast, hex
+Var += 0  ; Var¿¡ 0xb¸¦ ¼³Á¤ÇÕ´Ï´Ù (ÀÌÀü¿¡ 11ÀÌ µé¾î ÀÖ¾ú½À´Ï´Ù).
+Var .= ""  ; "ºü¸¥" ¸ðµåÀ̱⠶§¹®¿¡ ÇʼöÀÔ´Ï´Ù.
+SetFormat, IntegerFast, d
+ + + diff --git a/src/docs/commands/SetKeyDelay.htm b/src/docs/commands/SetKeyDelay.htm new file mode 100644 index 0000000..39409bb --- /dev/null +++ b/src/docs/commands/SetKeyDelay.htm @@ -0,0 +1,64 @@ + + + + +SetKeyDelay + + + + + + + +

SetKeyDelay

+ +

Send¿Í ControlSend¿¡ ÀÇÇÑ °¢ Å°´­¸²¸¶´Ù ÀϾ Áö¿¬ ½Ã°£À» ¼³Á¤ÇÕ´Ï´Ù.

+ +
SetKeyDelay [, Delay, PressDuration, Play]
+

¸Å°³º¯¼ö

+
+ +
Delay
+

¹Ð¸®ÃÊ ½Ã°£, Ç¥Çö½Ä °¡´É. -1À̸é Áö¿¬ ½Ã°£ÀÌ ÀüÇô ¾ø°í 0ÀÌ¸é °¡´ÉÇϸé Àû°Ô Áö¿¬µË´Ï´Ù (±×·¸Áö¸¸, Play ¸Å°³º¯¼ö°¡ Á¸ÀçÇϸé, 0°ú -1 ¸ðµÎ Áö¿¬ ½Ã°£ÀÌ ¾ø½À´Ï´Ù). ÀÌ ¸Å°³º¯¼ö¸¦ ºñ¿ö µÎ¸é ÇöÀç Delay¸¦ À¯ÁöÇÕ´Ï´Ù.

+

+ SetKeyDelay°¡ ½ºÅ©¸³Æ®¿¡ »ç¿ëµÇÁö ¾ÊÀ¸¸é, ±âº» Delay´Â ÀüÅëÀûÀÎ SendEvent ¸ðµå¿¡ ´ëÇÏ¿© 10ÀÔ´Ï´Ù. SendPlay mode¿¡ ´ëÇؼ­ ±âº» Delay´Â -1ÀÔ´Ï´Ù. µÎ ¸ðµå ¸ðµÎ ±âº» PressDuration (¾Æ·¡ ÂüÁ¶)´Â -1ÀÔ´Ï´Ù.

+ +
PressDuration
+

¾î¶² °ÔÀÓ°ú ±âŸ Ư¼öÇÑ ¾îÇø®ÄÉÀ̼ÇÀº °¢ Å°´­¸² ¾È¿¡¼­ Áö¿¬ ½Ã°£À» ¿ä±¸ÇÕ´Ï´Ù; Áï, Å°°¡ ´­¸° ÈÄ ´Ù½Ã ¶¼±â ±îÁö ±× »çÀÌ¿¡ Áö¿¬ ½Ã°£À» ¿ä±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

-1À̸é Áö¿¬ ½Ã°£ÀÌ ÀüÇô ¾ø½À´Ï´Ù (±âº» °ª). ±×¸®°í 0ÀÌ¸é °¡´ÉÇϸé Àû°Ô Áö¿¬µË´Ï´Ù (±×·¸Áö¸¸, Play ¸Å°³º¯¼ö°¡ Á¸ÀçÇϸé, 0°ú -1 ¸ðµÎ Áö¿¬ ½Ã°£ÀÌ ¾ø½À´Ï´Ù). ÀÌ ¸Å°³º¯¼ö¸¦ »ý·«Çϸé ÇöÀç PressDurationÀÌ ¹Ù²îÁö ¾Ê½À´Ï´Ù.

+

ÁÖÀÇ: PressDuration´Â Àü¼Û ÁßÀÎ Å°¸¦ Áö¿øÇϱâ À§ÇÏ¿© ¼ö½Ä Å° »óŸ¦ º¯°æÇÑ ´ÙÀ½¿¡µµ Áö¿¬ ½Ã°£À» »ý»êÇÕ´Ï´Ù (CTRL, ALT, SHIFT, ±×¸®°í WIN).

+

+ ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.

+ +
Play
+ [v1.0.43+]
+

´Ü¾î Play´Â À§ÀÇ ¼³Á¤À» ÀüÅëÀûÀÎ SendEvent ¸ðµå°¡ ¾Æ´Ï¶ó SendPlay ¸ðµå¿¡ Àû¿ëÇÕ´Ï´Ù. ½ºÅ©¸³Æ®°¡ ÀÌ ¸Å°³º¯¼ö¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸¸é, Áö¿¬ ½Ã°£Àº SendPlay¿¡ ´ëÇÏ¿© ¾ðÁ¦³ª -1/-1ÀÔ´Ï´Ù.

+ +
+ +

³íÆò

+

ÁÖÀÇ: SendInputÀº SetKeyDelay¸¦ ÁؼöÇÏÁö ¾Ê½À´Ï´Ù; ±× ¸ðµå¿¡¼­´Â Å°´­¸² »çÀÌ¿¡ Áö¿¬ ½Ã°£ÀÌ ÀüÇô ¾ø½À´Ï´Ù. ÀÌ´Â SendMode InputÀÌ ÄÑÁ® ÀÖÀ» ¶§ Sendµµ ¸¶Âù°¡Áö·Î Àû¿ëµË´Ï´Ù.

+

+ªÀº Áö¿¬(ÀáÀÚ±â)´Â Send ¶Ç´Â ControlSend°¡ Àü¼ÛÇÏ´Â Å°´­¸²¸¶´Ù ÀÚµ¿À¸·Î ½ÃÇàµË´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ½ºÅ©¸³Æ®ÀÇ ½Å·Ú¼ºÀÌ °³¼±µË´Ï´Ù. ¿Ö³ÄÇϸé âÀº °¡²û ºü¸£°Ô ¹Ð·Á ¿À´Â Å°´­¸²ÀÇ ¹ü¶÷ ¼Óµµ¸¦ µû¶ó ÀâÀ» ¼ö ¾ø±â ¶§¹®ÀÔ´Ï´Ù.

+

+ OSÀÇ ½Ã°£-À¯Áö ½Ã½ºÅÛÀÇ Á¤¹Ð¼º ¶§¹®¿¡, Áö¿¬ ½Ã°£Àº °¡Àå ±î±î¿î 10 ¶Ç´Â 15ÀÇ ¹è¼ö·Î ¿Ã¸²µË´Ï´Ù. ¿¹¸¦ µé¾î, 1°ú 10 (Æ÷ÇÔ) »çÀÌÀÇ Áö¿¬ ½Ã°£Àº ´ëºÎºÐÀÇWindows XP ½Ã½ºÅÛ¿¡¼­ 10 ¶Ç´Â 15¿Í µ¿µîÇÕ´Ï´Ù (¾Æ¸¶µµ 2kµµ ¸¶Âù°¡ÁöÀÏ °ÍÀÓ).

+

+Send/SendEvent ¸ðµå¿¡ ´ëÇÏ¿©, Áö¿¬ ½Ã°£ÀÌ 0ÀÌ¸é ³»ºÎÀûÀ¸·Î Sleep(0)À» ½ÇÇàÇÕ´Ï´Ù. ±×·¯¸é ½ºÅ©¸³Æ®ÀÇ ½Ã°£Á¶°¢(timeslice)ÀÇ ³ª¸ÓÁö¸¦ ±×¸¦ ÇÊ¿ä·Î ÇÏ´Â ´Ù¸¥ ÇÁ·Î¼¼½º¿¡ ¾çº¸ÇÕ´Ï´Ù. ³ª¸ÓÁö°¡ ¾ø´Ù¸é Sleep(0)Àº ÀüÇô ÀáÀÚÁö ¾Ê½À´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, Áö¿¬ ½Ã°£ÀÌ -1À̸é Àý´ë ÀáÀÚÁö ¾Ê½À´Ï´Ù. ´õ ³ôÀº ½Å·Ú¸¦ À§ÇØ, -1º¸´Ù´Â 0À» ±ÇÀåÇÕ´Ï´Ù.

+

+Áö¿¬ ½Ã°£ÀÌ -1·Î ¼³Á¤µÇ¸é, ½ºÅ©¸³Æ®ÀÇ ÇÁ·Î¼¼½º ¿ì¼±¼øÀ§´Â ÀüÅëÀûÀÎ SendEvent ¸ðµå¸¦ »ç¿ëÇÒ ¶§ ¾ó¸¶³ª »¡¸® Å°´­¸²À» Àü¼ÛÇÒ °ÍÀΰ¡¸¦ °áÁ¤ÇÏ´Â Áß¿äÇÑ ¿äÀÎÀÌ µË´Ï´Ù. ½ºÅ©¸³Æ®ÀÇ ¿ì¼± ¼øÀ§¸¦ ³ôÀÌ·Á¸é, Process, Priority,, High¸¦ »ç¿ëÇϽʽÿÀ. + +ÀÌ ¶§¹®¿¡ ÀüÇüÀûÀ¸·Î Å°´­¸²ÀÌ È°¼º âÀÌ Ã³¸®ÇÏ´Â ¼Óµµº¸´Ù ´õ »¡¸® Àü¼ÛµÇÁö¸¸, ½Ã½ºÅÛÀÌ Áöµ¿À¸·Î Å°´­¸²À» ¹öÆÛ Ã³¸®ÇØ ÁÝ´Ï´Ù. +¹öÆÛ Ã³¸®µÈ Å°´­¸²Àº Send ¸í·É¾î°¡ ¿Ï·áµÈ ÈÄ¿¡µµ °è¼ÓÇؼ­ ¸ñÇ¥ â¿¡ µµ´ÞÇÕ´Ï´Ù (½ÉÁö¾î âÀÌ ´õ ÀÌ»ó È°¼º âÀÌ ¾Æ´Ï´õ¶óµµ »ó°üÀÌ ¾ø½À´Ï´Ù). ÀÌ°ÍÀº º¸Åë ÇØ°¡ µÇÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇÏ¸é °°Àº â¿¡ ¿¬À̾î Àü¼ÛµÇ´Â Å°´­¸²Àº ÀÌ¹Ì ¹öÆÛ¿¡ ÀÚ¸® ÀâÀº Å°´­¸² µÚ¿¡ Â÷°îÂ÷°î ½×À̱⠶§¹®ÀÔ´Ï´Ù.

+

+³»Àå º¯¼ö A_KeyDelay¿¡ Send/SendEvent ¸ðµå¿¡ ´ëÇÑ ÇöÀç Delay ¼³Á¤ÀÌ ´ã°Ü ÀÖ½À´Ï´Ù. PressDuration³ª SendPlayÀÇ Delay¸¦ À§ÇÑ ³»Àå º¯¼ö´Â ¾ø½À´Ï´Ù.

+

+»õ·Î ±âµ¿µÈ ¾²·¹µå´Â ¸ðµÎ (¿¹¸¦ µé¾î ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾ) ÀÌ ¸í·É¾î¿¡ ´ëÇÑ ±âº» ¼³Á¤À» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ±âº»°ªÀº Àúµ¿-½ÇÇà ¼½¼Ç (½ºÅ©¸³Æ®ÀÇ »ó´Ü)¿¡¼­ ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ¸é ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

Send, ControlSend, SendMode, SetMouseDelay, SetControlDelay, SetWinDelay, SetBatchLines, Click

+ +

¿¹Á¦

+
SetKeyDelay, 0
+ + + diff --git a/src/docs/commands/SetMouseDelay.htm b/src/docs/commands/SetMouseDelay.htm new file mode 100644 index 0000000..917d498 --- /dev/null +++ b/src/docs/commands/SetMouseDelay.htm @@ -0,0 +1,49 @@ + + + + +SetMouseDelay + + + + + + + +

SetMouseDelay

+ +

°¢ ¸¶¿ì½º À̵¿À̳ª Ŭ¸¯¸¶´Ù ÀϾ Áö¿¬ ½Ã°£À» ¼³Á¤ÇÕ´Ï´Ù.

+ +
SetMouseDelay, Delay [, Play]
+

¸Å°³º¯¼ö

+
+ +
Delay
+

¹Ð¸®ÃÊ ´ÜÀ§ ½Ã°£. Ç¥Çö½Ä °¡´É. -1À» »ç¿ëÇϸé Áö¿¬½Ã°£ÀÌ ÀüÇô ¾ø½À´Ï´Ù. 0ÀÌ¸é °¡´ÉÇϸé Àû°Ô Áö¿¬ÇÕ´Ï´Ù (±×·¸Áö¸¸, Play ¸Å°³º¯¼ö°¡ Á¸ÀçÇϸé,. 0°ú -1 ¸ðµÎ Áö¿¬ ½Ã°£ÀÌ ¾ø½À´Ï´Ù). ¼³Á¤ÇÏÁö ¾ÊÀ¸¸é, ±âº» Áö¿¬ ½Ã°£Àº ÀüÅëÀûÀÎ SendEvent ¸ðµå¿¡ ´ëÇÏ¿© 10ÀÌ°í SendPlay ¸ðµå¿¡ ´ëÇÏ¿© -1ÀÔ´Ï´Ù.

+ +
Play
+ [v1.0.43+]
+

´Ü¾î Play´Â Áö¿¬ ½Ã°£À» ÀüÅëÀûÀÎ Send/SendEvent ¸ðµå°¡ ¾Æ´Ï¶ó SendPlay ¸ðµå¿¡ Àû¿ëÇÕ´Ï´Ù. ½ºÅ©¸³Æ®°¡ ÀÌ ¸Å°³º¯¼ö¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸¸é, Áö¿¬ ½Ã°£Àº ¾ðÁ¦³ª SendPlay¿¡ ´ëÇÏ¿© -1ÀÔ´Ï´Ù.

+ +
+ +

³íÆò

+

+Click ±×¸®°í MouseMove/Click/Drag (SendInput ¸ðµå Á¦¿Ü)¿¡ ÀÇÇÏ¿© ¹ß»ýÇÏ´Â ¸Å ¸¶¿ì½º À̵¿À̳ª Ŭ¸¯¸¶´Ù ªÀº Áö¿¬ ½Ã°£ (ÀáÀÚ±â)ÀÌ ÀÚµ¿À¸·Î »ðÀԵ˴ϴÙ. ÀÌ°ÍÀº ½ºÅ©¸³Æ®ÀÇ ½Å·Ú¼ºÀ» ³ôÀ̱â À§ÇÑ °ÍÀÔ´Ï´Ù. âÀº Á¾Á¾ ºü¸¥ ¼ÓµµÀÇ ¸¶¿ì½º À̺¥Æ® ¹ü¶÷À» µû¶ó ÀâÀ» ¼ö ¾ø±â ¶§¹®ÀÔ´Ï´Ù.

+

+OSÀÇ ½Ã°£-À¯Áö ½Ã½ºÅÛÀÇ Á¤¹Ð¼º ¶§¹®¿¡, Áö¿¬Àº °¡Àå °¡±î¿î 10 ¶Ç´Â 15ÀÇ ¹è¼ö·Î ¿Ã¸²µË´Ï´Ù. ¿¹¸¦ µé¾î, 1ºÎÅÍ 10 (Æ÷ÇÔ) ±îÁöÀÇ Áö¿¬ ½Ã°£Àº ´ëºÎºÐÀÇ Windows XP ½Ã½ºÅÛ¿¡¼­ 10 ¶Ç´Â 15¿Í µ¿µîÇÕ´Ï´Ù (¾Æ¸¶µµ 2kµµ ±×·² °ÍÀÓ).

+

+Áö¿¬ ½Ã°£ÀÌ 0ÀÌ¸é ³»ºÎÀûÀ¸·Î Sleep(0)À» ½ÇÇàÇÕ´Ï´Ù. ÀÌ´Â ±×¸¦ ÇÊ¿ä·Î ÇÏ´Â ´Ù¸¥ ÇÁ·Î¼¼½º¿¡ ½ºÅ©¸³Æ®ÀÇ ½Ã°£Á¶°¢(timeslice)ÀÇ ³ª¸ÓÁö¸¦ ³ª´©¾î ÁÝ´Ï´Ù. ³²´Â Á¶°¢ÀÌ ¾ø´Ù¸é, Sleep(0)Àº ÀüÇô ÀáÀÚÁö ¾Ê½À´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, Áö¿¬ ½Ã°£ÀÌ -1À̸é Àý´ë ÀáÀÚÁö ¾Ê½À´Ï´Ù.

+

+³»Àå º¯¼ö A_MouseDelay¿¡ Send/SendEvent ¸ðµå¿¡ ´ëÇÑ ÇöÀç ¼³Á¤ÀÌ ´ã°Ü ÀÖ½À´Ï´Ù (SendPlay ¸ðµå¿¡ ´ëÇؼ­´Â ³»Àå º¯¼ö°¡ ¾ø½À´Ï´Ù).

+

+»õ·Î ±âµ¿µÈ ¾²·¹µå´Â (¿¹¸¦ µé¾î ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾ) ÀÌ ¸í·É¾î¿¡ ´ëÇÑ ±âº» ¼³Á¤°ªÀ» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ±âº» °ªÀº ÀÚµ¿-½ÇÇà ¼½¼Ç(½ºÅ©¸³Æ®ÀÇ »ó´Ü)¿¡¼­ ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ¸é ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+SetDefaultMouseSpeed, Click, MouseMove, MouseClick, MouseClickDrag, SendMode, SetKeyDelay, SetControlDelay, SetWinDelay, SetBatchLines

+

¿¹Á¦

+
SetMouseDelay, 0
+ + + diff --git a/src/docs/commands/SetNumScrollCapsLockState.htm b/src/docs/commands/SetNumScrollCapsLockState.htm new file mode 100644 index 0000000..ac90eaf --- /dev/null +++ b/src/docs/commands/SetNumScrollCapsLockState.htm @@ -0,0 +1,44 @@ + + + + +SetCapsLockState/SetNumLockState/SetScrollLockState + + + + + + + +

SetCapsLockState/SetNumLockState/SetScrollLockState

+ +

Capslock/NumLock/ScrollLock Å°ÀÇ »óŸ¦ ¼³Á¤ÇÕ´Ï´Ù. Å°ÀÇ »óŸ¦ °­Á¦·Î À¯ÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +
SetCapsLockState [, State]
+SetNumLockState [, State]
+SetScrollLockState [, State]
+

¸Å°³º¯¼ö

+
+ +
State
+

ÀÌ ¸Å°³º¯¼ö°¡ »ý·«µÇ¸é, Å°ÀÇ AlwaysOn/Off ¼Ó¼ºÀÌ Á¦°ÅµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ´ÙÀ½ ´Ü¾î Áß Çϳª¸¦ ¼³Á¤ÇϽʽÿÀ:

+

On: Å°¸¦ ÄÑ°í AlwaysOn/Off ¼Ó¼ºÀ» Á¦°ÅÇÕ´Ï´Ù.

+

Off: Å°¸¦ ²ô°í AlwaysOn/Off ¼Ó¼ºÀ» Á¦°ÅÇÕ´Ï´Ù.

+

AlwaysOn: °­Á¦·Î ÄÒ »óŸ¦ À¯ÁöÇÕ´Ï´Ù.

+

AlwaysOff: °­Á¦·Î ²ö »óŸ¦ À¯ÁöÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+Send ¸í·É¾î¸¦ »ç¿ëÇÏ¿© Å°¸¦ ¹Ý´ë »óÅ·ΠÅä±ÛÇÒ ¼ö ÀÖ½À´Ï´Ù; ¿¹¸¦ µé¾î: Send {Capslock}.

+

+Å°¸¦ AlwaysOn ¶Ç´Â AlwaysOff »óÅ·ΠÀ¯ÁöÇÏ·Á¸é Å°º¸µå °¥°í¸®°¡ ÇÊ¿äÇÕ´Ï´Ù. Å°º¸µå °¥°í¸®´Â ±×·± °æ¿ì ÀÚµ¿À¸·Î ¼³Ä¡µË´Ï´Ù.

+

°ü·Ã Ç׸ñ

+

SetStoreCapslockMode, GetKeyState

+

¿¹Á¦

+
SetNumlockState, on
+SetScrollLockState, AlwaysOff
+ + + diff --git a/src/docs/commands/SetRegView.htm b/src/docs/commands/SetRegView.htm new file mode 100644 index 0000000..1d6337e --- /dev/null +++ b/src/docs/commands/SetRegView.htm @@ -0,0 +1,72 @@ + + + + +SetRegView + + + + + + + +

SetRegView [v1.1.08+]

+

RegRead, RegWrite, RegDelete ±×¸®°í ·¹Áö½ºÆ®¸® ȸµ¹ÀÌ¿¡ »ç¿ëµÇ´Â ·¹Áö½ºÆ®¸® ºä¸¦ ¼³Á¤ÇÕ´Ï´Ù.

+
SetRegView, RegView
+ +

¸Å°³º¯¼ö

+
+ +
RegView
+
+

·¹Áö½ºÆ®¸®¸¦ 32-ºñÆ® ¾îÇø®ÄÉÀ̼Çó·³ º¸·Á¸é 32¸¦ ÁöÁ¤ÇÏ°í, 64-ºñÆ® ¾îÇø®ÄÉÀ̼Çó·³ º¸·Á¸é 64¸¦ ÁöÁ¤ÇϽʽÿÀ.

+

Á¤»ó ÇàÀ§·Î º¹±¸ÇÏ·Á¸é ´Ü¾î Default¸¦ ÁöÁ¤ÇϽʽÿÀ.

+
+ +
+ +

ÃÑÆò

+

+ÀÌ ¸í·É¾î´Â Windows 64-ºñÆ®¿¡¸¸ À¯¿ëÇÕ´Ï´Ù. Windows 32-ºñÆ®¿¡¼­´Â È¿°ú°¡ ¾ø½À´Ï´Ù.

+

+64-ºñÆ® ½Ã½ºÅÛ¿¡¼­, 32-ºñÆ® ¾îÇø®ÄÉÀ̼ÇÀº WOW64¶ó°í ºÎ¸£´Â Windows ¼­ºê½Ã½ºÅÛ À§¿¡¼­ ½ÇÇàµË´Ï´Ù. ±âº»À¸·Î, ½Ã½ºÅÛÀº Ãæµ¹À» ÇÇÇϱâ À§ÇØ ¾î¶² ·¹Áö½ºÆ®¸® Å°´Â ¹æÇâÀüȯÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, 32-ºñÆ® ½ºÅ©¸³Æ®¿¡¼­HKLM\SOFTWARE\AutoHotkey´Â HKLM\SOFTWARE\Wow6432Node\AutoHotkeyÀ¸·Î ¹æÇâÀüȯµË´Ï´Ù. SetRegView¸¦ »ç¿ëÇϸé 32-ºñÆ® ½ºÅ©Å©¸³Æ®ÀÇ ·¹Áö½ºÆ®¸® ¸í·É¾î°¡ 64-ºñÆ® ·¹Áö½ºÆ®¸® ºä·Î ¹æÇâÀüȯµÈ Å°¿¡ ±×¸®°í ±× ¹Ý´ë·Î Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

³»Àå º¯¼ö A_RegView¿¡ ÇöÀç ¼³Á¤ÀÌ ´ã±é´Ï´Ù. »õ·Î ±âµ¿µÈ ¾²·¹µå´Â (ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾ) ÀÌ ¸í·É¾î¿¡ ´ëÇÑ ±âº» ¼³Á¤À» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ±âº»°ªÀº ÀÌ ¸í·É¾î¸¦ ÀÚµ¿-½ÇÇà ¼½¼Ç (½ºÅ©¸³Æ® »ó´Ü)¿¡¼­ »ç¿ëÇÏ¸é ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+RegRead, RegWrite, RegDelete, Loop (·¹Áö½ºÆ®¸®)

+ +

¿¹Á¦

+

¿¹Á¦ 1Àº ƯÁ¤ÇÑ ·¹Áö½ºÆ®¸® ºä¸¦ ¼³Á¤ÇÏ´Â ¹ý°ú ·¹Áö½ºÆ®¸® ¹æÇâÀüȯÀ¸·Î ½ºÅ©¸³Æ®¿¡ ¿µÇâÀ» ÁÖ´Â ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.

+
; ·¹Áö½ºÆ®¸® Å°¿¡ 32-ºñÆ® ¾îÇø®ÄÉÀ̼Çó·³ Á¢±ÙÇÕ´Ï´Ù.
+SetRegView 32
+RegWrite REG_SZ, HKLM, SOFTWARE\Test.ahk, Value, 123
+
+; ·¹Áö½ºÆ®¸® Å°¿¡ 64-ºñÆ® ¾îÇø®ÄÉÀ̼Çó·³ Á¢±ÙÇÕ´Ï´Ù.
+SetRegView 64
+RegRead value, HKLM, SOFTWARE\Wow6432Node\Test.ahk, Value
+RegDelete HKLM, SOFTWARE\Wow6432Node\Test.ahk
+
+MsgBox Read value '%value%' via Wow6432Node.
+
+; ·¹Áö½ºÆ®¸® ºä¸¦ ±âº»°ªÀ¸·Î º¹±¸ÇÕ´Ï´Ù. 
+; ±âº»°ªÀº ½ºÅ©¸³Æ®°¡ 32-ºñÆ®Àΰ¡ 64-ºñÆ®Àΰ¡¿¡ µû¶ó ´Ù¸¨´Ï´Ù.
+SetRegView Default
+;...
+
+

¿¹Á¦ 2Àº ½ºÅ©¸³Æ®°¡ ½ÇÇàÁßÀÎ ¿î¿µ üÁ¦¿Í EXE¿Í ÀÇ À¯ÇüÀ» ŽÁöÇÏ´Â ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.

+
if (A_PtrSize = 8)
+    script_is := "64-bit"
+else ; if (A_PtrSize = 4)
+    script_is := "32-bit"
+
+if (A_Is64bitOS)
+    OS_is := "64-ºñÆ®ÀÔÀÌ´Ù"
+else
+    OS_is := "32-ºñÆ®ÀÔ´Ï´Ù. ¿ÀÁ÷ ´ÜÀÏ ·¹Áö½ºÆ®¸® ºä¸¸ ÀÖ½À´Ï´Ù"
+
+MsgBox ÀÌ ½ºÅ©¸³Æ®´Â %script_is%ÀÌ°í, OS´Â %OS_is%ÀÔ´Ï´Ù.
+ + + diff --git a/src/docs/commands/SetStoreCapslockMode.htm b/src/docs/commands/SetStoreCapslockMode.htm new file mode 100644 index 0000000..cf0ac5b --- /dev/null +++ b/src/docs/commands/SetStoreCapslockMode.htm @@ -0,0 +1,43 @@ + + + + +SetStoreCapslockMode + + + + + + + +

SetStoreCapslockMode

+ +

Send ¸í·É¾î¸¦ ¼öÇàÇÑ ÈÄ CapsLockÀÇ »óŸ¦ º¹±¸ÇÒÁö ¸»Áö °áÁ¤ÇÕ´Ï´Ù.

+ +
SetStoreCapslockMode, On|Off
+

¸Å°³º¯¼ö

+
+ +
On|Off
+

On: ¸ðµç ½ºÅ©¸³Æ®¿¡ ÃÖÃÊ·Î ¼³Á¤µË´Ï´Ù: CapsLock Å°´Â Send°¡ ÀÚ½ÅÀÇ ¿¬»êÀ» À§ÇØ Àá½Ã ±×°ÍÀ» º¯°æÇÒ ÇÊ¿ä°¡ ÀÖ¾ú´Ù¸é ±×ÀÇ ÀÌÀü °ªÀ¸·Î º¹±¸µË´Ï´Ù.

+

Off: CapsLock Å°ÀÇ »óŸ¦ Àý´ë ¹Ù²ÙÁö ¾Ê½À´Ï´Ù. °á°úÀûÀ¸·Î, SendÀÇ ¿¬»ê µ¿¾È ¾î¼´Ù°¡ Capslock Å°°¡ ÄÑÁ³´Ù¸é(ON) ¹®ÀÚÀÇ ´ë¼Ò¹®ÀÚ°¡ ¹Ý´ë·Î ³ªÅ¸³¯ °ÍÀÔ´Ï´Ù.

+ +
+ +

³íÆò

+

+ÀÌ°ÍÀº Capslock Å°°¡ Send¿Í ControlSend¿¡ ´ëÇÏ¿© ¾ðÁ¦³ª ²¨Áö´Â °ÍÀº ¾Æ´Ï¶ó´Â ¶æÀÔ´Ï´Ù. ¼º°øÀûÀ¸·Î ²¨Á³´Ù°í ÇÒÁö¶óµµ, Å°µéÀÌ Àü¼ÛµÈ ÈÄ¿¡ ´Ù½Ã ¿ø·¡´ë·Î ÄÑÁöÁö ¾ÊÀ» ¼öµµ ÀÖ½À´Ï´Ù.

+

+ÀÌ ¸í·É¾î´Â ÀÚÁÖ »ç¿ëµÇÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ±âº»°ªÀÌ ´ëºÎºÐÀÇ °æ¿ì Á¦ÀÏ ÁÁ±â ¶§¹®ÀÔ´Ï´Ù.

+

+»õ·Î ±âµ¿µÇ´Â ¾²·¹µå´Â ( ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾ) ÀÌ ¸í·É¾î¿¡ ´ëÇÑ ±âº» ¼³Á¤À» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ±âº»°ªÀº ÀÚµ¿-½ÇÇà ¼½¼Ç (½ºÅ©¸³Æ®ÀÇ »ó´Ü)¿¡¼­ ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ¸é ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+SetCaps/Num/ScrollLockState, Send, ControlSend

+ +

¿¹Á¦

+
SetStoreCapslockMode, off
+ + + diff --git a/src/docs/commands/SetTimer.htm b/src/docs/commands/SetTimer.htm new file mode 100644 index 0000000..66142bb --- /dev/null +++ b/src/docs/commands/SetTimer.htm @@ -0,0 +1,164 @@ + + + + +SetTimer + + + + + + + + +

SetTimer

+ +

¼­ºê·çƾÀÌ ÁöÁ¤µÈ ÀÏÁ¤ °£°ÝÀ¸·Î ÀÚµ¿À¸·Î ¹Ýº¹ÀûÀ¸·Î ±âµ¿µÇµµ·Ï ¸¸µì´Ï´Ù.

+ +
SetTimer [, Label, Period|On|Off|Delete, Priority]
+

¸Å°³º¯¼ö

+
+ +
Label
+
+

Á¡ÇÁÇØ °¥ ¶óº§ ¶Ç´Â ÇÖÅ° ¶óº§ÀÇ À̸§. ReturnÀ̳ª ExitÀ» ¸¸³¯ ¶§±îÁö Label ¾Æ·¡ÀÇ ¸í·É¾îµéÀÌ ½ÇÇàµË´Ï´Ù. °ÅÀÇ ¸ðµç ´Ù¸¥ ¸í·É¾îÀÇ ¸Å°³º¯¼öó·³, LabelÀº º¯¼ö ÂüÁ¶°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. %MyLabel%¿Í °°ÀÌ, º¯¼ö¿¡ ÀúÀåµÈ À̸§ÀÌ ¸ñÇ¥·Î »ç¿ëµË´Ï´Ù.

+

+ [v1.1.01+]: LabelÀÌ »ý·«µÇ¸é, A_ThisLabelÀÌ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î, SetTimer,, Off¸¦ ŸÀÌ¸Ó ¼­ºê·çƾ ¾È¿¡ »ç¿ëÇϸé ŸÀ̸Ӹ¦ ²ø ¼ö ÀÖ½À´Ï´Ù.

+

[v1.1.20+]: ¶óº§ À̸§ÀÌ À¯È¿ÇÏÁö ¾ÊÀ¸¸é, ÀÌ ¸Å°³º¯¼ö´Â ÇÔ¼öÀÇ À̸§, ¶Ç´Â ÇÔ¼ö °´Ã¼¸¦ ´ã°í ÀÖ´Â ÇÑ °³Â¥¸® º¯¼ö°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, SetTimer %funcobj%, 1000 ¶Ç´Â SetTimer % funcobj, 1000. °´Ã¼¸¦ µ¹·ÁÁÖ´Â ´Ù¸¥ Ç¥Çö½ÄÀº ÇöÀç Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.

+
+ +
Period|On|Off|Delete
+

On: ÀÌÀü ±â°£(period) µ¿¾È ºñÈ°¼ºÈ­µÇ¾î ÀÖ´ø ŸÀ̸Ӹ¦ ÀçÈ°¼ºÈ­ÇÕ´Ï´Ù. ŸÀ̸Ӱ¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, »õ·Î ¸¸µì´Ï´Ù (±âº» °£°ÝÀº 250ÀÔ´Ï´Ù). ŸÀ̸Ӱ¡ Á¸ÀçÇÏÁö¸¸ ÀÌÀü¿¡ ÇÑ-¹ø¸¸- ½ÇÇà ¸ðµå·Î ¼³Á¤µÇ¾î ÀÖ¾ú´Ù¸é, ´Ù½Ã ÇÑ ¹ø¸¸ ½ÇÇàµË´Ï´Ù.

+

Off: ±âÁ¸ÀÇ Å¸À̸Ӹ¦ ²ü´Ï´Ù.

+

Delete [v1.1.20+]: ±âÁ¸ÀÇ Å¸À̸Ӹ¦ ²ô°í »èÁ¦ÇÕ´Ï´Ù. ŸÀ̸Ӱ¡ ÇÔ¼ö °´Ã¼¿¡ ¿¬°üµÇ¾î ÀÖ´Ù¸é, ±× °´Ã¼´Â ÇØÁ¦µË´Ï´Ù. ŸÀ̸Ӹ¦ ²ô´õ¶óµµ °´Ã¼´Â ÇØÁ¦µÇÁö ¾Ê½À´Ï´Ù.

+

+ Period: ÀÌ ¸Å°³º¯¼ö¸¦ ´ë·«ÀûÀÎ ¹Ð¸® ÃÊÀÇ °³¼ö·Î »ç¿ëÇÏ¿© ŸÀ̸Ӹ¦ »ý¼ºÇϰųª °»½ÅÇÕ´Ï´Ù. ÀÌ ½Ã°£Àº ¸¶Áö¸·À¸·Î Label ¼­ºê·çƾÀÌ ½ÃÀÛÇÑ ÀÌÈÄ·Î °æ°úÇØ¾ß ÇÏ´Â ½Ã°£ÀÔ´Ï´Ù. ÀÌ ½Ã°£ ¸¸Å­ Áö³ª¸é, LabelÀº ´Ù½Ã ½ÇÇàµË´Ï´Ù + (´Ü, Áö³­ ½Ã°£ ÀÌÈÄ·Î °è¼Ó ½ÇÇà ÁßÀ̶ó¸é ¿¹¿ÜÀÔ´Ï´Ù). ŸÀ̸Ӵ ÀÚµ¿À¸·Î È°¼ºÈ­µË´Ï´Ù. À̸¦ ¸·À¸·Á¸é, ÀÌ ¸Å°³º¯¼ö¿¡ OFF¸¦ ÁöÁ¤ÇÏ°í, Áï½Ã µÎ ¹ø°·Î ¸í·É¾î¸¦ È£ÃâÇϽʽÿÀ.

+

+ Period´Â Á¤¼ö¿©¾ß ÇÕ´Ï´Ù. ´Ü º¯¼ö³ª Ç¥Çö½ÄÀÌ »ç¿ëµÇ¸é ¾ÈµË´Ï´Ù. ÀÌ °æ¿ì´Â ¼Ò¼öÁ¡ ÀÌÇÏ´Â ÀüºÎ ¹«½ÃµË´Ï´Ù.

+

+ ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î ÀÖ°í ±×¸®°í:
+ 1) ŸÀ̸Ӱ¡ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é: ±â°£À» 250À¸·Î ÇÏ¿© »ý¼ºµË´Ï´Ù.
+ 2) ŸÀ̸Ӱ¡ ÀÌ¹Ì Á¸ÀçÇÑ´Ù¸é: ±× ŸÀ̸Ӱ¡ È°¼ºÈ­µÇ°í Priority¸¦ ÁöÁ¤ÇÏÁö ¾Ê´Â ÇÑ, ÀÌÀüÀÇ ±â°£(period)Àº ¸®¼ÂµË´Ï´Ù.

+

+ Run only once [v1.0.46.16+]: À½ÀÇ Á¤¼ö·Î Period¸¦ ÁöÁ¤Çϸé ŸÀ̸Ӱ¡ ¿ÀÁ÷ ÇÑ ¹ø¸¸ ½ÇÇàµÇ¾î¾ß ÇÑ´Ù´Â »ç½ÇÀ» ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, -100À» ÁöÁ¤Çϸé ŸÀ̸Ӵ Áö±Ý ºÎÅÍ 100 ms µ¿¾È ½ÇÇàµÇ°í ŸÀ̸Ӹ¦ ²ü´Ï´Ù. ¸¶Ä¡ SetTimer, Label, Off¸¦ »ç¿ëÇÑ È¿°ú°¡ ÀÖ½À´Ï´Ù.
+

+
+ +
Priority
+
+

ÀÌ ¼±ÅÃÀû ¸Å°³º¯¼ö´Â -2147483648¿¡¼­ 2147483647 »çÀÌÀÇ Á¤¼öÀÔ´Ï´Ù (¶Ç´Â Ç¥Çö½Ä). ÀÌ Å¸À̸ÓÀÇ ¾²·¹µå ¿ì¼± ¼øÀ§¸¦ ÁöÁ¤ÇÕ´Ï´Ù. »ý·«Çϸé, 0ÀÌ »ç¿ëµË´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº ¾²·¹µå¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ ´Ù¸¥ °ÍÀº ÀüÇô °Çµå¸®Áö ¾ÊÀº ä·Î ±âÁ¸ ŸÀ̸ÓÀÇ ¿ì¼± ¼øÀ§¸¸ ¹Ù²Ù·Á¸é, ÀÌ ¸Å°³º¯¼ö ¾ÕÀÇ ¸Å°³º¯¼ö¸¦ ºó ä·Î µÎ½Ê½Ã¿À.

+ +
+ +

³íÆò

+

+ŸÀ̸Ӵ ºñµ¿±âÀûÀ¸·Î ½ÇÇàµÇ±â ¶§¹®¿¡ À¯¿ëÇÕ´Ï´Ù. ÁöÁ¤µÈ °£°ÝÀ¸·Î ÀÏÁ¤ÇÏ°Ô ½ÇÇàµÈ´Ù´Â ¶æÀÔ´Ï´Ù. ½ÉÁö¾î ½ºÅ©¸³Æ®°¡ âÀ» ±â´Ù¸®°Å³ª, ´ëÈ­»óÀÚ¸¦ º¸¿©Áְųª ¶Ç´Â ´Ù¸¥ ÀÏÀ» ÇÏ´À¶ó ¹Ù»Û ¶§¿¡µµ »ó°üÀÌ ¾ø½À´Ï´Ù. + +¸¹ÀÌ »ç¿ëµÇ´Â ¿¹·Î´Â »ç¿ëÀÚ°¡ ½¯ ¶§ ¾î¶² ÀÏÀ» Çϱâ (A_TimeIdle¿¡ ¹Ý¿µµÊ) ¶Ç´Â »ç¿ëÀÚ°¡ ³ªÅ¸³ª´Â ¼ø°£ ¿øÇÏÁö ¾Ê´Â âÀ» ´Ý±â°¡ ÀÖ½À´Ï´Ù.

+

+ŸÀÌ¸Ó ¶§¹®¿¡ ½ºÅ©¸³Æ®°¡ µ¿½Ã¿¡ ¿©·¯ ÀÏÀ» ¼öÇàÇѴٴ ȯ»óÀ» ºÒ·¯ ÀÏÀ¸Å°Áö¸¸, »ç½ÇÀº ±×·¸Áö ¾Ê½À´Ï´Ù. ´ë½Å¿¡, ½Ã°£Á¦ÇÑ ¼­ºê·çƾÀ» ´Ù¸¥ ¾²·¹µå¿Í ¶È°°ÀÌ Ãë±ÞÇÕ´Ï´Ù: ÇÖÅ° ¼­ºê·çƾ°ú ¸¶Âù°¡Áö·Î, ´Ù¸¥ ¾²·¹µå¿¡°Ô ÀÎÅÍ·´Æ® ´çÇÏ°í ¶Ç ÀÎÅÍ·´Æ® ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº ¾²·¹µå¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ŸÀ̸Ӱ¡ ¸¸µé¾îÁú ¶§¸¶´Ù, ÀçÈ°¼ºµÇ°í, »õ ±â°£(period)À¸·Î °»½ÅµË´Ï´Ù. ±×ÀÇ ¼­ºê·çƾÀº Áï½Ã ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù; ¸ÕÀú ±â°£(period)ÀÌ ´ÙÇØ¾ß ÇÕ´Ï´Ù. ŸÀ̸Ӹ¦ ½ÃÀÛÇÏÀÚ ¸¶ÀÚ ¹Ù·Î ½ÇÇàÇÏ°í ½ÍÀ¸¸é, Gosub¸¦ »ç¿ëÇØ Å¸À̸ÓÀÇ ¼­ºê·çƾÀ» ½ÇÇàÇϽʽÿÀ (±×·¸Áö¸¸, ÀÌ°ÍÀº ŸÀÌ¸Ó ÀÚü°¡ ±×·± °Í ó·³ »õ ¾²·¹µå¸¦ ½ÃÀÛÇÏÁö ¾Ê½À´Ï´Ù; ±×·¡¼­ SendMode¿Í °°Àº ¼³Á¤Àº ±âº»°ªÀ¸·Î ½ÃÀÛÇÏÁö ¾Ê½À´Ï´Ù).

+

+SetTimer°¡ ±âÁ¸ÀÇ Å¸À̸ӿ¡ »ç¿ëµÇ°í ¸Å°³º¯¼ö #2°¡ ¼ýÀÚÀ̰ųª ´Ü¾î ON À̸é (¶Ç´Â »ý·«µÇ¸é), Áö³­ ¹ø ½ÇÇàµÈ ŸÀ̸ÓÀÇ "³»ºÎ ½Ã°£"ÀÌ ÇöÀç ½Ã°£À¸·Î Àç¼³Á¤µË´Ï´Ù; ´Ù¸¥ ¸»·Î Çϸé, Àüü ±â°£ÀÌ °æ°úÇØ¾ß ¼­ºê·çƾÀÌ ´Ù½Ã ½ÇÇàµË´Ï´Ù.

+

+ŸÀ̸ÓÀÇ Á¤¹Ðµµ: OSÀÇ ½Ã°£-À¯Áö ½Ã½ºÅÛÀÇ Á¤¹Ðµµ ¶§¹®¿¡, Period´Â ÀüÇüÀûÀ¸·Î (¼³Ä¡µÈ Çϵå¿þ¾î¿Í µå¶óÀ̹öÀÇ À¯Çü¿¡ µû¶ó) °¡Àå °¡±î¿î 10 ¶Ç´Â 15.6 ¹Ð¸®ÃÊÀÇ ¹è¼ö·Î ¹Ý¿Ã¸²µË´Ï´Ù. ¿¹¸¦ µé¾î, 1ºÎÅÍ 10 (Æ÷ÇÔ) »çÀÌÀÇ Period´Â º¸Åë Windows 2000/XP¿¡¼­ 10 ¶Ç´Â 15.6°ú µ¿µîÇÕ´Ï´Ù. ´õ ªÀº Áö¿¬Àº Loop+SleepÀ» ÅëÇÏ¿© ´Þ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹Á¦´Â DllCall+timeBeginPeriod+Sleep¸¦ º¸½Ê½Ã¿À.

+

+ŸÀ̸Ӵ ´ÙÀ½ »óȲ ¾Æ·¡¿¡¼­´Â ÁöÁ¤µÈ ¸¸Å­ ÀÚÁÖ ½ÇÇàµÉ ¼ö´Â ¾ø½À´Ï´Ù:

+
    +
  1. + ´Ù¸¥ ¾îÇø®ÄÉÀ̼ǵéÀÌ CPU¿¡ ¾ÆÁÖ Å« ºÎ´ãÀ» ÁÝ´Ï´Ù.
  2. +
  3. + ŸÀÌ¸Ó ¼­ºê·çƾÀº ±× ÀÚü·Î ½ÇÇà¿¡ Àڽſ¡°Ô ÁÖ¾îÁø ±â°£º¸´Ù ´õ ¸¹ÀÌ °É¸³´Ï´Ù. ¶Ç´Â °æÀï°ü°è¿¡ Àִ ŸÀ̸Ӱ¡ ³Ê¹« ¸¹½À´Ï´Ù (SetBatchLines¸¦ º¯°æÇÏ¸é µµ¿òÀÌ µÉ °ÍÀÔ´Ï´Ù).
  4. +
  5. + ŸÀ̸Ӱ¡ ´Ù¸¥ ¾²·¹µå¿¡ ÀÇÇØ ÀÎÅÍ·´Æ® µÇ¾ú½À´Ï´Ù. Áï, ¶Ç´Ù¸¥ ÀÏÁ¤ÀÇ ¼­ºê·çƾ, ÇÖÅ° ¼­ºê·çƾ, ¶Ç´Â ¸ÂÃã ¸Þ´º Ç׸ñÀÌ Å¸À̸Ӹ¦ ÀÎÅÍ·´Æ® Çß½À´Ï´Ù (ÀÎÅÍ·´Æ®´Â CriticalÀ» ÅëÇÏ¿© ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù). ÀÌ·± ÀÏÀÌ ÀϾ¸é ±×¸®°í ÀÎÅÍ·´Æ®ÇÑ ¾²·¹µå°¡ Á¾·á¿¡ ½Ã°£ÀÌ ¿À·¡ °É¸°´Ù¸é, ÀÎÅÍ·´Æ®µÈ ŸÀ̸Ӵ ±× µ¿¾È ²¨Áö´Â È¿°ú°¡ ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ´Ù¸¥ ŸÀ̸ӵéÀº °è¼ÓÇؼ­ ½ÇÇàµË´Ï´Ù. ù ¹ø° ŸÀ̸Ӹ¦ ÀÎÅÍ·´Æ®ÇÑ ¾²·¹µå¸¦ ¶Ç ÀÎÅÍ·´Æ® ÇÕ´Ï´Ù.
  6. +
  7. CriticalÀ̳ª Thread Interrupt/PriorityÀÇ °á°ú·Î ½ºÅ©¸³Æ®¸¦ ÀÎÅÍ·´Æ® ÇÒ ¼ö ¾ø½À´Ï´Ù. ±× ½Ã°£ µ¿¾È, ŸÀ̸Ӵ ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù. ³ªÁß¿¡, ½ºÅ©¸³Æ®°¡ ´Ù½Ã ÀÎÅÍ·´Æ®°¡ °¡´ÉÇØÁö¸é, ±â°£À» ³Ñ±ä ŸÀ̸Ӵ °¡´ÉÇϸé ÇÑ ¹ø »¡¸® ½ÇÇàµÈ ´ÙÀ½, ±×ÀÇ ¿ø·¡ ÀÏÁ¤À» Àç°³ÇÕ´Ï´Ù.
  8. +
+

+ŸÀ̸Ӵ ½ºÅ©¸³Æ®°¡ º¸·ùÁß(suspended)ÀÏ ¶§¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù. ±×·¯³ª ÇöÀç ¾²·¹µå¿¡ "Thread NoTimers"°¡ ÀÛ¿ëÇÏ°í Àְųª ¾î¶² ¾²·¹µåÀÌµç ¾²·¹µå°¡ Á¤Áö(paused)µÇ¾î ÀÖÀ¸¸é ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù. °Ô´Ù°¡, »ç¿ëÀÚ°¡ (¿¹¸¦ µé¾î Æ®·¹ÀÌ ¾ÆÀÌÄÜ ¸Þ´º³ª ¸Þ´º ¹Ù¿Í °°Àº) ½ºÅ©¸³Æ® ¸Å´º¸¦ ÅëÇÏ¿© Ç×ÇØÇÏ°í ÀÖÀ» ¶§¿¡µµ ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù.

+

+ŸÀ̸Ӵ Àӽ÷Π½ºÅ©¸³Æ®ÀÇ ÇöÀç È°µ¿À» ÀÎÅÍ·´Æ®ÇØ ÀÛµ¿Çϱ⠶§¹®¿¡, ±×ÀÇ ¼­ºê·çƾÀº (»¡¸® ³¡³¾ ¼ö ÀÖµµ·Ï) ª°Ô À¯ÁöÇØ¾ß ÇÕ´Ï´Ù. ¿À·§ µ¿¾È ÀÎÅÍ·´Æ® ÇÏ´Â °ÍÀº ¹Ù¶÷Á÷ÇÏÁö ¸øÇÕ´Ï´Ù.

+

+½ºÅ©¸³Æ®°¡ ½ÇÇàµÇ´Â Áß¿¡µµ È¿°ú¸¦ À¯ÁöÇϴ ŸÀ̸Ӵ º¸Åë ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡ ¸¸µé¾î¾ß ÇÕ´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, Àӽà ŸÀ̸Ӵ Á¾Á¾ ±×ÀÇ ¼­ºê·çƾ¿¡ ÀÇÇÏ¿© ²¨Áö±âµµ ÇÕ´Ï´Ù (ÀÌ ÆäÀÌÁö ÇÏ´ÜÀÇ ¿¹Á¦¸¦ º¸½Ê½Ã¿À).

+

+½Ã°£Á¦ÇÑ ¼­ºê·çƾÀÌ ½ÇÇà ÁßÀÏ ¶§¸¶´Ù, SendMode¿Í °°Àº ¼³Á¤¿¡ ´ëÇÑ ±âº» °ªÀ¸·Î »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ·± ±âº»°ªµéÀº ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡¼­ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+

+ÇÖÅ°ÀÇ ¹ÝÀÀ ½Ã°£ÀÌ Áß¿äÇÏ´Ù¸é (°ÔÀÓ¿¡¼­¿Í °°ÀÌ) ±×¸®°í ½ºÅ©¸³Æ®°¡ º¸À¯ÇÑ Å¸À̸ÓÀÇ ¼­ºê·çƾÀÌ ½ÇÇà¿¡ ´ë·« 5 ms ÀÌ»óÀÌ °É·Á¾ß ÇÑ´Ù¸é, ´ÙÀ½ ¸í·É¾î¸¦ »ç¿ëÇØ 15 ms Áö¿¬ ½Ã°£À¸·Î ¹Ù²ÙÁö ¾Êµµ·Ï ¸·½À´Ï´Ù. ±×·¸°Ô ÇÏÁö ¾ÊÀ¸¸é ŸÀÌ¸Ó ¾²·¹µå¸¦ ÀÎÅÍ·´Æ®ÇÒ ¼ö ¾ø´Â ¼ø°£¿¡ ÇÖÅ°°¡ ´­¸®¸é ±×·± Áö¿¬ÀÌ ÀϾ´Ï´Ù:

+ +
Thread, interrupt, 0  ; ¸ðµç ¾²·¹µå¸¦ ¾ðÁ¦³ª ÀÎÅÍ·´Æ®°¡ °¡´ÉÇϵµ·Ï ¸¸µì´Ï´Ù.
+ +

±×ÀÇ ¼­ºê·çƾÀÌ ÇöÀç ½ÇÇà ÁßÀε¥ ŸÀ̸Ӱ¡ ²¨Áö´õ¶óµµ, ±× ¼­ºê·çƾÀº ¿Ï·áÇÒ ¶§±îÁö °è¼Ó ÁøÇàµË´Ï´Ù.

+

+KeyHistory Ư¡Àº ¾ó¸¶³ª ¸¹Àº ŸÀ̸Ӱ¡ Á¸ÀçÇÏ´ÂÁö ±×¸®°í ¾ó¸¶³ª ¸¹ÀÌ ÇöÀç ÄÑÁ® ÀÖ´ÂÁö º¸¿©ÁÝ´Ï´Ù.

+

+ŸÀ̸ÓÀÇ ±â°£Àº 4294967295 ¹Ð¸®Ãʺ¸´Ù Ŭ ¼ö ¾ø½À´Ï´Ù (49.7 ÀÏ).

+

½ºÅ©¸³Æ®¸¦ °è¼Ó ½ÇÇàÇÏ·Á¸é -- ¿ÀÁ÷ ŸÀ̸Ӹ¸ ´ã°í ÀÖ´Â ½ºÅ©¸³Æ® -- #Persistent¸¦ »ç¿ëÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

Gosub, Return, Threads, Thread (command), Critical, IsLabel(), Menu, #Persistent

+ +

¿¹Á¦

+
; ¿¹Á¦ #1: ¿øÇÏÁö ¾Ê´Â âÀÌ ³ªÅ¸³¯ ¶§¸¶´Ù ´Ý½À´Ï´Ù:
+#Persistent
+SetTimer, CloseMailWarnings, 250
+return
+
+CloseMailWarnings:
+WinClose, Microsoft Outlook, Åë½ÅÇÏ´Â µ¿¾È ½Ã°£Á¦ÇÑÀÌ ÀϾ
+WinClose, Microsoft Outlook, ¼­¹ö¿¡ Á¢¼ÓÀ» È®¸³ÇÒ ¼ö ¾ø¾úÀ½
+return
+

 

+
; ¿¹Á¦ #2: ¾î¶² âÀÌ ³ªÅ¸³ª±â¸¦ ±â´Ù·È´Ù°¡ »ç¿ëÀÚ¿¡°Ô ¾Ë·ÁÁÝ´Ï´Ù:
+#Persistent
+SetTimer, Alert1, 500
+return
+
+Alert1:
+IfWinNotExist, Video Conversion, ÇÁ·Î¼¼½º ¿Ï·á
+    return
+; ±×·¸Áö ¾ÊÀ¸¸é:
+SetTimer, Alert1, Off  ; Áï, ŸÀ̸Ӵ ¿©±â¿¡¼­ ÀÚ½ÅÀ» ²ü´Ï´Ù.
+SplashTextOn, , , ºñµð¿À º¯È¯ÀÌ ³¡³µ½À´Ï´Ù.
+Sleep, 3000
+SplashTextOff
+return
+

 

+
; ¿¹Á¦ #3: ÇÖÅ°°¡ ÇÑ ¹ø, µÎ ¹ø, ±×¸®°í ¼¼ ¹ø ´­·È´ÂÁö ŽÁöÇÕ´Ï´Ù.
+; ¾ó¸¶³ª ¸¹ÀÌ ´­·¶´Â°¡¿¡ µû¶ó
+; ÇÖÅ°°¡ ´Ù¸¥ Á¶Ä¡¸¦ ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù:
+#c::
+if winc_presses > 0 ; SetTimer°¡ ÀÌ¹Ì ½ÃÀ۵Ǿú½À´Ï´Ù. ±×·¡¼­ ´ë½Å¿¡ Å°´­¸²À» ±â·ÏÇÕ´Ï´Ù.
+{
+    winc_presses += 1
+    return
+}
+; ±×·¸Áö ¾ÊÀ¸¸é, ÀÌ ¹ø¿¡ óÀ½À¸·Î Å°¸¦ ´­·¶½À´Ï´Ù.
+;  Ä«¿îÆ®¸¦ 1·Î ¼³Á¤ÇÏ°í ŸÀ̸Ӹ¦ ½ÃÀÛÇÕ´Ï´Ù:
+winc_presses = 1
+SetTimer, KeyWinC, 400 ; 400 ¹Ð¸®ÃÊ Ã¢ ¾È¿¡¼­ Å°´­¸²À» ±â´Ù¸³´Ï´Ù.
+return
+
+KeyWinC:
+SetTimer, KeyWinC, off
+if winc_presses = 1 ; Å°°¡ ÇÑ ¹ø ´­·È½À´Ï´Ù.
+{
+    Run, m:\  ; Æú´õ¸¦ ¿±´Ï´Ù.
+}
+else if winc_presses = 2 ; Å°°¡ µÎ ¹ø ´­·È½À´Ï´Ù.
+{
+    Run, m:\multimedia  ; ´Ù¸¥ Æú´õ¸¦ ¿±´Ï´Ù.
+}
+else if winc_presses > 2
+{
+    MsgBox, ¼¼ ¹ø ÀÌ»ó Ŭ¸¯ÀÌ Å½ÁöµÇ¾ú½À´Ï´Ù.
+}
+; À§¿¡¼­ ¾î´À Á¶Ä¡°¡ ÃË¹ßµÇµç »ó°ü¾øÀÌ, Ä«¿îÆ®¸¦ ¸®¼ÂÇØ
+; ´ÙÀ½ Å°´­¸²À» ÁغñÇÕ´Ï´Ù:
+winc_presses = 0
+return
+ + + diff --git a/src/docs/commands/SetTitleMatchMode.htm b/src/docs/commands/SetTitleMatchMode.htm new file mode 100644 index 0000000..7296f8f --- /dev/null +++ b/src/docs/commands/SetTitleMatchMode.htm @@ -0,0 +1,78 @@ + + + + +SetTitleMatchMode + + + + + + + +

SetTitleMatchMode

+ +

WinWait °°Àº ¸í·É¾î¿¡¼­ WinTitle ¸Å°³º¯¼öÀÇ ºÎÇÕ ÇàÀ§¸¦ ¼³Á¤ÇÕ´Ï´Ù.

+ +
SetTitleMatchMode, MatchMode
+SetTitleMatchMode, Fast|Slow
+ +

¸Å°³º¯¼ö

+
+ +
MatchMode
+

´Ù¸¥ ¼ýÀÚ³ª ´Ü¾î RegEx Áß Çϳª:

+

1: â Á¦¸ñÀº ¹Ýµå½Ã ÁöÁ¤µÈ WinTitle·Î ½ÃÀÛÇØ¾ß ºÎÇÕÇÒ ¼ö ÀÖ½À´Ï´Ù.
+ 2: â Á¦¸ñ¿¡ ¾îµðµç WinTitleÀÌ Æ÷ÇԵǾî ÀÖÀ¸¸é ºÎÇÕÇÕ´Ï´Ù.
+ 3: â Á¦¸ñÀÌ ¹Ýµå½Ã Á¤È®ÇÏ°Ô WinTitle¿¡ ÀÏÄ¡ÇØ¾ß ºÎÇÕÇÕ´Ï´Ù.

+

+ RegEx (v1.0.45+): WinTitle, WinText, ExcludeTitle, ±×¸®°í ExcludeText¸¦ Á¤±Ô Ç¥Çö½ÄÀ¸·Î º¯°æÇÕ´Ï´Ù. + + Ç¥Çö½ÄÀ» ¸í·É¾î¿Í ÇÔ²² »ç¿ëÇÒ ¶§ µû¿ÈÇ¥ ¾È¿¡ µÑ·¯ ½ÎÁö ¸¶½Ê½Ã¿À. ¿¹¸¦ µé¾î: WinActivate Untitled.*Notepad. RegEx´Â ¶ÇÇÑ ahk_class¿¡ Àû¿ëµË´Ï´Ù; ¿¹¸¦ µé¾î, ahk_class IEFrame´Â Ŭ·¡½º À̸§ ¾îµðµç IEFrameÀÌ µé¾î Àִ âÀ» °Ë»öÇÕ´Ï´Ù (±âº»ÀûÀ¸·Î Á¤±Ô Ç¥Çö½ÄÀº ¸ñÇ¥ ¹®ÀÚ¿­ ¾îµðµç »ó°ü ¾øÀÌ ºÎÇÕÇϱ⠶§¹®ÀÔ´Ï´Ù). + + ÁÖÀÇ: WinText¿¡ ´ëÇÏ¿©, °¢ ÅؽºÆ® ¿ä¼Ò´Â (Áï, °¢ ÄÜÆ®·ÑÀÇ ÅؽºÆ®) RegEx¿¡ µû·Îµû·Î ºÎÇÕÇÕ´Ï´Ù. ±×·¯¹Ç·Î, ¿©·¯ ÅؽºÆ® ¿ä¼Ò¿¡ °ÉÃÄ Çϳª°¡ ºÎÇÕÇÏ´Â °ÍÀº ºÒ°¡´É ÇÕ´Ï´Ù.

+

+ À§ÀÇ ¸ðµå´Â ¶Ç WinTitle°ú ¶È°°Àº ¹æ½ÄÀ¸·Î ExcludeTitle¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù. + ¿¹¸¦ µé¾î, ¸ðµå 3Àº ±× âÀ» ¹èÁ¦ÇÏ·Á¸é â Á¦¸ñÀÌ Á¤È®ÇÏ°Ô ExcludeTitle¿¡ ºÎÇÕÇϱ⸦ ¿ä±¸ÇÕ´Ï´Ù.

+
+ +
Fast|Slow
+

Fast: ÀÌ°ÍÀÌ ±âº» ÇàÀ§ÀÔ´Ï´Ù. ¼öÇ༺´ÉÀº Slow º¸´Ù Çö°ÝÇÏ°Ô ÁÁ½À´Ï´Ù. ±×·¯³ª ÀϺΠÀ¯ÇüÀÇ Ã¢¿¡ ´ëÇÏ¿© ¾î¶² WinText ¿ä¼ÒµéÀº ´Ù¾çÇÑ Ã¢ ¸í·É¾î¿¡ "º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù".

+

Slow: ÈξÀ ´õ ´À¸± ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª â ¸í·É¾î°¡ âµéÀ» Äf¾î °¡¸é¼­ ºÎÇÕÀ» ã¾Æ ¸ðµç âÀ¸·ÎºÎÅÍ ¸ðµç °¡´ÉÇÑ WinText¸¦ ¿­¶÷ÇÕ´Ï´Ù. Window Spy´Â (ÀÖ´Ù¸é) â ÅؽºÆ®ÀÇ ¾î´À ºÎºÐÀÌ ´À¸° ¸ðµå¸¦ ¿ä±¸ÇÏ´ÂÁö º¸¿©ÁÝ´Ï´Ù.

+ +
+ +

³íÆò

+

+ÀÌ ¸í·É¾î´Â ¸ðµç â ¸í·É¾îÀÇ ÇàÀ§¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù. ¿¹, IfWinExist ±×¸®°í WinActivate.

+

+ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, TitleMatchMode´Â ±âº»°ªÀÌ 1ÀÌ°í fastÀÔ´Ï´Ù.

+

+â ±×·ìÀÌ »ç¿ëµÇ¸é, ÇöÀç Á¦¸ñ ºÎÇÕ ¸ðµå´Â ±×·ì¿¡ ÀÖ´Â °¢ ±ÔÄ¢¿¡ Àû¿ëµË´Ï´Ù.

+

+ÀϹÝÀûÀ¸·Î, slow ¸ðµå´Â ±×ÀÇ Á¦¸ñ°ú fast-¸ðµå ÅؽºÆ® ¸¸À¸·Î´Â ¸ñÇ¥ âÀ» À¯ÀÏÇÏ°Ô ½Äº°ÇÒ ¼ö ¾øÀ» °æ¿ì¿¡¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ´À¸° ¸ðµå´Â ¹Ù»Ú°Å³ª "ÀÀ´äÇÏÁö ¾Ê´Â" ¾îÇø®ÄÉÀÌ¼Ç Ã¢ÀÌ ÀÖ´Ù¸é ±Ø½ÉÇÏ°Ô ´À¸± ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.

+

+¿ÀÅäÇÖÅ°¿¡ µû¶ó¿À´Â Window Spy´Â slow ÅؽºÆ®¸¦ º°µµÀÇ ¼½¼Ç¿¡ º¸°íÇÕ´Ï´Ù. ±×·¡¼­ slow ¸ðµå°¡ ÇÊ¿äÇÑÁö ½±°Ô ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù.

+

+µÎ ¼Ó¼ºÀ» ¸ðµÎ ¹Ù²Ù°í ½Í´Ù¸é, ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¸í·É¾î¸¦ µÎ ¹ø ½ÇÇàÇϽʽÿÀ:

+
SetTitleMatchMode, 2
+SetTitleMatchMode, slow
+

+³»Àå º¯¼ö A_TitleMatchMode ±×¸®°í A_TitleMatchModeSpeed¿¡´Â ÇöÀç ¼³Á¤ÀÌ ´ã°Ü ÀÖ½À´Ï´Ù.

+

+ÇöÀç TitleMatchMode¿Í »ó°ü ¾øÀÌ, WinTitle, WinText, ExcludeTitle ±×¸®°í ExcludeText´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. À¯ÀÏÇÑ ¿¹¿Ü´Â RegEx ¸ðµåÀÇ ´ë¼Ò¹®ÀÚ ºñ±¸ºÐ ¿É¼ÇÀÔ´Ï´Ù; ¿¹¸¦ µé¾î: i)untitled - notepad.

+

+»õ·Î ±âµ¿µÈ ¾²·¹µå´Â ¸ðµÎ (¿¹¸¦ µé¾î ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾ) ÀÌ ¸í·É¾î¿¡ ´ëÇÑ ±âº» ¼³Á¤À» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ±âº»°ªÀº ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡¼­ (½ºÅ©¸³Æ®ÀÇ »ó´Ü) ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ¿© ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

SetWinDelay, IfWinExist, WinActivate, RegExMatch()

+ +

¿¹Á¦

+
SetTitleMatchMode 2
+; OR:
+SetTitleMatchMode RegEx
+
+SetTitleMatchMode Slow  ; Slow/Fast´Â ´Ù¸¥ ¸ðµç ¸ðµå¿Í µ¶¸³ÀûÀ¸·Î ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+ + + diff --git a/src/docs/commands/SetWinDelay.htm b/src/docs/commands/SetWinDelay.htm new file mode 100644 index 0000000..c0720e1 --- /dev/null +++ b/src/docs/commands/SetWinDelay.htm @@ -0,0 +1,49 @@ + + + + +SetWinDelay + + + + + + + +

SetWinDelay

+ +

WinActivate¿Í °°Àº °¢ â ¸í·É¾î¸¦ ½ÇÇàÇÑ ÈÄ¿¡ ÀϾ Áö¿¬½Ã°£À» ¼³Á¤ÇÕ´Ï´Ù.

+ +
SetWinDelay, Delay
+

¸Å°³º¯¼ö

+
+ +
Delay
+

¹Ð¸®ÃÊ ½Ã°£, Ç¥Çö½Ä °¡´É. -1Àº Áö¿¬½Ã°£ÀÌ ¾øÀ¸¸ç 0ÀÌ¸é °¡´ÉÇϸé ÃÖ¼Ò·Î Áö¿¬ÇÕ´Ï´Ù. ¼³Á¤ÇÏÁö ¾ÊÀ¸¸é, ±âº» °ªÀº 100ÀÔ´Ï´Ù.

+ +
+ +

³íÆò

+

+°¢ â ¸í·É¾î°¡ ½ÇÇàµÈ ÈÄ ÂªÀº Áö¿¬½Ã°£ (ÀáÀÚ±â)°¡ ÀÚµ¿À¸·Î ½ÇÇàµË´Ï´Ù. ´Ü, IfWinActive¿Í IfWinExist´Â Á¦¿ÜÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ´Â ÀÌÀ¯´Â ½ºÅ©¸³Æ®ÀÇ ½Å·Ú¼ºÀ» °³¼±Çϱâ À§Çؼ­ÀÔ´Ï´Ù. âÀº Á¾Á¾ »ý¼ºµÇ°Å³ª, È°¼ºÈ­µÇ°Å³ª ¶Ç´Â ÃÖ¼ÒÈ­ µÇ°Å³ª µîµî º¯°æÀÌ ÀÖ°í ³­ ÈÄ¿¡ ÀÏÁ¤ÇÑ "ÈÞ½Ä"½Ã°£ÀÌ ÇÊ¿äÇÕ´Ï´Ù. ±×·¡¾ß âÀº ÀÚ½ÅÀ» °»½ÅÇÒ ±âȸ¸¦ °¡Áú ¼ö ÀÖ°í ½ºÅ©¸³Æ®°¡ ±× â¿¡ º¸³»·Á°í ½ÃµµÇÏ´Â ´ÙÀ½ ¸í·É¾î¿¡ ÀÀ´äÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.

+

+Áö¿¬ ½Ã°£ÀÌ -1ÀÌ¶óµµ (Áö¿¬ ½Ã°£ ÀüÇô ¾øÀ½) Çã¿ëÇÏÁö¸¸, Àû¾îµµ 0Àº »ç¿ëÇϱ⸦ ±ÇÀåÇÕ´Ï´Ù. ±×·¡¾ß CPU°¡ ºÎÇÏ°¡ ¸¹´õ¶óµµ ½ºÅ©¸³Æ®°¡ Á¦´ë·Î ½ÇÇàµÈ´Ù´Â º¸ÀåÀÌ ³ô¾ÆÁý´Ï´Ù.

+

+Áö¿¬ ½Ã°£ÀÌ 0ÀÌ¸é ³»ºÎÀûÀ¸·Î Sleep(0)À» ½ÇÇàÇϴµ¥, ÀÌ ÇÔ¼ö´Â ±×¸¦ ÇÊ¿ä·Î ÇÏ´Â ÇÁ·Î¼¼½º¿¡ ½ºÅ©¸³Æ®ÀÇ ½Ã°£Á¶°¢(timeslice)ÀÇ ³ª¸ÓÁö¸¦ °Ç³Ü´Ï´Ù. ¾Æ¹«°Íµµ ¾øÀ¸¸é, Sleep(0)Àº ÀüÇô ÀáÀÚÁö ¾Ê½À´Ï´Ù.

+

+CPU°¡ ´À¸®°Å³ª ºÎÇÏ°¡ ¸¹´Ù¸é, ¶Ç´Â ⠾ִϸÞÀ̼ÇÀÌ ÄÑÁ® ÀÖ´Ù¸é, ´õ ³ôÀº Áö¿¬ ½Ã°£ÀÌ ÇÊ¿äÇÕ´Ï´Ù.

+ +

+³»Àå º¯¼ö A_WinDelay¿¡ ÇöÀç ¼³Á¤ÀÌ ´ã°Ü ÀÖ½À´Ï´Ù.

+

+»õ·Î ±âµ¿µÈ ¾²·¹µå´Â (¿¹¸¦ µé¾î ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾ) ÀÌ ¸í·É¾î¿¡ ´ëÇÑ ±âº» ¼³Á¤À» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ±âº» °ªÀº ÀÚµ¿ ½ÇÇà ¼½¼Ç (½ºÅ©¸³Æ®ÀÇ »ó´Ü)¿¡¼­ ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ¿© º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+SetControlDelay, SetKeyDelay, SetMouseDelay, SetBatchLines, SendMode

+ +

¿¹Á¦

+
SetWinDelay, 10
+ + + diff --git a/src/docs/commands/SetWorkingDir.htm b/src/docs/commands/SetWorkingDir.htm new file mode 100644 index 0000000..89a4dd0 --- /dev/null +++ b/src/docs/commands/SetWorkingDir.htm @@ -0,0 +1,52 @@ + + + + +SetWorkingDir + + + + + + + +

SetWorkingDir

+ +

½ºÅ©¸³Æ®ÀÇ ÇöÀç ÀÛ¾÷ µð·ºÅ丮¸¦ º¯°æÇÕ´Ï´Ù.

+ +
SetWorkingDir, DirName
+

¸Å°³º¯¼ö

+
+ +
DirName
+

»õ·Î¿î ÀÛ¾÷ µð·ºÅ丮ÀÇ À̸§. Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ÇöÀç %A_WorkingDir%ÀÌ ÇÏÀ§ µð·ºÅ丮¶ó°í °£Áֵ˴ϴÙ.

+ +
+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î¸¦ ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ErrorLevel´Â ¹®Á¦°¡ ÀÖÀ¸¸ç 1ÀÌ ¼³Á¤µÇ°í ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+½ºÅ©¸³Æ®ÀÇ ÀÛ¾÷ µð·ºÅ丮´Â Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾ÒÀ» ¶§ ÆÄÀÏ°ú Æú´õ¿¡ Á¢±ÙÇÏ´Â µ¥ »ç¿ëµÇ´Â ±âº» µð·ºÅ丮ÀÔ´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­ ÆÄÀÏ My Filename.txtÀº %A_WorkingDir% ¾È¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ: FileAppend, A Line of Text, My Filename.txt.

+

+½ºÅ©¸³Æ®ÀÇ ÃÖÃÊ ÀÛ¾÷ µð·ºÅ丮´Â ¾î¶»°Ô ±âµ¿µÇ¾ú´Â°¡¿¡ µû¶ó °áÁ¤µË´Ï´Ù. ¿¹¸¦ µé¾î, ´ÜÃàÅ°¸¦ ÅëÇÏ¿© ½ÇÇàµÇ¾ú´Ù¸é -- ¿¹¸¦ µé¾î ½ÃÀÛ ¸Þ´º·Î -- ±×ÀÇ ÀÛ¾÷ µð·ºÅ丮´Â ´ÜÃà ÆÄÀÏÀÇ Æ¯¼º ¾È¿¡ ÀÖ´Â "½ÃÀÛÇϱâ" ¼Ó¼º¿¡ µû¶ó °áÁ¤µË´Ï´Ù.

+

+½ºÅ©¸³Æ®°¡ ¹«Á¶°Ç ÀÚ½ÅÀÇ Æú´õ¸¦ ÀÛ¾÷ µð·ºÅ丮·Î »ç¿ëÇϵµ·Ï °­Á¦ÇÏ·Á¸é, ù ÁÙÀ» ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇϽʽÿÀ:

+ +
SetWorkingDir %A_ScriptDir%
+

+ÀÏ´Ü º¯°æµÇ¸é, »õ ÀÛ¾÷ µð·ºÅ丮´Â ½ºÅ©¸³Æ® Àüü¸¦ ÅëÇÏ¿© Àü¿ªÀûÀ¸·Î ±×¸®°í Áï½Ã È¿°ú¸¦ ¹ßÈÖÇÕ´Ï´Ù. ŸÀ̸Ӹ¦ ºñ·ÔÇÏ¿© ÀÎÅÍ·´Æ®µÈ, ¸ØÃá, ±×¸®°í »õ·Î ±âµ¿µÈ ¸ðµç ¾²·¹µå°¡ ¿µÇâÀ» ¹Þ½À´Ï´Ù..

+ +

°ü·Ã Ç׸ñ

+

%A_WorkingDir%, %A_ScriptDir%, FileSelectFolder

+ +

¿¹Á¦

+
SetWorkingDir %A_ScriptDir%
+SetWorkingDir, D:\My Folder\Temp
+ + + diff --git a/src/docs/commands/Shutdown.htm b/src/docs/commands/Shutdown.htm new file mode 100644 index 0000000..9744a04 --- /dev/null +++ b/src/docs/commands/Shutdown.htm @@ -0,0 +1,81 @@ + + + + +Shutdown + + + + + + + +

Shutdown

+ +

½Ã½ºÅÛÀ» ²ô°í, Àç½ÃÀÛÇϸç, ·Î±×¿ÀÇÁ ÇÕ´Ï´Ù.

+ +
Shutdown, Code
+

¸Å°³º¯¼ö

+
+ +
Code
+

¾Æ·¡¿¡ ³ª¿­µÈ ¼Ë´Ù¿î ÄÚµåÀÇ Á¶ÇÕ.

+ +
+ +

³íÆò

+

¼Ë´Ù¿î ÄÚµå´Â ´ÙÀ½ °ªÀ¸·Î Á¶Çյ˴ϴÙ:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
·Î±×¿ÀÇÁ0
¼Ë´Ù¿î1
¸®ºÎÆ®2
°­Á¦ ⠴ݱâ4
Àü¿ø ³»¸®±â8
º¸·ù/ÀáÀç¿ì±âÀÌ ÆäÀÌÁö ÇÏ´Ü DllCall ¿¹Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ.
¸ð´ÏÅÍ ²ô±âPostMessage ¿¹Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ.
+

+ÇÊ¿äÇÑ °ªÀ» ÇÔ²² ´õÇϽʽÿÀ. ¿¹¸¦ µé¾î, ¼Ë´Ù¿î°ú Àü¿ø ³»¸®±â´Â Äڵ尡 9ÀÔ´Ï´Ù (¼Ë´Ù¿î + Àü¿ø ³»¸®±â = 1 + 8 = 9). ´Ù¸¥ ¹æ¹ýÀ¸·Î, 1+8°ú °°ÀÌ Ç¥Çö½ÄÀ» ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

+

+°­Á¦ Á¾·á("Force") °ª (4)´Â ¸ðµç ¿­¸° ¾îÇø®ÄÉÀ̼ÇÀ» °­Á¦·Î ´Ý½À´Ï´Ù. ºñ»ó½Ã¿¡¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ¿­¸° ¾îÇø®ÄÉÀ̼ÇÀÌ µ¥ÀÌÅ͸¦ ÀÒ¾î ¹ö¸± ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.

+

+Àü¿ø ³»¸®±â("Power down") °ªÀº ½Ã½ºÅÛÀ» ¼Ë´Ù¿î ÇÏ°í Àü¿øÀ» ²ü´Ï´Ù.

+

+°ü·ÃÇÏ¿© ¸»¾¸ µå¸®ÀÚ¸é, ½ºÅ©¸³Æ®´Â ½Ã½ºÅÛÀÌ ¼Ë´Ù¿î ÁßÀÎÁö ¾Æ´Ï¸é »ç¿ëÀÛ ·Î±× ¿ÀÇÁ ÁßÀÎÁö OnExit¸¦ ÅëÇÏ¿© ¾Ë ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

Run, ExitApp, OnExit

+ +

¿¹Á¦

+
; °­Á¦·Î ¸ðµç âÀ» ´Ý°í ¸®ºÎÆ® ÇÕ´Ï´Ù (reboot + force = 2 + 4 = 6):
+Shutdown, 6
+
+; ½Ã½ºÅÛÀ» º¸·ùÇϰųª Àç¿ì±â À§ÇØ Windows API ÇÔ¼ö "SetSuspendState"¸¦ È£ÃâÇÕ´Ï´Ù.
+; ¸Å°³º¯¼ö #1: 0 ´ë½Å 1À» °Ç³×¸é º¸·ù°¡ ¾Æ´Ï¶ó Àç¿ó´Ï´Ù.
+; ¸Å°³º¯¼ö #2: 0 ´ë½Å 1À» °Ç³×¸é °¢ ¾îÇø®ÄÉÀ̼ǿ¡ Çã°¡¸¦ ±¸ÇÏÁö ¾Ê°í Áï½Ã º¸·ùÇÕ´Ï´Ù.
+; ¸Å°³º¯¼ö #3: 0 ´ë½Å 1À» °Ç³×¸é ±ú¾î ÀÖ´Â ¸ðµç À̺¥Æ®¸¦ ºñÈ°¼ºÈ­ ÇÕ´Ï´Ù.
+DllCall("PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0)
+ + + diff --git a/src/docs/commands/Sleep.htm b/src/docs/commands/Sleep.htm new file mode 100644 index 0000000..6fb69df --- /dev/null +++ b/src/docs/commands/Sleep.htm @@ -0,0 +1,70 @@ + + + + +Sleep + + + + + + + +

Sleep

+ +

°è¼ÓÇϱâ Àü¿¡ ÁöÁ¤µÈ ½Ã°£ µ¿¾È ±â´Ù¸³´Ï´Ù.

+ +
Sleep, DelayInMilliseconds
+

¸Å°³º¯¼ö

+
+ +
Delay
+

¸ØÃ⠽ð£ (¹Ð¸®ÃÊ ´ÜÀ§), 0ºÎÅÍ 2147483647±îÁö (24 ÀÏ), Ç¥Çö½Ä °¡´É.

+ +
+ +

³íÆò

+

+OSÀÇ ½Ã°£-À¯Áö ½Ã½ºÅÛÀÇ Á¤¹Ðµµ ¶§¹®¿¡, Áö¿¬ ½Ã°£Àº º¸Åë (Çϵå¿þ¾î¿Í ¼³Ä¡µÈ µå¶óÀ̹öÀÇ Á¾·ù¿¡ µû¶ó) °¡Àå °¡±î¿î 10 ¶Ç´Â 15.6 ¹Ð¸®ÃÊÀÇ ¹è¼ö·Î ¿Ã¸²µË´Ï´Ù. ¿¹¸¦ µé¾î, Áö¿¬½Ã°£ÀÌ 1ºÎÅÍ 10(Æ÷ÇÔ) »çÀÌÀÌ¸é ´ëºÎºÐÀÇ Windows 2000/XP ½Ã½ºÅÛ¿¡¼­ 10 ¶Ç´Â 15.6°ú µ¿µîÇÕ´Ï´Ù. ´õ ªÀº Áö¿¬ ½Ã°£ÀÌ ÇÊ¿äÇϸé, ´ÙÀ½ ¿¹Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+½ÇÁ¦ Áö¿¬ ½Ã°£Àº CPU¿¡ ºÎÇÏ°¡ ¸¹À» °æ¿ì ¿ä±¸ÇÑ °Íº¸´Ù ´õ ±æ¾îÁú °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº OS°¡ ½ºÅ©¸³Æ®¿¡ ¶Ç´Ù¸¥ ½Ã°£Á¶°¢(timeslice)À» ÁÖ±â Àü¿¡ °¢°¢ÀÇ ÇÊ¿äÇÑ ÇÁ·Î¼¼½º¿¡ CPU ½Ã°£À» ³ª´©¾î Áֱ⠶§¹®ÀÔ´Ï´Ù (º¸Åë 20 ¹Ð¸®ÃÊ).

+

+Áö¿¬ ½Ã°£ÀÌ 0ÀÏ °æ¿ì (´Ù¸¥ ½ºÅ©¸³Æ®º¸´Ù ¿ì¼± ¼øÀ§°¡ ¾öû³ª°Ô ³·Áö¸¸ ¾Ê´Ù¸é) ±×¸¦ ÇÊ¿ä·Î ÇÏ´Â ´Ù¸¥ ÇÁ·Î¼¼½º¿¡ ½ºÅ©¸³Æ®ÀÇ ÇöÀç ½Ã°£Á¶°¢(timeslice)ÀÇ ³ª¸ÓÁö¸¦ ³ª´©¾î ÁÝ´Ï´Ù. +±×·¡¼­, Áö¿¬ ½Ã°£ÀÌ 0ÀÌ¸é ½ÇÁ¦ Áö¿¬ ½Ã°£Àº ÇÊ¿ä·Î ÇÏ´Â ÇÁ·Î¼¼½ºÀÇ °³¼ö¿¡ µû¶ó 0ºÎÅÍ 20ms (ÀÌ»ó)ÀÌ »ý»êµË´Ï´Ù (ÇÊ¿ä·Î ÇÏ´Â ÇÁ·Î¼¼½º°¡ ¾ø´Ù¸é, ÀüÇô Áö¿¬ ½Ã°£ÀÌ ¾ø½À´Ï´Ù). ±×·¸Áö¸¸, Delay°¡ 0ÀÌ¸é ´õ ±ä Delay°¡ °É·ÈÀ» Áö¿¬ ½Ã°£º¸´Ù ¾ðÁ¦³ª ¶° ª°Ô ³¡³³´Ï´Ù.

+

+ÀáÀÚ´Â µ¿¾È, ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀ̸Ӹ¦ ÅëÇÏ¿© »õ ¾²·¹µå¸¦ ±âµ¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Sleep -1: Áö¿¬ ½Ã°£ÀÌ -1À̸é ÀáÀÚÁö ¾ÊÁö¸¸ ´ë½Å¿¡ ½ºÅ©¸³Æ®°¡ Áï½Ã ±×ÀÇ ¸Þ½ÃÁö Å¥¸¦ Á¡°ËÇϵµ·Ï ¸¸µì´Ï´Ù. ÀÌ°ÍÀ» »ç¿ëÇÏ¸é º¸·ùµÈ ÀÎÅÍ·´Æ®µéÀ» ¹«ÀÛÀ§·Î ¾Æ¹«µ¥¼­³ª ÀϾµµ·Ï µÎÁö ¾Ê°í °­Á¦·Î ƯÁ¤ÇÑ À§Ä¡¿¡¼­ ÀϾ°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº CriticalÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

+SetKeyDelay, SetMouseDelay, SetControlDelay, SetWinDelay, SetBatchLines

+ +

¿¹Á¦

+
Sleep, 1000  ; 1 ÃÊ
+

 

+ +
; ´ÙÀ½Àº Á¤»óÀÎ 10 ¶Ç´Â 15.6 ¹Ð¸®Ãʺ¸´Ù
+; ´õ ª°Ô Àç¿ì´Â ¹ýÀ» º¸¿©ÁÖ´Â ¿¹Á¦ÀÔ´Ï´Ù.
+; ÁÖÀÇ: ½ºÅ©¸³Æ®°¡ ÀÌ·± ½ÄÀ¸·Î ½ÇÇà ÁßÀÎ µ¿¾È,
+; Àüü ¿î¿µÃ¼Á¦¿Í ¾îÇÃÀÌ ¸ðµÎ ¾Æ·¡ÀÇ timeBeginPeriod¿¡ ¿µÇâÀ» ¹Þ½À´Ï´Ù.
+
+SetBatchLines -1  ; ÀÌ ¹æ¹ýÀÌ ÃÖ´ë·Î È¿°ú°¡ ÀÖµµ·Ï È®ÀÎÇÕ´Ï´Ù.
+
+SleepDuration = 1  ; ÀÌ°ÍÀº Á¾Á¾ ¾Æ·¡ÀÇ °ª¿¡ µû¶ó ¹Ì¼¼ÇÏ°Ô Á¶ÀýÇÒ ¼ö ÀÖ½À´Ï´Ù (¿¹,  2´Â 3°ú ´Ù¸¨´Ï´Ù).
+TimePeriod = 3 ; 7 ¶Ç´Â 3À» ½ÃµµÇÕ´Ï´Ù. ¾Æ·¡ ÁÖ¼®À» ÂüÁ¶ÇϽʽÿÀ.
+; ÀáÀڱ⠽ð£ÀÌ º¸Åë 15.6 ¹Ð¸®ÃÊ·Î ¿Ã¸²µÇ´Â PC¶ó¸é, TimePeriod=7À» ½ÃµµÇϸé
+; ¾à°£ ´õ ªÀº ¼ö¸é ½Ã°£À» Çã¿ëÇÏ°í, TimePeriod=3 ÀÌÇϸ¦ ½ÃµµÇÏ¸é °¡´ÉÇÑ ÂªÀº ¼ö¸é ½Ã°£À» Çã¿ëÇÕ´Ï´Ù.
+
+DllCall("Winmm\timeBeginPeriod", uint, TimePeriod)  ; ÀÌ ½ºÅ©¸³Æ®ÀÇ DllCall("Sleep"...)Àº ¹°·ÐÀÌ°í ¸ðµç ¾îÇø®ÄÉÀ̼ǿ¡ ¿µÇâÀ» ÁÝ´Ï´Ù. ±×·¯³ª SetTimer¿¡´Â ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù..
+Iterations = 50
+StartTime := A_TickCount
+
+Loop %Iterations%
+    DllCall("Sleep", UInt, SleepDuration)  ; Sleep ¸í·É¾î ´ë½Å¿¡ DllCallÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
+
+DllCall("Winmm\timeEndPeriod", UInt, TimePeriod)  ; ½Ã½ºÅÛÀ» Á¤»óÀ¸·Î º¹±¸ÇÏ·Á¸é È£ÃâÇØ¾ß ÇÕ´Ï´Ù.
+MsgBox % "Sleep duration = " . (A_TickCount - StartTime) / Iterations
+ + + diff --git a/src/docs/commands/Sort.htm b/src/docs/commands/Sort.htm new file mode 100644 index 0000000..d7e8437 --- /dev/null +++ b/src/docs/commands/Sort.htm @@ -0,0 +1,137 @@ + + + + +Sort + + + + + + + +

Sort

+ +

º¯¼öÀÇ ³»¿ëÀ» ¾ËÆĺª, ¼ýÀÚ, ¶Ç´Â ¹«ÀÛÀ§ ¼ø¼­·Î Á¤·ÄÇÕ´Ï´Ù (¼±ÅÃÀûÀ¸·Î Áߺ¹À» Á¦°ÅÇÕ´Ï´Ù).

+ +
Sort, VarName [, Options]
+

¸Å°³º¯¼ö

+
+ +
VarName
+

±×ÀÇ ³»¿ëÀÌ Á¤·ÄµÉ º¯¼öÀÇ À̸§. ÀÌ º¯¼ö´Â Ç¥Çö½ÄÀÌ ºÒ°¡´ÉÇÕ´Ï´Ù.

+ +
Options
+

¾Æ·¡ ¸®½ºÆ® ÂüÁ¶.

+ +
+ +

Options

+

+´ÙÀ½ ±âÈ£·Î ±¸¼ºµÇ´Â ¹®ÀÚ¿­ (¼ø¼­¿¡ »ó°ü¾øÀÌ, ¼±ÅÃÀûÀ¸·Î »çÀÌ¿¡ ½ºÆäÀ̽º):

+

+C: ´ë¼Ò¹®ÀÚ ±¸ºÐ Á¤·Ä (N ¿É¼Çµµ Á¸ÀçÇÏ¸é ¹«½ÃµË´Ï´Ù). C¿Í CLÀÌ ¸ðµÎ »ý·«µÇ¸é, ´ë¹®ÀÚ A-Z´Â Á¤·ÄÀÇ ¸ñÀûÀ¸·Î ¼Ò¹®ÀÚ¿Í µ¿ÀÏÇÏ´Ù°í °£ÁÖÇÕ´Ï´Ù.

+

+CL [v1.0.43.03+]: ÇöÀç »ç¿ëÀÚÀÇ ·ÎÄÉÀÏ¿¡ ±â¹ÝÇÏ¿© ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏ¿© Á¤·ÄÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ´ëºÎºÐÀÇ ¿µ¾î¿Í ¼­±¸ À¯·´¾î ·ÎÄÉÀÏÀº A-Z ±âÈ£ ±×¸®°í Ä ¿Í Ü¿Í °°Àº ANSI ±âÈ£¸¦ ¼Ò¹®ÀÚ¿Í µ¿ÀÏÇÏ´Ù°í °£ÁÖÇÕ´Ï´Ù. ÀÌ ¹æ¹ýÀº ¶ÇÇÑ "word sort"¸¦ »ç¿ëÇϱ⵵ ÇÕ´Ï´Ù. ÀÌ·¸°Ô Çϸé "coop" ±×¸®°í "co-op"¿Í °°Àº ´Ü¾îµéÀÌ ÇÔ²² ÀÖµµ·Ï ÇÏÀÌÇÂ(hyphens)°ú ¾îÆ÷½ºÆ®·ÎÇÇ(apostrophes)¸¦ Ãë±ÞÇÕ´Ï´Ù. ÇöÀç Á¤·Ä ÁßÀÎ Ç׸ñÀÇ ³»¿ë¿¡ µû¶ó, ¼öÇ༺´ÉÀº ±âº»ÀûÀÎ ´ë¼Ò¹®ÀÚ ºñ±¸ºÐ ¹æ¹ý¿¡ ºñÇØ 1¹è¿¡¼­ 8 ¹è±îÁö ³ª»Ü ¼ö ÀÖ½À´Ï´Ù.

+

+Dx: ±¸ºÐ ¹®ÀÚ·Î x¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ±¸ºÐ ¹®ÀÚ´Â VarName¿¡¼­ °¢ Ç׸ñÀÌ ½ÃÀÛµÇ°í ³¡³ª´Â °÷À» °áÁ¤ÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, x´Â ±âº»°ªÀÌ ¶óÀÎÇǵå (`n)ÀÔ´Ï´Ù. ÁÙÀÌ LF (`n) ¶Ç´Â CR+LF (`r`n)·Î ³¡³­´Ù¸é ¿Ã¹Ù¸£°Ô VarNameÀ» Á¤·ÄÇÕ´Ï´Ù.

+

+F MyFunction [v1.0.47+]: MyFunction¿¡ ÀÖ´Â ±âÁØ¿¡ ¸Â°Ô ¸ÂÃã Á¤·ÄÇÕ´Ï´Ù (¹°·Ð Á¤·Ä ½Ã°£Àº ´õ ±æ¾îÁý´Ï´Ù). +±âÈ£ "F" ´ÙÀ½¿¡ ¼±ÅÃÀûÀ¸·Î ½ºÆäÀ̽º/ÅÇ°ú ±×¸®°í ¸®½ºÆ®ÀÇ µÎ Ç׸ñÀ» ºñ±³ÇÏ´Â µ¥ »ç¿ëµÉ ÇÔ¼öÀÇ À̸§À» ÁöÁ¤ÇϽʽÿÀ. ÇÔ¼ö´Â µÎ °³ ¶Ç´Â ¼¼ °³ÀÇ ¸Å°³º¯¼ö¸¦ ¹Þ¾Æ¾ß ÇÕ´Ï´Ù. ÇÔ¼ö°¡ ù ¹ø° ¸Å°³º¯¼ö¸¦ µÎ ¹ø° º¸´Ù Å©´Ù°í »ý°¢Çϸé, ¾çÀÇ Á¤¼ö¸¦ µ¹·ÁÁÙ °ÍÀÔ´Ï´Ù. µÎ ¸Å°³º¯¼ö°¡ °°´Ù°í »ý°¢Çϸé 0 ¶Ç´Â ""À» µ¹·ÁÁְųª ¾Æ´Ï¸é ¾Æ¹«°Íµµ µ¹·ÁÁÖÁö ¾Ê½À´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é, À½ÀÇ Á¤¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. ¼Ò¼ö Á¡ÀÌ ¹ÝȯµÈ °ª¿¡ Á¸ÀçÇϸé, ±× ºÎºÐÀº ¹«½ÃµË´Ï´Ù (Áï, 0.8Àº 0°ú °°½À´Ï´Ù). Á¸ÀçÇϸé, ¼¼ ¹ø° ¸Å°³º¯¼ö´Â ¿øº»/Á¤·ÄµÇÁö ¾ÊÀº ¸®½ºÆ®¿¡ º¸¿©Áö´Â (¿¹Á¦ ÂüÁ¶) ù ¹ø° Ç׸ñÀ¸·ÎºÎÅÍ µÎ ¹ø° Ç׸ñÀÇ »ó´ë°Å¸®¸¦ ¹Þ½À´Ï´Ù (¹®ÀÚ ´ÜÀ§). ¸¶Áö¸·À¸·Î, ÀÌ ÇÔ¼ö´Â ±×¸¦ È£ÃâÇÑ Sort ¸í·É¾î¿Í °°Àº Àü¿ª ¼³Á¤À» »ç¿ëÇÕ´Ï´Ù (¿¹, StringCaseSense).

+

+ÁÖÀÇ: F ¿É¼Ç¿¡¼­ ¸ðµç ¿É¼ÇÀº D, Z, ±×¸®°í U¸¦ Á¦¿ÜÇÏ°í ¹«½ÃµË´Ï´Ù (¹°·Ð N, C, ±×¸®°í CLÀº ¿©ÀüÈ÷ Áߺ¹À» ŽÁöÇÏ´Â ¹æ½Ä¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù). ¶ÇÇÑ, . ÁöÁ¤µÈ ÇÔ¼ö°¡ : +

    +
  1. Á¸ÀçÇÏÁö ¾Ê°Å³ª; +
  2. ¸Å°³º¯¼ö¸¦ µÎ °³ ¹Ì¸¸À¸·Î ¹ÞÀ» ¶§; +
  3. ¶Ç´Â ù ¹ø° ¶Ç´Â µÎ ¹ø° ¸Å°³º¯¼ö°¡ ByRefÀÏ ¶§ +
+ Á¤·ÄÀº ÀϾÁö ¾Ê½À´Ï´Ù.

+

+N: ¼ýÀÚ¼ø Á¤·Ä: °¢ Ç׸ñÀº ¹®ÀÚ¿­ÀÌ ¾Æ´Ï¶ó ¼ýÀÚ·Î °£Áֵ˴ϴ٠(¿¹¸¦ µé¾î, ÀÌ ¿É¼ÇÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ¾ËÆĺª ¼ø¼­À̱⠶§¹®¿¡ ¹®ÀÚ¿­ 233Àº ¹®ÀÚ¿­ 40º¸´Ù ÀÛ´Ù°í °£Áֵ˴ϴÙ.). ½ÊÁø ¹®ÀÚ¿­°ú ½ÊÀ°Áø ¹®ÀÚ¿­ ¸ðµÎ (¿¹,. 0xF1) ¼ýÀÚ·Î °£Áֵ˴ϴÙ. ¼ýÀÚ·Î ½ÃÀÛÇÏÁö ¾Ê´Â ¹®ÀÚ¿­Àº Á¤·ÄÀÇ ¸ñÀûÀ¸·Î 0À̶ó°í °£ÁÖÇÕ´Ï´Ù. ¼ýÀÚ´Â 64-ºñÆ® ºÎµ¿ ¼Ò¼öÁ¡ ¼ö·Î °£ÁÖÇÕ´Ï´Ù. (ÀÖ´Ù¸é) °¢ ¼ýÀÚÀÇ ¼Ò¼ö ºÎºÐµµ °í·ÁµË´Ï´Ù.

+

+Pn: ¹®ÀÚ À§Ä¡ n¿¡ ±â¹ÝÇÏ¿© Ç׸ñµéÀ» Á¤·ÄÇÕ´Ï´Ù (n¿¡ ½ÊÀ°Áø ¼ö¸¦ »ç¿ëÇÏÁö ¸¶½Ê½Ã¿À). ÀÌ ¿É¼ÇÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, n Àº ±âº»°ªÀÌ 1ÀÔ´Ï´Ù. ÀÌ°ÍÀº ù ¹®ÀÚÀÇ À§Ä¡ÀÔ´Ï´Ù. Á¤·ÄÀº °¢ ¹®ÀÚ¿­À» ´Ù¸¥ ¹®ÀÚ¿­¿¡ ±×ÀÇ n¹ø° ¹®ÀÚºÎÅÍ ºñ±³ÇÕ´Ï´Ù. nÀÌ ¹®ÀÚ¿­ÀÇ ±æÀ̺¸´Ù ´õ Å©¸é, ±× ¹®ÀÚ¿­Àº Á¤·ÄÀÇ ¸ñÀûÀ¸·Î ºñ¾î ÀÖ´Ù°í °£ÁÖÇÕ´Ï´Ù. N (¼ýÀÚ Á¤·Ä) ¿É¼Ç°ú ÇÔ²² »ç¿ëµÉ ¶§, ÀÌ ¹®ÀÚ¿­ÀÇ À§Ä¡°¡ »ç¿ëµË´Ï´Ù. ¹Ýµå½Ã ±× ¼ýÀÚÀÇ ÀÚ¸® À§Ä¡¿Í °°¾Æ¾ß ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.

+

+R: ¿ª¼øÀ¸·Î Á¤·ÄÇÕ´Ï´Ù (´Ù¸¥ ¿É¼Ç¿¡ µû¶ó ¾ËÆĺª ¶Ç´Â ¼ýÀÚ ¼ø¼­·Î).

+

+Random: ¹«ÀÛÀ§ ¼ø¼­·Î Á¤·ÄÇÕ´Ï´Ù. ÀÌ ¿É¼Ç ¶§¹®¿¡ D, Z, ±×¸®°í U¸¦ Á¦¿ÜÇÏ°í ´Ù¸¥ ¸ðµç ¿É¼ÇÀº ¹«½ÃµË´Ï´Ù (¹°·Ð N, C, ±×¸®°í CLÀº ¿©ÀüÈ÷ Áߺ¹À» ŽÁöÇÏ´Â ¹æ½Ä¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù). ¿¹¸¦ µé¾î:

+
Sort, MyVar, Random
+Sort, MyVar, Random Z D|
+

+U ¸ðµç Ç׸ñÀÌ À¯ÀÏÇϵµ·Ï ¸®½ºÆ®·ÎºÎÅÍ Áߺ¹ Ç׸ñÀ» Á¦°ÅÇÕ´Ï´Ù. ErrorLevelÀº Á¦°ÅµÈ Ç׸ñÀÇ °³¼ö°¡ ¼³Á¤µË´Ï´Ù (¾øÀ¸¸é 0). C ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ¸¸é, Ç׸ñÀÇ ´ë¼Ò¹®ÀÚ°¡ ¹Ýµå½Ã ÀÏÄ¡ÇØ¾ß µ¿ÀÏÇÏ´Ù°í °£ÁÖÇÕ´Ï´Ù. N ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ¸¸é, 2 °°Àº Ç׸ñÀº 2.0°ú Áߺ¹À̶ó°í °£ÁÖÇÕ´Ï´Ù. Pn ¶Ç´Â \ (¿ª»ç¼±) ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ¸¸é, Á¤·Ä¿¡ »ç¿ëµÈ ºÎ¹®ÀÚ¿­ÀÌ ¾Æ´Ï¶ó Àüü Ç׸ñÀÌ Áߺ¹À̾î¾ß ÇÕ´Ï´Ù. Random ¶Ç´Â F/Function ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ¸¸é, Á¤·ÄÀÇ °á°ú·Î ¼­·Î ÀÎÁ¢ÇÏ°Ô ³ªÅ¸³¯ ¶§¸¸ Áߺ¹ÀÌ Á¦°ÅµË´Ï´Ù. ¿¹¸¦ µé¾î, "A|B|A"¸¦ ¹«ÀÛÀ§ ¼ø¼­·Î Á¤·ÄÇÒ ¶§, ±× °á°ú´Â A°¡ ÇÑ °³ ¶Ç´Â µÎ °³°¡ ´ã±æ ¼ö ÀÖ½À´Ï´Ù.

+

+Z: ÀÌ ¿É¼ÇÀ» ÀÌÇØÇÏ·Á¸é, º¯¼ö¿¡ RED`nGREEN`nBLUE`n°¡ ´ã°Ü ÀÖ´Ù°í »ý°¢ÇØ º¸½Ê½Ã¿À. Z ¿É¼ÇÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ¸¶Áö¸· ¶óÀÎÇǵå (`n)´Â ¸¶Áö¸· Ç׸ñÀÇ ÀϺκÐÀ¸·Î °£Áֵ˴ϴÙ. ±×¸®ÇÏ¿© 3 °³ÀÇ Ç׸ñ¸¸ ÀÖ½À´Ï´Ù. ±×·¯³ª Z ¿É¼ÇÀ» ÁöÁ¤Çϸé, ¸¶Áö¸·ÀÇ `n (Á¸ÀçÇϸé)Àº ¸®½ºÆ® ¸¶Áö¸·ÀÇ ºó Ç׸ñÀ» ±¸ºÐÇÑ´Ù°í °£Áֵ˴ϴÙ. ±×¸®ÇÏ¿© 4 °³ÀÇ Ç׸ñÀÌ ÀÖ½À´Ï´Ù (¸¶Áö¸· Ç׸ñÀº ºñ¾î ÀÖ½À´Ï´Ù).

+

+\: °¢°¢ÀÇ ¸¶Áö¸· ¿ª»ç¼± ´ÙÀ½¿¡ ¿À´Â ºÎ¹®ÀÚ¿­¿¡ ±â¹ÝÇÏ¿© Ç׸ñµéÀ» Á¤·ÄÇÕ´Ï´Ù. Ç׸ñ¿¡ ¿ª»ç¼±ÀÌ ¾øÀ¸¸é, Àüü Ç׸ñÀÌ ºÎ¹®ÀÚ¿­·Î »ç¿ëµË´Ï´Ù. ÀÌ ¿É¼ÇÀº ÆÄÀÏ À̸§¸¸ Á¤·ÄÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù (Áï, °æ·Î Á¦¿Ü). ¾Æ·¡ÀÇ ¿¹Á¦¿Í °°Àº °æ¿ì, AAA.txt ÁÙÀº BBB.txt ÁÙº¸´Ù À§¿¡ Á¤·ÄµË´Ï´Ù. ¿Ö³ÄÇϸé Á¤·ÄÀÇ ¸ñÀûÀ¸·Î µð·ºÅ丮´Â ¹«½ÃÇϱ⠶§¹®ÀÔ´Ï´Ù:

+
C:\BBB\AAA.txt
+C:\AAA\BBB.txt
+

+ÁÖÀÇ: Options N ±×¸®°í P´Â ¿ª»ç¼± ¿É¼ÇÀÌ Á¸ÀçÇÏ¸é ¹«½ÃµË´Ï´Ù.

+ +

³íÆò

+

+ÀÌ ¸í·É¾î´Â ÀüÇüÀûÀ¸·Î ÁÙ ¸®½ºÆ®¸¦ ´ã°í ÀÖ´Â º¯¼ö¸¦ Á¤·ÄÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ÁÙ ¸®½ºÆ®´Â °¢ ÁÙÀÌ ¶óÀÎÇÇµå ¹®ÀÚ (`n)·Î ³¡³³´Ï´Ù. ÁÙ ¸®½ºÆ®¸¦ º¯¼ö ¾È¿¡ ³Ö´Â ¹æ¹ýÀº Àüü ÆÄÀÏÀ» FileRead¸¦ ÅëÇÏ¿© ÀûÀçÇÏ´Â °ÍÀÔ´Ï´Ù.

+

+VarNameÀº ClipboardÀÌ°í ±× Å¬¸³º¸µå ¾È¿¡´Â ÆÄÀϵéÀÌ ´ã°Ü ÀÖ½À´Ï´Ù (¿¹¸¦ µé¾î ¿­¸° Ž»ö âÀ¸·ÎºÎÅÍ º¹»çµÈ ÆÄÀϵé). ±×·± ÆÄÀϵéÀº Á¤·ÄµÈ ¸®½ºÆ®·Î ±³Ã¼µË´Ï´Ù. +´Ù¸¥ ¸»·Î, ¿¬»êÀÌ ³¡³ª¸é Ŭ¸³º¸µå¿¡´Â ´õ ÀÌ»ó ÆÄÀÏ ÀÚü°¡ ³²¾Æ ÀÖÁö ÀÖ½À´Ï´Ù.

+

+ErrorLevel´Â U ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ» ¶§¸¸ ÀÌ ¸í·É¾î·Î ¹Ù²ò´Ï´Ù.

+

+º¯¼öÀÇ ÃÖ´ë °¡¿ë ´É·ÂÀº #MaxMem¸¦ ÅëÇÏ¿© Áõ°¡½Ãų ¼ö ÀÖ½À´Ï´Ù.

+

+¹æ´ëÇÑ º¯¼ö¸¦ Á¤·ÄÇß°í ³ªÁß¿¡ ±×ÀÇ ³»¿ëÀÌ ´õ ÀÌ»ó ÇÊ¿äÇÏÁö ¾ÊÀ¸¸é, ºñ¿ö¼­ ±×ÀÇ ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹, MyVar =.

+ +

°ü·Ã Ç׸ñ

+

+FileRead, ÆÄÀÏ-Àбâ ȸµ¹ÀÌ, ÆÄ½Ì È¸µ¹ÀÌ, StringSplit, RegisterCallback(), Ŭ¸³º¸µå, #MaxMem

+ +

¿¹Á¦

+
MyVar = 5,3,7,9,1,13,999,-4
+Sort MyVar, N D,  ; ¼ýÄ¡·Î Á¤·ÄÇÕ´Ï´Ù. ½°Ç¥¸¦ ±¸ºÐÀÚ·Î »ç¿ëÇÕ´Ï´Ù.
+MsgBox %MyVar%   ; °á°ú´Â -4,1,3,5,7,9,13,999ÀÔ´Ï´Ù
+
+; ´ÙÀ½ ¿¹Á¦´Â ÆÄÀÏÀÇ ³»¿ëÀ» Á¤·ÄÇÕ´Ï´Ù:
+FileRead, Contents, C:\Address List.txt
+if not ErrorLevel  ; ¼º°øÀûÀ¸·Î ÀûÀçµÊ.
+{
+    Sort, Contents
+    FileDelete, C:\Address List (alphabetical).txt
+    FileAppend, %Contents%, C:\Address List (alphabetical).txt
+    Contents =  ; ¸Þ¸ð¸®¸¦ Ç®¾îÁÝ´Ï´Ù.
+}
+
+; ´ÙÀ½ ¿¹Á¦¿¡¼­ Win+C´Â ÇÖÅ°°¡ µË´Ï´Ù.
+; ¿­¸° Ž»ö âÀ¸·ÎºÎÅÍ ÆÄÀϵéÀ» º¹»çÇØ Á¤·ÄµÈ ÆÄÀÏÀ̸§µéÀ» Ŭ¸³º¸µå¿¡ ¹èÄ¡ÇÕ´Ï´Ù:
+#c::
+Clipboard = ; ŽÁö°¡ ÀÛµ¿ÇÏ·Á¸é ¹Ýµå½Ã ºñ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù.
+Send ^c
+ClipWait 2
+if ErrorLevel
+    return
+Sort Clipboard
+MsgBox Ready to be pasted:`n%Clipboard%
+return
+
+; ´ÙÀ½ ¿¹Á¦´Â ¿ªÈ£Ãâ ÇÔ¼ö¸¦ ÅëÇÏ¿© ¸ÂÃã Á¤·ÄÀ» º¸¿©ÁÝ´Ï´Ù.
+MyVar = def`nabc`nmno`nFGH`nco-op`ncoop`ncop`ncon`n
+Sort, MyVar, F StringSort
+StringSort(a1, a2)
+{
+    return a1 > a2 ? 1 : a1 < a2 ? -1 : 0  ; StringCaseSense¿¡ ±â¹ÝÇÏ¿© ¾ËÆĺª ¼øÀ¸·Î Á¤·ÄÇÕ´Ï´Ù.
+}
+
+MyVar = 5,3,7,9,1,13,999,-4
+Sort, MyVar, F IntegerSort D,
+IntegerSort(a1, a2)
+{
+    return a1 - a2  ; ¼ýÀÚ¸¦ ¿À¸§ Â÷¼øÀ¸·Î Á¤·ÄÇÕ´Ï´Ù. ÀÌ ¹æ¹ýÀº Â÷ÀÌ°¡ ºÎÈ£ÀÖ´Â 64-ºñÆ® Á¤¼ö¸¦ ³ÑÁö ¾ÊÀ» ¶§¿¡¸¸ ÀÛµ¿ÇÕ´Ï´Ù.
+}
+
+MyVar = 1,2,3,4
+Sort, MyVar, F ReverseDirection D,  ; ¾È¿¡ 4,3,2,1ÀÌ µé¾î ÀÖ´Â ¸®½ºÆ®¸¦ µÚÁý½À´Ï´Ù.
+ReverseDirection(a1, a2, offset)
+{
+    return offset  ; ¿ø·¡ ¸®½ºÆ®¿¡¼­ a2 °¡ a1 µÚ¿¡ ¿À¸é »ó´ë°Å¸®(Offset)´Â ¾ç¼öÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é À½¼öÀÔ´Ï´Ù.
+}
+ + + diff --git a/src/docs/commands/SoundBeep.htm b/src/docs/commands/SoundBeep.htm new file mode 100644 index 0000000..fbe912a --- /dev/null +++ b/src/docs/commands/SoundBeep.htm @@ -0,0 +1,43 @@ + + + + +SoundBeep + + + + + + + +

SoundBeep

+ +

PC ½ºÇÇÄ¿·Î ÅæÀ» ¹æÃâÇÕ´Ï´Ù.

+ +
SoundBeep [, Frequency, Duration]
+

¸Å°³º¯¼ö

+
+ +
Frequency
+

¼Ò¸®ÀÇ Áøµ¿¼ö. Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù. 37ºÎÅÍ 32767 »çÀÌÀÇ ¼ýÀÚ°¡ µÇ¾î¾ß ÇÕ´Ï´Ù. »ý·«Çϸé, ±âº»°ªÀº 523ÀÔ´Ï´Ù.

+ +
Duration
+

¼Ò¸®ÀÇ Áö¼Ó ½Ã°£. ¹Ð¸®ÃÊ ´ÜÀ§ (Ç¥Çö½Ä °¡´É). »ý·«Çϸé, ±âº»°ªÀº 150ÀÔ´Ï´Ù.

+ +
+ +

³íÆò

+

+½ºÅ©¸³Æ®´Â ¼Ò¸®°¡ ³¡³ª±â¸¦ ±â´Ù¸° ´ÙÀ½ ½ÇÇàÀ» °è¼ÓÇÕ´Ï´Ù. °Ô´Ù°¡, ¼Ò¸®°¡ ³ª¿À´Â µ¿¾ÈÀº ½Ã½ºÅÛÀÇ ¹ÝÀÀ¼ºÀÌ ÁÙ¾îµé ¼öµµ ÀÖ½À´Ï´Ù.

+

+ÄÄÇ»ÅÍ¿¡ »ç¿îµå Ä«µå°¡ ¾ø´Ù¸é, Ç¥ÁØ »ß-ÀÌ ¼Ò¸®°¡ PC ½ºÇÇÄ¿¸¦ ÅëÇÏ¿© ¿¬Áֵ˴ϴÙ.

+

+PC ½ºÇÇÄ¿ ´ë½Å¿¡ Ç¥ÁØ ½Ã½ºÅÛ »ç¿îµå Ä«µå·Î »ß-ÀÌ ¼Ò¸®¸¦ ³»·Á¸é, SoundPlayÀÇ º°Ç¥ ¸ðµå¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

°ü·Ã Ç׸ñ

+

SoundPlay

+

¿¹Á¦

+
SoundBeep  ; ±âº» Áøµ¿¼ö¿Í Áö¼Ó ½Ã°£À¸·Î ¿¬ÁÖÇÕ´Ï´Ù.
+SoundBeep, 750, 500  ; 0.5ÃÊ°£ ³ôÀº Áøµ¿¼ö·Î ¿¬ÁÖÇÕ´Ï´Ù.
+ + + \ No newline at end of file diff --git a/src/docs/commands/SoundGet.htm b/src/docs/commands/SoundGet.htm new file mode 100644 index 0000000..932548f --- /dev/null +++ b/src/docs/commands/SoundGet.htm @@ -0,0 +1,94 @@ + + + + +SoundGet + + + + + + + +

SoundGet

+ +

»ç¿îµå âġ·ÎºÎÅÍ ´Ù¾çÇÑ ¼³Á¤À» ¿­¶÷ÇÕ´Ï´Ù (À½¼Ò°Å, º¼·ý µîµî.)

+ +
SoundGet, OutputVar [, ComponentType, ControlType, DeviceNumber]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

¿­¶÷µÈ ¼³Á¤À» ÀúÀåÇÒ º¯¼öÀÇ À̸§, 0ºÎÅÍ 100 (Æ÷ÇÔ) »çÀÌÀÇ ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀ̰ųª ¶Ç´Â ´Ü¾î ONÀ̳ª OFFÀÔ´Ï´Ù. (used only for ControlTypes ONOFF, MUTE, MONO, LOUDNESS, STEREOENH, ±×¸®°í BASSBOOST). + + ÀÌ º¯¼ö´Â ¼³Á¤À» ¿­¶÷ÇÏ´Â µ¥ ¹®Á¦°¡ ÀÖ¾úÀ¸¸é ºñ¿öÁý´Ï´Ù. ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀÇ Çü½ÄÀº, ¿¹¸¦ µé¾î ¼Ò¼öÁ¡ÀÇ À§Ä¡´Â, SetFormat¿¡ ÀÇÇÏ¿© °áÁ¤µË´Ï´Ù.

+ +
ComponentType
+

ºñ¾î ÀÖ°Å³Ä »ý·«Çϸé, ±âº» °ªÀº ´Ü¾î MASTERÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ´ÙÀ½ ´Ü¾î Áß Çϳª°¡ µÉ ¼ö ÀÖ½À´Ï´Ù: MASTER (SPEAKERS¿Í µ¿ÀǾî), DIGITAL, LINE, MICROPHONE, SYNTH, CD, TELEPHONE, PCSPEAKER, WAVE, AUX, ANALOG, HEADPHONES, ¶Ç´Â N/A. »ç¿îµå ÀåÄ¡¿¡ ÁöÁ¤µÈ ComponentTypeÀÌ ¾øÀ¸¸é, ErrorLevelÀº ±× ¹®Á¦¸¦ ³ªÅ¸³¾ °ÍÀÔ´Ï´Ù.

+

+ ¾î¶² ¹Í¼­¿¡¼­ ¶óº§ÀÌ AuxiliaryÀÎ ÄÞÆ÷³ÍÆ®´Â AUX°¡ ¾Æ´Ï¶óANALOG·Î Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ »ç¿îµå ÀåÄ¡¿¡ ComponentTypeÀÇ ½Çü°¡ ¿©·µÀ̸é (¿¹¸¦ µé¾î µÎ Á¾·ùÀÇ LINEÀÌ ÀÖÀ¸¸é), º¸Åë ù ¹ø°¿¡ ¿¬ÁÖ ¼³Á¤ÀÌ ´ã±â°í µÑ °¿¡ ³ìÀ½ ¼³Á¤ÀÌ ´ã±é´Ï´Ù. ù ¹ø° ¸»°í ´Ù¸¥ ½Çü¿¡ Á¢±ÙÇÏ·Á¸é, ½ÖÁ¡°ú ¼ýÀÚ¸¦ ÀÌ ¸Å°³º¯¼ö¿¡ Ãß°¡ÇϽʽÿÀ. ¿¹¸¦ µé¾î: Analog:2´Â ¾Æ³¯·Î±× ÄÄÆ÷³ÍÆ®ÀÇ µÎ¹ø° ½Çü¶ó´Â ¶æÀÔ´Ï´Ù.

+ +
ControlType
+

ºñ¾î Àְųª »ý·«Çϸé, ±âº» °ªÀº VOLUMEÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ´ÙÀ½ ´Ü¾î Áß Çϳª°¡ µÉ ¼ö ÀÖ½À´Ï´Ù: VOLUME (¶Ç´Â VOL), ONOFF, MUTE, MONO, LOUDNESS, STEREOENH, BASSBOOST, PAN, QSOUNDPAN, BASS, TREBLE, EQUALIZER, ¶Ç´Â À¯È¿ÇÑ ÄÜÆ®·Ñ À¯ÇüÀÇ ¹øÈ£ (»ç¿îµåÄ«µå ºÐ¼® ½ºÅ©¸³Æ® ÂüÁ¶). ÁöÁ¤µÈ ComponentType¿¡ ÁöÁ¤µÈ ControlTypeÀÌ ¾øÀ¸¸é, ErrorLevelÀº ±× ¹®Á¦¸¦ ¾Ë·ÁÁÙ °ÍÀÔ´Ï´Ù.

+

ÁÖÀÇ: »ç¿îµå ÀåÄ¡´Â º¸Åë VOLUME (¶Ç´Â VOL) ±×¸®°í MUTE¸¸ Áö¿øÇÕ´Ï´Ù. ¹°·Ð ´Ù¸¥ °Íµéµµ À©µµ¿ìÁî ¹öÀü°ú »ç¿îµå ÀåÄ¡¿¡ µû¶ó »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +
DeviceNumber
+

1ºÎÅÍ Áö¿øµÇ´Â ÀåÄ¡ÀÇ ÃÑ °³¼ö±îÁöÀÇ ¼ýÀÚ. ÀÌ ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, ±âº» °ªÀº 1ÀÔ´Ï´Ù (ù ¹ø° »ç¿îµå ÀåÄ¡), ¾Æ´Ï¸é Windows Vista À̻󿡼­ ¿¬ÁÖ¸¦ À§ÇÑ ½Ã½ºÅÛÀÇ ±âº» ÀåÄ¡ÀÔ´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù. »ç¿îµåÄ«µå ºÐ¼® ½ºÅ©¸³Æ®°¡ ¾î´À ¹øÈ£¸¦ »ç¿ëÇؾßÇÒÁö °áÁ¤ÇÏ´Â µ¥ µµ¿òÀ» ÁÙ °ÍÀÔ´Ï´Ù.

+ +
+

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevel´Â ¸í·É¾î°¡ ¼º°øÇϸé 0ÀÌ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ´ÙÀ½ ¹®±¸ Áß Çϳª°¡ ¼³Á¤µË´Ï´Ù:

+ + + + + + + + + + + + + + + + + + + +
Invalid Control Type or Component Type (À¯È¿ÇÏÁö ¾ÊÀº ÄÜÆ®·Ñ À¯ÇüÀ̳ª ÄÄÆ÷³ÍÆ® À¯Çü)
Can't Open Specified Mixer (ÁöÁ¤µÈ ¹Í¼­¸¦ ¿­ ¼ö ¾øÀ½)
Mixer Doesn't Support This Component Type (¹Í¼­°¡ ÀÌ ÄÞÆ÷³ÍÆ® À¯ÇüÀ» Áö¿øÇÏÁö ¾ÊÀ½)
Mixer Doesn't Have That Many of That Component Type (¹Í¼­°¡ ÁöÁ¤ÇÑ ¸¸Å­ ¸¹Àº ÄÞÆ÷³ÍÆ® À¯ÇüÀÌ ¾øÀ½)
Component Doesn't Support This Control Type (ÄÄÆ÷³ÍÆ®°¡ ÀÌ ÄÜÆ®·Ñ À¯ÇüÀ» Áö¿øÇÏÁö ¾ÊÀ½)
Can't Get Current Setting (ÇöÀç ¼³Á¤À» ¾òÀ» ¼ö ¾øÀ½)
+

³íÆò

+

Windows Vista ÀÌÈÄ´Â v1.1.10ºÎÅÍ Áö¿øÇÕ´Ï´Ù.

+

+½Ã½ºÅÛ¿¡ ¼³Ä¡µÈ »ç¿îµå ÀåÄ¡ (¹Í¼­)ÀÇ ´É·ÂÀ» ¾Ë¾Æ³»·Á¸é -- ¿¹¸¦ µé¾î, ÄÄÆ÷ÅÏÆ® À¯Çü°ú ÄÜÆ®·Ñ À¯Çü -- ´ÙÀ½ »ç¿îµåÄ«µå ºÐ¼® ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇϽʽÿÀ.

+

+¿Àµð¿À¸¦ ´õ ¼¶¼¼ÇÏ°Ô Á¦¾îÇÏ·Á¸é, VA ¶óÀ̺귯¸®ÀÇ »ç¿ëÀ» °í·ÁÇØ º¸½Ê½Ã¿À.

+

+¼³Á¤À» ¹Ù²Ù·Á¸é SoundSetÀ» »ç¿ëÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

SoundSet, SoundGetWaveVolume, SoundSetWaveVolume, SoundPlay

+ +

¿¹Á¦

+
SoundGet, master_volume
+MsgBox, ¸¶½ºÅÍ º¼·ýÀº %master_volume% ÆÛ¼¾Æ®ÀÔ´Ï´Ù.
+
+SoundGet, master_mute, , mute
+MsgBox, ¸¶½ºÅÍ À½¼Ò°Å´Â ÇöÀç %master_mute%ÀÔ´Ï´Ù.
+
+SoundGet, bass_level, Master, bass
+if ErrorLevel
+    MsgBox, ¿¡·¯ ¼³¸í: %ErrorLevel%
+else
+    MsgBox, MASTER¿¡ ´ëÇÑ BASS ·¹º§Àº %bass_level% ÆÛ¼¾Æ®ÀÔ´Ï´Ù.
+
+SoundGet, microphone_mute, Microphone, mute
+if microphone_mute = Off
+    MsgBox, ¸¶ÀÌÅ©·ÎÆùÀÌ À½¼Ò°ÅµÇÁö ¾Ê¾Ò½À´Ï´Ù.
+ + + diff --git a/src/docs/commands/SoundGetWaveVolume.htm b/src/docs/commands/SoundGetWaveVolume.htm new file mode 100644 index 0000000..be648c4 --- /dev/null +++ b/src/docs/commands/SoundGetWaveVolume.htm @@ -0,0 +1,47 @@ + + + + +SoundGetWaveVolume + + + + + + + +

SoundGetWaveVolume

+ +

»ç¿îµå ÀåÄ¡¿¡ ´ëÇÏ¿© ¿þÀ̺ê Ãâ·Â º¼·ýÀ» ¿­¶÷ÇÕ´Ï´Ù.

+ +
SoundGetWaveVolume, OutputVar [, DeviceNumber]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

¿­¶÷µÈ º¼·ý ·¹º§À» ÀúÀåÇÒ º¯¼öÀÇ À̸§. ÀÌ °ªÀº 0ºÎÅÍ 100±îÁöÀÇ ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀÏ ¼ö ÀÖ½À´Ï´Ù. ÀÌ º¯¼ö´Â º¼·ýÀ» ¿­¶÷ÇÏ´Â µ¥ ¹®Á¦°¡ ÀÖ¾úÀ¸¸é ºñ¿öÁý´Ï´Ù. ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀÇ Çü½ÄÀº, ¿¹¸¦ µé¾î ±×ÀÇ ¼Ò¼öÁ¡ ÀÚ¸®´Â, SetFormat¿¡ ÀÇÇÏ¿© °áÁ¤µË´Ï´Ù.

+ +
DeviceNumber
+

ÀÌ ¸Å°³º¯¼ö°¡ »ý·«µÇ¸é, ±âº»°ªÀº 1ÀÔ´Ï´Ù (ù ¹ø° »ç¿îµå ÀåÄ¡), ÀÌ°ÍÀÌ º¸Åë ³ìÀ½°ú ¿¬ÁÖ¿¡ »ç¿ëµÇ´Â ½Ã½ºÅÛÀÇ ±âº» ÀåÄ¡ÀÔ´Ï´Ù. 1º¸´Ù Å« ¼ýÀÚ¸¦ ÁöÁ¤ÇÏ¸é ´Ù¸¥ »ç¿îµå ÀåÄ¡¸¦ ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +
+

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖ¾úÀ¸¸é 1 , ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+ÇöÀç ¿þÀ̺ê Ãâ·Â º¼·ý ·¹º§Àº SoundSetWaveVolume¸¦ ÅëÇÏ¿© ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. Master Volume, Synth, Microphone, Mute, Treble, ±×¸®°í Bass °°Àº ¼³Á¤µéÀº SoundSet°ú SoundGetÀ» »ç¿ëÇÏ¿© ¼³Á¤ÇÏ°í¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Windows Vista ÀÌÈÄ (v1.1.10+): ÀÌ ¸í·É¾î´Â SoundGet¿¡¼­ +ComponentType¿¡ Wave¸¦ ¼³Á¤ÇÏ°í ControlType¿¡ VolumeÀ» ¼³Á¤ÇÑ °Í°ú µ¿µîÇÕ´Ï´Ù. + +

°ü·Ã Ç׸ñ

+

SoundSetWaveVolume, SoundSet, SoundGet, SoundPlay

+ +

¿¹Á¦

+
SoundGetWaveVolume, OutputVar
+MsgBox, ÇöÀç ¿þÀ̺ê Ãâ·Â º¼·ý ·¹º§Àº %OutputVar%`%ÀÔ´Ï´Ù.
+ + + diff --git a/src/docs/commands/SoundPlay.htm b/src/docs/commands/SoundPlay.htm new file mode 100644 index 0000000..91df2e8 --- /dev/null +++ b/src/docs/commands/SoundPlay.htm @@ -0,0 +1,60 @@ + + + + +SoundPlay + + + + + + + +

SoundPlay

+ +

»ç¿îµå, ºñµð¿À, ¶Ç´Â ±âŸ Áö¿øµÇ´Â ÆÄÀÏ À¯ÇüÀ» ¿¬ÁÖÇÕ´Ï´Ù.

+ +
SoundPlay, Filename [, wait]
+

¸Å°³º¯¼ö

+
+ +
Filename
+

+ ¿¬ÁÖµÉ ÆÄÀÏÀÇ À̸§, Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£ÁÖÇÕ´Ï´Ù.

+

+ Ç¥ÁØ ½Ã½ºÅÛ »ç¿îµå¸¦ »ý»êÇÏ·Á¸é, ¾Æ·¡¿¡ º¸¿© ÁÖµíÀÌ º°Ç¥ ´ÙÀ½¿¡ ¼ýÀÚ¸¦ ÁöÁ¤ÇϽʽÿÀ. ÁÖÀÇ: wait ¸Å°³º¯¼ö´Â ÀÌ ¸ðµå¿¡¼­ ¾Æ¹« È¿°úµµ ¾ø½À´Ï´Ù.
+*-1: ´Ü¼øÇÑ ºñÇÁÀ½. »ç¿îµå Ä«µå°¡ ¾øÀ¸¸é , »ç¿îµå´Â ½ºÇÇÄ¿¸¦ »ç¿ëÇÏ¿© »ý¼ºµË´Ï´Ù.
+*16: ¼Õ (ÁßÁö/¿¡·¯)
+*32: Áú¹®
+*48: °¨Åº
+*64: º°Ç¥ (Á¤º¸)

+ +
wait
+

»ý·«Çϸé, ÆÄÀÏÀÌ ¿¬Áֵǰí ÀÖ´Â µ¿¾È ½ºÅ©¸³Æ®ÀÇ ÇöÀç ¾²·¹µå°¡ ´ÙÀ½ ¸í·É¾î·Î À̵¿ÇÕ´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é, 1 ¶Ç´Â ´Ü¾î WAIT¸¦ ÁöÁ¤ÇϽʽÿÀ. ±×·¯¸é ÆÄÀÏÀÌ ¿¬ÁÖ¸¦ ³¡³¾ ¶§±îÁö ÇöÀç ¾²·¹µå°¡ ±â´Ù·È´Ù°¡ ½ÇÇàÀ» °è¼ÓÇÕ´Ï´Ù. ±â´Ù¸®°í ÀÖ´Â µ¿¾È¿¡µµ, ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀ̸Ӹ¦ ÅëÇÏ¿© »õ·Î¿î ¾²·¹µå¸¦ ±âµ¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

¾Ë·ÁÁø ÇÑ°è: WAIT ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, OS´Â ¿¬ÁÖ ÁßÀÎ ÆÄÀÏÀÌ ½ºÅ©¸³Æ®°¡ ´ÝÈú ¶§±îÁö ¶Ç´Â ¶Ç´Ù¸¥ ÆÄÀÏÀÌ ¿¬ÁÖµÉ ¶§±îÁö (½ÉÁö¾î Á¸ÀçÇÏÁö ¾ÊÀº ÆÄÀÏÀÏÁö¶óµµ) "»ç¿ëµÉ °Å¶ó°í" °£ÁÖÇÕ´Ï´Ù.

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖ¾úÀ¸¸é 1ÀÌ ¼³Á¤µÇ°í ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+¸ðµç Windows ¿î¿µÃ¼Á¦´Â .wav ÆÄÀÏÀ» ¿¬ÁÖÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ±×·¸Áö¸¸, ´Ù¸¥ ÆÄÀϵéÀº (.mp3, .avi, etc.) ¿Ã¹Ù¸¥ ÄÚµ¦À̳ª Ư¡À» OS¿¡ ¼³Ä¡ÇÏÁö ¾ÊÀ¸¸é ¿¬ÁÖÇÏÁö ¸øÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

+

+ÆÄÀÏÀÌ ¿¬ÁÖ ÁßÀÌ°í ÇöÀç ½ºÅ©¸³Æ®°¡ µÎ ¹ø° ÆÄÀÏÀ» ¿¬ÁÖÇÑ´Ù¸é, ù ¹ø° ÆÄÀÏÀº ¸ØÃß°í µÎ ¹ø° ÆÄÀÏÀÌ ¿¬Áֵ˴ϴÙ. ¾î¶² ½Ã½ºÅÛ¿¡¼­, ¾î¶² ÆÄÀÏ À¯ÇüÀº ¿ÏÀüÈ÷ º°°³ÀÇ ½ºÅ©¸³Æ®°¡ »õ ÆÄÀÏÀ» ¿¬ÁÖÇÒ Áö¶óµµ ¿¬ÁÖ¸¦ Áß´ÜÇÕ´Ï´Ù.

+

+ÇöÀç ¿¬ÁÖ ÁßÀÎ ÆÄÀÏÀ» ÁßÁöÇÏ·Á¸é, SoundPlay¸¦ ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ Á¸ÀçÇÏÁö ¾ÊÀº ÆÄÀÏÀ̸§¿¡ ½ÇÇàÇϽʽÿÀ: SoundPlay, Nonexistent.avi.

+

+½ºÅ©¸³Æ®°¡ Á¾·áÇϸé, ½ºÅ©¸³Æ®°¡ ±âµ¿Çؼ­ ÇöÀç ¿¬ÁÖ ÁßÀÎ ÆÄÀϵµ ÁßÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

SoundBeep, SoundGet, SoundSet, SoundGetWaveVolume, SoundSetWaveVolume, MsgBox, ¾²·¹µå

+ +

¿¹Á¦

+
SoundPlay, %A_WinDir%\Media\ding.wav
+SoundPlay *-1  ; °£´ÜÇÑ ºñÇÁÀ½. »ç¿îµå Ä«µå°¡ ¾øÀ¸¸é, ½ºÇÇÄ¿¸¦ »ç¿ëÇÏ¿© ¼Ò¸®¸¦ ¹ß»ý½Ãŵ´Ï´Ù.
+ + + diff --git a/src/docs/commands/SoundSet.htm b/src/docs/commands/SoundSet.htm new file mode 100644 index 0000000..7e24048 --- /dev/null +++ b/src/docs/commands/SoundSet.htm @@ -0,0 +1,172 @@ + + + + +SoundSet + + + + + + + +

SoundSet

+ +

»ç¿îµå ÀåÄ¡ÀÇ ´Ù¾çÇÑ ¼³Á¤À» º¯°æÇÕ´Ï´Ù (À½¼Ò°Å, º¼·ý µîµî.)

+ +
SoundSet, NewSetting [, ComponentType, ControlType, DeviceNumber]
+

¸Å°³º¯¼ö

+
+ +
NewSetting
+

¹éºÐ·ü ¼ýÀÚ. ¹üÀ§´Â -100ºÎÅÍ 100 ±îÁö (ºÎµ¿ ¼Ò¼öÁ¡ ¼ö ¶Ç´Â Ç¥Çö½Ä °¡´É). ¼ýÀÚ°¡ Ç÷¯½º ¶Ç´Â ¸¶À̳ʽº »çÀÎÀ¸·Î ½ÃÀÛÇϸé, ÇöÀç ¼³Á¤ÀÌ ÁöÁ¤ÇÑ ¾ç¸¸Å­ À§³ª ¾Æ·¡·Î Á¶ÀýµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ÀÌ ¼³Á¤Àº ¸í½ÃÀûÀ¸·Î NewSetting¿¡ ÁöÁ¤ÇÑ °ªÀÌ ¼³Á¤µË´Ï´Ù.

+

¿ÀÁ÷ µÎ °³ÀÇ ¼³Á¤¸¸ °¡´ÉÇÑ ControlTypes¿¡ ´ëÇÏ¿© -- Áï ONOFF, MUTE, MONO, LOUDNESS, STEREOENH, ±×¸®°í BASSBOOST -- ¾ç¼ö´Â ¼³Á¤À» ÄÑ°í 0ÀÌ¸é ¼³Á¤À» ²ü´Ï´Ù. ±×·¸Áö¸¸, ¼ýÀÚ°¡ Ç÷¯½º ¶Ç´Â ¸¶À̳ʽº »çÀÎÀ¸·Î ½ÃÀÛÇϸé, ¼³Á¤Àº Åä±ÛµË´Ï´Ù (ÇöÀç »óŸ¦ ¹Ý´ë·Î ¼³Á¤ÇÕ´Ï´Ù).

+ +
ComponentType
+

»ý·«Çϰųª ºñ¾î ÀÖÀ¸¸é, ±âº»°ªÀº ´Ü¾î MASTERÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ´ÙÀ½ ´Ü¾î Áß Çϳª°¡ µÉ ¼ö ÀÖ½À´Ï´Ù: MASTER (SPEAKERS¿Í µ¿ÀǾî), DIGITAL, LINE, MICROPHONE, SYNTH, CD, TELEPHONE, PCSPEAKER, WAVE, AUX, ANALOG, HEADPHONES, ¶Ç´Â N/A. »ç¿îµå ÀåÄ¡¿¡ ÁöÁ¤µÈ ComponentTypeÀÌ ¾øÀ¸¸é, ErrorLevelÀº ±× ¿¡·¯¸¦ ¾Ë·ÁÁÝ´Ï´Ù.

+

¶óº§ÀÌ AuxiliaryÀÎ ÄÄÆ÷³ÍÆ®´Â ¾î¶² ¹Í¼­¿¡¼­ AUX°¡ ¾Æ´Ï¶ó ANALOG·Î Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

ÀåÄ¡¿¡ ComponentTypeÀÇ ½Çü°¡ Çϳª ÀÌ»ó ÀÖÀ¸¸é (¿¹¸¦ µé¾î µÎ Á¾·ùÀÇ LINE), º¸Åë ù ¹ø° ÄÞÆ÷³ÍÆ®¿¡ ¿¬ÁÖ ¼³Á¤ÀÌ ´ã±â°í µÎ ¹ø° ÄÞÆ÷³ÍÆ®¿¡ ³ìÀ½ ¼³Á¤ÀÌ ´ã±é´Ï´Ù. ù ÄÞÆ÷³ÍÆ® ¸»°í ´Ù¸¥ ÄÞÆ÷³ÍÆ®¿¡ Á¢±ÙÇÏ·Á¸é ½ÖÁ¡°ú ¼ýÀÚ¸¦ ÀÌ ¸Å°³º¯¼ö µÚ¿¡ Ãß°¡ÇϽʽÿÀ. ¿¹¸¦ µé¾î: Analog:2´Â ¾Æ³¯·Î±× ÄÄÆ÷³ÍÆ®ÀÇ µÎ ¹ø° ½ÇüÀÔ´Ï´Ù.

+ +
ControlType
+

»ý·«Çϰųª ºñ¾î ÀÖÀ¸¸é, ±âº» °ªÀº VOLUMEÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ´ÙÀ½ ´Ü¾î Áß Çϳª°¡ µÉ ¼ö ÀÖ½À´Ï´Ù: VOLUME (¶Ç´Â VOL), ONOFF, MUTE, MONO, LOUDNESS, STEREOENH, BASSBOOST, PAN, QSOUNDPAN, BASS, TREBLE, EQUALIZER, ¶Ç´Â À¯È¿ÇÑ ÄÜÆ®·Ñ À¯ÇüÀÌ ¹øÈ£ (»ç¿îµåÄ«µå ºÐ¼® ½ºÅ©¸³Æ® ÂüÁ¶). ÁöÁ¤µÈ ComponentType¿¡ ÁöÁ¤µÈ ControlTypeÀÌ ¾øÀ¸¸é, ErrorLevelÀº ±× ¹®Á¦¸¦ ¾Ë·Á ÁÝ´Ï´Ù.

+

ÁÖÀÇ: »ç¿îµå ÀåÄ¡´Â º¸Åë VOLUME (¶Ç´Â VOL) ±×¸®°í MUTE¸¸ Áö¿øÇÕ´Ï´Ù. ¹°·Ð ´Ù¸¥ °Íµéµµ »ç¿îµå ÀåÄ¡¿Í À©µµ¿ìÁî ¹öÀü¿¡ µû¶ó »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +
DeviceNumber
+

1ºÎÅÍ Áö¿øµÇ´Â ÀåÄ¡ÀÇ ÃÑ °¹¼ö ±îÁöÀÇ ¼ýÀÚ. ÀÌ ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, ±âº» °ªÀº 1 (ù ¹ø° »ç¿îµå ÀåÄ¡)À̰ųª, ¾Æ´Ï¸é Windows Vista ÀÌÈÄ¿¡¼­ ¿¬ÁÖ¿¡ ´ëÇÑ ½Ã½ºÅÛÀÇ ±âº» ÀåÄ¡ÀÔ´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù. »ç¿îµåÄ«µå ºÐ¼® ½ºÅ©¸³Æ®´Â ¾î´À ¹øÈ£¸¦ »ç¿ëÇÒ Áö °áÁ¤ÇÏ´Â µ¥ µµ¿òÀÌ µÉ °ÍÀÔ´Ï´Ù..

+ +
+

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¸í·É¾î°¡ ¼º°øÇßÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ´ÙÀ½ ¹®±¸ Áß Çϳª°¡ ¼³Á¤µË´Ï´Ù:

+ + + + + + + + + + + + + + + + + + + + + + +
Invalid Control Type or Component Type (¹«È¿ÇÑ ÄÜÆ®·Ñ À¯ÇüÀ̳ª ÄÄÆ÷³ÍÆ® À¯Çü)
Can't Open Specified Mixer (ÁöÁ¤µÈ ¹Í¼­¸¦ ¿­ ¼ö ¾øÀ½)
Mixer Doesn't Support This Component Type (¹Í¼­°¡ ÀÌ ÄÄÆ÷³ÍÆ® À¯ÇüÀ» Áö¿øÇÏÁö ¾ÊÀ½)
Mixer Doesn't Have That Many of That Component Type (ÁöÁ¤ÇÑ ¸¸Å­ ¸¹Àº ÄÄÆ÷³ÍÆ® À¯ÇüÀÌ ¹Í¼­¿¡ ¾øÀ½)
Component Doesn't Support This Control Type (ÄÄÆ÷³ÍÆ®°¡ ÀÌ ÄÜÆ®·Ñ À¯ÇüÀ» Áö¿øÇÏÁö ¾ÊÀ½)
Can't Get Current Setting (ÇöÀç ¼³Á¤À» °¡Á®¿Ã ¼ö ¾øÀ½)
Can't Change Setting (¼³Á¤À» º¯°æÇÒ ¼ö ¾øÀ½)
+

³íÆò

+

+Windows Vista ÀÌÈÄ´Â v1.1.10ºÎÅÍ Áö¿øÇÕ´Ï´Ù.

+

+¿Àµð¿À¸¦ ´õ ¼¶¼¼ÇÏ°Ô Á¦¾îÇÏ·Á¸é, VA ¶óÀ̺귯¸®ÀÇ »ç¿ëÀ» °í·ÁÇØ º¸½Ê½Ã¿À.

+

+º¼·ýÀ» Á¶ÀýÇÏ´Â ¶Ç´Ù¸¥ ¹æ¹ýÀº ½ºÅ©¸³Æ®¿¡°Ô º¼·ý-Á¦¾î Å°´­¸²À» Àü¼ÛÇÏ°Ô ÇØ Àüü ½Ã½ºÅÛ¿¡ ´ëÇÏ¿© ¸¶½ºÅÍ º¼·ëÀ» º¯°æÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ÇÒ ¼ö ÀÖ½À´Ï´Ù:

+ +
Send {Volume_Up}  ; ¸¶½ºÅÍ º¼·ýÀ» 1 ´«±Ý ¿Ã¸³´Ï´Ù (º¸Åë 5%).
+Send {Volume_Down 3}  ; ¸¶½ºÅÍ º¼·ýÀ» 3 ´«±Ý ³»¸³´Ï´Ù.
+Send {Volume_Mute}  ; ¸¶½ºÅÍ º¼·ýÀ» À½¼Ò°Å Çϰųª ÇØÁ¦ÇÕ´Ï´Ù.
+

+½Ã½ºÅÛ¿¡ ¼³Ä¡µÈ »ç¿îµå ÀåÄ¡ (¹Í¼­)ÀÇ ´É·ÂÀ» ¾Ë¾Æ ³»·Á¸é -- ¿¹¸¦ µé¾î ÄÄÆ÷³ÍÆ® À¯Çü°ú ÄÜÆ®·Ñ À¯Çü -- »ç¿îµåÄ«µå ºÐ¼® ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇϽʽÿÀ.

+

+Windows 2000/XP/2003: SoundSetÀÌ ÇÑ ÄÄÆ÷³ÍÆ®ÀÇ º¼·ýÀ» º¯°æÇÒ ¶§, ´Ù¸¥ ¸ðµç ÄÄÆ÷³ÍÆ®ÀÇ Ã¤³Îµµ (¿¹, ¿ÞÂÊ ¿À¸¥ÂÊ) °°Àº ·¹º§·Î ¼³Á¤µË´Ï´Ù. ´Ù¸¥ ¸»·Î, ÀÌÀü¿¡ "ÆòÇü"À» ¹þ¾î³­ °ªÀÌ ¼³Á¤µÇ¾ú´Ù¸é ¸ðµÎ »ç¶óÁý´Ï´Ù. WAVE ÄÄÆ÷³ÍÆ®¿¡ ´ëÇÏ¿© À̸¦ ÇÇÇÏ·Á¸é ´ë½Å¿¡ SoundSetWaveVolumeÀ» »ç¿ëÇÏ¸é µË´Ï´Ù. ÀÌ´Â º¼·ý ·¹º§À» º¯°æÇÒ ¶§ ±âÁ¸ÀÇ ÆòÇüÀ» À¯ÁöÇÏ·Á°í ½ÃµµÇÕ´Ï´Ù.

+

+Windows Vista ÀÌÈÄ (v1.1.10+): SoundSet´Â º¼·ý ·¹º§À» º¯°æÇÒ ¶§ ±âÁ¸ÀÇ ÆòÇüÀ» À¯ÁöÇÏ·Á°í ³ë·ÂÇÕ´Ï´Ù.

+

+¼³Á¤ÀÇ ÇöÀç °ªÀ» ¿­¶÷ÇÏ·Á¸é SoundGetÀ» »ç¿ëÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

+SoundGet, SoundGetWaveVolume, SoundSetWaveVolume, SoundPlay

+ +

¿¹Á¦

+ +
; ±âº» ¿¹Á¦:
+SoundSet, 50  ; ¸¶½ºÅÍ º¼·ý¿¡ 50%¸¦ ¼³Á¤ÇÕ´Ï´Ù
+SoundSet +10  ; ¸¶½ºÅÍ º¼·ýÀ» 10% ¿Ã¸³´Ï´Ù
+SoundSet -10  ; ¸¶½ºÅÍ º¼·ýÀ»  10% ³»¸³´Ï´Ù
+SoundSet, 1, Microphone, mute  ; ¸¶ÀÌÅ©·ÎÆùÀ» À½¼Ò°ÅÇÕ´Ï´Ù
+SoundSet, +1, , mute  ; ¸¶½ºÅÍ À½¼Ò°Å¸¦ Åä±ÛÇÕ´Ï´Ù (¹Ý´ë »óÅ·Π¼³Á¤ÇÕ´Ï´Ù)
+SoundSet, +20, Master, bass  ; bass ·¹º§À» 20% ¿Ã¸³´Ï´Ù.
+if ErrorLevel
+    MsgBox, MASTER¿¡¼­ BASS ¼³Á¤À» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.
+ +

»ç¿îµåÄ«µå ºÐ¼®

+

+´ÙÀ½ ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ¸é »ç¿îµåÄ«µåÀÇ ´É·ÂÀ» ¾Ë¾Æº¼ ¼ö ÀÖ½À´Ï´Ù (ÄÄÆ÷³ÍÆ® À¯Çü°ú ÄÜÆ®·Ñ À¯Çü). ±× °á°ú¸¦ °£´ÜÇÑ ListView¿¡ º¸¿©ÁÝ´Ï´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î, Windows Vista ÀÌÈÄ¿¡ (¿¹¸¦ µé¾î ÀåÄ¡ÀÇ È­¸é À̸§°ú °°Àº) ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ Á¦°øÇÏ´Â ½ºÅ©¸³Æ®¸¦ ´ÙÀ½ Æ÷·³ÀÇ ÁÖÁ¦¿¡¼­ ³»·Á ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù: http://www.autohotkey.com/board/topic/90877-/

+
SetBatchLines -1
+SplashTextOn,,, Gathering Soundcard Info...
+
+; ¾Æ·¡¿¡¼­ ¼ø¼öÇÑ ¼ýÀÚ´Â ´ëºÎºÐ ¾Æ¸¶µµ ¾î´À ¹Í¼­¿¡µµ Á¸ÀçÇÏÁö ¾Ê°ÚÁö¸¸, ¿Ïº®À» ±âÇϱâ À§ÇØ ÁúÀÇÇÕ´Ï´Ù.
+; ¼ýÀÚµéÀº ´ÙÀ½ Ç׸ñ¿¡ (¼ø¼­´ë·Î) »óÀÀÇÕ´Ï´Ù: CUSTOM, BOOLEANMETER, SIGNEDMETER, PEAKMETER,
+; UNSIGNEDMETER, BOOLEAN, BUTTON, DECIBELS, SIGNED, UNSIGNED, PERCENT, SLIDER, FADER, SINGLESELECT, MUX,
+; MULTIPLESELECT, MIXER, MICROTIME, MILLITIME
+ControlTypes = VOLUME,ONOFF,MUTE,MONO,LOUDNESS,STEREOENH,BASSBOOST,PAN,QSOUNDPAN,BASS,TREBLE,EQUALIZER,0x00000000, 0x10010000,0x10020000,0x10020001,0x10030000,0x20010000,0x21010000,0x30040000,0x30020000,0x30030000,0x30050000,0x40020000,0x50030000,0x70010000,0x70010001,0x71010000,0x71010001,0x60030000,0x61030000
+
+ComponentTypes = MASTER,HEADPHONES,DIGITAL,LINE,MICROPHONE,SYNTH,CD,TELEPHONE,PCSPEAKER,WAVE,AUX,ANALOG,N/A
+
+; ListView¸¦ »ý¼ºÇÏ°í ¸ÞÀΠȸµ¹À̸¦ À§ÇØ Áغñ¸¦ ÇÕ´Ï´Ù:
+Gui, Add, Listview, w400 h400 vMyListView, Component Type|Control Type|Setting|Mixer
+LV_ModifyCol(4, "Integer")
+SetFormat, Float, 0.2  ; Limit number of decimal places in percentages to two.
+
+Loop  ; ½Ã½ºÅÛ¿¡ Á¸ÀçÇÏ´Â °¢ ¹Í¼­ ¹øÈ£¿¡ ´ëÇÏ¿©, ±×ÀÇ ´É·ÂÀ» ÁúÀÇÇÕ´Ï´Ù.
+{
+    CurrMixer := A_Index
+    SoundGet, Setting,,, %CurrMixer%
+    if ErrorLevel = Can't Open Specified Mixer  ; ÀÌ ¿¡·¯¸¸ ¾Æ´Ï¸é ¹Í¼­°¡ Á¸ÀçÇÑ´Ù´Â ¶æÀÔ´Ï´Ù.
+        break
+
+    ; ÀÌ ¹Í¼­¿¡ Á¸ÀçÇÏ´Â °¢ ÄÄÆ÷³ÍÆ® À¯Çü¿¡ ´ëÇÏ¿©, ±×ÀÇ ½Çü¿Í ÄÜÆ®·Ñ À¯ÇüÀ» ÁúÀÇÇÕ´Ï´Ù:
+    Loop, parse, ComponentTypes, `,
+    {
+        CurrComponent := A_LoopField
+        ; ¸ÕÀú ÀÌ ÄÄÆ÷³ÍÆ® À¯ÇüÀÌ ¹Í¼­¿¡ Á¸ÀçÇÏ´ÂÁö Á¡°ËÇÕ´Ï´Ù:
+        SoundGet, Setting, %CurrComponent%,, %CurrMixer%
+        if ErrorLevel = Mixer Doesn't Support This Component Type
+            continue  ; ´ÙÀ½ ÄÞÆ÷³ÍÆ® À¯ÇüÀ¸·Î ³ª¾Æ°¡±â À§ÇØ »õ ¹Ýº¹À» ½ÃÀÛÇÕ´Ï´Ù.
+        Loop  ; ÀÌ ÄÄÆ÷³ÍÆ® À¯ÇüÀÇ °¢ ½Çü¿¡ ´ëÇÏ¿©, ±×ÀÇ ÄÜÆ®·Ñ À¯ÇüÀ» ÁúÀÇÇÕ´Ï´Ù.
+        {
+            CurrInstance := A_Index
+            ; ¸ÕÀú ÀÌ ÄÄÆ÷³ÍÆ®ÀÇ ½Çü°¡ ¹Í¼­¿¡ Á¸ÀçÇÏ´ÂÁö Á¡°ËÇÕ´Ï´Ù:
+            SoundGet, Setting, %CurrComponent%:%CurrInstance%,, %CurrMixer%
+            ; ´ÙÀ½ÀÇ ¿¡·¯ µÎ °³¸¦ ¸ðµÎ Á¡°ËÇϸé ÀÌ ½ºÅ©¸³Æ®¸¦ ¿¹Àü ¹öÀü¿¡¼­µµ ½ÇÇà½Ãų ¼ö ÀÖ½À´Ï´Ù:
+            if ErrorLevel in Mixer Doesn't Have That Many of That Component Type,Invalid Control Type or Component Type
+                break  ; ÀÌ ÄÞÆ÷³ÍÆ® À¯ÇüÀÇ ½Çü°¡ ¾ø½À´Ï´Ù.
+            ; ÀÌ ÄÄÆ÷³ÍÆ®ÀÇ ½Çü¿¡ Á¸ÀçÇÏ´Â °¢ ÄÜÆ®·Ñ À¯ÇüÀÇ ÇöÀç ¼³Á¤À» ¾ò½À´Ï´Ù:
+            Loop, parse, ControlTypes, `,
+            {
+                CurrControl := A_LoopField
+                SoundGet, Setting, %CurrComponent%:%CurrInstance%, %CurrControl%, %CurrMixer%
+                ; ´ÙÀ½ µÎ ¿¡·¯¸¦ ¸ðµÎ Á¡°ËÇϸé ÀÌ ½ºÅ©¸³Æ®¸¦ ¿¹Àü ¹öÀü¿¡¼­µµ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù:
+                if ErrorLevel in Component Doesn't Support This Control Type,Invalid Control Type or Component Type
+                    continue
+                if ErrorLevel  ; »ý°¢Áö ¸øÇÑ ¿¡·¯ÀÔ´Ï´Ù. ±×·¡¼­ ±× °á°ú¿¡ º¸¿©ÁÝ´Ï´Ù.
+                    Setting := ErrorLevel
+                ComponentString := CurrComponent
+                if CurrInstance > 1
+                    ComponentString = %ComponentString%:%CurrInstance%
+                LV_Add("", ComponentString, CurrControl, Setting, CurrMixer)
+            }  ; °¢ ÄÜÆ®·Ñ À¯Çü¿¡ ´ëÇÏ¿©.
+        }  ; °¢ ÄÄÆ÷³ÍÆ® ½Çü¿¡ ´ëÇÏ¿©.
+    }  ; °¢ ÄÄÆ÷³ÍÆ® À¯Çü¿¡ ´ëÇÏ¿©.
+}  ; °¢ ¹Í¼­¿¡ ´ëÇÏ¿©.
+
+Loop % LV_GetCount("Col")  ; ±×ÀÇ ³»¿ë¿¡ ¸Â°Ô °¢ Ä÷³ÀÇ Å©±â¸¦ ÀÚµ¿À¸·Î Á¶ÀýÇÕ´Ï´Ù.
+    LV_ModifyCol(A_Index, "AutoHdr")
+
+SplashTextOff
+Gui, Show
+return
+
+GuiClose:
+ExitApp
+ + + diff --git a/src/docs/commands/SoundSetWaveVolume.htm b/src/docs/commands/SoundSetWaveVolume.htm new file mode 100644 index 0000000..9a25baa --- /dev/null +++ b/src/docs/commands/SoundSetWaveVolume.htm @@ -0,0 +1,50 @@ + + + + +SoundSetWaveVolume + + + + + + + +

SoundSetWaveVolume

+ +

»ç¿îµå ÀåÄ¡¿¡ ´ëÇÏ¿© ¿þÀ̺ê Ãâ·Â º¼·ýÀ» º¯°æÇÕ´Ï´Ù.

+ +
SoundSetWaveVolume, Percent [, DeviceNumber]
+

¸Å°³º¯¼ö

+
+ +
Percent
+

ÆÛ¼¾Æ® ¼ýÀÚ´Â ¹üÀ§°¡ -100ºÎÅÍ 100±îÁöÀÔ´Ï´Ù (ºÎµ¿ ¼Ò¼öÁ¡À̳ª Ç¥Çö½ÄÀ» Çã¿ëÇÕ´Ï´Ù). ¼ýÀÚ°¡ Ç÷¯½º ¶Ç´Â ¸¶À̳ʽº »çÀÎÀ¸·Î ½ÃÀÛÇϸé, ÇöÀç º¼·ý ·¹º§ÀÌ Áö½ÃÇÑ ¾ç ¸¸Å­ À§ ¶Ç´Â ¾Æ·¡·Î Á¶ÀýµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, º¼·ýÀº Percent·Î Áö½ÃÇÑ ·¹º§¿¡ ¸í½ÃÀûÀ¸·Î ÁöÁ¤µË´Ï´Ù.

+ +
DeviceNumber
+

ÀÌ ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, ±âº» °ªÀº 1ÀÔ´Ï´Ù (ù ¹ø° »ç¿îµå ÀåÄ¡), ÀÌ ÀåÄ¡´Â º¸Åë ³ìÀ½°ú ¿¬ÁÖ¿¡ »ç¿ëµÇ´Â ½Ã½ºÅÛÀÇ ±âº» ÀåÄ¡ÀÔ´Ï´Ù. 1º¸´Ù Å« °ªÀ» ÁöÁ¤ÇÏ¸é ´Ù¸¥ »ç¿îµå ÀåÄ¡¸¦ ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+
+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖ¾úÀ¸¸é 1ÀÌ ¼³Á¤µÇ°í ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+ÇöÀç ¿þÀ̺ê Ãâ·Â º¼·ý ·¹º§Àº SoundGetWaveVolume¸¦ ÅëÇÏ¿© ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. Master Volume, Synth, Microphone, Mute, Treble, ±×¸®°í Bass¿Í °°Àº ¼³Á¤Àº SoundSet°ú SoundGet¸¦ ÅëÇÏ¿© °¢°¢ ¼³Á¤ÇÏ°í ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Windows Vista ÀÌÈÄ (v1.1.10+): ÀÌ ¸í·É¾î´Â SoundSet¿¡¼­ ComponentTypeÀº Wave·Î ¼³Á¤ÇÏ°í ControlType´Â VolumeÀ¸·Î ¼³Á¤ÇÑ °Í°ú µ¿µîÇÕ´Ï´Ù. µÎ ¸í·É¾î ¸ðµÎ ä³Î »çÀÌÀÇ ±âÁ¸ÀÇ ÆòÇüÀ» À¯ÁöÇÏ·Á°í ³ë·ÂÇÕ´Ï´Ù.

+

+Windows 2000/XP/2003: SoundSet°ú ´Ù¸£°Ô, ÀÌ ¸í·É¾î´Â º¼·ý ·¹º§À» º¯°æÇÒ ¶§ ä³Î »çÀÌÀÇ ±âÁ¸ÀÇ ÆòÇüÀ» À¯ÁöÇÏ·Á°í ³ë·ÂÇÕ´Ï´Ù (¿¹, ¿ÞÂÊ°ú ¿À¸¥ÂÊ).

+ +

°ü·Ã Ç׸ñ

+

SoundGetWaveVolume, SoundSet, SoundGet, SoundPlay

+ +

¿¹Á¦

+
SoundSetWaveVolume, 50  ; º¼·ýÀ» ±×ÀÇ Àý¹ÝÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù.
+SoundSetWaveVolume, -10  ; ÇöÀç ·¹º§À» 10¸¸Å­ ³·Ãä´Ï´Ù (¿¹, 80À̸é 70ÀÌ µË´Ï´Ù).
+SoundSetWaveVolume, +20  ; ÇöÀç ·¹º§À» 20¸¸Å­ ³ôÀÔ´Ï´Ù.
+ + + diff --git a/src/docs/commands/SplashTextOn.htm b/src/docs/commands/SplashTextOn.htm new file mode 100644 index 0000000..5311ff8 --- /dev/null +++ b/src/docs/commands/SplashTextOn.htm @@ -0,0 +1,67 @@ + + + + +SplashTextOn/SplashTextOff + + + + + + + +

SplashTextOn / SplashTextOff

+ +

¸ÂÃã °¡´ÉÇÑ ÅؽºÆ® Æ˾÷ âÀ» »ý¼ºÇÕ´Ï´Ù.

+ +
SplashTextOff
+SplashTextOn [, Width, Height, Title, Text]
+ +

¸Å°³º¯¼ö

+
+ +
Width
+

âÀÇ Çȼ¿ ´ÜÀ§ ³Êºñ. ±âº»°ªÀº 200. ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.

+ +
Height
+

âÀÇ Çȼ¿ ´ÜÀ§ ³ôÀÌ (Á¦¸ñ ¹Ù Á¦¿Ü). ±âº»°ªÀº 0 (Áï, Á¦¸ñ ¹Ù¸¸ º¸¿©ÁÝ´Ï´Ù). ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.

+ +
Title
+

âÀÇ Á¦¸ñ, ±âº» °ªÀº ºñ¾î ÀÖ½À´Ï´Ù.

+ +
Text
+

âÀÇ ÅؽºÆ®, ±âº»°ªÀº ºñ¾î ÀÖ½À´Ï´Ù. Text°¡ ±æ¸é, °è¼Ó ¼½¼ÇÀ» ¼ö´ÜÀ¸·Î ´õ ªÀº ÁÙ·Î °¡¸¦ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é °¡µ¶¼º°ú À¯Áö°ü¸®¼ºÀÌ Çâ»óµË´Ï´Ù.

+ +
+

³íÆò

+

+·¹ÀÌÀÌ¿ô°ú ±Û²Ã À̸§/»ö/Å©±â¿¡ ´ëÇÏ¿© ´õ ¼¶¼¼ÇÏ°Ô ÅëÁ¦ÇÏ·Á¸é, Progress ¸í·É¾î¿¡ zh0 ¿É¼ÇÀ» ÇÔ²² »ç¿ëÇϽʽÿÀ. ±×·¯¸é Á¦¸ñ ¹Ù¸¦ »ý·«ÇÏ°í ÅؽºÆ®¸¸ º¸¿©ÁÝ´Ï´Ù. +¿¹¸¦ µé¾î: Progress, zh0 fs18, º¸¿© ÁÙ 18-Æ÷ÀÎÆ® ÅؽºÆ® ¾à°£.

+

+SplashTextOff ¸í·É¾î¸¦ »ç¿ëÇÏ¸é ±âÁ¸ÀÇ ½ºÇ÷¡½Ã âÀ» Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+½ºÇ÷¡½Ã âÀº "¾ðÁ¦³ª À§¿¡"ÀÖ½À´Ï´Ù. Áï, ´Ù¸¥ ¸ðµç Á¤»ó ⺸´Ù À§¿¡ ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù. À̸¦ ¹Ù²Ù·Á¸é WinSet, AlwaysOnTop, Off, <½ºÇ÷¡½Ã âÀÇ Á¦¸ñÀ» »ðÀÔÇϽʽÿÀ>¸¦ »ç¿ëÇϽʽÿÀ. WinSetÀº ¶Ç ½ºÇ÷¡½Ã âÀ» Åõ¸íÇÏ°Ô ¸¸µé ¼öµµ ÀÖ½À´Ï´Ù.

+

+WinMove¸¦ »ç¿ëÇϸé ÀÌ ¸í·É¾î·Î È­¸é¿¡ º¸¿©ÁØ ÈÄ¿¡ SplashText âÀÇ À§Ä¡¿Í Å©±â¸¦ Á¶ÀýÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Progress, SplashImage, MsgBox, InputBox, FileSelectFile, ±×¸®°í FileSelectFolder¿Í ´Ù¸£°Ô, ½ºÅ©¸³Æ®´ç ¿ÀÁ÷ ÇϳªÀÇ SplashText ⸸ °¡´ÉÇÕ´Ï´Ù.

+

+½ºÇ÷¡½Ã âÀÌ ÀÌ¹Ì È­¸é¿¡ º¸ÀÌ´Â µ¿¾È¿¡ SplashTextOnÀÌ »ç¿ëµÇ¸é, ±× âÀº »õ ¸Å°³º¯¼ö °ªÀ» °¡Áö°í ´Ù½Ã »ý¼ºµË´Ï´Ù. ±×·¸Áö¸¸, Á¦¸ñ ¹Ù³ª ÅؽºÆ®¸¦ º¯°æÇÒ ¶§¸¶´Ù ½ºÇ÷¡½Ã âÀ» ´Ù½Ã »ý¼ºÇϱ⠺¸´Ù, ´ÙÀ½°ú °°ÀÌ ÇÏ¸é ´õ ¼öÇ༺´ÉÀÌ ÁÁ½À´Ï´Ù. ƯÈ÷ âÀÌ ÀÚÁÖ ¹Ù²ð ÇÊ¿ä°¡ ÀÖ´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇϽʽÿÀ:

+ +
WinSetTitle, <½ºÇ÷¡½Ã âÀÇ Á¦¸ñÀ» »ðÀÔÇϽʽÿÀ>, , NewTitle
+ControlSetText, Static1, NewText, <½ºÇ÷¡½Ã âÀÇ Á¦¸ñÀ» ÀÔ·ÂÇϽʽÿÀ>
+ +

°ü·Ã Ç׸ñ

+

+Progress, SplashImage, ToolTip, MsgBox, InputBox, FileSelectFile, FileSelectFolder, WinMove, WinSet

+ +

¿¹Á¦

+
SplashTextOn, , , Á¦¸ñ ¹Ù¸¦ º¸¿©ÁÝ´Ï´Ù.
+Sleep, 2000
+SplashTextOn, 400, 300, Clipboard, Ŭ¸³º¸µå¿¡ ´ÙÀ½ÀÌ ´ã°Ü ÀÖ½À´Ï´Ù:`n%clipboard%
+WinMove, Clipboard, , 0, 0  ; ½ºÇ÷¡½Ã âÀ» Á»ó ¸ð¼­¸®·Î À̵¿½Ãŵ´Ï´Ù.
+Msgbox, ½ºÇ÷¡½Ã ÅؽºÆ®¸¦ Ãë¼ÒÇÏ·Á¸é OK¸¦ ´©¸¨´Ï´Ù.
+SplashTextOff
+ + + diff --git a/src/docs/commands/SplitPath.htm b/src/docs/commands/SplitPath.htm new file mode 100644 index 0000000..556e814 --- /dev/null +++ b/src/docs/commands/SplitPath.htm @@ -0,0 +1,80 @@ + + + + +SplitPath + + + + + + + +

SplitPath

+ +

ÆÄÀÏÀ̸§À̳ª URLÀ» ±×ÀÇ À̸§, µð·ºÅ丮, È®ÀåÀÚ ±×¸®°í µå¶óÀ̺ê·Î ºÐÇØÇÕ´Ï´Ù.

+ +
SplitPath, InputVar [, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive]
+

¸Å°³º¯¼ö

+
+ +
InputVar
+
+

ºÐ¼®ÇÒ ÆÄÀÏÀ̸§À» ´ã°í ÀÖ´Â º¯¼öÀÇ À̸§.

+

[v1.1.21+]: ÀÌ ¸Å°³º¯¼ö´Â % Ç¥Çö½ÄÀÏ ¼ö ÀÖÁö¸¸, ÆÛ¼¾Æ®-½ºÆäÀ̽º¸¦ ¹Ýµå½Ã ¾Õ¿¡ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

+
+ +
OutFileName
+

°æ·Î ¾øÀÌ ÆÄÀÏ À̸§À» ÀúÀåÇÒ º¯¼öÀÇ À̸§. ÆÄÀÏÀÇ È®ÀåÀÚ´Â Æ÷ÇԵ˴ϴÙ.

+ +
OutDir
+

ÆÄÀÏÀÇ µð·ºÅ丮¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§, µå¶óÀÌºê ±âÈ£¿Í (Á¸ÀçÇϸé) °øÀ¯ À̸§À» Æ÷ÇÔÇÕ´Ï´Ù. ÆÄÀÏÀÌ µå¶óÀ̺êÀÇ ·çÆ® µð·ºÅ丮¿¡ ÀÖ´Ù¸é ¸¶Áö¸·ÀÇ ¿ª»ç¼±Àº Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.

+ +
OutExtension
+

ÆÄÀÏÀÇ È®ÀåÀÚ¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§ (¿¹, TXT, DOC, ¶Ç´Â EXE). Á¡Àº Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.

+ +
OutNameNoExt
+

°æ·Î, Á¡, ±×¸®°í È®ÀåÀÚ ¾øÀÌ ÆÄÀÏ À̸§À» ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
OutDrive
+

ÆÄÀÏÀÇ µå¶óÀÌºê ±âÈ£ ¶Ç´Â ¼­¹ö À̸§À» ÀúÀåÇÒ º¯¼öÀÇ À̸§. ÆÄÀÏÀÌ ·ÎÄà ¶Ç´Â ¸Ê µå¶óÀ̺꿡 ÀÖ´Ù¸é, º¯¼ö´Â µå¶óÀÌºê ±âÈ£¿Í ´Ù¸§ ½ÖÁ¡ (¿ª»ç¼± ¾øÀ½)ÀÌ ¼³Á¤µË´Ï´Ù. ÆÄÀÏÀÌ ³×Æ®¿öÅ© °æ·Î¿¡ ÀÖ´Ù¸é (UNC), º¯¼ö´Â °øÀ¯ À̸§ÀÌ ¼³Á¤µË´Ï´Ù. ¿¹, \\Workstation01

+ +
+ +

³íÆò

+

+»óÀÀÇÏ´Â Á¤º¸°¡ ÇÊ¿äÇÏÁö ¾Ê´Ù¸é Ãâ·Â º¯¼ö¸¦ »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+InputVar¿¡ ÆÄÀÏÀ̸§ÀÌ µé¾î Àִµ¥ µå¶óÀÌºê ±âÈ£°¡ ¾ø´Ù¸ç (Áï, °æ·Î°¡ ¾ø°Å³ª ´Ü¼øÈ÷ »ó´ë °æ·Î¸¸ ÀÖ´Ù¸é), OutDrive´Â ºñ¿öÁöÁö¸¸ ´Ù¸¥ ¸ðµç Ãâ·Â º¯¼ö´Â ¿Ã¹Ù¸£°Ô ¼³Á¤µË´Ï´Ù. ºñ½ÁÇÏ°Ô, °æ·Î°¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, OutDirÀº ºñ¿öÁý´Ï´Ù; ±×¸®°í °æ·Î´Â ÀÖÀ¸³ª ÆÄÀÏÀ̸§ÀÌ ¾øÀ¸¸é, OutFileName°ú OutNameNoExt°¡ ºñ¿öÁý´Ï´Ù.

+

+½Ã½ºÅÛ¿¡¼­ ½ÇÁ¦ ÆÄÀÏ°ú µð·ºÅ丮´Â ÀÌ ¸í·É¾î·Î Á¡°ËµÇÁö ¾Ê½À´Ï´Ù. ±×³É InputVar¿¡ ÁÖ¾îÁø ¹®ÀÚ¿­À» ºÐ¼®ÇÒ »ÓÀÔ´Ï´Ù.

+

+ÆÄÀÏÀ̸§¿¡ À¯È¿ÇÏÁö ¾ÊÀº ¿ÍÀϵåÄ«µå (* ±×¸®°í ?) ±×¸®°í ±âŸ ¹®ÀÚ´Â À¯È¿ÇÑ ¹®ÀÚ·Î Ãë±ÞÇÕ´Ï´Ù. ´Ü, ¿¹¿Ü´Â ½ÖÁ¡, ¿ª»ç¼±, ±×¸®°í Á¡ÀÔ´Ï´Ù. À̰͵éÀº °¢ÀÚ ÀÓ¹«¿¡ µû¶ó ÆÄÀÏÀÇ µå¶óÀÌºê ±âÈ£¿Í µð·ºÅ丮 ±×¸®°í È®ÀåÀÚ¸¦ ±¸ºÐÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.

+

+URL Áö¿ø: InputVar¿¡ ½ÖÁ¡°ú µÎ°³ÀÇ Á¤»ç¼±ÀÌ Æ÷ÇԵǾî ÀÖ´Ù¸é, ¿¹¸¦ µé¾î http://domain.com or ftp://domain.com¿Í °°Àº °æ¿ì, OutDir´Â ÇÁ·ÎÅäÄÝ Á¢µÎ¾î + µµ¸ÞÀÎ À̸§ + µð·ºÅ丮 (¿¹, http://domain.com/images)°¡ ¼³Á¤µË´Ï´Ù. ±×¸®°í OutDrive´Â ÇÁ·ÎÅäÄÝ Á¢µÎ¾î + µµ¸ÞÀÎ À̸§ (¿¹, http://domain.com)ÀÌ ¼³Á¤µË´Ï´Ù. ´Ù¸¥ ¸ðµç º¯¼ö´Â À§¿¡ Á¤ÀÇµÈ ´ë·Î ¼³Á¤µË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+A_LoopFileExt, StringSplit, StringGetPos, StringMid, StringTrimLeft, StringLeft, FileSelectFile, FileSelectFolder

+ +

¿¹Á¦

+
FullFileName = C:\My Documents\Address List.txt
+   
+; À§·ÎºÎÅÍ ÆÄÀÏÀ̸§¸¸ °¡Á® ¿É´Ï´Ù:
+SplitPath, FullFileName, name
+
+; µð·ºÅ丮¸¸ °¡Á® ¿É´Ï´Ù:
+SplitPath, FullFileName,, dir
+
+; ¸ðµç Á¤º¸¸¦ °¡Á® ¿É´Ï´Ù:
+SplitPath, FullFileName, name, dir, ext, name_no_ext, drive
+   
+; À§·ÎºÎÅÍ º¯¼öµéÀº ´ÙÀ½°ú °°ÀÌ ¼³Á¤µË´Ï´Ù:
+; name = Address List.txt
+; dir = C:\My Documents
+; ext = txt
+; name_no_ext = Address List
+; drive = C:
+ + + diff --git a/src/docs/commands/StatusBarGetText.htm b/src/docs/commands/StatusBarGetText.htm new file mode 100644 index 0000000..0175246 --- /dev/null +++ b/src/docs/commands/StatusBarGetText.htm @@ -0,0 +1,62 @@ + + + + +StatusbarGetText + + + + + + + +

StatusBarGetText

+ +

Ç¥ÁØ »óÅ ¹Ù ÄÜÆ®·ÑÀ¸·ÎºÎÅÍ ÅؽºÆ®¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+ +
StatusBarGetText, OutputVar [, Part#, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

¿­¶÷µÈ ÅؽºÆ®¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
Part#
+

¹Ù¿¡¼­ ¿­¶÷ÇÒ ºÎºÐÀÇ ¹øÈ£, Ç¥Çö½Ä °¡´É. ±âº»°ªÀº 1ÀÌ¸ç º¸Åë °ü½ÉÀÇ ÅؽºÆ®¸¦ ´ã°í ÀÖ´Â ºÎºÐÀÔ´Ï´Ù.

+ +
WinTitle
+

âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖ¾î¾ß(ON) ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1 ¾øÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù. ¹®Á¦°¡ ÀÖ¾úÀ¸¸é OutputVarµµ ºñ¿öÁý´Ï´Ù.

+ +

³íÆò

+

+ÀÌ ¸í·É¾î´Â â¿¡¼­ ù ¹ø° Ç¥ÁØ »óÅ ¹Ù¸¦ ÀÐÀ¸·Á°í ½ÃµµÇÕ´Ï´Ù (Microsoft °øÅë ÄÜÆ®·Ñ: msctls_statusbar32). ¾î¶² ÇÁ·Î±×·¥Àº ÀڽŸ¸ÀÇ »óÅ ¹Ù¸¦ »ç¿ëÇϱ⵵ ÇÏ°í Ưº°ÇÑ ¹öÀüÀÇ MS °øÅë ÄÜÆ®·ÑÀ» »ç¿ëÇÕ´Ï´Ù. ÀÌ °æ¿ì ÅؽºÆ®¸¦ ¿­¶÷ÇÒ ¼ö ¾ø½À´Ï´Ù.

+

+ÀÌ ¸í·É¾î¸¦ ȸµ¹ÀÌ ¾È¿¡ »ç¿ëÇϱ⠺¸´Ù, º¸Åë StatusBarWait¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ´õ È¿À²ÀûÀÔ´Ï´Ù. ÀÌ ¸í·É¾î´Â ¹Ýº¹ÀûÀ¸·Î StatusBarGetText¸¦ È£ÃâÇÏ´Â ºÎ´ãÀ» ÇÇÇϵµ·Ï ÃÖÀûÈ­ µÇ¾î ÀÖ½À´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¿¡ ¹Î°¨ÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindowsÀÌ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ/h3> +

+StatusBarWait, WinGetTitle, WinGetText, ControlGetText

+ +

¿¹Á¦

+
StatusBarGetText, RetrievedText, 1, Search Results
+IfInString, RetrievedText, found, MsgBox, °Ë»ö °á°ú°¡ ¹ß°ßµÇ¾ú½À´Ï´Ù.
+ + + diff --git a/src/docs/commands/StatusBarWait.htm b/src/docs/commands/StatusBarWait.htm new file mode 100644 index 0000000..18dcdaa --- /dev/null +++ b/src/docs/commands/StatusBarWait.htm @@ -0,0 +1,93 @@ + + + + +StatusBarWait + + + + + + + +

StatusBarWait

+ +

âÀÇ »óÅ ¹Ù¿¡ ÁöÁ¤µÈ ¹®ÀÚ¿­ÀÌ ´ã±æ ¶§±îÁö ±â´Ù¸³´Ï´Ù.

+ +
StatusBarWait [, BarText, Seconds, Part#, WinTitle, WinText, Interval, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
BarText
+

¸í·É¾î°¡ ±â´Ù¸®´Â ÅؽºÆ® ¶Ç´Â ºÎºÐÀû ÅؽºÆ®. ±âº»°ªÀº ºñ¾î ÀÖ½À´Ï´Ù. Áï, »óÅ ¹Ù°¡ ºñ±â¸¦ ±â´Ù¸°´Ù´Â ¶æÀÔ´Ï´Ù. ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏ°í ºÎÇÕ ÇàÀ§´Â SetTitleMatchModeÀÇÇØ °áÁ¤µË´Ï´Ù. ¾Æ·¡ÀÇ WinTitle°ú ºñ½ÁÇÕ´Ï´Ù.

+

+ ´ë½Å¿¡ »óÅ ¹ÙÀÇ ÅؽºÆ®°¡ º¯Çϱ⸦ ±â´Ù¸°´Ù¸é, StatusBarGetText¸¦ ȸµ¹ÀÌ ¾È¿¡ »ç¿ëÇϰųª, ÀÌ ÆäÀÌÁö ÇÏ´Ü¿¡ ÀÖ´Â RegEx ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À.

+ +
Seconds
+

½Ã°£ Á¦ÇÑÀ» ¼±¾ðÇϱâ Àü¿¡ ±â´Ù¸± ÃÊÀÇ °³¼ö (¼Ò¼ö Á¡À» Æ÷ÇÔÇÒ ¼ö ÀÖ°í Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù). ½Ã°£ Á¦ÇÑ¿¡ °É¸± °æ¿ì ErrorLevelÀº 1ÀÌ ¼³Á¤µË´Ï´Ù. ±âº» °ªÀº ºñ¾î ÀÖ½À´Ï´Ù. Áï, ¹«ÇÑÁ¤ ±â´Ù¸°´Ù´Â ¶æÀÔ´Ï´Ù. 0À» ÁöÁ¤Çϸé 0.5¸¦ ÁöÁ¤ÇÑ °Í°ú °°½À´Ï´Ù.

+ +
Part#
+

»óÅ ¹Ù¿¡¼­ ¿­¶÷ÇÒ ºÎºÐÀÇ ¹øÈ£. Ç¥Çö½Ä °¡´É. ±âº»°ªÀº 1ÀÌ¸ç º¸Åë °ü½ÉÀÇ ÅؽºÆ®°¡ Æ÷ÇÔµÈ ºÎºÐÀÔ´Ï´Ù.

+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¹Ýµå½Ã ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenTextÀÌ °ÜÁ®(ON) ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +
Interval
+

ÀÌ ¸í·É¾î°¡ ½ÇÇà ÁßÀÎ µ¿¾È¿¡ ¾ó¸¶³ª ÀÚÁÖ »óÅ ¹Ù¸¦ Á¡°ËÇÒ °ÍÀΰ¡ (¹Ð¸®ÃÊ ´ÜÀ§), ÀÌ °ªÀº Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù. ±âº» °ªÀº 50ÀÔ´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

+ +
+ +

ErrorLevel

+

[v1.1.04+] ÀÌ ¸í·É¾î´Â »óŹٿ¡ Á¢±ÙÇÏÁö ¸ø ÇßÀ¸¸é ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ErrorLevelÀº »óÅ ¹Ù¿¡¼­ ºÎÇÕÀ» ¹ß°ßÇϱâ Àü¿¡ ½Ã°£ Á¦ÇÑ¿¡ °É¸®¸é 1ÀÌ ¼³Á¤µË´Ï´Ù. »óÅ ¹Ù¿¡ Á¢±ÙÇÏÁö ¸ø ÇßÀ¸¸é 2°¡ ¼³Á¤µË´Ï´Ù. ºÎÇÕÀ» ¹ß°ßÇϸé 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+StatusBarWaitÀº âÀÇ Ã¹ ¹ø° Ç¥ÁØ »óÅ ¹Ù¸¦ ÀÐÀ¸·Á°í ½ÃµµÇÕ´Ï´Ù (class msctls_statusbar32). ¾î¶² ÇÁ·Î±×·¥Àº ÀڽŠ¸¸ÀÇ »óŹٰ¡ ÀÖ°í Ưº°ÇÑ ¹öÀüÀÇ MS °øÅë ÄÜÆ®·ÑÀ» °¡Áý´Ï´Ù. ±×·± °æ¿ì »óŹٸ¦ ¿­¶÷ÇÒ ¼ö ¾ø½À´Ï´Ù.

+

+ȸµ¹ÀÌ ¾È¿¡ StatusBarGetText¸¦ »ç¿ëÇÏ´Â °Íº¸´Ù, º¸Åë StatusBarWait¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ´õ È¿À²ÀûÀÔ´Ï´Ù. ¿Ö³ÄÇϸé StatusBarGetText¸¦ ¹Ýº¹ÀûÀ¸·Î È£ÃâÇϸé ÀϾ ºÎ´ãÀ» ÇÇÇϵµ·Ï ÃÖÀûÈ­µÇ¾î Àֱ⠶§¹®ÀÔ´Ï´Ù.

+

+StatusBarWait´Â ±×ÀÇ ¸ñÇ¥ âÀ» °áÁ¤ÇÑ ´ÙÀ½ ºÎÇÕÇϱ⸦ ±â´Ù¸³´Ï´Ù. ±× ¸ñÇ¥ âÀÌ ´ÝÈ÷¸é, StatusBarWait´Â ÁöÁ¤µÈ WinTitle°ú WinText·Î ¶Ç´Ù¸¥ âÀÌ ºÎÇÕÇÏ´õ¶óµµ ±â´Ù¸®±â¸¦ ¸ØÃä´Ï´Ù.

+

+ÀÌ ¸í·É¾î°¡ ´ë±â »óÅ¿¡ ÀÖ´Â µ¿¾È, »õ·Î¿î ¾²·¹µå¸¦ ±âµ¿ÇÒ ¼ö ÀÖ½À´Ï´Ù ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀ̸Ó.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

StatusBarGetText, WinGetTitle, WinGetText, ControlGetText

+ +

¿¹Á¦

+ +
; ´ÙÀ½ ¿¹Á¦´Â »õ·Î¿î °Ë»ö ÆÐÅÏÀ» ±âÁ¸ÀÇ Explorer/Search â¿¡ »ðÀÔÇÕ´Ï´Ù.
+IfWinExist, Search Results ; ¸¶Áö¸· ¹ß°ß âÀ» ¼³Á¤ÇÏ¿© ¾Æ·¡¸¦ °£´ÜÇÏ°Ô ¸¸µì´Ï´Ù.
+{
+    WinActivate
+    Send, {tab 2}!o*.txt{enter}  ; °Ë»ö â¿¡, °Ë»öÇÒ ÆÐÅÏÀ» ÀÔ·ÂÇÕ´Ï´Ù.
+    Sleep, 400  ; »óÅ ¹Ù¿¡ "Searching"À¸·Î ¹Ù²Ü ½Ã°£À» ÁÝ´Ï´Ù.
+    StatusBarWait, found, 30
+    if ErrorLevel
+        MsgBox, ¸í·É¾î°¡ ½Ã°£ Á¦ÇÑ¿¡ °É·È°Å³ª ¹®Á¦°¡ ÀÖ¾ú½À´Ï´Ù.
+    else
+        MsgBox, °Ë»öÀÌ ¼º°øÀûÀ¸·Î ¿Ï·á µÇ¾ú½À´Ï´Ù.
+}
+

 

+
; ´ÙÀ½ ¿¹Á¦´Â È°¼º âÀÇ »óŹٰ¡ ¹Ù²î±â¸¦ ±â´Ù¸³´Ï´Ù. ÀÌ ¿¹Á¦´Â v1.0.46.06+À» ¿ä±¸ÇÕ´Ï´Ù.
+SetTitleMatchMode RegEx
+IfWinExist A  ; ¸¶Áö¸· ¹ß°ß â¿¡ È°¼º âÀ» ¼³Á¤ÇÕ´Ï´Ù (¾Æ·¡¿¡ »ç¿ë).
+{
+   StatusBarGetText, OrigText
+   StatusBarWait, ^(?!^\Q%OrigText%\E$)  ; ÀÌ Á¤±Ô Ç¥Çö½ÄÀº ÅؽºÆ®¿¡ ¹«¾ùÀÌµç º¯È­°¡ Àֱ⸦ ±â´Ù¸³´Ï´Ù.
+}
+ + + diff --git a/src/docs/commands/StrPutGet.htm b/src/docs/commands/StrPutGet.htm new file mode 100644 index 0000000..89ab05a --- /dev/null +++ b/src/docs/commands/StrPutGet.htm @@ -0,0 +1,73 @@ + + + + +StrPut / StrGet + + + + + + + +

StrPut() / StrGet() [AHK_L 46+]

+ +

¹®ÀÚ¿­À» ¸Þ¸ð¸® ÁÖ¼Ò¿¡ ¶Ç´Â ¸Þ¸ð¸® ÁּҷκÎÅÍ º¹»çÇÕ´Ï´Ù. ¼±ÅÃÀûÀ¸·Î ÁÖ¾îÁø ÄÚµå ÆäÀÌÁö »çÀÌ¿¡ º¯È¯ÇÕ´Ï´Ù.

+ +
StrPut(String [, Encoding = None ] )
+StrPut(String, Address [, Length] [, Encoding = None ] )
+StrGet(Address [, Length] [, Encoding = None ] )
+

¸Å°³º¯¼ö

+
+ +
String
+

¹®ÀÚ¿­, ¼ýÀÚµµ ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù.

+ +
Address
+

¹®ÀÚ¿­À» Àаí/¾µ ÁÖ¼Ò.

+ +
Length
+

Àаí/¾µ ¹®ÀÚÀÇ ÃÖ´ë °³¼ö, ÇÊ¿äÇÏ¸é ³Î-Á¾·á ¹®ÀÚ Æ÷ÇÔ. ¹Ýȯ °ªÀ» ÂüÁ¶ÇϽʿÀ.

+ +
Encoding
+

StrGet¿¡ ´ëÇÑ ¼Ò½º ÀÎÄÚµù ¶Ç´Â StrPut¿¡ ´ëÇÑ Å¸°Ù ÀÎÄÚµù; ¿¹¸¦ µé¾î, "UTF-8", "UTF-16" or "CP936". Address¿Í Length¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, ¼ýÄ¡ ½Äº°ÀÚ ¾Õ¿¡ "CP"¸¦ ºÙ¿©¾ß ÇÏ´Ï´Ù. ºó ¹®ÀÚ¿­À̳ª "CP0"À» ÁöÁ¤ÇÏ¸é ½Ã½ºÅÛ ±âº» ANSI ÄÚµå ÆäÀÌÁö¸¦ »ç¿ëÇÕ´Ï´Ù.

+ +
+ +

¹Ýȯ °ª

+

+°¢ ÇÔ¼ö¿¡ ´ëÇÏ¿©, ¹«È¿ÇÑ ¸Å°³º¯¼ö´Â ºó ¹®ÀÚ¿­À» µ¹·ÁÁÝ´Ï´Ù.

+

+StrPutÀº ¾º¿©Áø ¹®ÀÚÀÇ °³¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. Address°¡ ÁÖ¾îÁöÁö ¾ÊÀ¸¸é ¹®ÀÚ´ÜÀ§·Î ÇÊ¿äÇÑ ¹öÆÛ Å©±â¸¦ µ¹·ÁÁÖ°í ¿¡·¯°¡ ÀϾ¸é 0À» µ¹·ÁÁÝ´Ï´Ù. Length°¡ ¼Ò½º ¹®ÀÚ¿­ÀÌ ±æÀ̺¸´Ù ÀÛÀ¸¸é, ÇÔ¼ö´Â ½ÇÆÐÇÏ°í 0À» µ¹·ÁÁÝ´Ï´Ù. Length°¡ Á¤È®ÇÏ°Ô ¼Ò½º ¹®ÀÚ¿­ÀÇ ±æÀÌÀ̸é, ¹®ÀÚ¿­Àº ³Î-¹®ÀÚ·Î Á¾·áÇÏÁö ¾Ê½À´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é ¹ÝȯµÈ °³¼ö´Â ³Î ¹®ÀÚ¸¦ Æ÷ÇÔÇÕ´Ï´Ù.

+

+StrGetÀº ÇÊ¿äÇÑ º¯È¯À» ¼öÇàÇÑ ÈÄ ¿äûµÈ ¹®ÀÚ¿­À» ±æÀ̸¦ µ¹·ÁÁÝ´Ï´Ù.

+ +

³íÆò

+

StrPutÀÇ String ¸Å°³º¯¼ö¿Í StrGetÀÇ ¹Ýȯ°ªÀº ¾ðÁ¦³ª ÇöÀç ½ÇÇà ÆÄÀÏÀÇ °íÀ¯ ÀÎÄÚµùÀ» µû¸¨´Ï´Ù. ¹Ý¸é¿¡ EncodingÀº ÁÖ¾îÁø Address¿¡ ÀÐ°í ¾µ ¹®ÀÚ¿­ÀÇ ÀÎÄÚµùÀ» ÁöÁ¤ÇÕ´Ï´Ù. EncodingÀ» ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, ±× ¹®ÀÚ¿­Àº ±×³É ¾Æ¹« º¯È¯µµ ÀϾÁö ¾Ê°í ±×´ë·Î º¹»çµÇ°Å³ª ÃøÁ¤µË´Ï´Ù.

+

+ÄÚµå ÆäÀÌÁö »çÀÌÀÇ º¯È¯ÀÌ ÇÊ¿äÇϸé, ÇÊ¿äÇÑ ¹öÆÛ Å©±â´Â ¼Ò½º StringÀÇ Å©±â¿¡ µû¶ó ´Þ¶óÁú ¼ö ÀÖ½À´Ï´Ù.

+

½ºÅ©¸³Æ®°¡ AutoHotkey Basic°úÀÇ È£È¯À» ÇÊ¿ä·Î ÇÏ¸é ¿©ÀüÈ÷ StrPut°ú StrGetÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ü ÀûÀýÇÑ ½ºÅ©¸³Æ® ÆÄÀϵéÀÌ ÇÔ¼ö ¶óÀ̺귯¸®¿¡ ¼³Ä¡µÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ·± ½ºÅ©¸³Æ®µéÀº ¿ÀÅäÇÖÅ° °øµ¿Ã¼ Æ÷·³¿¡¼­ ¹ß°ßÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

½ºÅ©¸³Æ® ȣȯ¼º, FileEncoding, VarSetCapacity()

+ +

¿¹Á¦

+

Length³ª EncodingÀ» Address ´ÙÀ½¿¡ Á÷Á¢ÀûÀ¸·Î ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ±×·± °æ¿ì EncodingÀº Àý´ë·Î ¼ýÄ¡ÇüÀÌ µÇ¸é ¾ÈµË´Ï´Ù:

+
strA := StrGet(addressA, "cp0")     ; OK
+strA := StrGet(addressA, length, 0) ; OK
+strA := StrGet(addressA, 0)         ; Error
+ +

+StrPutÀº ƯÁ¤ÇÑ ÀÎÄÚµùÀ¸·Î ¹®ÀÚ¿­¿¡ ´ëÇÏ¿© ÇÊ¿äÇÑ ¹öÆÛ Å©±â¸¦ °è»êÇϱâ À§ÇÏ¿© ÇÑ ¹ø È£ÃâÀÌ °¡´ÉÇÕ´Ï´Ù. ´ÙÀ½, ±× ¹®ÀÚ¿­À» ÀÎÄÚµåÇؼ­ ¹öÆÛ ¾ÈÀ¸·Î ½á ³ÖÀ» ¼ö ÀÖ½À´Ï´Ù. ÀÚÁÖ º¯¼ö¸¦ StrPut°ú ÇÔ²² »ç¿ëÇÑ´Ù¸é, ´ÙÀ½°ú °°Àº ÇÔ¼ö¸¦ ¿©·¯ºÐÀÇ ¶óÀ̺귯¸®¿¡ ³Ö¾î º¸½Ê½Ã¿À:

+
StrPutVar(string, ByRef var, encoding)
+{
+    ; °¡¿ë´É·ÂÀ» È®ÀÎÇÕ´Ï´Ù.
+    VarSetCapacity( var, StrPut(string, encoding)
+        ; StrPutÀº ¹®ÀÚ °³¼ö¸¦ µ¹·ÁÁÖÁö¸¸, VarSetCapacity´Â ¹ÙÀÌÆ®¸¦ ÇÊ¿ä·Î ÇÕ´Ï´Ù.
+        * ((encoding="utf-16"||encoding="cp1200") ? 2 : 1) )
+    ; ±× ¹®ÀÚ¿­À» º¹»çÇϰųª º¯È¯ÇÕ´Ï´Ù.
+    return StrPut(string, &var, encoding)
+}
+ + + diff --git a/src/docs/commands/StringCaseSense.htm b/src/docs/commands/StringCaseSense.htm new file mode 100644 index 0000000..6bb41a4 --- /dev/null +++ b/src/docs/commands/StringCaseSense.htm @@ -0,0 +1,50 @@ + + + + +StringCaseSense + + + + + + + +

StringCaseSense

+ +

¹®ÀÚ¿­ ºñ±³°¡ ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÒÁö ¸»Áö °áÁ¤ÇÕ´Ï´Ù (±âº» °ªÀº "´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê½À´Ï´Ù").

+ +
StringCaseSense, On|Off|Locale
+

¸Å°³º¯¼ö

+
+ +
On|Off|Locale
+

On: ¹®ÀÚ¿­ ºñ±³´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ÀÌ ¼³Á¤Àº ¶ÇÇÑ Ç¥Çö½Ä µîÈ£ »çÀÎ ¿¬»êÀÚ (=) ±×¸®°í InStr()ÀÇ ´ë¼Ò¹®ÀÚ ºñ ±¸ºÐ ¸ðµå¸¦ ¾Æ·¡¿¡ ±â¼úµÈ ·ÎÄÉÀÏ ¹æ¹ýÀ» »ç¿ëÇϵµ·Ï ¸¸µì´Ï´Ù.

+

Off (±âº»°ªÀ¸·Î ½ÃÀÛ): ±âÈ£ A-Z´Â ¼Ò¹®ÀÚ·Î °£ÁÖÇÕ´Ï´Ù. ÀÌ°ÍÀº ÇÏÀ§ ȣȯ°ú ¼öÇ༺´ÉÀÇ ¹®Á¦ ¶§¹®¿¡ ¸ðµç ½ºÅ©¸³Æ®¸¦ ½ÃÀÛÇÒ ¶§ ±âº»°ªÀÔ´Ï´Ù (LocaleÀº ºñ±³µÇ´Â ¹®ÀÚ¿­ÀÇ ¼ºÁú¿¡ µû¶ó Off ¶§º¸´Ù 1¿¡¼­ 8¹è±îÁö ´À¸³´Ï´Ù).

+

Locale [v1.0.43.03+]: ¹®ÀÚ¿­ ºñ±³´Â ÇöÀç »ç¿ëÀÚÀÇ ·ÎÄÉÀÏ¿¡ µû¶ó ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐ ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ´ëºÎºÐÀÇ ¿µ¾î¿Í ¼­±¸ À¯·´ ·ÎÄÉÀÏÀº ±âÈ£ A-Z¸¦ ¼Ò¹®ÀÚ·Î Ãë±ÞÇÒ »Ó¸¸ ¾Æ´Ï¶ó Ä and Ü¿Í °°Àº ANSI ±âÈ£µµ ¼Ò¹®ÀÚ·Î Ãë±ÞÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

ÀÌ ¼³Á¤Àº ´ÙÀ½¿¡ Àû¿ëµË´Ï´Ù:

+ +

+³»Àå º¯¼ö A_StringCaseSense´Â ÇöÀç ¼³Á¤ÀÌ ´ã±é´Ï´Ù (´Ü¾î On, Off, ¶Ç´Â Locale).

+

+»õ·Î ±âµ¿µÇ´Â ¾²·¹µå´Â ¸ðµÎ (¿¹¸¦ µé¾î ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀÌ¸Ó ¼­ºê·çƾ) ÀÌ ¸í·É¾î¿¡ ´ëÇÑ ±âº» ¼³Á¤À» °¡Áö°í »õ·Ó°Ô ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ±âº»°ªÀº ÀÚµ¿-½ÇÇà ¼½¼Ç (½ºÅ©¸³Æ®ÀÇ »ó´Ü)¿¡¼­ ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ¸é º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+IfEqual, IfInString, if var between, StringReplace, StringGetPos

+ +

¿¹Á¦

+
StringCaseSense Locale
+ + + diff --git a/src/docs/commands/StringGetPos.htm b/src/docs/commands/StringGetPos.htm new file mode 100644 index 0000000..3fe9854 --- /dev/null +++ b/src/docs/commands/StringGetPos.htm @@ -0,0 +1,95 @@ + + + + +StringGetPos + + + + + + + +

StringGetPos

+ +

¹®ÀÚ¿­ ¾È¿¡¼­ ÁöÁ¤µÈ ºÎ¹®ÀÚ¿­ÀÇ À§Ä¡¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+ +
StringGetPos, OutputVar, InputVar, SearchText [, L#|R#, Offset]
+Position := InStr(Haystack, Needle [, CaseSensitive?, StartingPos]) ; ÀÚ¼¼ÇÑ °ÍÀº InStr() ÇÔ¼ö ÂüÁ¶.
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

¿­¶÷µÈ À§Ä¡¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§. InputVarÀÇ Ã¹ ¹®ÀÚ¿¡ »ó´ëÀûÀÔ´Ï´Ù. À§Ä¡°¡ 0À̸é StringGetPos¿¡ ´ëÇÏ¿© ù ¹®ÀÚÀÌ°í À§Ä¡°¡ 1À̸é InStr()¿¡ ´ëÇÏ¿© ù ¹®ÀÚÀÔ´Ï´Ù.

+ +
InputVar
+

+ ³»¿ëÀÌ °Ë»öµÉ ÀÔ·Â º¯¼öÀÇ À̸§. À̸§À» ÆÛ¼¾Æ® »çÀÎÀ¸·Î µÑ·¯ ½ÎÁö ¸¶½Ê½Ã¿À. ´Ü, º¯¼öÀÇ ³»¿ëÀÌ À̸§À̱⸦ ¹Ù¶ó´Â °æ¿ì¶ó¸é ¿¹¿ÜÀÔ´Ï´Ù.

+ +
SearchText
+

°Ë»öÇÒ ¹®ÀÚ¿­, ºÎÇÕÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê½À´Ï´Ù. ´Ü, StringCaseSense°¡ ÄÑÁ® ÀÖ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+ +
L#|R#
+

ÀÌ ¸Å°³º¯¼ö´Â InputVar ¾È¿¡¼­ SearchText°¡ ¿©·¯ ¹ø ÃâÇöÇÏ¸é ¸î ¹ø° ºÎÇÕÀ» ¹ß°ßÇÒÁö¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù . ÀÌ ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, ù ¹ø° ºÎÇÕÀ» À§ÇØ InputVar¸¦ ¿ÞÂʺÎÅÍ °Ë»öÇÕ´Ï´Ù. ÀÌ ¸Å°³º¯¼ö°¡ 1À̰ųª ±âÈ£ RÀ̸é, °Ë»öÀÌ InputVarÀÇ ¿À¸¥ÂʺÎÅÍ ½ÃÀÛÇØ ¿ÞÂÊÀ¸·Î ù ¹ø° ºÎÇÕÀ» ¹ß°ßÇÒ ¶§±îÁö °è¼ÓµË´Ï´Ù.

+

+ ù ¹ø° ºÎÇÕ¸»°í ´Ù¸¥ ºÎÇÕÀ» ¹ß°ßÇÏ·Á¸é, ±âÈ£ L ¶Ç´Â R ´ÙÀ½¿¡ ÃâÇö Ƚ¼ö¸¦ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, ¿À¸¥ÂÊ¿¡¼­ ³× ¹ø° ÃâÇöÀ» ¹ß°ßÇÏ°í ½ÍÀ¸¸é. r4¸¦ ÁöÁ¤ÇϽʽÿÀ. ÁÖÀÇ: ¼ýÀÚ¸¦ 0ÀÌÇÏ·Î ÁöÁ¤Çϸé, ºÎÇÕÀÌ ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù.

+ +
Offset
+

¿ÞÂÊ ³¡ ¶Ç´Â ¿À¸¥ÂÊ ³¡À¸·ÎºÎÅÍ (À§ÀÇ ¸Å°³º¯¼ö¿¡ µû¶ó) °Ç³Ê ¶Û ¹®ÀÚÀÇ °³¼ö. + »ý·«Çϸé, ±âº»°ªÀº 0ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½Àº ¿ÞÂÊ 10¹ø° ¹®ÀÚºÎÅÍ °Ë»öÀ» ½ÃÀÛÇÕ´Ï´Ù: StringGetPos, OutputVar, InputVar, abc, , 9. + ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù..

+ +
+ +

ErrorLevel

+

+ErrorLevelÀº ÁöÁ¤µÈ SearchTextÀÇ ÃâÇöÀ» InputVar ¾È¿¡¼­ ¹ß°ßÇÒ ¼ö ¾ø¾úÀ¸¸é 1ÀÌ ¼³Á¤µÇ°í ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+StringMid ±×¸®°í InStr()¿Í ´Ù¸£°Ô, StringGetPos¿¡ ´ëÇÏ¿© 0Àº ù ¹ø° ¹®ÀÚÀÇ À§Ä¡·Î Á¤Àǵ˴ϴÙ.

+

+¿­¶÷µÈ À§Ä¡´Â ¾ðÁ¦³ª InputVarÀÇ Ã¹ ¹®ÀÚ¿¡ »ó´ëÀûÀÔ´Ï´Ù. L#|R# ±×¸®°í/¶Ç´Â OffsetÀÌ ÁöÁ¤µÇ¾î ÀÖµç ¸»µç »ó°üÀÌ ¾ø½À´Ï´Ù. ¿¹¸¦ µé¾î, ¹®ÀÚ¿­ "abc"°¡ 123abc789¿¡¼­ ¹ß°ßµÇ¸é, º¸°íµÈ ±×ÀÇ À§Ä¡´Â ¾ðÁ¦³ª 3ÀÔ´Ï´Ù. ¾î¶² ¹æ¹ýÀ¸·Î ¹ß°ßÇß´ÂÁö´Â »ó°üÀÌ ¾ø½À´Ï´Ù.

+

+SearchTextÀÇ ÁöÁ¤µÈ ÃâÇöÀÌ InputVar¾È¿¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, OutputVar´Â -1ÀÌ ¼³Á¤µÇ°í ErrorLevel´Â 1ÀÌ ¼³Á¤µË´Ï´Ù.

+

+SplitPath¸¦ »ç¿ëÇÏ¸é º¸´Ù ½±°Ô ÆÄÀÏ °æ·Î¸¦ ±×ÀÇ µð·ºÅ丮¿Í ÆÄÀÏÀ̸§ ±×¸®°í È®ÀåÀÚ·Î °¡¸¦ ¼ö ÀÖ½À´Ï´Ù.

+

+³»Àå º¯¼ö %A_Space%¿Í %A_Tab%¿¡ °¢°¢ ½ºÆäÀ̽º ¹®ÀÚ Çϳª¿Í ÅÇ ¹®ÀÚ Çϳª°¡ µé¾î ÀÖ½À´Ï´Ù. SearchTextÀÇ ¾ÕÀ̳ª µÚ¿¡¼­ ½ºÆäÀ̽º¿Í ÅÇÀ» µû·Î °Ë»öÇÒ °æ¿ì¿¡ À¯¿ëÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

InStr(), RegExMatch(), IfInString, if var in/contains MatchList, StringCaseSense, StringReplace, SplitPath, StringLeft, StringRight, StringMid, StringTrimLeft, StringTrimRight, StringLen, StringLower, StringUpper, if var is type

+ +

¿¹Á¦

+ +
Haystack = abcdefghijklmnopqrs
+Needle = def
+StringGetPos, pos, Haystack, %Needle%
+if pos >= 0
+    MsgBox, ¹®ÀÚ¿­ÀÌ À§Ä¡ %pos%¿¡¼­ ¹ß°ßµÇ¾ú½À´Ï´Ù.
+

 

+
; ¿¹Á¦ #2:
+; ÆÄÀÏÀÌ Àüü °æ·Î¸¦ °¢ ±¸¼º¿ä¼Ò·Î ºÐÇØ ÇÕ´Ï´Ù.
+; StringSplit ¶Ç´Â ÆÄ½Ì È¸µ¹À̸¦ »ç¿ëÇϸé 
+;  ÈξÀ ´õ ½±°Ô °¡¸¦ ¼ö ÀÖ½À´Ï´Ù. ±×·¡¼­ ¾Æ·¡´Â ±×Àú º¸¿©Áֱ⠿ëÀÔ´Ï´Ù.
+FileSelectFile, file, , , ±í¼÷È÷ ³»Æ÷µÈ Æú´õ ¾È¿¡¼­ ÆÄÀÏÀ̸§ Çϳª¸¦ °í¸£½Ê½Ã¿À:
+if file <>
+{
+    StringLen, pos_prev, file
+    pos_prev += 1 ; ¸¶Áö¸· ¹®ÀÚ µÚ¿¡ À§Ä¡¿¡ ¸Â°Ô Á¶ÀýÇÕ´Ï´Ù.
+    Loop
+    {
+        ; ¿À¸¥ÂÊÀ¸·ÎºÎÅÍ N¹ø° ÃâÇöÀ» °Ë»öÇÕ´Ï´Ù:
+        StringGetPos, pos, file, \, R%A_Index%
+        if ErrorLevel
+            break
+        length := pos_prev - pos - 1
+        pos_prev := pos
+        pos += 2  ; StringMid¿¡ »ç¿ëÇϱâ À§ÇØ Á¶Á¤ÇÕ´Ï´Ù.
+        StringMid, path_component, file, %pos%, %length%
+        MsgBox Path component #%a_index% (from the right) is:`n%path_component%
+    }
+}
+ + + diff --git a/src/docs/commands/StringLeft.htm b/src/docs/commands/StringLeft.htm new file mode 100644 index 0000000..ead32a3 --- /dev/null +++ b/src/docs/commands/StringLeft.htm @@ -0,0 +1,48 @@ + + + + +StringLeft / StringRight + + + + + + + +

StringLeft / StringRight

+ +

¹®ÀÚ¿­ÀÇ ¿ÞÂÊÀ̳ª ¿À¸¥ÂÊÀ¸·ÎºÎÅÍ ¹®ÀÚµéÀ» ¿­¶÷ÇÕ´Ï´Ù.

+ +
StringLeft, OutputVar, InputVar, Count
+StringRight, OutputVar, InputVar, Count
+NewStr := SubStr(String, StartPos [, Length]) ; ÀÚ¼¼ÇÑ °ÍÀº SubStr() ÇÔ¼ö¸¦ ÂüÁ¶ÇϽʽÿÀ.
+ +

Parameters

+
+ +
OutputVar
+

InputVarÀ¸·ÎºÎÅÍ ÃßÃâÇÑ ºÎ¹®ÀÚ¿­À» ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
InputVar
+

³»¿ëÀ» ÃßÃâÇÒ º¯¼öÀÇ À̸§. À̸§À» ÆÛ¼¾Æ® »çÀÎÀ¸·Î µÑ·¯ ½ÎÁö ¸¶½Ê½Ã¿À. ´Ü, º¯¼öÀÇ ³»¿ëÀÌ À̸§À̱⸦ ¹Ù¶ó´Â °æ¿ì¶ó¸é ¿¹¿ÜÀÔ´Ï´Ù.

+ +
Count
+

ÃßÃâÇÒ ¹®ÀÚÀÇ °³¼ö, Ç¥Çö½Ä °¡´É. Count°¡ 0º¸´Ù À۰ųª °°À¸¸é, OutputVar´Â ºñ¿öÁý´Ï´Ù. Count°¡ InputVarÀÇ ±æÀ̸¦ ÃÊ°úÇϸé, OutputVar´Â InputVar Àüü¿Í °°°Ô ¼³Á¤µË´Ï´Ù.

+ +
+ +

³íÆò

+

+ÀÌ ¸í·É¾î¿Í ´Ù¸¥ ¸ðµç ¸í·É¾î¿¡ ´ëÇÏ¿©, OutputVar´Â InputVar¿Í °°Àº º¯¼ö°¡ µÇ¾îµµ Çã¿ëÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

SubStr(), StringMid, StringTrimLeft, StringTrimRight, IfInString, StringGetPos, StringLen, StringLower, StringUpper, StringReplace

+ +

¿¹Á¦

+
String = This is a test. 
+StringLeft, OutputVar, String, 4  ; ¹®ÀÚ¿­ "This"¸¦ OutputVar¿¡ ÀúÀåÇÕ´Ï´Ù.
+StringRight, OutputVar, String, 5  ; ¹®ÀÚ¿­ "test."¸¦ OutputVar¿¡ ÀúÀåÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/StringLen.htm b/src/docs/commands/StringLen.htm new file mode 100644 index 0000000..39398a0 --- /dev/null +++ b/src/docs/commands/StringLen.htm @@ -0,0 +1,45 @@ + + + + +StrLen / StringLen + + + + + + + +

StrLen / StringLen

+ +

¹®ÀÚ¿­¿¡ ÀÖ´Â ¹®ÀÚÀÇ °³¼ö¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+ +
OutputVar := StrLen(InputVar)
+StringLen, OutputVar, InputVar
+
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

±æÀ̸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
InputVar
+

ÃøÁ¤ÇÒ ³»¿ëÀÌ µé¾î ÀÖ´Â º¯¼öÀÇ À̸§. ÆÛ¼¾Æ® »çÀο¡ À̸§À» µÑ·¯½ÎÁö ¸¶½Ê½Ã¿À. ±×·¯¸é º¯¼öÀÇ ³»¿ëÀÌ À̸§À¸·Î »ç¿ëµË´Ï´Ù.

+ +
+ +

³íÆò

+

+InputVar°¡ ÀÌÀü¿¡ ClipboardAll¿¡ ÇÒ´çµÈ º¯¼öÀ̸é, StringLenÀº ±×ÀÇ Àüü Å©±â¸¦ º¸°íÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

IfInString, StringGetPos, StringMid, StringTrimLeft, StringTrimRight, StringLeft, StringRight, StringLower, StringUpper, StringReplace

+ +

¿¹Á¦

+
InputVar := "Àçºü¸¥ °¥»ö ¿©¿ì, °ÔÀ¸¸¥ °³¸¦ µ¤ÃƳ×"
+MsgBox % "InputVarÀÇ ±æÀÌ´Â " . StrLen(InputVar) ; °á°ú: 21
+StringLen, length, InputVar
+MsgBox, InputVarÀÇ ±æÀÌ´Â %length%ÀÔ´Ï´Ù.
+ + + diff --git a/src/docs/commands/StringLower.htm b/src/docs/commands/StringLower.htm new file mode 100644 index 0000000..0d472aa --- /dev/null +++ b/src/docs/commands/StringLower.htm @@ -0,0 +1,50 @@ + + + + +StringLower / StringUpper + + + + + + + +

StringLower / StringUpper

+ +

¹®ÀÚ¿­À» ¼Ò¹®ÀÚ ¶Ç´Â ´ë¹®ÀÚ·Î º¯È¯ÇÕ´Ï´Ù.

+ +
StringLower, OutputVar, InputVar [, T]
+StringUpper, OutputVar, InputVar [, T]
+ +

¸Å°³º¯¼ö

+
+ +
OutputVar
+

»õ·Î º¯È¯µÈ ¹®ÀÚ¿­À» ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
InputVar
+

³»¿ëÀ» ÀÐ¾î µéÀÏ º¯¼öÀÇ À̸§. À̸§À» ÆÛ¼¾Æ® »çÀÎÀ¸·Î µÑ·¯ ½ÎÁö ¸¶½Ê½Ã¿À. ´Ü, º¯¼öÀÇ ³»¿ëÀ» À̸§À¸·Î »ç¿ëÇÏ°í ½Í´Ù¸é ¿¹¿ÜÀÔ´Ï´Ù.

+ +
T
+

ÀÌ ¸Å°³º¯¼ö°¡ ±âÈ£ TÀ̸é, ¹®ÀÚ¿­Àº Á¦¸ñ °ÝÀ¸·Î º¯È¯µË´Ï´Ù. ¿¹¸¦ µé¾î, "GONE with the WIND"´Â "Gone With The Wind"ÀÌ µË´Ï´Ù;

+ +
+ +

³íÆò

+

+¹®ÀÚ ¶Ç´Â ¹®ÀÚ¿­ÀÌ ÀüüÀûÀ¸·Î ´ë¹®ÀÚÀÎÁö ¾Æ´Ï¸é ¼Ò¹®ÀÚÀÎÁö ŽÁöÇÏ·Á¸é, "if var is [not] upper/lower"¸¦ »ç¿ëÇϽʽÿÀ.

+

+ÀÌ ¸í·É¾î¿Í ´Ù¸¥ ¸ðµç ¸í·É¾î¿¡ ´ëÇÏ¿©, OutputVar´Â InputVar¿Í °°Àº º¯¼öÀ̾ Çã¿ëµË´Ï´Ù.

+

[v1.1.20+]: ¾Æ·¡¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ Format()µµ ´ë¼Ò¹®ÀÚ º¯È¯¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:

+ +
MsgBox % Format("{:U}, {:L} and {:T}", "upper", "LOWER", "title")
+ +

°ü·Ã Ç׸ñ

+

Format(), IfInString, StringGetPos, StringMid, StringTrimLeft, StringTrimRight, StringLeft, StringRight, StringLen, StringReplace

+

¿¹Á¦

+
StringUpper, String1, String1  ; Áï, Ãâ·ÂÀº ÀԷ°ú °°À» ¼ö ÀÖ½À´Ï´Ù.
+StringLower, String2, String2
+ + + diff --git a/src/docs/commands/StringMid.htm b/src/docs/commands/StringMid.htm new file mode 100644 index 0000000..bd5c40e --- /dev/null +++ b/src/docs/commands/StringMid.htm @@ -0,0 +1,60 @@ + + + + +StringMid + + + + + + + +

StringMid

+ +

¹®ÀÚ¿­¿¡¼­ ÁöÁ¤µÈ À§Ä¡·ÎºÎÅÍ Çϳª ÀÌ»óÀÇ ¹®ÀÚ¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+ +
StringMid, OutputVar, InputVar, StartChar [, Count , L]
+NewStr := SubStr(String, StartPos [, Length]) ; ÀÚ¼¼ÇÑ °ÍÀº SubStr() ÇÔ¼ö ÂüÁ¶.
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

InputVar·ÎºÎÅÍ ÃßÃâÇÑ ºÎ¹®ÀÚ¿­À» ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
InputVar
+

³»¿ë¿¡¼­ ºÎºÐÀÚ¿­À» ÃßÃâÇÒ º¯¼öÀÇ À̸§. À̸§À» ÆÛ¼¾Æ® »çÀÎÀ¸·Î µÑ·¯ ½ÎÁö ¸¶½Ê½Ã¿À. ´Ü, º¯¼öÀÇ ³»¿ëÀÌ À̸§À̱⸦ ¹Ù¶ó´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+ +
StartChar
+

ÃßÃâÇÒ Ã¹ ¹®ÀÚÀÇ À§Ä¡, Ç¥Çö½Ä °¡´É. StringGetPos¿Í ´Ù¸£°Ô, 1À̸é ù ¹®ÀÚÀÔ´Ï´Ù. StartChar°¡ 1º¸´Ù ÀÛÀ¸¸é, 1À̶ó°í °£ÁÖÇÕ´Ï´Ù. StartChar°¡ ¹®ÀÚ¿­ÀÇ ³¡À» ³Ñ¾î¼­¸é, OutputVar´Â ºñ¿öÁý´Ï´Ù.

+ +
Count
+

v1.0.43.10+¿¡¼­, ÀÌ ¸Å°³º¯¼ö´Â »ý·«Çϰųª ºñ¿ö µÑ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº ¹®ÀÚ¿­·ÎºÎÅÍ ¸ðµç ¹®ÀÚ¸¦ ¿­¶÷Çϱ⿡ ÃæºÐÈ÷ Å« Á¤¼ö¸¦ ÁöÁ¤ÇÑ °Í°ú °°Àº È¿°ú°¡ ÀÖ½À´Ï´Ù.

+

±×·¸Áö ¾ÊÀ¸¸é, ÃßÃâÇÒ ¹®ÀÚÀÇ °³¼ö¸¦ ÁöÁ¤ÇϽʽÿÀ. Ç¥Çö½ÄÀÌ °¡´ÉÇÕ´Ï´Ù. Count°¡ 0º¸´Ù À۰ųª °°À¸¸é, OutputVar´Â ºñ¿öÁý´Ï´Ù. Count°¡ StartChar·ÎºÎÅÍ ÃøÁ¤ÇØ InputVarÀÇ ±æÀ̸¦ ÃÊ°úÇϸé, OutputVar´Â StartCharºÎÅÍ ½ÃÀÛÇØ InputVarÀÇ Àüü·Î ¼³Á¤µË´Ï´Ù.

+ +
L
+

±âÈ£ LÀ» »ç¿ëÇϸé StartCharÀÇ ¿À¸¥ÂÊÀÌ ¾Æ´Ï¶ó ¿ÞÂÊ¿¡ ÀÖ´Â ¹®ÀÚµéÀ» ÃßÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­, OutputVar´Â Red·Î ¼³Á¤µË´Ï´Ù:

+
InputVar = The Red Fox
+StringMid, OutputVar, InputVar, 7, 3, L
+

+ L ¿É¼ÇÀÌ Á¸ÀçÇÏ°í StartChar°¡ 1º¸´Ù ÀÛÀ¸¸é, OutputVarÀº ºñ¿öÁý´Ï´Ù. StartChar°¡ InputVarÀÇ ±æÀ̸¦ ³Ñ¾î ¼­¸é, ¿ÀÁ÷ Count ¹üÀ§ ¾ÈÀÇ ¹®Àڵ鸸 ÃßÃâµË´Ï´Ù. ¿¹¸¦ µé¾î, ¾Æ·¡ÀÇ ¿¹Á¦¿¡¼­ OutputVar´Â Fox°¡ ¼³Á¤µË´Ï´Ù:

+
InputVar = The Red Fox
+StringMid, OutputVar, InputVar, 14, 6, L
+
+ +
+ +

³íÆò

+

+ÀÌ ¸í·É¾î¿Í ±âŸ ¸ðµç ¸í·É¾î¿¡ ´ëÇÏ¿©, OutputVar´Â InputVar¿Í º¯¼ö°¡ °°¾Æµµ Çã¿ëÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

SubStr(), StringLeft, StringRight, StringTrimLeft, StringTrimRight, IfInString, StringGetPos, StringLen, StringLower, StringUpper, StringReplace

+ +

¿¹Á¦

+ +
Source = Hello this is a test. 
+StringMid, the_word_this, Source, 7, 4
+ + + diff --git a/src/docs/commands/StringReplace.htm b/src/docs/commands/StringReplace.htm new file mode 100644 index 0000000..457b3e4 --- /dev/null +++ b/src/docs/commands/StringReplace.htm @@ -0,0 +1,86 @@ + + + + +StringReplace + + + + + + + +

StringReplace

+ +

ÁöÁ¤µÈ ºÎ¹®ÀÚ¿­À» »õ ¹®ÀÚ¿­·Î ±³Ã¼ÇÕ´Ï´Ù.

+ +
OutputVar := StrReplace(Haystack, SearchText [, ReplaceText, OutputVarCount, Limit := -1])  ; v1.1.21+
+StringReplace, OutputVar, InputVar, SearchText [, ReplaceText, ReplaceAll?]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

±³Ã¼ÀÇ °á°ú¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
InputVar ¶Ç´Â Haystack
+
+

±×ÀÇ ³»¿ëÀ» ÀÐÀ» º¯¼öÀÇ À̸§. À̸§À» ÆÛ¼¾Æ® »çÀÎÀ¸·Î µÑ·¯ ½ÎÁö ¸¶½Ê½Ã¿À. ´Ü, º¯¼öÀÇ ³»¿ëÀÌ À̸§À̱⸦ ¿øÇÏ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+

+ StrReplace()´Â ÇÔ¼öÀ̹ǷÎ, HaystackÀº Ç¥Çö½ÄÀÌ °¡´ÉÇÕ´Ï´Ù.

+
+ +
SearchText
+

°Ë»ö¿¡ »ç¿ëµÉ ¹®ÀÚ¿­. ºÎÇÕÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê½À´Ï´Ù. ´Ü, StringCaseSense°¡ ÄÑÁ® ÀÖ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

+ +
ReplaceText
+

SearchText´Â ÀÌ ÅؽºÆ®·Î ±³Ã¼µË´Ï´Ù. »ý·«µÇ°Å³ª ºñ¾î ÀÖÀ¸¸é, SearchText´Â ºó ¹®ÀÚ¿­·Î ±³Ã¼µË´Ï´Ù. ´Ù¸¥ ¸»·Î, OutputVar·ÎºÎÅÍ Á¦¿ÜµË´Ï´Ù.

+ +
OutputVarCount (StrReplace)
+

±³Ã¼°¡ ÀϾ Ƚ¼ö¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§. ÀοëºÎÈ£ ó¸® ¾ÈÇÔ (¾øÀ¸¸é 0).

+ +
Limit (StrReplace)
+

+ LimitÀ» »ý·«Çϸé, ±âº»°ªÀº -1ÀÔ´Ï´Ù. ±âº»À¸·Î Haystack ¹ß°ßµÈ ¸ðµç ÆÐÅÏÀ» ±³Ã¼ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ±³Ã¼¸¦ Çã¿ëÇÒ ÃÖ´ë Ƚ¼ö¸¦ ÁöÁ¤ÇϽʽÿÀ. Haystack¿¡¼­ ¸¶Áö¸· ¸Å°³º¯¼öÀÇ ¿À¸¥ÂÊ ºÎºÐÀº ±³Ã¼µÇÁö ¾Ê°í ±×´ë·ÎÀÔ´Ï´Ù.

+ +
ReplaceAll? (StringReplace)
+

»ý·«Çϸé, ¿ÀÁ÷ SearchTextÀÇ Ã¹ ¹ø° ºÎÇÕ¸¸ ±³Ã¼µË´Ï´Ù. ±×·¯³ª ÀÌ ¸Å°³º¯¼ö°¡ 1À̳ª A ¶Ç´Â AllÀ̸é, ¸ðµç ºÎÇÕÀÌ ±³Ã¼µË´Ï´Ù.

+

+ ´Ü¾î UseErrorLevelÀ» ÁöÁ¤Çϸé ErrorLevel¿¡ ±³Ã¼µÈ Ƚ¼ö¸¦ ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù (¾øÀ¸¸é 0). UseErrorLevelÀº ¹¬½ÃÀûÀ¸·Î "All".

+
+ +
+ +

ErrorLevel

+

+StrReplace: ErrorLevelÀº ¼³Á¤µÇÁö ¾Ê½À´Ï´Ù.

+

StringReplace: ¸¶Áö¸· ¸Å°³º¯¼ö°¡ UseErrorLevelÀ̸é, ErrorLevel¿¡´Â ±³Ã¼µÈ Ƚ¼ö°¡ ¼³Á¤µË´Ï´Ù (¾øÀ¸¸é 0). ±×·¸Áö ¾ÊÀ¸¸é, ErrorLevelÀº SearchText¸¦ InputVar ¾È¿¡¼­ ¹ß°ßÇÏÁö ¸øÇÑ °æ¿ì 1ÀÌ ¼³Á¤µÇ°í ¹ß°ßÇÑ °æ¿ì´Â 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+ÀÌ ¸í·É¾î ±×¸®°í ±âŸ ¸ðµç ¸í·É¾î¿¡ ´ëÇÏ¿©, OutputVar´Â InputVar¿Í º¯¼ö°¡ °°¾Æµµ Çã¿ëµË´Ï´Ù.

+

+³»Àå º¯¼ö %A_Space%¿Í %A_Tab%¿¡ °¢°¢ ½ºÆäÀ̽º Çϳª¿Í ÅÇ ¹®ÀÚ Çϳª°¡ µé¾î ÀÖ½À´Ï´Ù. SearchTextÀÇ ¾ÕÀ̳ª µÚ¿¡¼­ ½ºÆäÀ̽º¿Í ÅǸ¸ Ȧ·Î °Ë»öÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù.

+

+v1.0.45¿¡¼­, AllSlow ¿É¼ÇÀº ¼öÇ༺´É Çâ»ó°ú È¿À²ÀûÀÎ ¸Þ¸ð¸® ÀÌ¿ëÀ» À§ÇØ Æó±â µÇ¾ú½À´Ï´Ù. ¿©ÀüÈ÷ ÁöÁ¤ÇÒ ¼ö´Â ÀÖÁö¸¸, ¾Æ¹« È¿°ú°¡ ¾øÀ» °ÍÀÔ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+RegExReplace(), IfInString, StringCaseSense, StringLeft, StringRight, StringMid, StringTrimLeft, StringTrimRight, StringLen, StringLower, StringUpper, StringGetPos, if var is type

+ +

¿¹Á¦

+
; Ŭ¸³º¸µåÀÇ ³»¿ë¿¡¼­ ¸ðµç CR+LF¸¦ Á¦°ÅÇÕ´Ï´Ù:
+StringReplace, clipboard, clipboard, `r`n, , All
+
+; ¸ðµç ½ºÆäÀ̽º¸¦ Ç÷¯½º·Î ±³Ã¼ÇÕ´Ï´Ù:
+StringReplace, NewStr, OldStr, %A_SPACE%, +, All
+
+; º¯¼ö ¾ÈÀÇ ÅؽºÆ®·ÎºÎÅÍ ¸ðµç ºó ÁÙÀ» Á¦°ÅÇÕ´Ï´Ù:
+Loop
+{
+    StringReplace, MyString, MyString, `r`n`r`n, `r`n, UseErrorLevel
+    if ErrorLevel = 0  ; ´õ ÀÌ»ó ±³Ã¼°¡ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù.
+        break
+}
+ + + \ No newline at end of file diff --git a/src/docs/commands/StringSplit.htm b/src/docs/commands/StringSplit.htm new file mode 100644 index 0000000..15bcff1 --- /dev/null +++ b/src/docs/commands/StringSplit.htm @@ -0,0 +1,117 @@ + + + + +StringSplit / StrSplit() + + + + + + + +

StringSplit / StrSplit()

+ +

¹®ÀÚ¿­À» ÁöÁ¤µÈ ±¸ºÐÀÚ·Î °¥¶ó ºÎ¹®ÀÚ¿­ÀÇ ¹è¿­·Î ¸¸µì´Ï´Ù.

+ +
StringSplit, OutputArray, InputVar [, Delimiters, OmitChars]
+Array := StrSplit(String [, Delimiters, OmitChars])  ; [v1.1.13+]
+

Parameters

+

StringSplit

+
+ +
OutputArray
+

InputVar·ÎºÎÅÍ ÃßÃâµÈ °¢ ºÎ¹®ÀÚ¿­À» ÀúÀåÇÒ ÀÇ»ç-¹è¿­ÀÇ À̸§. ¿¹¸¦ µé¾î, MyArray°¡ ÁöÁ¤µÇ¸é, ÀÌ ¸í·É¾î´Â »ý»êµÈ ºÎ¹®ÀÚ¿­ÀÇ °³¼ö¸¦ (¾øÀ¸¸é 0) MyArray0¿¡ ¹èÄ¡ÇÕ´Ï´Ù. ù ¹ø° ºÎºÐÀÚ¿­Àº MyArray1¿¡, µÎ ¹ø° ºÎ¹®ÀÚ¿­Àº MyArray2¿¡, µîµî ¹èÄ¡ÇÕ´Ï´Ù.

+

+ ÇÔ¼ö ¾È¿¡¼­, Áö¿ªÀÌ ¾Æ´Ï¶ó Àü¿ªÀûÀÎ ÀÇ»ç-¹è¿­À» »ý¼ºÇÏ·Á¸é, ÇÔ¼ö ¾È¿¡¼­ MyArray0¸¦ Àü¿ª º¯¼ö·Î ¼±¾ðÇϽʽÿÀ (Àü¿ª-°£ÁÖ ÇÔ¼ö¿¡ ´ëÇÏ¿© ±× ¹Ý´ëµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù). ±×·¸Áö¸¸, ÈçÇÑ È¥¶õÀÇ ±Ù¿ø ¶§¹®¿¡, °¢ ¿ø¼Ò¸¶´Ù µû·Îµû·Î ¼±¾ðÇØ¾ß ÇÒ °æ¿ìµµ Á¾Á¾ ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ÇÔ¼ö¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +
InputVar
+

³»¿ëÀ» ºÐ¼®ÇÒ º¯¼öÀÇ À̸§. À̸§À» ÆÛ¼¾Æ® »çÀÎÀ¸·Î µÑ·¯ ½ÎÁö ¸¶½Ê½Ã¿À. ´Ü, º¯¼öÀÇ ³»¿ëÀÌ À̸§À¸·Î »ç¿ëµÇ±â¸¦ ¿øÇÏ´Â °æ¿ì¶ó¸é ¿¹¿ÜÀÔ´Ï´Ù. ÁÖÀÇ: InputVar´Â OutputArray ¾È¿¡ ÀÖ´Â º¯¼ö Áß Çϳª°¡ µÇ¾î¾ß ÇÕ´Ï´Ù.

+ +
Delimiters
+

+ ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î Àְųª »ý·«µÇ¸é, InputVarÀÇ °¢ ¹®ÀÚ´Â º°µµÀÇ ºÎ¹®ÀÚ¿­·Î °£Áֵ˴ϴÙ.

+

±×·¸Áö ¾ÊÀ¸¸é, Delimiters´Â Çϳª ÀÌ»óÀÇ ¹®ÀÚ¸¦ ´ã½À´Ï´Ù (´ë¼Ò¹®ÀÚ ±¸ºÐ). °¢ ±¸ºÐÀÚ´Â InputVar¿¡¼­ ºÎ¹®ÀÚ¿­ »çÀÌÀÇ °æ°è°¡ ³ªÅ¸³ª´Â °÷À» °áÁ¤ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ±¸ºÐ ¹®ÀÚµéÀº ºÎ¹®ÀÚ¿­ÀÇ ÀϺκÐÀ¸·Î °£ÁÖµÇÁö ¾Ê±â ¶§¹®¿¡, OutputArray¿¡ Àý´ë·Î º¹»çµÇÁö ¾Ê½À´Ï´Ù. ¶ÇÇÑ, InputVar ¾È¿¡¼­ ±¸ºÐÀÚ »çÀÌ¿¡ ¾Æ¹« °Íµµ ¾øÀ¸¸é, ±×¿¡ »óÀÀÇÏ´Â ¿ø¼Ò´Â ºó ¿ø¼ÒÀÔ´Ï´Ù.

+

+ ¿¹¸¦ µé¾î: `, (ÇÇ½ÅµÈ ½°Ç¥)´Â ½°Ç¥°¡ ³ªÅ¸³¯ ¶§¸¶´Ù ¹®ÀÚ¿­À» ºÐ¸®ÇÕ´Ï´Ù. ºñ½ÁÇÏ°Ô, %A_Tab%%A_Space%´Â InputVar ¾È¿¡¼­ ½ºÆäÀ̽º³ª ÅÇÀ» ¸¸³¯ ¶§¸¶´Ù »õ·Î¿î ¹è¿­ ¿ø¼Ò¸¦ »ý¼ºÇÕ´Ï´Ù.

+

+ ¹®ÀÚ¿­À» ¹®ÀÚ°¡ ¾Æ´Ï¶ó ±¸ºÐÀÚ·Î »ç¿ëÇÏ·Á¸é, ¸ÕÀú StringReplace¸¦ »ç¿ëÇØ ±× ¹®ÀÚ¿­ÀÌ ³ªÅ¸³ª¸é ¸ðµÎ, ÅؽºÆ®¿¡¼­ Àý´ë·Î ±âÈ£ ±×´ë·Î »ç¿ëµÇÁö ¾Ê´Â ÇϳªÀÇ ¹®ÀÚ·Î ±³Ã¼ÇϽʽÿÀ. ´ÙÀ½ ¿¹Á¦¸¦ ¿¬±¸ÇØ º¸½Ê½Ã¿À. ´ÙÀ½ ¿¹Á¦´Â ¹®ÀÚ¿­ <br>À» ±¸ºÐÀÚ·Î »ç¿ëÇÕ´Ï´Ù:

+ +
StringReplace, NewHTML, HTMLString, <br>, ``, All  ; <br>ÀÌ ³ªÅ¸³¯ ¶§¸¶´Ù ¾×¼¾Æ® ¹®ÀÚ·Î ¹Ù²ß´Ï´Ù.
+StringSplit, MyArray, NewHTML, ``  ; ¾×¼¾Æ® ¹®ÀÚ¿¡ ±â¹ÝÇØ ¹®ÀÚ¿­À» °¡¸¨´Ï´Ù.
+ +
+ +

StrSplit() [v1.1.13+]

+
+ +
Array
(¹Ýȯ °ª)
+

¹®ÀÚ¿­ (°´Ã¼)ÀÇ ¹è¿­.

+ +
String
+

ºÐ¸®ÇÒ ¹®ÀÚ¿­.

+ +
Delimiters
+

ÀÌ ¸Å°³º¯¼ö°¡ ºñ¾î Àְųª »ý·«µÇ¸é, ÀÔ·Â ¹®ÀÚ¿­ÀÇ °¢ ¹®ÀÚ´Â º°µµÀÇ ºÎ¹®ÀÚ¿­·Î °£Áֵ˴ϴÙ.

+

±×·¸Áö ¾ÊÀ¸¸é, Delimiters´Â ´ÜÀÏ ¹®ÀÚ¿­À̰ųª ¹®ÀÚ¿­ ¹è¿­ÀÏ ¼ö ÀÖ½À´Ï´Ù. °¢ ±¸ºÐÀÚ´Â ºÎ¹®ÀÚ¿­ »çÀÌÀÇ °æ°è°¡ ³ªÅ¸³ª´Â °÷À» °áÁ¤Çϴµ¥ »ç¿ëµË´Ï´Ù. ±¸ºÐÀÚ´Â ºÎ¹®ÀÚ¿­ÀÇ ÀϺκÐÀ¸·Î °£ÁÖµÇÁö ¾ÊÀ¸¹Ç·Î, Àý´ë·Î ¹ÝȯµÈ ¹è¿­¿¡ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù. ¶ÇÇÑ, ÀÔ·Â ¹®ÀÚ¿­¿¡¼­ ±¸ºÐÀÚ ÇÑ ½Ö »çÀÌ¿¡ ¾Æ¹«°Íµµ ¾ø´Ù¸é, ±×¿¡ »óÀÀÇÏ´Â ¹è¿­ ¿ø¼Ò´Â ºó ¿ø¼ÒÀÔ´Ï´Ù.

+

+ ¿¹¸¦ µé¾î: ","´Â ¹®ÀÚ¿­À» ½°Ç¥°¡ ³ªÅ¸³¯ ¶§¸¶´Ù ºÐ¸®ÇÕ´Ï´Ù. ºñ½ÁÇÏ°Ô, [A_Tab, A_Space]´Â ÀÔ·Â ¹®ÀÚ¿­¿¡¼­ ½ºÆäÀ̽º³ª ÅÇÀ» ¸¸³¯ ¶§¸¶´Ù »õ ¹è¿­ ¿ø¼Ò¸¦ »ý¼ºÇÕ´Ï´Ù.

+ +
+

Both

+
+ +
OmitChars
+

°¢ ¹è¿­ ¿ø¼ÒÀÇ ¾Õ°ú µÚ·ÎºÎÅÍ ¹èÁ¦ÇÒ ¹®ÀÚ¿­ÀÇ ¸®½ºÆ® (´ë¼Ò¹®ÀÚ ±¸ºÐ, ¼±ÅÃÀû). ¿¹¸¦ µé¾î, OmitChars°¡ %A_Space%%A_Tab% (StringSplit) ¶Ç´Â " `t" (StrSplit)À̸é, ½ºÆäÀ̽º¿Í ÅÇÀº ¸ðµç ¿ø¼ÒÀÇ ¾Õ°ú µÚ·ÎºÎÅÍ Á¦°ÅµË´Ï´Ù (°¡¿îµ¥´Â ¾Æ´Ô).

+

+ Delimiters°¡ ºñ¾î ÀÖÀ¸¸é, OmitChars´Â ¹è¿­·ÎºÎÅÍ ¾î´À ¹®ÀÚ¸¦ ¹èÁ¦ÇØ¾ß ÇÏ´ÂÁö¸¦ ³ªÅ¸³À´Ï´Ù.

+

+ ´ëºÎºÐÀÇ ´Ù¸¥ ¸í·É¾îÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö¿Í ´Ù¸£°Ô, StringSplit¿¡ ´ëÇÏ¿© OmitChars¿¡¼­ ½°Ç¥´Â ¹Ýµå½Ã ÇǽŽÃÄÑ¾ß ÇÕ´Ï´Ù (`,).

+ +
+ +

³íÆò

+

+ÀÇ»ç ¹è¿­ÀÌ ÀÌ¹Ì Á¸ÀçÇϸé, StringSplit ¸í·É¾î´Â ¾ÕÂʺÎÅÍ N°³ÀÇ ¿ø¼ÒÀÇ °ª¸¸ º¯°æÇÕ´Ï´Ù. ¿©±â¿¡¼­ NÀº InputVar¿¡¼­ ÃâÇöÇÏ´Â ºÎ¹®ÀÚ¿­ÀÇ °³¼öÀÔ´Ï´Ù. N ¹ø° ÀÌÈÄÀÇ ¿ø¼Ò´Â º¯°æµÇÁö ¾Ê½À´Ï´Ù. ±×·¯¹Ç·Î, ¾ó¸¶³ª ¸¹Àº Ç׸ñÀÌ ½ÇÁ¦·Î ÀÌ ¸í·É¾î·Î »ý»êµÇ¾ú´Â°¡¸¦ ¾Ë¾Æ³»·Á¸é, 0 ¿ø¼Ò¸¦ »ç¿ëÇÏ´Â °ÍÀÌ °¡Àå ¾ÈÀüÇÕ´Ï´Ù (MyArray0).

+

+½ºÆäÀ̽º¿Í ÅÇ °°Àº °ø¹é ¹®ÀÚµéÀº À¯ÁöµË´Ï´Ù. ´Ü, ±× ¹®ÀÚ ÀÚü°¡ ±¸ºÐÀÚÀ̰ųª OmitChars¿¡ Æ÷ÇԵǴ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù. ÅÇ°ú ½ºÆäÀ̽º´Â Trim ÇÔ¼ö¸¦ È£ÃâÇØ º¯¼öÀÇ ¾çÂÊ ³¡À¸·ÎºÎÅÍ ´ÙµëÀ» ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: MyArray1 := Trim(MyArray1).

+

+Ç¥ÁØ CSV (½°Ç¥·Î °¡¸¥ °ª(comma separated value)) Çü½ÄÀÇ ¹®ÀÚ¿­À» °¡¸£·Á¸é, ÆÄ½Ì È¸µ¹À̸¦ »ç¿ëÇϽʽÿÀ. CSV 󸮰¡ ³»ÀåµÇ¾î ÀÖ½À´Ï´Ù.

+

+¹®ÀÚ¿­À» °¡¸£±â Àü¿¡ Çʵ带 ´Ù¸¥ ¼ø¼­·Î Á¤·ÄÇÏ·Á¸é, Sort ¸í·É¾î¸¦ »ç¿ëÇϽʽÿÀ.

+

+ºÎ¹®ÀÚ¿­À» ¸Þ¸ð¸®¿¡ ¿µ¿øÈ÷ ÀúÀåÇÒ ÇÊ¿ä°¡ ¾ø´Ù¸é, ÆÄ½Ì È¸µ¹ÀÌÀÇ »ç¿ëÀ» °í·ÁÇØ º¸½Ê½Ã¿À -- ƯÈ÷ InputVar°¡ ¸Å¿ì ¹æ´ëÇÏ´Ù¸é ²À °í·ÁÇØ º¸½Ã±â¸¦ ¹Ù¶ø´Ï´Ù. ±×·± °æ¿ì´Â ¹æ´ëÇÑ ¾çÀÇ ¸Þ¸ð¸®°¡ ÀúÀåµÉ °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
Colors = red,green,blue
+Loop, parse, Colors, `,
+    MsgBox Color number %A_Index% is %A_LoopField%.
+ +

°ü·Ã Ç׸ñ

+

ÆÄ½Ì È¸µ¹ÀÌ, ¹è¿­, Sort, SplitPath, IfInString, StringGetPos, StringMid, StringTrimLeft, StringTrimRight, StringLen, StringLower, StringUpper, StringReplace

+ +

¿¹Á¦

+
TestString = This is a test.
+StringSplit, word_array, TestString, %A_Space%, .  ; Á¡Àº Á¦¿ÜÇÕ´Ï´Ù.
+MsgBox, The 4th word is %word_array4%.
+
+Colors = red,green,blue
+StringSplit, ColorArray, Colors, `,
+Loop, %ColorArray0%
+{
+    this_color := ColorArray%a_index%
+    MsgBox, Color number %a_index% is %this_color%.
+}
+
TestString := "This is a test."
+word_array := StrSplit(TestString, A_Space, ".")  ; Á¡Àº Á¦¿ÜÇÕ´Ï´Ù.
+MsgBox % "The 4th word is " word_array[4]
+
+Colors := "red,green,blue"
+ColorArray := StrSplit(Colors, ",")
+Loop % ColorArray.MaxIndex()
+{
+    this_color := ColorArray[a_index]
+    MsgBox, Color number %a_index% is %this_color%.
+}
+ + + diff --git a/src/docs/commands/StringTrimLeft.htm b/src/docs/commands/StringTrimLeft.htm new file mode 100644 index 0000000..9087fdf --- /dev/null +++ b/src/docs/commands/StringTrimLeft.htm @@ -0,0 +1,47 @@ + + + + +StringTrimLeft / StringTrimRight + + + + + + + +

StringTrimLeft / StringTrimRight

+ +

¹®ÀÚ¿­ÀÇ ¿ÞÂÊ ¿À¸¥ÂÊÀ¸·ÎºÎÅÍ ¹®ÀÚµéÀ» Á¦°ÅÇÕ´Ï´Ù.

+ +
StringTrimLeft, OutputVar, InputVar, Count
+StringTrimRight, OutputVar, InputVar, Count
+NewStr := SubStr(String, StartPos [, Length]) ; ÀÚ¼¼ÇÑ °ÍÀº SubStr() ÇÔ¼ö ÂüÁ¶.
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+
ÁÙ¾îµç InputVar¸¦

ÀúÀåÇÒ º¯¼öÀÇ À̸§ .

+ +
InputVar
+

³»¿ëÀ» ÀÐ¾î µéÀÏ º¯¼öÀÇ À̸§. À̸§À» ÆÛ¼¾Æ® »çÀÎÀ¸·Î µÑ·¯ ½ÎÁö ¸¶½Ê½Ã¿À. ´Ü, º¯¼öÀÇ ³»¿ëÀÌ À̸§À¸·Î »ç¿ëµÇ±â¸¦ ¹Ù¶õ´Ù¸é ¿¹¿ÜÀÔ´Ï´Ù.

+ +
Count
+

Á¦°ÅÇÒ ¹®ÀÚÀÇ °³¼ö. Ç¥Çö½Ä °¡´É. Count°¡ 0º¸´Ù ÀÛÀ¸¸é, OutputVar´Â InputVar Àüü¿Í °°°Ô ¼³Á¤µË´Ï´Ù. Count°¡ InputVarÀÇ ±æÀ̸¦ ÃÊ°úÇϸé, OutputVar´Â ºñ¿öÁý´Ï´Ù.

+ +
+ +

³íÆò

+

ÀÌ ¸í·É¾î¿Í ±âŸ ¸ðµç ¸í·É¾î¿¡ ´ëÇÏ¿©, OutputVar´Â InputVar¿Í °°Àº º¯¼ö°¡ µÇ¾îµµ Çã¿ëÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

SubStr(), StringMid, StringLeft, StringRight, IfInString, StringGetPos, StringLen, StringLower, StringUpper, StringReplace

+ +

¿¹Á¦

+ +
String = This is a test.
+StringTrimLeft, OutputVar, String, 5  ;  ¹®ÀÚ¿­ "is a test."¸¦ OutputVar¿¡ ÀúÀåÇÕ´Ï´Ù.
+StringTrimRight, OutputVar, String, 6  ; ¹®ÀÚ¿­ "This is a"¸¦ OutputVar¿¡ ÀúÀåÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/Suspend.htm b/src/docs/commands/Suspend.htm new file mode 100644 index 0000000..25f848d --- /dev/null +++ b/src/docs/commands/Suspend.htm @@ -0,0 +1,57 @@ + + + + +Suspend + + + + + + + +

Suspend

+ +

¼±ÅÃµÈ ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀ» ÄѰųª ²ü´Ï´Ù.

+ +
Suspend [, Mode]
+

¸Å°³º¯¼ö

+
+ +
Mode
+

On: ¸ðµç ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀ» º¸·ùÇÕ´Ï´Ù. ´Ü, ³íÆò ¼½¼Ç¿¡ ¼³¸íÇÑ °ÍµéÀº ¿¹¿ÜÀÔ´Ï´Ù.

+

Off: À§¿¡¼­ ²¨Áø ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀ» ´Ù½Ã ÄÕ´Ï´Ù.

+

Toggle (±âº»°ª): ÀÌÀü »óÅÂ¿Í ¹Ý´ë »óÅ·Πº¯°æÇÕ´Ï´Ù (On ¶Ç´Â Off).

+

Permit: ÇöÀç ¼­ºê·çƾÀ» º¸·ù¿¡¼­ ¸éÁ¦½ÃÅ°´Â Àϸ¸ ÇÕ´Ï´Ù. ´Ù¸¥ ÀÏÀº ÇÏÁö ¾Ê½À´Ï´Ù.

+ +
+ +

³íÆò

+

+¸Ç ù ÁÙÀÌ º¸·ùµÈ(Suspend) ÇÖÅ°/ÇÖ½ºÆ®¸µ ¼­ºê·çƾÀº (Suspend OnÀ» Á¦¿ÜÇÏ°í) º¸·ù·ÎºÎÅÍ ¸éÁ¦µË´Ï´Ù. ´Ù¸¥ ¸»·Î Çϸé, ÇÖÅ°´Â º¸·ù°¡ ÄÑÁ® ÀÖ´Â (ON) µ¿¾È¿¡µµ ¿©ÀüÈ÷ ÄÑÁ® ÀÖÀ» °ÍÀÔ´Ï´Ù. ±×·¯¹Ç·Î ±×·± ÇÖÅ°¸¦ ÅëÇÏ¿© º¸·ù¸¦ ²ø ¼ö ÀÖ½À´Ï´Ù.

+

+¼±ÅÃµÈ ÇÖÅ° ¶Ç´Â ÇÖ½ºÆ®¸µÀ» Á¸ÀçÇϴ âÀÇ À¯Çü¿¡ ±â¹ÝÇÏ¿© ÀÚµ¿À¸·Î ²ô·Á¸é, #IfWinActive/Exist¸¦ »ç¿ëÇϽʽÿÀ.

+

+½ºÅ©¸³Æ®ÀÇ ÇÖÅ°¸¦ º¸·ùÇÏ´õ¶óµµ ÀÌ¹Ì ½ÇÇà ÁßÀÎ ½ºÅ©¸³Æ®ÀÇ ¾²·¹µå´Â (ÀÖ´Ù¸é) ¸ØÃßÁö ¾Ê½À´Ï´Ù; ¸ØÃß·Á¸é Pause¸¦ »ç¿ëÇϽʽÿÀ.

+

+½ºÅ©¸³Æ®ÀÇ ÇÖÅ°°¡ º¸·ùµÉ ¶§, ±×ÀÇ Æ®·¹ÀÌ ¾ÆÀÌÄÜÀº ±âÈ£ S·Î ¹Ù²ò´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é ¾ÆÀÌÄÜÀ» µ¿°áÇÏ¸é µË´Ï´Ù. Menu ¸í·É¾îÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö¿¡ 1À» ÁöÁ¤ÇÏ¸é µ¿°á½Ãų ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
Menu, Tray, Icon, C:\My Icon.ico, , 1
+

+³»Àå º¯¼ö A_IsSuspended´Â ½ºÅ©¸³Æ®°¡ º¸·ùµÇ¸é 1 ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+#IfWinActive/Exist, Pause, Menu, ExitApp

+ +

¿¹Á¦

+ +
^!s::Suspend  ; Åä±Û-º¸·ù ÇÔ¼ö¸¦ ÇÖÅ°¿¡ ÇÒ´çÇÕ´Ï´Ù.
+ +
; Suspend ¸í·É¾î¸¦ ¶Ç´Ù¸¥ ½ºÅ©¸³Æ®¿¡ º¸³À´Ï´Ù.
+DetectHiddenWindows, On
+WM_COMMAND := 0x111
+ID_FILE_SUSPEND := 65404
+PostMessage, WM_COMMAND, ID_FILE_SUSPEND,,, C:\YourScript.ahk ahk_class AutoHotkey
+ + + diff --git a/src/docs/commands/SysGet.htm b/src/docs/commands/SysGet.htm new file mode 100644 index 0000000..545115e --- /dev/null +++ b/src/docs/commands/SysGet.htm @@ -0,0 +1,316 @@ + + + + +SysGet + + + + + + + +

SysGet

+ +

È­¸é ÇØ»óµµ, ´ÙÁß-¸ð´ÏÅÍ Á¤º¸, ½Ã½ºÅÛ °´Ã¼ÀÇ Å©±â, ±×¸®°í ±âŸ ½Ã½ºÅÛ Æ¯¼ºµéÀ» ¿­¶÷ÇÕ´Ï´Ù.

+ +
SysGet, OutputVar, Sub-command [, Param3]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

°á°ú¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
Sub-command
+
¾Æ·¡ ¸®½ºÆ® ÂüÁ¶. +
+ +
Param3
+

ÀÌ ¸Å°³º¯¼ö´Â ¾Æ·¡¿¡ ±â¼úÇÑ °æ¿ì¸¦ Á¦¿ÜÇÏ°í »ý·«µË´Ï´Ù.

+ +
+ +

Sub-commands

+

MonitorCount: ¸ð´ÏÅÍÀÇ ÃÑ °³¼ö¸¦ ¿­¶÷ÇÕ´Ï´Ù. ¾Æ·¡ Å×ÀÌºí¿¡ ±â¼úÇÑ SM_CMONITORS¿Í ´Ù¸£°Ô, MonitorCount¿¡´Â ¸ðµç ¸ð´ÏÅÍ°¡ Æ÷ÇԵ˴ϴÙ. ½ÉÁö¾î ¹ÙÅÁÈ­¸éÀÇ ÀϺκÐÀ¸·Î »ç¿ëµÇÁö ¾Ê´Â ¸ð´ÏÅ͵µ Æ÷ÇԵ˴ϴÙ.

+

MonitorPrimary: ±âº» ¸ð´ÏÅÍÀÇ ¹øÈ£¸¦ ¿­¶÷ÇÕ´Ï´Ù. ´ÜÀÏ-¸ð´ÏÅÍ ½Ã½ºÅÛÀ̶ó¸é 1ÀÔ´Ï´Ù.

+

Monitor [, N]: N¹ø ¸ð´ÏÅÍÀÇ µÑ·¹ ÁÂÇ¥¸¦ ¿­¶÷ÇÕ´Ï´Ù ( NÀ» »ý·«Çϸé, ±âº» ¸ð´ÏÅÍ°¡ »ç¿ëµË´Ï´Ù). Á¤º¸´Â ³× °³ÀÇ º¯¼ö¿¡ ÀúÀåµË´Ï´Ù. ÀÌ º¯¼ö´Â ¸ðµÎ OutputVar·Î ½ÃÀÛÇÕ´Ï´Ù. NÀÌ ³Ê¹« Å©°Å³ª Á¤º¸¸¦ ¿­¶÷ÇÏ´Â µ¥ ¹®Á¦°¡ ÀÖÀ¸¸é, ÀÌ ³× º¯¼ö´Â ¸ðµÎ ºñ¿öÁý´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
SysGet, Mon2, Monitor, 2
+MsgBox, Left: %Mon2Left% -- Top: %Mon2Top% -- Right: %Mon2Right% -- Bottom %Mon2Bottom%.
+

+ÇÔ¼ö ¾È¿¡¼­, Áö¿ª º¯¼ö°¡ ¾Æ´Ñ Àü¿ª º¯¼öÀÇ ÁýÇÕÀ» ¸¸µé·Á¸é, ÀÌ ¸í·É¾î¸¦ »ç¿ëÇϱâ Àü¿¡ ¸ÕÀú Mon2¸¦ Àü¿ª º¯¼ö·Î ¼±¾ð ÇϽʽÿÀ (Àü¿ª-°£ÁÖ ÇÔ¼ö¿¡ ´ëÇÏ¿© ±× ¹Ý´ëµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù). ±×·¸Áö¸¸, ÈçÇÑ È¥¶õÀÇ ±Ù¿ø ¶§¹®¿¡ Á¾Á¾ ÁýÇÕ¿¡¼­ °¢ º¯¼ö¸¦ µû·Î ¼±¾ðÇÒ ÇÊ¿ä°¡ ÀÖ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù.

+

MonitorWorkArea [, N]: À§¿Í °°Áö¸¸ ±¸¿ªÀÌ Ãà¼ÒµË´Ï´Ù. ŽºÅ©¹Ù¿Í ±âŸ µî·ÏµÈ ¹ÙÅÁÈ­¸é Åø¹Ù¸¦ Á¦¿ÜÇÕ´Ï´Ù.

+

MonitorName [, N]: N¹ø ¸ð´ÏÅÍ¿¡ ´ëÇÑ ¿î¿µ üÁ¦ÀÇ À̸§ (NÀ» »ý·«Çϸé, ±âº» ¸ð´ÏÅÍ°¡ »ç¿ëµË´Ï´Ù).

+

(Numeric): Sub-command¿¡ ¾Æ·¡ Å×ÀÌºí¿¡ ÀÖ´Â ¼ýÀÚ Áß Çϳª¸¦ ÁöÁ¤ÇÏ¸é »óÀÀÇÏ´Â °ªÀ» ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â ¸¶¿ì½º ¹öÆ°ÀÇ °³¼ö¸¦ À̸§ÀÌ "MouseButtonCount"ÀÎ º¯¼ö¿¡ ÀúÀåÇÕ´Ï´Ù: SysGet, MouseButtonCount, 43.

+

ÀÚÁÖ »ç¿ëµÊ

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
¹øÈ£¼³¸í
80SM_CMONITORS: ¹ÙÅÁÈ­¸éÀÇ µð½ºÇ÷¹ÀÌ ¸ð´ÏÅÍÀÇ ¹øÈ£ ("ºñ-µð½ºÇ÷¹ÀÌ ÀÇ»ç-¸ð´ÏÅÍ´Â Á¦¿Ü").
43SM_CMOUSEBUTTONS: ¸¶¿ì½ºÀÇ ¹öÆ°ÀÇ °³¼ö (¸¶¿ì½º°¡ ¼³Ä¡µÇ¾î ÀÖÁö ¾ÊÀ¸¸é 0).
16, 17SM_CXFULLSCREEN, SM_CYFULLSCREEN: ±âº» µð½ºÇ÷¹ÀÌ ¸ð´ÏÅÍÀÇ Àüü-È­¸é â¿¡ ´ëÇÏ¿© Ŭ¶óÀ̾ðÆ® ±¸¿ªÀÇ Çȼ¿´ÜÀ§ ³Êºñ¿Í ³ôÀÌ.
61, 62SM_CXMAXIMIZED, SM_CYMAXIMIZED: ±âº» µð½ºÇ÷¹ÀÌ ¸ð´ÏÅÍÀÇ ÃÖ´ëÈ­µÈ ÃÖ»óÀ§ âÀÇ Çȼ¿ ´ÜÀ§ ±âº» Å©±â.
59, 60SM_CXMAXTRACK, SM_CYMAXTRACK: ĸ¼Ç°ú Å©±â Á¶Àý Å׵θ®°¡ Àִ âÀÇ Çȼ¿ ´ÜÀ§·Î ±âº» ÃÖ´ë Å©±â. ÀÌ Å©±â´Â Àüü ¹ÙÅÁÈ­¸éÀ» °¡¸®Åµ´Ï´Ù. »ç¿ëÀڴ â ÇÁ·¹ÀÓÀ» ²ø¾î ÀÌ Å©±âº¸´Ù ´õ Å©°Ô ¸¸µé ¼ö ¾ø½À´Ï´Ù.
28, 29SM_CXMIN, SM_CYMIN: Çȼ¿´ÜÀ§ âÀÇ ÃÖ´ë ³Êºñ¿Í ³ôÀÌ.
57, 58SM_CXMINIMIZED, SM_CYMINIMIZED: Çȼ¿ ´ÜÀ§ ÃÖ¼ÒÈ­µÈ âÀÇ Å©±â.
34, 35SM_CXMINTRACK, SM_CYMINTRACK: ÇÑ Ã¢ÀÇ ÃÖ¼Ò ÃßÀû ³Êºñ¿Í ³ôÀÌ, Çȼ¿ ´ÜÀ§. »ç¿ëÀڴ â ÇÁ·¹ÀÓÀ» ²ø¾î ÀÌ Å©±âº¸´Ù ´õ ÀÛ°Ô ¸¸µé ¼ö ¾ø½À´Ï´Ù. âÀº WM_GETMINMAXINFO ¸Þ½ÃÁö¸¦ ó¸®Çϸé ÀÌ °ªµéÀ» ¿À¹ö¶óÀ̵å ÇÒ ¼ö ÀÖ½À´Ï´Ù.
0, 1SM_CXSCREEN, SM_CYSCREEN: ±âº» µð½ºÇ÷¹ÀÌ ¸ð´ÏÅÍÀÇ È­¸é ³ôÀÌ¿Í ³Êºñ, Çȼ¿ ´ÜÀ§. ³»Àå º¯¼ö A_ScreenWidth ±×¸®°í A_ScreenHeight¿Í µ¿ÀÏÇÕ´Ï´Ù.
78, 79SM_CXVIRTUALSCREEN, SM_CYVIRTUALSCREEN: °¡»ó È­¸éÀÇ ³Êºñ¿Í ³ôÀÌ, Çȼ¿ ´ÜÀ§ÀÔ´Ï´Ù. °¡»ó È­¸éÀº ¸ðµç µð½ºÇ÷¹ÀÌ ¸ð´ÏÅÍÀÇ »ç°¢ Å׵θ®ÀÔ´Ï´Ù. SM_XVIRTUALSCREEN, SM_YVIRTUALSCREEN´Â °¡»ó È­¸éÀÇ Á»ó ¸ð¼­¸® ÁÂÇ¥ÀÔ´Ï´Ù.
19SM_MOUSEPRESENT: ¸¶¿ì½º°¡ ¼³Ä¡µÇ¾î ÀÖÀ¸¸é 0 ¾Æ´Ñ °ª; ±×·¸Áö ¾ÊÀ¸¸é 0.
75SM_MOUSEWHEELPRESENT: ÈÙ ¸¶¿ì½º°¡ ¼³Ä¡µÇ¾î ÀÖÀ¸¸é 0 ¾Æ´Ñ °ª; ±×·¸Áö ¾ÊÀ¸¸é 0.
63SM_NETWORK: ³×Æ®¿öÅ©°¡ Á¸ÀçÇϸé LSB(Least significant bit)°¡ ¼³Á¤µË´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é Áö¿öÁý´Ï´Ù. ´Ù¸¥ ºñÆ®µéÀº ¹Ì·¡ÀÇ »ç¿ëÀ» À§ÇØ ¿¹¾ßµÇ¾î ÀÖ½À´Ï´Ù.
8193 + SM_REMOTECONTROL: ÀÌ ½Ã½ºÅÛ ¼ýÄ¡´Â Å͹̳Π¼­ºñ½º ȯ°æ¿¡¼­ »ç¿ëµË´Ï´Ù. ÇöÀç ¼¼¼ÇÀÌ ¿ø°Ý Á¦¾îµÇ°í ÀÖÀ¸¸é ±×ÀÇ °ªÀº 0ÀÌ ¾Æ´Õ´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é 0.
4096 + SM_REMOTESESSION: ÀÌ ½Ã½ºÅÛ ¼ýÄ¡´Â Å͹̳Π¼­ºñ½º ȯ°æ¿¡¼­ »ç¿ëµË´Ï´Ù. È£Ãâ ÇÁ·Î¼¼½º°¡ Å͹̳Π¼­ºñ½º Ŭ¶óÀ̾ðÆ® ¼¼¼Ç¿¡ ¿¬°üµÇ¾î ÀÖÀ¸¸é, ¹Ýȯ °ªÀº 0ÀÌ ¾Æ´Õ´Ï´Ù. È£Ãâ ÇÁ·Î¼¼½º°¡ Å͹̳Π¼­¹ö ÄÜ¼Ö ¼¼¼Ç¿¡ ¿¬°üµÇ¾î ÀÖÀ¸¸é, ¹Ýȯ °ªÀº 0ÀÔ´Ï´Ù. ÄÜ¼Ö ¼¼¼ÇÀÌ ¹Ýµå½Ã ¹°¸®Àû ÄܼÖÀ̾î¾ß ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.
70 + SM_SHOWSOUNDS: »ç¿ëÀÚ°¡ ¾îÇø®ÄÉÀ̼ÇÀ» ½Ã°¢ÀûÀ¸·Î Á¤º¸¸¦ º¸¿©ÁÖµµ·Ï ¿ä±¸Çϸé 0ÀÌ ¾Æ´Ñ °ªÀÔ´Ï´Ù. º¸ÅëÀº Á¤º¸¸¦ û°¢ ÇüÅ·θ¸ Á¦½ÃÇÕ´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é 0. +
8192 + SM_SHUTTINGDOWN: ÇöÀç ¼¼¼ÇÀÌ ´ÝÈ÷°í ÀÖ´Â ÁßÀ̸é 0ÀÌ ¾Æ´Ñ °ªÀÔ´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é 0. Windows 2000: ¹ÝȯµÈ °ªÀº Ç×»ó 0ÀÔ´Ï´Ù.
23SM_SWAPBUTTON: ÁÂ¿ì ¸¶¿ì½º ¹öÆ°ÀÇ Àǹ̰¡ ¼­·Î ¹Ù²î¾úÀ¸¸é 0ÀÌ ¾Æ´Õ´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é 0.
76, 77 + SM_XVIRTUALSCREEN, SM_YVIRTUALSCREEN: °¡»ó È­¸éÀÇ Á»ó ¸ð¼­¸® ÁÂÇ¥. °¡»ó È­¸éÀº ¸ðµç µð½ºÇ÷¹ÀÌ ¸ð´ÏÅÍÀÇ »ç°¢ Å׵θ®ÀÔ´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, SM_CXVIRTUALSCREEN, SM_CYVIRTUALSCREEN´Â °¡»ó È­¸éÀÇ ³Êºñ¿Í ³ôÀÌÀÔ´Ï´Ù.
+
+

ÀÚÁÖ »ç¿ëµÇÁö ¾ÊÀ½

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
¹øÈ£¼³¸í
56SM_ARRANGE: ½Ã½ºÅÛÀÌ ÃÖ¼ÒÈ­µÈ âµéÀ» ¾î¶»°Ô Á¤·ÄÇÒÁö ÁöÁ¤ÇÏ´Â Ç÷¡±×. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â MSDN ÂüÁ¶.
67SM_CLEANBOOT: ½Ã½ºÅÛÀÌ ¾î¶»°Ô ½ÃÀÛÇÒÁö¸¦ ÁöÁ¤ÇÕ´Ï´Ù:
+ 0 Á¤»ó ºÎÆ®
+ 1 ¾ÈÀü ºÎÆ®
+ 2 ³×Æ®¿öÅ©°¡ ÀÖ´Â ¾ÈÀü ºÎÆ®
5, 6SM_CXBORDER, SM_CYBORDER: â µ¥Åõ¸®ÀÇ ³Êºñ¿Í ³ôÀÌ, Çȼ¿ ´ÜÀ§. ÀÌ°ÍÀº 3-D ¸ð½ÀÀ» °®Ãá â¿¡ ´ëÇÏ¿© SM_CXEDGE °ª°ú µ¿ÀÏÇÕ´Ï´Ù.
13, 14SM_CXCURSOR, SM_CYCURSOR: Ä¿¼­ÀÇ ³Êºñ¿Í ³ôÀÌ, Çȼ¿ ´ÜÀ§. ½Ã½ºÅÛÀº ´Ù¸¥ Å©±âÀÇ Ä¿¼­¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù.
36, 37SM_CXDOUBLECLK, SM_CYDOUBLECLK: ´õºíŬ¸¯ ¿¬¼Ó¿¡¼­ ù ¹ø° Ŭ¸¯ÀÇ À§Ä¡¸¦ µÑ·¯½Ñ »ç°¢ ±¸¿ªÀÇ ³Êºñ¿Í ³ôÀÌ. Çȼ¿ ´ÜÀ§. µÎ ¹ø° Ŭ¸¯Àº ¹Ýµå½Ã ÀÌ »ç°¢ ±¸¿ª ¾È¿¡¼­ ÀϾ¾ß ½Ã½ºÅÛÀÌ ±× µÎ Ŭ¸¯À» ´õºí Ŭ¸¯À¸·Î °£ÁÖÇÕ´Ï´Ù. (µÎ Ŭ¸¯Àº ¶Ç ÁöÁ¤µÈ ½Ã°£ ¾È¿¡ ÀϾ¾ß ÇÕ´Ï´Ù.)
68, 69SM_CXDRAG, SM_CYDRAG: + µå·¡±× ÁöÁ¡ °¡¿îµ¥¿¡ ³õÀÌ´Â »ç°¢ÇüÀÇ ³Êºñ¿Í ³ôÀÌ. µå·¡±× ¿¬»êÀÌ ½ÃÀ۵DZâ Àü¿¡ ¸¶¿ì½º Æ÷ÀÎÅÍÀÇ Á¦ÇÑµÈ À̵¿À» Çã¿ëÇÕ´Ï´Ù. ±× ´öºÐ¿¡ »ç¿ëÀÚ´Â ÀǵµÄ¡ ¾Ê°Ô µå·¡±× ¿¬»êÀ» ÇÒ ÇÊ¿ä ¾øÀÌ ¸¶¿ì½º¸¦ ½±°Ô Ŭ¸¯ÇÏ°í ³õÀ» ¼ö ÀÖ½À´Ï´Ù.
45, 46SM_CXEDGE, SM_CYEDGE: 3-D Å׵θ®ÀÇ Å©±â, Çȼ¿ ´ÜÀ§. SM_CXBORDER ±×¸®°í SM_CYBORDERÀÇ 3-D ¦ÀÔ´Ï´Ù.
7, 8SM_CXFIXEDFRAME, SM_CYFIXEDFRAME (´ÙÀ½°ú µ¿µî:SM_CXDLGFRAME, SM_CYDLGFRAME): ĸ¼ÇÀº ÀÖÁö¸¸ Å©±â Á¶ÀýÀº ºÒ°¡´ÉÇÑ Ã¢ÀÇ ¿Ü°ûÀÇ ÇÁ·¹ÀÓ µÎ²², Çȼ¿ ´ÜÀ§. SM_CXFIXEDFRAMEÀº ¼öÆò Å׵θ®ÀÇ ³ôÀÌÀÌ°í SM_CYFIXEDFRAMEÀº ¼öÁ÷ Å׵θ®ÀÇ ³ÊºñÀÔ´Ï´Ù.
83, 84SM_CXFOCUSBORDER, SM_CYFOCUSBORDER: ÃÊÁ¡ÀÌ ÀÖ´Â ÇÑ ÄÜÆ®·ÑÀÇ »ç°¢ ±¸¿ªÀÇ ÁÂ¿ì °¡ÀåÀÚ¸® ³Êºñ ±×¸®°í »óÇÏ °¡ÀåÀÚ¸® ³ôÀÌ (Çȼ¿ ´ÜÀ§). Windows 2000: ¹ÝȯµÈ °ªÀº ¾ðÁ¦³ª 0ÀÔ´Ï´Ù.
21, 3SM_CXHSCROLL, SM_CYHSCROLL: ¼öÆò ½ºÅ©·Ñ ¹ÙÀÇ È­»ìÇ¥ ºñÆ®¸ÊÀÇ ³Êºñ, Çȼ¿ ´ÜÀ§; ¼öÆò ½ºÅ©·Ñ ¹ÙÀÇ ³ôÀÌ, Çȼ¿ ´ÜÀ§.
10SM_CXHTHUMB: ¼öÆò ½ºÅ©·Ñ¹ÙÀÇ ¾öÁö ¹Ú½ºÀÇ ³Êºñ, Çȼ¿ ´ÜÀ§.
11, 12SM_CXICON, SM_CYICON: ¾ÆÀÌÄÜÀÇ ±âº» ³Êºñ¿Í ³ôÀÌ, Çȼ¿ ´ÜÀ§.
38, 39SM_CXICONSPACING, SM_CYICONSPACING: Å« ¾ÆÀÌÄÜ ºäÀÇ Ç׸ñ¿¡ ´ëÇÏ¿© °ÝÀÚ ¼¿ÀÇ Å©±â, Çȼ¿ ´ÜÀ§. °¢ Ç׸ñÀº Á¤·ÄµÉ ¶§ ÀÌ Å©±âÀÇ »ç°¢Çü¿¡ ¸Â°Ô Å©±â°¡ ¹Ù²ò´Ï´Ù. ÀÌ °ªµéÀº ¾ðÁ¦³ª SM_CXICON ±×¸®°í SM_CYICONº¸´Ù Å©°Å³ª °°½À´Ï´Ù.
71, 72SM_CXMENUCHECK, SM_CYMENUCHECK: ±âº» ¸Þ´º üũ-Ç¥½Ä ºñÆ®¸ÊÀÇ Å©±â, Çȼ¿ ´ÜÀ§.
54, 55SM_CXMENUSIZE, SM_CYMENUSIZE: ¸Þ´º ¹Ù ¹öÆ°ÀÇ Å©±â, ¿¹¸¦ µé¾î ´ÙÁß ¹®¼­ ÀÎÅÍÆäÀ̽º¿¡ »ç¿ëµÇ´Â ÀÚ¼Õ Ã¢ ´Ý±â ¹öÆ°, Çȼ¿ ´ÜÀ§.
47, 48SM_CXMINSPACING SM_CYMINSPACING: ÃÖ¼ÒÈ­µÈ â¿¡ ´ëÇÑ °ÝÀÚ ¼¿ÀÇ Å©±â, °¢°¢ÀÇ ÃÖ¼ÒÈ­µÈ âÀº Á¤·ÄµÉ ¶§ ÀÌ Å©±âÀÇ »ç°¢Çü ¾È¿¡ ¸Â°Ô Å©±â°¡ Á¶ÀýµË´Ï´Ù. ÀÌ °ªµéÀº ¾ðÁ¦³ª SM_CXMINIMIZED ±×¸®°í SM_CYMINIMIZEDº¸´Ù Å©°Å³ª °°½À´Ï´Ù
30, 31SM_CXSIZE, SM_CYSIZE: âÀÇ Ä¸¼ÇÀ̳ª ŸÀÌƲ ¹Ù¿¡ ÀÖ´Â ¹öÆ°ÀÇ ³Êºñ¿Í ³ôÀÌ, Çȼ¿ ´ÜÀ§.
32, 33SM_CXSIZEFRAME, SM_CYSIZEFRAME: Å©±â Á¶ÀýÀÌ °¡´ÉÇÑ Ã¢ ¿Ü°ûÀÇ Å©±â Á¶Àý Å׵θ®ÀÇ µÎ²², Çȼ¿ ´ÜÀ§. SM_CXSIZEFRAME´Â ¼öÆò Å׵θ®ÀÇ ³ÊºñÀÌ°í, SM_CYSIZEFRAME´Â ¼öÁ÷ Å׵θ®ÀÇ ³ôÀÌÀÔ´Ï´Ù. SM_CXFRAME ±×¸®°í SM_CYFRAME¿Í µ¿ÀǾî.
49, 50SM_CXSMICON, SM_CYSMICON: ÀÛÀº ¾ÆÀÌÄÜ¿¡ ÃßõÇÏ´Â Å©±â, Çȼ¿ ´ÜÀ§. ÀÛÀº ¾ÆÀÌÄÜÀº ÀüÇüÀûÀ¸·Î â ĸ¼Ç°ú ÀÛÀº ¾ÆÀÌÄÜ ºä¿¡ ³ªÅ¸³³´Ï´Ù.
52, 53SM_CXSMSIZE SM_CYSMSIZE: ÀÛÀº ĸ¼Ç ¹öÆ°ÀÇ Å©±â, Çȼ¿ ´ÜÀ§.
2, 20SM_CXVSCROLL, SM_CYVSCROLL: ¼öÁ÷ ½ºÅ©·Ñ¹ÙÀÇ ³Êºñ, Çȼ¿ ´ÜÀ§; ±×¸®°í ¼öÁ÷ ½ºÅ©·Ñ ¹ÙÀÇ È­»ìÇ¥ ºñÆ®¸ÊÀÇ ³ôÀÌ, Çȼ¿ ´ÜÀ§.
4SM_CYCAPTION: ĸ¼Ç ±¸¿ªÀÇ ³ôÀÌ, Çȼ¿ ´ÜÀ§.
18SM_CYKANJIWINDOW: 2 ¹ÙÀÌÆ® ¹®ÀÚ ¼¼Æ® ¹öÀüÀÇ ½Ã½ºÅÛ¿¡ ´ëÇÏ¿©, È­¸é ÇÏ´ÜÀÇ ÇÑÀÚ Ã¢ÀÇ ³ôÀÌÀÔ´Ï´Ù. Çȼ¿ ´ÜÀ§.
15SM_CYMENU: ÇÑ ÁÙ ¸Þ´º¹ÙÀÇ ³ôÀÌ, Çȼ¿ ´ÜÀ§.
51SM_CYSMCAPTION: ÀÛÀº ĸ¼ÇÀÇ ³ôÀÌ, Çȼ¿ ´ÜÀ§.
9SM_CYVTHUMB: ¼öÁ÷ ½ºÅ©·Ñ ¹ÙÀÇ ¾öÁö ¹Ú½ºÀÇ ³ôÀÌ, Çȼ¿ ´ÜÀ§.
42SM_DBCSENABLED: User32.dll°¡ DBCS¸¦ Áö¿øÇϸé 0 ¾Æ´Ñ °ª; ±×·¸Áö ¾ÊÀ¸¸é 0.
22SM_DEBUG: µð¹ö±× ¹öÀüÀÇ User.exe°¡ ¼³Ä¡µÇ¾î ÀÖÀ¸¸é 0 ¾Æ´Ñ °ª; ±×·¸Áö ¾ÊÀ¸¸é 0.
82SM_IMMENABLED: ´Ù±¹¾î ÀÔ·ÂÀÌ °¡´ÉÇϸé 0ÀÌ ¾Æ´Ñ °ª; ±×·¸Áö ¾ÊÀ¸¸é 0. +

SM_IMMENABLED´Â ½Ã½ºÅÛÀÌ À¯´ÏÄÚµå ¾îÇø®ÄÉÀ̼ǿ¡¼­ À¯´ÏÄÚµå ±â¹ÝÀÇ IME¸¦ »ç¿ëÇÒ Áغñ°¡ µÇ¾î ÀÖ´ÂÁö ¾Ë·Á ÁÝ´Ï´Ù. ¾ð¾î-Á¾¼ÓÀû IME°¡ ÀÛµ¿ÇÏ´ÂÁö È®ÀÎÇÏ·Á¸é, SM_DBCSENABLED¿Í ½Ã½ºÅÛ ANSI ÄÚµå ÆäÀÌÁö¸¦ Á¡°ËÇϽʽÿÀ. ±×·¸Áö ¾ÊÀ¸¸é ANSI-to-Unicode º¯È¯ÀÌ ¿Ã¹Ù¸£°Ô ¼öÇàµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ¾Æ´Ï¸é ±Û²ÃÀ̳ª ·¹Áö½ºÆ®¸® ¼³Á¤°ú °°Àº ±¸¼º¿ä¼Ò°¡ Á¸ÀçÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.

87SM_MEDIACENTER: ÇöÀç ¿î¿µ üÁ¦°¡ Windows XP, Media Center EditionÀ̸é 0 ¾Æ´Ñ °ª, ±×·¸Áö ¾ÊÀ¸¸é 0.
40SM_MENUDROPALIGNMENT: µå·Ó-´Ù¿î ¸Þ´º°¡ »óÀÀÇÏ´Â ¸Þ´º ¹Ù Ç׸ñ°ú ÇÔ²² ¿À¸¥ÂÊ Á¤·Ä µÇ¾î ÀÖÀ¸¸é 0 ¾Æ´Ñ °ª, ¸Þ´º°¡ ¿ÞÂÊ Á¤·ÄµÇ¾î ÀÖÀ¸¸é 0.
74SM_MIDEASTENABLED: ½Ã½ºÅÛ¿¡ Hebrew ±×¸®°í Arabic ¾ð¾î°¡ »ç¿ë °¡´ÉÇϸé 0 ¾Æ´Ñ °ª, ±×·¸Áö ¾ÊÀ¸¸é 0.
41SM_PENWINDOWS: Ææ ÄÄÇ»Æà ȮÀåÀÌ ¼³Ä¡µÇ¾î ÀÖÀ¸¸é 0 ¾Æ´Ñ °ª; ±×·¸Áö ¾ÊÀ¸¸é 0.
44SM_SECURE: º¸¾ÈÀÌ ¼³Á¤µÇ¾î ÀÖÀ¸¸é 0 ¾Æ´Ñ °ª; ±×·¸Áö ¾ÊÀ¸¸é 0.
81SM_SAMEDISPLAYFORMAT: ¸ðµç µð½ºÇ÷¹ÀÌ ¸ð´ÏÅÍ°¡ °°Àº Ä÷¯ Æ÷¸ËÀ̸é 0 ¾Æ´Ñ °ª, ±×·¸Áö ¾ÊÀ¸¸é 0. µÎ °³ÀÇ µð½ºÇ÷¹ÀÌ°¡ ºñÆ® ±íÀÌ´Â °°Áö¸¸ Ä÷¯ Æ÷¸ËÀº ´Ù¸¦ ¼ö ÀÖ´Ù´Â °Í¿¡ ÁÖ¸ñÇϽʽÿÀ. ¿¹¸¦ µé¾î, Àû, ³ì, û Çȼ¿Àº ´Ù¸¥ °³¼öÀÇ ºñÆ®·Î ÀÎÄÚµåµÉ ¼ö ÀÖ½À´Ï´Ù. ¶Ç´Â ±×·± ºñÆ®µéÀº ÇÑ Çȼ¿ÀÇ Ä÷¯ °ªÀ¸·Î ´Ù¸¥ Àå¼Ò¿¡ À§Ä¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.
86SM_TABLETPC: ÇöÀç ¿î¿µ üÁ¦°¡ Windows XP Tablet PC ¿¡µð¼ÇÀ̸é 0 ¾Æ´Ñ °ª, ±×·¸Áö ¾ÊÀ¸¸é 0ÀÔ´Ï´Ù.
+

³íÆò

+

+³»Àå º¯¼ö A_ScreenWidth¿Í A_ScreenHeight¿¡ Çȼ¿ ´ÜÀ§·Î ±âº» ¸ð´ÏÅÍÀÇ Å©±â°¡ µé¾î ÀÖ½À´Ï´Ù.

+

°ü·Ã Ç׸ñ

+

+DllCall, WinGet

+

¿¹Á¦

+
; ¿¹Á¦ #1:
+SysGet, MouseButtonCount, 43
+SysGet, VirtualScreenWidth, 78
+SysGet, VirtualScreenHeight, 79
+
+; Example #2: ÀÌ ½ºÅ©¸³Æ®´Â °¢ ¸ð´ÏÅÍÀÇ Á¤º¸¸¦ º¸¿©ÁÝ´Ï´Ù:
+SysGet, MonitorCount, MonitorCount
+SysGet, MonitorPrimary, MonitorPrimary
+MsgBox, Monitor Count:`t%MonitorCount%`nPrimary Monitor:`t%MonitorPrimary%
+Loop, %MonitorCount%
+{
+    SysGet, MonitorName, MonitorName, %A_Index%
+    SysGet, Monitor, Monitor, %A_Index%
+    SysGet, MonitorWorkArea, MonitorWorkArea, %A_Index%
+    MsgBox, Monitor:`t#%A_Index%`nName:`t%MonitorName%`nLeft:`t%MonitorLeft% (%MonitorWorkAreaLeft% work)`nTop:`t%MonitorTop% (%MonitorWorkAreaTop% work)`nRight:`t%MonitorRight% (%MonitorWorkAreaRight% work)`nBottom:`t%MonitorBottom% (%MonitorWorkAreaBottom% work)
+}
+ + + diff --git a/src/docs/commands/Thread.htm b/src/docs/commands/Thread.htm new file mode 100644 index 0000000..ad5c5f4 --- /dev/null +++ b/src/docs/commands/Thread.htm @@ -0,0 +1,68 @@ + + + + +Thread + + + + + + + +

Thread

+ +

+¾²·¹µåÀÇ ¿ì¼± ¼øÀ§¿Í ÀÎÅÍ·´Æ® Çã¿ë ¿©ºÎ¸¦ ¼³Á¤ÇÕ´Ï´Ù. ¶Ç Àӽ÷Π¸ðµç ŸÀ̸Ӹ¦ ²ø ¼ö ÀÖ½À´Ï´Ù.

+ +
Thread, NoTimers [, false]
+Thread, Priority, n
+Thread, Interrupt [, Duration, LineCount]
+
+

Thread, NoTimers [, false]: + +ÇöÀç ¾²·¹µå°¡ Á¾·áÇϰųª, Thread, NoTimers, false¸¦ ½ÇÇàÇϰųª, ¶Ç´Â ŸÀ̸Ӹ¦ Çã¿ëÇÏ´Â ¶Ç´Ù¸¥ ¾²·¹µå¿¡ ÀÇÇÏ¿© ÀÎÅÍ·´Æ®µÉ ¶§±îÁö ´Ù¸¥ ŸÀ̸ÓÀÇ ÀÎÅÍ·´Æ®¸¦ ¸·½À´Ï´Ù (ŸÀ̸Ӹ¦ Çã¿ëÇÏ´Â ¾²·¹µå¶ó¸é ÀÎÅÍ·´Æ®ÇÑ ¾²·¹µå¸¦ Á¾·áÇÒ ¶§±îÁö ÀÎÅÍ·´Æ® ÇÒ ¼ö ÀÖ½À´Ï´Ù).

+

+ÀÚµ¿-½ÇÇà ¼½¼Ç (½ºÅ©¸³Æ®ÀÇ »ó´Ü)¿¡¼­ Thread NoTimers°¡ »ç¿ëµÇÁö ¾Ê¾Ò´Ù¸é, ¸ðµç ¾²·¹µå´Â ŸÀ̸Ӱ¡ ÀÎÅÍ·´Æ® ÇÒ ¼ö ÀÖ´Â »óÅ·Π½ÃÀÛÇÕ´Ï´Ù (¹°·Ð Thread Interrupt [¾Æ·¡]ÀÇ ¼³Á¤Àº ¿©ÀüÈ÷ Àû¿ëµË´Ï´Ù). ´ëÁ¶ÀûÀ¸·Î, ÀÚµ¿-½ÇÇà ¼½¼ÇÀÌ NoTimers À§¿¡¼­ ½ÇÇàµÇÁö¸¸ ŸÀ̸Ӵ ²ôÁö ¾Ê¾Ò´Ù¸é, »õ·Î ±âµ¿µÈ ¾²·¹µå¸¶´Ù (¿¹¸¦ µé¾î ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀ̸Ó) ´Ù¸¥ ŸÀ̸ÓÀÇ ÀÎÅÍ·´Æ®¿¡ ¸é¿ª »óÅ·Π½ÃÀÛÇÕ´Ï´Ù.

+

+±âº» ¼³Á¤¿¡ »ó°ü ¾øÀÌ, ½ºÅ©¸³Æ®¿¡ ¾²·¹µå°¡ ¾ø´Ù¸é ŸÀ̸Ӵ ¾ðÁ¦³ª ÀÛµ¿ÇÕ´Ï´Ù (´Ü, Pause°¡ ÄÑÁø °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù).

+

+Thread, NoTimers´Â Thread, NoTimers, true¿Í µ¿µîÇÕ´Ï´Ù. °Ô´Ù°¡, true/false ¸Æ°³º¯¼ö´Â Ç¥Çö½ÄÀ̹ǷÎ, true´Â 1·Î, ±×¸®°í false´Â 0À¸·Î °áÁ¤µË´Ï´Ù.

+
+

Thread, Priority, n: n¿¡ -2147483648ºÎÅÍ 2147483647 »çÀÌÀÇ Á¤¼ö¸¦ (¶Ç´Â Ç¥Çö½Ä °¡´É) ÁöÁ¤Çϸé ÇöÀç ¾²·¹µåÀÇ »õ ¿ì¼± ¼øÀ§¸¦ ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¾²·¹µå¿¡´Â ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â ¾²·¹µå¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+À̺¥Æ®¸¦ ¹öÆÛ Ã³¸®ÇÒ ¼ö Àֱ⠶§¹®¿¡, ¸í·É¾î CriticalÀº ÀϹÝÀûÀ¸·Î Thread Priorityº¸´Ù ¿ì¼± ¼øÀ§°¡ ³ô½À´Ï´Ù.

+

+°ü·ÃÇÏ¿©, OSÀÇ ¿ì¼± ¼øÀ§ ·¹º§Àº Àüü ½ºÅ©¸³Æ®¿¡ ´ëÇÏ¿© ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù: Process, Priority,, High.

+
+

Thread, Interrupt [, Duration, LineCount]: ÀÌ ¸í·É¾î´Â ¾Æ²¸¼­ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ´ëºÎºÐÀÇ ½ºÅ©¸³Æ®´Â ±âº»°ª¿¡ °¡±õ°Ô ¼³Á¤ÇÒ ¼ö·Ï ´õ ÀÏ°ü¼ºÀÌ ÀÖ°Ô ¼öÇàµÇ±â ¶§¹®ÀÔ´Ï´Ù.

+

+±âº»°ªÀ¸·Î, »õ·Î ±âµ¿µÈ ¾²·¹µå´Â 15¹Ð¸® ÃÊ µ¿¾È(Duration) ¶Ç´Â 1000 ½ºÅ©¸³Æ® ÁÙ(LineCount) µ¿¾È ÀÎÅÍ·´Æ® ÇÒ ¼ö ¾ø½À´Ï´Ù. ¾²·¹µå ¿ì¼± ¼øÀ§¿¡ »ó°üÀÌ ¾ø½À´Ï´Ù. ÀÌ ´öºÐ¿¡ ¾²·¹µå´Â ³¡³¾ ±âȸ°¡ ÀÖ½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ±âµ¿µÇ±â¸¦ ±â´Ù¸®°í ÀÖ´Â ¶Ç´Ù¸¥ ¾²·¹µå¿¡ ÀÇÇÏ¿© Áï½Ã ÀÎÅÍ·´Æ® µÇ¾î ¹ö¸± °ÍÀÔ´Ï´Ù (¿¹¸¦ µé¾î ¹öÆÛ Ã³¸®µÈ ÇÖÅ° ¶Ç´Â ½ÇÇàÀÌ ¿¹¾àµÇ¾î ÀÖ´Â ÀÏ·ÃÀÇ Å¸ÀÌ¸Ó ¼­ºê·çƾ).

+

+µÑ ÁßÀÇ Çϳª°¡ 0À̸é, »õ·Î ±âµ¿µÈ ¾²·¹µå¸¶´Ù Áï½Ã ÀÎÅÍ·´Æ®°¡ °¡´ÉÇÕ´Ï´Ù. µÑ Áß Çϳª°¡ -1À̸é, ±× ¶§¹®¿¡ ±× ¾²·¹µå¸¦ ÀÎÅÍ·´Æ®ÇÒ ¼ö ¾ø½À´Ï´Ù. µÑ ´Ù ÃÖ´ë°ªÀº 2147483647ÀÔ´Ï´Ù.

+

+ +ÀÎÅÍ·´Æ® ¼³Á¤Àº Àü¿ªÀûÀÔ´Ï´Ù. ±× ´ÙÀ½¿¡ ÀϾ´Â ¸ðµç ¾²·¹µå´Â ±× ¼³Á¤À» ÁؼöÇÕ´Ï´Ù. ¼³Á¤ÀÌ ÀÚµ¿-½ÇÇà ¼½¼ÇÀÌ ¾Æ´Ñ ´Ù¸¥ °÷¿¡¼­ ¹Ù²î´õ¶óµµ ¸¶Âù°¡Áö ÀÔ´Ï´Ù. ±×·¸Áö¸¸, ÀÎÅÍ·´Æ® µÈ ¾²·¹µå´Â ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇϸé ÀÎÅÍ·´Æ® ºÒ°¡´É ±âÇÑÀÌ ÀÌ¹Ì °æ°úÇ߱⠶§¹®ÀÔ´Ï´Ù. ºñ½ÁÇÏ°Ô, ÇöÀç ¾²·¹µå´Â ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù. + +´Ü, LineCount°¡ ¹Ù²î´Â ¼ø°£ ÀÎÅÍ·´Æ® ÇÒ ¼ö ¾ø´Ù¸é ¿¹¿ÜÀÔ´Ï´Ù. ÀÌ °æ¿ì »õ LineCount°¡ °Å±â¿¡ ¼³Á¤µË´Ï´Ù.

+

+ÇöÀç ¾²·¹µå°¡ ÀÎÅÍ·´Æ® ºÒ°¡´ÉÇÑ µ¿¾È¿¡ ÇÖÅ°°¡ ´­¸®°Å³ª ¸ÂÃã ¸Þ´º Ç׸ñÀÌ ¼±ÅõǸé, ±× À̺¥Æ®´Â ¹öÆÛ Ã³¸®µË´Ï´Ù. ´Ù¸¥ ¸»·Î, ÇöÀç ¾²·¹µå°¡ Á¾·áÇϰųª ÀÎÅÍ·´Æ®°¡ °¡´ÉÇØÁö¸é ±âµ¿µË´Ï´Ù. ÀÌ¿¡ ´ëÇÑ ¿¹¿Ü´Â ÇöÀç ¾²·¹µå°¡ ³¡³ª±â Àü¿¡ ÀÎÅÍ·´Æ®°¡ °¡´ÉÇØÁú ¶§ ÀÔ´Ï´Ù. ÀÌ ¶§´Â ¹öÆÛ Ã³¸®µÈ À̺¥Æ® º¸´Ù ¿ì¼± ¼øÀ§°¡ ´õ ³ô½À´Ï´Ù; ÀÌ °æ¿ì ¹öÆÛ¿¡ ÀÖ´Â À̺¥Æ®´Â Æä±âµË´Ï´Ù.

+

+ÀÌ ¼³Á¤¿¡ »ó°ü ¾øÀÌ, ¾²·¹µå´Â MsgBox, InputBox, FileSelectFile, ¶Ç´Â FileSelectFolder ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÖ´Â ¼ø°£ ÀÎÅÍ·´Æ®°¡ °¡´ÉÇØÁý´Ï´Ù.

+

+µÑ Áß ¾î´À ÂÊÀÌ¶óµµ ºñ¿ö µÎ¸é ¹Ù²î´Â °ÍÀ» ¸·À» ¼ö ÀÖ½À´Ï´Ù.

+ +

³íÆò

+

+À̺¥Æ®¸¦ ¹öÆÛ Ã³¸®ÇÏ´Â ±×ÀÇ ³î¶ó¿î À¯¿¬¼º°ú ´É·Â ´öºÐ¿¡, ¸í·É¾î CriticalÀº º¸Åë Thread Interrupt¿Í Thread Priority º¸´Ù ´õ À¯¿ëÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

Critical, Threads, Hotkey, Menu, SetTimer, Process

+

¿¹Á¦

+ +
Thread, priority, 1 ; ÇöÀç ¾²·¹µåÀÇ ¿ì¼± ¼øÀ§¸¦ º¸Å뺸´Ù ¾à°£ ´õ ³ô°Ô ¸¸µì´Ï´Ù.
+Thread, interrupt, 0  ; »õ·Î ±âµ¿µÈ ¾²·¹µå¸¶´Ù Áï½Ã ÀÎÅÍ·´Æ® °¡´ÉÇϵµ·Ï ¸¸µì´Ï´Ù:
+Thread, interrupt, 50, 2000  ; ¿ì¼± ¼øÀ§¿¡ »ó°ü ¾øÀÌ °¢ ¾²·¹µå¸¦ 50ms ¶Ç´Â 2000 ÁÙ ÀÌÈÄ¿¡ ÀÎÅÍ·´Æ® °¡´ÉÇϵµ·Ï ¸¸µì´Ï´Ù.
+ + + diff --git a/src/docs/commands/Throw.htm b/src/docs/commands/Throw.htm new file mode 100644 index 0000000..877fad5 --- /dev/null +++ b/src/docs/commands/Throw.htm @@ -0,0 +1,70 @@ + + + + +Throw + + + + + + + +

Throw [v1.1.04+]

+ +

¿¡·¯ÀÇ ÃâÇöÀ» ¾Ë·ÁÁÝ´Ï´Ù. ÀÌ ½ÅÈ£´Â try-catch ¼­¼ú¹®À¸·Î ÀâÀ» ¼ö ÀÖ½À´Ï´Ù.

+ +
Throw [, Expression]
+

¸Å°³º¯¼ö

+
+ +
Expression
+

catchÀÇ OutputVar¿¡ ÀúÀåÇÒ °ª.

+

ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀ̱⠶§¹®¿¡, ´ÙÀ½Àº ¸ðµÎ À¯È¿ÇÑ ¿¹Á¦ÀÔ´Ï´Ù:

+ +
throw 3
+throw "literal string"
+throw MyVar
+throw i + 1
+throw { what: "Custom error", file: A_LineFile, line: A_LineNumber } ; °´Ã¼¸¦ ´øÁý´Ï´Ù.
+

+ÀÌ ¸Å°³º¯¼ö´Â ¾ðÁ¦³ª Ç¥Çö½ÄÀÔ´Ï´Ù. ±×·¡¼­ º¯¼ö ÂüÁ¶´Â ÆÛ¼¾Æ® »çÀÎÀ¸·Î µÑ·¯½Î¸é ¾ÈµË´Ï´Ù. ´Ü, double-deref¸¦ ¼öÇàÇÒ ¶§´Â ¿¹¿ÜÀÔ´Ï´Ù.

+

+[v1.1.05+]: »ý·«µÇ¸é, ±âº» ¸Þ½ÃÁö¿Í ÇÔ²² ¿¹¿Ü °´Ã¼°¡ ´øÁ®Áý´Ï´Ù.

+ +
+ +

Exception(Message [, What, Extra])

+

+´ÙÀ½ Ư¼ºÀ» °¡Áø °´Ã¼¸¦ ¸¸µì´Ï´Ù. ¶ÇÇÑ ½ÇÇà½Ã°£ ¿¡·¯°¡ ¸¸µç ¿¹¿Ü¿¡ ÈçÇÕ´Ï´Ù:

+
    +
  • Message: ¿¡·¯ ¸Þ½ÃÁö ¶Ç´ÂErrorLevel °ª.
  • +
  • What: ¿¡·¯°¡ ÀϾ ¶§ ½ÇÇà ÁßÀÎ ¶Ç´Â ½ÇÇàµÉ ÇÔ¼ö³ª ¶óº§ ¶Ç´Â ¸í·É¾îÀÇ À̸§.
  • +
  • Extra: ¿¡·¯¿¡ °üÇÑ Ãß°¡ Á¤º¸.
  • +
  • File: ¿¡·¯°¡ ÀϾ ÁÙÀÌ ÀÖ´Â ½ºÅ©¸³Æ® ÆÄÀÏÀÇ Àüü °æ·Î¸¦ ÀÚµ¿À¸·Î ¼³Á¤µË´Ï´Ù.
  • +
  • Line: ¿¡·¯°¡ ÀϾ ÁÙ ¹øÈ£¸¦ ÀÚµ¿À¸·Î ¼³Á¤ÇÕ´Ï´Ù.
  • +
+

+WhatÀÌ »ý·«µÇ¸é, ÇöÀç ÇÔ¼ö³ª ¼­ºê·çƾÀÇ À̸§ÀÌ ±âº»°ªÀÌ µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¹®ÀÚ¿­À̰ųª ¶Ç´Â È£Ãâ ½ºÅÃÀÇ À§ÂÊÀ¸·ÎºÎÅÍ ¾Æ·¡·Î À½ÀÇ ¿ÀÇÁ¼ÂÀÏ ¼ö ÀÖ½À´Ï´Ù. + +¿¹¸¦ µé¾î, °ªÀÌ -1À̸é Exception.What¿¡ ÇöÀç ÇÔ¼ö³ª ¼­ºê·çƾÀ» ¼³Á¤ÇÏ°í Exception.Line¿¡ ±×¸¦ È£ÃâÇÑ ÁÙÀ» ¼³Á¤ÇÕ´Ï´Ù. ±×·¸Áö¸¸, ½ºÅ©¸³Æ®°¡ ÄÄÆÄÀÏ µÇ¾ú°Å³ª ¿ÀÇÁ¼ÂÀÌ À¯È¿ÇÏÁö ¾ÊÀ¸¸é, WhatÀº ±×³É ¹®ÀÚ¿­·Î º¯È¯µË´Ï´Ù.

+

+Message¿Í Extra´Â ¹®ÀÚ¿­·Î º¯È¯µË´Ï´Ù. À̰͵éÀº ¿¹¿Ü°¡ ´øÁ®Á³´Âµ¥ ÀâÁö ¸øÇÏ¸é ¿¡·¯ ´ëÈ­»óÀÚ¿¡ º¸¿©Áý´Ï´Ù.

+ +
try
+    BadlyCodedFunc()
+catch e
+    MsgBox % "Error in " e.What ", which was called at line " e.Line 
+
+BadlyCodedFunc() {
+    throw Exception("Fail", -1)
+}
+ +

°ü·Ã Ç׸ñ

+

Try, Catch, Finally

+ +

¿¹Á¦

+

Try¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ + + diff --git a/src/docs/commands/ToolTip.htm b/src/docs/commands/ToolTip.htm new file mode 100644 index 0000000..2bdb084 --- /dev/null +++ b/src/docs/commands/ToolTip.htm @@ -0,0 +1,66 @@ + + + + +ToolTip + + + + + + + +

ToolTip

+ +

È­¸é ¾Æ¹«µ¥³ª Ç×»ó-À§¿¡ âÀ» ¸¸µì´Ï´Ù.

+ +
ToolTip [, Text, X, Y, WhichToolTip]
+

¸Å°³º¯¼ö

+
+ +
Text
+

ºñ¾î Àְųª »ý·«µÇ¸é, ±âÁ¸ÀÇ ÅøÆÁÀÌ ¼û½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ÀÌ ¸Å°³º¯¼ö´Â ÅøÆÁ¿¡ º¸¿©ÁÙ ÅؽºÆ®ÀÔ´Ï´Ù. ¿©·¯-ÁÙ ÅøÆÁÀ» »ý¼ºÇÏ·Á¸é, ¶óÀÎÇÇµå ¹®ÀÚ(`n)¸¦ °¢ ÁÙ »çÀÌ¿¡ »ç¿ëÇϽʽÿÀ. ¿¹, Line1`nLine2.

+

+ Text°¡ ±æ¸é, °Ô¼Ó ¼½¼ÇÀ» ¼ö´ÜÀ¸·Î ¿©·¯ °³ÀÇ ÂªÀº ÁÙ·Î ºÐ¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é °¡µ¶¼º°ú À¯Áö°ü¸®¼ºÀÌ Çâ»óµË´Ï´Ù.

+ +
X, Y
+

ÅøÆÁÀÇ X¿Í YÀÇ À§Ä¡. È°¼º â¿¡ »ó´ëÀûÀÔ´Ï´Ù (È­¸é ÁÂÇ¥¸¦ º¯°æÇÏ·Á¸é CoordMode, ToolTipÀ» »ç¿ëÇϽʽÿÀ). ÁÂÇ¥°¡ »ý·«µÇ¸é, ÅøÆÁÀº ¸¶¿ì½º ±Ùó¿¡ ³ªÅ¸³³´Ï´Ù. X¿Í Y´Â Ç¥Çö½ÄÀÌ °¡´ÉÇÕ´Ï´Ù.

+ +
WhichToolTip
+

¿©·¯ ÅøÆÁÀ» µ¿½Ã¿¡ º¸¿©ÁÙ ÇÊ¿ä°¡ ¾ø´Ù¸é ÀÌ ¸Å°³º¯¼ö¸¦ »ý·«ÇϽʽÿÀ. ±×·¸Áö ¾ÊÀ¸¸é, ÀÌ°ÍÀº 1ºÎÅÍ 20 »çÀÌÀÇ ¼ýÀÚ·Î ¾î´À ÅøÆÁ â¿¡ ÀÛ¿ëÇØ¾ß ÇÏ´ÂÁö ³ªÅ¸³À´Ï´Ù. ÀÌ°ÍÀÌ ÁöÁ¤µÇÁö ¾ÊÀ¸¸é, ±× ¹øÈ£´Â 1ÀÔ´Ï´Ù (ù ¹ø°). ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÌ °¡´ÉÇÕ´Ï´Ù.

+ +
+

³íÆò

+

+X & Y ÁÂÇ¥°¡ ÅøÆÁÀ» È­¸é ¹Û¿¡ ³ªÅ¸³ªµµ·Ï ¸¸µç´Ù¸é, ¿ÏÀüÈ÷ º¸ÀÌ°Ô ÁÂÇ¥°¡ Àç¼³Á¤µË´Ï´Ù.

+

+ÅøÆÁÀº ´ÙÀ½ Áß Çϳª°¡ ÀϾ ¶§±îÁö º¸¿©Áý´Ï´Ù:

+
    +
  • ½ºÅ©¸³Æ®°¡ Á¾·áÇÕ´Ï´Ù.
  • +
  • ÅøÆÁ ¸í·É¾î°¡ ºó Text ¸Å°³º¯¼ö¿Í ÇÔ²² ´Ù½Ã ½ÇÇàµÇ¾ú½À´Ï´Ù.
  • +
  • »ç¿ëÀÚ°¡ ÅøÆÁ¿¡ Ŭ¸¯ÇÕ´Ï´Ù (ÀÌ ÇàÀ§´Â ¿î¿µ üÁ¦ÀÇ ¹öÀü¿¡ µû¶ó ´Ù¸¨´Ï´Ù).
  • +
+

+GUI âÀ» Gui +OwnDialogs¸¦ ¼ö´ÜÀ¸·Î ÅøÆÁÀÇ ¼ÒÀ¯ÁÖ·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ±×·± ÅøÆÁÀº ¼ÒÀ¯ÁÖ°¡ Æı«µÉ ¶§ ÀÚµ¿À¸·Î Æı«µË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+CoordMode, TrayTip, GUI, Progress, SplashTextOn, MsgBox, InputBox, FileSelectFile, FileSelectFolder

+ +

¿¹Á¦

+
ToolTip, ¿©·¯ ÁÙ`nÅøÆÁ µ¥¸ð, 100, 150
+
+; ÅøÆÁÀ» ÀÏÁ¤ ½Ã°£ ÈÄ¿¡ »ç¶óÁö°Ô ¸¸µì´Ï´Ù
+; SleepÀ» »ç¿ëÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù (ÀÌ°ÍÀº ÇöÀç ¾²·¹µå¸¦ ¸ØÃä´Ï´Ù):
+#Persistent
+ToolTip, ½Ã°£ Á¦ÇÑÀÌ ÀÖ´Â ÅøÆÁ`nÀÌ ÅøÆÁÀº 5 ÃÊ ÈÄ¿¡ »ç¶óÁý´Ï´Ù.
+SetTimer, RemoveToolTip, 5000
+return
+
+RemoveToolTip:
+SetTimer, RemoveToolTip, Off
+ToolTip
+return
+ + + diff --git a/src/docs/commands/Transform.htm b/src/docs/commands/Transform.htm new file mode 100644 index 0000000..e814e07 --- /dev/null +++ b/src/docs/commands/Transform.htm @@ -0,0 +1,149 @@ + + + + +Transform + + + + + + + +

Transform

+ +

´Ù¾çÇÑ ¼öÇÐ ±â´É°ú ºñÆ®º° ¿¬»ê ±×¸®°í ASCII/Unicode º¯È¯ °°Àº ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù.

+ +
Transform, OutputVar, Cmd, Value1 [, Value2]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

CmdÀÇ °á°ú¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§. SetFormatÀº Á¤¼ö°¡ ½ÊÀ°Áø¼ö·Î ÀúÀåµÉÁö ¾Æ´Ï¸é ½ÊÁø¼ö·Î ÀúÀåµÉÁö °áÁ¤ÇÕ´Ï´Ù.

+ +
Cmd, Value1/2
+

¾Æ·¡ ¸®½ºÆ® ÂüÁ¶.

+ +
+ +

Cmd, Value1, Value2

+

+Cmd, Value1 ±×¸®°í Value2 ¸Å°³º¯¼ö´Â ¼­·Î ÀÇÁ¸ÀûÀÔ´Ï´Ù. ±×¸®°í ±× »ç¿ë¹ýÀº ¾Æ·¡¿¡ ±â¼úÇÕ´Ï´Ù.

+

+Unicode [, String]: (ÀÌ ¸í·É¾î´Â À¯´ÏÄÚµå ¹öÀüÀÇ ¿ÀÅäÇÖÅ°¿¡´Â ¾ø½À´Ï´Ù.) Ŭ¸³º¸µåÀÇ À¯´ÏÄÚµå ÅؽºÆ®¸¦ ¿­¶÷Çϰųª ÀúÀåÇÕ´Ï´Ù. ÁÖÀÇ: Àüü Ŭ¸³º¸µå´Â ClipboardAllÀ» »ç¿ëÇÏ¿© ¿­¶÷ÇÏ°í ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô Çϸé Ŭ¸³º¸µåÀÇ ¿øº» ³»¿ëÀÇ ¼Õ½Ç ¾øÀÌ "Transform Unicode"°¡ ÀÛµ¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+´ÙÀ½ ¿¹Á¦¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ µÎ °¡Áö ¿¬»ê ¸ðµå°¡ ÀÖ½À´Ï´Ù:

+ +
Transform, OutputVar, Unicode  ; Ŭ¸³º¸µåÀÇ À¯´ÏÄÚµå ÅؽºÆ®¸¦ UTF-8 ¹®ÀÚ¿­·Î ¿­¶÷ÇÕ´Ï´Ù.
+Transform, Clipboard, Unicode, %MyUTF_String%  ; À¯´ÏÄÚµå ÅؽºÆ®¸¦ Ŭ¸³º¸µå¿¡ ¹èÄ¡ÇÕ´Ï´Ù.
+

+À§ÀÇ µÎ ¹ø° ¿¹Á¦¿¡¼­ %MyUTF_String% ´ë½Å¿¡, ±âÈ£ ±×´ë·ÎÀÇ UTF-8 ¹®ÀÚ¿­À» ¼±ÅÃÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+´ÙÀ½°ú °°Àº ÇÖÅ°¸¦ »ç¿ëÇϸé ÁÖ¾îÁø À¯´ÏÄÚµå ¹®ÀÚ¿­¿¡ »óÀÀÇÏ´Â UTF-8 ¹®ÀÚ¿­À» ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù:

+ +
^!u::  ; Control+Alt+U ÇÖÅ°.
+MsgBox À¯´ÏÄÚµå ÅؽºÆ®¸¦ Ŭ¸³º¸µå¿¡ º¹»çÇÑ ´ÙÀ½, ÀÌ Ã¢À¸·Î µ¹¾Æ¿É´Ï´Ù. °è¼ÓÇÏ·Á¸é OK¸¦ ´©¸£½Ê½Ã¿À.
+Transform, ClipUTF, Unicode
+Clipboard = Transform, Clipboard, Unicode, %ClipUTF%`r`n
+MsgBox Ŭ¸³º¸µå¿¡ ÀÌÁ¦ ´ÙÀ½ ÁÙÀÌ ´ã°Ü ÀÖ½À´Ï´Ù. ½ºÅ©¸³Æ®¿¡ ºÙ¿© ³ÖÀ» ¼ö ÀÖ½À´Ï´Ù. ½ÇÇàÇϸé, ÀÌ ÁÙÀº ¿©·¯ºÐÀÌ º¹»çÇÑ ¿ø·¡ÀÇ À¯´ÏÄÚµå ¹®ÀÚ¿­À» Ŭ¸³º¸µå¿¡ ¹èÄ¡ÇÕ´Ï´Ù:`n`n%Clipboard%
+return
+

+ÁÖÀÇ: Send {U+nnnn} ¸í·É¾î´Â À¯´ÏÄÚµå ¹®ÀÚ¸¦ »ý»êÇÏ´Â ¶Ç´Ù¸¥ ¹æ¹ýÀÔ´Ï´Ù.

+

+Asc, String: StringÀÇ Ã¹ ¹®ÀÚ¿¡ ´ëÇÏ¿© ASCII Äڵ带 ¿­¶÷ÇÕ´Ï´Ù (1ºÎÅÍ 255 »çÀÌÀÇ ¼ýÀÚ). StringÀÌ ºñ¾î ÀÖÀ¸¸é, OutputVarµµ ºñ¿öÁý´Ï´Ù. ¿¹¸¦ µé¾î: Transform, OutputVar, Asc, %VarContainingString%. »óÀÀÇÏ´Â ÇÔ¼ö: Asc(String).

+

+Chr, Value1: Value1·Î ÁöÁ¤ÇÑ ASCII Äڵ忡 »óÀÀÇÏ´Â ¹®ÀÚ Çϳª¸¦ ¿­¶÷ÇÕ´Ï´Ù. Value1ÀÌ 1°ú 255 »çÀÌ¿¡ ÀÖÁö ¾ÊÀ¸¸é, OutputVar´Â ºñ¿öÁ®¼­ ¹®Á¦°¡ ÀÖÀ½À» ³ªÅ¸³À´Ï´Ù. ¿¹¸¦ µé¾î: Transform, OutputVar, Chr, 130. »óÀÀÇÏ´Â ÇÔ¼ö: Chr(Number).

+

+Deref, String: º¯¼ö ÂüÁ¶ ±×¸®°í ´Ù¸¥ º¯¼ö ¾È¿¡ µé¾î ÀÖ´Â ÇǽŠ¿¬¼Ó¿­À» È®´ëÇÕ´Ï´Ù. Çü½ÄÀÌ ³ª»Û º¯¼ö ÂüÁ¶´Â È®´ë °á°ú¿¡¼­ »ý·«µË´Ï´Ù. OutputVar°¡ ÀÚ½ÅÀ¸·Î È®´ëµÇ´Â °æ¿ì¿¡µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù; ´Ù¸¥ ¸»·Î, StringÀÇ º¯¼ö ¾È¿¡¼­ OutputVar¸¦ ÂüÁ¶Çϸé È®´ë °á°ú·ÎºÎÅÍ Á¦¿ÜµË´Ï´Ù (±×·¸Áö¸¸ String ÀÚü´Â %OutputVar%°¡ µÉ ¼ö ÀÖ½À´Ï´Ù). +´ÙÀ½ ¿¹Á¦¿¡¼­, var1¿¡ ¹®ÀÚ¿­ "test"°¡ ´ã°Ü ÀÖ°í var2¿¡ ±âÈ£ ±×´ë·ÎÀÇ ¹®ÀÚ¿­ "%var1%"ÀÌ ´ã°Ü ÀÖ´Ù¸é, OutputVar´Â ¹®ÀÚ¿­ "test"°¡ ¼³Á¤µÉ °ÍÀÔ´Ï´Ù: Transform, OutputVar, deref, %var2%. + +ÇÔ¼ö ¾È¿¡¼­, String ¾ÈÀÇ °¢ º¯¼ö´Â ¾ðÁ¦³ª Áö¿ª º¯¼ö·Î °áÁ¤³³´Ï´Ù. ´Ü, ±×·± º¯¼ö°¡ ¾øÀ» °æ¿ì´Â Àü¿ª º¯¼ö·Î °áÁ¤µË´Ï´Ù (¶Ç´Â ¾Æ¹«°Íµµ ¾ø´Ù¸é ºñ¿öÁý´Ï´Ù).

+

+HTML, String [, Flags]:

+

+ANSI ½ÇÇàÆÄÀÏ¿¡ ´ëÇÏ¿©: ¹®ÀÚ¿­(String)À» ±×ÀÇ HTML µ¿µî¹°·Î º¯È¯ÇÕ´Ï´Ù. ASCII °ªÀÌ 127ÀÌ ³Ñ´Â ¹®ÀÚ¸¦ »óÀÀÇÏ´Â HTML À̸§À¸·Î º¯È¯ÇÕ´Ï´Ù (¿¹, £´Â &pound;°¡ µË´Ï´Ù). °Ô´Ù°¡, ´ÙÀ½ ³× °³ÀÇ "&<> ¹®ÀÚ´Â &quot;&amp;&lt;&gt;·Î º¯È¯µË´Ï´Ù. ¸¶Áö¸·À¸·Î, °¢ ¶óÀÎÇǵå(`n)´Â <br>`nÀ¸·Î º¯È¯µË´Ï´Ù (Áï, <br> ´ÙÀ½¿¡ ¶óÀÎÇǵå). Flags ¸Å°³º¯¼ö´Â ¹«½ÃµË´Ï´Ù.

+

+À¯´ÏÄÚµå ½ÇÇàÆÄÀÏ¿¡ ´ëÇÏ¿©: À§ÀÇ ±â´É ¸»°íµµ, Flags´Â 0ÀÌ µÇ°Å³ª ¾Æ´Ï¸é ´ÙÀ½ °ªµéÀÌ Á¶ÇÕ(ÇÕ)ÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. »ý·«Çϸé, ±âº»°ªÀº 1ÀÔ´Ï´Ù.

+
    +
  • 1: ¾î¶² ¹®ÀÚµéÀ» À̸§ºÙÀΠǥÇö½ÄÀ¸·Î º¯È¯ÇÕ´Ï´Ù. ¿¹, €´Â &euro;À¸·Î º¯È¯µË´Ï´Ù
  • +
  • 2: ¾î¶² ¹®ÀÚµéÀ» ¹øÈ£ºÙÀΠǥÇö½ÄÀ¸·Î º¯È¯ÇÕ´Ï´Ù. ¿¹, €´Â &#8364;À¸·Î º¯È¯µË´Ï´Ù
  • +
+

+¿ÀÁ÷ ºñ-ASCII ¹®ÀÚ¸¸ ¿µÇâÀ» ¹Þ½À´Ï´Ù. Flags = 3À̸é, ¹øÈ£ºÙÀΠǥÇö½ÄÀº À̸§ºÙÀΠǥÇö½ÄÀÌ »ç¿ë ºÒ°¡´ÉÇÒ °æ¿ì¿¡¸¸ »ç¿ëµË´Ï´Ù. ´ÙÀ½ ¹®ÀÚµéÀº ¾ðÁ¦³ª º¯È¯µË´Ï´Ù: <>"& ±×¸®°í `n (¶óÀÎÇǵå).

+

+FromCodePage / ToCodePage: ºñÃßõ. ´ë½Å StrPut() / StrGet()À» »ç¿ëÇϽʽÿÀ.

+

+Mod, Dividend, Divisor: ³ª´µ´Â¼ö(Dividend)¸¦ ³ª´©´Â¼ö(Divisor)·Î ³ª´« ³ª¸ÓÁö¸¦ ¿­¶÷ÇÕ´Ï´Ù. Divisor°¡ 0À̸é, OutputVar´Â ºñ¿öÁý´Ï´Ù. Dividend¿Í Divisor°¡ ¸ðµÎ ¼Ò¼öÁ¡À» ´ãÀ» ¼ö ÀÖ½À´Ï´Ù. À½¼öÀ̸é, Divisor´Â °è»êÀ» À§ÇØ ¾ç¼ö·Î Ãë±ÞµË´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­, °á°ú´Â 2ÀÔ´Ï´Ù: Transform, OutputVar, mod, 5, 3. »óÀÀÇÏ´Â ÇÔ¼ö: Mod(Dividend, Divisor).

+

+Pow, Base, Exponent: ¹Ø¼ö(Base)¸¦ Áö¼ö(Exponent) Á¦°öÇÏ¿© ¿­¶÷ÇÕ´Ï´Ù. + +Base¿Í Exponent ¸ðµÎ ¼Ò¼öÁ¡À» Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù. Exponent°¡ À½¼öÀ̸é, OutputVar´Â ºÎµ¿ ¼Ò¼öÁ¡ ¼ö·Î Æ÷¸ËµË´Ï´Ù. Base¿Í Exponent µÑ ´Ù Á¤¼ö¶óµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. 1.5¿Í °°ÀÌ ¼Ò¼öÇü Áö¼ö(Exponent)¿Í °áÇÕµÈ À½ÀÇ Base´Â Áö¿øÇÏÁö ¾Ê½À´Ï´Ù; ±×·¯¸é OutputVar°¡ ºñ¿öÁý´Ï´Ù. ¶Ç ´ÙÀ½µµ ÂüÁ¶ÇϽʽÿÀ: ** operator.

+

+Exp, N: e¸¦ (´ë·« 2.71828182845905) N Á¦°öÇØ ¿­¶÷ÇÕ´Ï´Ù. NÀº À½¼öÀÏ ¼ö ÀÖÀ¸¸ç ¼Ò¼ö Á¡À» Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù. »óÀÀÇÏ´Â ÇÔ¼ö: Exp(N).

+

+Sqrt, Value1: Value1ÀÇ Á¦°ö±ÙÀ» ±¸ÇÕ´Ï´Ù. Value1°¡ À½¼öÀ̸é, OutputVar´Â ºñ¿öÁý´Ï´Ù. »óÀÀÇÏ´Â ÇÔ¼ö: Sqrt(Number).

+

+Log, Value1: Value1ÀÇ (¹Ø¼ö°¡ 10ÀÎ) »ó¿ë ·Î±×¸¦ ±¸ÇÕ´Ï´Ù. Value1°¡ À½¼öÀ̸é, OutputVar´Â ºñ¿öÁý´Ï´Ù. »óÀÀÇÏ´Â ÇÔ¼ö: Log(Number).

+

+Ln, Vaue1: Value1ÀÇ (¹Ø¼ö°¡ eÀÎ) ÀÚ¿¬ ·Î±×¸¦ ¿­¶÷ÇÕ´Ï´Ù. Value1ÀÌ À½¼öÀ̸é, OutputVar´Â ºñ¿öÁý´Ï´Ù. »óÀÀÇÏ´Â ÇÔ¼ö: Ln(Number).

+

+Round, Value1 [, N]: NÀ» »ý·«Çϸé, OutputVar´Â Value1ÀÌ °¡Àå °¡±î¿î Á¤¼ö·Î ¹Ý¿Ã¸²µÇ¾î ¼³Á¤µË´Ï´Ù. NÀÌ ¾ç¼öÀ̸é, Value1Àº N ¼Ò¼öÁ¡ ÀÚ¸®¿¡¼­ ¹Ý¿Ã¸²µË´Ï´Ù. NÀÌ À½¼öÀ̸é, Value1´Â N ÀÚ¸®¸¸Å­ ¼Ò¼öÁ¡ ¿ÞÂÊ¿¡¼­ ¹Ý¿Ã¸²µË´Ï´Ù. ¿¹¸¦ µé¾î, -1À̸é ù ° ÀÚ¸®¿¡¼­ ¹Ý¿Ã¸²µÇ°í, -2À̸é 10ÀÌ ÀÚ¸®¿¡¼­, ±×¸®°í -3ÀÌ¸é ¹éÀÇ ÀÚ¸®¿¡¼­ ¹Ý¿Ã¸²µË´Ï´Ù. ÁÖÀÇ: Round´Â ¼Ò¼ö ÀÚ¸®¿¡¼­ ¹Ý¿Ã¸²ÇÒ ¶§ µÚ¿¡ µû¸£´Â 0À» Á¦°ÅÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, 12.333À» ¼Ò¼ö ù ° ÀÚ¸®¿¡¼­ ¹Ý¿Ã¸²Çϸé 12.300000ÀÌ µË´Ï´Ù. ÀÌ ÇàÀ§´Â ¿¬»êÀ» Çϱâ Àü¿¡SetFormat, Float, 0.1°ú °°ÀÌ ¼³Á¤ÇÏ¸é ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù (½ÇÁ¦·Î, SetFormatÀ» »ç¿ëÇϸé ù ° ÀÚ¸®¿¡¼­ Round¸¦ »ç¿ëÇÒ ÇÊ¿äÁ¶Â÷ ¾ø½À´Ï´Ù). »óÀÀÇÏ´Â ÇÔ¼ö: Round(Number [, N]).

+

+Ceil, Value1: Value1À» °¡Àå °¡±î¿î Á¤¼ö·Î ¿Ã¸²ÇÏ¿© ¿­¶÷ÇÕ´Ï´Ù. »óÀÀÇÏ´Â ÇÔ¼ö: Ceil(Number).

+

+Floor, Value1: Value1À» °¡Àå °¡±î¿î Á¤¼ö·Î ³»¸²ÇÏ¿© ¿­¶÷ÇÕ´Ï´Ù. »óÀÀÇÏ´Â ÇÔ¼ö: Floor(Number).

+

+Abs, Value1: Value1ÀÇ Àý´ë °ªÀ» ¿­¶÷ÇÕ´Ï´Ù. Value1¿¡¼­ ¸¶À̳ʽº°¡ ¾Õ¿¡ ÀÖ´Ù¸é Á¦°ÅÇØ ¹ö¸®°í µ¹·ÁÁÝ´Ï´Ù. »óÀÀÇÏ´Â ÇÔ¼ö: Abs(Number).

+

+Sin, Value1: Value1ÀÇ »çÀÎ °ªÀ» ¿­¶÷ÇÕ´Ï´Ù. Value1Àº È£µµ·Î Ç¥ÇöµÇ¾î¾ß ÇÕ´Ï´Ù. »óÀÀÇÏ´Â ÇÔ¼ö: Sin(Number).

+

+Cos, Value1: Value1ÀÇ ÄÚ»çÀÎ °ªÀ» ¿­¶÷ÇÕ´Ï´Ù. Value1Àº È£µµ·Î Ç¥ÇöµÇ¾î¾ß ÇÕ´Ï´Ù. »óÀÀÇÏ´Â ÇÔ¼ö: Cos(Number).

+

+Tan, Value1: em>Value1ÀÇ ÅºÁ¨Æ® °ªÀ» ¿­¶÷ÇÕ´Ï´Ù. Value1Àº È£µµ·Î Ç¥ÇöµÇ¾î¾ß ÇÕ´Ï´Ù. »óÀÀÇÏ´Â ÇÔ¼ö: Tan(Number).

+

+ASin, Value1: È£µµ ´ÜÀ§·Î ¾ÆÅ©»çÀÎ °ªÀ» ¿­¶÷ÇÕ´Ï´Ù (Value1Àº »çÀÎ °ª). +Value1°¡ -1º¸´Ù À۰ųª 1º¸´Ù Å©¸é, OutputVar´Â ºñ¿öÁý´Ï´Ù. »óÀÀÇÏ´Â ÇÔ¼ö: ASin(Number).

+

+ACos, Value1: È£µµ ´ÜÀ§·Î ¾ÆÅ©ÄÚ»çÀÎÀ» ¿­¶÷ÇÕ´Ï´Ù (Value1Àº ÄÚ»çÀÎ °ª). +Value1ÀÌ -1º¸´Ù À۰ųª 1º¸´Ù Å©¸é, OutputVar´Â ºñ¿öÁý´Ï´Ù. »óÀÀÇÏ´Â ÇÔ¼ö: ACos(Number).

+

+ATan, Value1: È£µµ ´ÜÀ§·Î ¾ÆũźÁ¨Æ®¸¦ ¿­¶÷ÇÕ´Ï´Ù (Value1Àº źÁ¨Æ® °ª). »óÀÀÇÏ´Â ÇÔ¼ö: ATan(Number).

+
+

+ÁÖÀÇ: ´ÙÀ½ÀÇ ºñÆ®º° ¿¬»êÀº Ç¥Çö½Ä¿¡ »ç¿ëÇϱâ À§ÇØ ´õ °£°áÇÑ ºñÆ®º° ¿¬»êÀÚ¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.

+

+BitNot, Value1: Value1À» ºñÆ®º°·Î µÚÁý¾î¼­ OutputVar¿¡ ÀúÀåÇÕ´Ï´Ù (Value1ÀÌ ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀ̸é, °è»ê Àü¿¡ Á¤¼ö·Î À߶ó³À´Ï´Ù). + +Value1ÀÌ 0ºÎÅÍ 4294967295 (0xffffffff) »çÀÌÀ̸é, ºÎÈ£ ¾ø´Â 32-ºñÆ® °ªÀ¸·Î Ãë±ÞµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ºÎÈ£ ÀÖ´Â 64-ºñÆ® °ªÀ¸·Î Ãë±ÞµË´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­, ±× °á°ú´Â 0xfffff0f0 (4294963440)ÀÔ´Ï´Ù: Transform, OutputVar, BitNot, 0xf0f.

+

+BitAnd, Value1, Value2: Value1°ú Value2¸¦ ºñÆ®º°-ANDÇÑ °á°ú¸¦ ¿­¶÷ÇÕ´Ï´Ù (ºÎµ¿ ¼Ò¼öÁ¡ °ªÀº °è»ê Àü¿¡ Á¤¼ö·Î Àß·Á ³ª°©´Ï´Ù). ´ÙÀ½ ¿¹Á¦¿¡¼­, ±× °á°ú´Â 0xff00 (65280)ÀÔ´Ï´Ù: Transform, OutputVar, BitAnd, 0xff0f, 0xfff0.

+

+BitOr, Value1, Value2: Value1°ú Value2¸¦ ºñÆ®º°-ORÇÑ °á°ú¸¦ ¿­¶÷ÇÕ´Ï´Ù (ºÎµ¿ ¼Ò¼öÁ¡ °ªÀº Á¤¼ö·Î Àß¶ó ³½ ´ÙÀ½ °è»êÇÕ´Ï´Ù). ´ÙÀ½ ¿¹Á¦¿¡¼­ ±× °á°ú´Â 0xf0f0 (61680)ÀÔ´Ï´Ù: Transform, OutputVar, BitOr, 0xf000, 0x00f0.

+

+BitXOr, Value1, Value2:Value1°í Value2¸¦ ºñÆ®º°-EXCLUSIVE-ORÇÑ °á°ú¸¦ ¿­¶÷ÇÕ´Ï´Ù (ºÎµ¿ ¼Ò¼öÁ¡ °ªÀº Á¤¼ö·Î Àß¶ó³½ ´ÙÀ½ °è»êÇÕ´Ï´Ù). ´ÙÀ½ ¿¹Á¦¿¡¼­ ±× °á°ú´Â 0xff00 (65280)ÀÔ´Ï´Ù: Transform, OutputVar, BitXOr, 0xf00f, 0x0f0f.

+

+BitShiftLeft, Value1, Value2: Value1À» ¿ÞÂÊÀ¸·Î Value2 ºñÆ® À§Ä¡ ¸¸Å­ À̵¿ÇÑ °á°ú¸¦ ¿­¶÷ÇÕ´Ï´Ù. ÀÌ °ªÀº Value1À» "Value2 Á¦°ö¸¸Å­ °öÇÑ" °Í°ú µ¿µîÇÕ´Ï´Ù. +(ºÎµ¿ ¼Ò¼öÁ¡ °ªÀº Á¤¼ö·Î Àß¶ó³½ ´ÙÀ½ °è»êÇÕ´Ï´Ù). ´ÙÀ½ ¿¹Á¦¿¡¼­ ±× °á°ú´Â 8ÀÔ´Ï´Ù: Transform, OutputVar, BitShiftLeft, 1, 3.

+

+BitShiftRight, Value1, Value2: Value1À» ¿À¸¥ÂÊÀ¸·Î Value2 ºñÆ® À§Ä¡¸¸Å­ À̵¿ÇÑ °á°ú¸¦ ¿­¶÷ÇÕ´Ï´Ù. ÀÌ °ªÀº Value1À» " Value2 Á¦°ö¸¸Å­ ³ª´«" °Í°ú µ¿µîÇÕ´Ï´Ù. ³ª¸ÓÁö´Â Àß¶ó³» ¹ö¸³´Ï´Ù. +(ºÎµ¿ ¼Ò¼öÁ¡ °ªÀº Á¤¼ö·Î Àß¶ó³½ ´ÙÀ½ °è»êÇÕ´Ï´Ù). ´ÙÀ½ ¿¹Á¦¿¡¼­ ±× °á°ú´Â 2ÀÔ´Ï´Ù: Transform, OutputVar, BitShiftRight, 17, 3.

+ +

³íÆò

+

+¼ýÄ¡ ¸Å°³º¯¼ö¸¦ ¹Þ´Â ºÎ-¸í·É¾î´Â ±×·± ¸Å°³º¯¼ö¿¡ ´ëÇÏ¿© Ç¥Çö½Äµµ ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù.

+

+Value1 ¶Ç´Â Value2°¡ ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀ̸é, ´ÙÀ½ ¸í·É¾î(Cmd)µéÀº Á¤¼ö°¡ ¾Æ´Ï¶ó ºÎµ¿ ¼Ò¼öÁ¡ ¼ö¸¦ ¿­¶÷ÇÕ´Ï´Ù: Mod, Pow, Round, ±×¸®°í Abs. ¿­¶÷µÈ ¼Ò¼ö ºÎºÐÀÇ ÀÚ¸®¼ö´Â SetFormatÀ¸·Î °áÁ¤µË´Ï´Ù.

+

+È£µµ °ªÀ» °¢µµ·Î º¯È¯ÇÏ·Á¸é, 180/pi (´ë·« 57.29578)¸¦ °öÇϽʽÿÀ. °¢µµ¸¦ È£µµ·Î º¯È¯ÇÏ·Á¸é pi/180 (´ë·« 0.01745329252)¸¦ °öÇϽʽÿÀ.

+

+piÀÇ °ªÀº (´ë·« 3.141592653589793) 1 ¾ÆũźÁ¨Æ®ÀÇ 4 ¹èÀÔ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+SetFormat, Ç¥Çö½Ä, EnvMult, EnvDiv, StringLower, if var is type

+ +

¿¹Á¦

+
Transform, OutputVar, Asc, A  ; ±âÈ£ AÀÇ ASCII Äڵ带 ¾ò½À´Ï´Ù.
+ + + diff --git a/src/docs/commands/TrayTip.htm b/src/docs/commands/TrayTip.htm new file mode 100644 index 0000000..4fd64fb --- /dev/null +++ b/src/docs/commands/TrayTip.htm @@ -0,0 +1,91 @@ + + + + +TrayTip + + + + + + + +

TrayTip

+ +

Æ®·¹ÀÌ ¾ÆÀÌÄÜ ±Ùó¿¡ dz¼± ¸Þ½ÃÁö âÀ» »ý¼ºÇÕ´Ï´Ù.

+ +
TrayTip [, Title, Text, Seconds, Options]
+

¸Å°³º¯¼ö

+
+ +
Title
+

¸Å°³º¯¼ö¸¦ ¸ðµÎ »ý·«Çϸé, ÇöÀç º¸¿©Áö´Â TrayTip âÀÌ Á¦°ÅµË´Ï´Ù.

+

±×·¸Áö ¾ÊÀ¸¸é, ÀÌ ¸Å°³º¯¼ö´Â âÀÇ Á¦¸ñÀ¸·Î¼­, 73 ¹®ÀÚ±îÁö Çã¿ëµË´Ï´Ù (ÀÌ ±æÀ̸¦ ³Ñ¾î°£ ¹®ÀÚ´Â º¸ÀÌÁö ¾Ê½À´Ï´Ù).

+

+ TitleÀÌ ºñ¾î ÀÖÀ¸¸é, Á¦¸ñ ÁÙÀº ¿ÏÀüÈ÷ dz¼± âÀ¸·ÎºÎÅÍ Á¦°ÅµÇ°í, ±× ¶§¹®¿¡ ¼öÁ÷À¸·Î ´õ ª°Ô µË´Ï´Ù.

+ +
Text
+

ÀÌ ¸Å°³º¯¼ö¸¦ »ý·«Çϰųª ºñ¾î ÀÖÀ¸¸é, ÇöÀç º¸¿©Áö´Â TrayTip âÀÌ Á¦°ÅµË´Ï´Ù.

+

±×·¸Áö ¾ÊÀ¸¸é, º¸¿©ÁÙ ¸Þ½ÃÁö¸¦ ÁöÁ¤ÇϽʽÿÀ. Title ¾Æ·¡¿¡ ³ªÅ¸³³´Ï´Ù. TextÀÇ ¾ÕÂÊ 265 °³ÀÇ ¹®ÀÚ¸¸ º¸ÀÔ´Ï´Ù. ij¸®Áö ¸®ÅÏ (`r) ¶Ç´Â ¶óÀÎÇǵå (`n)¸¦ »ç¿ëÇÏ¸é ¿©·¯ ÁÙÀÇ ÅؽºÆ®¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: Line1`nLine2.

+

+ Text°¡ ±æ¸é, °è¼Ó ¼½¼ÇÀ» ¼ö´ÜÀ¸·Î ´õ ªÀº ÁÙ·Î °¡¸¦ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¸é °¡µ¶¼º°ú À¯Áö°ü¼ºÀÌ ´õ¿í Çâ»óµÉ °ÍÀÔ´Ï´Ù.

+
+ +
Seconds
+

âÀ» º¸¿©ÁÙ ´ë·«ÀûÀÎ ÃÊÀÇ °³¼ö. ±× ÀÌÈÄ´Â ÀÚµ¿À¸·Î OS°¡ Á¦°ÅÇÕ´Ï´Ù. 10º¸´Ù À۰ųª 30º¸´Ù Å©¸é ´ë½Å¿¡ º¸Åë ÃÖ¼Ò ½Ã°£ (10) ¶Ç´Â ÃÖ´ë ½Ã°£ (30)À» º¸¿©ÁÖ´Â ½Ã°£À¸·Î »ç¿ëµË´Ï´Ù. ºñ¾î Àְųª »ý·«Çϸé, ÃÖ¼Ò ½Ã°£ÀÌ º¸Åë »ç¿ëµË´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.

+

+ ½ÇÁ¦ ½Ã°£Á¦ÇÑÀº ÁöÁ¤ÇÑ ½Ã°£°ú ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù. ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®»çÀÇ ¼³¸í¿¡ ÀÇÇϸé, "»ç¿ëÀÚ°¡ ÄÄÇ»Å͸¦ »ç¿ëÇÏ°í ÀÖ´Â µí º¸À̸é, ½Ã½ºÅÛÀº ½Ã°£Á¦ÇÑÀ» ÇâÇÏ¿© ÀÌ ½Ã°£À» ¼¼Áö ¾Ê½À´Ï´Ù." (±â¼úÀûÀÎ »ó¼¼´Â ¿©±â¸¦ ÂüÁ¶ÇϽʽÿÀ). ±×·¯¹Ç·Î, ¾ó¸¶³ª ¿À·§µ¿¾È TrayTipÀ» º¸¿©ÁÙ Áö Á¤¹ÐÇÏ°Ô Á¦¾îÇÏ·Á¸é, Sleep ¸í·É¾î ´ÙÀ½¿¡ ¸Å°³º¯¼ö ¾øÀÌ TrayTipÀ» »ç¿ëÇϰųª, ¾Æ´Ï¸é ¾Æ·¡ÀÇ ¿¹Á¦ ¼½¼Ç¿¡¼­ ½Ã¿¬ÇϵíÀÌ SetTimer¸¦ »ç¿ëÇϽʽÿÀ.

+
+ +
Options
+

Options ¸Å°³º¯¼ö´Â ´ÙÀ½ °ªµéÀÇ Á¶ÇÕ(ÇÕ)ÀÏ ¼ö ÀÖ½À´Ï´Ù:

+ + + + + + + +
±â´É½ÊÁø °ª½ÊÀ°Áø °ª
Á¤º¸(Info) ¾ÆÀÌÄÜ10x1
°æ°í(Warning) ¾ÆÀÌÄÜ20x2
¿¡·¯(Error) ¾ÆÀÌÄÜ30x3
Windows XP ÀÌÈÄ: °íÁö »ç¿îµå¸¦ ¿¬ÁÖÇÏÁö ¾Ê½À´Ï´Ù.160x10
Windows Vista ÀÌÈÄ: Å« ¹öÀüÀÇ ¾ÆÀÌÄÜÀ» »ç¿ëÇÕ´Ï´Ù.320x20
+

»ý·«ÇÏ¸é ±âº»°ªÀº 0ÀÌ°í, ÀÌ°ÍÀº ¾ÆÀÌÄÜÀÌ ¾ø´Ù´Â ¶æÀÔ´Ï´Ù. ¾ÆÀÌÄÜÀº TitleÀÌ »ý·«µÇ¸é º¸ÀÌÁö ¾Ê½À´Ï´Ù.

+

ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.

+
+ +
+

³íÆò

+

+TrayTip dz¼± âÀº ½ºÅ©¸³Æ®¿¡ (#NoTrayIcon ¶Ç´Â Menu, tray, NoIconÀ» »ç¿ëÇØ) Æ®·¹ÀÌ ¾ÆÀÌÄÜÀÌ ¾øÀ¸¸é º¸ÀÌÁö ¾Ê½À´Ï´Ù. ºñ½ÁÇÏ°Ô, ´ÙÀ½ REG_DWORD °ªÀÌ Á¸ÀçÇÏ°í 0À¸·Î ¼³Á¤µÇ¾î ÀÖÀ¸¸é, TrayTipÀº ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù:

+ +
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced >> EnableBalloonTips
+

+°ü·ÃÇÏ¿© ¸»¾¸ µå¸®ÀÚ¸é, »ç¿ëÀÚ°¡ ¸¶¿ì½º¸¦ ½ºÅ©¸³Æ®ÀÇ Æ®·¹ÀÌ ¾ÆÀÌÄÜ À§¿¡ ¿Ã¸± ¶§¸¶´Ù ÅøÆÁÀÌ º¸¿©Áý´Ï´Ù. ÀÌ ÅøÆÁÀÇ ³»¿ëÀº ´ÙÀ½°ú °°ÀÌ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù: Menu, Tray, Tip, My New Text.

+ +

°ü·Ã Ç׸ñ

+

ToolTip, SetTimer, Menu, SplashTextOn, MsgBox, InputBox, FileSelectFile, FileSelectFolder

+ +

¿¹Á¦

+
TrayTip, My Title, Multiline`nText, 20, 17
+
+; (ÇöÀç ¾²·¹µå¸¦ ¸ØÃß´Â) SleepÀ» »ç¿ëÇÒ ÇÊ¿ä ¾øÀÌ
+; º¸¿©ÁÖ´Â ½Ã°£À» ´õ Á¤¹ÐÇÏ°Ô Á¦¾îÇÏ·Á¸é:
+#Persistent
+TrayTip, Timed TrayTip, ÀÌ°ÍÀº 5 ÃÊ°£ È­¸é¿¡ º¸¿©Áý´Ï´Ù.
+SetTimer, RemoveTrayTip, 5000
+return
+
+RemoveTrayTip:
+SetTimer, RemoveTrayTip, Off
+TrayTip
+return
+
+; TrayTipÀ» ¿µ¿øÈ÷ º¸¿©ÁÖ·Á¸é, ŸÀ̸Ӹ¦ »ç¿ëÇÏ¿© ÁÖ±âÀûÀ¸·Î °»½ÅÇϽʽÿÀ:
+SetTimer, RefreshTrayTip, 1000
+Gosub, RefreshTrayTip  ; ÇÑ ¹ø¸¸ È£ÃâÇϸé Áï½Ã ½ÃÀÛÇÕ´Ï´Ù.
+return
+
+RefreshTrayTip:
+TrayTip, Refreshed TrayTip, ÀÌ°ÍÀº °ÅÀÇ ¿µ±¸ÀûÀÎ TrayTipÀÔ´Ï´Ù., , 16
+return
+ + + diff --git a/src/docs/commands/TreeView.htm b/src/docs/commands/TreeView.htm new file mode 100644 index 0000000..0438679 --- /dev/null +++ b/src/docs/commands/TreeView.htm @@ -0,0 +1,367 @@ + + + + +TreeView (GUI) + + + + + + + + +

TreeView [v1.0.44+]

+ +

¸ñÂ÷

+ +

°£´ÜÇÑ ¿¹Á¦¿Í ¼Ò°³

+

+Tree-View´Â °èÅëÀû Ç׸ñµéÀ» ºÎ¸ð ¾Æ·¡ÀÇ ÀÚ¼ÕµéÀº ÇÑ ´Ü°è µé¿© ³Ö¾î º¸¿©ÁÝ´Ï´Ù. °¡Àå ÈçÇÑ ¿¹´Â ÀͽºÇ÷η¯ÀÇ µå¶óÀ̺ê¿Í Æú´õ Æ®¸®ÀÔ´Ï´Ù.

+

+TreeView¸¦ »ý¼ºÇÏ´Â ±¸¹®Àº ´ÙÀ½°ú °°½À´Ï´Ù:

+ +
Gui, Add, TreeView, Options
+

+´ÙÀ½ ½ºÅ©¸³Æ®´Â °£´ÜÇÑ °èÅëÀû Ç׸ñµéÀ» »ý¼ºÇÏ°í º¸¿©ÁÝ´Ï´Ù:

+ +
Gui, Add, TreeView
+P1 := TV_Add("First parent")
+P1C1 := TV_Add("Parent 1's first child", P1)  ; P1À» ÀÌ Ç׸ñÀÇ ºÎ¸ð·Î ÁöÁ¤ÇÕ´Ï´Ù.
+P2 := TV_Add("Second parent")
+P2C1 := TV_Add("Parent 2's first child", P2)
+P2C2 := TV_Add("Parent 2's second child", P2)
+P2C2C1 := TV_Add("Child 2's first child", P2C2)
+
+Gui, Show  ; â°ú ±×ÀÇ TreeView¸¦ º¸¿©ÁÝ´Ï´Ù.
+return
+
+GuiClose:  ; »ç¿ëÀÚ°¡ TreeViewÀÇ GUI âÀ» ´ÝÀ¸¸é ½ºÅ©¸³Æ®¸¦ Á¾·áÇÕ´Ï´Ù.
+ExitApp
+ +

"Gui, Add, TreeView, Options"¿¡ ´ëÇÑ ¿É¼Ç°ú ½ºÅ¸ÀÏ

+

+AltSubmit: ½ºÅ©¸³Æ®¿¡ Á¤»óº¸´Ù ´õ ¸¹Àº À¯ÇüÀÇ TreeView À̺¥Æ®¿¡ ´ëÇÏ¿© °íÁöÇÕ´Ï´Ù. ´Ù¸¥ ¸»·Î, g-¶óº§ÀÌ ´õ ÀÚÁÖ ±âµ¿ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº TreeView NotificationsÀ» ÂüÁ¶ÇϽʽÿÀ.

+

+Background: ´Ü¾î Background¿Í ´ÙÀ½¿¡ ¹Ù·Î Ä÷¯ À̸§À» ÁöÁ¤Çϰųª (Ä÷¯ Â÷Æ® ÂüÁ¶) RGB °ªÀ» ÁöÁ¤ÇϽʽÿÀ (0x Á¢µÎ»ç´Â ¼±ÅÃÀûÀÔ´Ï´Ù). ¿¹Á¦: BackgroundSilver, BackgroundFFDD99. ÀÌ ¿É¼ÇÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, TreeView´Â óÀ½¿¡ ±âº»°ªÀÌ. Gui ColorÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö·Î ¼³Á¤µÈ ¹è°æ»öÀÔ´Ï´Ù (¶Ç´Â ¾øÀ¸¸é, ½Ã½ºÅÛÀÇ ±âº» ¹è°æ »öÀÔ´Ï´Ù). BackgroundDefault¸¦ ÁöÁ¤ÇÏ¸é ½Ã½ºÅÛÀÇ ±âº» ¹è°æ»öÀÌ Àû¿ëµË´Ï´Ù (º¸Åë Èò»ö). ¿¹¸¦ µé¾î, GuiControl, +BackgroundDefault, MyTreeView¸¦ ÅëÇÏ¿© TreeView¸¦ ±âº»°ªÀ¸·Î º¹±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Buttons: -Buttons (¸¶À̳ʽº ¹öÆ°)À» ÁöÁ¤Çϸé Ç÷¯½º³ª ¸¶À̳ʽº »çÀÎÀÌ ÀÚ¼ÕÀÌ ÀÖ´Â °¢ Ç׸ñÀÇ ¿ÞÂÊ¿¡ ³ªÅ¸³ª´Â °ÍÀ» ¸·À» ¼ö ÀÖ½À´Ï´Ù.

+

+C: ÅؽºÆ® Ä÷¯. ±âÈ£ C ´ÙÀ½¿¡ Áï½Ã Ä÷¯ À̸§ (Ä÷¯ Â÷Æ® ÂüÁ¶) ¶Ç´Â RGB °ªÀ» ÁöÁ¤ÇϽʽÿÀ (0x Á¢µÎ»ç´Â ¼±ÅÃÀûÀÔ´Ï´Ù). ¿¹¸¦ µé¾î: cRed, cFF2211, c0xFF2211, cDefault.

+

+Checked: °¢ Ç׸ñÀÇ ¿ÞÂÊ¿¡ üũ¹Ú½º¸¦ Á¦°øÇÕ´Ï´Ù. Ç׸ñÀ» Ãß°¡ÇÒ ¶§, ´Ü¾î Check¸¦ ±×ÀÇ ¿É¼Ç¿¡ ÁöÁ¤ÇÏ¸é ¹Ú½º¸¦ üũÇÑ »óÅ·Π½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀڴ üũ¹Ú½ºÅ©¸¦ Ŭ¸¯Çϰųª ½ºÆäÀ̽º¸¦ ¹Ù¸¦ ´­·¯ Ç׸ñÀ» üũÇϰųª ÇØÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾î´À Ç׸ñÀÌ ÇöÀç TreeView¿¡ üũµÇ¾î ÀÖ´ÂÁö ¾Ë¾Æ º¸·Á¸é, TV_GetNext() ¶Ç´Â TV_Get()À» È£ÃâÇϽʽÿÀ.

+

+HScroll: -HScroll (¸¶À̳ʽº HScroll)À» ÁöÁ¤ÇÏ¸é ¼öÆò ½ºÅ©·ÑÀ» ºÒ´ÉÀ¸·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù (°Ô´Ù°¡, ÄÜÆ®·ÑÀº ¼öÆò ¹Ù¸¦ º¸¿©ÁÖÁö ¾Ê½À´Ï´Ù).

+

+ImageList: ÀÌ ¹æ¹ýÀ¸·Î ¾ÆÀÌÄÜÀ» TreeView¿¡ Ãß°¡ÇÕ´Ï´Ù. ´Ü¾î ImageList ´ÙÀ½¿¡ ¹Ù·Î ÀÌÀü¿¡ IL_Create()¸¦ È£ÃâÇØ µ¹·Á ¹ÞÀº ImageListID¸¦ ÁöÁ¤ÇϽʽÿÀ. ÀÌ ¿É¼ÇÀº TreeView¸¦ »ý¼ºÇÒ ¶§¿¡¸¸ È¿°ú°¡ ÀÖ½À´Ï´Ù (±×·¸Áö¸¸, TV_SetImageList()´Â ÀÌ Á¦ÇÑÀÌ ¾ø½À´Ï´Ù). ´ÙÀ½Àº ÀÛµ¿ÇÏ´Â ¿¹Á¦ÀÔ´Ï´Ù:

+ +
ImageListID := IL_Create(10)  ; ÃÖÃÊ °¡¿ë´É·ÂÀÌ 10°³ÀÇ ¾ÆÀÌÄÜÀÎ ImageList¸¦ »ý¼ºÇÕ´Ï´Ù.
+Loop 10  ; ImageList¿¡ Ç¥ÁØ ½Ã½ºÅÛ ¾ÆÀÌÄÜÀ» ÀûÀçÇÕ´Ï´Ù.
+    IL_Add(ImageListID, "shell32.dll", A_Index)
+Gui, Add, TreeView, ImageList%ImageListID%
+TV_Add("Name of Item", 0, "Icon4")  ; Ç׸ñÀ» TreeView¿¡ Ãß°¡ÇÏ°í °Å±â¿¡ Æú´õ ¾ÆÀÌÄÜÀ» ºÎ¿©ÇÕ´Ï´Ù.
+Gui Show
+

+Lines: -Lines (¸¶À̳ʽº Lines)¸¦ ÁöÁ¤ÇÏ¸é ºÎ¸ð Ç׸ñÀ» ÀÚ¼Õ Ç׸ñ°ú ¿¬°áÇÏ´Â ÁÙµéÀ» º¸¿©ÁÖÁö ¾Ê½À´Ï´Ù. ±×·¸Áö¸¸, ÀÌ ÁÙÀ» Á¦°ÅÇϸé ÃÖ»óÀ§ ·¹º§ÀÇ Ç׸ñ¿¡ Ç÷¯½º/¸¶À̳ʽº ¹öÆ°µµ º¸ÀÌÁö ¾Ê°Ô µË´Ï´Ù.

+

+ReadOnly: -ReadOnly (¸¶À̳ʽº ReadOnly)¸¦ ÁöÁ¤ÇÏ¸é °¢ Ç׸ñÀÇ ÅؽºÆ®/À̸§ÀÇ ÆíÁýÀ» Çã¿ëÇÕ´Ï´Ù. Ç׸ñÀ» ÆíÁýÇÏ·Á¸é, ¼±ÅÃÇÑ ´ÙÀ½ F2 Å°¸¦ ´©¸£½Ê½Ã¿À. ´Ù¸¥ ¹æ¹ýÀ¸·Î, Ç׸ñÀ» ÇÑ ¹ø Ŭ¸¯ÇÏ¿© ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾à ¹ÝÃÊ ±â´Ù¸° ´ÙÀ½, °°Àº Ç׸ñÀ» ´Ù½Ã Ŭ¸¯ÇØ ÆíÁýÇÒ ¼ö ÀÖ½À´Ï´Ù. ÆíÁýÀÌ ³¡³­ ÈÄ, Ç׸ñÀº ´ÙÀ½ ¿¹Á¦¸¦ ÅëÇÏ¿© ±×ÀÇ ÇüÁ¦µé »çÀÌ¿¡ ¾ËÆĺª ¼ø¼­·Î Àç¹èÄ¡µË´Ï´Ù:

+ +
Gui, Add, TreeView, -ReadOnly gMyTree
+; ...
+MyTree:
+if (A_GuiEvent == "e")  ; »ç¿ëÀÚ°¡ Ç׸ñ ÆíÁýÀ» ¸¶ÃƽÀ´Ï´Ù (´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇØ ºñ±³ÇÕ´Ï´Ù).
+    TV_Modify(TV_GetParent(A_EventInfo), "Sort")  ; ÀÌ°ÍÀº ÆíÁý Ç׸ñ¿¡ ºÎ¸ð°¡ ¾ø´õ¶óµµ ÀÛµ¿ÇÕ´Ï´Ù.
+return
+

+R: ÁÙ ³ôÀÌ (»ý¼º½Ã). ±âÈ£ R ´ÙÀ½¿¡ Áï½Ã ÄÜÆ®·Ñ ¾È¿¡ ¿©À¯¸¦ µÑ ÁÙÀÇ °³¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, R10À̸é ÄÜÆ®·ÑÀ» 10°³ÀÇ Ç׸ñ ³ôÀÌ·Î ¸¸µì´Ï´Ù.

+

+WantF2: -WantF2 (¸¶À̳ʽº WantF2)¸¦ ÁöÁ¤Çϸé F2 Å°´­¸²À¸·Î ÇöÀç ¼±ÅÃµÈ Ç׸ñÀ» ÆíÁýÇÏÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù. ÀÌ ¼³Á¤Àº -ReadOnlyµµ ÄÑÁ® ÀÖÁö ¾Ê´Â ÇÑ ¹«½ÃµË´Ï´Ù. ÀÌ ¼³Á¤¿¡ »ó°ü¾øÀÌ, g-¶óº§Àº ¿©ÀüÈ÷ F2 °íÁö¸¦ ¹Þ½À´Ï´Ù.

+

+(À̸§¾ø´Â ¼ýÀÚ ½ºÅ¸ÀÏ): À§¿¡ ¾ð±ÞµÈ ½ºÅ¸ÀÏ ¸»°í´Â ´Ù¸¥ ½ºÅ¸ÀÏÀº °ÅÀÇ »ç¿ëµÇÁö ¾ÊÀ¸¹Ç·Î, À̸§ÀÌ ¾ø½À´Ï´Ù. ¸®½ºÆ®´Â TreeView ½ºÅ¸ÀÏ Å×À̺íÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

TreeViews¿ë ³»Àå ÇÔ¼ö

+

+¸ðµç TreeView ÇÔ¼ö´Â ÇöÀç ¾²·¹µåÀÇ ±âº» GUI â¿¡ ÀÛµ¿ÇÕ´Ï´Ù (±âº» ±¸ÀÌ Ã¢Àº Gui, 2:Default¸¦ ÅëÇÏ¿© ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù). ±âº» âÀÌ Á¸ÀçÇÏÁö ¾Ê°Å³ª TreeView ÄÜÆ®·ÑÀÌ ¾ø´Ù¸é, ¸ðµç ÇÔ¼ö´Â 0À» µ¹·ÁÁÖ¾î ¹®Á¦¸¦ ³ªÅ¸³À´Ï´Ù.

+

+â¿¡ ¿©·¯ TreeView ÄÜÆ®·ÑÀÌ ÀÖ´Ù¸é, ±âº»°ªÀ¸·Î ÇÔ¼öµéÀº °¡Àå ÃÖ±Ù¿¡ Ãß°¡µÈ ÄÜÆ®·Ñ¿¡ ÀÛµ¿ÇÕ´Ï´Ù. À̸¦ ¹Ù²Ù·Á¸é, Gui, TreeView, TreeViewName¸¦ ÁöÁ¤ÇϽʽÿÀ. ¿©±â¿¡¼­ TreeViewName´Â TreeViewÀÇ ¿¬°ü º¯¼öÀ̸§À̰ųª, Window Spy·Î ³ëÃâµÇ´Â ClassNNÀ̰ųª, ¶Ç´Â (v1.1.04+¿¡¼­) ±×ÀÇ HWNDÀÔ´Ï´Ù. ÀÏ´Ü ¹Ù²î¸é, ±âÁ¸ÀÇ ¸ðµç ±×¸®°í ¹Ì·¡ÀÇ ¾²·¹µå´Â Áö½ÃÇÑ TreeView¸¦ »ç¿ëÇÕ´Ï´Ù.

+ +

TV_SetImageList(ImageListID [, 0|2]) [v1.1.02+]

+

+TreeViewÀÇ ImageList¸¦ ¼³Á¤Çϰųª »èÁ¦ÇÕ´Ï´Ù. ImageListID´Â ÀÌÀü¿¡ IL_Create()¸¦ È£ÃâÇØ µ¹·Á ¹ÞÀº ¹øÈ£ÀÔ´Ï´Ù. µÎ ¹ø° ¸Å°³º¯¼ö´Â º¸Åë »ý·«µË´Ï´Ù. ÀÌ °æ¿ì ±âº»°ªÀº 0ÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, 2¸¦ »óÅ ¾ÆÀÌÄÜ¿¡ ÁöÁ¤ÇϽʽÿÀ (¾ÆÁ÷ Á÷Á¢ÀûÀ¸·Î Áö¿øÇÏÁö´Â ¾ÊÁö¸¸, SendMessage¸¦ ÅëÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù). ¼º°øÇϸé, TV_SetImageList()´Â ÀÌÀü¿¡ TreeView¿¡ ¿¬°üµÇ¾î ÀÖ´Â ImageListID¸¦ µ¹·ÁÁÝ´Ï´Ù (¿¬°üµÈ°Ô ¾øÀ¸¸é 0À» µ¹·ÁÁÝ´Ï´Ù). ±×·¸°Ô ¶¼¾î³½ ImageList´Â º¸Åë IL_Destroy(ImageListID)¸¦ ÅëÇÏ¿© Æı«ÇÕ´Ï´Ù.

+ +

Ç׸ñÀ» Ãß°¡ÇÏ°í, º¯°æÇÏ°í, »èÁ¦Çϱâ

+ +

TV_Add(Name, [ParentItemID, Options])

+

+TreeView¿¡ »õ Ç׸ñÀ» Ãß°¡ÇÏ°í ±×ÀÇ À¯ÀÏÇÑ Item ID ¹øÈ£¸¦ µ¹·ÁÁÝ´Ï´Ù (¶Ç´Â ½ÇÆнà 0À» µ¹·ÁÁÝ´Ï´Ù). NameÀº Ç׸ñÀ» º¸¿©ÁÖ´Â ÅؽºÆ®À̸ç, ÅؽºÆ®À̰ųª ¼ýÀÚÀÏ ¼ö ÀÖ½À´Ï´Ù (¼ýÄ¡ Ç¥Çö½ÄÀÇ °á°úµµ Æ÷ÇÔ). ParentItemID´Â »õ Ç׸ñÀÇ ºÎ¸ð ID ¹øÈ£ÀÔ´Ï´Ù (»ý·«Çϰųª 0À» ÁöÁ¤ÇÏ¸é ±× Ç׸ñÀ» ÃÖ»óÀ§ ·¹º§¿¡ Ãß°¡ÇÕ´Ï´Ù). ¹æ´ëÇÑ °³¼öÀÇ Ç׸ñÀ» Ãß°¡ÇÒ ¶§, ¼öÇ༺´ÉÀ» °³¼±ÇÒ ¼ö ÀÖ½À´Ï´Ù. Ç׸ñÀ» Ãß°¡Çϱâ Àü¿¡ GuiControl, -Redraw, MyTreeView¸¦ »ç¿ëÇÏ°í ³¡³­ ÈÄ¿¡ GuiControl, +Redraw, MyTreeView¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù.

+ +

TV_Add() ±×¸®°í TV_Modify()¿ë ¿É¼Ç

+

+Options ¸Å°³º¯¼ö´Â ¾Æ·¡ ¸®½ºÆ®ÀÇ ´Ü¾î·Î ±¸¼ºµÈ ¹®ÀÚ¿­ÀÔ´Ï´Ù (´ë¼Ò¹®ÀÚ ±¸ºÐ ¾ÈÇÔ). º°µµÀÇ °¢ ´Ü¾î¸¶´Ù ´ÙÀ½ ´Ü¾î¿Í ½ºÆäÀ̽º³ª ÅÇÀ¸·Î °¡¸£½Ê½Ã¿À. ¿É¼ÇÀ» Á¦°ÅÇÏ·Á¸é, ¾Õ¿¡ ¸¶À̳ʽº »çÀÎÀ» ºÙÀ̽ʽÿÀ. ¿É¼ÇÀ» Ãß°¡ÇÏ·Á¸é, Ç÷¯½º »çÀÎÀº Çã¿ëÇÏÁö¸¸ Çʼö´Â ¾Æ´Õ´Ï´Ù.

+

+Bold: Ç׸ñÀÇ À̸§À» º¼µåü·Î º¸¿©ÁÝ´Ï´Ù. ³ªÁß¿¡ ÇØÁ¦ÇÏ·Á¸é, TV_Modify(ItemID, "-Bold")¸¦ »ç¿ëÇϽʽÿÀ.

+

+Check: (TreeView¿¡ üũ¹Ú½º°¡ ÀÖ´Ù¸é) üũ Ç¥½ÄÀ» Ç׸ñÀÇ ¿ÞÂÊ¿¡ º¸¿©ÁÝ´Ï´Ù. ³ªÁß¿¡ ÇØÁ¦ÇÏ·Á¸é, TV_Modify(ItemID, "-Check")À» »ç¿ëÇϽʽÿÀ. ´Ü¾î Check´Â ¼±ÅÃÀûÀ¸·Î ´ÙÀ½¿¡ Áï½Ã 0 ¶Ç´Â 1ÀÌ µû¶ó¿Í ½ÃÀÛ »óŸ¦ ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¸»·Î, "Check"¿Í "Check" . VarContainingOne ¸ðµÎ °°½À´Ï´Ù (¿©±â¿¡¼­ Á¡Àº °áÇÕ ¿¬»êÀÚÀÔ´Ï´Ù).

+

+Expand: Ç׸ñÀ» È®´ëÇØ (ÀÖ´Ù¸é) ±×ÀÇ ÀÚ¼ÕÀ» ³ëÃâ½Ãŵ´Ï´Ù. ³ªÁß¿¡ Ç׸ñÀ» Ãà¼ÒÇÏ·Á¸é, TV_Modify(ItemID, "-Expand")¸¦ »ç¿ëÇϽʽÿÀ. ÀÚ¼ÕÀÌ ¾ø´Ù¸é, TV_Modify()´Â ±× Ç׸ñÀÇ ID ´ë½Å¿¡ 0À» µ¹·ÁÁÝ´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, TV_Add()´Â Ç׸ñ¿¡ ÀÚ¼ÕÀÌ ³ªÁß¿¡ °Å±â¿¡ Ãß°¡µÉ °æ¿ì È®´ë Ç¥½ÄÀ» ÇÕ´Ï´Ù. (¾Æ·¡ÀÇ) "Select"¿Í ´Ù¸£°Ô, Ç׸ñÀÌ È®´ëµÇ´õ¶óµµ ±×ÀÇ ºÎ¸ð°¡ ÀÚµ¿À¸·Î È®´ëµÇÁö´Â ¾Ê½À´Ï´Ù. ¸¶Áö¸·À¸·Î, ´Ü¾î Expand ´ÙÀ½¿¡ ¼±ÅÃÀûÀ¸·Î 0 ¶Ç´Â 1ÀÌ µû¶ó¿Í ½ÃÀÛ »óŸ¦ ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¸»·Î, "Expand"¿Í "Expand" . VarContainingOne´Â °°½À´Ï´Ù.

+

+First | Sort | N: ÀÌ ¿É¼ÇµéÀº TV_Add()¿¡¸¸ Àû¿ëµË´Ï´Ù. »õ Ç׸ñÀÇ À§Ä¡¸¦ ±×ÀÇ ÇüÁ¦¿¡ »ó´ëÀûÀ¸·Î ÁöÁ¤ÇÕ´Ï´Ù (ÇüÁ¦(sibling)¶õ °°Àº ·¹º§¿¡ ÀÖ´Â ´Ù¸¥ Ç׸ñµéÀÔ´Ï´Ù). ÀÌ ¿É¼Çµé ¸ðµÎ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, ¸¶Áö¸·/¸·³» ÇüÁ¦·Î »õ Ç׸ñÀÌ Ãß°¡µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, First¸¦ Ãß°¡ÇØ ±× Ç׸ñÀ» ù°/Àå³² ÇüÁ¦·Î Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶Ç´ÂSort¸¦ ÁöÁ¤ÇÏ¸é ±× Ç׸ñÀ» ±×ÀÇ ÇüÁ¦µé »çÀÌ¿¡ ¾ËÆĺª ¼ø¼­·Î »ðÀÔÇÒ ¼ö ÀÖ½À´Ï´Ù. Æò¹üÇÑ Á¤¼ö°¡ (N) ÁöÁ¤µÇ¸é, ±× ´ÙÀ½¿¡ »õ Ç׸ñÀ» Ãß°¡ÇÒ ÇüÁ¦ÀÇ ID ¹øÈ£·Î °£Áֵ˴ϴ٠(Á¤¼ö NÀÌ À¯ÀÏÇÑ ¿É¼ÇÀ̶ó¸é, µû¿ÈÇ¥·Î µÑ·¯½Ò ÇÊ¿ä°¡ ¾ø½À´Ï´Ù).

+

+Icon: ´Ü¾î Icon ´ÙÀ½¿¡ ÀÌ Ç׸ñÀÇ ¾ÆÀÌÄÜ ¹øÈ£¸¦ ÁöÁ¤ÇϽʽÿÀ. ÀÌ ¾ÆÀÌÄÜÀº Ç׸ñÀÇ À̸§ ¿ÞÂÊ¿¡ º¸¿©Áý´Ï´Ù. ÀÌ ¿É¼ÇÀÌ ¾øÀ¸¸é, ImageList¿¡¼­ ù ¹ø° ¾ÆÀÌÄÜÀÌ »ç¿ëµË´Ï´Ù. ºó ¾ÆÀÌÄÜÀ» º¸¿©ÁÖ·Á¸é, ImageList ¾È¿¡ ÀÖ´Â ¾ÆÀÌÄܺ¸´Ù Å« ¼ýÀÚ¸¦ ÁöÁ¤ÇÏ¸é µË´Ï´Ù. ÄÜÆ®·Ñ¿¡ ImageList°¡ ¾øÀ¸¸é, ¾ÆÀÌÄܵµ º¸ÀÌÁö ¾Ê°í ¾ÆÀÌÄÜÀ» À§ÇÑ ½ºÆäÀ̽ºµµ º¸Á¸µÇÁö ¾Ê½À´Ï´Ù.

+

+Select: Ç׸ñÀ» ¼±ÅÃÇÕ´Ï´Ù. ÇÑ ¹ø¿¡ ¿ÀÁ÷ ÇϳªÀÇ Ç׸ñ¸¸ ¼±ÅÃÇÒ ¼ö Àֱ⠶§¹®¿¡, ÀÌÀü¿¡ ¼±ÅÃµÈ Ç׸ñÀº ÀÚµ¿À¸·Î ÇØÁ¦µË´Ï´Ù. °Ô´Ù°¡, ÀÌ ¿É¼ÇÀº ÇÊ¿äÇÏ¸é ±×ÀÇ ºÎ¸ð¸¦ È®´ëÇؼ­ »õ·Î ¼±ÅÃµÈ Ç׸ñÀ» ³ëÃâ½Ãŵ´Ï´Ù. ÇöÀç ¼±ÅÃÀ» ¾Ë¾Æ ³»·Á¸é, TV_GetSelection()¸¦ È£ÃâÇϽʽÿÀ.

+

+Sort: TV_Modify()¿¡ ´ëÇÏ¿©, ÀÌ ¿É¼ÇÀº ¾ËÆĺª ¼ø¼­·Î ÁöÁ¤µÈ Ç׸ñÀÇ ÀÚ¼ÕµéÀ» Á¤·ÄÇÕ´Ï´Ù. ´ë½Å¿¡ ¸ðµç ÃÖ»óÀ§ ·¹º§ÀÇ Ç׸ñµéÀ» Á¤·ÄÇÏ·Á¸é, TV_Modify(0, "Sort")¸¦ »ç¿ëÇϽʽÿÀ. ÀÚ¼ÕÀÌ ¾ø´Ù¸é, º¯°æµÈ Ç׸ñÀÇ ID ´ë½Å¿¡ 0À» µ¹·ÁÁÝ´Ï´Ù.

+

+Vis: TreeView¸¦ ½ºÅ©·ÑÇϰųª ÇÊ¿äÇÏ¸é ±×ÀÇ ºÎ¸ð¸¦ È®´ëÇؼ­ Ç׸ñÀÌ ¿ÏÀüÈ÷ º¸À̵µ·Ï È®ÀÎÇÕ´Ï´Ù.

+

+VisFirst: À§¿Í °°Áö¸¸ TreeViewµµ ½ºÅ©·ÑµÇ¾î °¡´ÉÇÏ¸é ±× Ç׸ñÀÌ Ç×»ó À§¿¡ º¸À̵µ·Ï ÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀº ÀüÇüÀûÀ¸·Î TV_Add() º¸´Ù TV_Modify()¿Í »ç¿ëÇÒ ¶§ ´õ È¿À²ÀûÀÔ´Ï´Ù.

+ +

TV_Modify(ItemID [, Options, NewName])

+

+Ç׸ñÀÇ À̸§°ú ¼Ó¼ºÀ» º¯°æÇÕ´Ï´Ù. ¼º°øÇϸé Ç׸ñ ÀÚ½ÅÀÇ ID¸¦ µ¹·ÁÁÝ´Ï´Ù. ½ÇÆнà (¶Ç´Â ºÎºÐÀû ½ÇÆнÃ) 0À» µ¹·ÁÁÝ´Ï´Ù. ù ¸Å°³º¯¼ö¸¸ ÀÖÀ¸¸é, ÁöÁ¤µÈ Ç׸ñÀÌ ¼±Åõ˴ϴÙ. NewNameÀ» »ý·«Çϸé, ÇöÀç À̸§À» ¹Ù²ÙÁö ¾Ê°í ±×´ë·Î µÓ´Ï´Ù. Options¿¡ °üÇؼ­´Â À§ÀÇ ¸®½ºÆ®¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

TV_Delete([ItemID])

+

+ItemIDÀ» »ý·«Çϸé, TreeView ¾ÈÀÇ ¸ðµç Ç׸ñÀÌ »èÁ¦µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ¿ÀÁ÷ ÁöÁ¤µÈ ItemID¸¸ »èÁ¦µË´Ï´Ù. ¼º°øÇϸé 1À» µ¹·ÁÁÖ°í ½ÇÆнà 0À» µ¹·ÁÁÝ´Ï´Ù.

+ +

TreeView·ÎºÎÅÍ µ¥ÀÌÅÍ ¾ò±â

+

+TV_GetSelection()

+

¼±ÅÃµÈ Ç׸ñÀÇ ID ¹øÈ£¸¦ µ¹·ÁÁÝ´Ï´Ù.

+ +

TV_GetCount()

+

+ÄÜÆ®·Ñ¿¡ ÀÖ´Â Ç׸ñÀÇ ÃÑ °³¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. ÀÌ ÇÔ¼ö´Â ¾ðÁ¦³ª ¼ø°£ÀûÀÔ´Ï´Ù. ¿Ö³ÄÇϸé ÄÜÆ®·ÑÀÇ °³¼ö¸¦ ÃßÀû°ü¸®Çϱ⠶§¹®ÀÔ´Ï´Ù.

+ +

TV_GetParent(ItemID)

+

+ÁöÁ¤µÈ Ç׸ñÀÇ ºÎ¸ð¸¦ Ç׸ñ ID·Î µ¹·ÁÁÝ´Ï´Ù. ÃÖ»óÀ§ ·¹º§ÀÇ Ç׸ñµéÀº ºÎ¸ð°¡ ¾øÀ¸¹Ç·Î 0À» µ¹·ÁÁÝ´Ï´Ù.

+ +

TV_GetChild(ParentItemID)

+

+ÁöÁ¤µÈ Ç׸ñÀÇ Ã¹Â°/ÃÖ»óÀ§ ÀÚ¼ÕÀÇ ID ¹øÈ£¸¦ µ¹·ÁÁÝ´Ï´Ù (¾øÀ¸¸é 0À» µ¹·ÁÁÝ´Ï´Ù).

+ +

TV_GetPrev(ItemID)

+

+ÁöÁ¤µÈ Ç׸ñ À§ÀÇ ÇüÁ¦ÀÇ ID ¹øÈ£¸¦ µ¹·ÁÁÝ´Ï´Ù (¾øÀ¸¸é 0À» µ¹·ÁÁÝ´Ï´Ù).

+ +

TV_GetNext([ItemID, "Checked | Full"])

+

+´ÙÀ½ ¸ðµå°¡ ÀÖ½À´Ï´Ù:

+
    +
  1. ¸ðµç ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, TreeView¿¡¼­ ù°/ÃÖ»óÀ§ Ç׸ñÀÇ ID ¹øÈ£¸¦ µ¹·ÁÁÝ´Ï´Ù (¾øÀ¸¸é 0À» µ¹·ÁÁÝ´Ï´Ù).
  2. +
  3. ¿ÀÁ÷ ù ¹ø° ¸Å°³º¯¼ö (ItemID)¸¸ ÀÖÀ¸¸é, ÁöÁ¤µÈ Ç׸ñ ¾Æ·¡ ÇüÁ¦ÀÇ ID ¹øÈ£¸¦ µ¹·ÁÁÝ´Ï´Ù (¾øÀ¸¸é 0À» µ¹·ÁÁÝ´Ï´Ù). ù ¹ø° ¸Å°³º¯¼ö°¡ 0À̸é, TreeView¿¡¼­ ù°/ÃÖ»óÀ§ Ç׸ñÀÇ ID ¹øÈ£¸¦ µ¹·ÁÁÝ´Ï´Ù (¾øÀ¸¸é 0À» µ¹·ÁÁÝ´Ï´Ù).
  4. +
  5. µÎ ¹ø° ¸Å°³º¯¼ö°¡ "Full" ¶Ç´Â "F"À̸é, ÁöÁ¤µÈ Ç׸ñ°úÀÇ °ü°è¿¡ »ó°ü¾øÀÌ ´ÙÀ½ Ç׸ñÀ» ¿­¶÷ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ½ºÅ©¸³Æ®´Â ½±°Ô Àüü Æ®¸®¸¦ Ç׸ñº°·Î ¼øȸÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: + +
    ItemID = 0  ; ȸµ¹ÀÌÀÇ Ã¹ ¹ø° ¹Ýº¹ÀÌ Æ®¸®ÀÇ ÃÖ»ó´Ü¿¡¼­ °Ë»öÀ» ½ÃÀÛÇϵµ·Ï ¸¸µì´Ï´Ù.
    +Loop
    +{
    +    ItemID := TV_GetNext(ItemID, "Full")  ; üũǥ½ÄµÈ Ç׸ñÀ» ¸ðµÎ ãÀ¸·Á¸é "Full"À» "Checked"·Î ±³Ã¼ÇϽʽÿÀ..
    +    if not ItemID  ; Æ®¸®¿¡ ´õ ÀÌ»ó Ç׸ñÀÌ ¾ø½À´Ï´Ù.
    +        break
    +    TV_GetText(ItemText, ItemID)
    +    MsgBox The next Item is %ItemID%, whose text is "%ItemText%".
    +}
    +
  6. +
  7. µÎ ¹ø° ¸Å°³º¯¼ö°¡ "Check", "Checked", ¶Ç´Â "C"À̸é, À§¿Í °°Àº ÇàÀ§¸¦ ÇÕ´Ï´Ù. ´Ü, üũǥ½ÄÀÌ ¾ø´Â Ç׸ñÀº °Ç³Ê ¶Ý´Ï´Ù. ÀÌ·¸°Ô Çϸé TreeView¿¡ üũǥ½ÄµÈ ¸ðµç Ç׸ñÀ» Çϳª¾¿ ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.
  8. +
+ +

TV_GetText(OutputVar, ItemID)

+

+ÁöÁ¤µÈ ItemIDÀÇ ÅؽºÆ®/À̸§À» ¿­¶÷ÇÏ°í ±×°ÍÀ» OutputVar¿¡ ÀúÀåÇÕ´Ï´Ù. ÅؽºÆ®°¡ 8191 ±æÀ̸¦ ³ÑÀ¸¸é, ¿ÀÁ÷ ¾ÕÂÊ 8191 ¹®ÀÚ¸¸ ¿­¶÷µË´Ï´Ù. ¼º°øÇϸé, ÇÔ¼ö´Â ±× Ç׸ñÀÇ ID¸¦ µ¹·ÁÁÝ´Ï´Ù. ½ÇÆÐÇϸé, 0À» µ¹·ÁÁÝ´Ï´Ù (±×¸®°í OutputVarµµ ºñ¿öÁý´Ï´Ù).

+ +

TV_Get(ItemID, "Expand | Check | Bold")

+

+ÁöÁ¤µÈ Ç׸ñ¿¡ ÁöÁ¤µÈ ¼Ó¼ºÀÌ ¾øÀ¸¸é, ±× ÀÚ½ÅÀÇ ItemID°¡ ¹ÝȯµË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¹ÝȯµË´Ï´Ù. µÎ ¹ø° ¸Å°³º¯¼ö¿¡ ´ëÇÏ¿©, "E", "Expand", ¶Ç´Â "Expanded"À» ÁöÁ¤Çϸé Ç׸ñÀÌ ÇöÀç È®´ëµÇ¾î ÀÖ´ÂÁö ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù (Áï, ±×ÀÇ ÀÚ¼ÕÀÌ º¸¿©Áö°í ÀÖ´ÂÁö¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù); "C", "Check", ¶Ç´Â "Checked"¸¦ ÁöÁ¤Çϸé Ç׸ñ¿¡ üũǥ½ÄÀÌ ÀÖ´ÂÁö ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù; ¶Ç´Â "B"³ª "Bold"¸¦ ÁöÁ¤Çϸé ÇöÀç Ç׸ñÀÇ ±Û²ÃÀÌ º¼µåüÀÎÁö ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù.

+

+ÆÁ: IF-¼­¼ú¹®Àº 0 ¾Æ´Ñ °ªÀ» Âü("true")À¸·Î °£ÁÖÇϹǷÎ, ´ÙÀ½ÀÇ µÎ ÁÙÀº ±â´ÉÀûÀ¸·Î µ¿ÀÏÇÕ´Ï´Ù:

+
    +
  1. if TV_Get(ItemID, "Checked") = ItemID
  2. +
  3. if TV_Get(ItemID, "Checked")
  4. +
+

G-¶óº§ °íÁö (Primary)

+

+gMySubroutine°ú °°Àº g-¶óº§Àº ÄÜÆ®·ÑÀÇ ¿É¼Ç¿¡ ³ª¿­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é »ç¿ëÀÚ°¡ ÄÜÆ®·Ñ¿¡ Á¶Ä¡¸¦ ¼öÇàÇÒ ¶§¸¶´Ù MySubroutine ¶óº§ÀÌ ÀÚµ¿À¸·Î ±âµ¿µË´Ï´Ù. ÀÌ ¼­ºê·çƾÀº ³»Àå ÇÔ¼ö A_Gui ±×¸®°í A_GuiControl À» Âü°íÇØ ¾î´À â°ú ¾î´À TreeView°¡ À̺¥Æ®¸¦ ¹ß»ý½ÃÄ×´ÂÁö ¾Ë¾Æ³À´Ï´Ù. ´õ Áß¿äÇÑ °ÍÀº A_GuiEvent¸¦ Âü°íÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾È¿¡ ´ÙÀ½ ¹®ÀÚ¿­ ¶Ç´Â ±âÈ£ Áß Çϳª°¡ µé¾î ÀÖ½À´Ï´Ù (¹Ì·¡ ¹öÀü°úÀÇ È£È¯À» À§ÇØ, ½ºÅ©¸³Æ®´Â À̰͵鸸 À¯ÀÏÇÑ °ªÀ̶ó°í °£ÁÖÇÏ¸é ¾ÈµË´Ï´Ù):

+

+DoubleClick: »ç¿ëÀÚ°¡ Ç׸ñÀ» ´õºíŬ¸¯Çß½À´Ï´Ù. º¯¼ö A_EventInfo¿¡ ±× Ç׸ñÀÇ ID°¡ ´ã±é´Ï´Ù.

+

+D: »ç¿ëÀÚ°¡ Ç׸ñÀ» ²ø·Á°í ½ÃµµÇß½À´Ï´Ù (ÇöÀç À̸¦ ³»ºÎÀûÀ¸·Î Áö¿øÇÏÁö ¾Ê½À´Ï´Ù). º¯¼ö A_EventInfo¿¡ ±× Ç׸ñÀÇ ID°¡ ´ã±é´Ï´Ù.

+

+d (¼Ò¹®ÀÚ D): À§¿Í °°Áö¸¸ ¿ÞŬ¸¯ ²ø±â°¡ ¾Æ´Ï¶ó ¿ìŬ¸¯ ²ø±âÀÔ´Ï´Ù.

+

+e (¼Ò¹®ÀÚ E): »ç¿ëÀÚ°¡ Ç׸ñ ÆíÁýÀ» ³¡¸¶ÃƽÀ´Ï´Ù (»ç¿ëÀÚ´Â TreeView ¿É¼Ç¿¡ -ReadOnlyÀÏ °æ¿ì¿¡¸¸ Ç׸ñÀ» ÆíÁýÇÒ ¼ö ÀÖ½À´Ï´Ù). º¯¼ö A_EventInfo¿¡ ±× Ç׸ñÀÇ ID°¡ ´ã±é´Ï´Ù.

+

+S: »ç¿ëÀÚ ¶Ç´Â ½ºÅ©¸³Æ® ÀÚü¿¡¼­ »õ Ç׸ñÀ» ¼±ÅÃÇß½À´Ï´Ù. º¯¼ö A_EventInfo¿¡ »õ·Î ¼±ÅÃµÈ ±× Ç׸ñÀÇ ID°¡ ´ã±é´Ï´Ù.

+ +

G-¶óº§ °íÁö (Secondary)

+

+TreeViewÀÇ ¿É¼Ç¿¡ ´Ü¾î AltSubmitÀÌ ÀÖ´Ù¸é, ±×ÀÇg-¶óº§Àº ´õ ÀÚÁÖ ±âµ¿µÇ°í A_GuiEvent¿¡´Â ´ÙÀ½ÀÇ °ªÀÌ Ãß°¡·Î ´ã±æ ¼ö ÀÖ½À´Ï´Ù:

+

+Normal: »ç¿ëÀÚ°¡ Ç׸ñÀ» ¿ÞŬ¸¯ Çß½À´Ï´Ù. º¯¼ö A_EventInfo¿¡ ±× Ç׸ñÀÇ ID°¡ ´ã±é´Ï´Ù.

+

+RightClick: »ç¿ëÀÚ°¡ Ç׸ñÀ» ¿ìŬ¸¯Çß½À´Ï´Ù. º¯¼ö A_EventInfo¿¡ ±× Ç׸ñÀÇ ID°¡ ´ã±é´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì, ÀÌ¿¡ ¹ÝÀÀÇÏ¿© ¸Þ´º¸¦ º¸¿©ÁÖÁö ¾Ê´Â °ÍÀÌ Á¦ÀÏ ÁÁ½À´Ï´Ù. ´ë½Å¿¡, GuiContextMenu ¶óº§À» »ç¿ëÇϽʽÿÀ. ¿Ö³ÄÇϸé Apps Å°µµ ÀÎÁöÇϱ⠶§¹®ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
GuiContextMenu:  ; ¿ìŬ¸¯¿¡ ÀÀ´äÇÏ¿© ±âµ¿µÇ°Å³ª Apps ´©¸§¿¡ ÀÀ´äÇÏ¿© ±âµ¿µËˆ•.
+if A_GuiControl <> MyTreeView  ; ÀÌ Á¡°ËÀº ¼±ÅÃÀûÀÔ´Ï´Ù. TreeView ¾È¿¡ Ŭ¸¯ÇÒ ¶§¸¸ ¸Þ´º¸¦ º¸¿©ÁÝ´Ï´Ù.
+    return
+; Á¦°øµÈ A_GuiX ±×¸®°í A_GuiY ÁÂÇ¥¿¡ ¸Þ´º¸¦ º¸¿©ÁÝ´Ï´Ù.
+; »ç¿ëÀÚ°¡ Apps Å°¸¦ ´©¸£´õ¶óµµ ¿Ã¹Ù¸¦ ÁÂÇ¥¸¦ Á¦°øÇϱ⠶§¹«¿¡ ÀÌ°ÍÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù:
+Menu, MyContextMenu, Show, %A_GuiX%, %A_GuiY%
+return
+

+E: »ç¿ëÀÚ°¡ Ç׸ñ ÆíÁýÀ» ½ÃÀÛÇß½À´Ï´Ù (»ç¿ëÀÚ´Â TreeView ¿É¼Ç¿¡ -ReadOnlyÀÌ ÀÖÀ» °æ¿ì¿¡¸¸ Ç׸ñÀ» ÆíÁýÇÒ ¼ö ÀÖ½À´Ï´Ù). º¯¼ö A_EventInfo¿¡ ±× Ç׸ñÀÇ ID°¡ ´ã±é´Ï´Ù.

+

+F: TreeView°¡ Å°º¸µå ÃÊÁ¡À» ¹Þ¾Ò½À´Ï´Ù.

+

+f (¼Ò¹®ÀÚ F): TreeView °¡ Å°º¸µå ÃÊÁ¡À» ÀÒ¾î¹ö·È½À´Ï´Ù.

+

+K: TreeView°¡ ÃÊÁ¡ÀÌ ÀÖ´Â µ¿¾È »ç¿ëÀÚ°¡ Å°¸¦ ´­·¶½À´Ï´Ù. A_EventInfo¿¡ Å°ÀÇ °¡»ó Å° Äڵ尡 ´ã±é´Ï´Ù. ¹üÀ§´Â 1ºÎÅÍ 255±îÁöÀÔ´Ï´Ù. Å°°¡ ¾ËÆĺªÀ̸é, ´ëºÎºÐÀÇ Å°º¸µå ·¹À̾ƿô¿¡¼­ Chr(A_EventInfo)¸¦ ÅëÇÏ¿© »óÀÀÇÏ´Â ¹®ÀÚ·Î º¯È¯ÇÒ ¼ö ÀÖ½À´Ï´Ù. F2 Å°´­¸²Àº WantF2¿¡ »ó°ü¾øÀÌ ¹Þ½À´Ï´Ù. ±×·¸Áö¸¸, Enter Å°´­¸²Àº ¹ÞÁö ¾Ê½À´Ï´Ù; ÀÌ Å°¸¦ ¹ÞÀ¸·Á¸é, ¾Æ·¡¿¡ ±â¼úÇÏ´Â ¹Ù¿Í °°ÀÌ ±âº» ¹öÆ°À» »ç¿ëÇϽʽÿÀ.

+

++ (Ç÷¯½º »çÀÎ): Ç׸ñÀÌ È®´ëµÇ¾î ±×ÀÇ ÀÚ¼ÕÀ» º¸¿©ÁÝ´Ï´Ù. º¯¼ö A_EventInfo¿¡ ±× Ç׸ñÀÇ ID°¡ ´ã±é´Ï´Ù.

+

- (¸¶À̳ʽº »çÀÎ): Ç׸ñÀÌ Ãà¼ÒµÇ¾î ±×ÀÇ ÀÚ¼ÕÀ» °¨Ãä´Ï´Ù. º¯¼ö A_EventInfo¿¡ ±× Ç׸ñÀÇ ID°¡ ´ã±é´Ï´Ù.

+ +

³íÆò

+

+Gui Submit ¸í·É¾î´Â TreeView ÄÜÆ®·Ñ¿¡ ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù. ±×·¯¹Ç·Î, ½ºÅ©¸³Æ®´Â (ÀÖ´Ù¸é) TreeViewÀÇ ¿¬°ü º¯¼ö¸¦ »ç¿ëÇØ ±âŸ µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. µ¤¾î¾µ±îºÁ °ÆÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+TreeView¿¡ ÃÊÁ¡ÀÌ ÀÖ´Â µ¿¾È »ç¿ëÀÚ°¡ Enter¸¦ ´­·¶´ÂÁö ŽÁöÇÏ·Á¸é, ±âº» ¹öÆ°À» »ç¿ëÇϽʽÿÀ (¿øÇÏ¸é °¨Ãâ ¼ö ÀÖ½À´Ï´Ù). ¿¹¸¦ µé¾î:

+
Gui, Add, Button, Hidden Default, OK
+...
+ButtonOK:
+GuiControlGet, FocusedControl, FocusV
+if FocusedControl <> MyTreeView
+    return
+MsgBox % "Enter was pressed. The selected item ID is " . TV_GetSelection()
+return
+

+Å°º¸µå·Î ÇÑ Ç׸ñ¿¡¼­ ´Ù¸¥ Ç׸ñÀ¸·Î Ç×ÇØÇÏ´Â °Í ¸»°íµµ, »ç¿ëÀÚ´Â ÇÑ Ç׸ñÀÇ À̸§ÀÇ Ã¹ ¹®ÀÚ¸¦ ŸÀÚÇÏ¿© Á¡Áø °Ë»öÀ» ¼öÇàÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¼±ÅÃÀÌ ºÎÇÕÇÏ´Â °¡Àå °¡±î¿î Ç׸ñÀ¸·Î Á¡ÇÁÇÕ´Ï´Ù.

+

+±æÀÌ¿¡ »ó°ü¾øÀÌ ÅؽºÆ®¸¦ TreeViewÀÇ °¢ Ç׸ñ¿¡ ÀúÀåÇÒ ¼ö ÀÖÁö¸¸, ¿ÀÁ÷ ¾ÕÂÊ 260 ±ÛÀÚ¸¸ º¸¿©ÁÝ´Ï´Ù.

+

+ÀÌ·ÐÀûÀ¸·Î TreeView¿¡¼­ Ç׸ñÀÇ °³¼ö´Â ÃÖ´ë 65536ÀÌÁö¸¸, Ç׸ñÀ» Ãß°¡ÇÒ ¼ö·Ï ¾ó¸¶ °¡Áö ¾Ê¾Æ ¼öÇ༺´ÉÀÌ ´«¿¡ ¶ç°Ô ÁÙ¾îµì´Ï´Ù. TV_Add()¿¡ ±â¼úµÈ ´Ù½Ã ±×¸®±â ÆÁÀ» »ç¿ëÇϸé À̸¦ ¾à°£ ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù.

+

+ListViews¿Í ´Ù¸£°Ô, TreeViewÀÇ ImageList´Â TreeView°¡ Æı«µÉ ¶§ ÀÚµ¿À¸·Î Æı«µÇÁö ¾Ê½À´Ï´Ù. ±×·¯¹Ç·Î, ½ºÅ©¸³Æ®´Â TreeViewÀÇ Ã¢À» Æı«ÇÏ°í ³ª¸é ¹Ýµå½Ã IL_Destroy(ImageListID)¸¦ È£ÃâÇØ¾ß ÇÕ´Ï´Ù. + +ImageList¸¦ ´Ù¸¥ °÷¿¡ »ç¿ëÇÒ »ý°¢ÀÌ ¾ø´Ù¸é ¸»ÀÔ´Ï´Ù. ±×·¸Áö¸¸, ½ºÅ©¸³Æ®°¡ °ð ³¡³¯ °æ¿ì¶ó¸é ºÒÇÊ¿äÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ±× ¶§ ¸ðµç ImageListsµµ ÀÚµ¿À¸·Î Æı«µÇ±â ¶§¹®ÀÔ´Ï´Ù.

+

+½ºÅ©¸³Æ®´Â â ´ç Çϳª ÀÌ»óÀÇ TreeView¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ±âº» ¸»°í ´Ù¸¥ TreeView¸¦ ó¸®ÇÏ·Á¸é, ³»Àå ÇÔ¼ö¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+TreeViewÀÇ ±Û²ÃÀ» ¹Ù²Ù°Å³ª Å©±â¸¦ ¹Ù²Ù°Å³ª ¼û±â·Á¸é GuiControlÀ» »ç¿ëÇϽʽÿÀ.

+

+Æ®¸®ºä È®Àå(Tree View eXtension (TVX))À¸·Î TreeViews¸¦ À̵¿ÇÏ°í »ðÀÔÇÏ°í Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ µ¥¸ð¸¦ ÂüÁ¶ÇϽʽÿÀ: www.autohotkey.com/forum/topic19021.html

+ +

°ü·Ã Ç׸ñ

+

+ListView, Other Control Types, Gui, GuiContextMenu, GuiControl, GuiControlGet, TreeView ½ºÅ¸ÀÏ Å×À̺í

+ +

¿¹Á¦

+
; ´ÙÀ½ ½ºÅ©¸³Æ®´Â ÀÌ ÆäÀÌÁö À§¿¡ ÀÖ´Â ¿¹Á¦º¸´Ù ´õ Á¤±³ÇÕ´Ï´Ù.
+; ¸ðµç-»ç¿ëÀÚ ½ÃÀÛ ¸Þ´ºÀÇ ¸ðµç Æú´õ¸¦ ´ãÀº TreeView¸¦ »ý¼ºÇÏ°í ºÎ¿©ÁÝ´Ï´Ù.
+; »ç¿ëÀÚ°¡ Æú´õ¸¦ ¼±ÅÃÇϸé, ±×ÀÇ ³»¿ëÀÌ ListView ¿À¸¥ÂÊ¿¡ ³ªÅ¸³³´Ï´Ù (À©µµ¿ìÁîÀÇ Å½»ö±âó·³).
+; °Ô´Ù°¡, StatusBar ÄÜÆ®·Ñ¿¡ ÇöÀç ¼±ÅÃµÈ Æú´õ¿¡ °üÇÑ Á¤º¸¸¦ º¸¿©ÁÝ´Ï´Ù.
+
+; ´ÙÀ½ Æú´õ´Â TreeView¿¡ ´ëÇÏ¿© ·çÆ® Æú´õ°¡ µË´Ï´Ù.
+; C:\¿Í °°ÀÌ Àüü µå¶óÀ̺긦 ÁöÁ¤ÇÏ¸é ¾à°£ ÀûÀç ½Ã°£ÀÌ °É¸³´Ï´Ù:
+TreeRoot = %A_StartMenuCommon%
+TreeViewWidth := 280
+ListViewWidth := A_ScreenWidth - TreeViewWidth - 30
+
+; »ç¿ëÀÚ°¡ âÀ» ²ø¾î Å©±â¸¦ ¹Ù²Ü ¼ö ÀÖµµ·Ï Çã¿ëÇÕ´Ï´Ù:
+Gui +Resize
+
+; ImageList¸¦ ¸¸µé°í °Å±â¿¡ Ç¥ÁØ ½Ã½ºÅÛ ¾ÆÀÌÄÜÀ» ¹èÁ¤ÇÕ´Ï´Ù:
+ImageListID := IL_Create(5)
+Loop 5 
+    IL_Add(ImageListID, "shell32.dll", A_Index)
+; TreeView¿Í ListView¸¦ ³ª¶õÈ÷ ¸¸µé¾î ¸¶Ä¡ À©µµ¿ìÁîÀÇ Å½»ö±âó·³ ÇàÀ§ÇÕ´Ï´Ù:
+Gui, Add, TreeView, vMyTreeView r20 w%TreeViewWidth% gMyTreeView ImageList%ImageListID%
+Gui, Add, ListView, vMyListView r20 w%ListViewWidth% x+10, Name|Modified
+
+; ListViewÀÇ Ä÷³ ³Êºñ¸¦ ¼³Á¤ÇÕ´Ï´Ù (ÀÌ°ÍÀº ¼±ÅÃÀûÀÔ´Ï´Ù):
+Col2Width = 70  ; ¿ÀÁ÷ YYYYMMDD ºÎºÐ¸¸ º¸À̵µ·Ï ³Êºñ¸¦ ÁÙÀÔ´Ï´Ù.
+LV_ModifyCol(1, ListViewWidth - Col2Width - 30)  ; ¼öÁ÷ ½ºÅ©·Ñ¹Ù¸¦ À§ÇØ °ø°£À» Çã¿ëÇÕ´Ï´Ù.
+LV_ModifyCol(2, Col2Width)
+
+; ÆÄÀÏÀÇ °³¼ö¿Í ±×ÀÇ ÃÑ Å©±â¿¡ °üÇÑ Á¤º¸¸¦ º¸¿©ÁÙ »óÅ ¹Ù¸¦ »ý¼ºÇÕ´Ï´Ù:
+Gui, Add, StatusBar
+SB_SetParts(60, 85)  ; ¹Ù¸¦ ¼¼ ºÎºÐÀ¸·Î »ý¼ºÇÕ´Ï´Ù (¼¼ ¹ø° ºÎºÐ¿¡ ³ª¸ÓÁö ³Êºñ¸¦ ¸ðµÎ ä¿ó´Ï´Ù).
+
+; Æú´õ¿Í ±×ÀÇ ºÎÆú´õ´úÀ» Æ®¸®¿¡ Ãß°¡ÇÕ´Ï´Ù. ÀûÀç ½Ã°£ÀÌ °É¸± °æ¿ì´Â ÇöÀç »óŸ¦ º¸¿©ÁÝ´Ï´Ù:
+SplashTextOn, 200, 25, TreeView and StatusBar Example, Loading the tree...
+AddSubFoldersToTree(TreeRoot)
+SplashTextOff
+
+; âÀ» º¸¿©ÁÖ°í µ¹¾Æ°©´Ï´Ù. OS´Â ½ºÅ©¸³Æ®¿¡°Ô »ç¿ëÀÚ°¡ ÀûÀýÇÑ ÇàÀ§¸¦ ¼öÇàÇÒ ¶§¸¶´Ù °íÁöÇÕ´Ï´Ù:
+Gui, Show,, %TreeRoot%  ; Á¦¸ñ ¹Ù¿¡ ¼Ò½º µð·ºÅ丮¸¦ º¸¿©ÁÝ´Ï´Ù (TreeRoot).
+return
+
+AddSubFoldersToTree(Folder, ParentItemID = 0)
+{
+    ; ÀÌ ÇÔ¼ö´Â ÁöÁ¤µÈ Æú´õÀÇ ¸ðµç ºÎÆú´õ¸¦ TreeView¿¡ Ãß°¡ÇÕ´Ï´Ù..
+    ; ¶ÇÇÑ ±íÀÌ¿¡ »ó°ü¾øÀÌ ÀÚ±â ÀÚ½ÅÀ» Àç±ÍÇØ ³»Æ÷µÈ Æú´õµéÀ» ¼öÁýÇÕ´Ï´Ù.
+    Loop %Folder%\*.*, 2  ; ¸ðµç Æú´õÀÇ ºÎÆú´õµéÀ» ¿­¶÷ÇÕ´Ï´Ù.
+        AddSubFoldersToTree(A_LoopFileFullPath, TV_Add(A_LoopFileName, ParentItemID, "Icon4"))
+}
+
+MyTreeView:  ; ÀÌ ¼­ºê·çƾÀº »ç¿ëÀÚ ÇàÀ§¸¦ ó¸®ÇÕ´Ï´Ù (¿¹¸¦ µé¾î Ŭ¸¯).
+if A_GuiEvent <> S  ; Áï, "»õ·Î¿î Æ®¸® Ç׸ñ ¼±ÅÃ"ÀÌ ¾Æ´Ñ À̺¥Æ®.
+    return  ; ¾Æ¹«°Íµµ ÇÏÁö ¾ÊÀ½.
+; ±×·¸Áö ¾ÊÀ¸¸é, ListView ³»¿ëÀ» ¼±ÅÃµÈ Æú´õ·Î ä¿ó´Ï´Ù.
+; ¸Õó ¼±ÅÃµÈ Æú´õÀÇ ¿ÏÀüÇÑ °æ·Î¸¦ ¾Ë¾Æ³À´Ï´Ù:
+TV_GetText(SelectedItemText, A_EventInfo)
+ParentID := A_EventInfo
+Loop  ; ¼±ÅÃµÈ Æú´õ¿¡ ´ëÇÑ Àüü °æ·Î¸¦ ±¸¼ºÇÕ´Ï´Ù.
+{
+    ParentID := TV_GetParent(ParentID)
+    if not ParentID  ; ´õ ÀÌ»ó Á¶»ó ¾øÀ½.
+        break
+    TV_GetText(ParentText, ParentID)
+    SelectedItemText = %ParentText%\%SelectedItemText%
+}
+SelectedFullPath = %TreeRoot%\%SelectedItemText%
+
+; ÆÄÀϵéÀ» ListView ¾È¿¡ »ðÀÔÇÕ´Ï´Ù:
+LV_Delete()  ; ¸ðµç ÇàµéÀ» Áö¿ó´Ï´Ù.
+GuiControl, -Redraw, MyListView  ; ÀûÀçÇÏ´Â µ¿¾È ´Ù½Ã ±×¸®±â¸¦ ¸·¾Æ¼­ ¼öÇ༺´ÉÀ» Çâ»ó½Ãŵ´Ï´Ù.
+FileCount = 0  ; ¾Æ·¡ ȸµ¹À̸¦ ½ÃÀÛÇϱâ Àü¿¡ ÃʱâÈ­ÇÕ´Ï´Ù.
+TotalSize = 0
+Loop %SelectedFullPath%\*.*  ; °£´ÜÇÏ°Ô Ã³¸®Çϱâ À§ÇØ, Æú´õ¸¦ »ý·«ÇÏ°í ListView¿¡ ÀÖ´Â ÆÄÀϵ鸸 º¸ÀÔ´Ï´Ù.
+{
+    LV_Add("", A_LoopFileName, A_LoopFileTimeModified)
+    FileCount += 1
+    TotalSize += A_LoopFileSize
+}
+GuiControl, +Redraw, MyListView
+
+; »óÅ ¹ÙÀÇ ¼¼ ºÎºÐÀ» ¾÷µ¥ÀÌÆ®ÇØ ÇöÀç ¼±ÅÃµÈ Æú´õ¿¡ °üÇÑ Á¤º¸¸¦ º¸¿©ÁÝ´Ï´Ù:
+SB_SetText(FileCount . " files", 1)
+SB_SetText(Round(TotalSize / 1024, 1) . " KB", 2)
+SB_SetText(SelectedFullPath, 3)
+return
+
+GuiSize:  ; »ç¿ëÀÚÀÇ Ã¢ Å©±â º¯°æ¿¡ ÀÀ´äÇÏ¿© ListView¿Í TreeView Å©±â¸¦ Á¶ÀýÇÕ´Ï´Ù.
+if A_EventInfo = 1  ; âÀÌ ÃÖ¼ÒÈ­µÇ¾ú½À´Ï´Ù. ¾Æ¹« Á¶Ä¡µµ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù.
+    return
+; ±×·¸Áö ¾ÊÀ¸¸é, âÀº Å©±â°¡ º¯°æµÇ°Å³ª ÃÖ´ëÈ­µÇ¾ú½À´Ï´Ù. ºÎÇÕÇÏ´Â ÄÜÆ®·ÑµéÀÇ Å©±â¸¦ Á¶ÀýÇÕ´Ï´Ù.
+GuiControl, Move, MyTreeView, % "H" . (A_GuiHeight - 30)  ; StatusBar¿Í ¿©¹é¿¡ -30À» ÁöÁ¤ÇÕ´Ï´Ù.
+GuiControl, Move, MyListView, % "H" . (A_GuiHeight - 30) . " W" . (A_GuiWidth - TreeViewWidth - 30)
+return
+
+GuiClose:  ; »ç¿ëÀÚ°¡ TreeViewÀÇ GUI âÀ» ´ÝÀ¸¸é ½ºÅ©¸³Æ®¸¦ Á¾·áÇÕ´Ï´Ù.
+ExitApp
+ + + diff --git a/src/docs/commands/Trim.htm b/src/docs/commands/Trim.htm new file mode 100644 index 0000000..6f98628 --- /dev/null +++ b/src/docs/commands/Trim.htm @@ -0,0 +1,40 @@ + + + + +Trim + + + + + + + +

Trim [AHK_L 31+]

+ +

¹®ÀÚ¿­ÀÇ ¾ÕµÚ·ÎºÎÅÍ ¹®ÀÚµéÀ» °È¾î³À´Ï´Ù.

+ +
Result :=  Trim(String, OmitChars = " `t")
+Result := LTrim(String, OmitChars = " `t")
+Result := RTrim(String, OmitChars = " `t")
+

¸Å°³º¯¼ö

+
+ +
String
+

¹®ÀÚ¿­ °ªÀ̳ª º¯¼ö. ¼ýÀÚ´Â Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.

+ +
OmitChars
+

StringÀÇ ¾ÕµÚ·ÎºÎÅÍ ¹èÁ¦ÇÒ ¼±ÅÃÀûÀÎ ¹®ÀÚ ¸®½ºÆ® (´ë¼Ò¹®ÀÚ ±¸ºÐ). »ý·«µÇ¸é, ½ºÆäÀ̽º¿Í ÅÇÀÌ Á¦°ÅµË´Ï´Ù.

+ +
+ +

¿¹Á¦

+
text := "  text  "
+MsgBox % "No trim:`t '" text "'"
+    . "`nTrim:`t '" Trim(text) "'"
+    . "`nLTrim:`t '" LTrim(text) "'"
+    . "`nRTrim:`t '" RTrim(text) "'"
+MsgBox % LTrim("00000123","0")
+ + + diff --git a/src/docs/commands/Try.htm b/src/docs/commands/Try.htm new file mode 100644 index 0000000..2f39e2a --- /dev/null +++ b/src/docs/commands/Try.htm @@ -0,0 +1,130 @@ + + + + +Try + + + + + + + +

Try [v1.1.04+]

+ +

+Çϳª ÀÌ»óÀÇ ¼­¼ú¹®µéÀ» (¸í·É¾î³ª Ç¥Çö½ÄÀ») throw ¸í·É¾î°¡ ´øÁö´Â ½ÇÇà½Ã°£ ¿¡·¯¿Í ¿¹¿Ü·ÎºÎÅÍ º¸È£ÇÕ´Ï´Ù.

+ +
Try Statement
+
Try
+{
+    Statements
+}
+ +

³íÆò

+

+try ¸í·É¾î´Â º¸Åë ´ÙÀ½¿¡ ºí·ÏÀÌ µû¶ó¿É´Ï´Ù - È°°ýÈ£·Î µÑ·¯ ½ÎÀÎ Çϳª ÀÌ»óÀÇ ¼­¼ú¹® (¸í·É¾î³ª Ç¥Çö½Ä). ÇϳªÀÇ ¼­¼ú¹®¸¸ ½ÇÇàÇÑ´Ù¸é, try¿Í °°Àº ÁÙ ¶Ç´Â ´ÙÀ½ ÁÙ¿¡ ¹èÄ¡ÇÒ ¼ö ÀÖ°í, È°°ýÈ£¸¦ »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. try°¡ ¿¡·¯¸¦ ÀâÀ» ¶§ Á¤È®ÇÏ°Ô ÇÑ ¹ø¸¸ ½ÇÇàµÇ´Â Äڵ带 ÁöÁ¤ÇÏ·Á¸é, catch ¸í·É¾î¸¦ »ç¿ëÇϽʽÿÀ.

+

+½ÇÇà½Ã°£ ¿¡·¯°¡ ÀϾ¸é throw ¸í·É¾î ¶Ç´Â ÇÁ·Î±×·¥ÀÌ ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. try ºí·Ï ¾È¿¡¼­ ¶Ç´Â ºí·Ï¿¡¼­ È£ÃâÇÑ ÇÔ¼ö ¾È¿¡¼­ ¿¹¿Ü°¡ ´øÁ®Áú ¶§, ´ÙÀ½°ú °°Àº ÀÏÀÌ ÀϾ´Ï´Ù:

+
    +
  • »óÀÀÇÏ´Â catch ¼­¼ú¹®ÀÌ ÀÖ´Ù¸é, ½ÇÇàÀº °Å±â¿¡¼­ °è¼ÓµË´Ï´Ù.
  • +
  • catch ¼­¼ú¹®Àº ¾øÁö¸¸ finally ¼­¼ú¹®ÀÌ ÀÖ´Ù¸é, ±×°ÍÀÌ ½ÇÇàµË´Ï´Ù. ±×·¯³ª ÀÏ´Ü ³¡³ª¸é ¿¹¿Ü´Â ÀÚµ¿À¸·Î ´Ù½Ã ´øÁ®Áý´Ï´Ù.
  • +
  • catch ¼­¼ú¹®µµ ¾ø°í finally ¼­¼ú¹®µµ ¾ø´Ù¸é, ½ÇÇàÀº ´ÙÀ½ ÁÙ try ºí·Ï ¹ÛÀ¸·Î °è¼ÓµË´Ï´Ù.
  • +
+

+try ºí·ÏÀÌ ½ÇÇà ÁßÀÌÁö ¾ÊÀº µ¿¾È¿¡ ¿¹¿Ü°¡ ´øÁ®Áö¸é, ¿¡·¯ ¸Þ½ÃÁö¸¦ º¸¿©ÁÖ°í ÇöÀç ¾²·¹µå¸¦ Á¾·áÇÕ´Ï´Ù.

+

+One True Brace (OTB) ½ºÅ¸ÀÏÀ» ¼±ÅÃÀûÀ¸·Î try ¸í·É¾î¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
try {
+    ...
+} catch e {
+    ...
+}
+ +

°ü·Ã Ç׸ñ

+

Catch, Throw, Finally, ºí·Ï

+ +

¿¹Á¦

+
; ¿¹Á¦ #1: try/catch/throwÀÇ ±âº» °³³ä.
+
+try  ; Äڵ带 ½ÇÇàÇØ º¾´Ï´Ù.
+{
+    HelloWorld()
+    MakeToast()
+}
+catch e  ;  À§ÀÇ ºí·Ï¿¡¼­ ÀÏÀ¸Å² ù ¹ø° ¿¡·¯/¿¡¿Ü¸¦ ó¸®ÇÕ´Ï´Ù.
+{
+    MsgBox, ¿¹¿Ü°¡ ´øÁ®Á³½À´Ï´Ù!`n±¸Ã¼ÀûÀ¸·Î ´ÙÀ½°ú °°½À´Ï´Ù: %e%
+    Exit
+}
+
+HelloWorld()  ; ¾ðÁ¦³ª ¼º°øÇÕ´Ï´Ù.
+{
+    MsgBox, Hello, world!
+}
+
+MakeToast()  ; ¾ðÁ¦³ª ½ÇÆÐÇÕ´Ï´Ù.
+{
+    ; try ºí·ÏÀÇ ¿¡·¯ 󸮿¡ °ð¹Ù·Î Á¡ÇÁÇÕ´Ï´Ù:
+    throw A_ThisFunc " is not implemented, sorry"
+}
+
+ +
; ¿¹Á¦ #2: ErrorLevel ´ë½Å¿¡ try/catch »ç¿ëÇϱâ.
+
+try
+{
+    ; ´ÙÀ½ ¿¹Á¦´Â ¾î¶² À¯ÇüÀÇ ÆÄÀÏÀ» ¹é¾÷ÇÕ´Ï´Ù:
+    FileCopy, %A_MyDocuments%\*.txt, D:\Backup\Text documents
+    FileCopy, %A_MyDocuments%\*.doc, D:\Backup\Text documents
+    FileCopy, %A_MyDocuments%\*.jpg, D:\Backup\Photos
+}
+catch
+{
+    MsgBox, 16,, ÆÄÀÏÀ» ¹é¾÷ÇÏ´Â µ¿¾È ¹®Á¦°¡ ÀÖ¾ú½À´Ï´Ù!
+    ExitApp
+}
+
+ +
; ¿¹Á¦ #3: COM ¿¡·¯ ´Ù·ç±â.
+
+try
+{
+    obj := ComObjCreate("ScriptControl")
+    obj.ExecuteStatement("MsgBox ""This is embedded VBScript""")
+    obj.InvalidMethod() ; ÀÌ ÁÙÀº ½ÇÇà ½Ã°£ ¿¡·¯¸¦ ÀÏÀ¸Åµ´Ï´Ù.
+}
+catch e
+{
+    ; e¸¦ ´ã°í ÀÖ´Â °´Ã¼¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â Exception()¸¦ ÂüÁ¶ÇϽʽÿÀ.
+    MsgBox, 16,, % "Exception thrown!`n`nwhat: " e.what "`nfile: " e.file
+        . "`nline: " e.line "`nmessage: " e.message "`nextra: " e.extra
+}
+
+ +
; ¿¹Á¦ #4: try-catch ¼­¼ú¹®µéÀ» ³»Æ÷Çϱâ.
+
+try Example1() ; ÇÑ ÁÙ ¼­¼ú¹®Àº Try ¸í·É¾î¿Í °°Àº ÁÙ¿¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.
+catch e
+    MsgBox, Example1() threw %e%.
+
+Example1()
+{
+    try Example2()
+    catch e
+    {
+        if e = 1
+            throw e ; ¿¹¿Ü¸¦ ´Ù½Ã ´øÁ®¼­ È£ÃâÀÚ°¡ ¹ÞÀ» ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.
+        else
+            MsgBox, Example2() threw %e%.
+    }
+}
+
+Example2()
+{
+    Random, o, 1, 2
+    throw o
+}
+ + + diff --git a/src/docs/commands/URLDownloadToFile.htm b/src/docs/commands/URLDownloadToFile.htm new file mode 100644 index 0000000..5bda1bc --- /dev/null +++ b/src/docs/commands/URLDownloadToFile.htm @@ -0,0 +1,105 @@ + + + + +UrlDownloadToFile + + + + + + + + +

UrlDownloadToFile

+ +

ÆÄÀÏÀ» ÀÎÅͳݿ¡¼­ ³»·Á¹Þ½À´Ï´Ù.

+ +
UrlDownloadToFile, URL, Filename
+

¸Å°³º¯¼ö

+
+ +
URL
+

³»·Á ¹ÞÀ» ÆÄÀÏÀÇ URL. ¿¹¸¦ µé¾î, http://someorg.org´Â ±× ȸ»çÀÇ È¯¿µ ÆäÀÌÁö¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+ +
Filename
+

ÆÄÀÏ¿¡ ³»·Á¹Þ±â: Áö¿ªÀûÀ¸·Î »ý¼ºµÉ ÆÄÀÏÀÇ À̸§À» ÁöÁ¤ÇÕ´Ï´Ù. Àý´ë °æ·Î°¡ ÁöÁ¤µÇÁö ¾ÊÀ¸¸é %A_WorkingDir%¿¡ ÀÖ´Ù°í °£Áֵ˴ϴÙ. ±âÁ¸ÀÇ ÆÄÀÏÀº ÀÌ »õ ÆÄÀÏ·Î µ¤¾î¾²±â µË´Ï´Ù.

+

º¯¼ö¿¡ ³»·Á¹Þ±â: ¾Æ·¡ÀÇ ¿¹Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +
+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

+ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1·Î ¼³Á¤µÇ°í ¼º°øÇϸé 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+¿ø°Ý ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´õ¶óµµ ³»·Á¹Þ±â´Â ¸¶Ä¡ ¼º°øÇÑ °Íó·³ º¸ÀÏ ¼ö ÀÖ½À´Ï´Ù. ¸¹Àº À¥ ¼­¹ö°¡ ½ÇÆÐÇÑ ÆÄÀÏ ´ë½Å¿¡ ¿¡·¯ ÆäÀÌÁö¸¦ º¸³»±â ¶§¹®ÀÔ´Ï´Ù. ÀÌ ¿¡·¯ ÆäÀÌÁö°¡ Filename ´ë½Å¿¡ ÀúÀåµÉ °ÍÀÔ´Ï´Ù.

+

+Internet Explorer 3 ÀÌ»óÀº ¼³Ä¡ÇØ¾ß ÀÌ ±â´ÉÀÌ ÀÛµ¿ÇÕ´Ï´Ù. ¹æÈ­º®À̳ª ¿©·¯ ³×Æ®¿öÅ© ¾î´ðÅÍ ¶§¹®¿¡ ÀÌ ±â´ÉÀÌ ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ¶Ç, ¾î¶² À¥ »çÀÌÆ®´Â ÀÌ·± ½ÄÀÇ ³»·Á¹Þ±â¸¦ ±ÝÁöÇϱ⵵ ÇÕ´Ï´Ù.

+ +

Caching:

+
    +
  • v1.0.44.07+¿¡¼­, URLÀº ¿ø°Ý ¼­¹ö·ÎºÎÅÍ Á÷Á¢ ¿­¶÷µË´Ï´Ù (Áï, ÀÎÅÍ³Ý ÀͽºÇ÷η¯ÀÇ Ä³½¬¸¦ ÀüÇô »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù). ij½¬¸¦ Çã¿ëÇÏ·Á¸é, URL ¾Õ¿¡ *0°ú ½ºÆäÀ̽º Çϳª¸¦ ºÙÀ̽ʽÿÀ; ¿¹¸¦ µé¾î: *0 http://someorg.org. 0 ´ÙÀ½¿¡ º°Ç¥°¡ ¿À¸é À¯È¿ÇÑ dwFlag ¹øÈ£·Î ±³Ã¼µË´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº www.microsoft.com¿¡¼­ InternetOpenUrlÀ» °Ë»öÇØ º¸½Ê½Ã¿À.
  • +
  • + 1.0.44.07 ÀÌÀü¿¡¼­, ÆÄÀÏÀº °¡´ÉÇϸé ij½¬·ÎºÎÅÍ ¿­¶÷ÇÕ´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é ÁúÀÇ ¹®ÀÚ¿­À» URL ³¡¿¡ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î: http://www.someorg.org/doc.html?fakeParam=42. ÁÖÀÇ: °°Àº ÆÄÀÏÀ» ÀÚÁÖ ³»·Á¹Þ´Â´Ù¸é, ÁúÀÇ ¹®ÀÚ¿­Àº ¹Ýµå½Ã ´Ù¸£°Ô ÇØ¾ß ÇÕ´Ï´Ù.
  • +
+

+Proxies: ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® ÀÎÅÍ³Ý ÀͽºÇ÷η¯ÀÇ ¼³Á¤¿¡ ÇÁ·Ï½Ã¸¦ »ç¿ëÇϵµ·Ï ±¸¼ºµÇ¾î ÀÖ´Ù¸é UrlDownloadToFileÀº ÇÁ·Ï½Ã ¼­¹ö¸¦ »ç¿ëÇÏ¿© ÀÎÅͳݿ¡ Á¢±ÙÇÕ´Ï´Ù.

+

+FTP ±×¸®°í Gopher: v1.0.48.04+´Â FTP¿Í Gopher URLÀ» Áö¿øÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
UrlDownloadToFile, ftp://example.com/home/My File.zip, C:\My Folder\My File.zip  ; À͸íÀ¸·Î ·Î±×ÀÎ ÇÕ´Ï´Ù.
+UrlDownloadToFile, ftp://user:pass@example.com:21/home/My File.zip, C:\My Folder\My File.zip  ; ƯÁ¤ »ç¿ëÀÚ·Î ·Î±×ÀÎ ÇÕ´Ï´Ù.
+UrlDownloadToFile, ftp://user:pass@example.com/My Directory, C:\Dir Listing.html  ; µð·ºÅ丮 ¸®½ºÆ®¸¦ HTML Çü½ÄÀ¸·Î ¾ò½À´Ï´Ù.
+ +

°ü·Ã Ç׸ñ

+

FileRead, FileCopy

+

¿¹Á¦

+ +
UrlDownloadToFile, http://ahkscript.org/download/1.1/version.txt, C:\AutoHotkey Latest Version.txt
+UrlDownloadToFile, http://someorg.org/archive.zip, C:\SomeOrg's Archive.zip
+ +
; ¿¹Á¦: ÅؽºÆ®¸¦ º¯¼ö¿¡ ³»·Á¹Þ½À´Ï´Ù:
+whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
+whr.Open("GET", "http://ahkscript.org/download/1.1/version.txt", true)
+whr.Send()
+; À§ÀÇ 'true'¸¦ »ç¿ëÇÏ°í ¾Æ·¡ÀÇ È£ÃâÀ» »ç¿ëÇÏ¿© ½ºÅ©¸³Æ®¿¡ ¹ÝÀÀÇϵµ·Ï ¸¸µì´Ï´Ù.
+whr.WaitForResponse()
+version := whr.ResponseText
+MsgBox % version
+
+
; ¿¹Á¦: ºñµ¿±â HTTP ¿äûÀ» ¸¸µì´Ï´Ù.
+
+req := ComObjCreate("Msxml2.XMLHTTP")
+; async¸¦ ÄÑ°í ¿äûÀ» ¿±´Ï´Ù.
+req.open("GET", "http://ahkscript.org/download/1.1/version.txt", true)
+; ¿ªÈ£Ãâ ÇÔ¼ö¸¦ ¼³Á¤ÇÕ´Ï´Ù (v1.1.17+).
+req.onreadystatechange := Func("Ready")
+; ¿äûÀ» Àü¼ÛÇÕ´Ï´Ù. ¿Ï·áµÇ¸é Ready()°¡ È£ÃâµË´Ï´Ù.
+req.send()
+/*
+; ±â´Ù¸± »ý°¢À̶ó¸é onreadystatechange´Â ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.
+; async=true·Î ¼³Á¤ÇÏ°í ±â´Ù¸®¸é ³»·Á¹Þ±â°¡ µÇ´Â µ¿¾È¿¡µµ
+; ½ºÅ©¸³Æ®°¡ ¿©ÀüÈ÷ ¹ÝÀÀÇÒ ¼ö ÀÖ½À´Ï´Ù.
+; ¹Ý¸é¿¡ async=false·Î ¼³Á¤ÇÏ¸é ½ºÅ©¸³Æ®´Â ¹ÝÀÀÇÏÁö ¾Ê½À´Ï´Ù.
+while req.readyState != 4
+    sleep 100
+*/
+#Persistent
+
+Ready() {
+    global req
+    if (req.readyState != 4)  ; Not done yet.
+        return
+    if (req.status == 200 || req.status == 304) ; OK.
+        MsgBox % "Latest AutoHotkey version: " req.responseText
+    else
+        MsgBox 16,, % "Status " req.status
+    ExitApp
+}
+ + + diff --git a/src/docs/commands/Until.htm b/src/docs/commands/Until.htm new file mode 100644 index 0000000..d50a215 --- /dev/null +++ b/src/docs/commands/Until.htm @@ -0,0 +1,56 @@ + + + + +Until + + + + + + + +

Until [AHK_L 59+]

+ +

Loop ¶Ç´Â For-ȸµ¹ÀÌ¿¡ °è¼ÓÇÒÁö ¸»Áö Á¶°ÇÀ» Àû¿ëÇÕ´Ï´Ù.

+ +
Loop {
+    ...
+} Until Expression
+

¸Å°³º¯¼ö

+
+ +
Expression
+

À¯È¿ÇÑ Ç¥Çö½Ä.

+ +
+ +

³íÆò

+

+Ç¥Çö½ÄÀº °¢ ¹Ýº¹ ÈÄ¿¡ ÇÑ ¹ø Æò°¡µË´Ï´Ù. ±×¸®°í continue°¡ »ç¿ëµÇ¾ú¾îµµ Æò°¡µË´Ï´Ù. Ç¥Çö½ÄÀÌ °ÅÁþÀ¸·Î Æò°¡µÇ¸é (ºó ¹®ÀÚ¿­ ¶Ç´Â ¼ýÀÚ 0À̸é), ȸµ¹ÀÌ´Â °è¼ÓµË´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é, ȸµ¹À̸¦ ºüÁ® ³ª¿Í ´ÙÀ½ ÁÙ¿¡¼­ ½ÇÇàÀ» °è¼ÓÇÕ´Ï´Ù Until.

+

+Loop Until Àº ´ÙÀ½À» ´ÜÃàÇØ Ç¥ÇöÇÑ °ÍÀÔ´Ï´Ù:

+
Loop {
+    ...
+    if (Expression)
+        break
+}
+

+±×·¸Áö¸¸, Loop UntilÀÌ º¸Åë ´õ ÀÌÇØÇϱ⠽±½À´Ï´Ù. À§¿Í ´Ù¸£°Ô, ÇÑ ÁÙ-ÇàÀ§¿Íµµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
Loop
+    x *= 2
+Until x > y
+

+UntilÀº ¾î¶² Loop ¶Ç´Â For°úµµ »ç¿ëÀÌ °¡´ÉÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
Loop, Read, %A_ScriptFullPath%
+    lines .= A_LoopReadLine . "`n"
+Until A_Index=5  ; ¾ÕÂÊ ´Ù¼¸ ÁÙÀ» ÀнÀ´Ï´Ù.
+MsgBox % lines
+
+

+A_Index°¡ Ç¥Çö½Ä ¾È¿¡ »ç¿ëµÇ¸é, ¹æ±Ý ³¡³½ ¹Ýº¹ÀÇ À妽º°¡ ´ã±é´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+Loop, While-ȸµ¹ÀÌ, For-ȸµ¹ÀÌ, Break, Continue, Blocks, ÆÄÀÏ°ú Æú´õ ȸµ¹ÀÌ, ·¹Áö½ºÆ®¸® ȸµ¹ÀÌ, ÆÄÀÏ-Àбâ ȸµ¹ÀÌ, ÆÄ½Ì È¸µ¹ÀÌ, If (expression)

diff --git a/src/docs/commands/VarSetCapacity.htm b/src/docs/commands/VarSetCapacity.htm new file mode 100644 index 0000000..3a687cd --- /dev/null +++ b/src/docs/commands/VarSetCapacity.htm @@ -0,0 +1,114 @@ + + + + +VarSetCapacity() + + + + + + + +

VarSetCapacity()

+ +

+º¯¼öÀÇ °¡¿ë ´É·ÂÀ» Å°¿ì°Å³ª ±×ÀÇ ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÕ´Ï´Ù. º¸Åë, ÀÌ ¸í·É¾î´Â DllCall°ú °°ÀÌ ºñ Á¤»óÀûÀÎ »óȲ¿¡¼­¸¸ ÇÊ¿äÇÕ´Ï´Ù.

+ +
GrantedCapacity := VarSetCapacity(UnquotedVarName [, RequestedCapacity, FillByte])
+

¸Å°³º¯¼ö

+
+ +
GrantedCapacity
+

Var°¡ ÇöÀç º¸À¯ÇÒ ¼ö ÀÖ´Â ¹ÙÀÌÆ® °³¼ö, RequestedCapacityº¸´Ù ´õ Å®´Ï´Ù. + + VarNameÀÌ À¯È¿ÇÑ º¯¼ö À̸§ÀÌ ¾Æ´Ï¸é (¹®ÀÚ ±×´ë·ÎÀÇ ¹®ÀÚ¿­ ¶Ç´Â ¼ýÀÚÀ̸é), 0ÀÌ ¹ÝȯµË´Ï´Ù. (¾ÆÁÖ Èñ±ÍÇÏÁö¸¸) ½Ã½ºÅÛ¿¡ ÃæºÐÇÑ ¸Þ¸ð¸®°¡ ¾ø¾î¼­ º¯°æÀÌ ºÒ°¡´ÉÇϸé, ¿¡·¯ ´ëÈ­»óÀÚ°¡ ³ªÅ¸³ª°í ÇöÀç °¡¿ë ´É·ÂÀÌ ¹ÝȯµË´Ï´Ù - ÀÌ ÇàÀ§´Â ¹Ì·¡ ¹öÀü¿¡¼­´Â ¹Ù²ð ¼ö ÀÖ½À´Ï´Ù.

+ +
UnquotedVarName
+

º¯¼öÀÇ À̸§ (°ãµû¿ÈÇ¥·Î µÑ·¯ ½ÎÁö ¾ÊÀ½). ¿¹¸¦ µé¾î: VarSetCapacity(MyVar, 1000). Array%i%À̳ª ÇÔ¼öÀÇ ByRef ¸Å°³º¯¼ö¿Í °°ÀÌ µ¿Àû º¯¼öµµ µÉ ¼ö ÀÖ½À´Ï´Ù.

+ +
RequestedCapacity
+

»ý·«Çϸé, º¯¼öÀÇ ÇöÀç °¡¿ë´É·ÂÀÌ ¹ÝȯµË´Ï´Ù. ±×¸®°í ±×ÀÇ ³»¿ëÀº º¯°æµÇÁö ¾Ê½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ÇöÀç º¯¼ö¿¡ ÀÖ´Â ¸ðµç °ÍÀÌ »ç¶óÁý´Ï´Ù (º¯¼ö°¡ ºñ¿öÁý´Ï´Ù).

+

+ RequestedCapacity¿¡ º¯¼ö°¡ Á¶Á¤ ÈÄ¿¡ º¸À¯ÇؾßÇÒ ¹ÙÀÌÆ® °³¼ö¸¦ ÁöÁ¤ÇϽʽÿÀ. À¯´ÏÄÚµå ¹®ÀÚ¿­¿¡ ´ëÇÏ¿©, ÀÌ°ÍÀº ±× ±æÀÌÀÇ µÎ ¹è°¡ µÇ¾î¾ß ÇÕ´Ï´Ù. RequestedCapacity´Â ³»ºÎÀÇ Á¾·á ¹®ÀÚ¸¦ Æ÷ÇÔÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î 1·Î ¼³Á¤ÇÏ¸é ±× º¯¼ö´Â 1 ¹ÙÀÌÆ®¿¡´Ù ±×ÀÇ Á¾·á ¹®ÀÚ¸¦ ´õ º¸À¯ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÁÖÀÇ: ³ªÁß¿¡ ½ºÅ©¸³Æ®°¡ ÀÌ º¯¼ö¿¡ ´õ Å« °ªÀ» ÇÒ´çÇϸé ÀÚµ¿À¸·Î È®ÀåµË´Ï´Ù.

+

+ ÀÌ ÇÔ¼ö´Â Á¾Á¾ ±×³É º¯¼ö°¡ ÃÖ¼ÒÇÑÀÇ °¡¿ë´É·ÂÀ» °®Ãß¾ú´ÂÁö È®ÀÎÇϱâ À§ÇÏ¿© È£ÃâµÇ±â ¶§¹®¿¡, ¼öÇ༺´ÉÀÇ ÀÌÀ¯·Î, RequestedCapacity°¡ 0ÀÏ ¶§¸¸ ±× º¯¼ö¸¦ Ãà¼ÒÇÕ´Ï´Ù. + + ´Ù¸¥ ¸»·Î, º¯¼öÀÇ °¡¿ë ´É·ÂÀÌ ÀÌ¹Ì RequestedCapacityº¸´Ù Å©¸é, Ãà¼ÒµÇÁö ¾Ê½À´Ï´Ù (±×·¯³ª ±× º¯¼ö´Â ÀÏ°ü¼ºÀ» À§ÇØ ¿©ÀüÈ÷ ºñ¿öÁý´Ï´Ù).

+

+ ±×·¯¹Ç·Î, ¸í½ÃÀûÀ¸·Î º¯¼ö¸¦ Ãà¼ÒÇÏ·Á¸é, ¸ÕÀú ±×ÀÇ ¸Þ¸ð¸®¸¦ VarSetCapacity(Var, 0)À¸·Î ÇØÁ¦ÇÑ ´ÙÀ½ VarSetCapacity(Var, NewCapacity)À» »ç¿ëÇϽʽÿÀ -- ¶Ç´Â ±×³É ÇÊ¿äÇϸé 0À¸·ÎºÎÅÍ ÀÚµ¿ È®ÀåµÇµµ·Ï ±×´ë·Î µÎ½Ê½Ã¿À

+

+ ¼öÇ༺´ÉÀÇ ÀÌÀ¯·Î, ÀÌÀüÀÇ °¡¿ë´É·ÂÀÌ 64 ¹®ÀÚº¸´Ù ÀÛÀº (À¯´ÏÄÚµå ºôµå¿¡¼­´Â 128 ¹ÙÀÌÆ®º¸´Ù ÀÛÀº) º¯¼ö´Â ÇØÁ¦Çصµ ¾Æ¹« È¿°ú°¡ ¾øÀ» ¼ö ÀÖ½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ±×ÀÇ ¸Þ¸ð¸®°¡ ¿µ±¸ À¯ÇüÀ̱⠶§¹®ÀÔ´Ï´Ù. ÀÌ °æ¿ì, 0ÀÌ ¾Æ´Ï¶ó ÇöÀç °¡¿ë´É·ÂÀÌ ¹ÝȯµË´Ï´Ù.

+

+ ¼öÇ༺´ÉÀÇ ÀÌÀ¯·Î, °¡¿ë ´É·ÂÀÌ 4096 ¹ÙÀÌÆ®º¸´Ù ÀÛÀº º¯¼öÀÇ ¸Þ¸ð¸®´Â ºó ¹®ÀÚ¿­À» ÀúÀåÇصµ ÇØÁ¦µÇÁö ¾Ê½À´Ï´Ù (¿¹, Var := ""). ±×·¸Áö¸¸, VarSetCapacity(Var, 0)´Â º¯¼ö¸¦ ÇØÁ¦ÇÕ´Ï´Ù.

+

+ v1.0.44.03+¿¡¼­, -1À» RequestedCapacity¿¡ ÁöÁ¤ÇÏ¸é º¯¼öÀÇ ³»ºÎ¿¡ ÀúÀåµÈ ¹®ÀÚ¿­ ±æÀ̸¦ ÇöÀç ³»¿ëÀÇ ±æÀÌ·Î °»½ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. º¯¼ö°¡ °£Á¢ÀûÀ¸·Î º¯°æµÇ´Â °æ¿ì¿¡ À¯¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î DllCall()¸¦ ÅëÇÏ¿© ±×ÀÇ ÁÖ¼Ò¸¦ °Ç³×´Â °æ¿ì À¯¿ëÇÕ´Ï´Ù. ÀÌ ¸ðµå¿¡¼­, VarSetCapacity()´Â °¡¿ë´É·ÂÀÌ ¾Æ´Ï¶ó ±× ±æÀ̸¦ ¹ÙÀÌÆ® ´ÜÀ§·Î µ¹·ÁÁÝ´Ï´Ù.

+ +
FillByte
+
+

ÀÌ ¸Å°³º¯¼ö´Â º¸Åë »ý·«µË´Ï´Ù. »ý·«µÇ¸é ¸ñÇ¥ º¯¼öÀÇ ¸Þ¸ð¸®°¡ ÃʱâÈ­µÇÁö ¾Ê½À´Ï´Ù (´ë½Å¿¡, ±× º¯¼ö´Â ´Ü¼øÈ÷ À§¿¡ ±â¼úÇÑ ¹Ù¿Í °°ÀÌ ºñ¿öÁý´Ï´Ù). ±×·¸Áö ¾ÊÀ¸¸é, 0¿¡¼­ 255 »çÀÌÀÇ ¼ýÀÚ¸¦ ÁöÁ¤ÇϽʽÿÀ. ¸ñÇ¥ º¯¼öÀÇ ¸Þ¸ð¸® ±¸¿ªÀÌ (±×ÀÇ ÇöÀç °¡¿ë ´É·Â, RequestedCapacityº¸´Ù ´õ Ŭ¼ö ÀÖ½À´Ï´Ù ¸Å ¹ÙÀÌÆ®¸¶´Ù ±× ¼ýÀڷΠä¿öÁý´Ï´Ù). 0ÀÌ Áö±Ý±îÁö °¡Àå ÈçÈ÷ »ç¿ëµÇ´Â °ªÀÔ´Ï´Ù. ÀÌ °ªÀº DllCall ±¸Á¶¿Í °°ÀÌ º¯¼ö¿¡ ³¯ ÀÌÁø µ¥ÀÌÅ͸¦ ´ã¾Æ¾ß ÇÒ °æ¿ì¿¡ À¯¿ëÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+DllCall¿¡ ±â¼úµÈ »ç¿ë¹ý ¿Ü¿¡µµ, ÀÌ ÇÔ¼ö´Â Á¡ÁøÀûÀÎ °áÇÕÀ¸·Î ¹®ÀÚ¿­À» ±¸¼ºÇÒ ¶§ ¼öÇ༺´ÉÀ» Çâ»ó½ÃÅ°´Â µ¥¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ±× ¹®ÀÚ¿­ÀÇ ÃÖÁ¾ ±æÀÌ°¡ ¾ó¸¶ÀÎÁö ¾Ë°í ÀÖ´Ù¸é ¿©·¯ ÀÚµ¿ Å©±â º¯°æ ºÎ´ãÀ» ÇÇÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ±×·± °æ¿ì RequestedCapacity´Â Á¤È®ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù °¡¿ë ´É·ÂÀÌ ÀÛÀ¸¸é, ¼öÇ༺´ÉÀÌ ´õ¿í °³¼±µË´Ï´Ù. ±×¸®°í °¡¿ë ´É·ÂÀÌ ¼ÒÁøµÉ ¶§ ÀÚµ¿À¸·Î º¯¼ö°¡ È®ÀåÀ» ½ÃÀÛÇÒ °ÍÀÔ´Ï´Ù. °¡¿ë ´É·ÂÀÌ Å©¸é, ¸Þ¸ð¸®°¡ ³¶ºñµË´Ï´Ù. ±×·¯³ª Àá½ÃÀÏ »ÓÀÔ´Ï´Ù. ¿Ö³ÄÇÏ¸é ¿¬»ê ÈÄ¿¡ VarSetCapacity(Var, 0) ¶Ç´Â Var := ""¸¦ ¼ö´ÜÀ¸·Î ¸ðµç ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù

+

+#MaxMem´Â º¯¼ö°¡ ½º½º·Î ÇàÇÏ´Â ÀÚµ¿ È®À常 Á¦ÇÑÇÕ´Ï´Ù. VarSetCapacity¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+DllCall, #MaxMem, NumPut, NumGet

+ +

¿¹Á¦

+
; MyVar°¡ ÀÛ¾÷¿¡ ÃæºÐÇÑ ¿©À¯ °ø°£À» È®º¸ÇÏ°í ÀÖ´ÂÁö È®ÀÎÇÏ¿© ÃÖÀûÈ­ÇÕ´Ï´Ù.
+VarSetCapacity(MyVar, 10240000)  ; ~10 MB
+Loop
+{
+    ...
+    MyVar = %MyVar%%StringToConcatenate%
+    ...
+}
+ +
; ¹®ÀÚ¿­¿¡ ´ëÇÏ¿© ÇÊ¿äÇÑ ¹öÆÛ °ø°£À» °è»êÇÕ´Ï´Ù.
+bytes_per_char := A_IsUnicode ? 2 : 1
+max_chars := 500
+max_bytes := max_chars * bytes_per_char
+
+Loop 2
+{
+    ; DllCall¿¡ »ç¿ëÇÒ °ø°£À» ÇÒ´çÇÕ´Ï´Ù.
+    VarSetCapacity(buf, max_bytes)
+
+    if A_Index = 1
+        ; DllCallÀ» ÅëÇÏ¿© º¯¼ö¸¦ °£Á¢ÀûÀ¸·Î º¯°æÇÕ´Ï´Ù.
+        DllCall("wsprintf", "ptr", &buf, "str", "0x%08x", "uint", 4919)
+    else
+        ; ±æÀ̸¦ ÀÚµ¿À¸·Î °»½ÅÇÏ·Á¸é "str"¸¦ »ç¿ëÇÕ´Ï´Ù:
+        DllCall("wsprintf", "str", buf, "str", "0x%08x", "uint", 4919)
+
+    ; ¿Ö ±æÀ̸¦ °»½ÅÇÑ ÇÊ¿ä°¡ ÀÖ´ÂÁö º¸¿©ÁÖ±â À§ÇØ ¹®ÀÚ¿­À» °áÇÕÇÕ´Ï´Ù:
+    wrong_str := buf . "<end>"
+    wrong_len := StrLen(buf)
+
+    ; º¯¼öÀÇ ±æÀ̸¦ °»½ÅÇÕ´Ï´Ù.
+    VarSetCapacity(buf, -1)
+
+    right_str := buf . "<end>"
+    right_len := StrLen(buf)
+
+    MsgBox,
+    (
+    ¾÷µ¥ÀÌÆ® Àü
+      ¹®ÀÚ¿­: %wrong_str%
+      ±æÀÌ: %wrong_len%
+
+    ¾÷µ¥ÀÌÆ® ÈÄ
+      ¹®ÀÚ¿­: %right_str%
+      ±æÀÌ: %right_len%
+    )
+}
+
+ + + diff --git a/src/docs/commands/While.htm b/src/docs/commands/While.htm new file mode 100644 index 0000000..283c8d0 --- /dev/null +++ b/src/docs/commands/While.htm @@ -0,0 +1,60 @@ + + + + +While-loop + + + + + + + +

While-ȸµ¹ÀÌ [v1.0.48+]

+ +

ÁöÁ¤µÈ Ç¥Çö½ÄÀÌ °ÅÁþÀ¸·Î Æò°¡µÉ ¶§±îÁö ÀÏ·ÃÀÇ ¸í·É¾îµéÀ» ¹Ýº¹ÀûÀ¸·Î ½ÇÇàÇÕ´Ï´Ù.

+ +
While Expression
+

¸Å°³º¯¼ö

+
+ +
Expression
+

À¯È¿ÇÑ Ç¥Çö½Ä. ¿¹¸¦ µé¾î: while x < y.

+ +
+ +

³íÆò

+

+Ç¥Çö½ÄÀº ¹Ýº¹À» Çϱâ Àü¿¡ °¢°¢ ÇÑ ¹ø¾¿ Æò°¡µË´Ï´Ù. Ç¥Çö½ÄÀÌ ÂüÀ¸·Î Æò°¡µÇ¸é (±× °á°ú°¡ ºó¹®ÀÚ¿­À̳ª 0¸¸ ¾Æ´Ï¸é), ȸµ¹ÀÌÀÇ ¸öü°¡ ½ÇÇàµË´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é, ½ÇÇàÀº ȸµ¹ÀÌ ¸öü ´ÙÀ½ ÁÙ·Î Á¡ÇÁÇÕ´Ï´Ù.

+

+while-ȸµ¹ÀÌ´Â º¸Åë ´ÙÀ½¿¡ ºí·ÏÀÌ µû¶ó¿É´Ï´Ù. ºí·ÏÀº ȸµ¹ÀÌÀÇ ¸öü¸¦ Çü¼ºÇÏ´Â ¼­¼ú¹®ÀÇ Áý´ÜÀÔ´Ï´Ù. ±×·¸Áö¸¸, ¼­¼ú¹®ÀÌ Çϳª¸¸ Àִ ȸµ¹ÀÌ´Â ºí·ÏÀ» ¿ä±¸ÇÏÁö ¾Ê½À´Ï´Ù (ÀÌ·± ¸ñÀûÀ¸·Î "if"¿Í ±×ÀÇ "else"´Â ÇϳªÀÇ ¼­¼ú¹®À¸·Î °£Áֵ˴ϴÙ).

+

+ ¼±ÅÃÀûÀ¸·Î One True Brace (OTB) ½ºÅ¸ÀÏÀ»»ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº ÁÙ ¾Æ·¡°¡ ¾Æ´Ï¶ó °°Àº ÁÙ¿¡ ¿©´Â °ýÈ£¸¦ Çã¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: while x < y {.

+

+³»Àå º¯¼ö A_Index´Â ÇöÀç ȸµ¹ÀÌ È½¼ö°¡ µé¾î ÀÖ½À´Ï´Ù. 1À» ´ã°í ÀÖÀ¸¸é óÀ½À¸·Î ȸµ¹ÀÌÀÇ Ç¥Çö½Ä°ú ¸öü°¡ ½ÇÇàµÈ °ÍÀÔ´Ï´Ù. µÎ ¹ø°¶ó¸é 2°¡ µé¾î ÀÖ½À´Ï´Ù; µîµî. ¾ÈÂÊ È¸µ¹ÀÌ°¡ ¹Ù±ùÂÊ È¸µ¹ÀÌ¿¡ µÑ·¯ ½Î¿© ÀÖ´Ù¸é, ¾ÈÂÊ È¸µ¹ÀÌ°¡ ¿ì¼±±ÇÀ» °¡Áý´Ï´Ù. A_Index´Â ¸ðµç À¯ÇüÀÇ È¸µ¹ÀÌ ¾È¿¡¼­ ÀÛµ¿ÇÏÁö¸¸, 0À̸é ȸµ¹ÀÌ ¹Ù±ù¿¡ ÀÖ´Â °ÍÀÔ´Ï´Ù.

+

+¸ðµç ȸµ¹ÀÌ¿Í ¸¶Âù°¡Áö·Î, Break´Â ȸµ¹À̸¦ ÀÏÂï ºüÁ® ³ª¿À´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ, Continue´Â ÇöÀç ½ÇÇàÀÇ ³ª¸ÓÁö¸¦ °Ç³Ê ¶Ù´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× ¶§¸¶´Ù A_Index´Â 1 ¸¸Å­¾¿ Áõ°¡ÇÏ°í while-ȸµ¹ÀÌÀÇ Ç¥Çö½ÄÀÌ ÀçÆò°¡µË´Ï´Ù. ¿©ÀüÈ÷ ÂüÀ̸é, »õ·Î ¹Ýº¹À» ½ÃÀÛÇÕ´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é ȸµ¹À̸¦ ³¡³À´Ï´Ù.

+

+Àü¹®È­µÈ ȸµ¹ÀÌ: ȸµ¹ÀÌ´Â ÆÄÀÏ, Æú´õ, ¶Ç´Â ·¹Áö½ºÆ®¸® Ç׸ñÀ» ÀÚµ¿À¸·Î (ÇÑ ¹ø¿¡ Çϳª¾¿) ¿­¶÷ÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº ÆÄÀÏ-ȸµ¹ÀÌ¿Í ·¹Áö½ºÆ®¸®-ȸµ¹À̸¦ ÂüÁ¶ÇϽʽÿÀ. °Ô´Ù°¡, ÆÄÀÏ-Àбâ ȸµ¹ÀÌ´Â ÆÄÀÏ ÀüüÀÇ ³»¿ëÀ», ÇÑ ¹ø¿¡ ÇÑ ÁÙ¾¿ ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¶Áö¸·À¸·Î, ÆÄ½Ì È¸µ¹ÀÌ´Â ±¸ºÐµÈ ¹®ÀÚ¿­ ¾ÈÀÇ °¢ Çʵ带 ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

Until, Break, Continue, Blocks, Loop, For-ȸµ¹ÀÌ, ÆÄÀÏ-Æú´õ ȸµ¹ÀÌ, ·¹Áö½ºÆ®¸® ȸµ¹ÀÌ, ÆÄÀÏ-Àбâ ȸµ¹ÀÌ, ÆÄ½Ì È¸µ¹ÀÌ, If (expression)

+ +

¿¹Á¦

+
; »ç¿ëÀÚ°¡ ¿Þ¹öÆ°À» ²ô´Â µ¿¾È, ToolTipÀÌ ²ø±â-±¸¿ª ¾È¿¡ ±× Å©±â¸¦ º¸¿©ÁÝ´Ï´Ù.
+
+CoordMode, Mouse, Screen
+
+~LButton::
+    MouseGetPos, begin_x, begin_y
+    while GetKeyState("LButton")
+    {
+        MouseGetPos, x, y
+        ToolTip, % begin_x ", " begin_y "`n" Abs(begin_x-x) " x " Abs(begin_y-y)
+        Sleep, 10
+    }
+    ToolTip
+return
+ + + diff --git a/src/docs/commands/WinActivate.htm b/src/docs/commands/WinActivate.htm new file mode 100644 index 0000000..fcfa9ab --- /dev/null +++ b/src/docs/commands/WinActivate.htm @@ -0,0 +1,65 @@ + + + + +WinActivate + + + + + + + +

WinActivate

+ +

ÁöÁ¤µÈ âÀ» È°¼ºÈ­ÇÕ´Ï´Ù (°¡Àå ¾ÕÀ¸·Î ³ª¿À°Ô ÇÕ´Ï´Ù).

+ +
WinActivate [, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
WinTitle
+

â Á¦¸ñ ¶Ç´Â ¸ñÇ¥ âÀ» ½Äº°ÇÏ´Â ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenTextÀÌ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃµË´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜµË´Ï´Ù.

+ +
+ +

³íÆò

+

+âÀÌ ÃÖ¼ÒÈ­µÇ¾î ÀÖ´Ù¸é, ±× âÀ» È°¼ºÈ­Çϱâ Àü¿¡ ¸ÕÀú ÀÚµ¿À¸·Î º¹±¸ÇÕ´Ï´Ù. v1.1.20 ÀÌÈÄ¿¡¼­, âÀÌ ÀÌ¹Ì È°¼ºÈ­µÇ¾î À־ º¹±¸ÇÕ´Ï´Ù.

+

+¸ñÇ¥ âÀ» º¹±¸ÇÏ·Á´Â ½Ãµµ¸¦ 60ms µ¿¾È ¿©¼¸ ¹ø ÇÕ´Ï´Ù. ±×¸®ÇÏ¿©, º¸Åë WinActivate ´ÙÀ½¿¡ WinWaitActiveÀ̳ª IfWinNotActive°¡ µû¶ó¿Ã ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+ºÎÇÕÇϴ âÀÌ ÀÌ¹Ì È°¼ºÈ­µÇ¾î ÀÖÀ¸¸é, ±× âÀÌ È°¼ºÈ­ »óŸ¦ À¯ÁöÇÕ´Ï´Ù. ±× ¾Æ·¡ÀÇ ´Ù¸¥ ºÎÇÕÇϴ âµéÀ» È°¼ºÈ­ÇÏÁö ¾Ê½À´Ï´Ù. ÀϹÝÀûÀ¸·Î, ¿©·¯ âÀÌ ºÎÇÕÇϸé, ÃÖ»óÀ§ (°¡Àå ÃÖ±Ù¿¡ »ç¿ëµÈ) âÀÌ È°¼ºÈ­µË´Ï´Ù. ÃÖÇÏÀ§ (°¡Àå ¿À·§µ¿¾È »ç¿ëµÇÁö ¾ÊÀº) âÀº WinActivateBottomÀ» ÅëÇÏ¿© È°¼ºÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

[v1.1.20+]: È°¼º âÀÌ ¼û¾î ÀÖ°í DetectHiddenWindows°¡ ²¨Á® ÀÖÀ¸¸é, ÀüÇô ºÎÇÕ ´ë»óÀ¸·Î °í·ÁµÇÁö ¾Ê½À´Ï´Ù. ´ë½Å¿¡, º¸À̴ âÀÌ ºÎÇÕÇÏ¸é ±× Ã¢ÀÌ È°¼ºÈ­µË´Ï´Ù.

+

+´Ù¸¥ âÀ» È°¼ºÈ­ÇÑ ÈÄ °ð¹Ù·Î âÀÌ È°¼ºÈ­µÉ ¶§, ¾î¶² ½Ã½ºÅÛ¿¡¼­´Â ŽºÅ© ¹Ù ¹öÆ°ÀÌ ±ô¹ÚÀ̱⠽ÃÀÛÇÒ °ÍÀÔ´Ï´Ù (OS¿Í ±×ÀÇ È¯°æ ¼³Á¤¿¡ µû¶ó ´Ù¸§). À̸¦ ÇÇÇÏ·Á¸é #WinActivateForce¸¦ »ç¿ëÇϽʽÿÀ.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+

+¾Ë·ÁÁø ¹®Á¦: ½ºÅ©¸³Æ®°¡ ¿ø°Ý µ¥½ºÅ©Å¾À» ÅëÇÏ¿© Á¢±ÙÁßÀÎ ÄÄÇ»ÅÍ ¶Ç´Â ¼­¹ö À§¿¡¼­ ½ÇÇàÁßÀ̶ó¸é , ±× ¿ø°Ý µ¥½ºÅ©Å¾ Ŭ¶óÀ̾ðÆ®°¡ ÃÖ¼ÒÈ­µÉ °æ¿ì WinActivate°¡ ¸¶ºñµÉ ¼ö ÀÖ½À´Ï´Ù. ÇÑ °¡Áö ¿ìȸåÀº â È°¼ºÈ­¸¦ ¿ä±¸ÇÏÁö ¾Ê´Â ¸í·É¾î¸¦ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î ControlSend ±×¸®°í ControlClick¸¦ »ç¿ëÇϽʽÿÀ. ¶Ç´Ù¸¥ ¿ìȸåÀº ´Ù¸¥ ·¹Áö½ºÆ®¸® ¼³Á¤À» ·ÎÄÃ/Ŭ¶óÀ̾ðÆ® ÄÄÇ»ÅÍ¿¡ Àû¿ëÇÏ´Â °ÍÀÔ´Ï´Ù:

+ +
; HKCUÀ» HKLMÀ¸·Î ¹Ù²Ù¾î ½Ã½ºÅÛÀÇ ¸ðµç »ç¿ëÀÚ¿¡°Ô ¿µÇâÀ» ÁÝ´Ï´Ù.
+RegWrite REG_DWORD, HKCU, Software\Microsoft\Terminal Server Client
+    , RemoteDesktop_SuppressWhenMinimized, 2
+ +

°ü·Ã Ç׸ñ

+

WinActivateBottom, #WinActivateForce, SetTitleMatchMode, DetectHiddenWindows, ¸¶Áö¸· ¹ß°ß â, IfWinExist, IfWinActive, WinWaitActive, WinWait, WinWaitClose, WinClose, GroupActivate, WinSet

+ +

¿¹Á¦

+ +
IfWinExist, Untitled - Notepad
+    WinActivate ; À§¿¡¼­ ¹ß°ßÇÑ Ã¢À» »ç¿ëÇÕ´Ï´Ù
+else
+    WinActivate, Calculator
+ + + diff --git a/src/docs/commands/WinActivateBottom.htm b/src/docs/commands/WinActivateBottom.htm new file mode 100644 index 0000000..c40144a --- /dev/null +++ b/src/docs/commands/WinActivateBottom.htm @@ -0,0 +1,63 @@ + + + + +WinActivateBottom + + + + + + + +

WinActivateBottom

+ +

+WinActivate¿Í µ¿ÀÏÇÏÁö¸¸ ÃÖ»ó´ÜÀÌ ¾Æ´Ï¶ó ÃÖÇÏ´Ü (°¡Àå ¿À·§µ¿¾È ºñÈ°¼º »óÅ¿¡) ºÎÇÕÇϴ âÀ» È°¼ºÈ­ÇÕ´Ï´Ù.

+ +
WinActivateBottom [, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+ºÎÇÕÇϴ âÀÌ Çϳª ¹Û¿¡ ¾ø´Ù¸é, WinActivateBottomÀº WinActivate¿Í µ¿ÀÏÇÏ°Ô ÇàÀ§ÇÕ´Ï´Ù.

+

+Window groupsÀº ÀÌ ¸í·É¾îº¸´Ù ´õ °í±ÞÀÔ´Ï´Ù. ±×·¡¼­ ´õ À¯¿¬ÇÑ Æ¯Â¡ÀÌ ÇÊ¿äÇÏ¸é »ç¿ëÀ» °í·ÁÇØ º¸½Ê½Ã¿À.

+

+âÀÌ ÃÖ¼ÒÈ­µÇ¾î ÀÖÀ¸¸é, ÀÚµ¿À¸·Î º¹±¸ÇÑ ´ÙÀ½ È°¼ºÈ­ÇÕ´Ï´Ù.

+

+¸ñÇ¥ âÀ» È°¼ºÈ­Çϱâ À§ÇØ 60ms µ¿¾È ¿©¼¸ ¹ø ½Ãµµ¸¦ ÇÕ´Ï´Ù. ±×¸®ÇÏ¿©, º¸Åë ÀÌ ¸í·É¾î ´ÙÀ½¿¡ WinWaitActive ¸í·É¾î°¡ µû¶ó¿Ã ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+WinActivate¿Í ´Ù¸£°Ô, ¸¶Áö¸· ¹ß°ß âÀº ÃÖÇ쫆 ̢ÀÏ °æ¿ì°¡ ¾ø±â ¶§¹®¿¡ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ±×·¯¹Ç·Î, Àû¾îµµ ¸Å°³º¯¼ö Áß Çϳª´Â ¹Ýµå½Ã ºñ¾î ÀÖÁö ¾Ê¾Æ¾ß ÇÕ´Ï´Ù.

+

+¶Ç´Ù¸¥ âÀÌ È°¼ºÈ­µÈ ÈÄ¿¡ °ð¹Ù·Î À̾ âÀÌ È°¼ºÈ­µÇ¸é, ´ëºÎºÐÀÇ ½Ã½ºÅÛ¿¡¼­ ŽºÅ© ¹Ù ¹öÆ°ÀÌ ±ô¹ÚÀ̱⠽ÃÀÛÇÒ °ÍÀÔ´Ï´Ù (OS¿Í ±× ȯ°æ ¼³Á¤¿¡ µû¶ó ´Ù¸§) À̸¦ ÇÇÇÏ·Á¸é, #WinActivateForce¸¦ »ç¿ëÇϽʽÿÀ.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindowsÀÌ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

WinActivate, #WinActivateForce, SetTitleMatchMode, DetectHiddenWindows, IfWinExist, IfWinActive, WinWaitActive, WinWait, WinWaitClose, GroupActivate

+ +

¿¹Á¦

+
; ÀÌ ÇÖÅ°·Î ¸ðµç ¿­¸° ºê¶ó¿ìÀú âÀ» ¿¹ÀüºÎÅÍ »õ·Î¿î ¼ø¼­·Î ¹æ¹®ÇÒ ¼ö ÀÖ½À´Ï´Ù:
+#i::
+SetTitleMatchMode, 2
+WinActivateBottom, - Microsoft Internet Explorer
+return
+ + + diff --git a/src/docs/commands/WinActive.htm b/src/docs/commands/WinActive.htm new file mode 100644 index 0000000..ce7ad05 --- /dev/null +++ b/src/docs/commands/WinActive.htm @@ -0,0 +1,66 @@ + + + + +IfWinActive / IfWinNotActive / WinActive + + + + + + + +

IfWinActive / IfWinNotActive / WinActive

+ +

ÁöÁ¤µÈ âÀÌ Á¸ÀçÇÏ´ÂÁö ±×¸®°í ÇöÀç È°¼ºÈ­ »óÅÂÀÎÁö Á¡°ËÇÕ´Ï´Ù (ÃÖÀü¹æ). ±×·¸´Ù¸é, WinActive()´Â ±×ÀÇ Unique ID (HWND)¸¦ µ¹·ÁÁÝ´Ï´Ù.

+ +
IfWinActive [, WinTitle, WinText,  ExcludeTitle, ExcludeText]
+IfWinNotActive [, WinTitle, WinText, ExcludeTitle, ExcludeText]
+UniqueID := WinActive("WinTitle", "WinText", "ExcludeTitle", "ExcludeText")
+

¸Å°³º¯¼ö

+
+ +
WinTitle
+

â Á¦¸ñ ¶Ç´Â ¸ñÇ¥ âÀ» ½Äº°ÇÏ´Â ´Ù¸¥ ±âÁØ WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖ¾î¾ß(ON) ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃµË´Ï´Ù. ÁÖÀÇ: ÇÏÀ§ ȣȯÀÇ ¹®Á¦ ¶§¹®¿¡, IfWinActive¿Í IfWinNotActive´Â ¸í·É¾îÀÇ À̸§¿¡ Á¤È®ÇÏ°Ô ºÎÇÕÇÏ¸é ¸Å°³º¯¼ö¸¦ ÀÌ ¸í·É¾î·Î ÀÌÇØÇÕ´Ï´Ù. À̸¦ ¿ìȸÇÏ·Á¸é, ´ë½Å¿¡ WinActive() ÇÔ¼ö¸¦ »ç¿ëÇϽʽÿÀ.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜµË´Ï´Ù.

+ +
+ +

³íÆò

+

+¸ðµç ¸Å°³º¯¼ö°¡ »ý·«µÇ¸é, ¸¶Áö¸· ¹ß°ß âÀÌ »ç¿ëµË´Ï´Ù.

+

+ÀÌ ¸í·É¾î Áß Çϳª¶óµµ È°¼ºÃ¢ÀÌ ºÎÇÕÇÑ´Ù´Â °ÍÀ» ¾Ë°Ô µÇ¸é, ¸¶Áö¸· ¹ß°ß âÀÌ ±× È°¼º âÀ¸·Î °»½ÅµË´Ï´Ù. Áï, IfWinActive°¡ Âü("true")À¸·Î Æò°¡µÇ°Å³ª IfWinNotActive°¡ °ÅÁþ("false")À¸·Î Æò°¡µÇ¸é, ¸¶Áö¸· ¹ß°ß âÀÌ °»½ÅµË´Ï´Ù.

+

+ÇÔ¼ö WinActive()´Â ÁöÁ¤ÇÑ ±âÁØ¿¡ ºÎÇÕÇÏ´Â È°¼º âÀÇUnique ID (HWND)¸¦ µ¹·ÁÁÝ´Ï´Ù. ¾øÀ¸¸é 0À» µ¹·ÁÁÝ´Ï´Ù. 0ÀÌ-¾Æ´Ñ ¸ðµç ¼ýÀÚ´Â Âü("true")À¸·Î °£ÁֵǹǷÎ, ´ÙÀ½ ¼­¼ú¹® if WinActive("WinTitle")´Â WinTitleÀÌ È°¼ºÈ­µÇ¾î ÀÖÀ¸¸é ÂüÀÔ´Ï´Ù.

+

+È°¼º âÀÇ À¯ÀÏÇÑ ID¸¦ ¿­¶÷ÇÏ´Â ½¬¿î ¹æ¹ýÀº ActiveHwnd := WinExist("A")ÀÔ´Ï´Ù.

+

+SetWinDelay´Â IfWinExist/IfWinActive¿¡ Àû¿ëµÇÁö ¾Ê½À´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindowsÀÌ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

IfWinExist, SetTitleMatchMode, DetectHiddenWindows, Last Found Window, WinActivate, WinWaitActive, WinWait, WinWaitClose, #IfWinActive/Exist

+

¿¹Á¦

+ +
IfWinActive, Untitled - Notepad
+{
+    WinMaximize  ; À§¿¡¼­ IfWinActive°¡ ¹ß°ßÇÑ ³ëÆ®Æеå âÀ» ÃÖ´ëÈ­ÇÕ´Ï´Ù.
+    Send, Some text.{Enter}
+    return
+}
+
+if WinActive("ahk_class Notepad") or WinActive("ahk_class" . ClassName)  ; "ahk_class"´Â µÚ¿¡ ½ºÆäÀ̽º°¡ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù.
+    WinClose  ; ¸¶Áö¸· ¹ß°ß âÀ» »ç¿ëÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/WinClose.htm b/src/docs/commands/WinClose.htm new file mode 100644 index 0000000..05730e3 --- /dev/null +++ b/src/docs/commands/WinClose.htm @@ -0,0 +1,63 @@ + + + + +WinClose + + + + + + + +

WinClose

+ +

ÁöÁ¤µÈ âÀ» ´Ý½À´Ï´Ù.

+ +
WinClose [, WinTitle, WinText, SecondsToWait, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ´Ù¸¥ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇÏ¸é ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖÀ¸¸é(ON) ŽÁöµË´Ï´Ù.

+ +
SecondsToWait
+

»ý·«µÇ°Å³ª ºñ¾î ÀÖÀ¸¸é, ÀüÇô ±â´Ù¸®Áö ¾Ê½À´Ï´Ù. 0À̸é 500ms µ¿¾È ±â´Ù¸³´Ï´Ù. + ±×·¸Áö ¾ÊÀ¸¸é, ÁöÁ¤ °³¼öÀÇ ÃÊ µ¿¾È âÀÌ ´ÝÈ÷±â¸¦ ±â´Ù¸³´Ï´Ù (¼Ò¼öÁ¡À» Çã¿ëÇÏ°í Ç¥Çö½Äµµ °¡´ÉÇÕ´Ï´Ù). âÀÌ ±× µ¿¾È ´ÝÈ÷Áö ¾Ê´õ¶óµµ, ½ºÅ©¸³Æ®´Â ½ÇÇàÀ» °è¼ÓÇÕ´Ï´Ù. ErrorLevelÀº ÀÌ ¸í·É¾î·Î ¼³Á¤µÇÁö ¾Ê½À´Ï´Ù. ±×·¡¼­ âÀÌ ´ÝÇû´ÂÁö È®½ÇÇÏ°Ô ¾Ë ÇÊ¿ä°¡ ÀÖ´Ù¸é IfWinExist³ª WinWaitClose¸¦ »ç¿ëÇϽʽÿÀ. ÀÌ ¸í·É¾î°¡ ±â´Ù¸®´Â µ¿¾È, ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀ̸Ӹ¦ ÅëÇÏ¿© »õ ¾²·¹µå¸¦ ±âµ¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº ¹«½ÃÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+ÀÌ ¸í·É¾î´Â â¿¡ ´Ý±â ¸Þ½ÃÁö¸¦ Àü¼ÛÇÕ´Ï´Ù. ±× °á°ú´Â â¿¡ µû¶ó ´Ù¸¨´Ï´Ù (µ¥ÀÌÅ͸¦ ÀúÀåÇϵµ·Ï ¿ä±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù. µîµî.)

+

+ºÎÇÕÇϴ âÀÌ È°¼ºÈ­µÇ¾î ÀÖ´Ù¸é, ±× ¾Æ·¡¿¡ ºÎÇÕÇÏ´Â ¾î¶² ⺸´Ù ¿ì¼± ±× âÀÌ ´ÝÈü´Ï´Ù. ÀϹÝÀûÀ¸·Î, ¿©·¯ âÀÌ ºÎÇÕÇϸé, ÃÖ»óÀ§ (°¡Àå ÃÖ±Ù¿¡ »ç¿ëµÈ) âÀÌ ´ÝÈü´Ï´Ù.

+

+ÀÌ ¸í·É¾î´Â ºÎÇÕÇÏ´Â ÃÖ»óÀ§ â¿¡¸¸ ÀÛµ¿ÇÕ´Ï´Ù. ´Ü, WinTitleÀÌ ahk_group GroupNameÀÏ °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù. ÀÌ °æ¿ì ±×·ì ¾ÈÀÇ ¸ðµç âÀÌ ¿µÇâÀ» ¹Þ½À´Ï´Ù.

+

+WinClose´Â WM_CLOSE ¸Þ½ÃÁö¸¦ ¸ñÇ¥ â¿¡ º¸³À´Ï´Ù. ¾à°£ °­Á¦ÀûÀÎ ¹æ¹ýÀ¸·Î ´Ý½À´Ï´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î ´ÝÀ¸·Á¸é ´ÙÀ½ ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù. ÇàÀ§°¡ ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù. ¿Ö³ÄÇϸé. Alt-F4¸¦ ´©¸£°Å³ª Á¦¸ñ ¹Ù¿¡¼­ âÀÇ ´Ý±â ¹öÆ°À» Ŭ¸¯ÇÑ °Í°ú È¿°ú°¡ ºñ½ÁÇϱ⠶§¹®ÀÔ´Ï´Ù:

+ +
PostMessage, 0x112, 0xF060,,, WinTitle, WinText  ; 0x112 = WM_SYSCOMMAND, 0xF060 = SC_CLOSE
+

+WinClose¸¦ ÅëÇÏ¿© âÀÌ ´ÝÈ÷Áö ¾ÊÀ¸¸é, WinKill¸¦ »ç¿ëÇÏ¿© °­Á¦·Î ´ÝÀ» ¼ö ÀÖ½À´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¿¡ ¹Î°¨ÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖ¾î¾ß ŽÁöµË´Ï´Ù.

+

°ü·Ã Ç׸ñ

+

WinKill, WinWaitClose, Process, WinActivate, SetTitleMatchMode, DetectHiddenWindows, Last Found Window, IfWinExist, IfWinActive, WinWaitActive, WinWait, GroupActivate

+

¿¹Á¦

+
IfWinExist, Untitled - Notepad
+    WinClose ; À§¿¡¼­ ¹ß°ßÇÑ Ã¢À» »ç¿ëÇÕ´Ï´Ù
+else
+    WinClose, Calculator
+ + + diff --git a/src/docs/commands/WinExist.htm b/src/docs/commands/WinExist.htm new file mode 100644 index 0000000..e428a3d --- /dev/null +++ b/src/docs/commands/WinExist.htm @@ -0,0 +1,89 @@ + + + + +IfWinExist / IfWinNotExist / WinExist + + + + + + + +

IfWinExist / IfWinNotExist / WinExist

+ +

+ºÎÇÕÇϴ âÀÌ Á¸ÀçÇÏ´ÂÁö Á¡°ËÇÕ´Ï´Ù. WinExist()´Â ù ¹ø°·Î ºÎÇÕÇϴ âÀÇ Unique ID (HWND)¸¦ µ¹·ÁÁÝ´Ï´Ù.

+ +
IfWinExist [, WinTitle, WinText,  ExcludeTitle, ExcludeText]
+IfWinNotExist [, WinTitle, WinText, ExcludeTitle, ExcludeText]
+UniqueID := WinExist("WinTitle", "WinText", "ExcludeTitle", "ExcludeText")
+ +

¸Å°³º¯¼ö

+
+ +
UniqueID
+

ÁÖ¾îÁø ±âÁØ¿¡ ºÎÇÕÇϴ ù ¹ø° âÀÇ Unique ID (HWND) (½ÊÀ°Áø Á¤¼ö)

+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ´Ù¸¥ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖÀ¸¸é(ON) ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù. ÁÖÀÇ: ÇÏÀ§ ȣȯÀÇ ¹®Á¦ ¶§¹®¿¡, IfWinExist¿ÍIfWinNotExist´Â ¸í·É¾îÀÇ À̸§¿¡ Á¤È®ÇÏ°Ô ºÎÇÕÇϸé ÀÌ ¸Å°³º¯¼ö¸¦ ¸í·É¾î·Î ÀÌÇØÇÕ´Ï´Ù. À̸¦ ¿ìȸÇÏ·Á¸é, ´ë½Å¿¡ WinExist() ÇÔ¼ö¸¦ »ç¿ëÇϽʽÿÀ.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ ¾ø´Â âÀº ¹«½ÃÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+¸ðµç ¸Å°³º¯¼ö°¡ »ý·«µÇ¸é, ¸¶Áö¸· ¹ß°ß âÀ» Á¡°ËÇÏ¿© ¿©ÀüÈ÷ Á¸ÀçÇÏ´ÂÁö (IfWinNotExistÀ̶ó¸é Á¸ÀçÇÏÁö ¾Ê´ÂÁö) ¾Ë¾Æ º¾´Ï´Ù.

+

+ÀÌ ¸í·É¾î Áß Çϳª¶óµµ ºÎÇÕÇϴ âÀÌ ÀÖ´Ù´Â °ÍÀ» ¾Ë°Ô µÇ¸é, ¸¶Áö¸· ¹ß°ß âÀÌ ±× âÀ¸·Î °»½ÅµË´Ï´Ù. Áï, IfWinExist°¡ ÂüÀ¸·Î Æò°¡µÇ°Å³ª IfWinNotExist°¡ °ÅÁþÀ¸·Î Æò°¡µÇ¸é, ¸¶Áö¸· ¹ß°ß âÀÌ °»½ÅµË´Ï´Ù.

+

+ÇÔ¼ö WinExist()´Â ù ¹ø°·Î ºÎÇÕÇϴ âÀÇ Unique ID (HWND)¸¦ (¾øÀ¸¸é 0) µ¹·ÁÁÝ´Ï´Ù. 0-¾Æ´Ñ ¸ðµç ¼ýÀÚ´Â Âü("true")À¸·Î °£ÁֵǹǷÎ, ´ÙÀ½ ¼­¼ú¹® if WinExist("WinTitle")´ÂWinTitleÀÌ Á¸ÀçÇϸé ÂüÀÔ´Ï´Ù.

+

+ÄÜÆ®·ÑÀÇ HWND¸¦ ¹ß°ßÇÏ·Á¸é (Post/SendMessage ¶Ç´Â DllCall¿¡ »ç¿ëÇϱâ À§ÇØ), ControlGet Hwnd ¶Ç´Â MouseGetPos¸¦ »ç¿ëÇϽʽÿÀ.

+

+SetWinDelay´Â IfWinExist/IfWinActive¿¡ Àû¿ëµÇÁö ¾Ê½À´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¿¡ ¹Î°¨ÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

IfWinActive, SetTitleMatchMode, DetectHiddenWindows, ¸¶Áö¸· ¹ß°ß â, Process, WinActivate, WinWaitActive, WinWait, WinWaitClose, #IfWinActive/Exist

+

¿¹Á¦

+
; ¿¹Á¦ 1
+IfWinExist, Untitled - Notepad
+{
+    WinActivate  ; À§¿¡¼­ ¹ß°ßÇÑ Ã¢À» ÀÚµ¿À¸·Î »ç¿ëÇÕ´Ï´Ù.
+    WinMaximize  ; À§¿Í °°½À´Ï´Ù
+    Send, Some text.{Enter}
+    return
+}
+
+; ¿¹Á¦ 2
+IfWinNotExist, Calculator
+    return
+else
+{
+    WinActivate  ; À§ÀÇ "IfWinNotExist"´Â ¶Ç "¸¶Áö¸· ¹ß°ß â"À» °»½ÅÇØ ÁÝ´Ï´Ù.
+    WinMove, 40, 40  ; »õ·Î¿î À§Ä¡·Î À̵¿ÇÕ´Ï´Ù.
+    return
+}
+
+; ¿¹Á¦ 3
+if WinExist("ahk_class Notepad") or WinExist("ahk_class" . ClassName)
+    WinActivate  ; ¸¶Áö¸·À¸·Î ¹ß°ßµÈ âÀ» »ç¿ëÇÕ´Ï´Ù.
+
+MsgBox % "The active window's ID is " . WinExist("A")
+
+; ¿¹Á¦ 4: ´ÙÀ½°ú µ¿µîÇÕ´Ï´Ù: IfWinNotExist, Calculator
+If !WinExist("Calculator")
+    return
+ + + diff --git a/src/docs/commands/WinGet.htm b/src/docs/commands/WinGet.htm new file mode 100644 index 0000000..79e1f9e --- /dev/null +++ b/src/docs/commands/WinGet.htm @@ -0,0 +1,167 @@ + + + + +WinGet + + + + + + + +

WinGet

+ +

ÁöÁ¤µÈ âÀÇ À¯ÀÏÇÑ ID, ÇÁ·Î¼¼½º ID, ÇÁ·Î¼¼½º À̸§, ¶Ç´Â ±×ÀÇ ÄÜÆ®·Ñ ¸ñ·ÏÀ» ¿­¶÷ÇÕ´Ï´Ù. ¶ÇÇÑ ÁöÁ¤µÈ ±âÁØ¿¡ ºÎÇÕÇÏ´Â ¸ðµç âÀÇ ¸ñ·ÏÀ» ¿­¶÷ÇÕ´Ï´Ù.

+ +
WinGet, OutputVar [, Cmd, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

Parameters

+
+ +
OutputVar
+

CmdÀÇ °á°ú¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
Cmd
+
¾Æ·¡ ¸®½ºÆ® ÂüÁ¶. +
+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖÀ¸¸é(ON) ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

Cmd´Â ¼öÇàÇÒ ¿¬»êÀÔ´Ï´Ù. ºñ¾î ÀÖÀ¸¸é ID°¡ ±âº»°ªÀÔ´Ï´Ù. ´ÙÀ½ ´Ü¾î Áß Çϳª°¡ µÉ ¼ö ÀÖ½À´Ï´Ù:

+

+ID: âÀÇ À¯ÀÏ ID ¹øÈ£ (HWND/ÇÚµé)À» ¿­¶÷ÇÕ´Ï´Ù. ºÎÇÕÇϴ âÀÌ ¾øÀ¸¸é, OutputVar´Â ºñ¿öÁý´Ï´Ù. ÇÔ¼ö WinExist()¿Í WinActive()µµ âÀÇ ID¸¦ ¿­¶÷ÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù; ¿¹¸¦ µé¾î, WinExist("A")´Â È°¼º âÀÇ ID¸¦ ¾ò´Â °¡Àå ºü¸¥ ¹æ¹ýÀÔ´Ï´Ù. ÄÜÆ®·ÑÀÇ HWND¸¦ ¹ß°ßÇÏ·Á¸é (Post/SendMessage ¶Ç´Â DllCall¿¡ »ç¿ëÇÒ ¸ñÀûÀ¸·Î), ControlGet Hwnd ¶Ç´Â MouseGetPos¸¦ »ç¿ëÇϽʽÿÀ.

+

+IDLast: À§¿Í µ¿ÀÏÇÏÁö¸¸ ºÎÇÕÇϴ âÀÌ ¿©·µÀÌ¸é °¡Àå ¸¶Áö¸·/ÃÖÇÏÀ§ âÀÇ ID¸¦ ¿­¶÷ÇÕ´Ï´Ù. ¿ÀÁ÷ Çϳª¸¸ ÀÏÄ¡Çϸé, ID¿Í µ¿ÀÏÇÏ°Ô ¼öÇàÇÕ´Ï´Ù. ÀÌ °³³äÀº WinActivateBottomÀÌ »ç¿ëÇÏ´Â °³³ä°ú ºñ½ÁÇÕ´Ï´Ù.

+

+PID: âÀÇ ÇÁ·Î¼¼½º ID (PID)¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+

+ProcessName: âÀ» ¼ÒÀ¯ÇÑ ÇÁ·Î¼¼½ºÀÇ À̸§À» ¿­¶÷ÇÕ´Ï´Ù (¿¹, notepad.exe). ºÎÇÕÇϴ âÀÌ ¾øÀ¸¸é, OutputVar´Â ºñ¿öÁý´Ï´Ù.

+

+ProcessPath [v1.1.01+]: ProcessName°ú ºñ½ÁÇÏÁö¸¸, ´ÜÁö À̸§ÀÌ ¾Æ´Ï¶ó ÇÁ·Î¼¼½ºÀÇ Àüü °æ·Î¿Í À̸§À» ¿­¶÷ÇÕ´Ï´Ù.

+

+Count: ±âÁ¸ â¿¡¼­ WinTitle, WinText, ExcludeTitle, ±×¸®°í ExcludeText (¾øÀ¸¸é 0)¿¡ ºÎÇÕÇϴ âÀÇ °³¼ö¸¦ ¿­¶÷ÇÕ´Ï´Ù. ½Ã½ºÅÛÀÇ ¸ðµç âÀ» ¿­¶÷ÇÏ·Á¸é, ³× °³ÀÇ ¸Å°³º¯¼ö¸¦ ¸ðµÎ »ý·«ÇϽʽÿÀ. ¼ûÀº âÀº DetectHiddenWindowsÀÌ ÄÑÁ® ÀÖÀ» °æ¿ì¿¡¸¸ Æ÷ÇԵ˴ϴÙ.

+

+List: ±âÁ¸ â¿¡¼­ ÁöÁ¤µÈ WinTitle, WinText, ExcludeTitle, ±×¸®°í ExcludeText¿¡ ºÎÇÕÇÏ´Â ±âÁ¸ÀÇ ¸ðµç âÀÇ À¯ÀÏ ID ¹øÈ£µéÀ» ¿­¶÷ÇÕ´Ï´Ù. (Àüü ½Ã½ºÅÛÀÇ ¸ðµç âÀ» ¿­¶÷ÇÏ·Á¸é, ³× °³ÀÇ Á¦¸ñ/ÅؽºÆ® ¸Å°³º¯¼ö¸¦ ¸ðµÎ »ý·«ÇϽʽÿÀ). °¢ ID ¹øÈ£´Â OutputVarÀÇ À̸§À¸·Î ½ÃÀÛÇÏ´Â º¯¼ö¿¡ ÀúÀåµË´Ï´Ù (ÀÇ»ç-¹è¿­À» Çü¼ºÇÕ´Ï´Ù). ¹Ý¸é¿¡ OutputVar ÀÚü¿¡´Â ¿­¶÷µÈ Ç׸ñÀÇ °³¼ö°¡ ¼³Á¤µË´Ï´Ù (¾øÀ¸¸é 0ÀÔ´Ï´Ù). ¿¹¸¦ µé¾î, OutputVar°¡ MyArrayÀÌ°í ºÎÇÕÇÑ Ã¢ÀÌ µÎ °³ ¹ß°ßµÇ¾ú´Ù¸é, MyArray1Àº ù ¹ø° âÀÇ ID°¡ ¼³Á¤µÇ°í, MyArray2´Â µÎ ¹ø° âÀÇ ID¿¡ ¼³Á¤µË´Ï´Ù. âÀº (¹ÙÅÁÈ­¸é¿¡ ¾î¶»°Ô ½×¿© Àִ°¡¿¡ ¸ÂÃß¾î) À§¿¡¼­ ¾Æ·¡·Î ¿­¶÷µË´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindowsÀÌ ÄÑÁ® ÀÖÀ» ¶§¸¸ ŽÁöµË´Ï´Ù. ÇÔ¼ö ¾È¿¡¼­, Áö¿ªÀûÀÌ ¾Æ´Ï¶ó Àü¿ªÀû ÀÇ»ç-¹è¿­À» »ý¼ºÇÏ·Á¸é, ÀÌ ¸í·É¾î¸¦ »ç¿ëÇϱâ Àü¿¡ ¸ÕÀú MyArray¸¦ Àü¿ª º¯¼ö·Î ¼±¾ðÇϽʽÿÀ (Àü¿ª-°£ÁÖ ÇÔ¼ö¿¡ ´ëÇÏ¿© ±× ¹Ý´ëµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù). + +±×·¸Áö¸¸, ÈçÇÑ È¥¶õÀÇ ±Ù¿ø ¶§¹®¿¡, Á¾Á¾ °¢ º¯¼ö¸¦ ÇÔ¼ö ¾È¿¡ ¼³Á¤ÇÏ´Â °ÍÀÌ ÇʼöÀûÀÎ °æ¿ìµµ ÀÖ½À´Ï´Ù.

+

+MinMax: â¿¡ ´ëÇÏ¿© ÃÖ¼Ò/ÃÖ´ë »óŸ¦ ¿­¶÷ÇÕ´Ï´Ù. ºÎÇÕÇϴ âÀÌ ¾øÀ¸¸é OuputVar´Â ºñ¿öÁý´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é ´ÙÀ½ ¼ýÀÚ Áß Çϳª°¡ ¼³Á¤µË´Ï´Ù:
+ -1: âÀÌ ÃÖ¼Ò »óÅÂÀÔ´Ï´Ù (WinRestore·Î º¹¿øÇÒ ¼ö ÀÖ½À´Ï´Ù).
+ 1: âÀÌ ÃÖ´ë »óÅÂÀÔ´Ï´Ù (WinRestore·Î º¹¿øÇÒ ¼ö ÀÖ½À´Ï´Ù).
+ 0: âÀÌ ÃÖ´ë »óŵµ ¾Æ´Ï°í ÃÖ¼Ò »óŵµ ¾Æ´Õ´Ï´Ù.

+

+ControlList: +â¿¡ ÀÖ´Â ¸ðµç ÄÜÆ®·ÑÀÇ À̸§À» ¿­¶÷ÇÕ´Ï´Ù. ºÎÇÕÇϴ âÀÌ Á¸ÀçÇÏÁö ¾Ê°Å³ª â¿¡ ÄÜÆ®·ÑÀÌ ¾øÀ¸¸é, OutputVar´Â ºñ¿öÁý´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, Window Spy¿¡ º¸¿©ÁöµíÀÌ, °¢ ÄÜÆ®·Ñ À̸§Àº ±×ÀÇ Å¬·¡½º À̸§°ú ¹Ù·Î ´ÙÀ½¿¡ ¿¬¼Ó ¹øÈ£ (ClassNN)·Î ±¸¼ºµË´Ï´Ù.

+

+¸¶Áö¸· Ç׸ñÀ» Á¦¿ÜÇÏ°í °¢ Ç׸ñÀº ¶óÀÎÇǵå·Î ³¡³³´Ï´Ù (`n). ÄÜÆ®·Ñ À̸§À» Çϳª¾¿ Á¶»çÇÏ·Á¸é, ¾Æ·¡ ¿¹Á¦ ¼½¼Ç¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ È¸µ¹ÀÌ ÆĽÌÀ» »ç¿ëÇϽʽÿÀ.

+

+ÄÜÆ®·ÑÀº Z-¼ø¼­¿¡ µû¶ó Á¤·ÄµË´Ï´Ù. º¸Åë âÀÌ Áö¿øÇÑ´Ù¸é TAB Å°·Î ÃÊÁ¡À» À̵¿ÇÏ´Â ¼ø¼­¿Í µ¿ÀÏÇÕ´Ï´Ù.

+

+ÇöÀç ¸¶¿ì½º ¾Æ·¡¿¡ ÀÖ´Â ÄÜÆ®·ÑÀº MouseGetPos·Î ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ControlListHwnd [v1.0.43.06+]: À§¿Í °°Áö¸¸ °¢ ÄÜÆ®·ÑÀÇ ClassNNÀÌ ¾Æ´Ï¶ó â ÇÚµé (HWND)À» ¿­¶÷ÇÕ´Ï´Ù.

+

+Transparent: âÀÇ Åõ¸íµµ¸¦ ¿­¶÷ÇÕ´Ï´Ù (Åõ¸íµµ¸¦ ¼³Á¤ÇÏ´Â ¹æ¹ýÀº WinSetÀ» ÂüÁ¶ÇϽʽÿÀ). ´ÙÀ½°ú °°Àº °æ¿ì OutputVarÀÌ ºñ¿öÁý´Ï´Ù: +

    +
  1. OS°¡ Windows XPº¸´Ù ±¸ÇüÀÔ´Ï´Ù; +
  2. ºÎÇÕÇϴ âÀÌ ¾ø½À´Ï´Ù; +
  3. â¿¡ Åõ¸íµµ ·¹º§ÀÌ ¾ø½À´Ï´Ù; +
  4. (OS ÇàÀ§·Î ¾ß±âµÈ) ±âŸ Á¶°Ç. ¿¹¸¦ µé¾î âÀ» Åõ¸íÇÏ°Ô ¸¸µç ÀÌÈÄ·Î ÃÖ¼ÒÈ­, º¹±¸, ¶Ç´Â Å©±â°¡ ¹Ù²î¾ú½À´Ï´Ù. +
+±×·¸Áö ¾ÊÀ¸¸é, 0ºÎÅÍ 255 »çÀÌÀÇ ¼ýÀÚ°¡ ÀúÀåµË´Ï´Ù. 0Àº º¸ÀÌÁö ¾Ê´Â âÀ» ³ªÅ¸³»°í 255´Â ¿ÏÀü ºÒÅõ¸í âÀ» ³ªÅ¸³À´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
MouseGetPos,,, MouseWin
+WinGet, Transparent, Transparent, ahk_id %MouseWin%  ; ¸¶¿ì½º ¾Æ·¡ÀÇ Ã¢ÀÌ Åõ¸íµµ.
+

+TransColor: +â¿¡¼­ Åõ¸íÀ¸·Î Ç¥½ÄÀÌ ºÙÀº »öÀ» ¿­¶÷ÇÕ´Ï´Ù (TransColor¸¦ ¼³Á¤ÇÏ´Â ¹ýÀº WinSet¸¦ ÂüÁ¶ÇÕ´Ï´Ù.). OutputVar´Â ´ÙÀ½°ú °°Àº °æ¿ì ºñ¿öÁý´Ï´Ù: +

    +
  1. OS°¡ Windows XPº¸´Ù ¿À·¡µÇ¾ú½À´Ï´Ù; +
  2. ºÎÇÕÇϴ âÀÌ ¾ø½À´Ï´Ù; +
  3. â¿¡ Åõ¸í »öÀÌ ¾ø½À´Ï´Ù; ¶Ç´Â +
  4. (OS ÇàÀ§·Î ¾ß±âµÈ) ±âŸ Á¶°Ç. ¿¹¸¦ µé¾î âÀ» Åõ¸íÇÏ°Ô ¸¸µç ÀÌÈÄ·Î ÃÖ¼ÒÈ­, º¹±¸, ¶Ç´Â Å©±â°¡ ¹Ù²î¾ú½À´Ï´Ù. +
+±×·¸Áö ¾ÊÀ¸¸é, ¿©¼¸ÀÚ¸® ½ÊÀ°Áø RGB »öÀÌ ÀúÀåµË´Ï´Ù. ¿¹, 0x00CC99. ¿¹¸¦ µé¾î:

+ +
MouseGetPos,,, MouseWin
+WinGet, TransColor, TransColor, ahk_id %MouseWin%  ; ¸¶¿ì½º Ä¿¼­ ¾Æ·¡¿¡ Àִ âÀÇ TransColor.
+

+Style ¶Ç´Â ExStyle: âÀÇ ½ºÅ¸ÀÏ ¶Ç´Â È®Àå ½ºÅ¸ÀÏÀ» ³ªÅ¸³»´Â 8-ÀÚ¸® ½ÊÀ°Áø ¼ö¸¦ ¿­¶÷ÇÕ´Ï´Ù. ºÎÇÕÇϴ âÀÌ ¾øÀ¸¸é, OutputVar´Â ºñ¿öÁý´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â â¿¡ WS_DISABLED ½ºÅ¸ÀÏÀÌ ÀÖ´ÂÁö ¾Ë¾Æº¾´Ï´Ù:

+ +
WinGet, Style, Style, My Window Title
+if (Style & 0x8000000)  ; 0x8000000 is WS_DISABLED.
+  ... âÀÌ ºñÈ°¼º »óÅÂÀÔ´Ï´Ù. ±×·¡¼­ ÀûÀýÇÑ Á¶Ä¡¸¦ ¼öÇàÇÕ´Ï´Ù.
+

+´ÙÀ½ ¿¹Á¦´Â â¿¡ WS_EX_TOPMOST ½ºÅ¸ÀÏÀÌ ÀÖ´ÂÁö ¾Ë¾Æº¾´Ï´Ù (Ç×»ó-À§¿¡):

+
WinGet, ExStyle, ExStyle, My Window Title
+if (ExStyle & 0x8)  ; 0x8 is WS_EX_TOPMOST.
+  ... âÀÌ Ç×»ó ÃÖ»óÀ§ »óÅÂÀÔ´Ï´Ù. ±×·¡¼­ ÀûÀýÇÑ Á¶Ä¡¸¦ ¼öÇàÇÕ´Ï´Ù.
+

+½ºÅ¸ÀÏ ¸ñ·ÏÀº ½ºÅ¸ÀÏ Å×À̺íÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

³íÆò

+

+âÀÇ ID ¹øÈ£´Â ¿ÀÁ÷ âÀÌ »ì¾Æ ÀÖÀ» µ¿¾È¿¡¸¸ À¯È¿ÇÕ´Ï´Ù. ´Ù¸¥ ¸»·Î, ¾îÇø®ÄÉÀ̼ÇÀÌ Àç½ÃÀÛÇϸé, ±×ÀÇ ¸ðµç âÀº »õ ID ¹øÈ£¸¦ ¾ò½À´Ï´Ù.

+

+ÀÌ ¸í·É¾î·Î ¿­¶÷µÈ ID ¹øÈ£´Â ¼ýÀÚÀÌ°í (¾Õ¿¡ Á¢µÎ¾î "ahk_id"¸¦ Æ÷ÇÔÇÏÁö ¾ÊÀ½) ±×¸®°í SetFormatÀÇ ¼³Á¤¿¡ »ó°ü¾øÀÌ 16Áø Çü½ÄÀ¸·Î ÀúÀåµË´Ï´Ù.

+

+¸¶¿ì½º Ä¿¼­ ¾Æ·¡¿¡ Àִ âÀÇ ID´Â MouseGetPos·Î ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ID ¹øÈ£´Â ÇöÀç 32-ºñÆ® ºÎÈ£¾ø´Â Á¤¼öÀÌÁö¸¸, ¾ÕÀ¸·Î 64-ºñÆ®°¡ µÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ±×·¯¹Ç·Î, ÀÌ·± °ªµé¿¡ ´ëÇØ µ¡¼ÀÀ» ÇÏ´Â °Í°ú °°Àº ¼ýÄ¡ ¿¬»êÀ» ¼öÇàÇÏ´Â °ÍÀº ¾ÈÀüÇÏÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ±×·± ¿¬»êÀº ÀÔ·Â ¹®ÀÚ¿­À» ºÎÈ£¾ø´Â Á¤¼ö°¡ ¾Æ´Ï¶ó ºÎÈ£ÀÖ´Â Á¤¼ö·Î Çؼ®ÇÒ ÇÊ¿ä°¡ Àֱ⠶§¹®ÀÔ´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¿¡ ¹Î°¨ÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+WinGetClass, Process, WinGetTitle, MouseGetPos, ControlGet, ControlFocus, GroupAdd

+ +

¿¹Á¦

+
; ¿¹Á¦ #1: È°¼º âÀ» ÃÖ´ëÈ­ÇÏ°í ±×ÀÇ À¯ÀÏ ID¸¦ º¸°íÇÕ´Ï´Ù:
+WinGet, active_id, ID, A
+WinMaximize, ahk_id %active_id%
+MsgBox, È°¼º âÀÇ ID´Â "%active_id%"ÀÔ´Ï´Ù.
+
+; ¿¹Á¦ #2: Àüü ½Ã½ºÅÛ¿¡¼­ ¸ðµç âÀ» ¹æ¹®ÇÏ°í °¢ â¿¡ ´ëÇÏ¿© ´ÙÀ½ Á¤º¸¸¦ º¸¿©ÁÝ´Ï´Ù:
+WinGet, id, list,,, Program Manager
+Loop, %id%
+{
+    this_id := id%A_Index%
+    WinActivate, ahk_id %this_id%
+    WinGetClass, this_class, ahk_id %this_id%
+    WinGetTitle, this_title, ahk_id %this_id%
+    MsgBox, 4, , Visiting All Windows`n%a_index% of %id%`nahk_id %this_id%`nahk_class %this_class%`n%this_title%`n`nContinue?
+    IfMsgBox, NO, break
+}
+
+; ¿¹Á¦ #3: ControlListÀ¸·ÎºÎÅÍ ÄÜÆ®·Ñ À̸§À» Çϳª¾¿ ÃßÃâÇÕ´Ï´Ù:
+WinGet, ActiveControlList, ControlList, A
+Loop, Parse, ActiveControlList, `n
+{
+    MsgBox, 4,, Control #%a_index% is "%A_LoopField%". Continue?
+    IfMsgBox, No
+        break
+}
+
+; ¿¹Á¦ #4: ½Ç½Ã°£À¸·Î È°¼º âÀÇ ÄÜÆ®·Ñ ¸®½ºÆ®¸¦ º¸¿©ÁÝ´Ï´Ù:
+#Persistent
+SetTimer, WatchActiveWindow, 200
+return
+WatchActiveWindow:
+WinGet, ControlList, ControlList, A
+ToolTip, %ControlList%
+return
+ + + diff --git a/src/docs/commands/WinGetActiveStats.htm b/src/docs/commands/WinGetActiveStats.htm new file mode 100644 index 0000000..6d95d43 --- /dev/null +++ b/src/docs/commands/WinGetActiveStats.htm @@ -0,0 +1,51 @@ + + + + +WinGetActiveStats + + + + + + + +

WinGetActiveStats

+ +

WinGetActiveTitleÀÇ ±â´É°ú WinGetPosÀÇ ±â´ÉÀ» ÇϳªÀÇ ¸í·É¾î·Î Á¶ÇÕÇÕ´Ï´Ù.

+ +
WinGetActiveStats, Title, Width, Height, X, Y
+

¸Å°³º¯¼ö

+
+ +
Title
+

È°¼º âÀÇ Á¦¸ñÀ» ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
Width/Height
+

È°¼º âÀÇ ³Êºñ¿Í ³ôÀ̸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
X, Y
+

È°¼º âÀÇ Á»ó ¸ð¼­¸® X ÁÂÇ¥¿Í Y ÁÂÇ¥¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
+ +

³íÆò

+

+ºÎÇÕÇϴ âÀÌ ¾øÀ¸¸é, Ãâ·Â º¯¼ö´Â ºñ¿öÁý´Ï´Ù.

+

+ÀÌ ¸í·É¾î´Â ´ÙÀ½ ÄÚµå¿Í µ¿µîÇÕ´Ï´Ù:

+ +
WinGetTitle, Title, A
+WinGetPos, X, Y, Width, Height, A
+

+È°¼º âÀÌ ¼û¾î ÀÖ°í DetectHiddenWindows°¡ ²¨Á® ÀÖÀ¸¸é (±âº»°ª), WinShow¸¦ Á¦¿ÜÇÏ°í ¸ðµç ¸í·É¾î´Â ±× È°¼ºÃ¢À» "º¸Áö ¸øÇÕ´Ï´Ù". ÀÌ·± Àú·± ÀÌÀ¯·Î È°¼º âÀÌ ¾ø´Ù¸é, ÀÌ ¸í·É¾î´Â ±×ÀÇ ¸ðµç Ãâ·Â º¯¼öµéÀ» ºñ¿ö¹ö¸³´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

WinGetPos, WinGetActiveTitle, WinGetTitle, WinGetClass, WinGetText, ControlGetText

+ +

¿¹Á¦

+
WinGetActiveStats, Title, Width, Height, X, Y
+MsgBox, "%Title%" È°¼º âÀº ³Êºñ°¡ %Width%ÀÌ°í`, ³Êºñ°¡ %Height%`, ±×¸®°í %X%`,%Y%¿¡ À§Ä¡ÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/WinGetActiveTitle.htm b/src/docs/commands/WinGetActiveTitle.htm new file mode 100644 index 0000000..ac5b92c --- /dev/null +++ b/src/docs/commands/WinGetActiveTitle.htm @@ -0,0 +1,35 @@ + + + + +WinGetActiveTitle + + + + + + + +

WinGetActiveTitle

+ +

È°¼ºÃ¢ÀÇ Á¦¸ñÀ» ¿­¶÷ÇÕ´Ï´Ù.

+ +
WinGetActiveTitle, OutputVar
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

È°¼º âÀÇ Á¦¸ñÀ» ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
+ +

³íÆò

+

ÀÌ ¸í·É¾î´Â ´ÙÀ½°ú µ¿µîÇÕ´Ï´Ù: WinGetTitle, OutputVar, A.

+

°ü·Ã Ç׸ñ

+

WinGetPos, WinGetActiveStats, WinGetTitle, WinGetClass, WinGetText, ControlGetText

+

¿¹Á¦

+
WinGetActiveTitle, Title
+MsgBox, È°¼º âÀÇ Á¦¸ñÀº "%Title%"ÀÔ´Ï´Ù.
+ + + diff --git a/src/docs/commands/WinGetClass.htm b/src/docs/commands/WinGetClass.htm new file mode 100644 index 0000000..b023fa9 --- /dev/null +++ b/src/docs/commands/WinGetClass.htm @@ -0,0 +1,50 @@ + + + + +WinGetClass + + + + + + + +

WinGetClass

+ +

ÁöÁ¤µÈ âÀÇ Å¬·¡½º À̸§À» ¿­¶÷ÇÕ´Ï´Ù.

+ +
WinGetClass, OutputVar [, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

¿­¶÷µÈ Ŭ·¡½º À̸§À» ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°ÇÒ Ã¢ Á¦¸ñ ¶Ç´Â ´Ù¸¥ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ âÀÇ ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµÈ Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). + DetectHiddenTextÀÌ ÄÑÁ® ÀÖÀ¸¸é(ON) ¼ûÀº ÅؽºÆ®°¡ ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Æ÷ÇԵǾî Àִ âÀº Á¦¿ÜµË´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Æ÷ÇԵǾî Àִ âÀº Á¦¿ÜµË´Ï´Ù.

+ +
+ +

³íÆò

+

Ŭ·¡½º À̸§¸¸ ¿­¶÷µË´Ï´Ù (Á¢µÎ¾î "ahk_class"´Â OutputVar¿¡ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù).

+

â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows¸¦ ÄѸé ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

WinGet, WinGetTitle

+

¿¹Á¦

+
WinGetClass, class, A
+MsgBox, È°¼º âÀÇ Å¬·¡½º´Â "%class%"ÀÔ´Ï´Ù.
+ + + diff --git a/src/docs/commands/WinGetPos.htm b/src/docs/commands/WinGetPos.htm new file mode 100644 index 0000000..a96bfad --- /dev/null +++ b/src/docs/commands/WinGetPos.htm @@ -0,0 +1,69 @@ + + + + +WinGetPos + + + + + + + +

WinGetPos

+ +

ÁöÁ¤µÈ âÀÇ Å©±â¿Í À§Ä¡¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+ +
WinGetPos [, X, Y, Width, Height, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
X, Y
+

¸ñÇ¥ âÀÇ Á»ó ¸ð¼­¸® X ÁÂÇ¥¿Í Y ÁÂÇ¥¸¦ ÀúÀåÇÒ À̸§. »ý·«Çϸé, »óÀÀÇÏ´Â °ªÀÌ ÀúÀåµÇÁö ¾Ê½À´Ï´Ù.

+ +
Width/Height
+

¸ñÇ¥ âÀÇ ³ôÀÌ¿Í ³Êºñ¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§. »ý·«ÇÏ¸é »óÀÀÇÏ´Â °ªÀÌ ÀúÀåµÇÁö ¾Ê½À´Ï´Ù.

+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ´Ù¸¥ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµÈ Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖÀ¸¸é(ON) ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+ºÎÇÕÇϴ âÀÌ ¾øÀ¸¸é, Ãâ·Â º¯¼ö´Â ºñ¿öÁý´Ï´Ù.

+

+WinTitle "ÇÁ·Î±×·¥ °ü¸®ÀÚr"°¡ »ç¿ëµÇ¸é, ÀÌ ¸í·É¾î´Â ¹ÙÅÁÈ­¸éÀÇ Å©±â¸¦ ¿­¶÷ÇÕ´Ï´Ù. ÀÌ´Â º¸Åë ÇöÀç È­¸é ÇØ»óµµ¿Í °°½À´Ï´Ù.

+

+ÃÖ¼ÒÈ­µÈ âÀº ¿©ÀüÈ÷ Å©±â¿Í À§Ä¡°¡ ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì ¹ÝȯµÈ °ªÀº OS¿Í ȯ°æ ±¸¼º¿¡ µû¶ó ´Þ¶óÁú ¼ö ÀÖ½À´Ï´Ù.

+

+¸¶¿ì½º°¡ ÇöÀç ¼±È¸ ÁßÀΠâÀÇ À̸§°ú ÄÜÆ®·ÑÀ» ¹ß°ßÇÏ·Á¸é, MouseGetPos¸¦ »ç¿ëÇϽʽÿÀ.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

WinMove, ControlGetPos, WinGetActiveStats, WinGetActiveTitle, WinGetTitle, WinGetText, ControlGetText

+

¿¹Á¦

+
WinGetPos, X, Y, Width, Height, Calculator
+MsgBox, Calculator is at %X%`,%Y%
+
+WinGetPos, X, Y, , , A  ; "A"´Â È°¼º âÀÇ À§Ä¡¸¦ ¾ò½À´Ï´Ù.
+MsgBox, È°¼º âÀÇ À§Ä¡: %X%`,%Y%
+
+IfWinExist, Untitled - Notepad
+{
+    WinGetPos, Xpos, Ypos  ; À§¿¡¼­ ¹ß°ßÇÑ Ã¢À» »ç¿ëÇÕ´Ï´Ù.
+    MsgBox, Notepad is at %Xpos%`,%Ypos%
+}
+ + + diff --git a/src/docs/commands/WinGetText.htm b/src/docs/commands/WinGetText.htm new file mode 100644 index 0000000..ff5d187 --- /dev/null +++ b/src/docs/commands/WinGetText.htm @@ -0,0 +1,66 @@ + + + + +WinGetText + + + + + + + +

WinGetText

+ +

ÁöÁ¤µÈ âÀ¸·ÎºÎÅÍ ÅؽºÆ®¸¦ ¿­¶÷ÇÕ´Ï´Ù.

+ +
WinGetText, OutputVar [, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

¿­¶÷µÈ ÅؽºÆ®¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ´Ù¸¥ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµÈ Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ®(ON) ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

ErrorLevel

+

+[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆÐÇÏ¸é ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖ¾úÀ¸¸é 1,. ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+¿­¶÷µÈ ÅؽºÆ®´Â ÀϹÝÀûÀ¸·Î Window Spy°¡ ±× â¿¡ ´ëÇÏ¿© º¸¿©ÁÖ´Â °Í°ú µ¿ÀÏÇÕ´Ï´Ù. ±×·¸Áö¸¸, DetectHiddenText°¡ ²¨Á® ÀÖ´Ù¸é, ¼ûÀº ÅؽºÆ®´Â OutputVar¿¡ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.

+

+°¢ ÅؽºÆ® ¿ø¼Ò´Â ij¸®Áö ¸®ÅÏ°ú ¶óÀÎÇǵå (CR+LF)·Î ³¡³³´Ï´Ù. ½ºÅ©¸³Æ®¿¡¼­´Â `r`n·Î Ç¥±âµË´Ï´Ù. °¢ ÁÙÀ̳ª ºÎ¹®ÀÚ¿­À» ÃßÃâÇÏ·Á¸é, StringGetPos ±×¸®°í StringMid¿Í °°Àº ¸í·É¾î¸¦ »ç¿ëÇϽʽÿÀ. ȸµ¹ÀÌ ÆĽÌÀ» »ç¿ëÇÏ¸é °¢ ÁÙÀ̳ª ´Ü¾î¸¦ Çϳª¾¿ Á¶»çÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+¿­¶÷µÈ ÅؽºÆ®°¡ (ºÒ¿ÏÀüÇÏ°Ô) Àß·Á ³ªÅ¸³ª¸é, ¸ÕÀú VarSetCapacity(OutputVar, 55)¸¦ »ç¿ëÇÑ ´ÙÀ½ WinGetText¸¦ ½ÃµµÇϽʽÿÀ [Àß·Á ³ª°£ ÅؽºÆ®º¸´Ù ÈξÀ ´õ Å« Å©±â·Î 55¸¦ ±³Ã¼ÇϽʽÿÀ]. ¾î¶² ¾îÇø®ÄÉÀ̼ÇÀº WM_GETTEXTLENGTH ¸Þ½ÃÁö¿¡ ÀûÀýÇÏ°Ô ÀÀ´äÇÏÁö ¾Ê±â ¶§¹®¿¡, ¿ÀÅäÇÖÅ°°¡ Ãâ·Â º¯¼ö¸¦ ³Ê¹« ÀÛ°Ô ¸¸µé¾î ¸ðµç ÅؽºÆ®°¡ µé¾î°¡Áö ¸øÇϱ⠶§¹®¿¡ ÇʼöÀûÀ¸·Î ÀÌ·¸°Ô ó¸®ÇØ¾ß ÇÕ´Ï´Ù.

+

+¿­¶÷µÈ ÅؽºÆ®ÀÇ ¾çÀº º¯¼öÀÇ ÃÖ´ë °¡¿ë ´É·Â¿¡ Á¦ÇÑÀ» ¹Þ½À´Ï´Ù (#MaxMem Áö½Ã¾î¸¦ ÅëÇÏ¿© ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù). °á°úÀûÀ¸·Î, ÀÌ ¸í·É¾î´Â ¸ñÇ¥ â¿¡ (¿¹, Å« ¹®¼­¸¦ ¿­°í ÀÖ´Â ÆíÁý±â¿¡) ¹æ´ëÇÑ ¾çÀÇ ÅؽºÆ®°¡ ÀÖ´Ù¸é ¹æ´ëÇÑ ¾çÀÇ RAMÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é, â ÅؽºÆ®ÀÇ Æ÷ÀÎÅ͸¸ ¿­¶÷ÇÏ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù. ´ë½Å¿¡ ControlGetText¸¦ »ç¿ëÇϽʽÿÀ. ¾î´À °æ¿ìµç, º¯¼öÀÇ ¸Þ¸ð¸®´Â ³ªÁß¿¡ ¾Æ¹«°Íµµ ÇÒ´çÇÏÁö ¾ÊÀ¸¸é ÇØÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù. Áï, OutputVar =ÀÌ¸é ¸Þ¸ð¸®°¡ ÇØÁ¦µË´Ï´Ù.

+

+âÀÇ ¸ðµç ÄÜÆ®·Ñ ¸ñ·ÏÀ» ¿­¶÷ÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À: WinGet, OutputVar, ControlList, WinTitle

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

ControlGetText, WinGetActiveStats, WinGetActiveTitle, WinGetTitle, WinGetPos, #MaxMem

+

¿¹Á¦

+
Run, Calc.exe
+WinWait, Calculator
+WinGetText, text  ; À§¿¡¼­ ¹ß°ßÇÑ Ã¢À» »ç¿ëÇÕ´Ï´Ù.
+MsgBox, The text is:`n%text%
+ + + diff --git a/src/docs/commands/WinGetTitle.htm b/src/docs/commands/WinGetTitle.htm new file mode 100644 index 0000000..0c79098 --- /dev/null +++ b/src/docs/commands/WinGetTitle.htm @@ -0,0 +1,52 @@ + + + + +WinGetTitle + + + + + + + +

WinGetTitle

+ +

ÁöÁ¤µÈ âÀÇ Á¦¸ñÀ» ¿­¶÷ÇÕ´Ï´Ù.

+ +
WinGetTitle, OutputVar [, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
OutputVar
+

¿­¶÷ÇÑ Á¦¸ñÀ» ÀúÀåÇÒ º¯¼öÀÇ À̸§.

+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ´Ù¸¥ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

+ Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµÈ Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+¸¶¿ì½º°¡ ÇöÀç ¿Ã¶ó ź âÀÇ À̸§À» ¾Ë·Á¸é, MouseGetPos¸¦ »ç¿ëÇÕ´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

WinGetActiveStats, WinGetActiveTitle, WinGetClass, WinGet, WinGetText, ControlGetText, WinGetPos

+

¿¹Á¦

+
WinGetTitle, Title, A
+MsgBox, È°¼º âÀº "%Title%"ÀÔ´Ï´Ù.
+ + + diff --git a/src/docs/commands/WinHide.htm b/src/docs/commands/WinHide.htm new file mode 100644 index 0000000..e24bdad --- /dev/null +++ b/src/docs/commands/WinHide.htm @@ -0,0 +1,58 @@ + + + + +WinHide + + + + + + + +

WinHide

+ +

ÁöÁ¤µÈ âÀ» °¨Ãä´Ï´Ù.

+ +
WinHide [, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ´Ù¸¥ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµÈ Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖÀ¸¸é(ON) ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+¼ûÀº âÀ» º¸¿©ÁÖ·Á¸é WinShow¸¦ »ç¿ëÇÕ´Ï´Ù (DetectHiddenWindowsÀº On ¶Ç´Â OffÀÏ ¼ö ÀÖ½À´Ï´Ù).

+

+ÀÌ ¸í·É¾î´Â ÃÖ»óÀ§¿¡ ºÎÇÕÇϴ â¿¡¸¸ ÀÛµ¿ÇÕ´Ï´Ù. ´Ü, WinTitleÀÌ ahk_group GroupNameÀÎ °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù. ÀÌ °æ¿ì, ±×·ì ¾ÈÀÇ ¸ðµç âÀÌ ¿µÇâÀ» ¹Þ½À´Ï´Ù.

+

+ŽºÅ©¹Ù Ž»ö±â´Â ´ÙÀ½°ú °°ÀÌ º¸¿©Áְųª/°¨Ãâ ¼ö ÀÖ½À´Ï´Ù:

+ +
WinHide ahk_class Shell_TrayWnd
+WinShow ahk_class Shell_TrayWnd
+ +

°ü·Ã Ç׸ñ

+

WinShow, SetTitleMatchMode, DetectHiddenWindows, ¸¶Áö¸· ¹ß°ß â, WinSet

+ +

¿¹Á¦

+
Run, notepad.exe
+WinWait, Untitled - Notepad
+Sleep, 500
+WinHide ; À§¿¡¼­ ¹ß°ßÇÑ Ã¢À» »ç¿ëÇÕ´Ï´Ù
+Sleep, 1000
+WinShow
+ + + diff --git a/src/docs/commands/WinKill.htm b/src/docs/commands/WinKill.htm new file mode 100644 index 0000000..f436079 --- /dev/null +++ b/src/docs/commands/WinKill.htm @@ -0,0 +1,60 @@ + + + + +WinKill + + + + + + + +

WinKill

+ +

ÁöÁ¤µÈ âÀ» °­Á¦·Î ´Ý½À´Ï´Ù.

+ +
WinKill [, WinTitle, WinText, SecondsToWait, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ´Ù¸¥ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµÈ Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖÀ¸¸é(ON) ŽÁöµË´Ï´Ù.

+ +
SecondsToWait
+
+

»ý·«µÇ°Å³ª ºñ¾î ÀÖÀ¸¸é, ÀüÇô ±â´Ù¸®Áö ¾Ê½À´Ï´Ù. 0À̸é 500ms¸¦ ±â´Ù¸®¸³´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, âÀÌ ´ÝÈ÷±â¸¦ ÁöÁ¤µÈ °³¼öÀÇ ÃÊ µ¿¾È ±â´Ù¸³´Ï´Ù (¼Ò¼öÁ¡À» Çã¿ëÇÏ°í Ç¥Çö½Äµµ °¡´ÉÇÕ´Ï´Ù). âÀÌ ±× ±â°£ ¾È¿¡ ´ÝÈ÷Áö ¾Ê´õ¶óµµ, ½ºÅ©¸³Æ®´Â ½ÇÇàÀ» °è¼ÓÇÕ´Ï´Ù. ErrorLevelÀº ÀÌ ¸í·É¾î·Î ¼³Á¤µÇÁö ¾Ê½À´Ï´Ù. ±×·¡¼­ âÀÌ È®½ÇÇÏ°Ô ´ÝÇû´ÂÁö È®ÀÎÇÒ ÇÊ¿ä°¡ ÀÖ´Ù¸é IfWinExist ¶Ç´Â WinWaitClose¸¦ »ç¿ëÇϽʽÿÀ.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+ÀÌ ¸í·É¾î´Â ¸ÕÀú âÀ» Á¤»óÀûÀ¸·Î ´ÝÀ¸·Á°í °£·«ÇÏ°Ô ½ÃµµÇÕ´Ï´Ù. ½ÇÆÐÇϸé, ±×ÀÇ ÇÁ·Î¼¼½º¸¦ Á¾·áÇÏ¿© ±× âÀ» °­Á¦·Î ´ÝÀ¸·Á°í ½ÃµµÇÕ´Ï´Ù.

+

+ºÎÇÕÇÑ Ã¢ÀÌ È°¼ºÈ­µÇ¾î ÀÖ´Ù¸é, ±× âÀº ±× ¾Æ·¡¿¡ ºÎÇÕÇÑ ´Ù¸¥ ⺸´Ù ¿ì¼±ÀûÀ¸·Î ´ÝÈü´Ï´Ù. ÀϹÝÀûÀ¸·Î, ¿©·¯ âÀÌ ºÎÇÕÇϸé, (°¡Àå ÃÖ±Ù¿¡ »ç¿ëµÈ) ÃÖ»óÀ§ âÀÌ ´ÝÈü´Ï´Ù.

+

+ÀÌ ¸í·É¾î´Â ÃÖ»óÀ§¿¡ ºÎÇÕÇÑ Ã¢¿¡¸¸ ÀÛµ¿ÇÕ´Ï´Ù. ´Ü, WinTitleÀÌ ahk_group GroupNameÀÎ °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù. ÀÌ °æ¿ì, ±×·ì ¾ÈÀÇ ¸ðµç âÀÌ ¿µÇâÀ» ¹Þ½À´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÕ´Ï´Ù. ¼ûÀº ÅؽºÆ®´Â DetectHiddenWindows¸¦ ÄѸé ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+WinClose, WinWaitClose, Process, WinActivate, SetTitleMatchMode, DetectHiddenWindows, Last Found Window, IfWinExist, IfWinActive, WinWaitActive, WinWait, GroupActivate

+ +

¿¹Á¦

+
IfWinExist, Untitled - Notepad
+    WinKill ; À§¿¡¼­ ¹ß°ßÇÑ Ã¢À» »ç¿ëÇÕ´Ï´Ù
+else
+    WinKill, Calculator
+ + + diff --git a/src/docs/commands/WinMaximize.htm b/src/docs/commands/WinMaximize.htm new file mode 100644 index 0000000..291a4d4 --- /dev/null +++ b/src/docs/commands/WinMaximize.htm @@ -0,0 +1,57 @@ + + + + +WinMaximize + + + + + + + +

WinMaximize

+ +

ÁöÁ¤µÈ âÀ» ÃÖ´ë Å©±â·Î È®´ëÇÕ´Ï´Ù.

+ +
WinMaximize [, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ´Ù¸¥ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµÈ Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖÀ¸¸é(ON) ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

âÀ» º¹±¸ÇÏ·Á¸é WinRestore¸¦ »ç¿ëÇÏ°í ÃÖ¼ÒÈ­ÇÏ·Á¸é WinMinimize¸¦ »ç¿ëÇÕ´Ï´Ù.

+

+ƯÁ¤ À¯ÇüÀÇ Ã¢ÀÌ WinMaximize¿¡ Á¦´ë·Î ÀÀ´äÇÏÁö ¾ÊÀ¸¸é, ´ë½Å¿¡ ´ÙÀ½ ¹æ¹ýÀ» »ç¿ëÇØ º¸½Ê½Ã¿À:

+ +
PostMessage, 0x112, 0xF030,,, WinTitle, WinText  ; 0x112 = WM_SYSCOMMAND, 0xF030 = SC_MAXIMIZE
+

+ÀÌ ¸í·É¾î´Â ÃÖ»óÀ§¿¡ ºÎÇÕÇϴ â¿¡¸¸ ÀÛµ¿ÇÕ´Ï´Ù. ´Ü, WinTitleÀÌ ahk_group GroupNameÀÎ °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù. ÀÌ °æ¿ì, ±×·ì ¾ÈÀÇ ¸ðµç âÀÌ ¿µÇâÀ» ¹Þ½À´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº ÅؽºÆ®´Â DetectHiddenWindows°¡ ÄÑÁ® ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

WinRestore, WinMinimize

+ +

Example

+
Run, notepad.exe
+WinWait, Untitled - Notepad
+WinMaximize ; À§¿¡¼­ ¹ß°ßÇÑ Ã¢À» »ç¿ëÇÕ´Ï´Ù
+
+^Up::WinMaximize, A  ; È°¼º âÀ» ÃÖ´ëÈ­ ÇÒ ÇÖÅ°¸¦ ÇÒ´çÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/WinMenuSelectItem.htm b/src/docs/commands/WinMenuSelectItem.htm new file mode 100644 index 0000000..845757e --- /dev/null +++ b/src/docs/commands/WinMenuSelectItem.htm @@ -0,0 +1,83 @@ + + + + +WinMenuSelectItem + + + + + + + +

WinMenuSelectItem

+ +

ÁöÁ¤µÈ âÀÇ ¸Þ´º ¹Ù¿¡ ¸Þ´º Ç׸ñÀ» ¿äûÇÕ´Ï´Ù.

+ +
WinMenuSelectItem, WinTitle, WinText, Menu [, SubMenu1, SubMenu2, SubMenu3, SubMenu4, SubMenu5, SubMenu6, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ´Ù¸¥ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµÈ Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖÀ¸¸é(ON) ŽÁöµË´Ï´Ù.

+ +
Menu
+

ÃÖ»óÀ§ ·¹º§ ¸Þ´ºÀÇ À̸§. ¿¹, File, Edit, View. ¸Þ´º Ç׸ñÀÇ À§Ä¡·Î µÉ ¼ö ÀÖ½À´Ï´Ù. 1&À̸é ù ¸Þ´º¸¦ ³ªÅ¸³»°í 2&ÀÌ¸é µÎ ¹ø° ¸Þ´º¸¦ ³ªÅ¸³À´Ï´Ù µîµî.

+ +
SubMenu1
+

¼±ÅÃÇÒ ¸Þ´º Ç׸ñÀÇ À̸§ ¶Ç´Â ±×ÀÇ À§Ä¡ (À§ ÂüÁ¶).

+ +
SubMenu2
+

SubMenu1 ÀÚü¿¡ ¸Þ´º°¡ Æ÷ÇԵǾî ÀÖÀ¸¸é, ÀÌ°ÍÀÌ ±× ¸Þ´º Ç׸ñÀÇ À̸§ ¶Ç´Â ±×ÀÇ À§Ä¡ÀÔ´Ï´Ù.

+ +
SubMenu3
+

À§¿Í µ¿ÀÏ.

+ +
SubMenu4
+

À§¿Í µ¿ÀÏ.

+ +
SubMenu5
+

À§¿Í µ¿ÀÏ.

+ +
SubMenu6
+

À§¿Í µ¿ÀÏ.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜµË´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜµË´Ï´Ù.

+ +
+ +

ErrorLevel

+ +

[v1.1.04+] ÀÌ ¸í·É¾î´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

ErrorLevelÀº ¹®Á¦°¡ ÀÖÀ¸¸é 1, ¹®Á¦°¡ ¾øÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+ÀÌ ¸í·É¾î°¡ ÀÛµ¿ÇÏ·Á¸é, ¸ñÇ¥ âÀÌ È°¼ºÈ­µÇ¾î ÀÖÁö ¾Ê¾Æ¾ß ÇÕ´Ï´Ù. ±×·¸Áö¸¸ âÀº ÃÖ¼ÒÈ­ »óÅ°¡ ¾Æ´Ï¾î¾ß ÇÕ´Ï´Ù.

+

+ÀÌ ¸í·É¾î´Â ºñ Ç¥ÁØ ¸Þ´º ¹Ù¸¦ »ç¿ëÇÏ´Â ¾îÇðú ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù. ¿¹·Î´Â Microsoft Outlook°ú Outlook Express°¡ Àִµ¥, À̵éÀº ¸Þ´º¹Ù¿¡ À§ÀåÇÑ Åø¹Ù¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ·± °æ¿ì, ControlSend³ª PostMessageÀÇ »ç¿ëÀ» °í·ÁÇϽʽÿÀ. ºÐ¸íÈ÷ ºñ-Ç¥ÁØ ¸Þ´º¹Ù¸¦ °¡Áø ¾îÇðú »óÈ£ÀÛ¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.

+

+¸Þ´º À̸§ ¸Å°³º¯¼ö´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê½À´Ï´Ù (Áï, File->Save´Â file->save¿Í µ¿ÀÏÇÕ´Ï´Ù). ±×¸®°í ¾ÚÆÛ¼¾µå (&)¸¦ »ç¿ëÇØ ¸Þ´º Ç׸ñ ù ¹®ÀÚ¿¡ ¹ØÁÙÀ» ±×¾î Ç¥½ÃÇÏ´Â ÀÏÀº ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù (Áï, &FileÀº File°ú µ¿ÀÏÇÕ´Ï´Ù).

+

+¸Þ´º À̸§ ¸Å°³º¯¼ö´Â ¶ÇÇÑ À§Ä¡¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ ¹æ¹ýÀº (¾Æ¸¶µµ ½ÇÁ¦ ÅؽºÆ®º¸´Ù ±×¸²ÀÌ Æ÷ÇԵǾî Àֱ⠶§¹®¿¡) ÅؽºÆ®°¡ ¾ø´Â ¸Þ´º¸¦ Áö¿øÇϱâ À§ÇØ Á¸ÀçÇÕ´Ï´Ù. À§Ä¡ 1&Àº ù ¸Þ´º Ç׸ñÀÌ°í (¿¹, ù File ¸Þ´º), À§Ä¡ 2&´Â µÎ ¹ø° ¸Þ´º Ç׸ñÀÔ´Ï´Ù (¿¹, Edit ¸Þ´º) µîµî. ¸Þ´º °¡¸§ ÁÙÀº ¸Þ´º Ç׸ñÀ¸ À§Ä¡¸¦ °áÁ¤Çϱâ À§ÇÑ ¸ñÀûÀ¸·Î ¸Þ´º Ç׸ñ °³¼ö¿¡ Æ÷ÇԵ˴ϴÙ.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº ÅؽºÆ®´Â DetectHiddenWindows°¡ ÄÑÁ® ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

ControlSend, PostMessage

+

¿¹Á¦

+
; ³ëÆ®Æе忡¼­ File->OpenÀÌ ¼±Åõ˴ϴÙ:
+WinMenuSelectItem, Untitled - Notepad, , File, Open
+
+; À§¿Í µ¿µîÇÏÁö¸¸ À̸§ÀÌ ¾Æ´Ï¶ó À§Ä¡·Î ¼±Åõ˴ϴÙ:
+WinMenuSelectItem, Untitled - Notepad, , 1&, 2&
+ + + diff --git a/src/docs/commands/WinMinimize.htm b/src/docs/commands/WinMinimize.htm new file mode 100644 index 0000000..aa8c67d --- /dev/null +++ b/src/docs/commands/WinMinimize.htm @@ -0,0 +1,55 @@ + + + + +WinMinimize + + + + + + + +

WinMinimize

+ +

ÁöÁ¤µÈ âÀ» ŽºÅ© ¹Ù¿¡ ¹öÆ°À¸·Î Ãà¼ÒÇÕ´Ï´Ù.

+ +
WinMinimize [, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ´Ù¸¥ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµÈ Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenTextÀÌ ÄÑÁ® ÀÖÀ¸¸é(ON) ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

âÀ» º¹±¸ÇÏ·Á¸é WinRestore³ª WinMaximize¸¦ »ç¿ëÇϽʽÿÀ.

+

+ƯÁ¤ À¯ÇüÀÇ Ã¢ÀÌ WinMinimize¿¡ ¿Ã¹Ù¸£°Ô ÀÀ´äÇÏÁö ¾ÊÀ¸¸é, ´ë½Å ´ÙÀ½ ¹æ¹ýÀ» ½ÃµµÇϽʽÿÀ:

+
PostMessage, 0x112, 0xF020,,, WinTitle, WinText ; 0x112 = WM_SYSCOMMAND, 0xF020 = SC_MINIMIZE
+

+ÀÌ ¸í·É¾î´Â ÃÖ»óÀ§¿¡ ºÎÇÕÇϴ â¿¡¸¸ ÀÛµ¿ÇÕ´Ï´Ù. ´Ü, WinTitleÀÌ ahk_group GroupNameÀÎ °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù. ÀÌ °æ¿ì´Â ±×·ì ¾ÈÀÇ ¸ðµç âÀÌ ¿µÇâÀ» ¹Þ½À´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº ÅؽºÆ° DetectHiddenWindows°¡ ÄÑÁ® ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

WinRestore, WinMaximize, WinMinimizeAll

+

¿¹Á¦

+
Run, notepad.exe
+WinWait, Untitled - Notepad
+WinMinimize ; À§¿¡¼­ ¹ß°ßÇÑ Ã¢À» »ç¿ëÇÕ´Ï´Ù
+
+^Down::WinMinimize, A  ; È°¼º âÀ» ÃÖ¼ÒÈ­ ÇÒ ÇÖÅ°¸¦ ÇÒ´çÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/WinMinimizeAll.htm b/src/docs/commands/WinMinimizeAll.htm new file mode 100644 index 0000000..e46341c --- /dev/null +++ b/src/docs/commands/WinMinimizeAll.htm @@ -0,0 +1,30 @@ + + + + +WinMinimizeAll / WinMinimizeAllUndo + + + + + + + +

WinMinimizeAll / WinMinimizeAllUndo

+ +

¸ðµç âÀ» ÃÖ¼ÒÈ­Çϰųª ȯ¿øÇÕ´Ï´Ù.

+ +
WinMinimizeAll
+WinMinimizeAllUndo
+

+´ëºÎºÐÀÇ ½Ã½ºÅÛ¿¡¼­, ÀÌ°ÍÀº ÀͽºÇ÷η¯ÀÇ Win-M ÇÖÅ° ±×¸®°í Win-D ÇÖÅ°¿Í µ¿µîÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

WinMinimize, GroupAdd

+ +

¿¹Á¦

+
WinMinimizeAll
+WinMinimizeAllUndo
+ + + diff --git a/src/docs/commands/WinMove.htm b/src/docs/commands/WinMove.htm new file mode 100644 index 0000000..41258dd --- /dev/null +++ b/src/docs/commands/WinMove.htm @@ -0,0 +1,78 @@ + + + + +WinMove + + + + + + + +

WinMove

+ +

ÁöÁ¤µÈ âÀÇ À§Ä¡¿Í Å©±â¸¦ º¯°æÇÕ´Ï´Ù.

+ +
WinMove, X, Y
+WinMove, WinTitle, WinText, X, Y [, Width, Height, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
X, Y
+

¸ñǥâÀÇ »õ À§Ä¡ÀÇ Á»ó ¸ð¼­¸® X¿Í Y ÁÂÇ¥ (Çȼ¿ ´ÜÀ§). ÀÌ °ªÀº Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù. È­¸éÀÇ Á»ó Çȼ¿ ÁÂÇ¥´Â 0, 0ÀÔ´Ï´Ù.

+

+ ÀÌ ¸Å°³º¯¼ö¸¸ ÁÖ¾îÁ³´Ù¸é, ¸¶Áö¸· ¹ß°ß âÀÌ ¸ñÇ¥ âÀ¸·Î »ç¿ëµË´Ï´Ù.

+

±×·¸Áö ¾ÊÀ¸¸é, X¿Í Y¸¦ »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì ÇöÀç À§Ä¡°¡ »ç¿ëµË´Ï´Ù.

+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ´Ù¸¥ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµÈ Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ®(ON) ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +
Width, Height
+

âÀÇ »õ ³Êºñ¿Í ³ôÀÌ (Çȼ¿ ´ÜÀ§), ÀÌ °ªÀº Ç¥Çö½ÄÀÏ ¼öÀÖ½À´Ï´Ù. Çϳª¶óµµ »ý·«µÇ°Å³ª ºñ¾î Àְųª ´Ü¾î DEFAULTÀ̸é, ÇØ´ç Â÷¿øÀÇ Å©±â´Â ¹Ù²îÁö ¾Ê½À´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ µé¾î Àִ âÀº Á¦¿ÜµË´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ µé¾î Àִ âÀº Á¦¿ÜµË´Ï´Ù.

+ +
+ +

³íÆò

+

+Width¿Í Height°¡ ³Ê¹« ÀÛ´Ù¸é (¶Ç´Â À½¼ö¶ó¸é), Á¦¸ñ ¹Ù°¡ ÀÖ´Â ´ëºÎºÐÀÇ Ã¢Àº ÀϹÝÀûÀ¸·Î 112 x 27 Çȼ¿º¸´Ù ´õ ÀÛ¾ÆÁöÁö ¾Ê½À´Ï´Ù (±×·¸Áö¸¸, ¾î¶² À¯ÇüÀÇ Ã¢Àº µû·Î ÃÖ¼Ò Å©±â¸¦ °¡Áú ¼ö ÀÖ½À´Ï´Ù). Width¿Í Height°¡ ³Ê¹« Å©¸é, ´ëºÎºÐÀÇ Ã¢Àº ¹ÙÅÁÈ­¸é Å©±âÀÇ ´ë·« 12 Çȼ¿À» ³Ñ¾î°¡Áö ¾Ê½À´Ï´Ù.

+

+x¿Í yÁÂÇ¥¿¡ À½¼ö °ªÀº Çã¿ëµË´Ï´Ù. ´ÙÁß-¸ð´ÏÅÍ ½Ã½ºÅÛÀ» Áö¿øÇÏ°í âÀ» ¿ÏÀüÈ÷ È­¸éÀ¸·ÎºÎÅÍ ¸Ö¸® À̵¿½Ãų ¼ö ÀÖ½À´Ï´Ù.

+

+WinMove´Â ÃÖ¼ÒÈ­µÈ âÀ» À̵¿ÇÒ ¼ö ¾øÁö¸¸, ¼ûÀº âÀº À̵¿½Ãų ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð DetectHiddenWindows°¡ ÄÑÁ® ÀÖ¾î¾ß ÇÕ´Ï´Ù.

+

+WinMoveÀÇ ¼Óµµ´Â SetWinDelay¿¡ ¿µÇâÀ» ¹Þ½À´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindowsÀÌ ÄÑÁ® ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

ControlMove, WinGetPos, WinHide, WinMinimize, WinMaximize, WinSet

+ +

¿¹Á¦

+
Run, calc.exe
+WinWait, Calculator
+WinMove, 0, 0 ; WinWait°¡ ¹ß°ßÇÑ Ã¢À» È­¸éÀÇ Á»ó ¸ð¼­¸®·Î À̵¿½Ãŵ´Ï´Ù.
+
+SplashTextOn, 400, 300, Clipboard, Ŭ¸³º¸µåÀÇ ³»¿ë:`n%clipboard%
+WinMove, Clipboard, , 0, 0 ; ½ºÇ÷¹½Ã âÀ» Á»ó ¸ð¼­¸®·Î À̵¿½Ãŵ´Ï´Ù.
+Msgbox, SplashText¸¦ ³¡³»·Á¸é OK¸¦ ´©¸£½Ê½Ã¿À
+SplashTextOff
+
+; ´ÙÀ½ ÇÔ¼ö´Â ÁöÁ¤µÈ âÀ» È­¸é °¡¿îµ¥¿¡ ¹èÄ¡ÇÕ´Ï´Ù:
+CenterWindow(WinTitle)
+{
+    WinGetPos,,, Width, Height, %WinTitle%
+    WinMove, %WinTitle%,, (A_ScreenWidth/2)-(Width/2), (A_ScreenHeight/2)-(Height/2)
+}
+ + + diff --git a/src/docs/commands/WinRestore.htm b/src/docs/commands/WinRestore.htm new file mode 100644 index 0000000..b530db2 --- /dev/null +++ b/src/docs/commands/WinRestore.htm @@ -0,0 +1,52 @@ + + + + +WinRestore + + + + + + + +

WinRestore

+ +

ÁöÁ¤µÈ âÀÌ ÃÖ¼Ò ¶Ç´Â ÃÖ´ë »óÅ¿¡ ÀÖÀ¸¸é ¿ø·¡´ë·Î º¹±¸ÇÕ´Ï´Ù.

+ +
WinRestore [, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°ÇÏ´Â Á¦¸ñ ⠶Ǵ ´Ù¸¥ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

+ Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµÈ Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenTextÀÌ ÄÑÁ® ÀÖÀ¸¸é(ON) ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Æ÷ÇԵǾî Àִ âÀº Á¦¿ÜµË´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Æ÷ÇԵǾî Àִ âÀº Á¦¿ÜµË´Ï´Ù.

+ +
+ +

³íÆò

+

ƯÁ¤ À¯ÇüÀÇ Ã¢ÀÌ ¿Ã¹Ù¸£°Ô WinRestore¿¡ ÀÀ´äÇÏÁö ¾ÊÀ¸¸é, ´ë½Å ´ÙÀ½À» ½ÃµµÇØ º¸½Ê½Ã¿À:

+ +
PostMessage, 0x112, 0xF120,,, WinTitle, WinText  ; 0x112 = WM_SYSCOMMAND, 0xF120 = SC_RESTORE
+

+ÀÌ ¸í·É¾î´Â ÃÖ»óÀ§ âÀÌ ºÎÇÕÇÒ °æ¿ì¿¡¸¸ ÀÛµ¿ÇÕ´Ï´Ù. WinTitleÀÌ ahk_group GroupNameÀÎ °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù. ÀÌ °æ¿ì ±×·ì ¾ÈÀÇ ¸ðµç âÀÌ ¿µÇâÀ» ¹Þ½À´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº ÅؽºÆ®´Â DetectHiddenWindowsÀÌ ÄÑÁ® ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

WinMinimize, WinMaximize

+ +

¿¹Á¦

+
WinRestore, Untitled - Notepad
+ + + diff --git a/src/docs/commands/WinSet.htm b/src/docs/commands/WinSet.htm new file mode 100644 index 0000000..870e50a --- /dev/null +++ b/src/docs/commands/WinSet.htm @@ -0,0 +1,184 @@ + + + + +WinSet + + + + + + + +

WinSet

+ +

ÁöÁ¤µÈ âÀ» ´Ù¾çÇÏ°Ô º¯°æÇÕ´Ï´Ù. ¿¹¸¦ µé¾î "Ç×»ó À§¿¡" ±×¸®°í Åõ¸íµµ.

+ +
WinSet, Attribute, Value [, WinTitle, WinText,  ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
Attribute, Value
+

¾Æ·¡ ¸®½ºÆ®¸¦ ÂüÁ¶ÇÕ´Ï´Ù.

+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ´Ù¸¥ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

+ Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµÈ Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖÀ¸¸é(ON) ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ µé¾î ÀÖÀ¸¸é Á¦¿ÜµË´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ µé¾î ÀÖÀ¸¸é Á¦¿ÜµË´Ï´Ù.

+ +
+ +

Attribute, Value

+

AlwaysOnTop, [On|Off|Toggle]: + +âÀ» ´Ù¸¥ ¸ðµç ⺸´Ù À§¿¡ ÀÖµµ·Ï ¸¸µì´Ï´Ù. ONÀ¸·Î ÄÑ°í OFF·Î ²ü´Ï´Ù. ¶Ç´Â TOGGLEÀ» »ç¿ëÇÏ¸é ¹Ý´ë »óÅ·ΠÇöÀç »óŸ¦ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. »ý·«Çϸé, ±âº»°ªÀº TOGGLEÀÔ´Ï´Ù. ´Ü¾î Topmost¸¦ AlwaysOnTop ´ë½Å »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Bottom: âÀ» ½ºÅà ÇÏ´ÜÀ¸·Î º¸³À´Ï´Ù; Áï, ¸ðµç âÀÇ ¾Æ·¡·Î º¸³À´Ï´Ù. Alt-Escape¸¦ ´©¸¥ °Í°ú È¿°ú°¡ ºñ½ÁÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: WinSet, Bottom,, WinTitle.

+

+Top: âÀ» ¸í½ÃÀûÀ¸·Î È°¼ºÈ­ÇÏÁö ¾Ê°í ½ºÅà »ó´ÜÀ¸·Î ¿Ã¸³´Ï´Ù. ±×·¸Áö¸¸, ½Ã½ºÅÛÀÇ ±âº» ¼³Á¤ ¶§¹®¿¡ ¾Æ¸¶µµ ´ëºÎºÐÀÇ °æ¿ì È°¼ºÈ­µÉ °ÍÀÔ´Ï´Ù. °Ô´Ù°¡, ÀÌ ¸í·É¾î´Â ¿î¿µ üÁ¦ÀÇ º¸È£ ¶§¹®¿¡ ¾Æ¹« È¿°ú°¡ ¾øÀ» ¼ö ÀÖ½À´Ï´Ù. ¿î¿µÃ¼Á¦´Â ÃÊÁ¡À» ÈÉÄ¡·Á°í ½ÃµµÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀ¸·ÎºÎÅÍ »ç¿ëÀÚ¸¦ º¸È£ÇÕ´Ï´Ù ( ¾î¶² À¯ÇüÀÌ Ã¢ÀÌ ÇöÀç È°¼ºÈ­µÇ¾î Àִ°¡ ±×¸®°í »ç¿ëÀÚ°¡ ¾î¶² ÀÏÀ» Çϴ°¡¿Í °°Àº ¿©·¯ ¿äÀο¡ µû¶ó ´Þ¶óÁú ¼ö ÀÖ½À´Ï´Ù). ÇÑ °¡Áö °¡´ÉÇÑ ¿ìȸåÀº âÀ» Àá½Ã AlwaysOnTopÀ¸·Î ¸¸µç ´ÙÀ½, AlwaysOnTopÀ» ²ô´Â °ÍÀÔ´Ï´Ù.

+

+Disable ¶Ç´Â Enable: âÀ» ÄѰųª ²ü´Ï´Ù. âÀÌ ²¨Áö¸é »ç¿ëÀÚ´Â ±×ÀÇ ÄÜÆ®·Ñ°ú »óÈ£ÀÛ¿ëÀ» ÇÒ ¼ö ¾ø°í âµµ À̵¿ÇÒ ¼ö ¾ø½À´Ï´Ù. °Ô´Ù°¡, ²¨Áø âÀº ¾ËÆ®-ÅÇ ¸®½ºÆ®¿¡¼­µµ ºüÁý´Ï´Ù.

+

Redraw: âÀÇ °Ñ¸ð½À/³»¿ëÀ» °»½ÅÇÏ·Á°í ½ÃµµÇÕ´Ï´Ù. OS¿¡°Ô âÀÌ »ç°¢ ±¸¿ªÀ» ´Ù½Ã ±×¸± ÇÊ¿ä°¡ ÀÖ´Ù°í ¾Ë·ÁÁÝ´Ï´Ù. ÀÌ ¹æ¹ýÀÌ Æ¯Á¤ÇÑ Ã¢¿¡ ÀÛµ¿ÇÏÁö ¾ÊÀ¸¸é, WinMove¸¦ ½ÃµµÇØ º¸½Ê½Ã¿À. ±× ¸¶Àúµµ ÀÛµ¿ÇÏÁö ¾ÊÀ¸¸é, ´ÙÀ½À» ½ÃµµÇØ º¸½Ê½Ã¿À:

+
WinHide, WinTitle
+WinShow, WinTitle
+

+Style, N ¶Ç´Â ExStyle, N: âÀÇ ½ºÅ¸ÀÏ ¶Ç´Â È®Àå ½ºÅ¸ÀÏÀ» º¯°æÇÕ´Ï´Ù. NÀÇ Ã¹ ¹®ÀÚ°¡ Ç÷¯½º ¶Ç´Â ¸¶À̳ʽº »çÀÎÀ̸é, N¿¡¼­ ½ºÅ¸ÀÏÀÌ Á¦°ÅµÇ°Å³ª Ãß°¡µË´Ï´Ù. ù ¹®ÀÚ°¡ ij·µ (^)À̸é, N¿¡¼­ ½ºÅ¸ÀÏÀº °¢°¢ ¹Ý´ë »óÅ·ΠÅä±ÛµË´Ï´Ù. ù ¹®ÀÚ°¡ ¼ýÀÚÀ̸é, âÀÇ ½ºÅ¸ÀÏÀº ¿ÏÀüÈ÷ µ¤¾î¾º¿©Áý´Ï´Ù; Áï, NÀÌ µË´Ï´Ù.

+

+ErrorLevelÀº ½ÇÆнà 1 ±×¸®°í ¼º°ø½Ã 0ÀÌ ¼³Á¤µË´Ï´Ù. ¸ñÇ¥ âÀÌ ¹ß°ßµÇÁö ¾ÊÀ¸¸é ¶Ç´Â ½ºÅ¸ÀÏ Àû¿ëÀ» Çã¿ëÇÏÁö ¾ÊÀ¸¸é ½ÇÆа¡ ÀϾ´Ï´Ù.

+

+¾î¶² ½ºÅ¸ÀÏÀ» º¸À̴ â¿¡ Àû¿ëÇÏ°í ³ª¸é, ±× âÀ» ´Ù½Ã ±×¸± ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. WinSet Redraw¸¦ »ç¿ëÇÕ´Ï´Ù (¾Æ·¡ ÂüÁ¶). ¸¶Áö¸·À¸·Î, ½ºÅ¸ÀÏ Å×ÀÌºí¿¡ ÈçÈ÷ »ç¿ëµÇ´Â ½ºÅ¸ÀÏ ¹øÈ£°¡ ³ª¿­µÇ¾î ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
WinSet, Style, -0xC00000, A  ; È°¼º âÀÇ Á¦¸ñ ¹Ù¸¦ Á¦°ÅÇÕ´Ï´Ù (WS_CAPTION).
+WinSet, ExStyle, ^0x80, WinTitle  ; WS_EX_TOOLWINDOW ¼Ó¼ºÀ» Åä±ÛÇÕ´Ï´Ù. ¾ËÆ®-ÅÇ ¸®½ºÆ®·ÎºÎÅÍ Ã¢ÀÌ Á¦°ÅµÇ°Å³ª/Ãß°¡µË´Ï´Ù.
+ +

WinSet, Region [, Options, WinTitle, ...]

+

+âÀÇ ¸ð½ÀÀ» ÁöÁ¤ÇÑ »ç°¢Çü, Ÿ¿ø ¶Ç´Â ´Ù°¢ÇüÀ¸·Î º¯°æÇÕ´Ï´Ù. Options ¸Å°³º¯¼ö°¡ ºñ¾î ÀÖÀ¸¸é, ±× âÀº ¿ø·¡ÀÇ/±âº» µð½ºÇ÷¹ÀÌ ±¸¿ªÀ¸·Î º¹±¸µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ´ÙÀ½ ¿É¼Ç Áß Çϳª ÀÌ»óÀ» Á¶ÇÕÇØ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. °¢ ¿É¼ÇÀº ´ÙÀ½ ¿É¼Ç°ú ½ºÆäÀ̽º(µé)·Î ±¸ºÐÇÕ´Ï´Ù:

+

+Wn: »ç°¢ÇüÀ̳ª Ÿ¿øÀÇ ³Êºñ. ¿¹¸¦ µé¾î: w200.
+Hn: »ç°¢ÇüÀ̳ª Ÿ¿øÀÇ ³ôÀÌ. ¿¹¸¦ µé¾î: h300.
+X-Y: °¢°¢ X/Y ÁÂÇ¥½ÖÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, 200-0´Â 200À» X ÁÂÇ¥¿¡ ±×¸®°í 0À» Y ÁÂÇ¥¿¡ »ç¿ëÇÕ´Ï´Ù.
+E: »ç°¢ÇüÀÌ ¾Æ´Ï¶ó Ÿ¿øÀ¸·Î ¸¸µì´Ï´Ù. ÀÌ ¿É¼ÇÀº ¿Í H ¿É¼ÇÀÌ Á¸ÀçÇÒ °æ¿ì¿¡¸¸ À¯È¿ÇÕ´Ï´Ù.
+R[w-h]: µÕ±Ù ¸ð¼­¸®¸¦ °¡Áø »ç°¢ÇüÀ» ¸¸µì´Ï´Ù. ¿¹¸¦ µé¾îR30-30Àº °¢ ¸ð¼­¸®¿¡ 30x30 Ÿ¿øÀ» »ç¿ëÇÕ´Ï´Ù. w-h¸¦ »ý·«Çϸé, 30-30ÀÌ »ç¿ëµË´Ï´Ù. RÀº W¿Í H ¿É¼ÇÀÌ Á¸ÀçÇÒ °æ¿ì¿¡¸¸ À¯È¿ÇÕ´Ï´Ù.

+

+»ç°¢Çü ¶Ç´Â Ÿ¿ø: W¿Í H ¿É¼ÇÀÌ Á¸ÀçÇϸé, »õ·Î¿î µð½ºÇ÷¹ÀÌ ±¸¿ªÀÌ »ç°¢ÇüÀÌ µË´Ï´Ù. ÀÌ »ç°¢ÇüÀÇ Á»ó ¸ð¼­¸®´Â X-Y ÁÂÇ¥ÀÇ (À¯ÀÏÇÑ) ù ¹ø° ½ÖÀ¸·Î °áÁ¤µË´Ï´Ù. ±×·¸Áö¸¸, E ¿É¼Çµµ Á¸ÀçÇϸé, ±× µð½ºÇ÷¹ÀÌ ±¸¿ªÀº »ç°¢ÇüÀÌ ¾Æ´Ï¶ó Ÿ¿øÀÌ µË´Ï´Ù. ¿¹¸¦ µé¾î: WinSet, Region, 50-0 W200 H250 E, WinTitle.

+

+´Ù°¢Çü: W¿Í H ¿É¼ÇÀÌ ¾øÀ¸¸é, »õ µð½ºÇ÷¹ÀÌ ±¸¿ªÀº ´Ù°¢ÇüÀÌ µË´Ï´Ù. ¿©·¯ ½ÖÀÇ X-Y ÁÂÇ¥¿¡ ÀÇÇØ °áÁ¤µË´Ï´Ù (°¢ ÁÂÇ¥ ½ÖÀº â ¾ÈÀÇ Á»ó ¸ð¼­¸®·ÎºÎÅÍ »ó´ëÀûÀÎ Á¡ÀÔ´Ï´Ù.). ¿¹¸¦ µé¾î, ¼¼ ½ÖÀÇ ÁÂÇ¥°¡ ÁöÁ¤µÇ¸é, ±× »õ µð½ºÇ÷¹ÀÌ ±¸¿ªÀº ´ëºÎºÐÀÇ °æ¿ì ¼¼¸ð°¡ µË´Ï´Ù. ÁÂÇ¥ ½ÖÀÇ ¼ø¼­´Â ¼­·Î¿Í °ü·ÃÇÏ¿© Á¾Á¾ Áß¿äÇÑ °æ¿ì°¡ ÀÖ½À´Ï´Ù. °Ô´Ù°¡, ´Ü¾î Wind°¡ Options ¾È¿¡ Á¸ÀçÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì ´Ù°¢ÇüÀÇ ¹üÀ§¸¦ °áÁ¤Çϱâ À§ÇØ alternating ¹æ¹ý ´ë½Å¿¡ winding ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù.

+

+ErrorLevelÀº ½ÇÆнà 1, ¼º°ø½Ã 0ÀÌ ¼³Á¤µË´Ï´Ù. ½ÇÆа¡ ÀϾ´Â °æ¿ì´Â: +

    +
  1. ¸ñÇ¥ âÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù; +
  2. Çϳª ÀÌ»óÀÇ Options ¿É¼ÇÀÌ ¹«È¿ÇÏ´Ù; +
  3. 2000 ½ÖÀÌ ³Ñ°Ô ÁÂÇ¥¸¦ ÁöÁ¤Çß´Ù; +
  4. ÁöÁ¤µÈ ¹üÀ§°¡ ¹«È¿Çϰųª ¸ñÇ¥ â¿¡ Àû¿ëÇÒ ¼ö ¾ø´Ù. +
+

+

+ÀÌ ÆäÀÌÁöÀÇ ¾Æ·¡¿¡¼­ ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ´Â ¹æ¹ý¿¡ °üÇÑ ¿¹Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

WinSet, Transparent, N, WinTitle

+

+âÀ» ¹Ý-Åõ¸íÇÏ°Ô ¸¸µì´Ï´Ù. N¿¡ 0ºÎÅÍ 255 »çÀÌÀÇ ¼ýÀÚ¸¦ ÁöÁ¤Çϸé Åõ¸íµµ¸¦ Á¶ÀýÇÒ ¼ö ÀÖ½À´Ï´Ù: 0À̸é âÀÌ º¸ÀÌÁö ¾Ê°í 255ÀÌ¸é ¿ÏÀü ºÒÅõ¸íÇÏ°Ô µË´Ï´Ù. Åõ¸íµµ´Â ¿ÏÀüÈ÷ ²ø ¼ö ÀÖ½À´Ï´Ù. â¿¡ ´Ü¾î OFF¸¦ ÁöÁ¤ÇÏ¸é µË´Ï´Ù. ÀÌ°ÍÀº 255¸¦ ÁöÁ¤ÇÏ´Â °Í°ú´Â ´Ù¸¨´Ï´Ù. ¿Ö³ÄÇÏ¸é ¼öÇ༺´ÉÀ» Çâ»ó½ÃÅ°°í ½Ã½ºÅÛ ÀÚ¿øÀ» Àý¾àÇϱ⠶§¹®ÀÔ´Ï´Ù.

+

Transparent ±×¸®°í TransColor¿¡ ´ëÇÏ¿© ¾Ë·ÁÁø ÇÑ°è:

+
    +
  • ĸ¼Ç(ŸÀÌƲ¹Ù)°¡ ¾ø°í always-on-top Ư¼ºÀÌ ¾ø´Â â¿¡´Â È¿°ú°¡ ¾ø½À´Ï´Ù. GUI â¿¡ ´ëÇÏ¿©, ÀÌ ¹®Á¦´Â âÀ» Åõ¸íÇÏ°Ô ¸¸µç ´ÙÀ½¿¡ ĸ¼ÇÀ» Á¦°ÅÇϸé ÇØ°áÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ë¾ÈÀ¸·Î, ´ÙÀ½ Ư¼ºµéÀº Åõ¸í È¿°ú¸¦ Çã¿ëÇÕ´Ï´Ù: Gui -Caption +ToolWindow.
  • +
  • "Transparent"¸¦ ²ô±â Àü¿¡ 255·Î ¼³Á¤Çϸé âÀÌ ´Ù½Ã ±×·ÁÁ® °ËÁ¤»ö ¹è°æÈ­¸éÀÌ º¸¿©Áö´Â ¹®Á¦¸¦ ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù. âÀÌ ¿©ÀüÈ÷ ¿Ã¹Ù¸£°Ô ´Ù½Ã ±×·ÁÁö´Â µ¥ ½ÇÆÐÇϸé, °¡´ÉÇÑ ¿ìȸåÀº Redraw¸¦ ÂüÁ¶ÇϽʽÿÀ.
  • +
  • â¿¡¼­ ±âÁ¸ÀÇ TransColor¸¦ º¯°æÇÏ·Á¸é, º¯°æÇϱâ Àü¿¡ ¸ÕÀú Åõ¸íÈ¿°ú¸¦ ²ø ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.
  • +
+

ÆÁ: ŽºÅ© ¹Ù¸¦ Åõ¸íÇÏ°Ô ¸¸µé·Á¸é WinSet, Transparent, 150, ahk_class Shell_TrayWndÀ» »ç¿ëÇϽʽÿÀ. ºñ½ÁÇÏ°Ô, ½ÃÀÛ ¸Þ´º¸¦ Åõ¸íÇÏ°Ô ¸¸µé·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:

+ +
DetectHiddenWindows, on
+WinSet, Transparent, 150, ahk_class BaseBar  ; ½ÃÀÛ ¸Þ´ºÀÇ ºÎ¸Þ´ºµµ Åõ¸íÇÏ°Ô ¸¸µé·Á¸é, ¾Æ·¡ÀÇ ½ºÅ©¸³Æ®µµ Æ÷ÇÔÇϽʽÿÀ.
+

+Àüü ½Ã½ºÅÛ¿¡¼­ ¼±ÅÃµÈ ¸ðµç ¸Þ´º¸¦ Åõ¸íÇÏ°Ô ÇÏ·Á¸é, ´ÙÀ½°ú °°Àº ½ºÅ©¸³Æ®¸¦ Ç×»ó ½ÇÇàµÇµµ·Ï À¯ÁöÇÕ´Ï´Ù. ÀÌ·± ½ºÅ©¸³Æ®´Â ÀÚ½ÅÀÇ ¸Þ´º´Â Åõ¸íÇÏ°Ô ¸¸µéÁö ¸øÇÏÁö¸¸ ´Ù¸¥ ½ºÅ©¸³Æ®ÀÇ ¸Þ´º´Â Åõ¸íÇÏ°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù:

+ +
#Persistent
+SetTimer, WatchForMenu, 5
+return  ; ÀÚµ¿ ½ÇÇà ¼½¼ÇÀÇ ³¡ÀÔ´Ï´Ù.
+
+WatchForMenu:
+DetectHiddenWindows, on  ; ¸Þ´ºÀÇ Å½Áö¸¦ °ð Çã¿ëÇÕ´Ï´Ù.
+IfWinExist, ahk_class #32768
+    WinSet, Transparent, 150  ; À­ ÁÙ¿¡¼­ ¹ß°ßµÈ âÀ» »ç¿ëÇÕ´Ï´Ù.
+return
+

WinSet, TransColor, Color [N], WinTitle

+

¼±ÅÃµÈ »ö±òÀÇ ¸ðµç Çȼ¿À» ¸ñÇ¥ â¿¡¼­ º¸ÀÌÁö ¾Ê°Ô ¸¸µì´Ï´Ù. ±×·¯¸é âÀÇ ³»¿ë µÚ¸¦ Åë°úÇØ º¼¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ°¡ º¸ÀÌÁö ¾Ê´Â Çȼ¿À» Ŭ¸¯Çϸé, ±× Ŭ¸¯Àº â µÚ·Î "¶Õ°í Àü´ÞµË´Ï´Ù". Color¿¡´Â Ä÷¯ À̸§ ¶Ç´Â RGB °ªÀ» ÁöÁ¤ÇÕ´Ï´Ù (»ö»ó Â÷Æ®¸¦ Âü°íÇϽðųª ¾Æ´Ï¸é RGB ¸ðµå·Î PixelGetColor¸¦ »ç¿ëÇϽʽÿÀ). â¿¡¼­ º¸ÀÌ´Â ºÎºÐÀ» ºÎºÐÀûÀ¸·Î Åõ¸íÇÏ°Ô ¸¸µé·Á¸é, ½ºÆäÀ̽º (½°Ç¥ ¾ÈµÊ) ´ÙÀ½¿¡ Åõ¸íµµ (0-255)¸¦ ÁöÁ¤ÇÏ¸é µË´Ï´Ù. ¿¹¸¦ µé¾î: WinSet, TransColor, EEAA99 150, WinTitle.

+

+TransColor´Â Á¾Á¾ È­¸é-À§-±×¸² ±×¸®°í ±âŸ ½Ã°¢ È¿°ú¸¦ ¾ò±â À§ÇØ »ç¿ëµË´Ï´Ù. È­¸é-À§-±×¸² ¿¹Á¦´Â Gui ÆäÀÌÁöÀÇ ÇÏ´Ü¿¡ º¸¿©ÁÝ´Ï´Ù.

+

+´Ü¾î OFF¸¦ ÁöÁ¤Çϸé â¿¡ ¿ÏÀüÈ÷ Åõ¸í È¿°ú¸¦ ²ø ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ µÎ ÄÚµå´Â ¸ðµÎ ±â´É»ó µ¿µîÇÕ´Ï´Ù:

+ +
WinSet, Transparent, Off, WinTitle
+WinSet, TransColor, Off, WinTitle
+ +

¾Ë·ÁÁø ÇÑ°è: À§ÀÇ ¸®½ºÆ®¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

³íÆò

+

ErrorLevelÀº À§¿¡ Á¦½ÃµÈ °æ¿ì¸¦ Á¦¿ÜÇÏ°í ÀÌ ¸í·É¾î·Î ¹Ù²îÁö ¾Ê½À´Ï´Ù.

+

+Åõ¸í È¿°ú´Â Windows 2000/XP ÀÌ»óÀ̸é Áö¿øÇÏÁö¸¸, âÀÇ ÇöÀç Åõ¸íµµ ¼³Á¤À» ¿­¶÷ÇÏ´Â °ÍÀº (WinGetÀ» ÅëÇÏ¿©) Windows XP À̻󿡼­¸¸ °¡´ÉÇÕ´Ï´Ù.

+

+½ºÅ©¸³Æ®ÀÇ SplashText âÀº ´ÙÀ½À» ÅëÇÏ¿© ºñ-AlwaysOnTopÀ¸·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù:

+ +
WinSet, AlwaysOnTop, Off, My Splash Window Title
+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindowsÀÌ ÄÑÁ® ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

WinGet, WinHide, WinSetTitle, WinMove, WinActivate, Control

+ +

¿¹Á¦

+
WinSet, Transparent, 200, Untitled - Notepad ; âÀ» ¾à°£ Åõ¸íÇÏ°Ô ¸¸µì´Ï´Ù.
+WinSet, TransColor, White, Untitled - Notepad ; ¸ðµç ÇϾá Çȼ¿À» º¸ÁöÀÌ ¾Ê°Ô ¸¸µì´Ï´Ù.
+WinSet, AlwaysOnTop, toggle, Calculator ; °è»ê±âÀÇ always-on-top »óŸ¦ Åä±ÛÇÕ´Ï´Ù.
+
+; ´õ ±ä ¿¹Á¦:
+; ´ÙÀ½Àº "Transparent"¿Í "TransColor"ÀÇ È¿°ú¸¦ º¸¿©ÁÖ´Â ÇÖÅ°µéÀÔ´Ï´Ù. 
+;  ÁÖÀÇ: ÇÖ Å°Áß Çϳª¸¦ ´­·¶´Âµ¥ ¸¶¿ì½º Ä¿¼­°¡ 
+; TransColorÀÇ °á°ú·Î º¸ÀÌÁö ¾Ê´Â Çȼ¿ À§¸¦ ¼±È¸ÇÏ°í ÀÖ´Ù¸é
+; ±× Çȼ¿ ¾Æ·¡¿¡ º¸À̴ âÀÌ ´ë½Å ÀÛµ¿ÇÒ °ÍÀÔ´Ï´Ù!  ¶ÇÇÑ, 
+; Win+G´Â Windows XP¿¡¸¸ È¿°ú°¡ ÀÖ½À´Ï´Ù.
+; ¿Ö³ÄÇϸé Åõ¸íµµ ¼³Á¤ÀÇ ¿­¶÷Àº Windows 2000¿¡¼­ Áö¿øµÇÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù:
+
+#t::  ; Win+T¸¦ ´­·¯ ¸¶¿ì½º Ä¿¼­ ¾Æ·¡ÀÇ Ä÷¯¸¦ º¸ÀÌÁö ¾Ê°Ô ¸¸µì´Ï´Ù.
+MouseGetPos, MouseX, MouseY, MouseWin
+PixelGetColor, MouseRGB, %MouseX%, %MouseY%, RGB
+; ±âÁ¸ÀÇ Åõ¸í È¿°ú¸¦ ¸ÕÀú ²¨¾ßÇÒ ÇÊ¿ä°¡ ÀÖ¾î º¸ÀÔ´Ï´Ù:
+WinSet, TransColor, Off, ahk_id %MouseWin%
+WinSet, TransColor, %MouseRGB% 220, ahk_id %MouseWin%
+return
+
+#o::  ; Win+O¸¦ ´­·¯ ¸¶¿ì½º ¾Æ·¡ÀÇ Ã¢¿¡ Åõ¸í È¿°ú¸¦ ²ü´Ï´Ù.
+MouseGetPos,,, MouseWin
+WinSet, TransColor, Off, ahk_id %MouseWin%
+return
+
+#g::  ; Win+G¸¦ ´­·¯ ¸¶¿ì½º ¾Æ·¡¿¡ Àִ âÀÇ ÇöÀç ¼³Á¤À» º¸¿©ÁÝ´Ï´Ù.
+MouseGetPos,,, MouseWin
+WinGet, Transparent, Transparent, ahk_id %MouseWin%
+WinGet, TransColor, TransColor, ahk_id %MouseWin%
+ToolTip Translucency:`t%Transparent%`nTransColor:`t%TransColor%
+return
+
+; "WinSet Region" ¿¹Á¦:
+WinSet, Region, 50-0 W200 H250, WinTitle  ; â¿¡¼­ ÀÌ »ç°¢Çü ¹Û¿¡ ÀÖ´Â ¸ðµç ºÎºÐÀ» º¸ÀÌÁö ¾Ê°Ô ¸¸µì´Ï´Ù.
+WinSet, Region, 50-0 W200 H250 R40-40, WinTitle  ; À§¿Í °°Áö¸¸ ¸ð¼­¸®¸¦ 40x40À¸·Î µÕ±Û°Ô ¸¸µì´Ï´Ù.
+WinSet, Region, 50-0 W200 H250 E, WinTitle  ; »ç°¢Çü ´ë½Å Ÿ¿øÇü.
+WinSet, Region, 50-0 250-0 150-250, WinTitle  ; Á¤Á¡ÀÌ ¾Æ·¡¸¦ °¡¸®Å°´Â »ï°¢Çü.
+WinSet, Region,, WinTitle ; âÀ» ¿ø·¡/±âº» µð½ºÇ÷¹ÀÌ ±¸¿ªÀ¸·Î º¹±¸ÇÕ´Ï´Ù.
+
+; ´ÙÀ½Àº Á» º¹ÀâÇÑ ±¸¿ªÀÔ´Ï´Ù. ⠾ȿ¡ ¶Õ·Á º¸ÀÌ´Â »ç°¢ÇüÀ» ¸¸µì´Ï´Ù.
+; ¾Æ·¡¿¡ µÎ °³ÀÇ »ç°¢ÇüÀ» ÁöÁ¤ÇÕ´Ï´Ù: ¹Ù±ù°ú ¾ÈÂÊ.  °¢ »ç°¢ÇüÀº 5°³ÀÇ X/Y ÁÂÇ¥ ½ÖÀ¸·Î ±¸¼ºµË´Ï´Ù.
+; ¿Ö³ÄÇϸé ù ½ÖÀº ³¡¿¡ ¹Ýº¹µÇ¾î °¢ »ç°¢ÇüÀ» "´Ý±â" ¶§¹®ÀÔ´Ï´Ù.
+WinSet, Region, 0-0 300-0 300-300 0-300 0-0   100-100 200-100 200-200 100-200 100-100, WinTitle
+ + + diff --git a/src/docs/commands/WinSetTitle.htm b/src/docs/commands/WinSetTitle.htm new file mode 100644 index 0000000..93e8a37 --- /dev/null +++ b/src/docs/commands/WinSetTitle.htm @@ -0,0 +1,59 @@ + + + + +WinSetTitle + + + + + + + +

WinSetTitle

+ +

ÁöÁ¤µÈ âÀÇ Á¦¸ñÀ» º¯°æÇÕ´Ï´Ù.

+ +
WinSetTitle, NewTitle
+WinSetTitle, WinTitle, WinText, NewTitle [, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
NewTitle
+

â¿¡ ´ëÇÑ »õ Á¦¸ñ. ÀÌ ¸Å°³º¯¼ö¸¸ ÁÖ¾îÁö¸é, ¸¶Áö¸· ¹ß°ß âÀÌ »ç¿ëµË´Ï´Ù.

+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

+ Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµÈ Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖÀ¸¸é(ON) ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ Æ÷ÇԵǾî Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ Æ÷ÇԵǾî Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

+â Á¦¸ñÀ» º¯°æÇÏ´õ¶óµµ Àá½ÃÀÏ »ÓÀÔ´Ï´Ù. âÀ» ¼ÒÀ¯ÇÑ ¾îÇø®ÄÉÀ̼ÇÀÌ ÀÚÁÖ Ã¢ Á¦¸ñÀ» ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows¸¦ ÄѸé ŽÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

WinMove, WinGetActiveStats, WinGetActiveTitle, WinGetText, ControlGetText, WinGetPos, WinSet

+ +

¿¹Á¦

+ +
WinSetTitle, Untitled - Notepad, , »õ Á¦¸ñÀÔ´Ï´Ù
+
+; ´ë¾È:
+Run, notepad.exe
+WinWaitActive, Untitled - Notepad
+WinSetTitle, This is a new title  ; À§¿¡¼­ WinWaitActive°¡ ¹ß°ßÇÑ Ã¢À» »ç¿ëÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/WinShow.htm b/src/docs/commands/WinShow.htm new file mode 100644 index 0000000..7a977fe --- /dev/null +++ b/src/docs/commands/WinShow.htm @@ -0,0 +1,51 @@ + + + + +WinShow + + + + + + + +

WinShow

+ +

ÁöÁ¤µÈ âÀ» ´Ù½Ã º¸¿©ÁÝ´Ï´Ù.

+ +
WinShow [, WinTitle, WinText, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ´Ù¸¥ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

+ Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµÈ Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ È°¼ºÈ­(ON)µÇ¾î ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ µé¾î Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ µé¾î Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

³íÆò

+

±âº»ÀûÀ¸·Î, WinShow´Â ¾ðÁ¦³ª ¼ûÀº âÀ» ŽÁöÇÒ ¼ö ÀÖ´Â À¯ÀÏÇÑ ¸í·É¾îÀÔ´Ï´Ù. ´Ù¸¥ ¸í·É¾îµéÀº DetectHiddenWindows°¡ ÄÑÁ® ÀÖÀ» °æ¿ì¿¡¸¸ ¼ûÀº âÀ» ŽÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ÀÌ ¸í·É¾î´Â ÃÖ»óÀ§ âÀÌ ºÎÇÕÇÏ´Â °æ¿ì¿¡¸¸ ÀÛµ¿ÇÕ´Ï´Ù. ´Ü, WinTitleÀÌ ahk_group GroupNameÀÏ °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù. ÀÌ °æ¿ì ±×·ì ¾ÈÀÇ ¸ðµç âÀÌ ¿µÇâÀ» ¹Þ½À´Ï´Ù.

+

°ü·Ã Ç׸ñ

+

WinHide, SetTitleMatchMode, DetectHiddenWindows, ¸¶Áö¸· ¹ß°ß â

+

¿¹Á¦

+
Run, notepad.exe
+WinWait, Untitled - Notepad
+Sleep, 500
+WinHide  ; ¸Å°³º¯¼ö°¡ »ý·«µÇ¾ú±â ¶§¹®¿¡, À§¿¡¼­ ¹ß°ßÇÑ Ã¢À» »ç¿ëÇÕ´Ï´Ù.
+Sleep, 1000
+WinShow
+ + + diff --git a/src/docs/commands/WinWait.htm b/src/docs/commands/WinWait.htm new file mode 100644 index 0000000..212202c --- /dev/null +++ b/src/docs/commands/WinWait.htm @@ -0,0 +1,68 @@ + + + + +WinWait + + + + + + + +

WinWait

+ +

ÁöÁ¤µÈ âÀÌ Á¸ÀçÇÒ ¶§±îÁö ±â´Ù¸³´Ï´Ù.

+ +
WinWait [, WinTitle, WinText, Seconds, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+

WinTitle´Â WinText, ExcludeTitle, ¶Ç´Â ExcludeTextÀÌ Á¸ÇØÇÒ ¶§¸¸ ºñ¾î ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.

+ +
WinText
+

+ Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµ· Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenTextÀÌ ÄÑÁ®(ON) ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +
Seconds
+

½Ã°£ Á¦ÇѱîÁö ±â´Ù¸± ÃÊÀÇ °³¼ö ±×¸®°í ErrorLevelÀ» 1·Î ¼³Á¤. ºó ä·Î µÎ¸é ¹«ÇÑÁ¤ ±â´Ù¸³´Ï´Ù. 0À» ¼³Á¤Çϸé 0.5¸¦ ¼³Á¤ÇÑ °Í°ú °°½À´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÏ ¼ö ÀÖ½À´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ µé¾î Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ µé¾î Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

ErrorLevel

+

ErrorLevelÀº ÀÌ ¸í·É¾î°¡ ½Ã°£ Á¦ÇÑ¿¡ °É¸®¸é 1, ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+ºÎÇÕÇÑ Ã¢ÀÌ Á¸ÀçÇϸé, ¸í·É¾î´Â Ã˹ßÀ» À§ÇØ Seconds Ãʸ¦ ±â´Ù¸®Áö ¾Ê½À´Ï´Ù. ´ë½Å¿¡, Áï½Ã ErrorLevel¿¡ 0À» ¼³Á¤ÇÏ°í, ¸¶Áö¸· ¹ß°ß âÀ» °»½ÅÇϸç, ±×¸®°í ½ºÅ©¸³Æ®´Â ½ÇÇàÀ» °è¼ÓÇÕ´Ï´Ù.

+

+¸í·É¾î°¡ ´ë±â »óÅ¿¡ ÀÖ´Â µ¿¾È, ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀ̸Ӹ¦ ÅëÇÏ¿© »õ ¾²·¹µå¸¦ ±âµ¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ÀÌ ¸í·É¾îÀÇ ¸Å°³º¯¼ö¿¡ »ç¿ëµÈ º¯¼öÀÇ ³»¿ëÀ» ¶Ç´Ù¸¥ ¾²·¹µå°¡ º¯°æÇÏ´õ¶óµµ, ÀÌ ¸í·É¾î´Â ±× º¯°æÀ» º¸Áö ¸øÇÕ´Ï´Ù -- °è¼ÓÇؼ­ óÀ½ ´ë±â¸¦ ½ÃÀÛÇÒ ¶§ º¯¼ö¿¡ Á¸ÀçÇÏ´ø ¿ø·¡ Á¦¸ñ°ú ÅؽºÆ®¸¦ »ç¿ëÇÒ °ÍÀÔ´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº ÅؽºÆ®´Â DetectHiddenWindows¸¦ ÄѸé ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

WinWaitActive, WinWaitClose, IfWinExist, IfWinActive, Process, SetTitleMatchMode, DetectHiddenWindows

+ +

¿¹Á¦

+
Run, notepad.exe
+WinWait, Untitled - Notepad, , 3
+if ErrorLevel
+{
+    MsgBox, WinWait timed out.
+    return
+}
+else
+    WinMinimize  ; WinWait°¡ ¹ß°ßÇÑ Ã¢À» ÃÖ¼ÒÈ­ÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/WinWaitActive.htm b/src/docs/commands/WinWaitActive.htm new file mode 100644 index 0000000..e9871a3 --- /dev/null +++ b/src/docs/commands/WinWaitActive.htm @@ -0,0 +1,70 @@ + + + + +WinWaitActive / WinWaitNotActive + + + + + + + +

WinWaitActive / WinWaitNotActive

+ +

ÁöÁ¤µÈ âÀÌ È°¼ºÈ­µÇ°Å³ª ºñÈ°¼ºÈ­µÉ ¶§±îÁö ±â´Ù¸³´Ï´Ù.

+ +
WinWaitActive [, WinTitle, WinText, Seconds, ExcludeTitle, ExcludeText]
+WinWaitNotActive [, WinTitle, WinText, Seconds, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñÀ̳ª ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµÈ Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenTextÀÌ ÄÑÁ®(ON) ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +
Seconds
+

½Ã°£Á¦ÇÑ ±îÁö ±â´Ù¸± ÃÊÀÇ °³¼ö ±×¸®°í ErrorLevelÀ» 1·Î ¼³Á¤. ºó ä·Î µÎ¸é ¹«ÇÑÁ¤ ´ë±âÇÕ´Ï´Ù. 0À» ÁöÁ¤Çϸé 0.5¸¦ ÁöÁ¤ÇÑ °Í°ú µ¿ÀÏÇÕ´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÌ °¡´ÉÇÕ´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀÌ µé¾î Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀÌ µé¾î Àִ âÀº Á¦¿ÜÇÕ´Ï´Ù.

+ +
+ +

ErrorLevel

+

ErrorLevelÀº ¸í·É¾î°¡ ½Ã°£Á¦ÇÑ¿¡ °É¸®¸é 1·Î ¼³Á¤µÇ°í ±×·¸Áö ¾ÊÀ¸¸é 0À¸·Î ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+ºÎÇÕÇϴ âÀÌ ¸í·É¾îÀÇ ±â´ë¸¦ ¸¸Á·Çϸé, ±× ¸í·É¾î´Â ÀÌÁ¦ Ã˹ßÀ» À§ÇØ Seconds Ãʸ¦ ±â´Ù¸®Áö ¾Ê½À´Ï´Ù. ´ë½Å¿¡, Áï½Ã ErrorLevel¿¡ 0À» ¼³Á¤ÇÏ°í ½ºÅ©¸³Æ®´Â ½ÇÇàÀ» °è¼ÓÇÕ´Ï´Ù.

+

+¸í·É¾î°¡ ½ÃÀÛÇÒ ¶§ ±â´ë¸¦ ¸¸Á·Çϴ âÀÌ È°¼ºÈ­µÇ¸é WinWaitActive¿Í WinWaitNotActive ¸ðµÎ ¸¶Áö¸·À¸·Î ¹ß°ßµÈ âÀ» °»½ÅÇÕ´Ï´Ù.

+

+¸í·É¾î°¡ ´ë±â »óÅ¿¡ ÀÖ´Â µ¿¾È, ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀ̸Ӹ¦ ÅëÇÏ¿© »õ ¾²·¹µå¸¦ ±âµ¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ÀÌ ¸í·É¾îÀÇ ¸Å°³º¯¼ö·Î »ç¿ëµÈ º¯¼öÀÇ ³»¿ëÀ» ¶Ç´Ù¸¥ ¾²·¹µå°¡ º¯°æÇÏ´õ¶óµµ, ÀÌ ¸í·É¾î´Â ±× º¯°æÀ» º¸Áö ¸øÇÕ´Ï´Ù -- ¸í·É¾î°¡ óÀ½ ´ë±â¸¦ ½ÃÀÛÇÒ ¶§ÀÇ º¯¼ö¿¡ Á¸ÀçÇÏ´Â ¿ø·¡ ÅؽºÆ®¿Í Á¦¸ñÀ» °è¼Ó »ç¿ëÇÕ´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindows¸¦ ÄѸé ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+WinWait, WinWaitClose, IfWinExist, IfWinActive, SetTitleMatchMode, DetectHiddenWindows

+ +

¿¹Á¦

+
Run, notepad.exe
+WinWaitActive, Untitled - Notepad, , 2
+if ErrorLevel
+{
+    MsgBox, WinWait timed out.
+    return
+}
+else
+    WinMinimize  ; WinWaitActive°¡ ¹ß°ßÇÑ Ã¢À» ÃÖ¼ÒÈ­ÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/WinWaitClose.htm b/src/docs/commands/WinWaitClose.htm new file mode 100644 index 0000000..2b98e5d --- /dev/null +++ b/src/docs/commands/WinWaitClose.htm @@ -0,0 +1,61 @@ + + + + +WinWaitClose + + + + + + + +

WinWaitClose

+ +

ÁöÁ¤µÈ âÀÌ Á¸ÀçÇÏÁö ¾ÊÀ» ¶§±îÁö ±â´Ù¸³´Ï´Ù.

+ +
WinWaitClose [, WinTitle, WinText, Seconds, ExcludeTitle, ExcludeText]
+

¸Å°³º¯¼ö

+
+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°ÇÒ ¼ö Àִ â Á¦¸ñ ¶Ç´Â ±âŸ ±âÁØ. WinTitle ÂüÁ¶.

+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ âÀÇ ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµÈ Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenText°¡ ÄÑÁ® ÀÖÀ¸¸é(ON) ŽÁöµË´Ï´Ù.

+ +
Seconds
+

½Ã°£ Á¦ÇѱîÁö ±â´Ù¸± ÃÊÀÇ °³¼ö ±×¸®°í ErrorLevelÀ» 1·Î ¼³Á¤ÇÕ´Ï´Ù. ºó ä·Î µÎ¸é ¹«ÇÑÁ¤ ±â´Ù¸³´Ï´Ù. 0À¸·Î ¼³Á¤Çϸé 0.5¸¦ ÁöÁ¤ÇÑ °Í°ú °°½À´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â Ç¥Çö½ÄÀÌ °¡´ÉÇÕ´Ï´Ù.

+ +
ExcludeTitle
+

Á¦¸ñ¿¡ ÀÌ °ªÀ» °¡Áø âÀº Á¦¿ÜµË´Ï´Ù.

+ +
ExcludeText
+

ÅؽºÆ®¿¡ ÀÌ °ªÀ» °¡Áø âÀº Á¦¿ÜµË´Ï´Ù.

+ +
+ +

ErrorLevel

+

+¸í·É¾î°¡ ½Ã°£ Á¦ÇÑ¿¡ °É¸®¸é ErrorLevelÀº 1¿¡ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù.

+ +

³íÆò

+

+ÁöÁ¤µÈ âÀÇ ½Çü°¡ Á¸ÀçÇÏÁö ¾ÊÀ» ¶§¸¶´Ù, ÀÌ ¸í·É¾î´Â Seconds µ¿¾È ½Ã°£ Á¦ÇÑÀ» ±â´Ù¸®Áö ¾Ê½À´Ï´Ù. ´ë½Å¿¡, Áï½Ã ErrorLevel¿¡ 0À» ¼³Á¤ÇÏ°í ½ºÅ©¸³Æ®´Â ½ÇÇàÀ» °è¼ÓÇÕ´Ï´Ù.

+

+ÀÌ ¸í·É¾î°¡ ´ë±â »óÅ¿¡ ÀÖ´Ù¸é, hotkey, custom menu item, ¶Ç´Â timer¸¦ ÅëÇÏ¿© »õ ¾²·¹µå¸¦ ±âµ¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+¶Ç´Ù¸¥ ¾²·¹µå°¡ ÀÌ ¸í·É¾îÀÇ ¸Å°³º¯¼ö¿¡ »ç¿ëµÈ º¯¼öÀÇ ³»¿ëÀ» º¯°æÇÏ´õ¶óµµ, ÀÌ ¸í·É¾î´Â º¯°æµÈ °ÍÀ» ¾ËÁö ¸øÇÕ´Ï´Ù -- °è¼ÓÇؼ­ ¿ø·¡ ÀÌ ¸í·É¾î°¡ óÀ½ ±â´Ù¸®±â ½ÃÀÛÇÒ ¶§ÀÇ º¯¼ö¿¡ Á¸ÀçÇÏ´Â Á¦¸ñ°ú ÅؽºÆ®¸¦ »ç¿ëÇÒ °ÍÀÔ´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº ÅؽºÆ®´Â DetectHiddenWindows°¡ ÄÑÁ® ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

WinClose, WinWait, WinWaitActive, IfWinExist, IfWinActive, Process, SetTitleMatchMode, DetectHiddenWindows

+

¿¹Á¦

+
Run, notepad.exe
+WinWait, Untitled - Notepad
+WinWaitClose  ; WinWait°¡ ¹ß°ßÇÑ Ã¢ÀÌ ´ÝÈ÷±â¸¦ ±â´Ù¸³´Ï´Ù.
+MsgBox, ³ëÆ®Æе尡 ÀÌÁ¦ ´ÝÇû½À´Ï´Ù.
+ + + diff --git a/src/docs/commands/_AllowSameLineComments.htm b/src/docs/commands/_AllowSameLineComments.htm new file mode 100644 index 0000000..2cc4259 --- /dev/null +++ b/src/docs/commands/_AllowSameLineComments.htm @@ -0,0 +1,26 @@ + + + + +#AllowSameLineComments + + + + + + + +

#AllowSameLineComments

+ +

v1.1.09¿¡¼­ Á¦°ÅµÊ: ´õ ÀÌ»ó Áö¿øÇÏÁö ¾ÊÀ½.

+ +

AutoIt v2 (.aut) Àü¿ë: ÁÖ¼®ÀÌ ¸í·É¾î¿Í °°Àº ÁÙ¿¡ ³ªÅ¸³¯µµ·Ï Çã¿ëÇÕ´Ï´Ù.

+ +
#AllowSameLineComments
+

ÀÌ Áö½Ã¾î¸¦ AutoIt v2 (.aut) ½ºÅ©¸³Æ®ÀÇ »ó´Ü¿¡ ÁöÁ¤ÇÏ¸é °°Àº-ÁÙ ÁÖ¼®À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. º¸Åë ȣȯ¼ºÀÇ ÀÌÀ¯·Î ²¨Á® ÀÖ½À´Ï´Ù. ½ºÆ®¸³Æ® »ó´Ü¿¡ »ç¿ëÇÏÁö ¾ÊÀ¸¸é, °°Àº-ÁÙ ÁÖ¼®ÀÌ Áö¿øµÇÁö ¾Ê½À´Ï´Ù. ÀÌ Áö½Ã¾î°¡ ³ªÅ¸³ª´Â ½ÃÁ¡ºÎÅ͸¸ È¿°ú°¡ ÀÖ½À´Ï´Ù.

+

¿¹Á¦

+
#AllowSameLineComments
+Sleep, 1  ; ÀÌ ÁÖ¼®Àº °°Àº-ÁÙ ÁÖ¼®ÀÔ´Ï´Ù.
+ + + diff --git a/src/docs/commands/_ClipboardTimeout.htm b/src/docs/commands/_ClipboardTimeout.htm new file mode 100644 index 0000000..ae264b1 --- /dev/null +++ b/src/docs/commands/_ClipboardTimeout.htm @@ -0,0 +1,41 @@ + + + + +#ClipboardTimeout + + + + + + + +

#ClipboardTimeout

+ +

ù ½Ãµµ°¡ ½ÇÆÐÇÏ¸é ½ºÅ©¸³Æ®°¡ Ŭ¸³º¸µå¿¡ ¾ó¸¶³ª ¿À·§µ¿¾È Á¢±ÙÀ» ½ÃµµÇØ¾ß ÇÏ´ÂÁö º¯°æÇÕ´Ï´Ù.

+ +
#ClipboardTimeout Milliseconds
+

¸Å°³º¯¼ö

+
+ +
Milliseconds
+

¹Ð¸®ÃÊ ´ÜÀ§ °£°Ý. -1À» ÁöÁ¤ÇÏ¸é ¹«Á¦ÇÑ ½ÃµµÇÕ´Ï´Ù. 0À» ÁöÁ¤Çϸé ÇÑ ¹ø¸¸ ½ÃµµÇÕ´Ï´Ù. ÀÌ Áö½Ã¾î°¡ ¾ø´Â ½ºÅ©¸³Æ®´Â 1000 ms ½Ã°£Á¦ÇÑÀ» »ç¿ëÇÕ´Ï´Ù.

+ +
+

³íÆò

+

+¾î¶² ¾îÇø®ÄÉÀ̼ÇÀº Ŭ¸³º¸µå¸¦ ¿À·£ ½Ã°£ µ¿¾È ¿­¾î µÓ´Ï´Ù. ¾Æ¸¶µµ »ó´çÈ÷ ¸¹Àº ¾çÀÇ µ¥ÀÌÅ͸¦ ÀÐ°í ¾²±â À§Çؼ­ ÀÏ°Ì´Ï´Ù. ±×·± °æ¿ì, ÀÌ ¼³Á¤À» Áõ°¡½ÃÅ°¸é ½ºÅ©¸³Æ®°¡ Æ÷±âÇÏ°í ¿¡·¯ ¸Þ½ÃÁö¸¦ º¸¿©ÁÖ±â Àü¿¡ ¿À·§ µ¿¾È ±â´Ù¸± ¼ö ÀÖ½À´Ï´Ù.

+

+ÀÌ ¼³Á¤Àº ¸ðµç Ŭ¸³º¸µå ¿¬»ê¿¡ Àû¿ëµË´Ï´Ù. ±× Áß¿¡ °¡Àå ´Ü¼øÇÑ ¿¹´Â ´ÙÀ½°ú °°½À´Ï´Ù: Var = %Clipboard% ±×¸®°í Clipboard = New Text.

+

+Ŭ¸³º¸µå°¡ ´Ù½Ã »ç¿ë °¡´ÉÇÒ ¶§±îÁö ½ºÅ©¸³Æ®°¡ ±â´Ù¸± ¶§¸¶´Ù, »õ ¾²·¹µå´Â ±âµ¿ÇÒ ¼ö ¾øÀ¸¸ç ŸÀ̸ӵµ ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù. ±×·¸Áö¸¸, »ç¿ëÀÚ°¡ ÇÖÅ°¸¦ ´©¸£°Å³ª, ¸ÂÃã ¸Þ´º Ç׸ñÀ» ¼±ÅÃÇϰųª, ¾Æ´Ï¸é ¹öÆ°À» ´©¸¥ °Í°ú °°Àº GUI ÇàÀ§¸¦ ¼öÇàÇϸé, ±× À̺¥Æ®´Â ³ªÁß¿¡, ´Ù½Ã ¸»ÇØ, Ŭ¸³º¸µå°¡ ¿ÏÀüÈ÷ »ç¿ë °¡´ÉÇØÁø ÈÄ¿¡ ±×ÀÇ ¼­ºê·çƾÀÌ ½ÇÇàµÉ ¶§±îÁö ¹öÆÛ Ã³¸®µË´Ï´Ù.

+

+ÀÌ Áö½Ã¾î°¡ ÀÖÀ¸¸é ù ½Ãµµ°¡ ½ÇÆÐÇÏ´õ¶óµµ Ŭ¸³º¸µå µ¥ÀÌÅ͸¦ ´Ù½Ã ÀÐÀ¸·Á°í ½ÃµµÇÏÁö ¾Ê½À´Ï´Ù. v1.1.16 ÀÌÀü¿¡¼­´Â ½ºÅ©¸³Æ®°¡ ½Ã°£Á¦ÇÑÀÌ Ç®¸± ¶§±îÁö ±â´Ù·Á¾ß Çß½À´Ï´Ù. ±×·¯³ª ±×·¸°Ô ÇÔÀ¸·Î½á ´õ ÀÌ»ó µ¥ÀÌÅ͸¦ ¹ÞÁö ¸øÇÏ°Ô µÇ¾ú½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

Clipboard, Thread

+

¿¹Á¦

+
#ClipboardTimeout 2000
+ + + diff --git a/src/docs/commands/_CommentFlag.htm b/src/docs/commands/_CommentFlag.htm new file mode 100644 index 0000000..9b22b71 --- /dev/null +++ b/src/docs/commands/_CommentFlag.htm @@ -0,0 +1,38 @@ + + + + +#CommentFlag + + + + + + + +

#CommentFlag

+ +

½ºÅ©¸³Æ®ÀÇ ÁÖ¼® ½Éº¼À» ½Ö¹ÝÁ¡À¸·ÎºÎÅÍ ´Ù¸¥ ¹®ÀÚ¿­·Î º¯°æÇÕ´Ï´Ù.

+ +
#CommentFlag NewString
+

¸Å°³º¯¼ö

+
+ +
NewString
+

»õ·Î¿î ÁÖ¼® Ç÷¡±×·Î »ç¿ëµÉ Çϳª ÀÌ»óÀÇ ¹®ÀÚ. 15 ¹®ÀÚ±îÁö ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +
+

³íÆò

+

±âº» ÁÖ¼® Ç÷¡±×´Â ½Ö¹ÝÁ¡ÀÔ´Ï´Ù (;).

+

ÁÖ¼® Ç÷¡±×´Â ´ÙÀ½¿¡ µû¶ó¿À´Â ÅؽºÆ®°¡ ½ºÅ©¸³Æ®¿¡¼­ ÀÛµ¿ÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù°í ¾Ë·Á ÁÖ´Â µ¥ »ç¿ëµË´Ï´Ù (ÁÖ¼®Àº ½ºÅ©¸³Æ®°¡ ±âµ¿ÇÒ ¶§ ¸Þ¸ð¸® ¾ÈÀ¸·Î ÀûÀçµÇÁö ¾Ê½À´Ï´Ù. ±×·¡¼­ ¼öÇ༺´É¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù).

+

+ÁÖ¼® Ç÷¡±×°¡ ¸í·É¾î¿Í °°Àº ÁÙ¿¡ ³ªÅ¸³ª¸é ¿ÞÂÊ¿¡ Àû¾îµµ Çϳª ÀÌ»óÀÇ ½ºÆäÀ̽º³ª ÅÇÀÌ ÀÖ¾î¾ß ÁÖ¼®À¸·Î °£Áֵ˴ϴÙ. ¿¹¸¦ µé¾î:

+
MsgBox, Test1 ; ÀÌ°ÍÀº ÁÖ¼®ÀÔ´Ï´Ù.
+MsgBox, Test2; ÀÌ°ÍÀº ÁÖ¼®ÀÌ ¾Æ´Ï°í MsgBox°¡ º¸¿©ÁÝ´Ï´Ù.
+

°ü·Ã Ç׸ñ

+

#EscapeChar

+

¿¹Á¦

+
#CommentFlag //  ; C++ ÁÖ¼® ½ºÅ¸ÀÏ·Î º¯°æÇÏ´Ï´Ù.
+ + + diff --git a/src/docs/commands/_ErrorStdOut.htm b/src/docs/commands/_ErrorStdOut.htm new file mode 100644 index 0000000..7624b7a --- /dev/null +++ b/src/docs/commands/_ErrorStdOut.htm @@ -0,0 +1,67 @@ + + + + +#ErrorStdOut + + + + + + + +

#ErrorStdOut

+ +

½ºÅ©¸³Æ®ÀÇ ½ÇÇàÀ» ¸·´Â ±¸¹® ¿¡·¯¸¦ ´ëÈ­»óÀÚ¿¡ º¸¿©ÁÖÁö ¾Ê°í Ç¥ÁØ¿¡·¯(stderr)·Î º¸³À´Ï´Ù.

+ +
#ErrorStdOut
+

[AHK_L 42+]: ¿¡·¯´Â Ç¥ÁØÃâ·Â(stdout)ÀÌ ¾Æ´Ï¶ó Ç¥ÁØ¿¡·¯(stderr)¿¡ ¾º¿©Áý´Ï´Ù. ¸í·É ÇÁ·ÒÇÁÆ®¿Í ¸ÚÁø ÆíÁý±â´Â º¸Åë µÑ ´Ù º¸¿©ÁÝ´Ï´Ù. ÀÌ º¯°æÀº v1.1.19.01 ÀÌÀü±îÁö ¹®¼­È­µÇ¾î ÀÖÁö ¾Ê¾Ò½À´Ï´Ù.

+

+ÀÌ ´öºÐ¿¡ Textpad, SciTE, Crimson, ±×¸®°í EditPlus¿Í °°Àº ¸ÚÁø ÆíÁý±âµéÀº ±¸¹® ¿¡·¯°¡ ÀϾ ¶§ ¹®Á¦ÀÇ ÁÙ·Î ¹Ù·Î Á¡ÇÁÇØ °¥ ¼ö ÀÖ½À´Ï´Ù. #ErrorStdOut Áö½Ã¾î´Â ½ºÅ©¸³Æ®¸¶´Ù Ãß°¡Çصµ ÁÁÀ» °ÍÀÔ´Ï´Ù. +º¸Åë ¿ÀÅäÇÖÅ° ½ºÅ©¸³Æ®¸¦ ±âµ¿ÇÒ ¶§ ÆíÁý±â¸¦ ¸í·É ÁÙ ½ºÀ§Ä¡ /ErrorStdOut¸¦ »ç¿ëÇϵµ·Ï ¼³Á¤ÇÏ´Â °ÍÀÌ ´õ ÁÁ½À´Ï´Ù (¼³Á¤¿¡ °üÇÑ Áö½Ã »çÇ×Àº ¾Æ·¡¸¦ ÂüÁ¶ÇϽʽÿÀ).

+

+¿ÀÅäÇÖÅ°´Â ÄÜ¼Ö ÇÁ·Î±×·¥ÀÌ ¾Æ´Ï±â ¶§¹®¿¡, ¿¡·¯´Â ¸í·É ÇÁ·ÒÇÁÆ®¿¡ Á÷Á¢ ³ªÅ¸³ªÁö ¾Ê½À´Ï´Ù. ´ë½Å¿¡, ±×·± Ãâ·ÂÀº ÆÄÀÌÇÁ³ª ¹æÇâÀüȯÀ» ÅëÇÏ¿© ÀâÀ» ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "My Script.ahk" 2>&1 |more
+"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "My Script.ahk" 2>"Syntax-Error Log.txt"
+

+Ãâ·ÂÀ» Á÷Á¢ Ŭ¸³º¸µå·Î ÆÄÀÌÇÁ ó¸®ÇØ ³ÖÀ» ¼öµµ ÀÖ½À´Ï´Ù. cb.zip (4 KB)À» ³»·Á ¹Þ°í, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:

+ +
"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "My Script.ahk" 2>&1 |cb.exe
+

+ÁÖÀÇ: 2>&1´Â stderr¸¦ stdout·Î ¹æÇâÀüȯµÇµµ·Ï ¸¸µì´Ï´Ù. ¹Ý¸é¿¡ 2>Filename´Â stderr¸¸ ÆÄÀÏ·Î ¹æÇâÀüȯÇÕ´Ï´Ù.

+ +

ƯÁ¤ ÆíÁý±â¸¦ À§ÇÑ Áö½Ã »çÇ×

+

EditPlus:
+¸Þ´º ¹Ù¿¡¼­, µµ±¸ > »ç¿ëÀÚ µµ±¸ ±¸¼ºÀ» ¼±ÅÃÇÕ´Ï´Ù.
+´ÙÀ½ ¹öÆ°À» ´©¸¨´Ï´Ù: µµ±¸ > ÇÁ·Î±×·¥
+¸Þ´º ÅؽºÆ®: ¿©·¯ºÐÀÇ ¸¶À½´ë·Î ¼³Á¤ÇÕ´Ï´Ù
+¸í·É¾î: C:\Program Files\AutoHotkey\AutoHotkey.exe
+ÀÎÀÚ: /ErrorStdOut "$(FilePath)"
+ÃÖÃÊ µð·ºÅ丮: $(FileDir)
+Ãâ·Â ĸÃÄ: ³×

+

+TextPad:
+ ¸Þ´º ¹Ù¿¡¼­, Configure > Preferences¸¦ ¼±ÅÃÇÕ´Ï´Ù.
+ Tools ¿£Æ®¸®¸¦ È®´ëÇÕ´Ï´Ù.
+Add ¹öÆ°À» ´©¸£°í "Program"À» ¼±ÅÃÇÕ´Ï´Ù.
+ º¹»çÇØ ºÙ¿© ³Ö½À´Ï´Ù (¿©·¯ºÐÀÇ °æ·Î¿¡ ¸Â°Ô Á¶ÀýÇϽʽÿÀ): C:\Windows\System32\cmd.exe -- ´ÙÀ½ OK¸¦ ´©¸¨´Ï´Ù.
+ ¸®½ºÆ® ¹Ú½º¿¡ »õ·Î Ãß°¡µÈ ¹öÆ°À» ¼¼¹ø Ŭ¸¯ÇÕ´Ï´Ù (cmd.exe). ±×¸®°í À̸§À» ¿©·¯ºÐ ¸¶À½´ë·Î ¹Ù²ß´Ï´Ù (¿¹,. Launch Script).
+ Apply¸¦ ´©¸¨´Ï´Ù.
+ ¿ÞÂÊ Æ®¸®¿¡¼­ »õ Ç׸ñÀ» ¼±ÅÃÇÏ°í ´ÙÀ½ Á¤º¸¸¦ ÀÔ·ÂÇÕ´Ï´Ù:
+ Command (ÀÌ¹Ì Ã¤¿öÁ® ÀÖÀ» °ÍÀÔ´Ï´Ù): cmd.exe (¶Ç´Â Àüü °æ·Î¸¦ ÁöÁ¤)
+ Parameters (ÇÊ¿äÇÏ¸é ¿©·¯ºÐÀÇ °æ·Î¿¡ ¸Â°Ô Á¶Àý): /c ""C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "$File""
+ Initial folder: $FileDir
+ ´ÙÀ½ ¹Ú½º¸¦ üũÇÕ´Ï´Ù: + 1) Run minimized; 2) Capture output.
+ OK¸¦ ´©¸¨´Ï´Ù. »õ·Î Ãß°¡µÈ Ç׸ñÀÌ ÀÌÁ¦ Tools ¸Þ´º¿¡ ³ªÅ¸³¯ °ÍÀÔ´Ï´Ù.

+ +

°ü·Ã »çÇ×

+

+FileAppend (ÀÌ ¿ª½Ã ÅؽºÆ®¸¦ Ç¥ÁØÃâ·ÂÀ¸·Î º¸³¾ ¼ö ÀÖ½À´Ï´Ù)

+ +

¿¹Á¦

+
#ErrorStdOut
+ + + diff --git a/src/docs/commands/_EscapeChar.htm b/src/docs/commands/_EscapeChar.htm new file mode 100644 index 0000000..cec3878 --- /dev/null +++ b/src/docs/commands/_EscapeChar.htm @@ -0,0 +1,108 @@ + + + + +#EscapeChar (and explanation of escape sequences) + + + + + + + +

#EscapeChar (ÇǽŠ¿¬¼Ó¿­ ¼³¸í)

+ +

½ºÅ©¸³Æ®ÀÇ ÇǽŠ¹®ÀÚ¸¦ º¯°æÇÕ´Ï´Ù (¿¹, accent vs. backslash).

+ +
#EscapeChar NewChar
+

¸Å°³º¯¼ö

+
+ +
NewChar
+

¹®ÀÚ Çϳª¸¦ ÁöÁ¤ÇÕ´Ï´Ù.

+ +
+

³íÆò

+

+ÇǽŠ¹®ÀÚ´Â ¹Ù·Î ´ÙÀ½¿¡ ¿À´Â ¹®ÀÚ°¡ Á¤»ó°ú ´Ù¸£°Ô ¹ø¿ªµÇ¾î¾ß ÇÑ´Ù´Â °ÍÀ» ³ªÅ¸³»´Â µ¥ »ç¿ëµË´Ï´Ù.

+

+±âº» ÇǽŠ¹®ÀÚ´Â ¾×¼¾Æ®/¹éƽÀÔ´Ï´Ù (`).

+ +

ÇǽŠ¿¬¼Ó¿­ (¾×¼¾Æ®°¡ ÇǽŠ¹®ÀÚÀÏ ¶§)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
´ÙÀ½ÀºÀÌ·¸°Ô ¹ø¿ªµË´Ï´Ù
`,, (±ÛÀÚ ±×´ë·ÎÀÇ ½°Ç¥). ÁÖÀÇ: ½°Ç¥°¡ ¸í·É¾îÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö¿¡ ³ªÅ¸³ª¸é ÇǽŽÃų ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ¿Ö³ÄÇϸé ÇÁ·Î±×·¥ÀÌ ±×°ÍÀ» ¹®ÀÚ ±×´ë·Î Ãë±ÞÇØ¾ß ÇÑ´Ù´Â °ÍÀ» ¾Ë°í Àֱ⠶§¹®ÀÔ´Ï´Ù. MsgBoxÀÇ ¸ðµç ¸Å°³º¯¼ö¿¡µµ ¸¶Âù°¡Áö ±ÔÄ¢ÀÌ Àû¿ëµË´Ï´Ù. ¿Ö³ÄÇÏ¸é ¶È¶ÈÇÑ ½°Ç¥ ó¸® ¹æ¹ýÀ» ¾Ë°í Àֱ⠶§¹®ÀÔ´Ï´Ù.
`%% (±ÛÀÚ ±×´ë·ÎÀÇ ÆÛ¼¾Æ®)
``` (±ÛÀÚ ±×´ë·ÎÀÇ ¾×¼¾Æ®; Áï, µÎ °³ÀÇ ¿¬¼Ó ÇǽŠ¿¬¼Ó¿­Àº ÇϳªÀÇ ±ÛÀÚ ±×´ë·ÎÀÇ ¹®ÀÚ°¡ °á°ú°¡ µË´Ï´Ù.)
`; ; (±ÛÀÚ ±×´ë·ÎÀÇ ½Ö¹ÝÁ¡). ÁÖÀÇ: ½Ö¹ÝÁ¡ÀÇ ¿ÞÂÊ¿¡ ½ºÆäÀ̽º³ª ÅÇÀÌ ÀÖÀ» °æ¿ì¿¡¸¸ ÇÊ¿äÇÕ´Ï´Ù. ±×·¸Áö ¾Ê´Ù¸é, ÇǽŽÃÅ°Áö ¾Ê¾Æµµ ¿Ã¹Ù¸£°Ô ÀÎÁöÇÕ´Ï´Ù.
`:::: (±ÛÀÚ ±×´ë·ÎÀÇ ½ÖÁ¡ ½Ö). v1.0.40+¿¡¼­´Â ´õ ÀÌ»ó ÇǽŽÃų ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.
`n»õÁÙ (¶óÀÎÇǵå/LF)
`rij¸®Áö ¸®ÅÏ (CR)
`b¹é½ºÆäÀ̽º
`tÅÇ (ÀüÇüÀûÀÎ ¼öÆò ÅÇ)
`v¼öÁ÷ ÅÇ -- Ascii °ª 11¿¡ »óÀÀ. ¾î¶² ¾îÇø®ÄÉÀ̼ǿ¡¼­´Â Control+K¸¦ ŸÀÚÇØ ¸íÈ®ÇÏ°Ô ¹àÈú ¼ö ÀÖ½À´Ï´Ù.
`aº§¼Ò¸® (bell) -- Ascii °ª 7¿¡ »óÀÀ. ¾î¶² ¾îÇø®ÄÉÀ̼ǿ¡¼­´Â Control+G¸¦ ŸÀÚÇØ ¸íÈ®ÇÏ°Ô ¹àÈú ¼ö ÀÖ½À´Ï´Ù.
`fÆûÇǵå -- Ascii °ª 12¿¡ »óÀÀ. ¾î¶² ¾îÇø®ÄÉÀ̼ǿ¡¼­´Â Control+L¸¦ ŸÀÚÇØ ¸íÈ®ÇÏ°Ô ¹àÈú ¼ö ÀÖ½À´Ï´Ù.
Send + Send ¸í·É¾î³ª ÇÖ½ºÆ®¸µÀÌ ±âº» ¸ðµå (ºñ-³¯ ¸ðµå)¿¡¼­ »ç¿ëµÉ ¶§, {}^!+#¿Í °°Àº ¹®ÀÚµéÀº Ưº°ÇÑ Àǹ̰¡ ÀÖ½À´Ï´Ù. ±×·¯¹Ç·Î, ÀÌ·± °æ¿ì ¹®ÀÚ ±×´ë·Î »ç¿ëÇÏ·Á¸é, È°°ýÈ£·Î µÑ·¯ ½Î½Ê½Ã¿À. ¿¹¸¦ µé¾î: Send {^}{!}{{}.
""Ç¥Çö½Ä ¾È¿¡¼­, ±âÈ£ ±×´ë·ÎÀÇ ¹®ÀÚ¿­ ¾È¿¡ µÑ·¯ ½ÎÀÎ µÎ °³ÀÇ ¿¬¼Ó µû¿ÈÇ¥´Â ¹®ÀÚ ±×´ë·ÎÀÇ ÇϳªÀÇ µû¿ÈÇ¥·Î °áÁ¤µË´Ï´Ù. + ¿¹¸¦ µé¾î: Var := "The color ""red"" was found.".
+

°ü·Ã Ç׸ñ

+

+ +Àß »ç¿ëµÇÁö ¾Ê´Â ´ÙÀ½ Áö½Ã¾îµµ Á¸ÀçÇÕ´Ï´Ù; »ç¿ë¹ýÀº ´ÙÀ½ ¿¹Á¦¿¡ º¸¿©ÁÝ´Ï´Ù:

+ +
#DerefChar #  ; º¸ÅëÀÇ ±âº»°ª ÆÛ¼¾Æ®¸¦ ¼¥À¸·Î ¹Ù²ß´Ï´Ù.
+#Delimiter /  ; º¸ÅëÀÇ ±âº»°ª ½°Ç¥¸¦ Á¤»ç¼±À¸·Î ¹Ù²ß´Ï´Ù
+ +

¿¹Á¦

+
#EscapeChar \  ; ±âº» °ª ¾×¼¾Æ® (`) ´ë½Å¿¡ ¿ª»ç¼±À¸·Î º¯°æÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/_HotkeyInterval.htm b/src/docs/commands/_HotkeyInterval.htm new file mode 100644 index 0000000..067f316 --- /dev/null +++ b/src/docs/commands/_HotkeyInterval.htm @@ -0,0 +1,35 @@ + + + + +#HotkeyInterval + + + + + + + +

#HotkeyInterval

+ +

#MaxHotkeysPerInterval°ú ÇÔ²², ÇÖÅ°ÀÇ È°¼ºÈ­ ºñÀ²À» ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ °ªÀ» ³Ñ¾î¼­¸é °æ°í ´ëÈ­»óÀÚ°¡ Ÿ³ª³³´Ï´Ù.

+ +
#HotkeyInterval Milliseconds
+

¸Å°³º¯¼ö

+
+ +
Milliseconds
+

¹Ð¸®ÃÊ ´ÜÀ§·Î °£°ÝÀÇ ±æÀÌ.

+ +
+

³íÆò

+

½ºÅ©¸³Æ®¿¡ ÀÌ Áö½Ã¾î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ¸¶Ä¡ 2000À» ÁöÁ¤ÇÑ °Íó·³ ÇàÀ§ÇÕ´Ï´Ù.

+

ÀÚ¼¼ÇÑ ³»¿ë°ú ³íÆòÀº #MaxHotkeysPerInterval¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

°ü·Ã Ç׸ñ

+

#MaxHotkeysPerInterval

+

¿¹Á¦

+
#HotkeyInterval 2000  ; ÀÌ°ÍÀÌ ±âº»°ªÀÔ´Ï´Ù (¹Ð¸®ÃÊ).
+#MaxHotkeysPerInterval 200
+ + + diff --git a/src/docs/commands/_HotkeyModifierTimeout.htm b/src/docs/commands/_HotkeyModifierTimeout.htm new file mode 100644 index 0000000..3ff751b --- /dev/null +++ b/src/docs/commands/_HotkeyModifierTimeout.htm @@ -0,0 +1,55 @@ + + + + +#HotkeyModifierTimeout + + + + + + + +

#HotkeyModifierTimeout

+ +

ÇÖÅ° ¼ö½ÄÀÚÀÇ ÇàÀ§¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù: CTRL, ALT, WIN, ±×¸®°í SHIFT.

+ +
#HotkeyModifierTimeout Milliseconds
+

¸Å°³º¯¼ö

+
+ +
Milliseconds
+

¹Ð¸®ÃÊ ´ÜÀ§ °£°Ý. °ªÀÌ -1ÀÌ¸é ½Ã°£ Á¦ÇÑÀÌ ¾ø½À´Ï´Ù (¼ö½Ä Å°´Â Send ÈÄ¿¡ ¾ðÁ¦³ª Á¦ÀÚ¸®·Î µ¹¾Æ¿É´Ï´Ù), ¶Ç´Â 0ÀÌ¸é ¾ðÁ¦³ª ½Ã°£ Á¦ÇÑÀÌ ÀÖ½À´Ï´Ù (¼ö½Ä Å°´Â Àý´ë·Î Á¦ÀÚ¸®·Î µ¹¾Æ¿ÀÁö ¾Ê½À´Ï´Ù).

+ +
+

³íÆò

+

ÀÌ Áö½Ã¾î´Â ´ÙÀ½°ú °°Àº °æ¿ì »ç¿ëÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù:

+
    +
  • ÇÖÅ°°¡ SendInputÀ̳ª SendPlay ¹æ¹ýÀ¸·Î Å°´­¸²À» Àü¼ÛÇÒ °æ¿ì, Send ¸í·É¾î°¡ ¿Ï·áµÉ ¶§±îÁö ÀÌ ¸Þ½îµåµéÀº »ç¿ëÀÚ Å°ÀÇ ¹°¸®Àû ´­¸²À̳ª ¶ÀÀ» ¿¬±âÇϱ⠶§¹®ÀÔ´Ï´Ù.
  • +
  • ½ºÅ©¸³Æ®¿¡ Å°º¸µå °¥°í¸®°¡ ¼³Ä¡µÇ¾î ÀÖÀ» °æ¿ì (¸ÞÀΠâÀÇ "View->Key history" ¸Þ´º Ç׸ñÀ̳ª KeyHistory ¸í·É¾î¸¦ ÅëÇÏ¿© ½ºÅ©¸³Æ®°¡ °¥°í¸®¸¦ »ç¿ëÇÏ´ÂÁö ¾Ë¾Æº¼ ¼ö ÀÖ½À´Ï´Ù), »ç¿ëÀÚ°¡ ¹°¸®ÀûÀ¸·Î ¾î´À ¼ö½Ä Å°¸¦ (ALT/CTRL/WIN/SHIFT) ´©¸£´ÂÁö °¥°í¸®°¡ ÃßÀûÇÒ ¼ö ÀÖ°í ±×¸®°í ½Ã°£Á¦ÇÑÀ» »ç¿ëÇÒ ÇÊ¿ä°¡ ¾ø±â ¶§¹®ÀÔ´Ï´Ù.
  • +
+

+ÀÌ Áö½Ã¾îÀÇ È¿°ú¸¦ ½Ã¿¬Çϱâ À§ÇØ, ´ÙÀ½ ¿¹Á¦¸¦ »ý°¢ÇØ º¸½Ê½Ã¿À: ^!a::Send, abc.

+

+Send ¸í·É¾î°¡ ½ÇÇàµÇ¸é, ù ¹ø°·Î CTRL°ú ALT Å°¸¦ ¶Á´Ï´Ù. ±×·¡¼­ ¹®ÀÚµéÀÌ Á¦´ë·Î Àü¼ÛµË´Ï´Ù. ¸ðµç Å°¸¦ º¸³»°í ³ª¸é, ¸í·É¾î´Â ¾î¶»°Ô ÇØ¾ß CTRL°ú ALT¸¦ ¾ÈÀüÇÏ°Ô Á¦ÀÚ¸®·Î µ¹·Á³õÀ» ¼ö ÀÖÀ»Áö ¾ËÁö ¸øÇÕ´Ï´Ù (»ç¿ëÀÚ°¡ ¿©ÀüÈ÷ ¼ö½Ä Å°¸¦ ´©¸£°í ÀÖ´ÂÁö ¾î¶²Áö ¾Ë ¼ö°¡ ¾ø±â ¶§¹®ÀÔ´Ï´Ù). + +±×·¯³ª ÁöÁ¤µÈ ¹Ð¸®ÃÊ ½Ã°£ µ¿¾È¿¡´Â »ç¿ëÀÚ°¡ ¾ÆÁ÷ Å°¸¦ ¶¿ ±âȸ¸¦ °®Áö ¸øÇß´Ù°í °£ÁÖÇÏ°í ¼ö½Ä Å°µéÀ» ¹°¸®Àû »óÅ¿¡ ¸Â°Ô ´Ù½Ã µ¹·Á ³õ½À´Ï´Ù. ÁöÁ¤µÈ ½Ã°£ÀÌ Áö³ª¸é, ¼ö½Ä Å°´Â ´Ù½Ã Á¦ÀÚ¸®·Î µ¹¾Æ¿ÀÁö ¾Ê½À´Ï´Ù. ¼ö½ÄÅ°°¡ Å°¸¦ º¯°æÇϵµ·Ï ¸¸µé·Á¸é »ç¿ëÀÚ´Â ¼ö½Ä Å°¸¦ ¶¼°í ´Ù½Ã ´­·¯¾ß ÇÕ´Ï´Ù.

+

+½Ã°£Á¦ÇÑÀº »ç¿ëÀÚ°¡ ÀüÇüÀûÀ¸·Î ÇÖÅ°ÀÇ ¼ö½ÄÀÚ¸¦ ¶¼±â Àü¿¡ ´©¸£°í ÀÖ´Â ½Ã°£º¸´Ù ÀÛÀº °ªÀ¸·Î ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ¼ö½ÄÅ°´Â »ç¿ëÀÚ°¡ ¹°¸®ÀûÀ¸·Î ´©¸£°í ÀÖÁö ¾Ê¾Æµµ ´©¸¥ À§Ä¡·Î º¹±¸µÇ¾î ¹ö¸± ¼ö ÀÖ½À´Ï´Ù (´­¸° »óÅ°¡ µÊ).

+

+ÀÌ Áö½Ã¾îÀÇ »ç¿ëÀ» ÁÙÀ̰ųª Çʿ並 ¾ø¾Ù ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ Áß Çϳª¸¦ »ç¿ëÇϸé:

+
    +
  • Å°º¸µå °¥°í¸®¸¦ ¼³Ä¡ÇÕ´Ï´Ù. ½ºÅ©¸³Æ® ¾Æ¹«µ¥³ª #InstallKeybdHookÁÙÀ» Ãß°¡ÇÏ¸é µË´Ï´Ù.
  • +
  • ÀüÅëÀûÀÎ SendEvent ¹æ¹ý ¸»°í SendInput ¶Ç´Â SendPlay ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù.
  • +
  • ÀüÅëÀûÀÎ SendEvent ¹æ¹ýÀ» »ç¿ëÇÒ ¶§, SetKeyDelay¸¦ 0 ¶Ç´Â -1·Î ÁÙÀ̽ʽÿÀ. Å°´­¸²ÀÌ ´õ ºü¸£°Ô Àü´ÞµÇ±â ¶§¹®¿¡ µµ¿òÀÌ µÉ °ÍÀÔ´Ï´Ù.
  • +
+

+ÀÌ Áö½Ã¾î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, 50À¸·Î ¼³Á¤µÈ °Íó·³ ÇàÀ§ÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

GetKeyState

+

¿¹Á¦

+
#HotkeyModifierTimeout 100
+ + + diff --git a/src/docs/commands/_Hotstring.htm b/src/docs/commands/_Hotstring.htm new file mode 100644 index 0000000..b9743f3 --- /dev/null +++ b/src/docs/commands/_Hotstring.htm @@ -0,0 +1,53 @@ + + + + +#Hotstring + + + + + + + +

#Hotstring

+ +

ÇÖ½ºÆ®¸µ ¿É¼ÇÀ̳ª Á¾·á ¹®ÀÚ¸¦ º¯°æÇÕ´Ï´Ù.

+ +
#Hotstring NoMouse
+#Hotstring EndChars NewChars
+#Hotstring NewOptions
+

¸Å°³º¯¼ö

+
+ +
NoMouse
+

¸¶¿ì½º Ŭ¸¯ ¶§¹®¿¡ ¿©±â¿¡ ±â¼úÇÏ´Â ¹Ù¿Í °°ÀÌ ÇÖ½ºÆ®¸µ ÀνÄÀÚ°¡ Àç¼³Á¤µÇÁö ¾Êµµ·Ï ¸·½À´Ï´Ù. + ºÎÀÛ¿ëÀ¸·Î¼­, ÀÌ°ÍÀº ¶Ç ¸¶¿ì½º °¥°í¸®¸¦ ÇÖ½º¸µÀÌ ¿ä±¸ÇÏÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù (±×·¸Áö¸¸ ½ºÅ©¸³Æ®°¡ ´Ù¸¥ ¸ñÀûÀ¸·Î ¿ä±¸ÇÏ¸é ¿©ÀüÈ÷ ¼³Ä¡µÉ °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ¸¶¿ì½º ÇÖÅ°). #Hotstring NoMouseÀÌ ½ºÅ©¸³Æ®¿¡ Á¸ÀçÇÏ¸é ¸ðµç ÇÖ½ºÆ®¸µ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù. ´Ü¼øÈ÷ ¹°¸®ÀûÀ¸·Î ±× ¾Æ·¡¿¡¸¸ ¿µÇâÀ» ¹ÌÄ¡´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù.

+ +
EndChars NewChars
+

´Ü¾î EndChars ´ÙÀ½¿¡ ½ºÆäÀ̽º¸¦ Çϳª µÎ°í ´ÙÀ½¿¡ »õ Á¾·á ¹®ÀÚ¸¦ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î:

+
#Hotstring EndChars -()[]{}':;"/\,.?!`n `t
+

+ »õ Á¾·á ¹®ÀÚ´Â Àüü ½ºÅ©¸³Æ®¿¡ Àü¿ªÀûÀ¸·Î È¿°ú°¡ ÀÖÀ¸¹Ç·Î -- EndChars Áö½Ã¾î°¡ ¾îµð¿¡ ³ªÅ¸³ª´Â°¡¿¡ »ó°ü ¾øÀÌ -- EndChars¸¦ ÇÑ ¹ø ÀÌ»ó ÁöÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

+

+ Á¾·á ¹®ÀÚÀÇ ÃÖ´ë °³¼ö´Â 100°³ÀÔ´Ï´Ù. ÀÌ ±æÀ̸¦ ³Ñ¾î¼­´Â ¹®ÀÚ´Â ¹«½ÃÇÕ´Ï´Ù.

+

+ ÅÇÀ» Á¾·á ¹®ÀÚ·Î ¸¸µé·Á¸é, ¸ñ·Ï¿¡ `t¸¦ Æ÷ÇÔÇϽʽÿÀ. ½ºÆäÀ̽º¸¦ Á¾·á ¹®ÀÚ·Î ¸¸µé·Á¸é, ¸ñ·Ï¿¡ µÎ °³ÀÇ ´Ù¸¥ ¹®ÀÚ »çÀÌ¿¡ Æ÷ÇÔÇÏ¸é µË´Ï´Ù (¶Ç´Â ¸®½ºÆ®¿¡ ¿ÀÁ÷ ¹®ÀÚ°¡ Çϳª ¹Û¿¡ ¾ø´Ù¸é ¶Ç´Â Çϳªµµ ¾ø´Ù¸é, óÀ½¿¡ Æ÷ÇÔ½Ãŵ´Ï´Ù).

+ +
NewOptions
+

ÇÖ½ºÆ®¸µ ¿É¼Ç¿¡ ±â¼úÇÏ´Â ¹Ù¿Í °°ÀÌ »õ ¿É¼ÇÀ» ÁöÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: #Hotstring r s k0 c0.

+

À§ÀÇ EndChars¿Í ´Ù¸£°Ô, #Hotstring Áö½Ã¾î´Â ÀÌ·± ½ÄÀ¸·Î »ç¿ëµÉ ¶§ À§Ä¡¿¡ ¹Î°¨ÇÕ´Ï´Ù. ´Ù¸¥ ¸»·Î Çϸé, ÇÖ½ºÆ®¸µÀÇ Àüü ¼½¼ÇÀº ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ±âº» ¿É¼ÇÀÌ ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù:

+
::btw::by the way
+
+#Hotstring r c  ; ÀÌ ¾Æ·¡ÀÇ ÇÖ½ºÆ®¸µÀº ¸ðµÎ "³¯ Àü¼Û ¸ðµå"¸¦ »ç¿ëÇÏ°í ±âº»À¸·Î ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù.
+::al::airline
+::CEO::Chief Executive Officer
+
+#Hotstring c0  ; ÀÌ ÁöÁ¡ ¾Æ·¡ÀÇ ¸ðµç ÇÖ½ºÆ®¸µÀ» ´ë¼Ò¹®ÀÚ¿¡ ¹«°¨°¢ÇÏ°Ô ¸¸µì´Ï´Ù.
+ +
+

°ü·Ã Ç׸ñ

+

Hotstrings

+ + + diff --git a/src/docs/commands/_If.htm b/src/docs/commands/_If.htm new file mode 100644 index 0000000..b645dfc --- /dev/null +++ b/src/docs/commands/_If.htm @@ -0,0 +1,98 @@ + + + + +#If + + + + + + + + +

#If [AHK_L]

+ +

¹®¸Æ-°¨Áö ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀ» ¸¸µì´Ï´Ù. ¹®¸Æ °¨Áö ÇÖÅ°´Â Ç¥Çö½ÄÀÇ °á°ú¿¡ µû¶ó ´Ù¸£°Ô Á¶Ä¡¸¦ ¼öÇàÇÕ´Ï´Ù (¶Ç´Â ¾Æ¹«°Íµµ ÇÏÁö ¾Ê½À´Ï´Ù).

+ +
#If [, Expression ]
+

¸Å°³º¯¼ö

+
+ +
Expression
+

À¯È¿ÇÑ Ç¥Çö½Ä.

+ +
+ +

±âº» ¿¬»ê

+

+À¯È¿ÇÑ ¿¬»ê½ÄÀ̸é ÇÖÅ°°¡ È°¼ºÈ­ µÉ ¹®¸ÆÀ» Á¤ÀÇÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
#If WinActive("ahk_class Notepad") or WinActive(MyWindowTitle)
+#Space::MsgBox You pressed Win+Spacebar in Notepad or %MyWindowTitle%.
+

+#IfWin Áö½Ã¾îó·³, #Ifµµ À§Ä¡¿¡ ¹Î°¨ÇÕ´Ï´Ù: ½ºÅ©¸³Æ®¿¡¼­ ¹°¸®ÀûÀ¸·Î ¾Æ·¡¿¡ ÀÖ´Â ¸ðµç ÇÖÅ°¿Í ÇÖ½ºÆ®¸µ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù. #If ±×¸®°í #IfWin´Â ¶Ç »óÈ£ ¹èŸÀûÀÔ´Ï´Ù; Áï, °¡Àå ÃÖ±ÙÀÇ #If ¶Ç´Â #IfWin¸¸ È¿°ú°¡ ÀÖ½À´Ï´Ù.

+

+¹®¸Æ °¨Áö¸¦ ²ô·Á¸é, ¸ðµç ¸Å°³º¯¼ö¸¦ »ý·«ÇÏ°í #If ¶Ç´Â #IfWin Áö½Ã¾î¸¦ ÁöÁ¤ÇÏ¸é µË´Ï´Ù. ¿¹¸¦ µé¾î:

+
#If
+ +

ÃÑÆò

+

+ÇÖÅ°¸¦ ±¸¼ºÇÏ´Â Å° Á¶ÇÕÀÌ ´­¸®¸é, #If Ç¥Çö½ÄÀ» Æò°¡ÇÏ¿© ±× ÇÖÅ°¸¦ È°¼ºÈ­ ÇÒÁö ¸»Áö¸¦ °áÁ¤ÇÕ´Ï´Ù. Ç¥Çö½ÄÀÇ Æò°¡°¡ ¿Ï·áµÉ ¶§±îÁö ¶Ç´Â ½Ã°£Á¦ÇÑÀÌ Ç®¸± ¶§±îÁö ½Ã½ºÅÛÀº Å°º¸µå³ª ¸¶¿ì½º ÀԷ¿¡ ÀÀ´äÇÏÁö ¾ÊÀ» °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. Ç¥Çö½ÄÀÌ Æò°¡µÇ°í ÀÖ´Â µ¿¾È¿¡ (¿¹¸¦ µé¾î Ç¥Çö½ÄÀÌ È£ÃâÇÑ ÇÔ¼ö·ÎºÎÅÍ) Å°´­¸²À̳ª ¸¶¿ì½º Ŭ¸¯À» Àü¼ÛÇÏ¸é º¹ÀâÇÑ ÀÏÀÌ ¾ß±âµÇ¹Ç·Î ÇÇÇÏ´Â ÆíÀÌ ÁÁ½À´Ï´Ù.

+

+Ç¥Çö½ÄÀº ÇÁ·Î±×·¥ÀÌ ÇÖÅ°°¡ È°¼ºÈ­µÇ¾î ÀÖ´ÂÁö ¾Ë ÇÊ¿ä°¡ ÀÖÀ» ¶§¸¶´Ù Æò°¡µÉ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, a & b::¿Í °°Àº ¸ÂÃã Á¶ÇÕ¿¡ ´ëÇÏ¿© #If Ç¥Çö½ÄÀº Á¢µÎ Å°°¡ (ÀÌ ¿¹Á¦¿¡¼­´Â a) ´­¸± ¶§ Æò°¡µÇ¾î, ¸ÂÃã ¼ö½Ä Å°·Î ÇàÀ§ÇØ¾ß ÇÒÁö ¸»Áö °áÁ¤ÇÕ´Ï´Ù.

+

+À§¿¡ ±â¼úÇÑ ÀÌÀ¯ ¶§¹®¿¡, Ç¥Çö½ÄÀº ¹Ýµå½Ã »¡¸® ¿Ï·áµÇµµ·Ï ±×¸®°í ºÎÀÛ¿ëÀÌ ¾øµµ·Ï ÀÛ¼ºÇØ¾ß ÇÕ´Ï´Ù.

+

+[AHK_L 53+]: A_ThisHotkey¿Í A_TimeSinceThisHotkey´Â ÇöÀç #If Ç¥Çö½ÄÀÌ Æò°¡µÇ°í ÀÖ´Â ÇÖÅ°¿¡ ±â¹ÝÇϵµ·Ï ¼³Á¤µË´Ï´Ù.

+

[v1.0.95.00+]: A_PriorHotkey¿Í A_TimeSincePriorHotkey´Â Àӽ÷Π"This" º¯¼ö¿¡ »óÀÀÇÏ´Â ÀÌÀüÀÇ °ªÀ» ´ã°í ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+#IfWin Áö½Ã¾îÀÇ ÇàÀ§ Ư¼ºÀº ´ëºÎºÐ #If¿¡µµ Àû¿ëµË´Ï´Ù.

+

#IfTimeoutÀ» »ç¿ëÇÏ¸é ±âº» ½Ã°£Á¦ÇÑ °ªÀ» ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.

+ +

¿¹Á¦

+
+; ¿¹Á¦ 1: ŽºÅ© ¹Ù À§¿¡¼­ ¸¶¿ì½º ÈÙÀ» ½ºÅ©·ÑÇؼ­ º¼·ýÀ» Á¶ÀýÇÕ´Ï´Ù.
+#If MouseIsOver("ahk_class Shell_TrayWnd")
+WheelUp::Send {Volume_Up}
+WheelDown::Send {Volume_Down}
+
+MouseIsOver(WinTitle) {
+    MouseGetPos,,, Win
+    return WinExist(WinTitle . " ahk_id " . Win)
+}
+
+; ¿¹Á¦ 2: ¸ðµç ÆíÁý ÄÜÆ®·ÑÀ» À§ÇÑ °£´ÜÇÑ ´Ü¾î-»èÁ¦ ´ÜÃàÅ°.
+#If ActiveControlIsOfClass("Edit")
+^BS::Send ^+{Left}{Del}
+^Del::Send ^+{Right}{Del}
+
+ActiveControlIsOfClass(Class) {
+    ControlGetFocus, FocusedControl, A
+    ControlGet, FocusedControlHwnd, Hwnd,, %FocusedControl%, A
+    WinGetClass, FocusedControlClass, ahk_id %FocusedControlHwnd%
+    return (FocusedControlClass=Class)
+}
+
+; ¿¹Á¦ 3: ¹®¸Æ-°¨Áö ÇÖÅ°.
+#If
+Esc::ExitApp
+
+; ¿¹Á¦ 4: µ¿ÀûÀÎ ÇÖÅ°. ¿¹Á¦ 1À» ÇÊ¿ä·Î ÇÔ.
+NumpadAdd::
+Hotkey, If, MouseIsOver("ahk_class Shell_TrayWnd")
+if (doubleup := !doubleup)
+    Hotkey, WheelUp, DoubleUp
+else
+    Hotkey, WheelUp, WheelUp
+return
+
+DoubleUp:
+Send {Volume_Up 2}
+return
+
+ + + diff --git a/src/docs/commands/_IfTimeout.htm b/src/docs/commands/_IfTimeout.htm new file mode 100644 index 0000000..e142d83 --- /dev/null +++ b/src/docs/commands/_IfTimeout.htm @@ -0,0 +1,48 @@ + + + + +#IfTimeout + + + + + + + + +

#IfTimeout [AHK_L 8+]

+ +

#If Ç¥Çö½Ä Çϳª¸¦ Æò°¡ÇÏ´Â µ¥ ¼Ò¸ðµÉ ÃÖ´ë ½Ã°£À» ¼³Á¤ÇÕ´Ï´Ù.

+ +
#IfTimeout Timeout
+

¸Å°³º¯¼ö

+
+ +
Timeout
+

timeout °ªÀº ¹Ð¸®ÃÊ ´ÜÀ§·Î Àü¿ªÀûÀ¸·Î Àû¿ëµË´Ï´Ù.

+ +
+ +

³íÆò

+

+½Ã°£Á¦ÇÑÀº ¿À·§ µ¿¾È ½ÇÇàµÇ´Â Ç¥Çö½Ä ¶§¹®¿¡ Å°º¸µå ÀԷ ó¸®°¡ ÁöüµÇÁö ¾Êµµ·Ï ±¸ÇöµÇ¾î ÀÖ½À´Ï´Ù. ½Ã°£Á¦ÇÑ °ªÀ» ÃÊ°úÇϸé, Ç¥Çö½ÄÀº °è¼Ó Æò°¡¸¦ ÇÏÁö¸¸, Å°º¸µå °¥°í¸®´Â ¸¶Ä¡ ±× Ç¥Çö½ÄÀÌ ÀÌ¹Ì °ÅÁþÀ» µ¹·ÁÁØ °Íó·³ °è¼ÓµË´Ï´Ù.

+

+ÀÌ Áö½Ã¾î¸¦ ½ºÅ©¸³Æ®¿¡ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, ¸¶Ä¡ 1000ÀÌ ¼³Á¤µÇ¾î ÀÖ´Â °Íó·³ ÇàÀ§ÇÕ´Ï´Ù.

+

+½Ã½ºÅÛÀº ÀڽŸ¸ÀÇ ½Ã°£Á¦ÇÑÀÌ ÀÖ´Ù´Â »ç½ÇÀ» ¸í½ÉÇϽʽÿÀ. ´ÙÀ½ ·¹Áö½ºÆ®¸® Å°¿¡ DWORD °ª LowLevelHooksTimeout·Î Á¤ÀǵǾî ÀÖ½À´Ï´Ù:

+ +

HKEY_CURRENT_USER\Control Panel\Desktop

+

+½Ã½ºÅÛ ½Ã°£Á¦ÇÑ °ªÀ» ÃÊ°úÇϸé, ½Ã½ºÅÛÀº ½ºÅ©¸³Æ®ÀÇ Å°º¸µå °¥°í¸® È£ÃâÀ» ÁßÁöÇÕ´Ï´Ù. ±×·¡¼­ ±× °¥°í¸®°¡ Àçµî·ÏµÇ°Å³ª ½ºÅ©¸³Æ®°¡ ÀçÀûÀçµÉ ¶§±îÁö °¥°í¸® ÇÖÅ°µéÀÌ ÀÛµ¿ÇÏÁö ¸øÇÕ´Ï´Ù. ±× °¥°í¸®´Â º¸Åë Àçµî·ÏÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸ðµç ÇÖÅ°¸¦ º¸·ùÇÏ°í Ç®¾îÁÖ¸é µË´Ï´Ù.

+

+ÁÖ¾îÁø ÇÖÅ°¿¡ ¿©·¯ #If º¯ÇüÀÌ µé¾î ÀÖÀ¸¸é, ½Ã°£Á¦ÇÑÀº °¢ º¯Çü¸¶´Ù µ¶¸³ÀûÀ¸·Î Àû¿ëµË´Ï´Ù. ±×·¡¼­, ½Ã½ºÅÛ ½Ã°£Á¦ÇÑÀ» ÃÊ°úÇÒ °¡´É¼ºÀÌ ´õ ³ô¾ÆÁý´Ï´Ù. ÀÌ ÇàÀ§´Â ¾ÕÀ¸·Î ¾÷µ¥ÀÌÆ®µÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

#If

+ +

¿¹Á¦

+
#IfTimeout 10 ; ½Ã°£Á¦ÇÑÀ» 10 ms·Î ¼³Á¤ÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/_IfWinActive.htm b/src/docs/commands/_IfWinActive.htm new file mode 100644 index 0000000..a444075 --- /dev/null +++ b/src/docs/commands/_IfWinActive.htm @@ -0,0 +1,127 @@ + + + + +#IfWinActive / #IfWinExist + + + + + + + +

#IfWinActive / #IfWinExist

+ +

¹®¸Æ-°¨Áö ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀ» ¸¸µì´Ï´Ù. ±×·± ÇÖÅ°´Â È°¼ºÈ­ µÈ ¶Ç´Â Á¸ÀçÇϴ âÀÇ Á¾·ù¿¡ µû¶ó ´Ù¸¥ Á¶Ä¡¸¦ ¼öÇàÇÕ´Ï´Ù (¶Ç´Â ¾Æ¹«Àϵµ ÇÏÁö ¾Ê½À´Ï´Ù).

+ +
#IfWinActive [, WinTitle, WinText]
+#IfWinExist [, WinTitle, WinText]
+#IfWinNotActive [, WinTitle, WinText]
+#IfWinNotExist [, WinTitle, WinText]
+#If [, Expression]
+ +

¸Å°³º¯¼ö

+
+ +
WinTitle
+

¸ñÇ¥ âÀ» ½Äº°Çϴ â Á¦¸ñ ¶Ç´Â ´Ù¸¥ ±âÁØ. WinTitle ÂüÁ¶.

+

ºÎÇÕÇÏ´Â ÇàÀ§´Â ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡ ¼³Á¤µÈ ´ë·ÎSetTitleMatchMode°¡ °áÁ¤ÇÕ´Ï´Ù.

+

´ëºÎºÐÀÇ ´Ù¸¥ Áö½Ã¾îó·³, º¯¼ö´Â Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ahk_pid¿Í ahk_id¸¦ Çϵå-ÄÚµåµÈ ÇÁ·Î¼¼½º³ª â ID¿Í ÇÔ²² »ç¿ëÇÒ ¼ö´Â ÀÖÁö¸¸, ´õ ÀϹÝÀûÀÎ °ÍÀº #IfWinÀÌ °£Á¢ÀûÀ¸·Î GroupAdd³ª Hotkey IfWinÀ» ÅëÇÏ¿© »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.

+
+ +
WinText
+

Á¸ÀçÇϸé, ÀÌ ¸Å°³º¯¼ö´Â ¸ñÇ¥ â ÅؽºÆ®ÀÇ ºÎ¹®ÀÚ¿­ÀÔ´Ï´Ù (µ¿ºÀµÈ Window Spy À¯Æ¿¸®Æ¼¿¡ ³ëÃâµÊ). ¼ûÀº ÅؽºÆ®´Â DetectHiddenTextÀÌ ÀÚµ¿-½ÇÇà ¼½¼Ç (½ºÅ©¸³Æ®ÀÌ ÃÖ»ó´Ü)¿¡ ÄÑÁ® ÀÖÀ¸¸é ŽÁöµË´Ï´Ù.

+ +
ExcludeTitle
+ ExcludeText
+

À̰͵éÀº Áö¿øµÇÁö ¾ÊÁö¸¸, WinTitle´ëÇÏ¿© ahk_group MyGroup¸¦ ÁöÁ¤ÇÏ¸é °£Á¢ÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù (¿©±â¿¡¼­ MyGroupÀº GroupAdd¸¦ ÅëÇÏ¿© »ý¼ºµÈ ±×·ìÀ̸ç, ÀÌ ±×·ìÀº ExcludeTitle/Text¸¦ Áö¿øÇÕ´Ï´Ù).

+ +
+ +

±âº» ¿¬»ê

+

+#IfWin Áö½Ã¾î·Î ¹®¸Æ °¨Áö ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀ» ½±°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
#IfWinActive ahk_class Notepad
+#space::MsgBox ³ëÆ®ÆÐµå ¾È¿¡¼­ Win+Spacebar¸¦ ´­·¶½À´Ï´Ù.
+

+#IfWin Áö½Ã¾î´Â À§Ä¡¿¡ ¹Î°¨ÇÕ´Ï´Ù: ½ºÅ©¸³Æ®¿¡¼­ ¹°¸®ÀûÀ¸·Î ¾Æ·¡¿¡ ÀÖ´Â ¸ðµç ÇÖÅ°¿Í ÇÖ½ºÆ®¸µ¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù. ÀÌ µÑÀº ¶Ç »óÈ£ ¹èŸÀûÀÔ´Ï´Ù; Áï, °¡Àå ÃÖ½ÅÀÇ °Í¸¸ È¿°ú°¡ ÀÖ½À´Ï´Ù.

+

+¹®¸Æ °¨Áö¸¦ ²ô·Á¸é, ¸Å°³º¯¼ö ¾øÀÌ #IfWin Áö½Ã¾î¸¦ ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î:

+ +
#IfWinActive
+

+#IfWinÀÌ ²¨Á® ÀÖÀ» ¶§ (¶Ç´Â ½ºÅ©¸³Æ®¿¡ ÀüÇô »ç¿ëµÇÁö ¾ÊÀ¸¸ç), ¸ðµç ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀÌ ¸ðµç â¿¡ ´ëÇÏ¿© È°¼ºÈ­ µË´Ï´Ù (Suspend³ª Hotkey ¸í·É¾î¸¦ ÅëÇÏ¿© ²ø ¼ö ÀÖ½À´Ï´Ù).

+

+¸¶¿ì½º³ª Å°º¸µå ÇÖÅ°°¡ #IfWin¸¦ ÅëÇÏ¿© ²¨Á® ÀÖÀ» ¶§, °íÀ¯ÀÇ ±â´ÉÀ» ¼öÇàÇÕ´Ï´Ù; Áï, ¸¶Ä¡ ±×·± ÇÖÅ°°¡ ÀüÇô ¾ø´Â °Íó·³ È°¼º â¿¡ °Ç³×Áý´Ï´Ù. ÇÑ °¡Áö ¿¹¿Ü°¡ ÀÖ½À´Ï´Ù: Á¶À̽ºÆ½ ÇÖÅ°´Â: #IfWinÀÌ ÀÛµ¿ÇÏ´õ¶óµµ, ´Ù¸¥ ÇÁ·Î±×·¥ÀÌ ¹öÆ° ´©¸§À» º¸´Â °ÍÀ» ¸·Áö ¾Ê½À´Ï´Ù.

+

+#IfWin´Â ¶Ç Á¤»ó Å°ÀÇ ÇàÀ§¸¦ ¸¶Ä¡ ¿£ÅÍÅ°³ª ½ºÆäÀ̽º Űó·³ ¹Ù²Ù´Â µ¥¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. À̴ ƯÁ¤ âÀÌ ±× Å°¸¦ ¹«½ÃÇϰųª ¸¶À½¿¡ ¾Èµå´Â ÇàÀ§¸¦ ¼öÇàÇÒ °æ¿ì À¯¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
#IfWinActive Reminders ahk_class #32770  ; ¾Æ¿ô·èÀÇ "¾Ë¸®¹Ì" â.
+Enter::Send !o  ; "Enter" Å°´­¸²Àº ¼±ÅÃµÈ ¾Ë¸®¹Ì¸¦ Àç¿ì´Â°Ô ¾Æ´Ï¶ó ¿­¸®µµ·Ï ¸¸µì´Ï´Ù.
+#IfWinActive
+ +

º¯Á¾ (Áߺ¹) ÇÖÅ°

+

+ƯÁ¤ ÇÖÅ°³ª ÇÖ½ºÆ®¸µÀº °¢ Á¤ÀǸ¶´Ù #IfWin ±âÁØÀÌ ´Ù¸£´Ù¸é ½ºÅ©¸³Æ®¿¡ ÇÑ ¹ø ÀÌ»ó Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀ» ÇÖÅ° º¯Á¾À̶ó°í ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
#IfWinActive ahk_class Notepad
+^!c::MsgBox ³ëÆ®Æе忡¼­ Control+Alt+C¸¦ ´­·¶½À´Ï´Ù.
+#IfWinActive ahk_class WordPadClass
+^!c::MsgBox ¿öµåÆе忡¼­ Control+Alt+C¸¦ ´­·¶½À´Ï´Ù.
+#IfWinActive
+^!c::MsgBox ³ëÆ®Æеå/¿öµåÆе尡 ¾Æ´Ñ â¿¡¼­ Control+Alt+C¸¦ ´­·¶½À´Ï´Ù.
+

+¿©·¯ º¯Á¾ÀÌ ÃË¹ßµÉ ¼ö ÀÖ´Ù¸é, ½ºÅ©¸³Æ®¿¡¼­ Á¦ÀÏ À§ÂÊ¿¡ ÀÖ´Â º¯Á¾¸¸ Ã˹ߵ˴ϴÙ. ¿¹¿Ü°¡ ÀÖ´Ù¸é Àü¿ª º¯Á¾ÀÔ´Ï´Ù (#IfWin ±âÁØÀÌ ÀüÇô ¾ø´Ù¸é): ¾ðÁ¦³ª °¡Àå ¿ì¼± ¼øÀ§°¡ ³·½À´Ï´Ù. ±×·¯¹Ç·Î, °æÀï »ó´ë·Î ´Ù¸¥ º¯Á¾ÀÌ ÀüÇô ¾øÀ» °æ¿ì¿¡¸¸ Ã˹ߵ˴ϴ٠(ÀÌ ¿¹¿Ü´Â ÇÖ½ºÆ®¸µ¿¡ Àû¿ëµÇÁö ¾Ê½À´Ï´Ù).

+

+Áߺ¹ ÇÖÅ°¸¦ ¸¸µé ¶§, ^!+#¿Í °°Àº ¼ö½Ä ½Éº¼ÀÇ ¼ø¼­´Â ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, ^!c´Â !^c¿Í µ¿ÀÏÇÕ´Ï´Ù. ±×·¸Áö¸¸, Å°´Â ÀÏ°ü¼ºÀÌ ÀÖ°Ô Ã¶ÀÚ°¡ µÇ¾î¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ÀÌ·± ¸ñÀûÀ¸·Î Esc´Â Escape¿Í °°Áö ¾Ê½À´Ï´Ù (±×·¸Áö¸¸ ´ë¼Ò¹®ÀÚ´Â ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù). ¶Ç, ¿ÍÀϵåÄ«µå Á¢µÎ ½Éº¼(*)ÀÌ ÀÖ´Â ÇÖÅ°´Â ¿ÏÀüÈ÷ ºñ-¿ÍÀϵåÄ«µå ÇÖÅ°¿Í ±¸ºÐµË´Ï´Ù; ¿¹¸¦ µé¾î, *F1¿Í F1´Â °¢ÀÚ ÀڽŸ¸ÀÇ º¯Á¾ ÁýÇÕÀÌ ÀÖ½À´Ï´Ù.

+

+°°Àº ÇÖÅ° ¼­ºê·çƾÀ» ¿©·¯ º¯Á¾ÀÌ ½ÇÇàÇϵµ·Ï ¸¸µé·Á¸é, °¡Àå ½¬¿î ¹æ¹ýÀº µ¿ÀÏÇÑ ÇÖÅ°¸¦ ÁÖ¿í ´Ã¾î³õ°í, °¢°¢ #IfWin Áö½Ã¾î¸¦ ´Ù¸£°Ô ¸¸µå´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î:

+
#IfWinActive ahk_class Notepad
+#z::
+#IfWinActive ahk_class WordPadClass
+#z::
+MsgBox ³ëÆ®ÆÐµå ¶Ç´Â ¿öµåÆе忡¼­ Win+Z¸¦ ´­·¶½À´Ï´Ù.
+return
+

+´ë¾ÈÀ¸·Î, #IfWinActive ahk_group MyGroupÀ» ÅëÇÏ¿© â ±×·ìÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ÇÖÅ° º¯Á¾À» (½ºÅ©¸³Æ®°¡ ½ÇÇàÁßÀÎ µ¿¾È¿¡) µ¿ÀûÀ¸·Î »ý¼ºÇÏ·Á¸é, "Hotkey IfWin"¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

ÃÑÆò

+

+#IfWin´Â ¶Ç ÀûÀýÇÒ ¶§ Á¢µÎ Å°¸¦ ÀÚ½ÅÀÇ °íÀ¯ ±â´ÉÀ¸·Î º¹±¸ÇÕ´Ï´Ù (Á¢µÎ Å°´Â "a & b"¿Í °°ÀÌ ÇÖÅ° ¾È¿¡ ÀÖ´Â "a" Å°ÀÔ´Ï´Ù). +ÁÖ¾îÁø Á¢µÎ ½Éº¼¿¡ ´ëÇÏ¿© È°¼ºÈ­µÈ ÇÖÅ°°¡ ÀüÇô ¾øÀ» ¶§¸¶´Ù ÀÌ·± ÀÏÀÌ ÀϾ´Ï´Ù.

+

+Gosub³ª Goto¸¦ »ç¿ëÇÏ¿© ÇÖÅ°³ª ÇÖ½ºÆ®¸µ ¶óº§¿¡ Á¡ÇÁÇÒ ¶§, ½ºÅ©¸³Æ® »ó´Ü¿¡ °¡±î¿î º¯Á¾À¸·Î Á¡ÇÁÇÕ´Ï´Ù.

+

+ÇÖÅ°°¡ ÇöÀç #IfWinÀ» ÅëÇÏ¿© ²¨Á® ÀÖÀ¸¸é, ±×ÀÇ Å°³ª ¸¶¿ì½º ¹öÆ°Àº "#" ¹®ÀÚ¿Í ÇÔ²² KeyHistoryÀÇ "Type" Ä÷³¿¡ ³ªÅ¸³³´Ï´Ù. ÀÌ´Â ½ºÅ©¸³Æ® µð¹ö±ë¿¡ µµ¿òÀÌ µË´Ï´Ù.

+

+%Var%¿Í °°Àº º¯¼ö ÂüÁ¶´Â ÇöÀç Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ±×·¯¹Ç·Î, ÆÛ¼¾Æ® »çÀÎÀº `%¸¦ ÅëÇÏ¿© ÇǽŽÃÄÑ¾ß ÇÕ´Ï´Ù. ¾ÕÀ¸·Î´Â Áö¿øÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ºñ½ÁÇÏ°Ô, (`,¸¦ ÅëÇÏ¿©) ±ÛÀÚ ±×´ë·ÎÀÇ ½°Ç¥µµ ÇǽŽÃÄÑ¾ß ÇÕ´Ï´Ù. Ãß°¡ ¸Å°³º¯¼ö°¡ ¹Ì·¡¿¡ Ãß°¡µÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ÀÌ ÇѰ踦 ¿ìȸÇÒ ÇÊ¿ä°¡ ÀÖ´Ù¸é, GroupAdd¿Í ahk_group¸¦ »ç¿ëÇϽʽÿÀ.

+

+Hotkey ¸í·É¾î°¡ ÇÖÅ°¿¡ ÇÒ´çÇÑ ¶óº§Àº #IfWin¿¡ Á÷Á¢ÀûÀ¸·Î ¿µÇâÀ» ¹ÞÁö´Â ¾Ê½À´Ï´Ù. ´ë½Å¿¡, #IfWin¸¦ ½ºÅ©¸³Æ® »ó´Ü¿¡ °¡±õ°Ô »ç¿ëÇϸé Hotkey ¸í·É¾î°¡ »ý¼ºÇÑ ¸ðµç ÇÖÅ°¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù (´Ü "Hotkey IfWin"°¡ »ç¿ëµÇ¾î ±×°ÍÀ» ¹Ù²ÙÁö ¾Ê¾Ò¾î¾ß ÇÕ´Ï´Ù).

+

+¾ËÆ®-ÅÇ ÇÖÅ°´Â #IfWin¿¡ ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù: ¿ÀÈ÷·Á ¸ðµç â¿¡ È¿°ú°¡ ÀÖ½À´Ï´Ù.

+

+¸¶Áö¸· ¹ß°ß âÀºÀÌ #IfWinActive/ExistÀÌ ¼³Á¤ÇÕ´Ï´Ù (±×·¸Áö¸¸ #IfWinNotActive/NotExist·Î´Â ¼³Á¤µÇÁö ¾Ê½À´Ï´Ù). ¿¹¸¦ µé¾î:

+ +
#IfWinExist ahk_class Notepad
+#n::WinActivate  ; #IfWinÀÌ ¹ß°ßÇÑ Ã¢À» È°¼ºÈ­ÇÕ´Ï´Ù.
+

+#IfWinÀÇ ¸Å°³º¯¼ö Áß Çϳª¿¡ ¼±µÎ ¶Ç´Â ÈĹÌÀÇ ½ºÆäÀ̽º/ÅÇÀÌ ÇÊ¿äÇϸé, ÇǽŠ¿¬¼Ó¿­ `s¿Í `t¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+¼öÇ༺´ÉÀÇ ÀÌÀ¯·Î, #IfWin´Â ÁöÁ¤µÈ âÀÇ Á¸À糪 È°¼ºÈ­¸¦ Ç×»ó °üÁ¦ÇÏÁö´Â ¾Ê½À´Ï´Ù. ´ë½Å¿¡, ÇÖÅ°³ª ÇÖ½ºÆ®¸µÀ» ŸÀÚÇÒ ¶§¸¸ ºÎÇÕÇϴ âÀÌ ÀÖ´ÂÁö Á¡°ËÇÕ´Ï´Ù. ºÎÇÕÇϴ âÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, Å°´­¸²À̳ª ¸¶¿ì½º Ŭ¸¯Àº È°¼º â ¾ÈÀ¸·Î ±×´ë·Î Åë°ú½Ãŵ´Ï´Ù.

+

+â Á¦¸ñ°ú ÅؽºÆ®´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ¼ûÀº âÀº DetectHiddenWindowsÀÌ (½ºÅ©¸³Æ® »ó´Ü) ÀÚµ¿ ½ÇÇà ¼½¼Ç¿¡¼­ ÄÑÁ³´Ù¸é ŽÁöµË´Ï´Ù .

+ +

°ü·Ã Ç׸ñ

+

#If Ç¥Çö½Ä, Hotkey ¸í·É¾î, Hotkeys, Hotstrings, Suspend, IfWinActive, IfWinExist, SetTitleMatchMode, DetectHiddenWindows

+ +

¿¹Á¦

+
#IfWinActive ahk_class Notepad
+^!a::MsgBox ³ëÆ®Æе尡 È°¼ºÈ­µÇ¾î ÀÖ´Â µ¿¾È Ctrl-Alt-A¸¦ ´­·¶½À´Ï´Ù.  ; ÀÌ ÇÖÅ°´Â ´Ù¸¥ â¿¡ ´­·ÁºÁ¾ß ¾Æ¹« È¿°úµµ ¾ø½À´Ï´Ù (±×´ë·Î "Åë°ú ½Ãŵ´Ï´Ù").
+#c::MsgBox ³ëÆ®Æе尡 È°¼ºÈ­µÇ¾î ÀÖ´Â µ¿¾È Win-C¸¦ ´­·¶½À´Ï´Ù.
+::btw:³ëÆ®Æе忡 ÀÖ´Â µ¿¾È¿¡¸¸ :"btw"¿¡ ´ëÇÏ¿© ÀÌ ÅؽºÆ®·Î ±³Ã¼µË´Ï´Ù.
+#IfWinActive
+#c::MsgBox ³ëÆ®Æе尡 ¾Æ´Ñ â¿¡¼­ Win-C¸¦ ´­·¶½À´Ï´Ù.
+ + + diff --git a/src/docs/commands/_Include.htm b/src/docs/commands/_Include.htm new file mode 100644 index 0000000..399ee2a --- /dev/null +++ b/src/docs/commands/_Include.htm @@ -0,0 +1,63 @@ + + + + +#Include + + + + + + + +

#Include / #IncludeAgain

+ +

½ºÅ©¸³Æ®´Â ¸¶Ä¡ ÁöÁ¤µÈ ÆÄÀÏÀÇ ³»¿ëÀÌ Á¤È®ÇÏ°Ô ÀÌ À§Ä¡¿¡ Á¸ÀçÇÏ´Â °Íó·³ ÇàÀ§ÇÕ´Ï´Ù.

+ +
#Include FileOrDirName
+#Include <LibName>
+#IncludeAgain FileOrDirName
+

¸Å°³º¯¼ö

+
+ +
FileOrDirName
+

¾Æ·¡¿¡ ±â¼úÇÏ´Â ¹Ù¿Í °°ÀÌ ÆÄÀÏÀ̳ª µð·ºÅ丮ÀÇ °æ·Î. °ãµû¿ÈÇ¥³ª ¿ÍÀϵåÄ«µå ¶Ç´Â º¯¼ö ÂüÁ¶°¡ Æ÷ÇÔµÇ¸é ¾ÈµË´Ï´Ù. ´Ü %A_ScriptDir%, %A_AppData%, %A_AppDataCommon% ±×¸®°í (v1.1.11+ Àü¿ë) %A_LineFile%¿Í °°Àº º¯¼ö ÂüÁ¶´Â Á¦¿ÜÇÕ´Ï´Ù. ÇǽŠ¿¬¼Ó¿­Àº ½ÖÁ¡ (`;)À» Á¦¿ÜÇÏ°í »ç¿ëÇÏ¸é ¾ÈµË´Ï´Ù. ÆÛ¼¾Æ® ±âÈ£ °°Àº ¹®ÀÚµéÀ» ¹®ÀÚ ±×´ë·Î Ãë±ÞÇϱ⠶§¹®¿¡ ÇÊ¿äÇÏÁöµµ ¾Ê½À´Ï´Ù.

+

+ File: »ðÀ﵃ ÆÄÀÏÀÇ À̸§.. Àý´ë °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ±âµ¿/ÀÛ¾÷ µð·ºÅ丮¿¡ ÀÖ´Ù°í °£ÁÖÇÕ´Ï´Ù (ahk2exe´Â Á¦¿ÜÇÕ´Ï´Ù. ÆÄÀÏÀÌ ½ºÅ©¸³Æ®ÀÇ µð·ºÅ丮¿¡ ÀÖ´Ù°í °£ÁÖÇÕ´Ï´Ù). ÁÖÀÇ: SetWorkingDir´Â #Include¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇϸé #Include¸¦ ó¸® ÇÑ ÈÄ¿¡ ½ºÅ©¸³Æ®°¡ ½ÇÇàÀ» ½ÃÀÛÇϱ⠶§¹®ÀÔ´Ï´Ù.

+

+ Directory: ÆÄÀÏ ´ë½Å¿¡ µð·ºÅ丮¸¦ ÁöÁ¤ÇÏ¿© ÀÛ¾÷ µð·ºÅ丮¸¦ º¯°æÇÕ´Ï´Ù. ÀÌ¾î ³ªÅ¸³ª´Â ¸ðµç #Include ±×¸®°í FileInstallÀÌ ÀÌ µð·ºÅ丮¸¦ »ç¿ëÇÕ´Ï´Ù. ÁÖÀÇ: ÀÌ·± ½ÄÀ¸·Î ÀÛ¾÷ µð·ºÅ丮¸¦ º¯°æÇÏ´õ¶óµµ ½ºÅ©¸³Æ®°¡ ½ÇÇàÀ» ½ÃÀÛÇÒ ¶§ÀÇ ÃÖÃÊ ÀÛ¾÷ µð·ºÅ丮¿¡´Â ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù (A_WorkingDir). À̸¦ ¹Ù²Ù·Á¸é ½ºÅ©¸³Æ®ÀÇ »ó´Ü¿¡¼­ SetWorkingDirÀ» ÁöÁ¤ÇϽʽÿÀ.

+ +
LibName
+

[AHK_L 57+]: ¶óÀ̺귯¸® ÆÄÀÏÀ̳ª ÇÔ¼ö À̸§. ¿¹¸¦ µé¾î, #include <lib> ±×¸®°í #include <lib_func>´Â µÑ ´Ù ÇÔ¼ö ¶óÀ̺귯¸® Æú´õ Áß Çϳª·ÎºÎÅÍ lib.ahkÀ» Æ÷ÇÔÇÕ´Ï´Ù.

+ +
+

³íÆò

+

+½ºÅ©¸³Æ®´Â ¸¶Ä¡ Æ÷ÇÔµÈ ÆÄÀÏÀÇ ³»¿ëÀÌ (¸¶Ä¡ º¹»çÇØ ºÙ¿© ³Ö±â ÇÑ °Íó·³) ¹°¸®ÀûÀ¸·Î Á¤È®ÇÏ°Ô #Include Áö½Ã¾îÀÇ À§Ä¡¿¡ Á¸ÀçÇÏ´Â °Íó·³ ÇàÀ§ÇÕ´Ï´Ù. °á°úÀûÀ¸·Î, µÎ °³ÀÇ ºÐ¸®µÈ ½ºÅ©¸³Æ®¸¦ Çϳª·Î ±â´ÉÇÏ´Â ½ºÅ©¸³Æ®·Î º´ÇÕÇÒ ¼ö ¾ø½À´Ï´Ù (±×·¸°Ô ÇÏ·Á¸é, www.autohotkey.com/forum/topic18545.html¸¦ ÂüÁ¶ÇϽʽÿÀ).

+

#Include´Â FileNameÀ» ¿©·¯ ¹ø Æ÷ÇÔ½ÃÄѵµ ¿ÀÁ÷ ÇÑ ¹ø¸¸ Æ÷ÇԵȴٰí È®ÀÎÇØ ÁÝ´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, #IncludeAgainÀº °°Àº ÆÄÀÏÀ» ¿©·¯ ¹ø Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ¸ðµç ¸é¿¡¼­ #Include¿Í ¶È °°½À´Ï´Ù.

+

+FileName ¸Å°³º¯¼ö´Â ¼±ÅÃÀûÀ¸·Î ¾Õ¿¡ *i¿Í ÇϳªÀÇ ½ºÆäÀ̽º¸¦ µÑ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¸é ÇÁ·Î±×·¥Àº Æ÷ÇÔµÈ ÆÄÀÏÀ» Àдµ¥ ½ÇÆÐÇÏ´õ¶óµµ ¹«½ÃÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: #Include *i SpecialOptions.ahk. ÀÌ ¿É¼ÇÀº Æ÷ÇÔµÈ ÆÄÀÏÀÇ ³»¿ëÀÌ ¸ÞÀÎ ½ºÅ©¸³Æ®ÀÇ ¿¬»ê¿¡ º°·Î Áß¿äÇÏÁö ¾ÊÀ» °æ¿ì¿¡¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

+

+¸ÞÀΠâ¿¡ ListLinesÀ̳ª View->Lines ¸Þ´º¸¦ ÅëÇÏ¿© º¸¿©Áö´Â ÁÙµéÀº ¾ðÁ¦³ª ÀÚ½ÅÀÇ ÆÄÀÏ ¾È¿¡¼­ ¹°¸®Àû ¼ø¼­¿¡ ¸Â°Ô ¹øÈ£°¡ ¸Å°ÜÁý´Ï´Ù. ´Ù¸¥ ¸»·Î, »õ ÆÄÀÏÀ» Æ÷ÇÔÇÏ¸é ¸ÞÀÎ ½ºÅ©¸³Æ®ÀÇ ÆÄÀÏÀÇ ÁÙ ¹øÈ£°¡ ÇÑ ÁÙ ¸¸Å­¸¸ º¯°æµË´Ï´Ù. Áï, #Include ÁÙ ÀÚü ¸¸Å­ º¯°æµË´Ï´Ù (ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®´Â Á¦¿ÜÇÕ´Ï´Ù. Æ÷ÇÔ ÆÄÀÏÀ» ÇϳªÀÇ °Å´ëÇÑ ½ºÅ©¸³Æ®·Î ÄÄÆÄÀÏ ½Ã°£¿¡ º´ÇÕÇϱ⠶§¹®ÀÔ´Ï´Ù).

+

+#Include´Â Á¾Á¾ ¿ÜºÎ ÆÄÀÏ¿¡ Á¤ÀÇµÈ ÇÔ¼ö¸¦ ÀûÀçÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ¼­ºê·çƾÀÇ ¶óº§°ú ´Ù¸£°Ô, ÇÔ¼ö´Â ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê°í ½ºÅ©¸³Æ® ¸Ç ²À´ë±â¿¡ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+´Ù¸¥ # Áö½Ã¾îó·³, #Include´Â Á¶°ÇÀûÀ¸·Î ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù. ´Ù¸¥ ¸»·Î, ´ÙÀ½ ¿¹Á¦´Â ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù:

+
if x = 1
+    #Include SomeFile.ahk  ; ÀÌ ÁÙÀº xÀÇ °ª¿¡ °ü°è ¾øÀÌ È¿°ú°¡ ÀÖ½À´Ï´Ù.
+    y = 2  ; ±×¸®°í ÀÌ ÁÙÀº À§ÀÇ IF¿¡ ¼ÓÇÕ´Ï´Ù. ¿Ö³ÄÇϸé # Áö½Ã¾î´Â  IF¿¡ ¼ÓÇÒ ¼ö ¾ø±â ¶§¹®ÀÔ´Ï´Ù.
+

+À̸§À¸·Î ¶óÀ̺귯¸® ÇÔ¼ö¸¦ È£ÃâÇϸé ÆÄÀÏÀ» ÀÚµ¿À¸·Î Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù (Áï, #Include¸¦ »ç¿ëÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù).

+

+[v1.1.11+]: %A_LineFile%\..¸¦ »ç¿ëÇϸé ÇöÀç ÆÄÀÏÀÌ ´ã±ä µð·ºÅ丮¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸ÞÀÎ ½ºÅ©¸³Æ® ÆÄÀÏÀÌ ¾Æ´Ï´õ¶óµµ »ó°üÀÌ ¾ø½À´Ï´Ù. ¿¹¸¦ µé¾î, #Include %A_LineFile%\..\other.ahk.

+ +

°ü·Ã Ç׸ñ

+

¶óÀ̺귯¸® ÇÔ¼ö, Functions, FileInstall

+ +

¿¹Á¦

+
#Include C:\My Documents\Scripts\Utility Subroutines.ahk
+#Include %A_ScriptDir%  ; ´ÙÀ½¿¡ ¿À´Â #Includes°ú FileInstallsÀ» À§ÇØÀÛ¾÷ µð·ºÅ丮¸¦ º¯°æÇÕ´Ï´Ù.
+#Include C:\My Scripts  ; À§¿Í °°Áö¸¸ ¸í½ÃÀûÀ¸·Î À̸§À» ÁöÁ¤ÇÑ µð·ºÅ丮¸¦ À§ÇØ º¯°æÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/_InputLevel.htm b/src/docs/commands/_InputLevel.htm new file mode 100644 index 0000000..d4c77d7 --- /dev/null +++ b/src/docs/commands/_InputLevel.htm @@ -0,0 +1,49 @@ + + + + +#InputLevel + + + + + + + +

#InputLevel [v1.1.06+]

+

ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀÌ ¹«½ÃÇÏ´Â ÀÎÀ§ÀûÀÎ Å°´­¸²°ú ¸¶¿ì½º À̺¥Æ®¸¦ Á¦¾îÇÕ´Ï´Ù.

+
#InputLevel [, Level]
+ +

¸Å°³º¯¼ö

+
+ +
Level
+

0°ú 100 »çÀÌÀÇ Á¤¼ö°ª. »ý·«Çϸé, ±âº»°ªÀº 0ÀÔ´Ï´Ù.

+ +
+ +

ÃÑÆò

+

+SendLevel°ú #InputLevelÀÇ ÀÛµ¿ ¹æ½Ä¿¡ ´ëÇÑ ¼³¸íÀº SendLevelÀ» ÂüÁ¶ÇϽʽÿÀ.

+

ÀÌ Áö½Ã¾î´Â À§Ä¡¿¡ ¹Î°¨ÇÕ´Ï´Ù: ´ÙÀ½ #InputLevel Áö½Ã¾î°¡ ³ªÅ¸³¯ ¶§±îÁö ¸ðµç ÇÖÅ°¿Í ÇÖÆ®¸µ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù. #InputLevel Áö½Ã¾î°¡ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é, ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀº ±âº»°ªÀÌ 0ÀÔ´Ï´Ù.

+

+ÇÖÅ° ¶Ç´Â ºñ-ÀÚµ¿-±³Ã¼ ÇÖ½ºÆ®¸µÀÇ ·¹º§Àº ÀÚ½ÅÀÌ »ý»êÇÑ Å°´­¸²À̳ª ¹öÆ° Ŭ¸¯¿¡ ´ëÇÏ¿© ±âº» Àü¼Û ·¹º§·Îµµ »ç¿ëµË´Ï´Ù. + +Å°º¸µå³ª ¸¶¿ì½º ¸®¸ÊÇÎÀº ½ÇÁ¦·Î´Â ÇÑ ½ÖÀÇ ÇÖÅ°À̹ǷÎ, #InputLevelÀ» »ç¿ëÇÏ¸é ¸®¸ÊÇÎÀÌ ´Ù¸¥ ÇÖÅ°¸¦ Ã˹߽Ãų ¼ö ÀÖ½À´Ï´Ù.

+

+v1.1.06 ÀÌÀü ¹öÀüÀº #InputLevel 0ÀÎ °Íó·³ ±×¸®°í SendLevel 0ÀÇ È¿°ú°¡ ÀÖ´Â °Íó·³ ÇàÀ§ÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

SendLevel, ÇÖÅ°, ÇÖ½ºÆ®¸µ

+ +

¿¹Á¦

+
+#InputLevel 1
+Numpad0::LButton
+#InputLevel 0
+; ÀÌ ÇÖÅ°´Â Numpad0¿Í LButtonÀÌ ¸ðµÎ Ã˹ßÇÒ ¼ö ÀÖ½À´Ï´Ù:
+~LButton::Msgbox Clicked
+
+ + + diff --git a/src/docs/commands/_InstallKeybdHook.htm b/src/docs/commands/_InstallKeybdHook.htm new file mode 100644 index 0000000..3f78048 --- /dev/null +++ b/src/docs/commands/_InstallKeybdHook.htm @@ -0,0 +1,42 @@ + + + + +#InstallKeybdHook + + + + + + + +

#InstallKeybdHook

+ +

Å°º¸µå °¥°í¸®¸¦ ¹«Á¶°Ç °­Á¦·Î ¼³Ä¡ÇÕ´Ï´Ù.

+ +
#InstallKeybdHook
+ +

Remarks

+

+Å°º¸µå °¥°í¸®´Â (¿î¿µÃ¼Á¦¿¡ ³»ÀåµÇ¾î ÀÖ´Â ÇÔ¼öÀÎ) RegisterHotkey°¡ Áö¿øÇÏÁö ¾Ê´Â ÇÖ½ºÆ®¸µ°ú Å°º¸µå ÇÖÅ°¸¦ È°¼ºÈ­Çϱâ À§ÇÑ ¸ñÀûÀ¸·Î Å°´­¸²À» °üÁ¦ÇÕ´Ï´Ù. ¶ÇÇÑ Input ¸í·É¾î¿Í °°ÀÌ ¸î °¡Áö ´Ù¸¥ Ư¡µµ Áö¿øÇÕ´Ï´Ù.

+

+¿ÀÅäÇÖÅ°´Â Å°º¸µå °¥°í¸®¿Í ¸¶¿ì½º °¥°í¸®¸¦ ¹«Á¶°Ç ¼³Ä¡ÇÏÁö´Â ¾Ê½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ±× µÑÀ̼­ Àû¾îµµ 500 KBÀÇ ¸Þ¸ð¸®¸¦ ¼ÒºñÇϱ⠶§¹®ÀÔ´Ï´Ù. ±×·¯¹Ç·Î, Å°º¸µå °¥°í¸®´Â º¸Åë ½ºÅ©¸³Æ®¿¡ ´ÙÀ½°ú °°Àº °ÍÀÌ Æ÷ÇԵǾî ÀÖÀ» °æ¿ì¿¡¸¸ ¼³Ä¡µË´Ï´Ù: +

    +
  1. ÇÖ½ºÆ®¸µ; +
  2. Å°º¸µå °¥°í¸®¸¦ ¿ä±¸ÇÏ´Â (´ëºÎºÐÀº ±×·¸Áö ¾ÊÀ½) Çϳª ÀÌ»óÀÇ ÇÖÅ°; +
  3. SetCaps/Scroll/Numlock AlwaysOn/AlwaysOff; +
  4. Input ¸í·É¾î, ½ÇÁ¦·Î óÀ½ »ç¿ëµÉ ¶§ °¥°í¸®°¡ ¼³Ä¡µË´Ï´Ù.

    +
+

+´ëÁ¶ÀûÀ¸·Î, #InstallKeybdHook Áö½Ã¾î´Â ¹«Á¶°Ç Å°º¸µå °¥°í¸®¸¦ ¼³Ä¡ÇÕ´Ï´Ù. KeyHistory°¡ ¸¶Áö¸· 20 °³ÀÇ Å°´­¸²À» º¸¿©Áְųª (µð¹ö±ë ¸ñÀûÀ¸·Î), ¶Ç´Â #HotkeyModifierTimeout°¡ ÇÊ¿ä¾øµµ·Ï ȸÇÇÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù.

+

+½ºÅ©¸³Æ®°¡ °¥°í¸®¸¦ »ç¿ë ÁßÀÎÁö ¿©ºÎ´Â KeyHistory ¸í·É¾î ¶Ç´Â ¸Þ´º Ç׸ñÀ» ÅëÇÏ¿© ¾Ë ¼ö ÀÖ½À´Ï´Ù. ¾î´À ÇÖÅ°°¡ °¥°í¸®¸¦ »ç¿ëÇÏ´ÂÁö´Â ListHotkeys ¸í·É¾î³ª ¸Þ´º Ç׸ñÀ» ÅëÇÏ¿© ¾Ë ¼ö ÀÖ½À´Ï´Ù.

+

+ÀÌ Áö½Ã¾î´Â ¶ÇÇÑ ½ºÅ©¸³Æ®¸¦ ¿µ¼ÓÀûÀ¸·Î ¸¸µì´Ï´Ù. Áï, Á¾·áÇÏ·Á¸é ExitApp¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù´Â ¶æÀÔ´Ï´Ù.

+

°ü·Ã Ç׸ñ

+

#InstallMouseHook, #UseHook, ÇÖÅ°, Input, #Persistent, Å°È÷½ºÅ丮, ÇÖ½ºÆ®¸µ, GetKeyState, KeyWait

+

¿¹Á¦

+
#InstallKeybdHook
+ + + diff --git a/src/docs/commands/_InstallMouseHook.htm b/src/docs/commands/_InstallMouseHook.htm new file mode 100644 index 0000000..65d06ba --- /dev/null +++ b/src/docs/commands/_InstallMouseHook.htm @@ -0,0 +1,38 @@ + + + + +#InstallMouseHook + + + + + + + +

#InstallMouseHook

+ +

¸¶¿ì½º °¥°í¸®¸¦ ¹«Á¶°Ç °­Á¦·Î ¼³Ä¡ÇÕ´Ï´Ù.

+ +
#InstallMouseHook
+ +

³íÆò

+

+¸¶¿ì½º °¥°í¸®´Â ¸¶¿ì½º ÇÖÅ°¸¦ È°¼ºÈ­ÇÏ°í ÇÖ½ºÆ®¸µÀ» Ã˹߽ÃÅ°±â À§ÇÑ ¸ñÀûÀ¸·Î ¸¶¿ì½º Ŭ¸¯À» °üÁ¦ÇÕ´Ï´Ù.

+

+¿ÀÅäÇÖÅ°´Â Å°º¸µå °¥°í¸®¿Í ¸¶¿ì½º °¥°í¸®¸¦ ¹«Á¶°Ç ¼³Ä¡ÇÏÁö´Â ¾Ê½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ±× µÑÀÌ Àû¾îµµ 500 KBÀÇ ¸Þ¸ð¸®¸¦ ¼ÒºñÇϱ⠶§¹®ÀÔ´Ï´Ù (±×·¯³ª Å°º¸µå °¥°í¸®°¡ ¼³Ä¡µÇ¾î ÀÖ´Ù¸é, ¸¶¿ì½º °¥°í¸®´Â °Ü¿ì 50 KBÀÇ Ãß°¡ ¸Þ¸ð¸®¸¦ ¿ä±¸ÇÒ »ÓÀÔ´Ï´Ù; ±×¸®°í ±× ¹Ý´ëµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù). ±×·¯¹Ç·Î, ¸¶¿ì½º °¥°í¸®´Â ½ºÅ©¸³Æ®¿¡ Çϳª ÀÌ»óÀÇ ¸¶¿ì½º ÇÖÅ°°¡ µé¾î ÀÖÀ» °æ¿ì¿¡¸¸ ¼³Ä¡µË´Ï´Ù. ÇÖ½ºÆ®¸µ¿¡ ´ëÇؼ­µµ ¼³Ä¡°¡ µÇÁö¸¸, ±×°ÍÀº #Hotstring NoMouse¸¦ ÅëÇÏ¿© ºñÈ°¼ºÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+´ëÁ¶ÀûÀ¸·Î, #InstallMouseHook Áö½Ã¾î´Â ¹«Á¶°Ç ¸¶¿ì½º °¥°í¸®¸¦ ¼³Ä¡ÇÕ´Ï´Ù. KeyHistory°¡ ¸¶¿ì½º Ŭ¸¯À» °üÁ¦ÇØ¾ß ÇÒ °æ¿ì¿¡ À¯¿ëÇÕ´Ï´Ù.

+

+½ºÅ©¸³Æ®°¡ °¥°í¸®¸¦ »ç¿ëÇÏ´ÂÁö KeyHistory³ª ¸Þ´º¸¦ ÅëÇÏ¿© ¾Ë ¼ö ÀÖ½À´Ï´Ù. ¾î´À ÇÖÅ°°¡ °¥°í¸®¸¦ »ç¿ëÇÏ´ÂÁö´Â ListHotkeys ¸í·É¾î³ª ¸Þ´º¸¦ ÅëÇÏ¿© ¾Ë ¼ö ÀÖ½À´Ï´Ù.

+

+ÀÌ Áö½Ã¾î´Â ¶ÇÇÑ ½ºÅ©¸³Æ®¸¦ ¿µ¼ÓÀûÀ¸·Î ¸¸µì´Ï´Ù. Á¾·áÇÏ·Á¸é ExitApp¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù´Â ¶æÀÔ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

+#InstallKeybdHook, #UseHook, ÇÖÅ°, #Persistent, KeyHistory, GetKeyState, KeyWait

+

¿¹Á¦

+
#InstallMouseHook
+ + + diff --git a/src/docs/commands/_KeyHistory.htm b/src/docs/commands/_KeyHistory.htm new file mode 100644 index 0000000..56d43d2 --- /dev/null +++ b/src/docs/commands/_KeyHistory.htm @@ -0,0 +1,38 @@ + + + + +#KeyHistory + + + + + + + +

#KeyHistory

+ +

KeyHistory â¿¡ º¸¿©Áö´Â Å°º¸µå¿Í ¸¶¿ì½º À̺¥Æ®ÀÇ ÃÖ´ë °³¼ö¸¦ ¼³Á¤ÇÕ´Ï´Ù. 0À» ¼³Á¤Çϸé Å° ÀÌ·ÂÀÌ ²¨Áý´Ï´Ù.

+ +
#KeyHistory MaxEvents
+

¸Å°³º¯¼ö

+
+ +
MaxEvents
+
KeyHistory â¿¡ º¸¿©Áö´Â Å°º¸µå¿Í ¸¶¿ì½º À̺¥Æ®ÀÇ ÃÖ´ë °³¼ö (±âº»°ªÀº 40ÀÌ°í, ÃÖ´ë´Â 500). 0À» ÁöÁ¤Çϸé Å° ÀÌ·ÂÀÌ ¿ÏÀüÈ÷ ²¨Áý´Ï´Ù.

+ +
+

³íÆò

+

+ÀÌ ¼³Á¤Àº ½ºÅ©¸³Æ®°¡ ½ÇÇàÀ» ½ÃÀÛÇϱâ Àü¿¡ È¿°ú¸¦ ³»±â ¶§¹®¿¡, (½ºÅ©¸³Æ® ¾î´À °÷¿¡¼­³ª) ÇÑ ¹ø¸¸ ÁöÁ¤ÇÏ¸é µË´Ï´Ù.

+

+°¢ Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯Àº ´Ù¿î-À̺¥Æ®¿Í ¾÷-À̺¥Æ®·Î ±¸¼ºµÇ±â ¶§¹®¿¡, KeyHistory´Â "¿ÏÀüÇÑ À̺¥Æ®"ÀÇ ¹ÝÂʸ¸ ÁöÁ¤µÈ °¹¼ö¸¸Å­ º¸¿©ÁÝ´Ï´Ù. +¿¹¸¦ µé¾î, ½ºÅ©¸³Æ®¿¡ #KeyHistory 50ÀÌ µé¾î ÀÖ´Ù¸é, Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯À» 25 °³±îÁö º¸¿©ÁÝ´Ï´Ù

+

°ü·Ã Ç׸ñ

+

KeyHistory, #NoTrayIcon

+

¿¹Á¦

+
#KeyHistory 0    ; Å° ÀÌ·ÂÀ» ²ü´Ï´Ù.
+#KeyHistory 100  ; 100 °³ÀÇ À̺¥Æ®±îÁö ÀúÀåÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/_MaxHotkeysPerInterval.htm b/src/docs/commands/_MaxHotkeysPerInterval.htm new file mode 100644 index 0000000..bfe0e60 --- /dev/null +++ b/src/docs/commands/_MaxHotkeysPerInterval.htm @@ -0,0 +1,38 @@ + + + + +#MaxHotkeysPerInterval + + + + + + + +

#MaxHotkeysPerInterval

+ +

#HotkeyInterval°ú ÇÔ²², ÇÖÅ° È°¼ºÈ­ ºñÀ²À» ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ °ªÀ» ³Ñ¾î¼­¸é °æ°í ´ëÈ­»óÀÚ°¡ ³ªÅ¸³³´Ï´Ù.

+ +
#MaxHotkeysPerInterval Value
+

¸Å°³º¯¼ö

+
+ +
Value
+

°æ°í ´ëÈ­»óÀÚ¸¦ Ã˹ßÇÏÁö ¾Ê°í #HotkeyInterval°¡ ÁöÁ¤ÇÑ ½Ã°£ »çÀÌ¿¡ ´©¸¦ ¼ö ÀÖ´Â ÇÖÅ°ÀÇ ÃÖ´ë °³¼ö.

+ +
+

³íÆò

+

+³Ê¹« °ü´ëÇÏ°Ô ÁöÁ¤ÇÏÁö ¾Êµµ·Ï ÁÖÀÇÇϽʽÿÀ. ¿Ö³ÄÇϸé ÀǵµÄ¡ ¾Ê°Ô ¹«ÇÑ Å°´­¸² ȸµ¹À̸¦ ÃÊ·¡ÇÑ´Ù¸é (Send ¸í·É¾î¸¦ »ç¿ëÇߴµ¥ ¿ì¿¬ÇÏ°Ôµµ ´Ù¸¥ ÇÖÅ°¸¦ Ã˹ßÇÏ°Ô µÇ¸é), ¹ü¶÷ÇÏ´Â Å°º¸µå À̺¥Æ® ¶§¹®¿¡ ÄÄÇ»ÅÍ°¡ ÀÀ´äÀ» ÇÏÁö ¸øÇÏ°Ô µÉ ¼ö ÀÖ½À´Ï´Ù.

+

+Á» °úµµÇÏ°Ô °£·«ÇÑ ¿¹Á¦¸¦ µéÀÚ¸é, ÇÖÅ° ^c::Send ^c´Â ¹«ÇÑ Å°´­¸² ȸµ¹À̸¦ »ý»êÇÕ´Ï´Ù. À̸¦ ÇÇÇÏ·Á¸é, ÇÖÅ° Á¤ÀÇ¿¡ $ prefix Á¢µÎ»ç¸¦ Ãß°¡ÇØ (¿¹, $^c::) ÇÖÅ°°¡ Send ¸í·É¾î·Î Ã˹ߵÇÁö ¸øÇÏ°Ô ÇϽʽÿÀ.

+

+ÀÌ Áö½Ã¾î°¡ ½ºÅ©¸³Æ® ¾È¿¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é, 70À¸·Î ¼³Á¤ÇÑ °Íó·³ ÇàÀ§ÇÕ´Ï´Ù.

+

°ü·Ã Ç׸ñ

+

#HotkeyInterval

+

¿¹Á¦

+
#MaxHotkeysPerInterval 200
+ + + diff --git a/src/docs/commands/_MaxMem.htm b/src/docs/commands/_MaxMem.htm new file mode 100644 index 0000000..62aaf25 --- /dev/null +++ b/src/docs/commands/_MaxMem.htm @@ -0,0 +1,40 @@ + + + + +#MaxMem + + + + + + + +

#MaxMem

+ +

°¢ º¯¼öÀÇ ÃÖ´ë °¡¿ë ´É·ÂÀ» ÁöÁ¤µÈ °³¼öÀÇ ¸Þ°¡¹ÙÀÌÆ®·Î ¼³Á¤ÇÕ´Ï´Ù.

+ +
#MaxMem Megabytes
+

¸Å°³º¯¼ö

+
+ +
Megabytes
+

º¯¼ö¿¡ Çã¿ëÇÒ ¸Þ°¡¹ÙÀÌÆ®ÀÇ °³¼ö. 4095º¸´Ù Å« °ªÀº 4095·Î °£ÁÖÇÕ´Ï´Ù. 1º¸´Ù ÀÛÀº °ªÀº 1·Î °£ÁÖÇÕ´Ï´Ù.

+ +
+

³íÆò

+

+ÀÌ Áö½Ã¾î°¡ ½ºÅ©¸³Æ®¿¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é, ¸¶Ä¡ 64·Î ¼³Á¤µÈ °Íó·³ ÇàÀ§ÇÕ´Ï´Ù.

+

+°¢ º¯¼öÀÇ °¡¿ë ´É·ÂÀ» Á¦ÇÑÇÏ´Â ¸ñÀûÀº ¹ö±×°¡ ÀÖ´Â ½ºÅ©¸³Æ®°¡ ¸ðµç ½Ã½ºÅÛ ¸Þ¸ð¸®¸¦ °í°¥½ÃÅ°Áö ¸øÇϵµ·Ï Çϱâ À§ÇÔÀÔ´Ï´Ù. Á¦ÇÑÀ» ¿Ã¸®°í ³»·Áµµ ½ºÅ©¸³Æ®ÀÇ ¼öÇ༺´É¿¡´Â ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù. ½ºÅ©¸³Æ®°¡ ½ÇÁ¦·Î »ç¿ëÇÏ´Â ¸Þ¸ð¸® Å©±âµµ ¹Ù²îÁö ¾Ê½À´Ï´Ù (´Ü, WinGetText°ú ControlGetTextÀÇ °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù. #MaxMemÀ» ´Ã¸®¸é ´õ ¸¹Àº ÅؽºÆ®¸¦ ¹ÞÀ» ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù).

+

+ÀÌ ¼³Á¤Àº Àü¿ªÀûÀÔ´Ï´Ù. (½ºÅ©¸³Æ® ¾Æ¹«µ¥¼­³ª) ÇÑ ¹ø¸¸ ÁöÁ¤Çϸé Àüü ½ºÅ©¸³Æ®ÀÇ ÇàÀ§¿¡ ¿µÇâÀ» ÁÙ ¼ö ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù.

+

+ÀÌ ¼³Á¤Àº º¯¼ö°¡ ½º½º·Î ÀÚµ¿ È®ÀåµÇ´Â °æ¿ì¸¸ Á¦ÇÑÇÕ´Ï´Ù. VarSetCapacity¿¡´Â ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù.

+

°ü·Ã Ç׸ñ

+

VarSetCapacity, º¯¼ö, Sort, WinGetText, ControlGetText, #MaxThreads

+

¿¹Á¦

+
#MaxMem 256  ; º¯¼ö ´ç 256¸¦ Çã¿ëÇÕ´Ï´Ù.
+ + + diff --git a/src/docs/commands/_MaxThreads.htm b/src/docs/commands/_MaxThreads.htm new file mode 100644 index 0000000..b295bf8 --- /dev/null +++ b/src/docs/commands/_MaxThreads.htm @@ -0,0 +1,48 @@ + + + + +#MaxThreads + + + + + + + +

#MaxThreads

+ +

µ¿½Ã ¾²·¹µåÀÇ ÃÖ´ë °³¼ö¸¦ ¼³Á¤ÇÕ´Ï´Ù.

+ +
#MaxThreads Value
+

¸Å°³º¯¼ö

+
+ +
Value
+

µ¿½Ã¿¡ Á¸ÀçÇÒ ¼ö ÀÖ´Â ¾²·¹µåÀÇ ÃÖ´ë °³¼ö. 255 º¸´Ù Å« °ªÀ» ÁöÁ¤Çϸé 255¸¦ ÁöÁ¤ÇÑ °Í°ú µ¿ÀÏÇÕ´Ï´Ù (1.0.48 ÀÌÀü ¹öÀü¿¡´Â, 20ÀÌ Á¦ÇÑ °ªÀ̾ú½À´Ï´Ù).

+ +
+

³íÆò

+

+ÀÌ ¼³Á¤Àº Àü¿ªÀûÀÔ´Ï´Ù. (½ºÅ©¸³Æ® ¾Æ¹«µ¥¼­³ª) ÇÑ ¹ø¸¸ ÁöÁ¤Çϸé Àüü ½ºÅ©¸³Æ®ÀÇ ÇàÀ§¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù´Â ¶æÀÔ´Ï´Ù.

+

+°ªÀÌ 1ÀÎ °Íµµ Çã¿ëÇÏÁö¸¸, ±ÇÀåÇÏÁö ¾Ê½À´Ï´Ù. ½ºÅ©¸³Æ®°¡ MsgBox³ª ±âŸ ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÙ ¶§¸¶´Ù »õ·Î¿î ÇÖÅ°°¡ ±âµ¿ÇÏÁö ¸øÇϵµ·Ï ¸·±â ¶§¹®ÀÔ´Ï´Ù. ¶ÇÇÑ ¶Ç´Ù¸¥ ¾²·¹µå°¡ ÀÚ°í Àְųª ´ë±âÇÏ°í ÀÖÀ» ¶§¸¶´Ù ŸÀ̸ӵµ ½ÇÇàµÇÁö ¸øÇÕ´Ï´Ù

+

+#MaxThreads ¿¡ µµ´ÞÇÏ´õ¶óµµ ´ÙÀ½ À¯ÇüÀÇ ¾²·¹µå¸¦ ÃÖ´ë µÎ °³±îÁö ¸¸µé ¼ö ÀÖ½À´Ï´Ù: +

+ÇÖÅ°, ÇÖ½ºÆ®¸µ, OnClipboardChange, ¶Ç´Â GUI À̺¥Æ®°¡ ±× À¯Çü¿¡ ÇØ´çµË´Ï´Ù. ´Ü, ±×ÀÇ ¼­ºêºÎƾÀÇ Ã¹ ÁÙÀÌ ExitApp, Pause, Edit, Reload, KeyHistory, ListLines, ListVars, ¶Ç´Â ListHotkeysÀÎ °æ¿ì¿¡¸¸ Çã¿ëµË´Ï´Ù. + +

+¶ÇÇÑ, OnExit subroutineÀº ¾ðÁ¦³ª ¾ó¸¶³ª ¸¹Àº ¾²·¹µå°¡ ÀÖ´ÂÁö¿¡ »ó°ü¾øÀÌ ±âµ¿ÇÕ´Ï´Ù.

+

+ÀÌ ¼³Á¤ÀÌ #MaxThreadsPerHotkeyº¸´Ù ÀÛÀ¸¸é, ±× ¼³Á¤À» ¿À¹ö¶óÀ̵å ÇÏ´Â È¿°ú°¡ ÀÖ½À´Ï´Ù.

+

+ÀÌ Áö½Ã¾î°¡ ½ºÅ©¸³Æ®¿¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é, 10ÀÌ ¼³Á¤µÈ °Íó·³ ÇàÀ§ÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

#MaxThreadsPerHotkey, Threads, #MaxHotkeysPerInterval, #HotkeyInterval, ListHotkeys, #MaxMem

+

¿¹Á¦

+
#MaxThreads 2
+ + + diff --git a/src/docs/commands/_MaxThreadsBuffer.htm b/src/docs/commands/_MaxThreadsBuffer.htm new file mode 100644 index 0000000..75fc312 --- /dev/null +++ b/src/docs/commands/_MaxThreadsBuffer.htm @@ -0,0 +1,46 @@ + + + + +#MaxThreadsBuffer + + + + + + + +

#MaxThreadsBuffer

+

+#MaxThreadsPerHotkey Á¦ÇÑ¿¡ µµ´ÞÇÒ ¶§ Å°´­¸²À» ¹«½ÃÇÏÁö ¾Ê°í ¸ðµç ¶Ç´Â ¾î´À Á¤µµ´Â ÇÖÅ°°¡ ¹öÆÛ Ã³¸®µË´Ï´Ù.

+ +
#MaxThreadsBuffer On|Off
+

¸Å°³º¯¼ö

+
+ +
On|Off
+

On: ¿©±âºÎÅÍ ´ÙÀ½ #MaxThreadsBuffer ON Áö½Ã¾î »çÀÌÀÇ ¸ðµç ÇÖÅ° ¼­ºê·çƾÀÌ #MaxThreadsPerHotkey Á¦ÇÑ¿¡ °É¸± ¶§¸¶´Ù ÇÖÅ°ÀÇ ´­¸²À» ¹«½ÃÇÏ´Â ´ë½Å¿¡ ¹öÆÛ Ã³¸®µË´Ï´Ù.

+

Off: ÀÌ°ÍÀÌ ±âº» ÇàÀ§ÀÔ´Ï´Ù. ÇÖÅ°¸¦ ´­·¯µµ ÇÖÅ°°¡ ÀÌ¹Ì ¾²·¹µåÀÇ ÃÖ´ë °³¼ö¸¦ ÀÌ¹Ì ½ÇÇàÇÏ°í ÀÖ´Ù¸é ¹«½ÃµË´Ï´Ù (º¸Åë 1ÀÌÁö¸¸, ÀÌ´Â #MaxThreadsPerHotkey·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù).

+ +
+ +

³íÆò

+

+ÀÌ Áö½Ã¾î´Â Àß »ç¿ëµÇÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇϸé ÀÌ·± À¯ÇüÀÇ ¹öÆÛ Ã³¸®´Â, OFF°¡ ±âº»°ªÀε¥, º¸Åë µæº¸´Ù ½ÇÀÌ ¸¹±â ¶§¹®ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ¿ì¹ßÀûÀ¸·Î ÇÖÅ°¸¦ µÎ ¹ø ´­·¯, ÀÌ ¼³Á¤ÀÌ ONÀÌ µÇ°í, ±×ÀÇ Ã¹ ¹ø° ¾²·¹µå°¡ ³¡³ª´Âµ¥ 1 Ãʺ¸´Ù Àû°Ô °É¸®¸é ±× ÇÖÅ°ÀÇ ¼­ºê·çƾÀº ÀÚµ¿À¸·Î µÎ ¹ø ½ÇÇàµË´Ï´Ù. (ÀÌ·± À¯ÇüÀÇ ¹öÆÛ´Â 1ÃÊ ÀÌÈÄ¿¡ Á¾·áµÇµµ·Ï ¼³°èµÇ¾î ÀÖ½À´Ï´Ù). ¿ÀÅäÇÖÅ°´Â ÇÖÅ°¸¦ ¿©·¯°¡Áö ¹æ½ÄÀ¸·Î ¹öÆÛ Ã³¸®ÇÑ´Ù´Â °ÍÀ» ÁÖ¸ñÇϽʽÿÀ (¿¹¸¦ µé¾î Thread Interrupt ±×¸®°í Critical). ÀÌ·± ƯÀÌÇÑ ¹æ½ÄÀº Çطӱ⸸ ÇÒ »ÓÀÔ´Ï´Ù. ±×¸®ÇÏ¿© ±âº»À¸·Î OFF »óÅÂÀÔ´Ï´Ù.

+

+ÀÌ Áö½Ã¾î¸¦ »ç¿ëÇÏ´Â ÁÖ ¸ñÀûÀº Å°º¸µåÀÇ ÀÚµ¿-¹Ýº¹ Ư¡ÀÇ ¹ÝÀÀ ´É·ÂÀ» ²ø¾î ¿Ã¸®´Â µ¥ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ÇÖÅ°¸¦ ´©¸£°í ÀÖÀ» ¶§ #MaxThreadsPerHotkey°¡ 1·Î ¼³Á¤µÇ¾î ÀÖ´Ù¸é (±âº»°ª), µé¾î¿À´Â Å°´­¸²Àº ±× ÇÖÅ° ¼­ºê·çƾÀÌ ÀÌ¹Ì ½ÇÇà ÁßÀÏ °æ¿ì ¹«½ÃµË´Ï´Ù. ±×¸®ÇÏ¿©, ¼­ºê·çƾÀÌ ³¡³¯ ¶§, ´ÙÀ½ ÀÚµ¿-¹Ýº¹ Å°´­¸²ÀÌ µé¾î¿À±â¸¦ ±â´Ù·Á¾ß ÇÕ´Ï´Ù. ÀÌ ´ë±â ½Ã°£Àº ÀÚµ¿-¹Ýº¹ »çÀÌŬÀÇ Å°´­¸² »çÀÌ¿¡ ÀâÇô Àֱ⠶§¹®¿¡ ´ë·« 50ms ³²Áþ °É¸± °ÍÀÔ´Ï´Ù. ÀÌ 50msÀÇ Áö¿¬ ½Ã°£À» ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÚµ¿-¹Ýº¹µÇ´Â µ¿¾È¿¡ ÁÁÀº ¹ÝÀÀ¼ºÀÌ ÇÊ¿äÇÑ ¸ðµç ÇÖÅ°¿¡ ÀÌ Áö½Ã¾î¸¦ È°¼ºÈ­ÇÏ¸é µË´Ï´Ù.

+

+´Ù¸¥ ¸ðµç # Áö½Ã¾îó·³, ÀÌ Áö½Ã¾î´Â ±×³É ¸í·É¾îó·³ ¾Æ¹«µ¥³ª ¹èÄ¡ÇÏ¸é ¾ÈµË´Ï´Ù (Áï, ¼­ºê·çƾ ¾È¿¡ Æ÷ÇÔ½Ãų ÇÊ¿ä°¡ ¾ø½À´Ï´Ù). ´ë½Å¿¡, È¿°ú¸¦ ÁÖ°í ½ÍÀº ù ÇÖÅ° ¶óº§ ¹Ù·Î ´ÙÀ½¿¡ ¹èÄ¡ÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

#MaxThreads, #MaxThreadsPerHotkey, Critical, Thread (¸í·É¾î), ¾²·¹µå, ÇÖÅ°, #MaxHotkeysPerInterval, #HotkeyInterval, ListHotkeys

+ +

¿¹Á¦

+
#MaxThreadsBuffer on
+#x::MsgBox, ÀÌ ÇÖÅ°´Â À§¿Í °°Àº Á¾·ùÀÇ ¹öÆÛ Ã³¸®¸¦ »ç¿ëÇÕ´Ï´Ù.
+#y::MsgBox, À̰͵µ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.
+#MaxThreadsBuffer off
+#z::MsgBox, ±×·¯³ª ÀÌ°ÍÀº ¾Æ´Õ´Ï´Ù.
+ + + diff --git a/src/docs/commands/_MaxThreadsPerHotkey.htm b/src/docs/commands/_MaxThreadsPerHotkey.htm new file mode 100644 index 0000000..0cb8c02 --- /dev/null +++ b/src/docs/commands/_MaxThreadsPerHotkey.htm @@ -0,0 +1,43 @@ + + + + +#MaxThreadsPerHotkey + + + + + + + +

#MaxThreadsPerHotkey

+ +

ÇÖÅ° ¶Ç´Â ÇÖÆ®¸µ´ç µ¿½Ã ¾²·¹µåÀÇ ÃÖ´ë °³¼ö¸¦ ¼³Á¤ÇÕ´Ï´Ù. .

+ +
#MaxThreadsPerHotkey Value
+

¸Å°³º¯¼ö

+
+ +
Value
+

ÁÖ¾îÁø ÇÖÅ°/ÇÖ½ºÆ®¸µ ¼­ºê·çƾ¿¡ ´ëÇÏ¿© ±âµ¿ÇÒ ¼ö ÀÖ´Â ¾²·¹µåÀÇ ÃÖ´ë °³¼ö (255·Î Á¦ÇÑ).

+ +
+

³íÆò

+

+ÀÌ ¼³Á¤Àº ÁÖ¾îÁø ÇÖÅ° ¶Ç´Â ÇÖ½ºÆ®¸µ ¼­ºê·çƾÀÇ "½Çü"°¡ µ¿½Ã¿¡ ¾ó¸¶³ª ¸¹ÀÌ Á¸ÀçÇϵµ·Ï Çã¿ëÇÒÁö Á¦¾îÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î, ¾î¶² ÇÖÅ°°¡ ÃÖ´ë°ª 1ÀÌ°í ¼­ºê·çƾÀÌ ÀÌ¹Ì ½ÇÇà ÁßÀÎ µ¿¾È¿¡ ´Ù½Ã ´­¸°´Ù¸é, ±× Å°´­¸²Àº ¹«½ÃµË´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¿ì¹ßÀûÀ¸·Î µÎ ¹ø ´©¸£´Â ÀÏÀ» ¹æÁöÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ÀÌ Å° ´­¸²À» ¹«½ÃÇÏ´Â ´ë½Å¿¡ ¹öÆÛ Ã³¸®ÇÏ°í ½Í´Ù¸é -- ¾Æ¸¶µµ Å°º¸µåÀÇ ÀÚµ¿-¹Ýº¹ Ư¡ÀÇ ¹ÝÀÀ¼ºÀ» ³ôÀÌ°í ½Í´Ù¸é -- #MaxThreadsBuffer¸¦ »ç¿ëÇϽʽÿÀ.

+

+#MaxThreads¿Í ´Ù¸£°Ô, ÀÌ ¼³Á¤Àº Àü¿ªÀûÀÌ ¾Æ´Õ´Ï´Ù. ´ë½Å, ¿µÇâÀ» ÁÖ°í ½ÍÀº ù ÇÖÅ° ¶óº§ ¾Õ¿¡ ¹èÄ¡ÇϽʽÿÀ. °á°úÀûÀ¸·Î ±× µÚ¿¡ ÀÕ´Ù¸£´Â ÇÖÅ°µéÀº ±× °ªÀ» »ç¿ëÇÏ°Ô µË´Ï´Ù. ÀÌ Áö½Ã¾îÀÇ ¶Ç´Ù¸¥ ½Çü¸¦ ¸¸³ª±â Àü±îÁö´Â ¸»ÀÔ´Ï´Ù.

+

+ÇÖÅ° ¼­ºê·çƾ¿¡¼­ ù ÁÙÀÌ ExitApp, Pause, Edit, Reload, KeyHistory, ListLines, ListVars, ¶Ç´Â ListHotkeysÀ̸é ÀÌ ¼³Á¤¿¡ »ó°ü¾øÀÌ ¾ðÁ¦³ª ±× ÇÖÅ°°¡ ½ÇÇàµË´Ï´Ù.

+

+#MaxThreadsÀÇ ¼³Á¤ÀÌ -- ÀÌ ¼³Á¤º¸´Ù ³·À¸¸é -- ¿ì¼± ¼øÀ§¸¦ °®½À´Ï´Ù.

+

+ÀÌ Áö½Ã¾î°¡ ½ºÅ©¸³Æ®¿¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é, ¸¶Ä¡ 1ÀÌ ¼³Á¤µÈ °Íó·³ ÇàÀ§ÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

#MaxThreads, #MaxThreadsBuffer, Critical, Threads, Hotkey, #MaxHotkeysPerInterval, #HotkeyInterval, ListHotkeys

+

¿¹Á¦

+
#MaxThreadsPerHotkey 3
+ + + diff --git a/src/docs/commands/_MenuMaskKey.htm b/src/docs/commands/_MenuMaskKey.htm new file mode 100644 index 0000000..bf1e63e --- /dev/null +++ b/src/docs/commands/_MenuMaskKey.htm @@ -0,0 +1,49 @@ + + + + +#MenuMaskKey + + + + + + + +

#MenuMaskKey [AHK_L 38+]

+ +

Win ¶Ç´Â Alt Å°¾÷ À̺¥Æ®¸¦ ¸¶½ºÅ©Çϴµ¥ »ç¿ëµÉ Å°¸¦ º¯°æÇÕ´Ï´Ù.

+ +
#MenuMaskKey KeyName
+

¸Å°³º¯¼ö

+
+ +
KeyName
+

A Å° À̸§ ¶Ç´Â 0 ¾Æ´Ñ °¡»ó Å°Äڵ带 ÁöÁ¤ÇÏ´Â vkNN ¿¬¼Ó¿­. ½ºÄµÄÚµå´Â »ç¿ëµÇÁö ¾Ê½À´Ï´Ù.

+ +
+ +

³íÆò

+

+ÀÌ ¼³Á¤Àº Àü¿ªÀûÀÔ´Ï´Ù. (½ºÅ©¸³Æ® ¾Æ¹«µ¥¼­³ª) µü ÇÑ ¹ø¸¸ ÁöÁ¤Çϸé Àüü ½ºÅ©¸³Æ®¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù´Â ¶æÀÔ´Ï´Ù

+

+ÇÖÅ°¸¦ Å°º¸µå °¥°í¸®³ª ¸¶¿ì½º °¥°í¸®¸¦ »ç¿ëÇÏ¿© ±¸ÇöÇß´Ù¸é, ¸¶Áö¸· Å°´­¸²Àº È°¼ºÃ¢°ú ½Ã½ºÅÛ¿¡ º¸ÀÌÁö ¾ÊÀ» ¼öµµ ÀÖ½À´Ï´Ù. Win ¶Ç´Â Alt ¼ö½Ä Å°¸¦ »ç¿ëÇÏ´Â ÇÖÅ°¿¡ ´ëÇÏ¿©, ÀÌ ¼ö½ÄÅ°°¡ ´­¸± ¶§ ½ÃÀÛ ¸Þ´º³ª È°¼ºÃ¢ÀÇ ¸Þ´º ¹Ù°¡ È°¼ºÈ­µÉ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± ÀÏÀÌ ÀϾ´Â °ÍÀ» ÇÇÇϱâ À§ÇØ ¿ÀÅäÇÖÅ°´Â Å°´­¸²À» Àü¼ÛÇÏ¿© Å°¾÷ À̺¥Æ®¸¦ "ÀºÆó" ÇÕ´Ï´Ù. °³Á¤ÆÇ 38 ÀÌÀü¿¡¼­´Â ¾ðÁ¦³ª Ctrl Å°´­¸²À̾ú°í, ÀÌ ¶§¹®¿¡ ¾î¶² ¾îÇø®ÄÉÀ̼ǿ¡´Â ¹®Á¦°¡ µÈ´Ù°í ¾Ë·ÁÁ® ÀÖ½À´Ï´Ù.

+

+½ºÅ©¸³Æ®¿¡ ÀÌ Áö½Ã¾î°¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é, CtrlÀ» ÁöÁ¤ÇÑ °Íó·³ ÇàÀ§ÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

¹è°æ Á¤º¸´Â ÀÌ ¾²·¹µå¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

¿¹Á¦

+
#MenuMaskKey vk07  ; vk07Àº ÇÒ´çµÇÁö ¾Ê½À´Ï´Ù.
+#UseHook
+#Space::
+!Space::
+    KeyWait LWin
+    KeyWait RWin
+    KeyWait Alt
+    KeyHistory
+return
+ + + diff --git a/src/docs/commands/_NoEnv.htm b/src/docs/commands/_NoEnv.htm new file mode 100644 index 0000000..1f608ac --- /dev/null +++ b/src/docs/commands/_NoEnv.htm @@ -0,0 +1,40 @@ + + + + +#NoEnv + + + + + + + +

#NoEnv [v1.0.43.08+]

+ +

ºó ¹®ÀÚ¿­ÀÌ È¯°æ º¯¼öÀÎÁö Á¡°ËÇÏ´Â °ÍÀ» ȸÇÇÇÕ´Ï´Ù (¸ðµç »õ ½ºÅ©¸³Æ®¿¡ ±ÇÀå).

+ +
#NoEnv
+

+½ºÅ©¸³Æ® ¾Æ¹«µ¥³ª #NoEnv ÁÙÀ» ÁöÁ¤ÇÏ¸é ºó ¹®ÀÚ¿­ÀÌ ÀáÀçÀûÀ¸·Î ȯ°æ º¯¼öÀÎÁö ã¾Æ º¸Áö ¸øÇϵµ·Ï ¸·½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
#NoEnv
+MsgBox %WinDir%
+

+À§ ÄÚµå´Â "WinDir" ȯ°æº¯¼ö¸¦ ¿­¶÷ÇÏÁö ¾Ê½À´Ï´Ù (¹°·Ð ½ºÅ©¸³Æ® »ó´Ü ±Ùó¿¡ WinDir := A_WinDir¿Í °°ÀÌ Ã³¸®Çϸé ÇØ°áÇÒ ¼ö ÀÖ½À´Ï´Ù).

+

+¸ðµç »õ ½ºÅ©¸³Æ®¿¡ #NoEnvÀ» ÁöÁ¤ÇÏ´Â °ÍÀ» ±ÇÀåÇÕ´Ï´Ù. ¿Ö³ÄÇϸé:

+
    +
  1. ºó ¹®ÀÚ¿­ÀÌ Ç¥Çö½ÄÀ̳ª ¸í·É¾î¿¡ »ç¿ëµÉ ¶§¸¶´Ù ¼öÇ༺´ÉÀÌ ´«¿¡ ¶ç°Ô °³¼±µË´Ï´Ù. ¶ÇÇÑ µû¿ÈÇ¥ ¾ø´Â ¸Å°³º¯¼ö À¯ÇüÀ» »ç¿ëÇÒ ¶§ DllCallÀÇ ¼öÇ༺´Éµµ Çâ»óµË´Ï´Ù. (¿¹, int vs. "int").
  2. +
  3. ȯ°æ º¯¼ö ¶§¹®¿¡ ½ºÅ©¸³Æ®¿¡ ¹ö±×°¡ »ý±â´Â °ÍÀ» ¹æÁöÇÕ´Ï´Ù. ±× À̸§ÀÌ ¿¹»óÄ¡ ¸øÇÏ°Ô ½ºÅ©¸³Æ®¿¡ »ç¿ëµÇ´Â º¯¼ö¿¡ ÀÏÄ¡ÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.
  4. +
  5. AutoHotkey v2´Â ÀÌ ÇàÀ§¸¦ ±âº»°ªÀ¸·Î »ç¿ëÇÒ °ÍÀÔ´Ï´Ù.
  6. +
+

+½±°Ô #NoEnv·Î ÀÌÀüÇϱâ À§ÇØ, ³»Àå º¯¼ö Comspec°ú ProgramFilesÀÌ Ãß°¡µÇ¾ú½À´Ï´Ù. »óÀÀÇϴ ȯ°æº¯¼ö¿Í ¶È °°Àº ¹®ÀÚ¿­ÀÌ ¾È¿¡ µé¾î ÀÖ½À´Ï´Ù.

+

+#NoEnv°¡ È¿°ú¸¦ ¹ßÈÖÇϸé, ½ºÅ©¸³Æ®´Â EnvGetÀ» »ç¿ëÇÏ¿© ȯ°æ º¯¼ö¸¦ ¿­¶÷ÇØ¾ß ÇÕ´Ï´Ù. ¾Æ´Ï¸é A_WinDir°ú °°Àº ³»Àå º¯¼ö¸¦ »ç¿ëÇϽʽÿÀ.

+ +

°ü·Ã Ç׸ñ

+

EnvGet, Comspec, ProgramFiles, A_WinDir

+ + + diff --git a/src/docs/commands/_NoTrayIcon.htm b/src/docs/commands/_NoTrayIcon.htm new file mode 100644 index 0000000..eaca0b5 --- /dev/null +++ b/src/docs/commands/_NoTrayIcon.htm @@ -0,0 +1,32 @@ + + + + +#NoTrayIcon + + + + + + + +

#NoTrayIcon

+ +

Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» ²ü´Ï´Ù.

+ +
#NoTrayIcon
+

+½ºÅ©¸³Æ® ¾Æ¹«µ¥¼­³ª ÀÌ Áö½Ã¾î¸¦ ÁöÁ¤ÇÏ¸é ½ºÅ©¸³Æ®°¡ ±âµ¿µÉ ¶§ Æ®·¹ÀÌ ¾ÆÀÌÄÜÀÌ ³ªÅ¸³ª´Â °ÍÀ» ¸·½À´Ï´Ù. (½ºÅ©¸³Æ®¸¦ EXE·Î ÄÄÆÄÀÏÇصµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù).

+

+ÇÖÅ°¸¦ °¡Áø ½ºÅ©¸³Æ®¿¡ À̸¦ »ç¿ëÇϸé, ÇÖÅ°¸¦ ExitApp ¸í·É¾î¿¡ ¹­´Â °Ô ÁÁ½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ½±°Ô ÇÁ·Î±×·¥À» ºüÁ® ³ª°¥ ¹æ¹ýÀÌ ¾ø½À´Ï´Ù (ÄÄÇ»Å͸¦ Àç½ÃÀÛÇϰųª ÇÁ·Î¼¼½º¸¦ Á׿©¾ß ÇÕ´Ï´Ù). ¿¹¸¦ µé¾î: #x::ExitApp.

+

+Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» ½ºÅ©¸³Æ®°¡ ½ÇÇàµÇ´Â µ¿¾È ¾ðÁ¦µçÁö °¨Ã߰ųª º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¸í·É¾î Menu, Tray, Icon ¶Ç´Â Menu, Tray, NoIconÀ» »ç¿ëÇÏ¸é µË´Ï´Ù. Menu, Tray, NoIconÀ» ½ºÅ©¸³Æ®ÀÇ ¸Ç À§¿¡¼­ »ç¿ëÇÏ¸é ´ÜÁ¡ÀÌ ÀÖ½À´Ï´Ù. ½ºÅ©¸³Æ®°¡ óÀ½À¸·Î ±âµ¿µÉ ¶§ Æ®·¹ÀÌ ¾ÆÀÌÄÜÀÌ Àá±ñ º¸ÀÏ ¼ö ÀÖ½À´Ï´Ù. ±×¸¦ ÇÇÇÏ·Á¸é, ´ë½Å¿¡ #NoTrayIconÀ» »ç¿ëÇϽʽÿÀ.

+

+Æ®·¹ÀÌ ¾ÆÀÌÄÜÀÌ ÇöÀç º¸ÀÌÁö ¾ÊÀ¸¸é ³»Àå º¯¼ö A_IconHidden¿¡ 1ÀÌ ´ã±é´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ´ã±é´Ï´Ù.

+

°ü·Ã Ç׸ñ

+

Menu, ExitApp

+

¿¹Á¦

+
#NoTrayIcon
+ + + diff --git a/src/docs/commands/_Persistent.htm b/src/docs/commands/_Persistent.htm new file mode 100644 index 0000000..4632e3f --- /dev/null +++ b/src/docs/commands/_Persistent.htm @@ -0,0 +1,29 @@ + + + + +#Persistent + + + + + + + +

#Persistent

+ +

½ºÅ©¸³Æ®¸¦ ¿µ¿øÈ÷ ½ÇÇà ÇÕ´Ï´Ù (Áï, »ç¿ëÀÚ°¡ ´Ý°Å³ª ExitApp¸¦ ¸¸³¯ ¶§±îÁö).

+ +
#Persistent
+

+ÀÌ Áö½Ã¾î°¡ ½ºÅ©¸³Æ®¿¡ Á¸ÀçÇϸé, ÀÚµ¿ ½ÇÇà ¼½¼ÇÀÌ (½ºÅ©¸³Æ®ÀÌ »ó´Ü ºÎºÐ) ³¡³­ ÈÄ¿¡µµ °è¼ÓÇؼ­ ½ÇÇàµË´Ï´Ù. ½ºÅ©¸³Æ®¿¡ ŸÀ̸ӳª ¸ÂÃã ¸Þ´º Ç׸ñÀÌ µé¾î ÀÖÀ» °æ¿ì´Â À¯¿ëÇÕ´Ï´Ù. ±×·¯³ª ÇÖÅ°, ÇÖ½ºÆ®¸µ, ¶Ç´Â OnMessage()³ª Gui¸¦ »ç¿ëÇÒ °æ¿ì´Â ±×·¸Áö ¾Ê½À´Ï´Ù.

+

+ÀÌ Áö½Ã¾î¸¦ ±âÁ¸ÀÇ ½ºÅ©¸³Æ®¿¡ Ãß°¡Çϸé, ExitÀ» ExitApp·Î ¹Ù²Ù´Â ÆíÀÌ ÁÁ½À´Ï´Ù. ¿Ö³ÄÇϸé Exit´Â ¿µ±¸ÀûÀÎ ½ºÅ©¸³Æ®¸¦ Á¾·áÇÏÁö ¸øÇϱ⠶§¹®ÀÔ´Ï´Ù; ¿ÀÁ÷ ÇöÀç ¾²·¹µå¸¸ Á¾·á½Ãŵ´Ï´Ù.

+

v1.0.16+¿¡¼­ ÀÌ Áö½Ã¾î´Â ¶Ç ½ºÅ©¸³Æ®¸¦ ´ÜÀÏ-½Çü·Î ¸¸µé±âµµ ÇÕ´Ï´Ù. À̸¦ ¿À¹ö¶óÀ̵å Çϰųª ´ÜÀÏ-½ÇüÀÇ ÇàÀ§¸¦ ¹Ù²Ù·Á¸é, #SingleInstance¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

°ü·Ã Ç׸ñ

+

#SingleInstance, SetTimer, Menu, Exit, ExitApp

+

¿¹Á¦

+
#Persistent
+ + + diff --git a/src/docs/commands/_SingleInstance.htm b/src/docs/commands/_SingleInstance.htm new file mode 100644 index 0000000..2f8c8e8 --- /dev/null +++ b/src/docs/commands/_SingleInstance.htm @@ -0,0 +1,41 @@ + + + + +#SingleInstance + + + + + + + +

#SingleInstance

+ +

½ºÅ©¸³Æ®¿¡°Ô ÀÌ¹Ì ½ÇÇà ÁßÀÏ ¶§ ´Ù½Ã ½ÇÇàÀ» Çã¿ëÇÒÁö °áÁ¤ÇÕ´Ï´Ù.

+ +
#SingleInstance [force|ignore|off]
+

¸Å°³º¯¼ö

+
+ +
force|ignore|off
+

ÀÌ ¸Å°³º¯¼ö´Â ½ºÅ©¸³Æ®ÀÇ ½Çü°¡ ÀÌ¹Ì ÀÌÀü¿¡ ½ÇÇà ÁßÀÏ ¶§ ½ºÅ©¸³Æ®°¡ ¶Ç ±âµ¿ÇÏ¸é ¹«½¼ ÀÏÀÌ ÀϾ Áö °áÁ¤ÇÕ´Ï´Ù:

+

´Ü¾î FORCE´Â ´ëÈ­ »óÀÚ¸¦ °Ç³Ê ¶Ù°í ÀÚµ¿À¸·Î ¿¹Àü ½Çü¸¦ ±³Ã¼ÇÕ´Ï´Ù. ±× È¿°ú´Â Reload ¸í·É¾î¿Í ºñ½ÁÇÕ´Ï´Ù.

+

´Ü¾î IGNORE´Â ´ëÈ­ »óÀÚ¸¦ °Ç³Ê ¶Ù°í ¿¹Àü ½Çü¸¦ ±×´ë·Î ½ÇÇàµÇµµ·Ï µÓ´Ï´Ù. Áï, ÀÌ¹Ì ½ÇÇà ÁßÀÎ ½ºÅ©¸³Æ®ÀÇ ±âµ¿ ½Ãµµ¸¦ ¹«½ÃÇÕ´Ï´Ù.

+

´Ü¾î OFF´Â ½ºÅ©¸³Æ®ÀÇ ¿©·¯ ½Çü¸¦ º´ÇàÀûÀ¸·Î ½ÇÇàµÇµµ·Ï Çã¿ëÇÕ´Ï´Ù.

+

ÀÌ ¸Å°³º¯¼ö¸¦ »ý·«Çϸé, ´ëÈ­»óÀÚ°¡ ³ªÅ¸³ª ¿¹Àü ½Çü¸¦ À¯ÁöÇÒÁö »õ ½Çü·Î ±³Ã¼ÇÒÁö ¹¯½À´Ï´Ù.

+ +
+

³íÆò

+

+½ºÅ©¸³Æ®¿¡ hotkeys, hotstrings, #Persistent, OnMessage(), ¶Ç´Â Gui°¡ ´ã°Ü ÀÖÀ¸¸é ±âº»°ªÀº ´ÜÀÏ-½ÇüÀÔ´Ï´Ù (´ëÈ­»óÀÚ°¡ ³ªÅ¸³ª & ¹¯½À´Ï´Ù). ´Ù¸¥ ½ºÅ©¸³Æ®´Â ±âº»ÀûÀ¸·Î ´ÙÁß ½Çü¸¦ Çã¿ëÇÕ´Ï´Ù. ÀÌ ÇàÀ§´Â À§¿¡ ±â¼úÇÑ °Íó·³ ºÒ´ÉÈ­Çϰųª º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

Reload, #Persistent

+

¿¹Á¦

+
#SingleInstance force
+#SingleInstance ignore
+#SingleInstance off
+ + + diff --git a/src/docs/commands/_UseHook.htm b/src/docs/commands/_UseHook.htm new file mode 100644 index 0000000..3ffb7a0 --- /dev/null +++ b/src/docs/commands/_UseHook.htm @@ -0,0 +1,52 @@ + + + + +#UseHook + + + + + + + +

#UseHook

+ +

¸ðµç ¶Ç´Â ¾î¶² Å°º¸µå ÇÖÅ°¸¦ ±¸ÇöÇÏ´Â µ¥ °¥°í¸®ÀÇ »ç¿ëÀ» °­Á¦ÇÕ´Ï´Ù.

+ +
#UseHook [On|Off]
+

¸Å°³º¯¼ö

+
+ +
On|Off
+

#UseHook µÚ¿¡ ¾Æ¹«°Íµµ ¾øÀ¸¸é #UseHook On°ú µ¿µîÇÕ´Ï´Ù.

+

On: Áö±ÝºÎÅÍ (ÀÖ´Ù¸é) ´ÙÀ½ #UseHook OFF »çÀÌ¿¡ ¸ðµç Å°º¸µå ÇÖÅ°¸¦ ±¸ÇöÇÏ´Â µ¥ Å°º¸µå °¥°í¸®°¡ »ç¿ëµË´Ï´Ù.

+

Off: ÇÖÅ°´Â ±âº» ¹æ¹ýÀ» »ç¿ëÇÏ¿© ±¸ÇöµË´Ï´Ù (°¡´ÉÇϸé RegisterHotkey()¸¦; ±×·¸Áö ¾ÊÀ¸¸é, Å°º¸µå °¥°í¸®¸¦ »ç¿ëÇÕ´Ï´Ù).

+ +
+ +

³íÆò

+

º¸Åë, Å°º¸µå ÇÖÅ°¸¦ ±¸ÇöÇÏ´Â µ¥ °¡´ÉÇϸé À©µµ¿ìÁî API ÇÔ¼ö RegisterHotkey()°¡ »ç¿ëµË´Ï´Ù. ±×·¸Áö¸¸, ´ë½Å Å°º¸µå °¥°í¸®¸¦ »ç¿ëÇÏ¸é ¾î¶² »óȲ¿¡¼­´Â ÇÖÅ°ÀÇ ¹ÝÀÀ¼ºÀÌ ´õ ÁÁÀº °æ¿ì°¡ ÀÖ½À´Ï´Ù.

+

+ÀÌ Áö½Ã¾î¸¦ ÄѸé(ON) °¢ ÇÖÅ°ÀÇ Á¤ÀÇ ¾Õ¿¡ $ Á¢µÎ ½Éº¼À» »ç¿ëÇÑ °Í°ú È¿°ú°¡ °°½À´Ï´Ù.

+

+¸ðµç # Áö½Ã¾îó·³ -- ½ºÅ©¸³Æ®°¡ ±âµ¿ÇÒ ¶§ ÇÑ ¹ø¸¸ 󸮵Ǵ -- #UseHookÀº ¸í·É¾îó·³ ½ºÅ©¸³Æ® ¾Æ¹«µ¥³ª ¹èÄ¡ÇÏ¸é ¾ÈµË´Ï´Ù (Áï, ¼­ºê·çƾ ¾È¿¡ Æ÷ÇÔ½Ãų ÇÊ¿ä°¡ ¾ø½À´Ï´Ù). ´ë½Å¿¡, ¿µÇâÀ» ÁÖ°í ½ÍÀº ù ÇÖÅ° ¶óº§ ¹Ù·Î ¾Õ¿¡ ¹èÄ¡ÇϽʽÿÀ.

+

+±âº»°ªÀ¸·Î, Å°º¸µå °¥°í¸®¸¦ »ç¿ëÇÏ´Â ÇÖÅ°´Â Send ¸í·É¾î·Î Ã˹߽Ãų ¼ö ¾ø½À´Ï´Ù. ºñ½ÁÇÏ°Ô, ¸¶¿ì½º ÇÖÅ°´Â Click ¸í·É¾î·Î Ã˹߽Ãų ¼ö ¾ø½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ¸ðµç ¸¶¿ì½º ÇÖÅ°°¡ ¸¶¿ì½º °¥°í¸®¸¦ »ç¿ëÇϱ⠶§¹®ÀÔ´Ï´Ù. ÇÑ °¡Áö ¿ìȸåÀº Gosub¸¦ »ç¿ëÇÏ¿© °ð¹Ù·Î ÇÖÅ°ÀÇ ¼­ºê·çƾ¿¡ Á¡ÇÁÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î: Gosub #LButton.

+

+[v1.1.06+]: #InputLevel ±×¸®°í SendLevel´Â ¾î´À ÇÖÅ° ±×¸®°í ÇÖ½ºÆ®¸µÀÌ Send ¸í·É¾î·Î Ã˹ߵÉÁö Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ÀÌ Áö½Ã¾î°¡ ½ºÅ©¸³Æ®¿¡ ÀüÇô ³ªÅ¸³ªÁö ¾ÊÀ¸¸é, OFF¸¦ ÁöÁ¤ÇÑ °Íó·³ ÇàÀ§ÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

#InstallKeybdHook, #InstallMouseHook, ListHotkeys, #InputLevel

+ +

¿¹Á¦

+
#UseHook  ; ÀÌ ½ÃÁ¡ ÀÌÈÄ·Î ÇÖÅ°¿¡ ´ëÇÏ¿© °¥°í¸®ÀÇ »ç¿ëÀ» °­Á¦ÇÕ´Ï´Ù.
+#x::MsgBox, ÀÌ ÇÖÅ°´Â °¥°í¸®·Î ±¸ÇöµÉ °ÍÀÔ´Ï´Ù.
+#y::MsgBox, À̰͵µ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.
+#UseHook off
+#z::MsgBox, ±×·¯³ª ÀÌ°ÍÀº ¾Æ´Õ´Ï´Ù.
+ + + diff --git a/src/docs/commands/_Warn.htm b/src/docs/commands/_Warn.htm new file mode 100644 index 0000000..2705d81 --- /dev/null +++ b/src/docs/commands/_Warn.htm @@ -0,0 +1,87 @@ + + + + +#Warn + + + + + + + +

#Warn [v1.0.95.00+]

+ +

ƯÁ¤ÇÑ Á¶°Ç¿¡ ´ëÇÑ °æ°í¸¦ ÄÑ°í ²ü´Ï´Ù. öÀÚ¿À·ù°¡ Àְųª ¼±¾ðÀÌ ¾ø´Â °æ¿ì¿Í °°ÀÌ ¿¡·¯¸¦ ³ªÅ¸³¾ ¼öµµ ÀÖ½À´Ï´Ù.

+ +
#Warn [, WarningType, WarningMode]
+ +

¸Å°³º¯¼ö

+
+ +
WarningType
+
+

ÄÑ°í ²ø °æ°íÀÇ Á¾·ù. »ý·«Çϸé, AllÀÌ ±âº»°ªÀÔ´Ï´Ù.

+

UseUnsetLocal ¶Ç´Â UseUnsetGlobal: º¯¼ö°¡ ÀÌÀü¿¡ °ªÀÌ ÇÒ´çµÇ¾î ÀÖÁö ¾Ê°Å³ª VarSetCapacity·Î ÃʱâÈ­µÇÁö ¾ÊÀº ä·Î ÀÐÇôÁö¸é °æ°í¸¦ º¸³À´Ï´Ù. º¯¼ö¸¦ ºñ¿ï ¸ñÀûÀ̶ó¸é, ºó ¹®ÀÚ¿­À» ÇÒ´çÇØ ÀÌ °æ°í¸¦ ´©¸£½Ê½Ã¿À.

+

+ Áö¿ª º¯¼ö¿Í Àü¿ª º¯¼ö¿¡ ´ëÇÏ¿© µû·Î °æ°í À¯ÇüÀÌ ³ª´²Áý´Ï´Ù. Àü¿ª º¯¼ö´Â ¿µ¼ÓÀûÀÌ°í ½ºÅ©¸³Æ®-Àüü¿¡ °ÉÃÄ ¿µÇâÀ» ¹ÌÄ¡´Â ¼ºÁúÀÌ ÀÖÀ¸¹Ç·Î ¹Ì¸® ÃʱâÈ­ÇÏÁö ¾Ê°í »ç¿ëÇÏ´Â °ÍÀÌ º¸´Ù ÀϹÝÀûÀ̱⠶§¹®ÀÔ´Ï´Ù. ÀÌ·± ÀÌÀ¯·Î, ¾î¶² ½ºÅ©¸³Æ® ÀúÀÚ´Â ÀÌ·± Á¾·ùÀÇ °æ°í¸¦ Áö¿ª º¯¼ö¿¡´Â ÄÑ°í Àü¿ª º¯¼ö¿¡´Â ²ô°í ½Í¾îÇÕ´Ï´Ù.

+
#Warn
+;y := ""  ; ÀÌ·¸°Ô ÇÏ¸é °æ°í¸¦ ´©¸¨´Ï´Ù.
+x := y    ; y¿¡´Â ¾ÆÁ÷ °ªÀÌ ÇÒ´çµÇÁö ¾Ê¾Ò½À´Ï´Ù.
+

+ UseEnv: ȯ°æ º¯¼ö°¡ ºó ½ºÅ©¸³Æ® º¯¼ö ´ë½Å¿¡ ÀÚµ¿À¸·Î »ç¿ëµÇ¸é °æ°í¸¦ º¸³À´Ï´Ù. ÀÌ·± ÀÏÀº Á¾Á¾ ȯ°æ º¯¼öÀÇ À̸§ÀÌ ¿¹»óÄ¡ ¸øÇÏ°Ô ½ºÅ©¸³Æ®°¡ »ç¿ëÇÏ´Â º¯¼ö¿¡ ÀÏÄ¡ÇÒ ¶§ ÀϾ´Ï´Ù. ÀÌ °æ°í´Â º¯¼ö¿¡ Á¢±ÙÇÒ ¶§ ÀϾ´Ï´Ù. ±×·¯³ª ½ºÅ©¸³Æ®¿¡ #NoEnv°¡ ÄÑÁ® ÀÖÀ¸¸é Àý´ë·Î ÀϾÁö ¾Ê½À´Ï´Ù (¿©·¯ °¡Áö ÀÌÀ¯·Î ±ÇÀåÇÔ).

+
#Warn
+;#NoEnv             ; ÀÌ°ÍÀ» Ãß°¡ÇØ "temp"°¡ ȯ°æ º¯¼ö°¡ ¾Æ´Ï¶ó°í ¹àÈ÷½Ê½Ã¿À.
+;EnvGet temp, TEMP  ; ÀÌ·¸°Ô Çϸé ȯ°æ º¯¼öÀÇ °ªÀ» ½ºÅ©¸³Æ® º¯¼ö ¾ÈÀ¸·Î º¹»çÇÒ °ÍÀÔ´Ï´Ù.
+temp := ""          ; ÀÌ ÁÙÀ» »èÁ¦Çصµ, temp´Â ¿©ÀüÈ÷ °ªÀ» °¡Áö°í ÀÖ½À´Ï´Ù.
+MsgBox % temp       ; ÀÌ°ÍÀº À̸§ÀÌ "TEMP"ÀΠȯ°æ º¯¼ö¿¡ Á¢±ÙÇÕ´Ï´Ù.
+

+ LocalSameAsGlobal: ½ºÅ©¸³Æ®°¡ ½ÇÇàÀ» ½ÃÀÛÇϱâ Àü¿¡, Àü¿ª º¯¼ö¿Í À̸§ÀÌ °°Àº ¼±¾ðµÇÁö ¾ÊÀº Áö¿ª º¯¼ö¿¡ ´ëÇÏ¿© °æ°í¸¦ º¸¿©ÁÝ´Ï´Ù. ÀÌ°ÍÀº ±ô¹ÚÀØ°í Àü¿ª º¯¼ö¸¦ ÇÔ¼ö ¾È¿¡ ¼±¾ðÇÑ ´ÙÀ½, °Å±â¿¡ Á¢±ÙÀ» ½ÃµµÇÏ¸é ¾ß±âµÇ´Â ¿¡·¯¸¦ ¹æÁöÇϱâ À§ÇÑ ¸ñÀûÀÔ´Ï´Ù. ±× º¯¼ö°¡ ½ÇÁ¦·Î Áö¿ª º¯¼öÀ̱⸦ ÀǵµÇß´Ù¸é, local x ¶Ç´Â static y¿Í °°ÀÌ ¼±¾ðÇÏ¿© °æ°í¸¦ ´©¸¦ ¼ö ÀÖ½À´Ï´Ù.

+ +
#Warn
+g := 1
+ShowG() {       ; ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾Ê¾Æµµ °æ°í°¡ ³ªÅ¸³³´Ï´Ù.
+    ;global g   ; <-- Àü¿ª º¯¼ö¿¡ Á¢±ÙÇϱâ À§ÇØ ÇÊ¿äÇÕ´Ï´Ù.
+    MsgBox % g  ; ¼±¾ðÇÒ ÇÊ¿ä¾øÀÌ, "g"´Â ºó Áö¿ª º¯¼öÀÔ´Ï´Ù.
+}
+

+ All: ÁÖ¾îÁø WarningMode¸¦ Áö¿øµÇ´Â ¸ðµç °æ°í À¯Çü¿¡ Àû¿ëÇÕ´Ï´Ù.

+
+ +
WarningMode
+
+

¾î¶»°Ô °æ°í¸¦ º¸³¾Áö °¡¸®Å°´Â °ª. »ý·«µÇ¸é, ±âº»°ªÀº MsgBoxÀÔ´Ï´Ù.

+

MsgBox: °æ°í¸¦ ±â¼úÇÏ´Â ¸Þ½ÃÁö ¹Ú½º¸¦ º¸¿©ÁÝ´Ï´Ù. ¸Þ½ÃÁö ¹Ú½º¸¦ ¹¬»ìÇϸé, ½ºÅ©¸³Æ®´Â º¸Åëó·³ ½ÇÇàÀ» °è¼ÓÇÕ´Ï´Ù.

+

StdOut [v1.1.04+]: °æ°í¸¦ ±â¼úÇÏ´Â ¸»À» Ç¥ÁØÃâ·Â(stdout)À¸·Î º¸³À´Ï´Ù (ÇÁ·Î±×·¥ÀÇ Ç¥ÁØ Ãâ·Â ½ºÆ®¸²). ÆÄÀÏ À̸§°ú ÁÙ ¹øÈ£¸¦ ÇÔ²² º¸³À´Ï´Ù. ÀÌ ´öºÐ¿¡ SciTE°°Àº ȯ»óÀûÀÎ ÆíÁý±âµéÀº ½ºÅ©¸³Æ®¸¦ ¹æÇØÇÏÁö ¾Ê°í °æ°í¸¦ ³ªÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù - »ç¿ëÀÚ´Â ³ªÁß¿¡ ÆíÁý±âÀÇ Ãâ·Â ÆÇÀ» ÅëÇÏ¿© ¹®Á¦ÀÇ ÁÙ¿¡ Á¡ÇÁÇØ °¥ ¼ö ÀÖ½À´Ï´Ù.

+

OutputDebug: È­¸é¿¡ º¸¿©ÁÖ±â À§ÇØ °æ°í ¹®±¸¸¦ µð¹ö°Å¿¡°Ô º¸³À´Ï´Ù. µð¹ö°Å°¡ ÄÑÁ® ÀÖÁö ¾ÊÀ¸¸é, ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â OutputDebug¸¦ ÂüÁ¶ÇϽʽÿÀ.

+

Off: ÁÖ¾îÁø WarningTypeÀÇ °æ°í¸¦ ²ü´Ï´Ù.

+
+ +
+

³íÆò

+

±âº»°ªÀ¸·Î, ¸ðµç °æ°í´Â ²¨Á® ÀÖ½À´Ï´Ù.

+

°æ°í´Â ½ÇÇà½Ã°£¿¡´Â ÄÑ°í ²ø ¼ö ¾ø½À´Ï´Ù; ¼³Á¤Àº ½ºÅ©¸³Æ®°¡ ÀûÀçµÉ ¶§ °áÁ¤µË´Ï´Ù. ±×·¯¹Ç·Î, ½ºÅ©¸³Æ®¿¡¼­ À§Ä¡´Â Àǹ̰¡ ¾ø½À´Ï´Ù (±×¸®°í, ´Ù¸¥ # Áö½Ã¾îó·³, #WarnÀº Á¶°ÇÀûÀ¸·Î ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù).

+

+ ±×·¸Áö¸¸, ¿©·¯ #Warn Áö½Ã¾îÀÇ ¼ø¼­´Â Àǹ̰¡ ÀÖ½À´Ï´Ù: ¸¶Áö¸·À¸·Î ³ªÅ¸³ª ÁÖ¾îÁø °æ°í¸¦ ¼³Á¤ÇÑ Áö½Ã¾î°¡ ±× °æ°í¿¡ ´ëÇÑ ¸ðµå¸¦ °áÁ¤ÇÕ´Ï´Ù. ±×·¡¼­, ¿¹¸¦ µé¾î, UseEnv¸¦ Á¦¿ÜÇÏ°í ¾Æ·¡ÀÇ µÎ ¼­¼ú¹®Àº Á¶ÇÕÇÏ¿© ¸ðµç °æ°í¸¦ ÄÒ È¿°ú°¡ ÀÖ½À´Ï´Ù:

+ +
#Warn All
+#Warn UseEnv, Off
+
+EnvSet EnvVar, 1
+x := EnvVar       ; #NoEnv°¡ »ç¿ëµÇÁö ¾Ê¾ÒÀ¸¹Ç·Î ¹®Á¦°¡ ¾ø½À´Ï´Ù.
+x := NotAnEnvVar  ; °æ°í.
+
+ +

°ü·Ã Ç׸ñ

+

+Áö¿ª º¯¼ö¿Í Àü¿ª º¯¼ö

+ +

¿¹Á¦

+
+#Warn All, Off                    ; ¸ðµç °æ°í¸¦ ²ü´Ï´Ù. ÀÌ°ÍÀÌ ±âº» »óÅÂÀÔ´Ï´Ù.
+#Warn                             ; ¸ðµç Á¾·ùÀÇ °æ°í¸¦ ÄÕ´Ï´Ù; °¢ °æ°í¸¦ ¸Þ½ÃÁö »óÀÚ¿¡ º¸¿©ÁÝ´Ï´Ù.
+#Warn UseUnsetLocal, OutputDebug  ; Áö¿ª º¯¼ö¸¦ ¼³Á¤Çϱâ Àü¿¡ »ç¿ëµÇ¸é °æ°íÇÕ´Ï´Ù; OutputDebug·Î °æ°í¸¦ º¸³À´Ï´Ù.
+
+ + + diff --git a/src/docs/commands/_WinActivateForce.htm b/src/docs/commands/_WinActivateForce.htm new file mode 100644 index 0000000..fda806b --- /dev/null +++ b/src/docs/commands/_WinActivateForce.htm @@ -0,0 +1,29 @@ + + + + +#WinActivateForce + + + + + + + +

#WinActivateForce

+ +

âÀ» È°¼ºÈ­ÇÏ´Â ºÎµå·¯¿î ¹æ¹ýÀ» °Ç³Ê ¶Ù°í °ð¹Ù·Î °­Á¦·Î È°¼ºÈ­ÇÕ´Ï´Ù.

+ +
#WinActivateForce
+

+ÀÌ°ÍÀ» ½ºÅ©¸³Æ® ¾î´À °÷¿¡³ª ÁöÁ¤Çϸé âÀ» È°¼ºÈ­ÇÏ´Â ¸í·É¾î°¡ -- WinActivate, WinActivateBottom, ±×¸®°í GroupActivate °°Àº ¸í·É¾î -- âÀ» È°¼ºÈ­ÇÏ´Â "ºÎµå·¯¿î" ¹æ¹ýÀ» °Ç³Ê¶Ù°í °ð¹Ù·Î ´õ °­·ÂÇÑ ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù.

+

+ÀÌ Áö½Ã¾î´Â º¸Åë âÀ» ¾ó¸¶³ª »¡¸® ¾ó¸¶³ª ½Å·Ú¼ºÀÌ ÀÖ°Ô È°¼ºÈ­ ÇØ¾ß ÇÏ´ÂÁö´Â º¯°æÇÏÁö ¾Ê½À´Ï´Ù. ±×·¯³ª ¿©·¯ ´Ù¸¥ âµéÀÌ Àçºü¸£°Ô ¼­·Î È°¼ºÈ­ µÉ ¶§ ŽºÅ©¹Ù ¹öÆ°ÀÌ ¹ø½ÀÌ´Â °ÍÀ» ¸·À» ¼öµµ ÀÖ½À´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

WinActivate, WinActivateBottom, GroupActivate

+

¿¹Á¦

+
#WinActivateForce
+ + + diff --git a/src/docs/commands/index.htm b/src/docs/commands/index.htm new file mode 100644 index 0000000..4593bf4 --- /dev/null +++ b/src/docs/commands/index.htm @@ -0,0 +1,1199 @@ + + + + +Alphabetical Command and Function Index + + + + + + + + +

¸í·É¾î¿Í ÇÔ¼ö À妽º

+

+´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ÇÔ¼ö³ª ¸í·É¾î À̸§¿¡ Ŭ¸¯ÇϽʽÿÀ. ÀÚÁÖ »ç¿ëÇÏ´Â ¿£Æ®¸®µéÀº Å« ±Û²Ã·Î Ç¥½ÃÇß½À´Ï´Ù.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
¿£Æ®¸®¼³¸í
{ ... } (ºí·Ï)ÇÑ ½ÖÀÇ ¹Ý°ýÈ£´Â ºí·ÏÀ» ³ªÅ¸³À´Ï´Ù. ºí·ÏÀº ÀüÇüÀûÀ¸·Î ÇÔ¼ö, Else, Loop, While-loop, ±×¸®°í IF-¸í·É¾î¿Í ÇÔ²² »ç¿ëµË´Ï´Ù.
{ ... } / Object()½ºÅ©¸³Æ®°¡ °¡´ÉÇÑ ¿¬°ü ¹è¿­À» »ý¼ºÇÕ´Ï´Ù.
[ ... ] / Array()½ºÅ©¸³Æ®°¡ °¡´ÉÇÑ ¿¬°ü ¹è¿­À» Á¤¼ö Å°·Î »ý¼ºÇÕ´Ï´Ù.
Abs()¼ýÀÚÀÇ Àý´ë°ªÀ» µ¹·ÁÁÝ´Ï´Ù.
AutoTrimVar1 = %Var2% ¼­¼ú¹®¿¡¼­ Var2ÀÇ Ã³À½°ú ³¡¿¡¼­ ÅÇ°ú ½ºÆäÀ̽º¸¦ °È¾î³¾Áö ¸»Áö °áÁ¤ÇÕ´Ï´Ù.
ASin()¾ÆÅ©»çÀÎÀ» ¶óµð¾È ´ÜÀ§·Î µ¹·ÁÁÝ´Ï´Ù (Number´Â »çÀÎ °ª).
ACos()¾ÆÅ©ÄÚ»çÀÎÀ» ¶óµð¾È ´ÜÀ§·Î µ¹·ÁÁÝ´Ï´Ù (Number´Â ÄÚ»çÀÎ °ª).
ATan()¾ÆũźÁ¨Æ®¸¦ ¶óµð¾È ´ÜÀ§·Î µ¹·ÁÁÝ´Ï´Ù (Number´Â źÁ¨Æ® °ª).
BlockInput»ç¿ëÀÚ°¡ Å°º¸µå¿Í ¸¶¿ì½º¸¦ ÅëÇÏ¿© ÄÄÇ»ÅÍ¿Í ´ëÈ­Çϵµ·Ï ÄѰųª ²ü´Ï´Ù.
Breakȸµ¹À̸¦ ºüÁ® ³ª¿É´Ï´Ù. ¸ðµç Á¾·ùÀÇ È¸µ¹ÀÌ ¾È¿¡¼­ À¯È¿ÇÕ´Ï´Ù.
Catchtry ¼­¼ú¹®À» ½ÇÇàÇÏ´Â µ¿¾È¿¡ ¿¡·¯°¡ ÀϾ¸é ½ÇÇàÇÒ Äڵ带 ÁöÁ¤ÇÕ´Ï´Ù.
Ceil()Number´Â °¡Àå °¡±î¿î Á¤¼ö·Î ¿Ã¸²µË´Ï´Ù (.00 ¹ö¸²).
ClickÁöÁ¤µÈ ÁÂÇ¥¿¡ ¸¶¿ì½º ¹öÆ°À» Ŭ¸¯ÇÕ´Ï´Ù. ¸¶¿ì½º ¹öÆ°À» ´©¸£°Å³ª, ¸¶¿ì½º ÈÙÀ» µ¹¸®°Å³ª, ¶Ç´Â ¸¶¿ì½º¸¦ À̵¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ClipWaitŬ¸³º¸µå¿¡ µ¥ÀÌÅÍ°¡ µé¾î¿Ã ¶§±îÁö ±â´Ù¸³´Ï´Ù.
ComObjActive()µî·ÏµÈ COM °´Ã¼¸¦ ¿­¶÷ÇÕ´Ï´Ù.
ComObjArray()COM¿¡ »ç¿ëÇÒ SAFEARRAY¸¦ »ý¼ºÇÕ´Ï´Ù.
ComObjConnect()COM °´Ã¼ÀÇ À̺¥Æ® ¼Ò½º¸¦ ÁÖ¾îÁø Á¢µÎ»ç¸¦ °¡Áø ÇÔ¼öµé¿¡ ¿¬°áÇÕ´Ï´Ù.
ComObjCreate()COM °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù.
ComObjEnwrap() / ComObjUnwrap()COM °´Ã¼¸¦ ½Î°Å³ª DZ´Ï´Ù.
ComObjError()COM ¿¡·¯ÀÇ °íÁö¸¦ ÄѰųª ²ü´Ï´Ù.
ComObjFlags()COM Æ÷ÀåÀÚ °´Ã¼ÀÇ ÇàÀ§¸¦ Á¦¾îÇÏ´Â Ç÷¡±×¸¦ ¿­¶÷Çϰųª º¯°æÇÕ´Ï´Ù.
ComObjGet()COM ÄÄÆ÷³ÍÆ®°¡ Á¦°øÇÏ´Â °´Ã¼ÀÇ ÂüÁ¶ ÁÖ¼Ò¸¦ µ¹·ÁÁÝ´Ï´Ù.
ComObjMissing()COM ¸Þ½îµå¿¡ °Ç³Ú "missing parameter" °´Ã¼¸¦ ¸¸µì´Ï´Ù.
ComObjParameter()°ª°ú À¯ÇüÀ» ½Î¼­ ¸Å°³º¯¼ö·Î COM ¸Þ½îµå¿¡ °Ç³Ü´Ï´Ù.
ComObjQuery()COM °´Ã¼¿¡ ÀÎÅÍÆäÀ̽º³ª ¼­ºñ½º¸¦ ÁúÀÇÇÕ´Ï´Ù.
ComObjType()COM °´Ã¼¿¡¼­ À¯Çü Á¤º¸¸¦ ¿­¶÷ÇÕ´Ï´Ù.
ComObjValue()COM Æ÷ÀåÀÚ °´Ã¼¿¡ ÀúÀåµÈ °ªÀ̳ª Æ÷ÀÎÅ͸¦ ¿­¶÷ÇÕ´Ï´Ù.
ContinueÇöÀç ³²¾Æ Àִ ȸµ¹ÀÌ ¹Ýº¹À» °Ç³Ê¶Ù°í ´Ù½Ã »õ·Î ȸµ¹À̸¦ ½ÃÀÛÇÕ´Ï´Ù. ¾î¶² Á¾·ùÀÇ È¸µ¹ÀÌ ¾È¿¡¼­µµ À¯È¿ÇÕ´Ï´Ù.
ControlÄÜÆ®·Ñ¿¡ ´Ù¾çÇÑ º¯°æÀ» ÇÕ´Ï´Ù.
ControlClick¸¶¿ì½º ¹öÆ° À̺¥Æ®³ª ¸¶¿ì½º ÈÙ À̺¥Æ®¸¦ ÄÜÆ®·Ñ¿¡ º¸³À´Ï´Ù.
ControlFocusâÀ§ÀÇ ÄÜÆ®·Ñ¿¡ ÀÔ·Â ÃÊÁ¡À» ¼³Á¤ÇÕ´Ï´Ù.
ControlGetÄÜÆ®·Ñ¿¡ °üÇÏ¿© ´Ù¾çÇÑ À¯Çü Á¤º¸¸¦ ¿­¶÷ÇÕ´Ï´Ù.
ControlGetFocus¸ñÇ¥ â¿¡¼­ ¾î´À ÄÜÆ®·ÑÀÌ ÀÔ·Â ÃÊÁ¡À» °¡Áö°í ÀÖ´ÂÁö ¿­¶÷ÇÕ´Ï´Ù.
ControlGetPosÄÜÆ®·ÑÀÇ À§Ä¡¿Í Å©±â¸¦ ¿­¶÷ÇÕ´Ï´Ù.
ControlGetTextÄÜÆ®·Ñ¿¡¼­ ÅؽºÆ®¸¦ ¿­¶÷ÇÕ´Ï´Ù.
ControlMoveÄÜÆ®·ÑÀ» À̵¿Çϰųª Å©±â¸¦ ¹Ù²ß´Ï´Ù.
ControlSend / ControlSendRaw½Ã¹Ä·¹ÀÌÆ® Å°¸¦ âÀ̳ª ÄÜÆ®·Ñ¿¡ Àü¼ÛÇÕ´Ï´Ù.
ControlSetTextÄÜÆ®·ÑÀÇ ÅؽºÆ®¸¦ ¹Ù²ß´Ï´Ù.
CoordMode´Ù¾çÇÑ ¸í·É¾î¿¡ ´ëÇÏ¿© ÁÂÇ¥ ¸ðµå¸¦ È°¼º âÀ̳ª È­¸é¿¡ »ó´ëÀûÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù.
Cos()¼ýÀÚÀÇ »ï°¢ÇÔ¼ö ÄÚ»çÀÎÀ» µ¹·ÁÁÝ´Ï´Ù .
CriticalÇöÀç ¾²·¹µå°¡ ´Ù¸¥ ½º·¹µå¿¡ ÀÎÅÍ·´Æ®¸¦ ´çÇÏÁö ¾Êµµ·Ï ¹æÁöÇϰųª, ÀÎÅÍ·´Æ® µÇµµ·Ï Çã¿ëÇÕ´Ï´Ù.
DetectHiddenTextâ¿¡¼­ º¸ÀÌÁö ¾Ê´Â ÅؽºÆ®¸¦ "º¸¿©ÁÙÁö ¸»Áö" °áÁ¤ÇÕ´Ï´Ù. âÀ» ã´Â ¸ñÀû¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸í·É¾î´Â IfWinExist¿Í WinActivate °°Àº ¸í·É¾î¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.
DetectHiddenWindowsº¸ÀÌÁö ¾ÊÀº âÀ» ½ºÅ©¸³Æ®¿¡ "º¸¿©ÁÙÁö ¸»Áö" °áÁ¤ÇÕ´Ï´Ù.
DllCall()Ç¥ÁØ Windows API ÇÔ¼ö¿Í °°Àº, DLL ¾ÈÀÇ ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù.
DriveCD µå¶óÀ̺곪 DVD µå¶óÀ̺êÀÇ Æ®·¹À̸¦ ²¨³»°Å³ª ³Ö½À´Ï´Ù. ¶Ç´Â µå¶óÀ̺êÀÇ º¼·ý ¶óº§À» ¼³Á¤ÇÕ´Ï´Ù.
DriveGetÄÄÇ»ÅÍÀÇ µå¶óÀ̺꿡 °üÇÏ¿© ´Ù¾çÇÑ À¯ÇüÀÇ Á¤º¸¸¦ ¿­¶÷ÇÕ´Ï´Ù.
DriveSpaceFreeµå¶óÀ̺êÀÇ ¿©À¯ °ø°£À» ¸Þ°¡ ¹ÙÀÌÆ® ´ÜÀ§·Î ¿­¶÷ÇÕ´Ï´Ù.
EditÇöÀç ½ºÅ©¸³Æ®¸¦ ÆíÁýÇϱâ À§ÇØ ¿¬°ü ÆíÁý±â¿¡ ¿±´Ï´Ù.
ElseIF-¼­¼ú¹®ÀÌ FALSE·Î Æò°¡µÇ¸é ¼öÇàÇÒ ¸í·É¾î(µé)À» ÁöÁ¤ÇÕ´Ï´Ù. ¸í·É¾î°¡ µÎ °³ ÀÌ»ó Á¸ÀçÇϸé, ºí·Ï (°ýÈ£)¿¡ µÑ·¯ ½Î ³ÖÀ¸½Ê½Ã¿À.
EnvAddÁÖ¾îÁø °ªÀ» º¯¼ö¿¡ ´õÇØ ÀÚ±â Àڽſ¡ ÇÒ´çÇÕ´Ï´Ù. (³¯Â¥-½Ã°£ °ª¿¡¼­ ´õÇϰųª »¬ ¼öµµ ÀÖ½À´Ï´Ù). ´ÙÀ½°ú µ¿µîÇÕ´Ï´Ù: Var += Value.
EnvDivº¯¼ö¸¦ ÁÖ¾îÁø °ªÀ¸·Î ³ª´©¾î¼­ ÀÚ±â Àڽſ¡ ÇÒ´çÇÕ´Ï´Ù: Var /= Value.
EnvGetȯ°æ º¯¼ö¸¦ ¿­¶÷ÇÕ´Ï´Ù.
EnvMultº¯¼ö¸¦ ÁÖ¾îÁø °ª¸¸Å­ °öÇؼ­ ÀÚ±â Àڽſ¡ ÇÒ´çÇÕ´Ï´Ù. ´ÙÀ½°ú µ¿µîÇÕ´Ï´Ù: Var *= Value.
EnvSetȯ°æ¿¡ ´ã±ä º¯¼ö¿¡ °ªÀ» ¾¹´Ï´Ù.
EnvSubÁÖ¾îÁø °ªÀ» º¯¼ö¿¡¼­ »©¼­ ÀÚ±â Àڽſ¡ ÇÒ´çÇÕ´Ï´Ù (³¯Â¥-½Ã°£ °ªÀ» ºñ±³ÇÏ´Â µ¥¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù). ´ÙÀ½°ú µ¿µîÇÕ´Ï´Ù: Var -= Value.
EnvUpdateOS´Â ¹°·Ð ½ÇÇà ÁßÀÎ ¸ðµç ¾îÇø®ÄÉÀ̼ǿ¡ ȯ°æ º¯¼ö°¡ ¹Ù²î¾úÀ½À» °íÁöÇÕ´Ï´Ù.
ExitÇöÀç ¾²·¹µå¸¦ ºüÁ® ³ª¿À°Å³ª (½ºÅ©¸³Æ®°¡ ¿µ¼ÓÀûÀÌ ¾Æ´Ï°í ÇÖÅ°µµ ÀüÇô ¾ø´Ù¸é) Àüü ½ºÅ©¸³Æ®¸¦ ³¡³À´Ï´Ù.
ExitApp½ºÅ©¸³Æ®¸¦ ¹«Á¶°Ç Á¾·áÇÕ´Ï´Ù.
Exp()e (´ë·« 2.71828182845905)¸¦ N ¸¸Å­ Á¦°öÇؼ­ µ¹·ÁÁÝ´Ï´Ù.
FileAppendÅؽºÆ®¸¦ ÆÄÀÏ ³¡¿¡ ¾¹´Ï´Ù (ÇÊ¿äÇϸé, ¸ÕÀú ÆÄÀÏÀ» »ý¼ºÇÕ´Ï´Ù).
FileCopyÆÄÀÏÀ» º¹»çÇÕ´Ï´Ù.
FileCopyDirÆú´õ¸¦ º¹»çÇÕ´Ï´Ù. ±×ÀÇ ÇÏÀ§ Æú´õ¿Í ÆÄÀϵµ ÇÔ²² º¹»çµË´Ï´Ù (xcopy¿Í À¯»ç).
FileCreateDirÆú´õ¸¦ »ý¼ºÇÕ´Ï´Ù.
FileCreateShortcut´ÜÃà ÆÄÀÏÀ» »ý¼ºÇÕ´Ï´Ù (.lnk).
FileDeleteÆÄÀÏÀ» »èÁ¦ÇÕ´Ï´Ù.
FileEncodingFileRead, FileReadLine, Loop Read, FileAppend, ±×¸®°í FileOpen¿¡ ´ëÇÏ¿© ±âº» ÆÄÀÏ ÀÎÄÚµùÀ» ¼³Á¤ÇÕ´Ï´Ù.
´ÙÀ½µµ ÂüÁ¶ÇϽʽÿÀ: ÅؽºÆ® ÀÎÄÚµù
FileInstallÁöÁ¤ÇÑ ÆÄÀÏÀ» ½ºÅ©¸³Æ®ÀÇ ÄÄÆÄÀÏ ¹öÀü¿¡ Æ÷ÇÔ½Ãŵ´Ï´Ù.
FileGetAttribÆÄÀÏÀ̳ª Æú´õ°¡ Àбâ Àü¿ëÀÎÁö, ¼ûÀº ÆÄÀÏÀÎÁö µîµîÀÇ ¼Ó¼ºÀ» º¸°íÇÕ´Ï´Ù.
FileGetShortcut´ÜÃà ÆÄÀÏ¿¡ °üÇÑ Á¤º¸¸¦ ¿­¶÷ÇÕ´Ï´Ù(.lnk). ¿¹¸¦ µé¾î ±×ÀÇ ¸ñÇ¥ ÆÄÀÏ.
FileGetSizeÆÄÀÏÀÇ Å©±â¸¦ ¿­¶÷ÇÕ´Ï´Ù.
FileGetTimeÆÄÀÏÀ̳ª Æú´õÀÇ ³¯Â¥½Ã°£ µµÀåÀ» ¿­¶÷ÇÕ´Ï´Ù.
FileGetVersionÆÄÀÏÀÇ ¹öÀüÀ» ¿­¶÷ÇÕ´Ï´Ù.
FileMoveÆÄÀÏÀ» À̵¿Çϰųª À̸§À» ¹Ù²ß´Ï´Ù.
FileMoveDirÆú´õ¸¦ ±×ÀÇ ÇÏÀ§ Æú´õ ÆÄÀÏ°ú ÇÔ²² À̵¿ÇÕ´Ï´Ù. Æú´õ À̸§À» ¹Ù²Ü ¼öµµ ÀÖ½À´Ï´Ù.
FileOpen°´Ã¼-ÁöÇâÀû ÆÄÀÏ I/O¸¦ Á¦°øÇÕ´Ï´Ù.
FileReadÆÄÀÏÀÇ ³»¿ëÀ» º¯¼ö ¾ÈÀ¸·Î ÀÐ¾î µéÀÔ´Ï´Ù.
FileReadLineÁöÁ¤µÈ ÁÙÀ» ÆÄÀϷκÎÅÍ ÀÐ¾î ±× ÅؽºÆ®¸¦ º¯¼ö¿¡ ÀúÀåÇÕ´Ï´Ù.
FileRecycleÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ ÈÞÁöÅëÀ¸·Î º¸³À´Ï´Ù.
FileRecycleEmptyÈÞÁöÅëÀ» ºñ¿ó´Ï´Ù.
FileRemoveDirÆú´õ¸¦ »èÁ¦ÇÕ´Ï´Ù.
FileSelectFile»ç¿ëÀÚ°¡ ÆÄÀÏÀ» ¿­°Å³ª ÀúÀåÇÒ ¼ö ÀÖµµ·Ï Ç¥ÁØ ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÝ´Ï´Ù.
FileSelectFolder

»ç¿ëÀÚ°¡ Æú´õ¸¦ ¼±ÅÃÇÒ ¼ö ÀÖµµ·Ï Ç¥ÁØ ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÝ´Ï´Ù.

FileSetAttribÆÄÀÏÀ̳ª Æú´õÀÇ ¼Ó¼ºÀ» º¯°æÇÕ´Ï´Ù. ¿ÍÀϵåÄ«µå¸¦ Áö¿øÇÕ´Ï´Ù.
FileSetTimeÆÄÀÏÀ̳ª Æú´õÀÇ ³¯Â¥½Ã°£ µµÀåÀ» º¯°æÇÕ´Ï´Ù. ¿ÍÀϵåÄ«µå¸¦ Áö¿øÇÕ´Ï´Ù.
FinallyTry ¼­¼ú¹®ÀÌ ³¡³ª¸é, ÇÑ ºí·ÏÀÇ Äڵ尡 ¾ðÁ¦³ª È®½ÇÇÏ°Ô ½ÇÇàµÇµµ·Ï ÇÕ´Ï´Ù.
Floor()¼ýÀÚ¸¦ °¡Àå °¡±î¿î Á¤¼ö·Î ¹ö¸²ÇÑ ´ÙÀ½ µ¹·ÁÁÝ´Ï´Ù ( .00À» ¹ö¸²).
For°´Ã¼ ¾ÈÀÇ Å°-°ª ÇÑ ½Ö¸¶´Ù ÀÏ·ÃÀÇ ¸í·É¾î¸¦ ¹Ýº¹ÇÕ´Ï´Ù.
Format°¡º¯ °³¼öÀÇ ÀÔ·Â °ªÀ» Æ÷¸Ë ¹®ÀÚ¿­¿¡ ¸Â°Ô Æ÷¸ËÇÕ´Ï´Ù.
FormatTimeYYYYMMDDHH24MISS ŸÀÓ½ºÅÆÇÁ¸¦ ÁöÁ¤µÈ ³¯Â¥/½Ã°£ Çü½ÄÀ¸·Î º¯ÇüÇÕ´Ï´Ù.
Func()ÇÔ¼ö¸¦ °¡¸®Å°´Â ÂüÁ¶ÁÖ¼Ò¸¦ ¿­¶÷ÇÕ´Ï´Ù.
GetKeyName()
GetKeyVK()
GetKeySC()
°¡»ó Å° ÄÚµå ¶Ç´Â Å°ÀÇ ½ºÄµ ÄÚµåÀÇ À̸§ ¶Ç´Â ÅؽºÆ®¸¦ ¿­¶÷ÇÕ´Ï´Ù.
GetKeyStateÅ°º¸µå Å°³ª ¸¶¿ì½º/Á¶À̽ºÆ½ ¹öÆ°ÀÌ ´­·¯ ÀÖ´ÂÁö ¶¾ »óÅÂÀÎÁö Á¡°ËÇÕ´Ï´Ù. ¶Ç Á¶À̽ºÆ½ÀÇ »óŸ¦ ¿­¶÷ÇÕ´Ï´Ù.
GosubÁöÁ¤µÈ ¶óº§·Î Á¡ÇÁÇؼ­ ReturnÀ» ¸¸³¯ ¶§±îÁö ½ÇÇàÀ» °è¼ÓÇÕ´Ï´Ù.
GotoÁöÁ¤µÈ ¶óº§·Î Á¡ÇÁÇØ ½ÇÇàÀ» °è¼ÓÇÕ´Ï´Ù.
GroupActivateGroupAdd·Î Á¤ÀÇµÈ Ã¢ ±×·ì¿¡¼­ ´ÙÀ½ âÀ» È°¼ºÈ­ÇÕ´Ï´Ù.
GroupAddâÀ» â ±×·ì¿¡ Ãß°¡ÇÕ´Ï´Ù. ÇÊ¿äÇϸé â ±×·ìÀ» »ý¼ºÇÕ´Ï´Ù.
GroupClose¹Ù·Î Àü¿¡ GroupActivate³ª GroupDeactivate¿¡ ÀÇÇÏ¿© È°¼ºÈ­µÇ¾ú´ø È°¼º âÀ» ´Ý½À´Ï´Ù . + ±× ´ÙÀ½¿¡ ¿¬¼ÓÀûÀ¸·Î ±× ´ÙÀ½ âÀ» È°¼ºÈ­ÇÕ´Ï´Ù. ±×·ì¿¡ ÀÖ´Â ¸ðµç âÀ» ´ÝÀ» ¼öµµ ÀÖ½À´Ï´Ù.
GroupDeactivateGroupActivate¿Í ºñ½ÁÇÕ´Ï´Ù. ´Ü ±×·ì¿¡ ¾ø´Â ´ÙÀ½ âÀ» È°¼ºÈ­ÇÑ´Ù´Â Á¡ÀÌ ´Ù¸¨´Ï´Ù.
Guiâ°ú ÄÜÆ®·ÑÀ» »ý¼ºÇÏ°í °ü¸®ÇÕ´Ï´Ù. ¸¸µç âÀº µ¥ÀÌÅÍ ÀÔ·Â ÆûÀ̳ª ¸ÂÃã »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
GuiControl±¸ÀÌ Ã¢ÀÇ ÄÜÆ®·Ñ¿¡ ´Ù¾çÇÑ º¯°æÀ» ÇÕ´Ï´Ù.
GuiControlGet±¸ÀÌ ÅÁÀÇ ÄÜÆ®·Ñ¿¡ °üÇÏ¿© ´Ù¾çÇÑ À¯ÇüÀÇ Á¤º¸¸¦ ¿­¶÷ÇÕ´Ï´Ù.
Hotkey½ºÅ©¸³Æ®°¡ ½ÇÇà ÁßÀÎ µ¿¾È, ÇÖÅ°¸¦ »ý¼º, º¯°æ, È°¼ºÈ­, ¶Ç´Â ºÒ´ÉÈ­ÇÕ´Ï´Ù.
ifº¯¼ö¸¦ º¯¼ö¿¡ ºñ±³ÇØ TRUE·Î Æò°¡µÇ¸é ¼öÇàÇÒ ¸í·É¾î(µé)À» ÁöÁ¤ÇÕ´Ï´Ù. µÎ °³ ÀÌ»ó ¸í·É¾î°¡ Á¸ÀçÇϸé, ºí·Ï (¹Ý°ýÈ£) ¾È¿¡ ½Î ³ÖÀ¸½Ê½Ã¿À.
if (expression)Ç¥Çö½ÄÀÌ TRUE·Î Æò°¡µÉ ¶§ ¼öÇàÇÒ ¸í·É¾î(µé)À» ÁöÁ¤ÇÕ´Ï´Ù.
If var [not] betweenº¯¼öÀÇ ³»¿ëÀÌ ¼ýÀÚ ¼ø¼­·Î ¶Ç´Â ¾ËÆĺª ¼ø¼­·Î µÎ °ª »çÀÌ¿¡ (Æ÷ÇÔ) ÀÖ´ÂÁö Á¡°ËÇÕ´Ï´Ù.
If var [not] in/contains MatchListº¯¼öÀÇ ³»¿ëÀÌ ¸®½ºÆ® ¾ÈÀÇ Ç׸ñ¿¡ ºÎÇÕÇÏ´ÂÁö Á¡°ËÇÕ´Ï´Ù.
If var is [not] typeº¯¼öÀÇ ³»¿ëÀÌ ¼ýÀÚÀÎÁö, ´ë¹®ÀÚÀÎÁö µîµîÀ» Á¡°ËÇÕ´Ï´Ù.
IfEqual / IfNotEqualº¯¼ö°¡°¡ °ª°ú °°ÀºÁö ºñ±³ÇÕ´Ï´Ù. ´ÙÀ½°ú µ¿µîÇÕ´Ï´Ù: if Var = Value | if Var <> Value.
IfExist / + FileExist()ÆÄÀÏÀ̳ª Æú´õ°¡ Á¸ÀçÇÏ´ÂÁö Á¡°ËÇÕ´Ï´Ù.
IfGreater / IfGreaterOrEqualº¯¼ö¸¦ °ª¿¡ ºñ±³ÇÕ´Ï´Ù. ´ÙÀ½°ú µ¿µîÇÕ´Ï´Ù: if Var > Value | if Var >= Value.
IfInString / InStr()º¯¼ö¿¡ ÁöÁ¤µÈ ¹®ÀÚ¿­ÀÌ Æ÷ÇԵǾî ÀÖ´ÂÁö Á¡°ËÇÕ´Ï´Ù.
IfLess / IfLessOrEqualº¯¼ö¸¦ °ª¿¡ ºñ±³ÇÕ´Ï´Ù. ´ÙÀ½°ú µ¿µîÇÕ´Ï´Ù: if Var < Value | if Var <= Value.
IfMsgBox°¡Àå ÃÖ±ÙÀÇ MsgBox ¸í·ÉÀ» ¼öÇàÇÏ´Â µ¿¾È »ç¿ëÀÚ°¡ ¾î´À ¹öÆ°À» ´­·¶´ÂÁö Á¡°ËÇÕ´Ï´Ù.
IfWinActive / IfWinNotActive
ÁöÁ¤µÈ âÀÌ Á¸ÀçÇÏ´ÂÁö ±×¸®°í ÇöÀç È°¼º »óÅ (Àü°æ)ÀÎÁö Á¡°ËÇÕ´Ï´Ù.
IfWinExist / IfWinNotExist
ÁöÁ¤µÈ âÀÌ Á¸ÀçÇÏ´ÂÁö Á¡°ËÇÕ´Ï´Ù.
ImageSearchÈ­¸é¿¡¼­ À̹ÌÁö¸¦ °Ë»öÇÕ´Ï´Ù.
IniDeleteÇ¥ÁØ Çü½ÄÀÇ .ini ÆÄÀϷκÎÅÍ °ªÀ» Áö¿ó´Ï´Ù.
IniReadÇ¥ÁØ Çü½ÄÀÇ .ini ÆÄÀϷκÎÅÍ °ªÀ» ÀнÀ´Ï´Ù.
IniWriteÇ¥ÁØ Çü½ÄÀÇ .ini ÆÄÀÏ¿¡ °ªÀ» ¾¹´Ï´Ù.
Input»ç¿ëÀÚ°¡ ¹®ÀÚ¿­À» ŸÀÚÇϱ⸦ ±â´Ù¸³´Ï´Ù.
InputBoxÀÔ·Â ¹Ú½º¸¦ º¸¿©ÁÖ°í »ç¿ëÀÚ°¡ ¹®ÀÚ¿­À» ŸÀÚÇØ ³Ö±â¸¦ ¿ä±¸ÇÕ´Ï´Ù.
InStr()ÁÖ¾îÁø ¹®ÀÚ¿­ÀÌ ³ªÅ¸³ª´ÂÁö ¿ÞÂÊ¿¡¼­ ¿À¸¥ÂÊÀ¸·Î °Ë»öÇÕ´Ï´Ù.
IsByRef()ByRef ¸Å°³º¯¼ö¿¡ °ªÀÌ ÁÖ¾îÁ³´ÂÁö °áÁ¤ÇÕ´Ï´Ù.
IsFunc()ÇÔ¼ö¸¦ µ¿ÀûÀ¸·Î È£ÃâÇÒ ¼ö ÀÖ´ÂÁö ¾Ë·ÁÁÝ´Ï´Ù.
IsLabel()ÁÖ¾îÁø °ªÀÌ ¶óº§¿¡ Á¸ÀçÇÏ´ÂÁö Á¡°ËÇÕ´Ï´Ù.
IsObject()°ªÀÌ °´Ã¼ÀÎÁö °áÁ¤ÇÕ´Ï´Ù.
KeyHistory½ºÅ©¸³Æ® Á¤º¸ ±×¸®°í °¡Àå ÃÖ±ÙÀÇ Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯ÀÇ ÀÌ·ÂÀ» º¸¿©ÁÝ´Ï´Ù.
KeyWaitÅ°³ª ¸¶¿ì½º/Á¶À̽ºÆ½ ¹öÆ°À» ´©¸¦ ¶§±îÁö ¶Ç´Â ¶¿ ¶§±îÁö ±â´Ù¸³´Ï´Ù.
ListHotkeysÇöÀç ½ºÅ©¸³Æ®°¡ »ç¿ë ÁßÀÎ ÇÖÅ°µéÀ» È­¸é¿¡ º¸¿©ÁÝ´Ï´Ù. ±×µéÀÇ ¼­ºê·çƾÀÌ ÇöÀç ½ÇÇà ÁßÀÎÁö, ±×¸®°í Å°º¸µå °¥°í¸®³ª ¸¶¿ì½º °¥°í¸®¸¦ »ç¿ëÁßÀÎÁö ¾Æ´ÑÁö ¾Ë·ÁÁÝ´Ï´Ù.
ListLines°¡Àå ÃÖ±Ù¿¡ ½ÇÇàµÈ ½ºÅ©¸³Æ® ÁÙÀ» È­¸é¿¡ º¸¿©ÁÝ´Ï´Ù.
ListVars½ºÅ©¸³Æ®ÀÇ º¯¼öµéÀ» º¸¿©ÁÝ´Ï´Ù: À̸§°ú ÇöÀç ³»¿ë.
Log()¼ýÀÚÀÇ »ó¿ë ·Î±×¸¦ µ¹·ÁÁÝ´Ï´Ù (¹Ø¼ö 10).
Ln()¼ýÀÚÀÇ ÀÚ¿¬ ·Î±×¸¦ µ¹·ÁÁÝ´Ï´Ù (¹Ø¼ö e).
Loop (º¸Åë)ÀÏ·ÃÀÇ ¸í·É¾îµéÀ» ¹Ýº¹ÀûÀ¸·Î ¼öÇàÇÕ´Ï´Ù: ÁöÁ¤µÈ Ƚ¼ö¸¸Å­ ¶Ç´Â break¸¦ ¸¸³¯ ¶§±îÁö.
Loop (ÆÄÀÏ & Æú´õ)ÁöÁ¤µÈ ÆÄÀÏÀ̳ª Æú´õ¸¦ ÇÑ ¹ø¿¡ Çϳª¾¿ ¿­¶÷ÇÕ´Ï´Ù.
Loop (¹®ÀÚ¿­ ÆĽÌ)¹®ÀÚ¿­·ÎºÎÅÍ ¼­ºê½ºÆ®¸µ(Çʵå)¸¦ ÇÑ ¹ø¿¡ Çϳª¾¿ ÆĽÌÇÕ´Ï´Ù.
Loop (ÆÄÀÏ ³»¿ë Àбâ)ÅؽºÆ® ÆÄÀÏ¿¡¼­ ÁÙÀ» ÇÑ ¹ø¿¡ ÇÑ ÁÙ¾¿ ¿­¶÷ÇÕ´Ï´Ù (FileReadLineº¸´Ù ¼öÇ༺´ÉÀÌ ´õ ÁÁ½À´Ï´Ù).
Loop (·¹Áö½ºÆ®¸®)ÁöÁ¤µÈ ·¹Áö½ºÆ®¸® ¼­ºêÅ°ÀÇ ³»¿ëÀ» ÇÑ ¹ø¿¡ Çϳª¾¿ ¿­¶÷ÇÕ´Ï´Ù.
Menu¸Þ´º¿Í ¸Þ´º Ç׸ñÀ» »ý¼º, »èÁ¦, º¯°æ ±×¸®°í º¸¿©ÁÝ´Ï´Ù. Æ®·¹ÀÌ ¾ÆÀÌÄÜ°ú ±×ÀÇ ÅøÆÁÀ» º¯°æÇÕ´Ï´Ù. ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®ÀÇ ¸ÞÀΠâÀ» ¿­Áö ¸»Áö Á¦¾îÇÕ´Ï´Ù.
Mod()³ª¸ÓÁö(Modulo) ¿¬»êÀÔ´Ï´Ù. ÇÇÁ¬¼ö(Dividend)¸¦ Á¬¼ö(Divisor)·Î ³ª´©°í ³ª¸ÓÁö¸¦ µ¹·ÁÁÝ´Ï´Ù.
MouseClick¸¶¿ì½º ¹öÆ°À» Ŭ¸¯Çϰųª ´©¸¨´Ï´Ù. ¶Ç´Â ¸¶¿ì½º ÈÙÀ» µ¹¸³´Ï´Ù. ÁÖÀÇ: Click ¸í·É¾î°¡ ÀϹÝÀûÀ¸·Î ´õ À¯¿¬ÇÏ°í »ç¿ëÇϱⰡ ´õ ½±½À´Ï´Ù.
MouseClickDragÁöÁ¤µÈ ¸¶¿ì½º ¹öÆ°À» Ŭ¸¯ÇÏ°í ´©¸¨´Ï´Ù. ¸¶¿ì½º¸¦ ¸ñÇ¥ ÁÂÇ¥·Î À̵¿ÇÕ´Ï´Ù. ±×¸®°í ¸¶¿ì½º¸¦ ¶Á´Ï´Ù.
MouseGetPos¸¶¿ì½º Ä¿¼­ÀÇ ÇöÀç À§Ä¡¸¦ ¿­¶÷ÇÕ´Ï´Ù. ±×¸®°í ¼±ÅÃÀûÀ¸·Î ¾î´À â°ú ÄÜÆ®·Ñ À§¿¡ ÀÖ´ÂÁö ¿­¶÷ÇÕ´Ï´Ù.
MouseMove¸¶¿ì½º Ä¿¼­¸¦ À̵¿ÇÕ´Ï´Ù.
MsgBoxÁöÁ¤µÈ ÅؽºÆ®¸¦ ÀÛÀº ⠾ȿ¡ º¸¿©ÁÝ´Ï´Ù. ¾È¿¡ ¹öÆ°ÀÌ µé¾î ÀÖ½À´Ï´Ù (¿¹¸¦ µé¾î Yes ±×¸®°í No).
NumGet()ÁöÁ¤µÈ ÁÖ¼Ò+¿ÀÇÁ¼Â¿¡ ÀúÀåµÈ ÀÌÁø ¼ýÀÚ¸¦ ¿­¶÷ÇÕ´Ï´Ù.
NumPut()ÁöÁ¤µÈ ÁÖ¼Ò+¿ÀÇÁ¼Â¿¡ ÀÌÁø ÇüÅÂÀÇ ¼ýÀÚ¸¦ ÀúÀåÇÕ´Ï´Ù.
OnExit½ºÅ©¸³Æ®°¡ Á¾·áÇÒ ´ë ÀÚµ¿À¸·Î ½ÇÇàÇÒ ¼­ºê·çƾÀ» ÁöÁ¤ÇÕ´Ï´Ù.
OnMessage()½ºÅ©¸³Æ®°¡ ÁöÁ¤µÈ ¸Þ½ÃÁö¸¦ ¹ÞÀ» ¶§ ÀÚµ¿À¸·Î È£ÃâÇÒ ÇÔ¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
OutputDebug¹®ÀÚ¿­À» (ÀÖ´Ù¸é) µð¹ö°Å¿¡ º¸³» º¸¿©ÁÝ´Ï´Ù.
Pause½ºÅ©¸³Æ®ÀÇ ÇöÀç ¾²·¹µå¸¦ Á¤ÁöÇÕ´Ï´Ù.
PixelGetColorÁöÁ¤µÈ ÁÂÇ¥¿¡¼­ Çȼ¿ÀÇ »öÀ» ¿­¶÷ÇÕ´Ï´Ù.
PixelSearchÈ­¸é ±¸¿ªÀ» °Ë»öÇØ ÁöÁ¤µÈ »öÀ» °¡Áø Çȼ¿À» ã½À´Ï´Ù.
PostMessage¸Þ½ÃÁö¸¦ âÀ̳ª ÄÜÆ®·ÑÀÇ ¸Þ½ÃÁö Å¥¿¡ ³Ö½À´Ï´Ù.
ProcessÇÁ·Î¼¼½º¿¡ ´ÙÀ½ ¿¬»ê Áß Çϳª¸¦ ¼öÇàÇÕ´Ï´Ù: Á¸ÀçÇÏ´ÂÁö Á¡°ËÇÕ´Ï´Ù; ¿ì¼±¼øÀ§¸¦ º¯°æÇÕ´Ï´Ù; ´Ý½À´Ï´Ù; ³¡³ª±â¸¦ ±â´Ù¸³´Ï´Ù.
ProgressÁøô »çÇ× ¹Ù¸¦ ´ã°í Àִ âÀ» »ý¼ºÇϰųª °»½ÅÇÕ´Ï´Ù.
RandomÀÇ»ç-¹«ÀÛÀ§ ¼ö¸¦ »ý¼ºÇÕ´Ï´Ù.
RegExMatch()¹®ÀÚ¿­¿¡ ÆÐÅÏ(Á¤±Ô Ç¥Çö½Ä)À» ´ãÀ»Áö ¸»Áö °áÁ¤ÇÕ´Ï´Ù.
RegExReplace()¹®ÀÚ¿­ ¾È¿¡¼­ ÆÐÅÏ (Á¤±Ô Ç¥Çö½Ä)¿¡ ºÎÇÕÇÏ´Â °ÍµéÀ» ±³Ã¼ÇÕ´Ï´Ù.
RegDelete·¹Áö½ºÆ®¸®¿¡¼­ ¼­ºêÅ°³ª °ªÀ» »èÁ¦ÇÕ´Ï´Ù.
RegRead°ªÀ» ·¹Áö½ºÆ®¸®¿¡¼­ ÀнÀ´Ï´Ù.
RegWrite°ªÀ» ·¹Áö½ºÆ®¸®¿¡ ¾¹´Ï´Ù.
RegisterCallback()È£Ãâ µÉ ¶§ ¸Ó½Å-ÄÚµå ÁÖ¼Ò¸¦ »ý¼ºÇؼ­, ±× È£ÃâÀ» ½ºÅ©¸³Æ®ÀÇ ÇÔ¼ö·Î ¹æÇâÀüȯÇÕ´Ï´Ù.
ReloadÇöÀç ½ÇÇàÁßÀÎ ½ºÅ©¸³Æ®ÀÇ ½Çü¸¦ »õ·Î¿î ½Çü·Î ±³Ã¼ÇÕ´Ï´Ù.
Return¼­ºê·çƾÀ¸·ÎºÎÅÍ ÀÌÀü¿¡ ½ÇÇàÀ» Á¡ÇÁÇß´ø °÷À¸·Î µ¹¾Æ°©´Ï´Ù. ÇÔ¼ö-È£Ãâ, Gosub, ÇÖÅ° È°¼ºÈ­, GroupActivate, ±âŸ µîµîÀÇ ¹æ¹ýÀ¸·Î Á¡ÇÁÇß´ø °÷À¸·Î µ¹¾Æ°©´Ï´Ù.
Round() + NÀÌ »ý·«µÇ°Å³ª 0À̸é, Number´Â °¡Àå °¡±î¿î Á¤¼ö·Î ¹ö¸²µË´Ï´Ù. NÀÌ ¾ç¼öÀ̸é, Number´ÂN°³ÀÇ ½ÊÁø ÀÚ¸®·Î ¹ö¸²µË´Ï´Ù. NÀÌ À½¼öÀ̸é, Number´Â ¼Ò¼öÁ¡ ¿ÞÂÊÀ¸·Î N ÀÚ¸®¼ö ¸¸Å­ ¹ö¸²µË´Ï´Ù.
Run¿ÜºÎ ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
RunAsÀÌ ´ÙÀ½ºÎÅÍ Run°ú RunWait¸¦ »ç¿ëÇϱâ À§ÇØ »ç¿ëÀÚ ½Å¿ëÀå ¼¼Æ®¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
RunWait¿ÜºÎ ÇÁ·Î±×·¥À» ½ÇÇàÇÏ°í ³¡³¯ ¶§±îÁö ±â´Ù¸³´Ï´Ù.
Send / SendRaw / SendInput / SendPlay½Ã·ü·¹ÀÌÆ®µÈ Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯À» È°¼º â¿¡ Àü¼ÛÇÕ´Ï´Ù.
SendLevelÀÎÀ§ÀûÀÎ Å°´­¸²°ú ¸¶¿ì½º À̺¥Æ®¸¦ ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀÌ ¹«½ÃÇÒÁö ¸»Áö Á¦¾îÇÕ´Ï´Ù.
SendMessage¸Þ½ÃÁö¸¦ âÀ̳ª ÄÜÆ®·Ñ¿¡ Àü¼ÛÇÏ°í ½ÂÀÎÀ» ±â´Ù¸³´Ï´Ù.
SendMode±âº» (SendEvent) °ªÀÌ ¾Æ´Ï¶ó, Send¸¦ SendInputÀ̳ª SendPlay¿Í µ¿ÀÏÇÏ°Ô ¸¸µì´Ï´Ù. ¶ÇClick ±×¸®°í MouseMove/Click/Drag°¡ ÁöÁ¤µÈ ¸Þ½îµå¸¦ »ç¿ëÇϵµ·Ï ¸¸µì´Ï´Ù.
SetBatchLines¾ó¸¶³ª »¡¸® ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒÁö °áÁ¤ÇÕ´Ï´Ù (CPU ÀÌ¿ë¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù).
SetCapslockStateCapslock Å°ÀÇ »óŸ¦ ¼³Á¤ÇÕ´Ï´Ù.°­Á¦·Î ¿Â ¶Ç´Â ¿ÀÇÁ »óŸ¦ À¯ÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.
SetControlDelay°¢ ÄÜÆ®·Ñ-º¯°æ ¸í·É¾î ´ÙÀ½¿¡ Áö¿¬ ½Ã°£À» ¼³Á¤ÇÕ´Ï´Ù.
SetDefaultMouseSpeed¸¶¿ì½º ¼Óµµ¸¦ ¼³Á¤ÇÕ´Ï´Ù. Click ±×¸®°í MouseMove/Click/Drag¿¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ» °æ¿ì À¯¿ëÇÕ´Ï´Ù.
SetEnv (Var = Value)ÁöÁ¤µÈ °ªÀ» º¯¼ö¿¡ ÇÒ´çÇÕ´Ï´Ù.
SetFormat¼öÇÐ ¿¬»êÀ¸·Î »ý»êµ· Á¤¼ö¿Í ºÎµ¿ ¼Ò¼öÁ¡ ¼öÀÇ Çü½ÄÀ» ¼³Á¤ÇÕ´Ï´Ù.
SetKeyDelaySend³ª ControlSend·Î Å°¸¦ ´©¸¥ ÈÄ¿¡ Áö¿¬µÉ ½Ã°£À» ¼³Á¤ÇÕ´Ï´Ù.
SetMouseDelay¸¶¿ì½º À̵¿À̳ª Ŭ¸¯ ÈÄ¿¡ Áö¿¬µÉ ½Ã°£À» ¼³Á¤ÇÕ´Ï´Ù.
SetNumlockStateNumlock Å°ÀÇ »óŸ¦ ¼³Á¤ÇÕ´Ï´Ù. °­Á¦·Î ¿Â ¶Ç´Â ¿ÀÇÁ »óŸ¦ À¯ÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.
SetScrollLockStateScrolllock Å°ÀÇ »óŸ¦ ¼³Á¤ÇÕ´Ï´Ù. °­Á¦·Î ¿Â ¶Ç´Â ¿ÀÇÁ »óŸ¦ À¯ÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.
SetRegView32-ºñÆ® ½ºÅ©¸³Æ®¿¡¼­ ·¹Áö½ºÆ®¸® ¸í·É¾î°¡ 64-ºñÆ® ·¹Áö½ºÆ®¸® ºä¿¡ Á¢±ÙÇÏ´Â °ÍÀ» ±×¸®°í ±× ¹Ý´ë¸¦ Çã¿ëÇÕ´Ï´Ù.
SetStoreCapslockModeSend ÈÄ¿¡ CapsLockÀÇ »óŸ¦ º¹±¸ÇÒÁö ¸»Áö °áÁ¤ÇÕ´Ï´Ù .
SetTimer¼­ºê·çƾÀÌ ÀÚµ¿À¸·Î ±×¸®°í ¹Ýº¹ÀûÀ¸·Î ÁöÁ¤µÈ ½Ã°£ °£°Ý¸¶´Ù ±âµ¿µÇµµ·Ï ¸¸µì´Ï´Ù.
SetTitleMatchModeWinWait¿Í °°Àº ¸í·É¾î¿Í °°ÀÌ, WinTitle ¸Å°³º¯¼öÀÇ ºÎÇÕ ÇàÀ§¸¦ ¼³Á¤ÇÕ´Ï´Ù.
SetWinDelayWinActivate¿Í °°ÀÌ, °¢ â ¸í·É¾î ´ÙÀ½¿¡ Áö¿¬ ½Ã°£À» ¼³Á¤ÇÕ´Ï´Ù.
SetWorkingDir½ºÅ©¸³Æ®ÀÇ ÇöÀç ÀÛ¾÷ µð·ºÅ丮¸¦ º¯°æÇÕ´Ï´Ù.
Shutdown½Ã½ºÅÛÀ» ´Ý°Å³ª, Àç½ÃÀÛÇϰųª ¶Ç´Â ·Î±×¿ÀÇÁ ÇÕ´Ï´Ù.
Sin()NumberÀÇ »ï°¢ »çÀÎ °ªÀ» µ¹·ÁÁÝ´Ï´Ù.
SleepÁöÁ¤µÈ ½Ã°£ µ¿¾È ±â´Ù¸° ´ÙÀ½ °è¼Ó ÁøÇàÇÕ´Ï´Ù.
Sortº¯¼öÀÇ ³»¿ëÀ» ¾ËÆĺª, ¼ýÀÚ, ¶Ç´Â ¹«ÀÛÀ§ ¼ø¼­·Î Á¤·ÄÇÕ´Ï´Ù (¼±ÅÃÀûÀ¸·Î Áߺ¹À» Á¦°ÅÇÕ´Ï´Ù).
SoundBeepPC ½ºÇÇÄ¿·Î ÅæÀ» ¹æÃâÇÕ´Ï´Ù.
SoundGet»ç¿îµå ÀåÄ¡·ÎºÎÅÍ ´Ù¾çÇÑ ¼³Á¤À» ¿­¶÷ÇÕ´Ï´Ù (¸¶½ºÅÍ À½¼Ò°Å, ¸¶½ºÅÍ º¼·ý µîµî.)
SoundGetWaveVolume»ç¿îµå ÀåÄ¡·ÎºÎÅÍ ¿þÀ̺ê Ãâ·Â º¼·ýÀ» ¿­¶÷ÇÕ´Ï´Ù.
SoundPlay»ç¿îµå, ºñµð¿À, ¶Ç´Â ±âŸ Áö¿øµÇ´Â ÆÄÀÏ À¯ÇüÀ» ¿¬ÁÖÇÕ´Ï´Ù.
SoundSet»ç¿îµå ÀåÄ¡ÀÇ ´Ù¾çÇÑ ¼³Á¤À» º¯°æÇÕ´Ï´Ù (¸¶½ºÅÍ À½¼Ò°Å, ¸¶½ºÅÍ º¼·ý µîµî.)
SoundSetWaveVolume»ç¿îµå ÀåÄ¡¸¦ À§ÇØ ¿þÀ̺ê Ãâ·Â º¼·ýÀ» º¯°æÇÕ´Ï´Ù.
SplashImageJPG, GIF, ¶Ç´Â BMP À̹ÌÁö¸¦ ´ã°í Àִ âÀ» ¸¸µé°Å³ª °»½ÅÇÕ´Ï´Ù.
SplashTextOn¸ÂÃã °¡´ÉÇÑ ÅؽºÆ® Æ˾÷ âÀ» »ý¼ºÇÕ´Ï´Ù.
SplashTextOffÀ§ÀÇ Ã¢À» ´Ý½À´Ï´Ù.
SplitPathÆÄÀÏ À̸§À̳ª URLÀ» À̸§, µð·ºÅ丮, È®ÀåÀÚ, ±×¸®°í µå¶óÀ̺ê·Î °¡¸¨´Ï´Ù.
Sqrt()NumberÀÇ Æò¹æ±ÙÀ» µ¹·ÁÁÝ´Ï´Ù.
StatusBarGetTextÇ¥ÁØ »óÅ ¹Ù ÄÜÆ®·ÑÀ¸·ÎºÎÅÍ ÅؽºÆ®¸¦ ¿­¶÷ÇÕ´Ï´Ù.
StatusBarWaitÂ÷ÀÇ »óÅ ¹Ù¿¡ ÁöÁ¤µÈ ¹®ÀÚ¿­ÀÌ µé¾î¿Ã ¶§±îÁö ±â´Ù¸³´Ï´Ù.
StrPut() / StrGet()¹®ÀÚ¿­À» ¸Þ¸ð¸® ÁÖ¼Ò·Î º¹»çÇϰųª º¹»çÇØ ¿É´Ï´Ù. ¼±ÅÃÀûÀ¸·Î ÄÚµå ÆäÀÌÁö¿¡ ¸Â°Ô º¯È¯ÇÕ´Ï´Ù.
StringCaseSense¹®ÀÚ¿­ ºñ±³¿¡ ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÒÁö °áÁ¤ÇÕ´Ï´Ù. (±âº»°ªÀº "´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê½À´Ï´Ù").
StringGetPos / InStr()¹®ÀÚ¿­ ¾È¿¡¼­ ÁöÁ¤µÈ ºÎºÐ¹®ÀÚ¿­ÀÇ À§Ä¡¸¦ ¿­¶÷ÇÕ´Ï´Ù.
StringLeft¹®ÀÚ¿­ÀÇ ¿ÞÂÊÀ¸·ÎºÎÅÍ ¿©·¯ ¹®ÀÚ¸¦ ¿­¶÷ÇÕ´Ï´Ù.
StringLen / StrLen()¹®ÀÚ¿­¿¡ µéÀº ¹®ÀÚÀÇ °¹¼ö¸¦ ¿­¶÷ÇÕ´Ï´Ù.
StringLower¹®ÀÚ¿­À» ¼Ò¹®ÀÚ·Î º¯È¯ÇÕ´Ï´Ù.
StringMid / SubStr()¹®ÀÚ¿­¿¡¼­ ÁöÁ¤µÈ À§Ä¡·ÎºÎÅÍ Çϳª ÀÌ»óÀÌ ¹®ÀÚ¸¦ ¿­¶÷ÇÕ´Ï´Ù.
StringReplaceÁöÁ¤µÈ ºÎºÐ¹®ÀÚ¿­À» »õ ¹®ÀÚ¿­·Î ±³Ã¼ÇÕ´Ï´Ù.
StringRight¹®ÀÚ¿­ÀÇ ¿À¸¥ÂÊÀ¸·ÎºÎÅÍ ¹®ÀÚµéÀ» ¿­¶÷ÇÕ´Ï´Ù.
StringSplit¹®ÀÚ¿­À» ÁöÁ¤µÈ °¡¸§ÀÚ¸¦ »ç¿ëÇÏ¿© ºÎºÐ ¹®ÀÚ¿­ ¹è¿­·Î °¡¸¨´Ï´Ù.
StringTrimLeft¹®ÀÚ¿­ÀÇ ¿ÞÂÊÀ¸·ÎºÎÅÍ ¹®ÀÚµéÀ» Á¦°ÅÇÕ´Ï´Ù.
StringTrimRight¹®ÀÚ¿­ÀÇ ¿À¸¥ÂÊÀ¸·ÎºÎÅÍ ¹®ÀÚµéÀ» Á¦°ÅÇÕ´Ï´Ù.
StringUpper¹®ÀÚ¿­À» ´ë¹®ÀÚ·Î º¯È¯ÇÕ´Ï´Ù.
Suspend¼±ÅÃµÈ ¶Ç´Â ¸ðµç ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀ» ÄÑ°í ²ü´Ï´Ù.
SysGetÈ­¸é ÇØ»óµµ, ´ÙÁß-¸ð´ÏÅÍ Á¤º¸, ½Ã½ºÅÛ °´Ã¼ÀÇ Å©±â, ±×¸®°í ±âŸ ½Ã½ºÅÛ Æ¯¼ºÀ» ¿­¶÷ÇÕ´Ï´Ù.
Tan()NumberÀÇ »ï°¢ źÁ¨Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù.
Thread¾²·¹µåÀÇ ¿ì¼±¼øÀ§ ¶Ç´Â ÀÎÅÍ·´Æ® Çã¿ë ¿©ºÎ¸¦ ¼³Á¤ÇÕ´Ï´Ù. Àӽ÷Π¸ðµç ŸÀ̸Ӹ¦ ²ø ¼öµµ ÀÖ½À´Ï´Ù.
Throw¿¡·¯°¡ ÀϾ´Ù´Â ½ÅÈ£¸¦ º¸³À´Ï´Ù. ÀÌ ½ÅÈ£´Â try-catch ¼­¼ú¹®À¸·Î ÀâÀ» ¼ö ÀÖ½À´Ï´Ù.
ToolTip¾ðÁ¦³ª ÃÖ»óÀ§¿¡ Àִ âÀ» È­¸é ¾îµðµçÁö ¸¸µì´Ï´Ù.
TransformÀâ´ÙÇÑ ¼öÇÐ ±â´É, ºñÆ®º° ¿¬»ê, ±×¸®°í ASCII/À¯´ÏÄÚµå º¯È¯ °°Àº ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù.
TrayTipdz¼± ¸Þ½ÃÁö¸¦ Æ®·¹ÀÌ ¾ÆÀÌÄÜ ±Ùó¿¡ ¸¸µì´Ï´Ù.
Trim¹®ÀÚ¿­ÀÇ ¾Õ/µÚ¿¡¼­ ¹®ÀÚµéÀ» °È¾î³À´Ï´Ù.
TryÇϳª ÀÌ»óÀÇ ¼­¼ú¹® (¸í·É¾î³ª Ç¥Çö½Ä)À» throw ¸í·É¾î°¡ ´øÁö´Â ½ÇÇà½Ã°£ ¿¡·¯¿Í ¿¹¿Ü·ÎºÎÅÍ º¸È£ÇÕ´Ï´Ù.
UntilLoop ¶Ç´Â For-ȸµ¹ÀÌ¿¡ Á¶°ÇÀ» Àû¿ëÇÕ´Ï´Ù.
UrlDownloadToFileÀÎÅͳÝÀ¸·ÎºÎÅÍ ÆÄÀÏÀ» ³»·Á¹Þ½À´Ï´Ù.
Var = valueÁöÁ¤µÈ °ªÀ» º¯¼ö¿¡ ÇÒ´çÇÕ´Ï´Ù.
Var := expressionÇ¥Çö½ÄÀ» Æò°¡Çؼ­ ±× °á°ú¸¦ º¯¼ö¿¡ ÀúÀåÇÕ´Ï´Ù.
VarSetCapacity()º¯¼öÀÇ °¡¿ë ´É·ÂÀ» È®´ëÇϰųª ±×ÀÇ ¸Þ¸ð¸®¸¦ Ç®¾îÁÝ´Ï´Ù. º¸Åë, ÀÌ°ÍÀº DllCall°ú °°ÀÌ ºñÁ¤»óÀûÀÎ »óȲ¿¡¼­¸¸ ÇÊ¿äÇÕ´Ï´Ù.
While-loopÁöÁ¤µÈ Ç¥Çö½ÄÀÌ °ÅÁþÀ¸·Î Æò°¡µÉ ¶§±îÁö ÀÏ·ÃÀÇ ¸í·É¾î¸¦ ¹Ýº¹ÀûÀ¸·Î ½ÇÇàÇÕ´Ï´Ù.
WinActivateÁöÁ¤µÈ âÀ» È°¼ºÈ­ÇÕ´Ï´Ù (Àü°æ È­¸éÀ¸·Î ¸¸µì´Ï´Ù).
WinActivateBottomWinActivate¿Í µ¿ÀÏÇÕ´Ï´Ù. ´Ü ÃÖ»ó´Ü âÀÌ ¾Æ´Ï¶ó (°¡Àå ÃÖ±Ù±îÁöµµ È°¼ºÈ­µÇÁö ¾ÊÀº) ÃÖÇ쫆 ̢À» È°¼ºÈ­ÇÑ´Ù´Â Á¡ÀÌ ´Ù¸¨´Ï´Ù.
WinActive()È°¼ºÃ¢ÀÌ ÁöÁ¤µÈ ±âÁØ¿¡ ºÎÇÕÇÏ¸é ±× À¯ÀÏÇÑ ID (HWND)¸¦ µ¹·ÁÁÝ´Ï´Ù.
WinCloseÁöÁ¤µÈ âÀ» ´Ý½À´Ï´Ù.
WinExist()Á¦ÀÏ Ã³À½ ºÎÇÕÇÑ Ã¢ÀÇ À¯ÀÏÇÑ ID (HWND)¸¦ µ¹·ÁÁÝ´Ï´Ù.
WinGetActiveStatsWinGetActiveTitle ±â´É°ú WinGetPos±â´ÉÀ» ÇϳªÀÇ ¸í·É¾î·Î °áÇÕÇÕ´Ï´Ù.
WinGetActiveTitleÈ°¼º âÀÇ Á¦¸ñÀ» ¿­¶÷ÇÕ´Ï´Ù.
WinGetClassÁöÁ¤µÈ âÀÇ Å¬·¡½º À̸§À» ¿­¶÷ÇÕ´Ï´Ù.
WinGetÁöÁ¤µÈ âÀÇ À¯ÀÏÇÑ ID, ÇÁ·Î¼¼½º ID, ÇÁ·Î¼¼½º À̸§, ¶Ç´Â ±×ÀÇ ÄÜÆ®·Ñ ¸ñ·ÏÀ» ¿­¶÷ÇÕ´Ï´Ù. ¶Ç ÁöÁ¤µÈ ±âÁØ¿¡ ºÎÇÕÇÏ´Â ¸ðµç âÀÇ ¸ñ·ÏÀ» ¿­¶÷ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
WinGetPosÁöÁ¤µÈ âÀÇ Å©±â¿Í À§Ä¡¸¦ ¿­¶÷ÇÕ´Ï´Ù.
WinGetTextÁöÁ¤µÈ âÀ¸·ÎºÎÅÍ ÅؽºÆ®¸¦ ¿­¶÷ÇÕ´Ï´Ù.
WinGetTitleÁöÁ¤µÈ âÀÇ Á¦¸ñÀ» ¿­¶÷ÇÕ´Ï´Ù.
WinHideÁöÁ¤µÈ âÀ» °¨Ãä´Ï´Ù.
WinKillÁöÁ¤µÈ âÀ» °­Á¦·Î ´Ý½À´Ï´Ù.
WinMaximizeÁöÁ¤µÈ âÀ» ÃÖ´ë Å©±â·Î È®´ëÇÕ´Ï´Ù.
WinMenuSelectItemÁöÁ¤µÈ âÀÇ ¸Þ´º ¹Ù¿¡¼­ ¸Þ´º Ç׸ñÀ» ¿äûÇÕ´Ï´Ù.
WinMinimizeÁöÁ¤µÈ âÀ» ŽºÅ© ¹ÙÀÇ ¹öÆ°À¸·Î Ãà¼ÒÇÕ´Ï´Ù.
WinMinimizeAll¸ðµç âÀ» ÃÖ¼ÒÈ­ÇÕ´Ï´Ù.
WinMinimizeAllUndoÀÌÀü WinMinimizeAllÀÇ È¿°ú¸¦ ¾ðµÎÇÕ´Ï´Ù.
WinMoveÁöÁ¤µÈ âÀÇ À§Ä¡ / Å©±â¸¦ º¯°æÇÕ´Ï´Ù.
WinRestoreÁöÁ¤µÈ âÀÌ ÃÖ´ëÈ­ ¶Ç´Â ÃÖ¼ÒÈ­ »óÅÂÀÌ¸é ¿ø·¡´ë·Î º¹±¸ÇÕ´Ï´Ù.
WinSetÁöÁ¤µÈ â¿¡ ´Ù¾çÇÑ º¯°æÀ» °¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î "Ç×»ó À§¿¡" ±×¸®°í Åõ¸íµµ.
WinSetTitleÁöÁ¤µÈ âÀÇ Á¦¸ñÀ» ¹Ù²ß´Ï´Ù.
WinShowÁöÁ¤µÈ âÀ» º¸¿©ÁÝ´Ï´Ù.
WinWaitÁöÁ¤µÈ âÀÌ ³¡³¯ ¶§±îÁö ±â´Ù¸³´Ï´Ù.
WinWaitActiveÁöÁ¤µÈ âÀÌ È°¼ºÈ­µÉ ¶§±îÁö ±â´Ù¸³´Ï´Ù.
WinWaitCloseÁöÁ¤µÈ âÀÌ Á¸ÀçÇÏÁö ¾ÊÀ» ¶§±îÁö ±â´Ù¸³´Ï´Ù.
WinWaitNotActiveÁöÁ¤µÈ âÀÌ È°¼ºÈ­µÇÁö ¾ÊÀ» ¶§±îÁö ±â´Ù¸³´Ï´Ù.
#ClipboardTimeoutù ½Ãµµ°¡ ½ÇÆÐÇÒ ¶§ Ŭ¸³º¸µå¿¡ ¾ó¸¶³ª ¿À·§ µ¿¾È Á¢±ÙÀ» ½ÃµµÇÒÁö º¯°æÇÕ´Ï´Ù.
#CommentFlag½ºÅ©¸³Æ®ÀÇ ÁÖ¼® ½Éº¼À» ½Ö¹ÝÁ¡¿¡¼­ ´Ù¸¥ ¹®ÀÚ¿­·Î ¹Ù²ß´Ï´Ù.
#ErrorStdOut½ºÅ©¸³Æ®ÀÇ ±âµ¿À» ¹æÇØÇÏ´Â ±¸¹® ¿¡·¯¸¦ ´ëÈ­»óÀÚ¿¡ º¸¿©ÁÖ´Â ´ë½Å¿¡ Ç¥ÁØ Ãâ·Â(stdout)À¸·Î º¸³À´Ï´Ù.
#EscapeChar½ºÅ©¸³Æ®ÀÇ ÇǽŠ¹®ÀÚ¸¦ ¹Ù²ß´Ï´Ù (¿¹¸¦ µé¾î: ¿ª»ç¼± vs. ¾×¼¾Æ®).
#HotkeyInterval#MaxHotkeysPerInterval°ú ÇÔ²², ÇÖÅ° È°¼ºÈ­ ºñÀ²À» ÁöÁ¤ÇÕ´Ï´Ù. À̸¦ ³Ñ¾î¼­¸é °æ°í ´ëÈ­»óÀÚ°¡ ³ªÅ¸³³´Ï´Ù.
#HotkeyModifierTimeoutÇÖÅ° ¼ö½ÄÀÚÀÇ ÇàÀ§¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù: CTRL, ALT, WIN, ±×¸®°í SHIFT.
#HotstringÇÖ½ºÆ®¸µ ¿É¼ÇÀ̳ª Á¾·á ¹®ÀÚ¸¦ ¹Ù²ß´Ï´Ù.
#If#IfWinActive¿Í ºñ½ÁÇÏÁö¸¸, ¾î¶² Ç¥Çö½Ä¿¡µµ ÀÛµ¿ÇÕ´Ï´Ù.
#IfTimeout#If Ç¥Çö½Ä ÇÑ ÁÙÀ» Æò°¡ÇÏ´Â µ¥ ¼ÒºñÇÒ ÃÖ´ë ½Ã°£À» ¼³Á¤ÇÕ´Ï´Ù.
#IfWinActive / #IfWinExist¹®¸Æ-°¨Áö ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀ» »ý¼ºÇÕ´Ï´Ù. ¹®¸Æ °¨Áö ÇÖÅ°´Â È°¼ºÈ­µÇ¾î Àִ âÀÇ Á¾·ù¿¡ µû¶ó ¶Ç´Â Á¸Àç ¿©ºÎ¿¡ µû¶ó ´Ù¸¥ ÇàÀ§¸¦ ¼öÇàÇÕ´Ï´Ù.
#Include½ºÅ©¸³Æ®´Â ¸¶Ä¡ ÁöÁ¤µÈ ÆÄÀÏÀÇ ³»¿ëÀÌ ÁöÁ¤ÇÑ À§Ä¡¿¡ Á¤È®ÇÏ°Ô Á¸ÀçÇÏ´Â µí ÇൿÇÕ´Ï´Ù.
#InputLevelÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀÌ ¾î´À ÀÎÀ§ÀûÀÎ Å°º¸µå¿Í ¸¶¿ì½º À̺¥Æ®¸¦ ¹«½ÃÇÒÁö Á¦¾îÇÕ´Ï´Ù.
#InstallKeybdHookÅ°º¸µå °¥°í¸®¸¦ ¹«Á¶°Ç ¼³Ä¡ÇÕ´Ï´Ù.
#InstallMouseHook¸¶¿ì½º °¥°í¸®¸¦ ¹«Á¶°Ç ¼³Ä¡ÇÕ´Ï´Ù.
#KeyHistoryKeyHistory â¿¡ º¸¿©ÁÖ´Â Å°º¸µå¿Í ¸¶¿ì½º À̺¥Æ®ÀÇ ÃÖ´ë °³¼ö¸¦ ¼³Á¤ÇÕ´Ï´Ù. 0À¸·Î ¼³Á¤Çϸé Å° ÀÌ·ÂÀ» º¸¿©ÁÖÁö ¾Ê½À´Ï´Ù.
#LTrim°è¼Ó ¼½¼Ç¿¡¼­ µé¿©¾²±â¸¦ ´ÙµëÀ»Áö ¿©ºÎ¸¦ ¼³Á¤ÇÕ´Ï´Ù.
#MaxHotkeysPerInterval#HotkeyInterval°ú ÇÔ²², ÇÖÅ°ÀÇ È°¼ºÈ­ ºñÀ²À» ¼³Á¤ÇÕ´Ï´Ù. ÀÌ ºñÀ²À» ³Ñ¾î¼­¸é °æ°í ´ëÈ­»óÀÚ°¡ ³ªÅ¸³³´Ï´Ù.
#MaxMem°¢ º¯¼öÀÇ ÃÖ´ë ¸Þ¸ð¸®¸¦ ÁöÁ¤µÈ °³¼öÀÇ ¸Þ°¡¹ÙÀÌÆ®·Î ¼³Á¤ÇÕ´Ï´Ù.
#MaxThreadsµ¿½Ã ¾²·¹µåÀÇ ÃÖ´ë °¹¼ö¸¦ ¼³Á¤ÇÕ´Ï´Ù.
#MaxThreadsBuffer#MaxThreadsPerHotkey ÇÑ°è¿¡ µµ´ÞÇßÀ» ¶§ Å°´­¸²À» ¹«½ÃÇÏÁö ¾Ê°íÇÖÅ°°¡ ¹öÆÛ Ã³¸®µË´Ï´Ù.
#MaxThreadsPerHotkeyÇÖÅ° ¶Ç´Â ÇÖ½ºÆ®¸µ´ç µ¿½Ã ¾²·¹µåÀÇ ÃÖ´ë °³¼ö¸¦ ¼³Á¤ÇÕ´Ï´Ù.
#MenuMaskKeyWin ¶Ç´Â Alt Å°¾÷ À̺¥¸¦ ¸¶½ºÅ©Çϴµ¥ »ç¿ëÇÒ Å°¸¦ º¯°æÇÕ´Ï´Ù.
#NoEnvȯ°æ º¯¼öÀÎÁö ¾Ë¾Æº¸±â À§ÇØ ºó ¹®ÀÚ¿­À» Á¡°ËÇÏÁö ¾Ê½À´Ï´Ù (»õ·Î¿î ¸ðµç ½ºÅ©¸³Æ®¿¡ ±ÇÀåÇÕ´Ï´Ù).
#NoTrayIconÆ®·¹ÀÌ ¾ÆÀÌÄÜÀ» º¸¿©ÁÖÁö ¾Ê½À´Ï´Ù.
#Persistent½ºÅ©¸³Æ®¸¦ ¿µ±¸È÷ ½ÇÇàµÇµµ·Ï À¯ÁöÇÕ´Ï´Ù (Áï, »ç¿ëÀÚ°¡ ´ÝÀ» ¶§±îÁö ¶Ç´Â ExitApp¸¦ ¸¸³¯ ¶§±îÁö).
#SingleInstance½ºÅ©¸³Æ®°¡ ÀÌ¹Ì ½ÇÇà ÁßÀÏ ¶§ ´Ù½Ã ½ÇÇàÇÏ´Â °ÍÀ» Çã¿ëÇÒÁö ¿©ºÎ¸¦ °áÁ¤ÇÕ´Ï´Ù.
#UseHook°¥°í¸®¸¦ »ç¿ëÇØ Å°º¸µå ÇÖÅ°¸¦ ±¸ÇöÇϵµ·Ï °­Á¦ÇÕ´Ï´Ù.
#Warnº¸Åë °³¹ßÀÚÂÊ ¿¡·¯ÀÓÀ» ³ªÅ¸³»´Â ¼±ÅÃµÈ Á¶°Ç¿¡ ´ëÇÏ¿© °æ°í¸¦ ÄѰųª ²ü´Ï´Ù.
#WinActivateForceºÎµå·´°Ô âÀ» È°¼ºÈ­ÇÏÁö ¾Ê°í Á÷Á¢ °­Á¦·Î È°¼ºÈ­ÇÕ´Ï´Ù.
+ + diff --git a/src/docs/license.htm b/src/docs/license.htm new file mode 100644 index 0000000..cd2d597 --- /dev/null +++ b/src/docs/license.htm @@ -0,0 +1,434 @@ + + + License + + + + + + + +

GNU ÀÏ¹Ý °øÁß ÀÌ¿ëÇã¶ô

+ + + + + + + + + + +[ + ¿µ¾î +| Çѱ¹¾î +] + +

+

+ + +


+

+This is an unofficial translation of the GNU General Public License +into Korean. It was not published by the Free Software Foundation, +and does not legally state the distribution terms for software +that uses the GNU GPL -- only the original English text of the +GNU GPL does that. However, I hope that this translation will help +Korean speakers understand the GNU GPL better. +
+ +

+ÀÌ ¹®¼­´Â ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´Ü(Free Software Foundation)ÀÇ +GNU General Public License 2ÆÇÀ» Çѱ¹¾î·Î ¿Å±ä °ÍÀÔ´Ï´Ù. +ÀÌ ¹®¼­´Â GNU GPLÀÌ °¡Áø È£ÇýÀûÀÎ ÀÚÀ¯¿Í °øÀ¯ÀÇ Á¤½ÅÀ» º¸´Ù ¸¹Àº »ç¶÷¿¡°Ô ¾Ë¸®±â À§ÇØ ¸¸µç °ÍÀÌÁö¸¸, ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀÇ °ø½Ä ¹®¼­·Î Ãë±ÞµÇ¾î¼­´Â ¾È µË´Ï´Ù. ¿Ö³ÄÇÏ¸é ¿ø¹®ÀÌ ÀǵµÇÏ´Â ³»¿ëÀÌ ¿Ö°îµÇÁö ¾ÊÀ¸¸é¼­ ¹ýÀûÀ¸·Î À¯È¿Çϱâ À§Çؼ­´Â ¾ç±¹ÀÇ ÇöÇà ¹ý·ü°ú ¾ð¾îÀÇ ÀûÇÕ¼º ¿©ºÎ¿¡ ´ëÇÑ °ËÅä ÀÛ¾÷ÀÌ ÇÊ¿äÇÏÁö¸¸, ÀÌ ÀÛ¾÷¿¡´Â Å« ºñ¿ëÀÌ ¿ä±¸µÇ¸ç ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀº ±×·¸°Ô ÇÏÁö ¾Ê±â·Î °áÁ¤Ç߱⠶§¹®ÀÔ´Ï´Ù. ¶ÇÇÑ °ø½Ä ¹ø¿ª¹®À¸·Î ÀÎÁ¤µÈ °æ¿ì¶óµµ ´Ù¸¥ ¾ð¾î·ÎÀÇ ¹ø¿ª¿¡ µû¸¥ À§Çè ºÎ´ãÀº ¿©ÀüÈ÷ ³²°Ô µË´Ï´Ù. µû¶ó¼­ ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀº ¿À¿ªÀ̳ª Çؼ®»óÀÇ ³­Á¡À¸·Î ÀÎÇØ ¹ß»ýÇÒÁö ¸ð¸¦ È¥¶õ°ú ºÐÀïÀÇ °¡´É¼ºÀ» ¹Ì¸® ¹æÁöÇÏ°í ¹®¼­°¡ ´ã°í ÀÖ´Â ³»¿ë°ú ÃëÁö¸¦ º¸´Ù ¸¹Àº »ç¶÷¿¡°Ô ¾Ë¸®·Á´Â »ó¹ÝµÈ ¸ñÀûÀ», Çѱ¹¾î ¹ø¿ª¹®À» °ø½ÄÀûÀ¸·Î ½ÂÀÎÇÏÁö ¾Ê´Â ¹æ¹ýÀ¸·Î ¾ç¸³½ÃÅ°°í ÀÖ½À´Ï´Ù. + +

+ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀº ¾î¶°ÇÑ ¾ð¾î¿¡ ´ëÇؼ­µµ °ø½Ä ¹ø¿ªÀ» ÀÎÁ¤ÇÏÁö ¾ÊÀ¸¸ç ±×·¸°Ô ÇÒ °èȹ ¶ÇÇÑ ¾ø½À´Ï´Ù. ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀº GNU GPLÀ» ½Ç¹«¿¡ Àû¿ëÇÒ °æ¿ì ¿ÀÁ÷ ¿µ¹®ÆÇ¿¡ ÀÇÇؼ­¸¸ ¿Ã¹Ù¸¥ ¹ýÀû È¿·ÂÀÌ +¹ß»ýÇÔÀ» ºÐ¸íÈ÷ ÇÏ°í ÀÖ½À´Ï´Ù. ÀÌ ¹ø¿ª¹®Àº ¹ý·ü °ËÅä¿Í ¹®¼­°£ÀÇ µ¿Àϼº ¿©ºÎ¿¡ °üÇÑ °ËÁõÀ» °ÅÄ¡Áö ¾Ê¾ÒÀ¸¸ç, ÀÌ·Î ÀÎÇØ ¹ß»ýÇÒÁö ¸ð¸¦ ¹ý·ü¹®Á¦¿¡ ´ëÇØ ¾î¶°ÇÑ º¸Áõµµ Á¦°øÇÏÁö ¾Ê½À´Ï´Ù. µû¶ó¼­ GNU GPLÀ» »ó¾÷ ¸ñÀûÀ¸·Î »ç¿ëÇÏ·Á°í ÇÒ °æ¿ì¿¡´Â ¹ý·ü Àü¹®°¡ÀÇ ÀÚ¹®À» Á÷Á¢ ±¸ÇØ¾ß ÇÕ´Ï´Ù. ±×·¯³ª ´ëºÎºÐÀÇ »ç¶÷¿¡°Ô´Â ÀÌ ¹ø¿ª¹®ÀÌ Àü´ÞÇÏ·Á´Â ³»¿ë°ú ÃëÁö¸¦ ÀÌÇØÇÏ´Â °Í¸¸À¸·Î ÃæºÐÇÒ °ÍÀÔ´Ï´Ù. GNU GPLÀ» ¿Ã¹Ù¸£°Ô ÀÌÇØÇß´ÂÁö È®ÀÎÇÒ ¼ö ÀÖ´Â +GPL ÄûÁîµµ ÁÁÀº Âü°í°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. + +

+GPL¿¡ ´ëÇÑ ½ÇÁ¦ »ç·ÊµéÀ» ¸ðÀº Âü°íÇÒ ¸¸ÇÑ ÀÚ·áÀÇ Çϳª·Î +GPL +Çؼ³ÀÌ ÀÖ½À´Ï´Ù. + +

+Çѱ¹¾î ¹ø¿ª: 1998³â 6¿ù 18ÀÏ +¼ÛâÈÆ <chsong@gnu.org> + +


+

¸ñ Â÷

+ + +

+


+ +

+

GNU ÀÏ¹Ý °øÁß ÀÌ¿ëÇã¶ô

+

+2ÆÇ, 1991³â 6¿ù + +

Copyright (C) 1989, 1991 Free Software Foundation, Inc. 
+51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+
+´©±¸µçÁö º» ÀÌ¿ëÇã¶ôÀ» ÀÖ´Â ±×´ë·Î º¹Á¦ÇÏ°í ¹èÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª º»¹®¿¡ ´ëÇÑ ¼öÁ¤Àº Çã¿ëµÇÁö ¾Ê½À´Ï´Ù. 
+
+ +


+

Àü¹®

+

+¼ÒÇÁÆ®¿þ¾î¿¡ Àû¿ëµÇ´Â ´ëºÎºÐÀÇ ÀÌ¿ëÇã¶ô(license)Àº ¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇÑ ¼öÁ¤°ú °øÀ¯ÀÇ ÀÚÀ¯¸¦ Á¦ÇÑÇÏ´Â °ÍÀ» ±× ¸ñÀûÀ¸·Î ÇÕ´Ï´Ù. ±×·¯³ª GNU ÀÏ¹Ý °øÁß ÀÌ¿ëÇã¶ô(ÀÌÇÏ, ¡®GPL¡¯À̶ó°í ĪÇÕ´Ï´Ù)Àº ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇÑ ¼öÁ¤°ú °øÀ¯ÀÇ ÀÚÀ¯¸¦ ¸ðµç »ç¿ëÀÚ¿¡°Ô º¸ÀåÇϱâ À§ÇØ ¼º¸³µÈ °ÍÀÔ´Ï´Ù. ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀÌ Á¦°øÇÏ´Â ´ëºÎºÐÀÇ ¼ÒÇÁÆ®¿þ¾î¿¡´Â GPLÀÌ Àû¿ëµÇ¸ç, ¸î¸î ¼ÒÇÁÆ®¿þ¾î¿¡´Â º°µµÀÇ ÀÌ¿ëÇã¶ôÀÎ GNU ¾à¼Ò ÀÏ¹Ý °øÁß ÀÌ¿ëÇã¶ô(GNU Lesser General Public License, ÀÌÇÏ ¡®LGPL¡¯À̶ó°í ĪÇÕ´Ï´Ù)À» ´ë½Å Àû¿ëÇϱ⵵ ÇÕ´Ï´Ù. ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î¶õ À̸¦ »ç¿ëÇÏ·Á´Â ¸ðµç »ç¶÷¿¡°Ô µ¿ÀÏÇÑ ÀÚÀ¯¿Í ±Ç¸®¸¦ ÇÔ²² º¸ÀåÇÏ´Â ¼ÒÇÁÆ®¿þ¾î¸¦ ¸»Çϸç ÇÁ·Î±×·¥ ÀúÀÛÀÚÀÇ Àǻ翡 µû¶ó ¾î¶°ÇÑ Á¾·ùÀÇ ÇÁ·Î±×·¥¿¡µµ GPLÀ» Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿©·¯ºÐÀÌ ¸¸µç ÇÁ·Î±×·¥¿¡µµ GPLÀ» Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. + +

+ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î¸¦ ¾ð±ÞÇÒ ¶§ »ç¿ëÇÏ´Â `ÀÚÀ¯'¶ó´Â ´Ü¾î´Â ¹«·á¸¦ ÀǹÌÇÏ´Â ±ÝÀüÀûÀÎ Ãø¸éÀÇ ÀÚÀ¯°¡ ¾Æ´Ñ ±¸¼ÓµÇÁö ¾Ê´Â´Ù´Â °üÁ¡¿¡¼­ÀÇ ÀÚÀ¯¸¦ ¸»Çϸç, GPLÀº ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÌ¿ëÇÑ º¹Á¦, °³ÀÛ, ¹èÆ÷, ¼öÀÍ »ç¾÷ µî °¡´ÉÇÑ ¸ðµç ÇüÅÂÀÇ ÀÚÀ¯¸¦ ½ÇÁúÀûÀ¸·Î º¸ÀåÇÕ´Ï´Ù. ¿©±â¿¡´Â ¿ø½Ã ÄÚµå(¼Ò½º ÄÚµå)ÀÇ ÀüºÎ ¶Ç´Â ÀϺθ¦ ¿ø¿ëÇؼ­ ÇÁ·Î±×·¥À» °³¼±Çϰųª »õ·Î¿î ÇÁ·Î±×·¥À» âÀÛÇÒ ¼ö ÀÖ´Â ÀÚÀ¯°¡ Æ÷ÇԵǸç, Àڽſ¡°Ô Çã¶ôµÈ ÀÚÀ¯¿Í ±Ç¸®¸¦ º¸´Ù ¸íÈ®ÇÏ°Ô ÀνÄÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇÑ ±ÔÁ¤µµ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. + +

+GPLÀº GPL ¾È¿¡ ¼ÒÇÁÆ®¿þ¾î ÇÇÀÌ¿ëÇã¶ôÀÚ(licensee)ÀÇ ±Ç¸®¸¦ Á¦ÇÑÇÏ´Â Á¶Ç×°ú ´Ü¼­¸¦ º°µµ·Î Ãß°¡ÇÏÁö ¸øÇÏ°Ô ÇÔÀ¸·Î½á »ç¿ëÀÚÀÇ ÀÚÀ¯¿Í ±Ç¸®¸¦ ½ÇÁ¦·Î º¸ÀåÇÕ´Ï´Ù. ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾îÀÇ °³ÀÛ°ú ¹èÆ÷¿¡ °ü°èÇÏ´Â »ç¶÷Àº ÀÌ·¯ÇÑ ¹«Á¶°ÇÀûÀÎ ±ÔÁ¤À» ÁؼöÇؾ߸¸ ÇÕ´Ï´Ù. + +

+¿¹¸¦ µé¾î GPL ÇÁ·Î±×·¥À» ¹èÆ÷ÇÒ °æ¿ì¿¡´Â ÇÁ·Î±×·¥ÀÇ À¯·á ÆǸųª ¹«·á ¹èÆ÷¿Í °ü°è¾øÀÌ ÀÚ½ÅÀÌ ±× ÇÁ·Î±×·¥¿¡ ´ëÇØ °¡Áú ¼ö ÀÖ¾ú´ø ¸ðµç ±Ç¸®¸¦, ÇÁ·Î±×·¥À» ¹Þ°Ô µÉ »ç¶÷¿¡°Ô ±×´ë·Î Çã¶ôÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ ¶§´Â ÇÁ·Î±×·¥ÀÇ ¿ø½Ã Äڵ带 ÇÔ²² Á¦°øÇϰųª ¿ø½Ã Äڵ带 ±¸ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» È®½ÇÈ÷ ¾Ë·ÁÁÖ¾î¾ß ÇÏ°í ÀÌ ¸ðµç »çÇ×À» »ç¿ëÀÚ°¡ ºÐ¸íÈ÷ ¾Ë ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÕ´Ï´Ù. + +

+ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀº ´ÙÀ½ µÎ ´Ü°è¸¦ ÅëÇØ »ç¿ëÀÚÀÇ ±Ç¸®¸¦ º¸È£ÇÕ´Ï´Ù. (1) ¼ÒÇÁÆ®¿þ¾î¿¡ ÀúÀÛ±ÇÀ» ¼³Á¤ÇÕ´Ï´Ù. (2) ½ÇÁ¤¹ý¿¡ µû¶ó À¯È¿ÇÑ ¹ýÀû È¿·ÂÀ» °®´Â GPLÀ» ÅëÇØ ¼ÒÇÁÆ®¿þ¾î¸¦ º¹Á¦Çϰųª °³ÀÛ ¹× ¹èÆ÷ÇÒ ¼ö ÀÖ´Â ±Ç¸®¸¦ »ç¿ëÀÚ¿¡°Ô ºÎ¿©ÇÕ´Ï´Ù. + +

+ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î¸¦ »ç¿ëÇÏ´Â »ç¶÷Àº ¹Ýº¹ÀûÀÎ Àç¹èÆ÷ °úÁ¤¿¡¼­ ¼ÒÇÁÆ®¿þ¾î ÀÚü¿¡ ¼öÁ¤°ú º¯ÇüÀÌ ÀϾ ¼ö ÀÖÀ¸¸ç, ÀÌ´Â ÃÖÃÊÀÇ ÀúÀÛÀÚ°¡ ¸¸µç ¼ÒÇÁÆ®¿þ¾î°¡ °¡Áø ¹®Á¦°¡ ¾Æ´Ò ¼ö ÀÖ´Ù´Â °³¿¬¼ºÀ» ÀνÄÇÏ°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. ¿ì¸®´Â °³ÀÛ°ú Àç¹èÆ÷ °úÁ¤¿¡¼­ ´Ù¸¥ »ç¶÷ ¶§¹®¿¡ ¹ß»ýÇÑ ¹®Á¦·Î ÀÎÇØ ÇÁ·Î±×·¥ ¿øÀúÀÛÀÚÀÇ ¸í¼ºÀÌ ÈѼյǴ °ÍÀ» ¿øÄ¡ ¾Ê½À´Ï´Ù. GPL¿¡ ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇÑ ¾î¶°ÇÑ ÇüÅÂÀÇ º¸Áõµµ ±ÔÁ¤ÇÏÁö ¾Ê´Â ÀÌÀ¯´Â ÀÌ·¯ÇÑ Á¡ÀÌ °í·ÁµÇ¾ú±â ¶§¹®À̸ç, ÀÌ´Â ÇÁ·Î±×·¥ ¿øÀúÀÛÀÚ¿Í ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀÇ ÀÚÀ¯·Î¿î È°µ¿À» º¸ÀåÇÏ´Â Çö½ÇÀûÀÎ ¼ö´ÜÀ̱⵵ ÇÕ´Ï´Ù. + +

+ƯÇã Á¦µµ´Â ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾îÀÇ ¹ßÀüÀ» À§ÇùÇÏ´Â ¿ä¼ÒÀÏ ¼ö¹Û¿¡ ¾ø½À´Ï´Ù. ÀÚÀ¯ ÇÁ·Î±×·¥À» Àç¹èÆ÷ÇÏ´Â »ç¶÷ÀÌ °³º° ƯÇ㸦 ÃëµæÇϸé, °á°úÀûÀ¸·Î ±× ÇÁ·Î±×·¥ÀÌ »çÀ¯ ¼ÒÇÁÆ®¿þ¾î(proprietary software)°¡ µÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀº ÀÌ·¯ÇÑ ¹®Á¦¿¡ ´ëóÇϱâ À§ÇØ ¾î¶°ÇÑ Æ¯Çãµµ ±× »ç¿ë ±Ç¸®¸¦ ¸ðµç »ç¶÷(ÀÌÇÏ, `°øÁß(Íëñë, general public)'À̶ó°í ĪÇÕ´Ï´Ù)¿¡°Ô ÀÚÀ¯·Ó°Ô Çã¿ëÇÏ´Â °æ¿ì¿¡ ÇÑÇؼ­¸¸ ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î¿Í ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ¸íÈ®È÷ ¹àÈü´Ï´Ù. + +

+º¹Á¦(copying)¿Í °³ÀÛ(modification) ¹× ¹èÆ÷(distribution)¿¡ °üÇÑ ±¸Ã¼ÀûÀÎ Á¶°Ç°ú ±ÔÁ¤Àº ´ÙÀ½°ú °°½À´Ï´Ù. + +

+

º¹Á¦¿Í °³ÀÛ ¹× ¹èÆ÷¿¡ °üÇÑ Á¶°Ç°ú ±ÔÁ¤

+ +

+Á¦0Á¶. +º» ÀÌ¿ëÇã¶ôÀº ÀúÀÛ±ÇÀÚ°¡ GNU GPL¿¡ µû¶ó ¹èÆ÷ÇÑ´Ù´Â »çÇ×À» ¸í½ÃÇÑ ¸ðµç ÄÄÇ»ÅÍ ÇÁ·Î±×·¥ ÀúÀÛ¹°¿¡ µ¿ÀÏÇÏ°Ô Àû¿ëµË´Ï´Ù. ÄÄÇ»ÅÍ ÇÁ·Î±×·¥ ÀúÀÛ¹°(ÀÌÇÏ, `ÇÁ·Î±×·¥'À̶ó°í ĪÇÕ´Ï´Ù)À̶õ ƯÁ¤ÇÑ °á°ú¸¦ ¾ò±â À§ÇØ ÄÄÇ»ÅÍ µîÀÇ Á¤º¸ ó¸® ´É·ÂÀ» °®Ãá ÀåÄ¡(ÀÌÇÏ, `ÄÄÇ»ÅÍ'¶ó°í ĪÇÕ´Ï´Ù) ¾È¿¡¼­ Á÷Á¢ ¶Ç´Â °£Á¢À¸·Î »ç¿ëµÇ´Â ÀÏ·ÃÀÇ Áö½Ã ¹× ¸í·ÉÀ¸·Î Ç¥ÇöµÈ âÀÛ¹°À» ÀǹÌÇϸç, `2Â÷Àû ÇÁ·Î±×·¥'À̶õ ÇÁ·Î±×·¥ÀÇ ÀÌ¿ëÇã¶ô ¶Ç´Â ÀúÀ۱ǹýÀÇ ±ÔÁ¤¿¡ µû¶ó ÇÁ·Î±×·¥ÀÇ ÀüºÎ ¶Ç´Â »ó´ç ºÎºÐÀ» ¿ø¿ëÇϰųª ´Ù¸¥ ÇÁ·Î±×·¡¹Ö ¾ð¾î·ÎÀÇ ¹ø¿ªÀ» Æ÷ÇÔÇÒ ¼ö ÀÖ´Â °³ÀÛ °úÁ¤À» ÅëÇØ Ã¢ÀÛµÈ »õ·Î¿î ÇÁ·Î±×·¥°ú ÀÌ¿Í °ü·ÃµÈ ÀúÀÛ¹°À» ÀǹÌÇÕ´Ï´Ù(ÀÌÈÄ·Î ´Ù¸¥ ÇÁ·Î±×·¡¹Ö ¾ð¾î·ÎÀÇ ¹ø¿ªÀº º°´Ù¸¥ Á¦ÇÑ ¾øÀÌ +°³ÀÛÀÇ ¹üÀ§¿¡ Æ÷ÇԵǴ °ÍÀ¸·Î °£Áֵ˴ϴÙ). `ÇÇÀÌ¿ëÇã¶ôÀÚ'¶õ GPLÀÇ ±ÔÁ¤¿¡ µû¶ó ÇÁ·Î±×·¥À» ÀÌ¿ëÇã¶ô ¹ÞÀº »ç¶÷À» ÀǹÌÇÏ°í, `¿øÇÁ·Î±×·¥'À̶õ ÇÁ·Î±×·¥À» °³ÀÛÇϰųª 2Â÷Àû ÇÁ·Î±×·¥À» ¸¸µå´Â µ¥ »ç¿ëÇÑ ÃÖÃÊÀÇ ÇÁ·Î±×·¥À» ÀǹÌÇÕ´Ï´Ù. + +

+º» ÀÌ¿ëÇã¶ôÀº ÇÁ·Î±×·¥¿¡ ´ëÇÑ º¹Á¦¿Í °³ÀÛ ±×¸®°í ¹èÆ÷ ÇàÀ§¿¡¸¸ Àû¿ëµË´Ï´Ù. µû¶ó¼­ ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â ÇàÀ§¿¡ ´ëÇÑ Á¦ÇÑÀº ¾ø½À´Ï´Ù. ÇÁ·Î±×·¥ÀÇ °á°ú¹°(output)¿¡´Â, ±× °á°ú¹°ÀÌ ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀ» ÅëÇØ »ý¼ºµÈ °ÍÀÎÁö ¾Æ´ÑÁö¿¡ »ó°ü¾øÀÌ, °á°úÀÇ ³»¿ëÀÌ ¿øÇÁ·Î±×·¥¿¡¼­ ÆÄ»ýµÈ 2Â÷Àû ÇÁ·Î±×·¥À» ±¸¼ºÇßÀ» ¶§¿¡ ÇÑÇØ º» ÀÌ¿ëÇã¶ôÀÇ ±ÔÁ¤À» Àû¿ëÇÕ´Ï´Ù. 2Â÷Àû ÇÁ·Î±×·¥ÀÇ ±¸¼º ¿©ºÎ´Â 2Â÷Àû ÇÁ·Î±×·¥ ¾È¿¡¼­ÀÇ ¿øÇÁ·Î±×·¥ÀÇ ¿ªÇÒÀ» Åä´ë·Î ÆÇ´ÜÇÕ´Ï´Ù. + +

+Á¦1Á¶. +ÀûÀýÇÑ ÀúÀÛ±Ç Ç¥½Ã¿Í ÇÁ·Î±×·¥¿¡ ´ëÇÑ º¸ÁõÀÌ Á¦°øµÇÁö ¾Ê´Â´Ù´Â »ç½ÇÀ» °¢ º¹Á¦¹°¿¡ ¸í½ÃÇÏ´Â ÇÑ, ÇÇÀÌ¿ëÇã¶ôÀÚ´Â ÇÁ·Î±×·¥ÀÇ ¿ø½Ã Äڵ带 ÀÚ½ÅÀÌ ¹ÞÀº »óÅ ±×´ë·Î ¾î¶°ÇÑ ¸Åü·Îµç º¹Á¦ÇÏ°í ¹èÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. º¹Á¦¿Í ¹èÆ÷°¡ ÀÌ·ç¾îÁú ¶§´Â º» ÀÌ¿ëÇã¶ô°ú ÇÁ·Î±×·¥¿¡ ´ëÇÑ º¸ÁõÀÌ Á¦°øµÇÁö ¾Ê´Â´Ù´Â »ç½Ç¿¡ °üÇÑ ¸ðµç ³»¿ëÀ» ±×´ë·Î À¯ÁöÇØ¾ß Çϸç, ¿µ¹®ÆÇ GPLÀ» ÇÔ²² Á¦°øÇØ¾ß ÇÕ´Ï´Ù. + +

+¹èÆ÷ÀÚ´Â º¹Á¦¹°À» ¹°¸®ÀûÀ¸·Î ÀεµÇÏ´Â µ¥ ¼Ò¿äµÈ ºñ¿ëÀ» û±¸ÇÒ ¼ö ÀÖÀ¸¸ç, ¼±Åà »çÇ×À¸·Î µ¶ÀÚÀûÀÎ À¯·á º¸ÁõÀ» ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. + +

+Á¦2Á¶. +ÇÇÀÌ¿ëÇã¶ôÀÚ´Â ÀÚ½ÅÀÌ ¹ÞÀº ÇÁ·Î±×·¥ÀÇ ÀüºÎ³ª ÀϺθ¦ °³ÀÛÇÒ ¼ö ÀÖÀ¸¸ç, À̸¦ ÅëÇØ 2Â÷Àû ÇÁ·Î±×·¥À» âÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. °³ÀÛÇÑ ÇÁ·Î±×·¥À̳ª âÀÛÇÑ 2Â÷Àû ÇÁ·Î±×·¥Àº ´ÙÀ½ »çÇ×À» ¸ðµÎ ¸¸Á·½ÃÅ°´Â Á¶°Ç¿¡ ÇÑÇؼ­, Á¦1Á¶ÀÇ ±ÔÁ¤¿¡ µû¶ó ¶Ç´Ù½Ã º¹Á¦µÇ°í ¹èÆ÷µÉ ¼ö ÀÖ½À´Ï´Ù. + +

+1Ç×. +ÆÄÀÏÀ» °³ÀÛÇÒ ¶§´Â ÆÄÀÏÀ» °³ÀÛÇÑ »ç½Ç°ú ±× ³¯Â¥¸¦ ÆÄÀÏ ¾È¿¡ ¸í½ÃÇØ¾ß ÇÕ´Ï´Ù. + +

+2Ç×. +¹èÆ÷Çϰųª °øÇ¥ÇÏ·Á´Â ÀúÀÛ¹°ÀÇ ÀüºÎ ¶Ç´Â ÀϺΰ¡ ÀÌ¿ëÇã¶ô ¹ÞÀº ÇÁ·Î±×·¥¿¡¼­ ÆÄ»ýµÈ °ÍÀ̶ó¸é, ÀúÀÛ¹° Àüü¿¡ ´ëÇÑ »ç¿ë ±Ç¸®¸¦ º» ÀÌ¿ëÇã¶ôÀÇ ±ÔÁ¤¿¡ µû¶ó °øÁß¿¡°Ô ¹«»óÀ¸·Î Çã¿ëÇØ¾ß ÇÕ´Ï´Ù. + +

+3Ç×. +°³ÀÛÇÑ ÇÁ·Î±×·¥ÀÇ ÀϹÝÀûÀÎ ½ÇÇà ÇüÅ°¡ ´ëÈ­Çü ±¸Á¶·Î ¸í·É¾î¸¦ Àü´Þ¹Þ´Â ¹æ½ÄÀÎ °æ¿ì¿¡´Â ÀûÀýÇÑ ÀúÀÛ±Ç Ç¥½Ã¿Í ÇÁ·Î±×·¥¿¡ ´ëÇÑ º¸ÁõÀÌ Á¦°øµÇÁö ¾Ê´Â´Ù´Â »ç½Ç(º°µµÀÇ º¸ÁõÀ» ¼³Á¤ÇÑ °æ¿ì¶ó¸é ÇØ´ç ³»¿ë)°ú ÀÌ¿ëÇã¶ô ¹ÞÀº ÇÁ·Î±×·¥À» º» ±ÔÁ¤¿¡ µû¶ó Àç¹èÆ÷ÇÒ ¼ö ÀÖ´Ù´Â »ç½Ç ±×¸®°í GPL »çº»À» Âü°íÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ÇÔ²² Æ÷ÇÔµÈ ¹®±¸°¡ ÇÁ·Î±×·¥ÀÌ ´ëÈ­Çü ±¸Á¶·Î ÆòÀÌÇÏ°Ô ½ÇÇàµÈ Á÷ÈÄ¿¡ È­¸é ¶Ç´Â Áö¸éÀ¸·Î Ãâ·ÂµÇµµ·Ï ÇØ¾ß ÇÕ´Ï´Ù(¿¹¿Ü ±ÔÁ¤: ÇÁ·Î±×·¥ÀÌ ´ëÈ­Çü ±¸Á¶¸¦ °®°í À־ Åë»óÀûÀÎ ½ÇÇà ȯ°æ¿¡¼­ Àü¼úÇÑ »çÇ×À» Ãâ·ÂÇÏÁö ¾Ê´Â ÇüÅ¿´À» °æ¿ì¿¡´Â À̸¦ °³ÀÛÇÑ ÇÁ·Î±×·¥ ¶ÇÇÑ °ü·Ã »çÇ×À» Ãâ·ÂÇÏÁö ¾Ê¾Æµµ ¹«¹æÇÕ´Ï´Ù). +

+ +

+À§ Á¶Ç×µéÀº °³ÀÛµÈ ÇÁ·Î±×·¥ Àüü¿¡ Àû¿ëµË´Ï´Ù. ¸¸¾à °³ÀÛµÈ ÇÁ·Î±×·¥¿¡ Æ÷ÇÔµÈ Æ¯Á¤ ºÎºÐÀÌ ¿øÇÁ·Î±×·¥¿¡¼­ ÆÄ»ýµÈ °ÍÀÌ ¾Æ´Ñ º°µµÀÇ µ¶ÀÚÀû ÀúÀÛ¹°·Î ÀÎÁ¤µÉ ¸¸ÇÑ »ó´çÇÑ ÀÌÀ¯°¡ ÀÖÀ» ¶§´Â, ÇØ´ç ÀúÀÛ¹°ÀÇ °³º°ÀûÀÎ ¹èÆ÷¿¡´Â º» ÀÌ¿ëÇã¶ô ±ÔÁ¤ÀÌ Àû¿ëµÇÁö ¾Ê½À´Ï´Ù. ±×·¯³ª ±× ÀúÀÛ¹°ÀÌ 2Â÷Àû ÇÁ·Î±×·¥ÀÇ ÀϺημ­ ÇÔ²² ¹èÆ÷µÈ´Ù¸é °³º°ÀûÀÎ ÀúÀ۱ǰú ¹èÆ÷ ±âÁØ¿¡ »ó°ü¾øÀÌ ÀúÀÛ¹° ¸ðµÎ¿¡ º» ÀÌ¿ëÇã¶ôÀÌ Àû¿ëµÇ¾î¾ß Çϸç, Àüü ÀúÀÛ¹°¿¡ ´ëÇÑ »ç¿ë ±Ç¸®´Â °øÁß¿¡°Ô ¹«»óÀ¸·Î ÀÌ¿ëÇã¶ô µË´Ï´Ù. + +

+ÀÌ·¯ÇÑ ±ÔÁ¤Àº °³º°ÀûÀÎ ÀúÀÛ¹°¿¡ ´ëÇÑ ÀúÀÛÀÚÀÇ ±Ç¸®¸¦ ħÇØÇϰųª ÀÎÁ¤ÇÏÁö ¾ÊÀ¸·Á´Â °ÍÀÌ ¾Æ´Ï¶ó, ¿øÇÁ·Î±×·¥¿¡¼­ ÆÄ»ýµÈ 2Â÷Àû ÇÁ·Î±×·¥À̳ª ¼öÁý ÀúÀÛ¹°ÀÇ ¹èÆ÷¸¦ ÀÏ°üÀûÀ¸·Î ±ÔÁ¦Çϱâ À§ÇÑ °ÍÀÔ´Ï´Ù. + +

+¿øÇÁ·Î±×·¥À̳ª ¿øÇÁ·Î±×·¥¿¡¼­ ÆÄ»ýµÈ 2Â÷Àû ÇÁ·Î±×·¥À» À̵鿡°Ô¼­ ÆÄ»ýµÇÁö ¾ÊÀº ´Ù¸¥ ÀúÀÛ¹°°ú ÇÔ²² ´Ü¼øÈ÷ ÀúÀåÇϰųª ¹èÆ÷ÇÒ ¸ñÀûÀ¸·Î µ¿ÀÏÇÑ ¸Åü¿¡ ¸ð¾Æ ³õÀº ¼öÁý¹°ÀÇ °æ¿ì, ¿øÇÁ·Î±×·¥¿¡¼­ ÆÄ»ýµÇÁö ¾ÊÀº ´Ù¸¥ ÀúÀÛ¹°¿¡´Â º» ÀÌ¿ëÇã¶ô ±ÔÁ¤ÀÌ Àû¿ëµÇÁö ¾Ê½À´Ï´Ù.. + +

+Á¦3Á¶. +ÇÇÀÌ¿ëÇã¶ôÀÚ´Â ´ÙÀ½ Áß ÇϳªÀÇ Ç׸ñÀ» ¸¸Á·ÇÏ´Â Á¶°ÇÀÏ ¶§¿¡ ÇÑÇؼ­ Á¦1Á¶¿Í Á¦2Á¶ÀÇ ±ÔÁ¤¿¡ µû¶ó ÇÁ·Î±×·¥(¶Ç´Â Á¦2Á¶¿¡¼­ ¾ð±ÞÇÑ 2Â÷Àû ÇÁ·Î±×·¥)À» ¸ñÀû ÄÚµå(object code)³ª ½ÇÇ๰(executable form)ÀÇ ÇüÅ·Πº¹Á¦ÇÏ°í ¹èÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. + +

+1Ç×. +¸ñÀû Äڵ峪 ½ÇÇ๰¿¡ »óÀÀÇÏ´Â, ÄÄÇ»ÅÍ°¡ ÀνÄÇÒ ¼ö ÀÖ´Â ¿ÏÀüÇÑ ¿ø½Ã Äڵ带 ÇÔ²² Á¦°øÇØ¾ß ÇÕ´Ï´Ù. ¿ø½Ã ÄÚµå´Â Á¦1Á¶¿Í Á¦2Á¶ÀÇ ±ÔÁ¤¿¡ µû¶ó ¹èÆ÷µÉ ¼ö ÀÖ¾î¾ß Çϸç, ¼ÒÇÁÆ®¿þ¾îÀÇ Àü´ÞÀ» À§ÇØ ÀϹÝÀûÀ¸·Î »ç¿ëÇÏ´Â ¸Åü·Î Á¦°øµÇ¾î¾ß ÇÕ´Ï´Ù. + +

+2Ç×. +¹èÆ÷¿¡ ÇÊ¿äÇÑ ÃÖ¼ÒÇÑÀÇ ºñ¿ë¸¸À» ¹Þ°í ¸ñÀû Äڵ峪 ½ÇÇ๰¿¡ »óÀÀÇÏ´Â ¿ÏÀüÇÑ ¿ø½Ã Äڵ带 ¹èÆ÷ÇÏ°Ú´Ù´Â, ÃÖ¼ÒÇÑ 3³â°£ À¯È¿ÇÑ ¾àÁ¤¼­¸¦ ÇÔ²² Á¦°øÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ¾àÁ¤¼­´Â ¾àÁ¤¼­¸¦ °¡Áø ¾î¶² »ç¶÷¿¡ ´ëÇؼ­µµ À¯È¿ÇØ¾ß ÇÕ´Ï´Ù. ¿ø½Ã ÄÚµå´Â ÄÄÇ»ÅÍ°¡ ÀνÄÇÒ ¼ö ÀÖ´Â ÇüÅ¿©¾ß ÇÏ°í, Á¦1Á¶¿Í Á¦2Á¶ÀÇ ±ÔÁ¤¿¡ µû¶ó ¹èÆ÷µÉ ¼ö ÀÖ¾î¾ß Çϸç, ¼ÒÇÁÆ®¿þ¾îÀÇ Àü´ÞÀ» À§ÇØ ÀϹÝÀûÀ¸·Î »ç¿ëÇÏ´Â ¸Åü·Î Á¦°øµÇ¾î¾ß ÇÕ´Ï´Ù. + +

+3Ç×. +¸ñÀû Äڵ峪 ½ÇÇ๰¿¡ »óÀÀÇÏ´Â ¿ø½Ã Äڵ带 ¹èÆ÷ÇÏ°Ú´Ù´Â, ÀÚ½ÅÀÌ ¹ÞÀº Á¤º¸¸¦ ÇÔ²² Á¦°øÇØ¾ß ÇÕ´Ï´Ù(3Ç×Àº À§ 2Ç׿¡ µû¶ó ÇÁ·Î±×·¥ÀÇ ¸ñÀû Äڵ峪 ½ÇÇ๰°ú ÇÔ²² ¿ø½Ã Äڵ带 ¹èÆ÷ÇÏ°Ú´Ù´Â ¾àÁ¤À» ¹Þ¾Ò°í, µ¿½Ã¿¡ ºñ»ó¾÷ÀûÀÎ ¹èÆ÷¸¦ ÇÒ °æ¿ì¿¡ ÇÑÇؼ­¸¸ Çã¿ëµË´Ï´Ù). +

+ +

+ÀúÀÛ¹°¿¡ ´ëÇÑ ¿ø½Ã ÄÚµå¶õ ÇØ´ç ÀúÀÛ¹°À» °³ÀÛÇϱ⿡ ÀûÀýÇÑ Çü½ÄÀ» ÀǹÌÇÕ´Ï´Ù. ½ÇÇ๰¿¡ ´ëÇÑ ¿ÏÀüÇÑ ¿ø½Ã ÄÚµå¶õ ½ÇÇ๰¿¡ Æ÷ÇÔµÈ ¸ðµç ¸ðµâÀÇ ¿ø½Ã ÄÚµå¿Í ÀÌ¿Í °ü·ÃµÈ ÀÎÅÍÆäÀ̽º Á¤ÀÇ ÆÄÀÏ ¸ðµÎ, ±×¸®°í ½ÇÇ๰ÀÇ ÄÄÆÄÀÏ°ú ¼³Ä¡¸¦ Á¦¾îÇϴµ¥ »ç¿ëµÈ ½ºÅ©¸³Æ® ÀüºÎ¸¦ ÀǹÌÇÕ´Ï´Ù. ±×·¯³ª Ưº°ÇÑ ¿¹¿ÜÀÇ Çϳª·Î¼­ ½ÇÇ๰ÀÌ ½ÇÇàµÉ ¿î¿µÃ¼Á¦ÀÇ ÁÖ¿ä ºÎºÐ(ÄÄÆÄÀÏ·¯³ª Ä¿³Î µî)°ú ÇÔ²² (¿ø½Ã Äڵ峪 ¹ÙÀ̳ʸ®ÀÇ ÇüÅ·Î) ÀϹÝÀûÀ¸·Î ¹èÆ÷µÇ´Â ±¸¼º ¿ä¼ÒµéÀº ÀÌ·¯ÇÑ ±¸¼º ¿ä¼Ò ÀÚü°¡ ½ÇÇ๰¿¡ ¼ö¹ÝµÇÁö ¾Ê´Â ÇÑ ¿ø½Ã ÄÚµåÀÇ ¹èÆ÷ ´ë»ó¿¡¼­ Á¦¿ÜµÇ¾îµµ ¹«¹æÇÕ´Ï´Ù. + +

+¸ñÀû Äڵ峪 ½ÇÇ๰À» ÁöÁ¤ÇÑ Àå¼Ò¿¡¼­ º¹Á¦ÇÒ ¼ö ÀÖ°Ô ÇÏ´Â ¹æ½ÄÀ¸·Î ¹èÆ÷ÇÒ °æ¿ì, µ¿ÀÏÇÑ Àå¼Ò¿¡¼­ ¿ø½Ã Äڵ带 º¹Á¦ÇÒ ¼ö ÀÖ´Â µ¿µîÇÑ Á¢±Ù ¹æ¹ýÀ» Á¦°øÇÑ´Ù¸é ¿ø½Ã Äڵ带 ¸ñÀû ÄÚµå¿Í ÇÔ²² º¹Á¦µÇµµ·Ï ¼³Á¤ÇÏÁö ¾Ê¾Ò´õ¶óµµ ¿ø½Ã Äڵ带 ¹èÆ÷ÇÏ´Â °ÍÀ¸·Î °£Áֵ˴ϴÙ. + +

+Á¦4Á¶. +º» ÀÌ¿ëÇã¶ô¿¡ ÀÇÇØ ¸í½ÃÀûÀ¸·Î ÀÌ·ç¾îÁöÁö ¾Ê´Â ÇÑ, ÇÁ·Î±×·¥¿¡ ´ëÇÑ º¹Á¦, °³ÀÛ, 2Â÷Àû ÀÌ¿ëÇã¶ô ¼³Á¤°ú ¹èÆ÷´Â ¼º¸³µÇÁö ¾Ê½À´Ï´Ù. ÀÌ¿Í °ü·ÃµÈ ¾î¶°ÇÑ ÇàÀ§µµ ¹«È¿ÀÌ¸ç º» ÀÌ¿ëÇã¶ôÀÌ º¸ÀåÇÑ ±Ç¸®´Â ÀÚµ¿À¸·Î ¼Ò¸êµË´Ï´Ù. ±×·¯³ª º» ÀÌ¿ëÇã¶ôÀÇ ±ÔÁ¤¿¡ µû¶ó ÇÁ·Î±×·¥ÀÇ º¹Á¦¹°À̳ª ±Ç¸®¸¦ ¹Þ¾Ò´ø Á¦3ÀÚ´Â º» ÀÌ¿ëÇã¶ôÀÇ ±ÔÁ¤À» ÁؼöÇÏ´Â ÇÑ, ¹èÆ÷ÀÚÀÇ ±Ç¸® ¼Ò¸ê°ú °ü°è¾øÀÌ »ç¿ë»óÀÇ ±Ç¸®¸¦ °è¼Ó À¯ÁöÇÒ ¼ö ÀÖ½À´Ï´Ù. + +

+Á¦5Á¶. +º» ÀÌ¿ëÇã¶ôÀº ¼­¸íÀ̳ª ³¯ÀÎÀ» ¼ö¹ÝÇÏ´Â Çü½ÄÀ» °®Áö ¾Ê±â ¶§¹®¿¡ ÇÇÀÌ¿ëÇã¶ôÀÚ°¡ º» ÀÌ¿ëÇã¶ôÀÇ ³»¿ëÀ» ¹Ýµå½Ã ¹Þ¾Æµé¿©¾ß ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ±×·¯³ª ÇÁ·Î±×·¥À̳ª ÇÁ·Î±×·¥¿¡ ±â¹ÝÇÑ 2Â÷Àû ÇÁ·Î±×·¥ÀÇ °³ÀÛ ¹× ¹èÆ÷¸¦ Çã¶ôÇÏ´Â °ÍÀº º» ÀÌ¿ëÇã¶ô¿¡ ÀÇÇؼ­¸¸ °¡´ÉÇÕ´Ï´Ù. ¸¸¾à º» ÀÌ¿ëÇã¶ô¿¡ µ¿ÀÇÇÏÁö ¾ÊÀ» °æ¿ì¿¡´Â ÀÌ·¯ÇÑ ÇàÀ§°¡ ¹ýÀûÀ¸·Î ±ÝÁöµË´Ï´Ù. µû¶ó¼­ ÇÁ·Î±×·¥(¶Ç´Â ÇÁ·Î±×·¥¿¡ ±â¹ÝÇÑ 2Â÷Àû ÇÁ·Î±×·¥)À» °³ÀÛÇϰųª ¹èÆ÷ÇÏ´Â ÇàÀ§´Â ±×¿¡ µû¸¥ º» ÀÌ¿ëÇã¶ôÀÇ ³»¿ë¿¡ µ¿ÀÇÇÑ´Ù´Â °ÍÀ» ÀǹÌÇϸç, º¹Á¦¿Í °³ÀÛ ¹× ¹èÆ÷¿¡ °üÇÑ º» ÀÌ¿ëÇã¶ôÀÇ Á¶°Ç°ú ±ÔÁ¤À» ¸ðµÎ ¹Þ¾ÆµéÀÌ°Ú´Ù´Â Àǹ̷Π°£Áֵ˴ϴÙ. + +

+Á¦6Á¶. +ÇÇÀÌ¿ëÇã¶ôÀÚ¿¡ ÀÇÇØ ÇÁ·Î±×·¥(¶Ç´Â ÇÁ·Î±×·¥¿¡ ±â¹ÝÇÑ 2Â÷Àû ÇÁ·Î±×·¥)ÀÌ ¹Ýº¹ÀûÀ¸·Î Àç¹èÆ÷µÉ °æ¿ì, °¢ ´Ü°è¿¡¼­ÀÇ ÇÇÀÌ¿ëÇã¶ôÀÚ´Â º» ÀÌ¿ëÇã¶ôÀÇ ±ÔÁ¤¿¡ µû¸¥ ÇÁ·Î±×·¥ÀÇ º¹Á¦¿Í °³ÀÛ ¹× ¹èÆ÷¿¡ ´ëÇÑ ±Ç¸®¸¦ ÃÖÃÊÀÇ ÀÌ¿ëÇã¶ôÀÚ¿¡°Ô ¹ÞÀº °ÍÀ¸·Î ÀÚµ¿À¸·Î °£Áֵ˴ϴÙ. ÇÁ·Î±×·¥(¶Ç´Â ÇÁ·Î±×·¥¿¡ ±â¹ÝÇÑ 2Â÷Àû ÇÁ·Î±×·¥)À» ¹èÆ÷ÇÒ ¶§´Â ÇÇÀÌ¿ëÇã¶ôÀÚÀÇ ±Ç¸® Çà»ç¸¦ Á¦ÇÑÇÒ ¼ö ÀÖ´Â ¾î¶°ÇÑ »çÇ×µµ Ãß°¡ÇÒ ¼ö ¾ø½À´Ï´Ù. ±×·¯³ª Àç¹èÆ÷°¡ ÀϾ ½ÃÁ¡¿¡¼­ Á¦3ÀÇ ÇÇÀÌ¿ëÇã¶ôÀÚ¿¡°Ô º» ÀÌ¿ëÇã¶ôÀ» ÁؼöÇϵµ·Ï °­Á¦ÇÒ Ã¥ÀÓÀÌ ÇÇÀÌ¿ëÇã¶ôÀÚ¿¡°Ô ºÎ°úµÇÁö´Â ¾Ê½À´Ï´Ù. + +

+Á¦7Á¶. +¹ý¿øÀÇ ÆÇ°áÀ̳ª ƯÇã±Ç ħÇØ ÁÖÀå ¶Ç´Â Æ¯Çã ¹®Á¦¿¡ ±¹ÇѵÇÁö ¾ÊÀº ±× ¹ÛÀÇ ÀÌÀ¯·Î º» ÀÌ¿ëÇã¶ô ±ÔÁ¤°ú ¹èÄ¡µÇ´Â »çÇ×ÀÌ ¹ß»ýÇÏ´õ¶óµµ, ¹èÄ¡µÈ »çÇ×ÀÌ ¼±ÇàÇϰųª º» ÀÌ¿ëÇã¶ôÀÇ Á¶°Ç°ú ±ÔÁ¤ÀÌ ¸éÁ¦µÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. µû¶ó¼­ ¹ý¿øÀÇ ¸í·ÉÀ̳ª ÇÕÀÇ µî¿¡ ÀÇÇØ º» ÀÌ¿ëÇã¶ô¿¡ À§¹èµÇ´Â »çÇ×ÀÌ ¹ß»ýÇÏ´õ¶óµµ ¾çÃø ¸ðµÎ¸¦ ¸¸Á·½Ãų ¼ö ¾ø´Ù¸é ÇÁ·Î±×·¥Àº ¹èÆ÷µÉ ¼ö ¾ø½À´Ï´Ù. ¿¹¸¦ µé¾î Á÷Á¢ ¶Ç´Â °£Á¢ÀûÀÎ ¹æ¹ýÀ¸·Î ÇÁ·Î±×·¥ º¹Á¦¹°À» ÀÌ¿ëÇã¶ô ¹ÞÀº ÀÓÀÇÀÇ Á¦3ÀÚ¿¡°Ô ƯÁ¤ÇÑ Æ¯Çã °ü·Ã Çã°¡°¡ ÇØ´ç ÇÁ·Î±×·¥À» ¹«»óÀ¸·Î Àç¹èÆ÷ÇÒ ¼ö ÀÖ°Ô Çã¿ëÇÏÁö ¾Ê´Â´Ù¸é, ±×·¯ÇÑ Çã°¡¿Í º» ÀÌ¿ëÇã¶ôÀ» µ¿½Ã¿¡ ¸¸Á·½ÃÅ°¸é¼­ ÇÁ·Î±×·¥À» ¹èÆ÷ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº ¾ø½À´Ï´Ù. + +

+º» Á¶Ç×Àº ƯÁ¤ÇÑ »óȲ¿¡¼­ º» Á¶Ç×ÀÇ ÀϺΰ¡ À¯È¿ÇÏÁö ¾Ê°Å³ª Àû¿ëµÉ ¼ö ¾øÀ» °æ¿ì¿¡µµ º» Á¶Ç×ÀÇ ³ª¸ÓÁö ºÎºÐÀ» À¯È¿ÇÏ°Ô ÇÒ Àǵµ·Î ¸¸µé¾îÁ³½À´Ï´Ù. µû¶ó¼­ ±× ¿ÜÀÇ »óȲ¿¡¼­´Â º» Á¶Ç×À» ÀüüÀûÀ¸·Î Àû¿ëÇÏ¸é µË´Ï´Ù. + +

+º» Á¶Ç×ÀÇ ¸ñÀûÀº ƯÇ㳪 ÀúÀÛ±Ç Ä§ÇØ µîÀÇ ÇàÀ§¸¦ Á¶ÀåÇϰųª ÇØ´ç ±Ç¸®¸¦ ÀÎÁ¤ÇÏÁö ¾ÊÀ¸·Á´Â °ÍÀÌ ¾Æ´Ï¶ó, GPLÀ» ÅëÇØ ±¸ÇöÇÑ ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î ¹èÆ÷ ü°è¸¦ ÅëÇÕÀûÀ¸·Î º¸È£Çϱâ À§ÇÑ °ÍÀÔ´Ï´Ù. ¸¹Àº »ç¶÷ÀÌ ¹èÆ÷ ü°è¿¡ ½Å·Ú ÀÖ´Â Áö¿øÀ» °è¼ÓÇØ ÁÜÀ¸·Î½á ¼ÒÇÁÆ®¿þ¾îÀÇ ´Ù¾çÇÑ ºÐ¾ß¿¡ ¸¹Àº °øÇåÀ» ÇØ ÁÖ¾ú½À´Ï´Ù. ¼ÒÇÁÆ®¿þ¾î¸¦ ¾î¶² ¹èÆ÷ ü°è·Î ¹èÆ÷ÇÒ °ÍÀΰ¡¸¦ °áÁ¤ÇÏ´Â °ÍÀº ÀüÀûÀ¸·Î ÀúÀÛÀÚ¿Í ±âÁõÀÚÀÇ ÀÇÁö¿¡ ´Þ¸° °ÍÀÌÁö, ÀÏ¹Ý »ç¿ëÀÚ°¡ °­¿äÇÒ ¼ö ÀÖ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. + +

+º» Á¶Ç×Àº º» ÀÌ¿ëÇã¶ôÀÇ ´Ù¸¥ Á¶Ç׿¡¼­ ¹«¾ùÀ» Áß¿äÇÏ°Ô °í·ÁÇØ¾ß ÇÏ´ÂÁö¸¦ ¸íÈ®È÷ ÇØÁÝ´Ï´Ù. + +

+Á¦8Á¶. +ƯÇ㳪 ÀúÀÛ±ÇÀ» ¼³Á¤ÇÑ ÀÎÅÍÆäÀ̽º ¶§¹®¿¡ ƯÁ¤ ±¹°¡¿¡¼­ ÇÁ·Î±×·¥ÀÇ ¹èÆ÷¿Í »ç¿ëÀÌ ÇÔ²² ¶Ç´Â °³º°ÀûÀ¸·Î Á¦ÇÑµÈ °æ¿ì, º» ÀÌ¿ëÇã¶ôÀ» ÇÁ·Î±×·¥¿¡ Àû¿ëÇÑ ÃÖÃÊ ÀúÀÛ±ÇÀÚ´Â ¹®Á¦°¡ ¹ß»ýÇÏÁö ¾Ê´Â ±¹°¡¿¡ ÇÑÇØ ÇÁ·Î±×·¥À» ¹èÆ÷ÇÑ´Ù´Â ¹èÆ÷ »óÀÇ Áö¿ªÀû Á¦ÇÑ Á¶°ÇÀ» ¸í½ÃÀûÀ¸·Î ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì ±×·¯ÇÑ »çÇ×Àº º» ÀÌ¿ëÇã¶ôÀÇ ÀϺηΠ°£Áֵ˴ϴÙ. + +

+Á¦9Á¶. +ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀº ¶§¶§·Î º» ÀÌ¿ëÇã¶ôÀÇ °³Á¤ÆÇÀ̳ª ½ÅÆÇÀ» °øÇ¥ÇÒ ¼ö ÀÖ½À´Ï´Ù. »õ·Ó°Ô °øÇ¥ÇÒ ÆÇÀº ´ç¸éÇÑ ¹®Á¦³ª Çö¾ÈÀ» ó¸®ÇÏ´Â µ¥ ÇÊ¿äÇÑ ¼¼ºÎ ³»¿ë¿¡ Â÷ÀÌ°¡ ÀÖÀ» ¼ö ÀÖÁö¸¸, ±× ±Ùº»Á¤½ÅÀº º¯ÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. + +

+°¢°¢ÀÇ ÆÇÀº ÆÇ ¹øÈ£¸¦ »ç¿ëÇØ ±¸º°ÇÕ´Ï´Ù. ƯÁ¤ÇÑ ÆÇ ¹øÈ£¿Í ±× ÀÌÈÄ ÆÇÀ» µû¸¥´Ù´Â »çÇ×À» ¸í½ÃÇÑ ÇÁ·Î±×·¥¿¡´Â ÇØ´ç ÆÇÀ̳ª ±× ÀÌÈÄ¿¡ ¹ßÇàµÈ ¾î¶² ÆÇÀ» ¼±ÅÃÇØ Àû¿ëÇصµ ¹«¹æÇÏ°í, ÆÇ ¹øÈ£¸¦ ¸í½ÃÇÏÁö ¾ÊÀº °æ¿ì¿¡´Â ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀÌ °øÇ¥ÇÑ ¾î¶°ÇÑ ÆÇ ¹øÈ£ÀÇ ÆÇÀ» Àû¿ëÇصµ ¹«¹æÇÕ´Ï´Ù. + +

+Á¦10Á¶. +ÇÁ·Î±×·¥ÀÇ ÀϺθ¦ º» ÀÌ¿ëÇã¶ô°ú ¹èÆ÷ ±âÁØÀÌ ´Ù¸¥ ÀÚÀ¯ ÇÁ·Î±×·¥°ú ÇÔ²² °áÇÕÇÏ°íÀÚ ÇÒ °æ¿ì¿¡´Â ÇØ´ç ÇÁ·Î±×·¥ÀÇ ÀúÀÛÀÚ¿¡°Ô ¼­¸é ½ÂÀÎÀ» ¹Þ¾Æ¾ß ÇÕ´Ï´Ù. ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀÌ ÀúÀÛ±ÇÀ» °¡Áø ¼ÒÇÁÆ®¿þ¾îÀÇ °æ¿ì¿¡´Â ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀÇ ½ÂÀÎÀ» ¾ò¾î¾ß ÇÕ´Ï´Ù. ¿ì¸®´Â ÀÌ·¯ÇÑ ¿äûÀ» ¼ö¶ôÇϱâ À§ÇØ ¶§¶§·Î ¿¹¿Ü ±âÁØÀ» ¸¸µé±âµµ ÇÕ´Ï´Ù. ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀº ÀϹÝÀûÀ¸·Î ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾îÀÇ 2Â÷Àû ÀúÀÛ¹°À» ¸ðµÎ ÀÚÀ¯·Î¿î »óÅ·ΠÀ¯ÁöÇÏ·Á´Â ¸ñÀû°ú ¼ÒÇÁÆ®¿þ¾îÀÇ °øÀ¯¿Í ÀçÈ°¿ëÀ» ÁõÁøÇÏ·Á´Â µÎ °¡Áö ¸ñÀûÀ» ±âÁØÀ¸·Î ½ÂÀÎ ¿©ºÎ¸¦ °áÁ¤ÇÒ °ÍÀÔ´Ï´Ù. + +

+

º¸ÁõÀÇ °á¿© (Á¦11Á¶, Á¦12Á¶)

+

Á¦11Á¶. +º» ÀÌ¿ëÇã¶ôÀ» µû¸£´Â ÇÁ·Î±×·¥Àº ¹«»óÀ¸·Î ¾çµµµÇ±â ¶§¹®¿¡ °ü·Ã ¹ý·üÀÌ Çã¿ëÇÏ´Â Çѵµ ¾È¿¡¼­ ¾î¶°ÇÑ ÇüÅÂÀÇ º¸Áõµµ Á¦°øÇÏÁö ¾Ê½À´Ï´Ù. ÇÁ·Î±×·¥ ÀúÀÛ±ÇÀÚ¿Í ¹èÆ÷ÀÚ°¡ °øµ¿ ¶Ç´Â °³º°ÀûÀ¸·Î º°µµÀÇ º¸ÁõÀ» ¼­¸éÀ¸·Î Á¦°øÇÑ °æ¿ì¸¦ Á¦¿ÜÇϸé, ƯÁ¤ÇÑ ¸ñÀû¿¡ ´ëÇÑ ÇÁ·Î±×·¥ÀÇ ÀûÇÕ¼ºÀ̳ª »ó¾÷¼º ¿©ºÎ¿¡ ´ëÇÑ º¸ÁõÀ» Æ÷ÇÔÇÑ ¾î¶°ÇÑ ÇüÅÂÀÇ º¸Áõµµ ¸í½ÃÀûÀ̳ª ¹¬½ÃÀûÀ¸·Î ¼³Á¤µÇÁö ¾ÊÀº `ÀÖ´Â ±×´ë·ÎÀÇ' »óÅ·ΠÀÌ ÇÁ·Î±×·¥À» ¹èÆ÷ÇÕ´Ï´Ù. ÇÁ·Î±×·¥°ú ÇÁ·Î±×·¥ÀÇ ½ÇÇà¿¡ µû¶ó ¹ß»ýÇÒ ¼ö ÀÖ´Â ¸ðµç À§ÇèÀº ÇÇÀÌ¿ëÇã¶ôÀÚ¿¡°Ô ÀμöµÇ¸ç ÀÌ¿¡ µû¸¥ º¸¼ö ¹× º¹±¸¸¦ À§ÇÑ Á¦¹Ý °æºñ ¶ÇÇÑ ÇÇÀÌ¿ëÇã¶ôÀÚ°¡ ¸ðµÎ ºÎ´ãÇØ¾ß ÇÕ´Ï´Ù. + +

+Á¦12Á¶. +ÀúÀÛ±ÇÀÚ³ª ¹èÆ÷ÀÚ°¡ ÇÁ·Î±×·¥ÀÇ ¼Õ»ó °¡´É¼ºÀ» »çÀü¿¡ ¾Ë°í ÀÖ¾ú´õ¶óµµ ¹ß»ýÇÑ ¼Õ½ÇÀÌ °ü·Ã ¹ý±Ô¿¡ ÀÇÇØ º¸È£µÇ°Å³ª ÀÌ¿¡ ´ëÇÑ º°µµÀÇ ¼­¸é º¸ÁõÀ» ¼³Á¤ÇÑ °æ¿ì°¡ ¾Æ´Ï¶ó¸é, ÀúÀÛ±ÇÀÚ³ª ÇÁ·Î±×·¥À» ¿ø·¡ÀÇ »óÅ ¶Ç´Â °³ÀÛÇÑ »óÅ·ΠÁ¦°øÇÑ ¹èÆ÷ÀÚ´Â ÇÁ·Î±×·¥ÀÇ »ç¿ë ¶Ç´Â ÇÁ·Î±×·¥ÀÌ ÀÛµ¿ÇÏÁö ¾Ê¾Æ ¹ß»ýÇÑ ¼Õ½ÇÀ̳ª ÇÁ·Î±×·¥ ÀÚüÀÇ ¼Õ½Ç¿¡ ´ëÇØ Ã¥ÀÓÁöÁö ¾Ê½À´Ï´Ù. ÀÌ·¯ÇÑ ¸éÃ¥ Á¶°ÇÀº »ç¿ëÀÚ³ª Á¦3ÀÚ°¡ ÇÁ·Î±×·¥À» Á¶ÀÛÇÔÀ¸·Î½á ¹ß»ýÇÑ ¼Õ½ÇÀ̳ª ´Ù¸¥ ¼ÒÇÁÆ®¿þ¾î¿Í ÇÁ·Î±×·¥À» ÇÔ²² µ¿ÀÛ½ÃÄÑ ¹ß»ýÇÑ µ¥ÀÌÅÍÀÇ »ó½Ç ¹× ºÎÁ¤È®ÇÑ »êÃâ °á°ú¿¡¸¸ ±¹ÇѵǴ °ÍÀÌ ¾Æ´Õ´Ï´Ù. ¹ß»ýÇÑ ¼Õ½ÇÀÇ ÀϹݼºÀ̳ª Ư¼ö¼º»Ó ¾Æ´Ï¶ó ¿øÀÎÀÇ ¿ì¹ß¼º ¹× ÇÊ¿¬¼ºµµ ÀüÇô °í·ÁµÇÁö ¾Ê½À´Ï´Ù. + +

+

º¹Á¦¿Í °³ÀÛ ¹× ¹èÆ÷¿¡ °üÇÑ Á¶°Ç°ú ±ÔÁ¤ÀÇ ³¡.

+

+

»õ·Î¿î ÇÁ·Î±×·¥¿¡ GPLÀ» Àû¿ëÇÏ´Â ¹æ¹ý

+

+»õ·Î¿î ÇÁ·Î±×·¥À» °³¹ßÇÏ°í ±× ÇÁ·Î±×·¥ÀÌ ¸¹Àº »ç¶÷¿¡°Ô ÃÖ´ëÇÑ À¯¿ëÇÏ°Ô »ç¿ëµÇ±â¸¦ ¿øÇÑ´Ù¸é, º» ÀÌ¿ëÇã¶ô¿¡ µû¶ó ´©±¸³ª ÀÚÀ¯·Ó°Ô °³ÀÛÇÏ°í Àç¹èÆ÷ÇÒ ¼ö ÀÖ´Â ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î·Î ¸¸µå´Â °ÍÀÌ ÃÖ¼±ÀÇ ¹æ¹ýÀÔ´Ï´Ù. + +

+ÇÁ·Î±×·¥À» ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î·Î ¸¸µé±â À§Çؼ­´Â ´ÙÀ½ »çÇ×À» ÇÁ·Î±×·¥¿¡ Ãß°¡ÇÏ¸é µË´Ï´Ù. ÇÁ·Î±×·¥¿¡ ´ëÇÑ º¸ÁõÀ» Á¦°øÇÏÁö ¾Ê´Â´Ù´Â »ç½ÇÀ» °¡Àå È¿°úÀûÀ¸·Î Àü´ÞÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº ¿ø½Ã ÄÚµå ÆÄÀÏÀÇ ½ÃÀÛ ºÎºÐ¿¡ ÀÌ·¯ÇÑ »çÇ×À» Ãß°¡ÇÏ´Â °ÍÀÔ´Ï´Ù. °¢°¢ÀÇ ÆÄÀÏ¿¡´Â ÃÖ¼ÒÇÑ ÀúÀÛ±ÇÀ» ¸í½ÃÇÑ Çà°ú º» ÀÌ¿ëÇã¶ôÀÇ Àüü ³»¿ëÀ» Âü°íÇÒ ¼ö ÀÖ´Â À§Ä¡ Á¤º¸¸¦ ¸í½ÃÇØ¾ß ÇÕ´Ï´Ù. + +


+

+ + + + + + +
+ + + + + + +
+


+

+ÇÁ·Î±×·¥ÀÇ À̸§°ú ¿ëµµ¸¦ ÇÑ ÁÙ Á¤µµ·Î ¼³¸íÇÕ´Ï´Ù.
+Copyright (C) 20yy³â <ÇÁ·Î±×·¥ ÀúÀÛÀÚ À̸§> + +

+ÀÌ ÇÁ·Î±×·¥Àº ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾îÀÔ´Ï´Ù. ¼ÒÇÁÆ®¿þ¾î ÇÇÀÌ¿ëÇã¶ôÀÚ´Â ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀÌ °øÇ¥ÇÑ GNU GPL 2ÆÇ ¶Ç´Â ±× ÀÌÈÄ ÆÇÀ» ÀÓÀÇ·Î ¼±ÅÃÇØ, ±× ±ÔÁ¤¿¡ µû¶ó ÇÁ·Î±×·¥À» °³ÀÛÇϰųª Àç¹èÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. + +

+ÀÌ ÇÁ·Î±×·¥Àº À¯¿ëÇÏ°Ô »ç¿ëµÇ¸®¶ó´Â Èñ¸ÁÀ¸·Î ¹èÆ÷µÇÁö¸¸, ƯÁ¤ÇÑ ¸ñÀû¿¡ ¸Â´Â ÀûÇÕ¼º ¿©ºÎ³ª ÆǸſëÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â ¹¬½ÃÀûÀÎ º¸ÁõÀ» Æ÷ÇÔÇÑ ¾î¶°ÇÑ ÇüÅÂÀÇ º¸Áõµµ Á¦°øÇÏÁö ¾Ê½À´Ï´Ù. º¸´Ù ÀÚ¼¼ÇÑ »çÇ×Àº GNU GPLÀ» Âü°íÇϽñ⠹ٶø´Ï´Ù. + +

+GNU GPLÀº ÀÌ ÇÁ·Î±×·¥°ú ÇÔ²² Á¦°øµË´Ï´Ù. ¸¸¾à ÀÌ ¹®¼­°¡ ´©¶ôµÇ¾î ÀÖ´Ù¸é ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀ¸·Î ¹®ÀÇÇϽñ⠹ٶø´Ï´Ù(ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´Ü: Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA). +

+
+
+
+ +


+¶ÇÇÑ »ç¿ëÀÚ°¡ ÇÁ·Î±×·¥À» ¹èÆ÷ÇÑ »ç¶÷¿¡°Ô ÀüÀÚ¸ÞÀÏ°ú ¼­¸éÀ¸·Î ¿¬¶ôÇÒ ¼ö ÀÖ´Â Á¤º¸¸¦ Ãß°¡ÇØ¾ß ÇÕ´Ï´Ù. + +

+ÇÁ·Î±×·¥ÀÌ ¸í·É¾î ÀÔ·Â ¹æ½Ä¿¡ ÀÇÇÑ ´ëÈ­Çü ±¸Á¶¸¦ ÅÃÇÏ°í ÀÖ´Ù¸é, ÇÁ·Î±×·¥À» ´ëÈ­Çü ¹æ½ÄÀ¸·Î ½ÇÇàÇßÀ» ¶§ ´ÙÀ½ ÁÖÀÇ »çÇ×ÀÌ Ãâ·ÂµÇ¾î¾ß ÇÕ´Ï´Ù. + +


+

+ + + + + + +
+ + + + + + +
+


+

+Gnomovision version 69, Copyright (C) +20yy³â <ÇÁ·Î±×·¥ ÀúÀÛÀÚ À̸§> + +

+Gnomovision ÇÁ·Î±×·¥Àº Á¦Ç°¿¡ ´ëÇÑ ¾î¶°ÇÑ ÇüÅÂÀÇ º¸Áõµµ Á¦°øÇÏÁö ¾Ê½À´Ï´Ù. º¸´Ù ÀÚ¼¼ÇÑ »çÇ×Àº `show w' ¸í·ÉÀ» ½ÇÇàÇØ Âü°íÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÇÁ·Î±×·¥Àº ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾îÀÔ´Ï´Ù. ÀÌ ÇÁ·Î±×·¥Àº ¹èÆ÷ ±ÔÁ¤À» ¸¸Á·½ÃÅ°´Â Á¶°Ç ¾Æ·¡ ÀÚÀ¯·Ó°Ô Àç¹èÆ÷µÉ ¼ö ÀÖ½À´Ï´Ù. ¹èÆ÷ ±ÔÁ¤Àº `show c' ¸í·ÉÀ» ÅëÇØ Âü°íÇÒ ¼ö ÀÖ½À´Ï´Ù. +

+
+
+
+ +


+`show w'¿Í `show c'´Â GPLÀÇ ÇØ´ç ºÎºÐÀ» Ãâ·ÂÇϱâ À§ÇÑ °¡»óÀÇ ¸í·É¾îÀÔ´Ï´Ù. µû¶ó¼­ `show w'³ª `show c'°¡ ¾Æ´Ñ ´Ù¸¥ ÇüŸ¦ »ç¿ëÇصµ ¹«¹æÇϸç, ¸¶¿ì½º Ŭ¸¯À̳ª ¸Þ´º ¹æ½Ä°ú °°Àº ÇÁ·Î±×·¥¿¡ ÀûÇÕÇÑ ´Ù¸¥ Çü½ÄÀ» ÃëÇصµ ±¦Âú½À´Ï´Ù. + +

+¸¸¾à ÇÁ·Î±×·¥ ÀúÀÛÀÚ°¡ Çб³³ª ±â¾÷°ú °°Àº ´Üü³ª ±â°ü¿¡ °í¿ëµÇ¾î ÀÖ´Ù¸é ÇÁ·Î±×·¥ÀÇ ÀÚÀ¯·Î¿î ¹èÆ÷¸¦ À§ÇØ °í¿ëÁÖ³ª ÇØ´ç ±â°üÀåÀ¸·ÎºÎÅÍ ÇÁ·Î±×·¥¿¡ ´ëÇÑ ÀúÀÛ±Ç Æ÷±â °¢¼­¸¦ ¹Þ¾Æ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº Çü½ÄÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù(¾Æ·¡ ¹®±¸¸¦ ½ÇÁ¦·Î »ç¿ëÇÒ °æ¿ì¿¡´Â ¿¹·Î µç À̸§µéÀ» ½ÇÁ¦ À̸§À¸·Î ´ëüÇÏ¸é µË´Ï´Ù). + +


+

+ + + + + + +
+ + + + + + +
+


+

+º»»ç´Â Á¦ÀÓ½º ÇØÄ¿°¡ ¸¸µç (ÄÄÆÄÀÏ·¯¿¡¼­ Æнº¸¦ »ý¼ºÇÏ´Â) `Gnomovision' ÇÁ·Î±×·¥¿¡ °ü·ÃµÈ ¸ðµç ÀúÀÛ±ÇÀ» Æ÷±âÇÕ´Ï´Ù. + +

+1989³â 4¿ù 1ÀÏ
Yoyodye, Inc., +ºÎ»çÀå: Ty Coon
¼­¸í: Ty CoonÀÇ ¼­¸í +

+
+
+
+ +


+GNU GPLÀº ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î¸¦ µ¶Á¡ ¼ÒÇÁÆ®¿þ¾î¿Í ÇÔ²² °áÇÕÇÏ´Â °ÍÀ» Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù. ¸¸¾à ÀÛ¼ºµÈ ÇÁ·Î±×·¥ÀÌ ¼­ºê·çƾ ¶óÀ̺귯¸®ÀÏ °æ¿ì¿¡´Â µ¶Á¡ ¼ÒÇÁÆ®¿þ¾î°¡ ÇØ´ç ¶óÀ̺귯¸®¸¦ ¸µÅ©ÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇÏ´Â °ÍÀÌ º¸´Ù È¿°úÀûÀ¸·Î È°¿ëµÉ ¼ö ÀÖ´Â ¹æ¹ýÀ̶ó°í »ý°¢ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·± °æ¿ì¿¡´Â º» ÀÌ¿ëÇã¶ô ´ë½Å +GNU LGPLÀ» »ç¿ëÇÔÀ¸·Î½á ¼Ò±âÀÇ ¸ñÀûÀ» ÃæÁ·½Ãų ¼ö ÀÖ½À´Ï´Ù. + +

+


+

Software License

+

GNU GENERAL PUBLIC LICENSE

+

Version 2, June 1991

+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+

Preamble

+

The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too.

+

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.

+

To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.

+

For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.

+

We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.

+

Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.

+

Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.

+

The precise terms and conditions for copying, distribution and modification follow.

+

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

+

0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".

+

Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.

+

1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.

+

You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

+

2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

+
+
+
a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
+
+
b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
+
+
c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
+
+

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

+

Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.

+

In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

+

3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:

+ + + + +
+
+
a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+
b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+
c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
+
+

The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

+

If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.

+

4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

+

5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.

+

6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.

+

7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.

+

If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.

+

It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

+

This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

+

8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

+

9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

+

Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.

+

10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

+

NO WARRANTY

+

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

+

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

+

END OF TERMS AND CONDITIONS

+ + + + + diff --git a/src/docs/misc/Acknowledgements.htm b/src/docs/misc/Acknowledgements.htm new file mode 100644 index 0000000..5715185 --- /dev/null +++ b/src/docs/misc/Acknowledgements.htm @@ -0,0 +1,44 @@ + + +AutoHotkey Acknowledgements + + + + + + + +

°¨»çÀÇ ¸»

+

+ÀÌ¹Ì ¾ð±ÞÇÑ AutoIt ÀúÀÚµé ¿Ü¿¡µµ ¸¹Àº ºÐµéÀÌ ¼ö°íÇØ Áּ̽À´Ï´Ù:

+

+Robert Yaklin: Àû±ØÀûÀ¸·Î ¹ö±×¸¦ ¼Ô¾Æ³» Áּ̰í, ÈǸ¢ÇÑ ¼³Ä¡±âÀÇ ÃʾÈÀ» ÀÛ¼ºÇØ ÁÖ¼ÌÀ¸¸ç, »Ó¸¸ ¾Æ´Ï¶ó ¸í·É¾î°¡ ¾î¶»°Ô ÀÛµ¿ÇØ¾ß Çϴ°¡¿¡ °üÇÏ¿© Á¶¾ðÀ» ÇØ Áּ̽À´Ï´Ù:)

+

Jason Payam Ahdoot: ºÎµ¿ ¼Ò¼öÁ¡ ¼ö¸¦ ±â¼úÇÏ°í Á¦¾ÈÇØ Áּ̽À´Ï´Ù.

+

Jay D. Novak: Send ¸í·É¾î, Capslock, ±×¸®°í ÇÖÅ° ¼ö½ÄÀÚ¿Í °ü·ÃÇÏ¿© Win9x ¹®Á¦¸¦ ¹ß°ßÇÏ¿© Áּ̽À´Ï´Ù; ±×¸®°í °í¸¿°Ôµµ ±×ÀÇ Ç³¼ºÇÑ Äڵ带 °øÀ¯ÇØ Áּ̰í ÇÖÅ°¿Í ÇÖ½ºÆ®¸µ ±×¸®°í °¥°í¸® »ç¿ë¹ý°ú ŸÀÌÇÎ ¼Óµµ °³¼±¿¡ ´ëÇÑ ÁöÇý¸¦ ³ª´©¾î Áּ̽À´Ï´Ù.

+

Rajat: ¿ø·¡ÀÇ AHK ¾ÆÀÌÄÜÀ» ¸ÚÁø ¾ÆÀÌÄÜÀ¸·Î ±³Ã¼ÇØ Áּ̽À´Ï´Ù; ¸ÚÁø Á¦Ç° ·Î°í¸¦ Á¦°øÇØ Áּ̽À´Ï´Ù; TextPad¸¦ À§ÇÑ ÅؽºÆ® ±¸¹®À» Àç´ÜÇÏ¿© Áּ̽À´Ï´Ù; ·¹Áö½ºÆ®¸® ¸í·É¾î¿Í AutoIt v2 ȣȯ¼º¿¡ °ü·ÃµÈ ¹ö±×¸¦ ¹ß°ßÇÏ¿© Áּ̽À´Ï´Ù; SmartGUI Creator¸¦ ¸¸µé¾î Áּ̽À´Ï´Ù; ±âŸ µîµî ¸¹Àº °øÇåÀ» ÇÏ¿© Áּ̽À´Ï´Ù.

+

Thaddeus Beck (Beardboy): NT4¸¦ Å×½ºÆ®ÇØ GetKeyState¿Í Send ¸í·É¾î¸¦ ±³Á¤ÇØ Áּ̽À´Ï´Ù; Æ÷·³¿¡ ¸¹Àº µµ¿òÀ» Áּ̽À´Ï´Ù; ±×¸®°í ¸¹Àº Á¦¾È°ú ¹ö±× º¸°í¸¦ ÇÏ¿© Áּ̽À´Ï´Ù.

+

Gregory F. Hogg of Hogg's Software: SysGet ¸í·É¾î¿¡ ´ÙÁß ¸ð´ÏÅ͸¦ À§ÇÑ ¼Ò½º Äڵ带 ÀÛ¼ºÇÏ¿© Áּ̽À´Ï´Ù.

+

Aurelian Maga: ImageSearch¿Í ´õ ºü¸¥ PixelSearchÀÇ ¼Ò½º Äڵ带 ÀÛ¼ºÇÏ¿© Áּ̽À´Ï´Ù.

+

Joost Mulders: Ç¥Çö½ÄÀÇ ¹ÙÅÁÀÌ µÇ´Â ¼Ò½º Äڵ带 Á¦°øÇÏ¿© Áּ̽À´Ï´Ù.

+

Laszlo Hars: µ¥ÀÌÅÍ ±¸Á¶¿Í ¾Ë°í¸®Áò¿¡ °üÇÑ Á¶¾ðÀ» ÇÏ¿© Áּ̽À´Ï´Ù. ¹è¿­°ú µ¿Àû º¯¼öÀÇ ¼Óµµ¸¦ ±ØÀûÀ¸·Î ³ôÀ̴µ¥ µµ¿òÀÌ µÇ¾ú½À´Ï´Ù.

+

Marcus Sonntag (Ultra): DllCallÀ» ¿¬±¸, µðÀÚÀÎ, ÄÚµù, ±×¸®°í Å×½ºÆ®ÇØ Áּ̽À´Ï´Ù.

+

Gena Shimanovich: µð¹ö±ë°ú ÄÚµù Áö¿øÀ» ÇÏ¿© Áּ̽À´Ï´Ù; ¾ÕÀ¸·Î ¹Ì·¡ÀÇ Æ¯Â¡ÀÌ ±â¹ÝÇÒ ¼ö ÀÖµµ·Ï °í±ÞÀÇ ÇÁ·ÎÅäŸÀÔ ½ºÅ©¸³Æ®¸¦ Á¦°øÇÏ¿© Áּ̽À´Ï´Ù.

+

Eric Morin (numEric): ¼öÇп¡ °üÇÏ¿© Á¶¾ðÇÏ¿© Áּ̽À´Ï´Ù; OnMessage, ºÎµ¿ ¼Ò¼öÁ¡ ¼ö °è»ê, ±×¸®°í ¸¶¿ì½º À̵¿°ú °°Àº ¿µ¿ª¿¡ ºü¸£°Ô µð¹ö±ëÀ» ÇÏ¿© Áּ̽À´Ï´Ù; ±×¸®°í ÀüüÀûÀÎ Ç°ÁúÀ» Çâ»ó½ÃÄÑ Áּ̽À´Ï´Ù.

+

Philip Hazel: Perl-ȣȯÀÇ Á¤±Ô Ç¥Çö½Ä (PCRE)À» Á¦°øÇϼ̽À´Ï´Ù.

+

Titan/polyethene: autohotkey.net¿¡ °øµ¿Ã¼ È£½ºÆÃÀ» Á¦°øÇÏ¿© Áּ̰í, ¸¹Àº À¯¿ëÇÑ ½ºÅ©¸³Æ®¿Í ¶óÀ̺귯¸®¸¦ ¸¸µé¾î ÁÖ¼ÌÀ¸¸ç, ±×¸®°í ÀÚ¹Ù½ºÅ©¸³Æ®·Î Æ÷·³¿¡ ÄÚµå ÁÖ¼®¿¡ »ö±òÀ» ÀÔÇô Áֽô µî ¸¹Àº °øÇåÀ» ÇÏ¿© Áּ̽À´Ï´Ù.

+

Philippe Lhoste (PhiLho): Àû±ØÀûÀ¸·Î Æ÷·³¿¡ Áß¿ëÀ» ÁöÅ°°í Áö¿øÇÏ¿© Áּ̽À´Ï´Ù. RegEx¿¡ Á¶¾ð°ú Å×½ºÆ®, ±¸¹®°ú µðÀÚÀÎ ¾ÆÀ̵ð¾î ±×¸®°í ±âŸ µîµîÀ» °øÇåÇÏ¿© Áּ̽À´Ï´Ù.

+

John Biederman: ¹®¼­ÀÇ ¸ð½À°ú ÀÎü °øÇÐÀ» Å©°Ô °³¼±ÇÏ¿© Áּ̽À´Ï´Ù.

+

Jonathan Rennison (JGR): RegisterCallback()¸¦ °³¹ßÇÏ¿© Áּ̰í, °í¸¶¿î Á¶¾ðÀ» ÇØÁּ̽À´Ï´Ù.

+

Steve Gray (Lexikos): µ¿ÀûÀÎ ÇÔ¼ö È£Ãâ°ú ±âŸ »õ·Î¿î Ư¡µéÀ» °³¹ßÇØ Áּ̽À´Ï´Ù; ¹ö±×¸¦ ºÐ¼®ÇÏ°í °íÃÄÁּ̽À´Ï´Ù; ±×¸®°í Æ÷·ÒÀ» ¹æ¹®ÇÏ´Â ¼ö ¸¹Àº »ç¶÷µé¿¡°Ô ±ÍÁßÇÑ Áö¿ø°ú Á¶¾ðÀ» Á¦°øÇØ Áּ̽À´Ï´Ù.

+

AutoHotkey_L:

+

jackeiku: Unicode °³¹ß°ú ±âŸ »õ·Î¿î Ư¡ÀÇ °³¹ßÀ» Áö¿øÇØ Áּ̽À´Ï´Ù.

+

fincs: °íÀ¯ÀÇ 64-ºñÆ® Áö¿ø°ú try/catch/throw¸¦ °³¹ß, ±×¸®°í ±¸Çü ÄÄÆÄÀÏ·¯¸¦ ½ÅÇüÀ¸·Î ÀÛ¼ºÇØ Áּ̰í, ¹ö±×¸¦ ºÐ¼®ÇÏ°í ¼öÁ¤ÇØ Áּ̽À´Ï´Ù.

+

Sean: ³»Àå COM ±â´ÉÀ» °³¹ßÇÏ°í COM¿¡ ´ëÇÑ ±ÍÁßÇÑ ÅëÂûÀ» Á¦°øÇÏ¿© Áּ̽À´Ï´Ù.

+

TheGood: ¼³Ä¡ ½ºÅ©¸³Æ®¸¦ Àû¿ëÇÏ°í ¹®¼­¸¦ º´ÇÕÇØ Áּ̽À´Ï´Ù.

+

ac: #WarnÀ» °³¹ßÇØ Áּ̽À´Ï´Ù.

+

Russell Davis: A_PriorKey, ahk_path (WinTitle ¸Å°³º¯¼ö¿¡¼­ ahk_exe°¡ ÀÇÁ¸), #InputLevel ±×¸®°í SendLevel ¸¦ °³¹ßÇØ Áּ̽À´Ï´Ù.

+

Christian Sander: SysLink ÄÜÆ®·Ñ °³¹ßÀ» Áö¿øÇØ Áּ̽À´Ï´Ù.

+

 

+

±× ¹Û¿¡ ¹ö±×¸¦ º¸°íÇØ Áֽðí Á¦¾ÈÀ» ÇØ ÁֽŠ¸ðµç °øÇåÀÚ ¿©·¯ºÐ²² °¨»çÀÇ ¸»¾¸À» ÀüÇÕ´Ï´Ù: °í¸¿½À´Ï´Ù!

+ + diff --git a/src/docs/misc/Arrays.htm b/src/docs/misc/Arrays.htm new file mode 100644 index 0000000..e5d9590 --- /dev/null +++ b/src/docs/misc/Arrays.htm @@ -0,0 +1,101 @@ + + +Arrays + + + + + + + +

¹è¿­

+ +

¿¬°ü ¹è¿­ [AHK_L 31+]

+

Object()¸¦ È£ÃâÇϸé ÀÚ±â ÃæÁ·Àû ¿¬°ü ¹è¿­À» »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
; ¹è¿­À» »ý¼ºÇÕ´Ï´Ù. ÃÖÃÊ´Â ºñ¾î ÀÖ½À´Ï´Ù:
+Array := Object()
+
+; ¹è¿­¿¡ ¾¹´Ï´Ù:
+Loop, Read, C:\Guest List.txt ; ÀÌ È¸µ¹ÀÌ´Â ÆÄÀϷκÎÅÍ °¢ ÁÙÀ» ÇÑ ¹ø¿¡ Çϳª¾¿ ¿­¶÷ÇÕ´Ï´Ù.
+{
+    Array.Insert(A_LoopReadLine) ; ÀÌ ÁÙÀ» ¹è¿­¿¡ Ãß°¡ÇÕ´Ï´Ù.
+}
+
+; ¹è¿­·ÎºÎÅÍ ÀнÀ´Ï´Ù:
+; Loop % Array.MaxIndex()   ; Á» ÀüÅëÀûÀÎ Á¢±Ù¹ý.
+for index, element in Array ; ´ëºÎºÐÀÇ °æ¿ì ±ÇÀåÇÏ´Â Á¢±Ù¹ý.
+{
+    ; "Loop"¸¦ »ç¿ëÇϸé, À妽º´Â 1 ºÎÅÍ ¹è¿­ÀÇ ¿ø¼ÒÀÇ °³¼ö±îÁö.
+    ; ¿¬¼ÓÀûÀÎ ¼ýÀÚ°¡ µÇ¾î¾ß ÇÕ´Ï´Ù (¶Ç´Â ȸµ¹ÀÌ ¾È¿¡¼­ °è»êµÇ¾î¾ß ÇÕ´Ï´Ù).
+    ; MsgBox % "Element number " . A_Index . " is " . Array[A_Index]
+    
+    ; "for"¸¦ »ç¿ëÇϸé, À妽º (¶Ç´Â "Å°")¿Í ±×¿¡ ¿¬°üµÈ °ªÀÌ Á¦°øµË´Ï´Ù
+    ; ±×¸®°í À妽º´Â ¼±Åÿ¡ µû¶ó *¾î¶² °ªÀ̵ç* µÉ ¼ö ÀÖ½À´Ï´Ù.
+    MsgBox % "Element number " . index . " is " . element
+}
+

+ÀÌ Á¤µµ´Â °´Ã¼°¡ Á¦°øÇÏ´Â ±â´ÉÀÇ ÀϺθ¸ º¸¿©ÁÙ »ÓÀÔ´Ï´Ù . Ç׸ñÀ» ¼³Á¤, ¿­¶÷, »ðÀÔ, Á¦°Å ±×¸®°í ¿­°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹®ÀÚ¿­°ú °´Ã¼´Â ¼ýÀÚ¿Í ´õºÒ¾î Å°·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. °´Ã¼´Â °ªÀ¸·Î ´Ù¸¥ °´Ã¼¿¡ ÀúÀåÇÏ°í ÇÔ¼öÀÇ ¸Å°³º¯¼ö ¶Ç´Â ¹Ýȯ °ªÀ¸·Î °Ç³Ú ¼ö ÀÖ½À´Ï´Ù. °´Ã¼´Â ¶Ç »õ·Î¿î ±â´ÉÀ¸·Î È®ÀåÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+Insert()¿Í ¿­°ÅÀÚ´Â °¢ÀÚ ÀÚ½ÅÀÇ »ç¿ë¹ýÀÌ ÀÖÁö¸¸, ¾î¶² »ç¿ëÀÚ´Â ÀüÅëÀûÀÎ Á¢±Ù¹ýÀ» ´õ ½±°Ô »ý°¢ÇÕ´Ï´Ù:

+
+  ; °¢ ¹è¿­Àº »ç¿ëÇϱâ Àü¿¡ ÃʱâÈ­ÇØ¾ß ÇÕ´Ï´Ù:
+  Array := Object()
+
+; Array%j% := A_LoopField
+  Array[j] := A_LoopField
+
+; Array%j%_%k% := A_LoopReadLine
+  Array[j, k] := A_LoopReadLine
+
+  ArrayCount := 0                        
+  Loop, Read, C:\Guest List.txt
+  {
+      ArrayCount += 1
+    ; Array%ArrayCount% := A_LoopReadLine
+      Array[ArrayCount] := A_LoopReadLine
+  }
+
+  Loop %ArrayCount%
+  {
+    ; element := Array%A_Index%
+      element := Array[A_Index]
+    ; MsgBox % "Element number " . A_Index . " is " . Array%A_Index%
+      MsgBox % "Element number " . A_Index . " is " . Array[A_Index]
+  }
+
+

ArrayCount´Â ÆíÀǸ¦ À§ÇØ º¯¼ö·Î ³²°Ü µÎ¾úÁö¸¸, ¹è¿­ ÀÚü¿¡ Array.Count := n·Î ÀúÀåÇϰųª ¾Æ´Ï¸é Á¦°ÅÇÏ°í ±× ÀÚ¸®¿¡ Array._MaxIndex()¸¦ »ç¿ëÇصµ µË´Ï´Ù. ½ÃÀÛ À§Ä¡¸¦ 1 ¸»°í ´Ù¸¥ °ÍÀ¸·Î ÇÏ°í ½Í´Ù¸é, Array._MinIndex()¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

ÀÇ»ç-¹è¿­

+

+ÀÇ»ç ¹è¿­Àº ´ë´ÜÈ÷ °³³äÀûÀÔ´Ï´Ù: °¢ ¹è¿­Àº ½ÇÁ¦·Î ±×Àú ¿¬¼ÓÀûÀ¸·Î ¹øÈ£°¡ ºÙÀº, ±×¸®°í °¢°¢ ¹è¿­ÀÇ ¿ø¼Ò·Î ÀÎÁöµÇ´Â º¯¼ö³ª ÇÔ¼ö Áý´Ü¿¡ ºÒ°úÇÕ´Ï´Ù. ¿ÀÅäÇÖÅ°´Â ÀÌ ¿ø¼ÒµéÀ» ¾î¶² ½ÄÀ¸·Îµç Çϳª·Î ¿¬°áÇÏÁö ¾Ê½À´Ï´Ù.

+

+StringSplit°ú "WinGet List"°°Àº ¹è¿­-»ý¼º ¸í·É¾î ¸»°íµµ, OutputVar¸¦ ¹Þ´Â ¸í·É¾î³ª °ªÀ» º¯¼ö¿¡ ÇÒ´çÇÏ´Â ¸í·É¾î¶ó¸é ¹«¾ùÀÌµç ¹è¿­À» »ý¼ºÇϴµ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. °¡Àå °£´ÜÇÑ ¿¹´Â ¾Æ·¡¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ ÇÒ´ç ¿¬»êÀÚ (:=)ÀÔ´Ï´Ù:

+ +
Array%j% := A_LoopField
+

+´ÙÂ÷¿ø ¹è¿­Àº ¼±ÅÃÇÑ °¡¸§ ¹®ÀÚ¸¦ À妽º »çÀÌ¿¡ »ç¿ëÇÏ¸é °¡´ÉÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
Array%j%_%k% := A_LoopReadLine
+
+

+´ÙÀ½ ¿¹Á¦´Â ¹è¿­À» ¸¸µé°í Á¢±ÙÇÏ´Â ¹ýÀ» º¸¿©ÁÝ´Ï´Ù. ÀÌ °æ¿ì ¹è¿­Àº ÅؽºÆ®·ÎºÎÅÍ ¿­¶÷ÇÑ ÀÏ·ÃÀÇ À̸§ÀÔ´Ï´Ù:

+
; ¹è¿­¿¡ ¾²±â:
+ArrayCount = 0
+Loop, Read, C:\Guest List.txt   ; ÀÌ È¸µ¹ÀÌ´Â ÆÄÀϷκÎÅÍ ÇÑ ¹ø¿¡ Çϳª¾¿ °¢ ÁÙÀ» ¿­¶÷ÇÕ´Ï´Ù.
+{
+    ArrayCount += 1  ; ¹è¿­¿¡ ¾ó¸¶³ª ¸¹Àº Ç׸ñÀÌ ÀÖ´Â ÃßÀû °ü¸®ÇÕ´Ï´Ù.
+    Array%ArrayCount% := A_LoopReadLine  ; ÀÌ ÁÙÀ» ´ÙÀ½ ¹è¿­ ¿ø¼Ò¿¡ ÀúÀåÇÕ´Ï´Ù.
+}
+
+; ¹è¿­·ÎºÎÅÍ ÀнÀ´Ï´Ù:
+Loop %ArrayCount%
+{
+    ; ´ÙÀ½ ÁÙÀº := ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© ¹è¿­ ¿ø¼Ò¸¦ ¿­¶÷ÇÕ´Ï´Ù:
+    element := Array%A_Index%  ; A_Index´Â ³»Àå º¯¼öÀÔ´Ï´Ù.
+    ; ´Ù¸¥ ¹æ¹ýÀ¸·Î, "% " Á¢µÎ»ç¸¦ »ç¿ëÇÏ¿© MsgBox³ª ±âŸ ´Ù¸¥ ¸í·É¾î¸¦ Ç¥Çö½ÄÀ¸·Î ¸¸µì´Ï´Ù:
+    MsgBox % "Element number " . A_Index . " is " . Array%A_Index%
+}
+

+¹è¿­¿¡ °ü·ÃµÈ °³³äÀº NumPut()°ú NumGet()À» »ç¿ëÇØ ÀÌÁø ÇüÅÂÀÇ ¼ýÀÚ Áý´ÜÀ» ÀúÀåÇÏ°í ¿­¶÷ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀº ¼öÇ༺´É°ú ¸Þ¸ð¸® º¸ÀüÀÌ Áß¿äÇÑ °æ¿ì¿¡ µµ¿òÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù.

+ + + diff --git a/src/docs/misc/AutoIt2Compat.htm b/src/docs/misc/AutoIt2Compat.htm new file mode 100644 index 0000000..912b1c3 --- /dev/null +++ b/src/docs/misc/AutoIt2Compat.htm @@ -0,0 +1,41 @@ + + +AutoIt v2 Compatibility + + + + + + + +

AutoIt v2¿ÍÀÇ È£È¯¼º

+

+AutoHotkey v1.1.09 ÀÌÈÄ´Â AutoIt v2 (.aut) ½ºÅ©¸³Æ®¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ¿¹Àü ¹öÀüÀÇ ¿ÀÅäÇÖÅ°´Â ±âº» ¼³Á¤°ú ¾à°£ÀÇ ¸í·É¾îÀÇ ÇàÀ§¸¦ ¹Ù²Ù¾î¼­ AutoIt v2 ½ºÅ©¸³Æ®¸¦ Áö¿øÇÕ´Ï´Ù. ÀÌ ÆäÀÌÁö´Â ¹®¼­ÀÇ ´Ù¸¥ ÆäÀÌÁö·ÎºÎÅÍ Á¦°ÅµÈ Á¤º¸¸¦ ´ã°í ÀÖ½À´Ï´Ù.

+ +

´ÙÀ½Àº ¿ÀÁ÷ .aut ÆÄÀϸ¸ Áö¿øÇÕ´Ï´Ù. ±×¸®°í ¿ÀÁ÷ v1.1.08.01 ÀÌÀü ¹öÀü¿¡¼­¸¸ Áö¿øÇÕ´Ï´Ù.

+ + + + + + + + + + + + + + +
#AllowSameLineComments±âº»°ªÀ¸·Î, ÁÖ¼®Àº ¸í·É¾î¿Í °°Àº ÁÙ¿¡ Çã¿ëµÇÁö ¾Ê½À´Ï´Ù.
A_ScriptDir¸¶Áö¸· ¿ª»ç¼±À» Æ÷ÇÔÇÕ´Ï´Ù.
DetectHiddenText±âº»°ªÀº ²¨Á® ÀÖ½À´Ï´Ù.
#EscapeChar±âº»°ªÀº ¿ª»ç¼± (\)ÀÔ´Ï´Ù.
FileCopy ÆÄÀÏÀ» º¹»çÇÒ ¼ö ¾øÀ¸¸é ErrorLevelÀ» 1·Î ¼³Á¤ÇÕ´Ï´Ù.
IniDeleteErrorLevel´Â º¯ÇÏÁö ¾Ê½À´Ï´Ù.
IniReadDefault ¸Å°³º¯¼ö¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù; °ªÀ» Àдµ¥ ¹®Á¦°¡ ÀÖÀ¸¸é ¹®ÀÚ¿­ ERROR°¡ ¾ðÁ¦³ª OutputVar¿¡ ÀúÀåµË´Ï´Ù.
IniWriteErrorLevelÀº º¯ÇÏÁö ¾Ê½À´Ï´Ù.
InputBox»ç¿ëÀÚ°¡ CANCEL ¹öÆ°À» ´©¸£¸é, OutputVar¸¦ ºñ¿ó´Ï´Ù. ErrorLevelÀº ´ëÈ­»óÀÚ°¡ ½Ã°£ Á¦ÇÑ¿¡ °É¸®Áö ¾Ê´Â ÇÑ º¯ÇÏÁö ¾Ê½À´Ï´Ù.
SetBatchLines±âº»°ªÀº 1ÀÔ´Ï´Ù. ±× ¶§¹®¿¡ ½ºÅ©¸³Æ®°¡ ¸Å ÁÙ¸¶´Ù ÀáÀ» Àâ´Ï´Ù.
SetKeyDelayÀüÅëÀûÀÎ SendEvent ¸ðµå¿¡ ´ëÇÑ ±âº» Delay´Â 20ÀÔ´Ï´Ù.
Send¹®ÀÚ #Àº ¹«½ÃµË´Ï´Ù.
SplashTextOnHeight´Â âÀÇ Å¸ÀÌƲ ¹Ù¸¦ Æ÷ÇÔÇÕ´Ï´Ù.
+ +

ÇǽŠ¹®ÀÚ º¯È¯

+

+AutoHotkey v1.1.08.01 ÀÌÀü¿¡¼­ È®ÀåÀÚ .aut.ahk¸¦ °¡Áö°í ½ºÅ©¸³Æ® ÆÄÀÏÀ» ½ÇÇàÇÏ¸é ½ÇÇàÀÌ µÇÁö ¾Ê½À´Ï´Ù; ´ë½Å¿¡ ±× ½ºÅ©¸³Æ®¸¦ AutoIt v2 ±âº» ÇǽŠ¹®ÀڷκÎÅÍ (¿ª»ç¼±) ¿ÀÅäÇÖÅ°ÀÇ ±âº» ÇǽŠ¹®ÀÚ (¹éƽ)À¸·Î º¯È¯ÇÕ´Ï´Ù.

+ +

Æó±âµÈ ¸í·É¾îµé

+

+´ÙÀ½ ¸í·É¾î´Â ÀÚµ¿À¸·Î ¿ÀÅäÇÖÅ° ¸í·É¾î¿¡ »óÀÀÇÏ´Â ¸í·É¾î·Î º¯È¯µË´Ï´Ù (±×¸®°í ÀÌÀü¿¡´Â ÀÌ »ç½ÇÀÌ ¹®¼­¿¡ ¸í±âµÇ¾î ÀÖÁö ¾Ê¾Ò½À´Ï´Ù): LeftClick, LeftClickDrag, RightClick, RightClickDrag, HideAutoItWin, Repeat, EndRepeat. ÀÌ ÀÚµ¿ º¯È¯ ±â´ÉÀº v1.1.09¿¡¼­ Á¦°ÅµÇ¾ú½À´Ï´Ù.

+ + + diff --git a/src/docs/misc/CLSID-List.htm b/src/docs/misc/CLSID-List.htm new file mode 100644 index 0000000..fb18488 --- /dev/null +++ b/src/docs/misc/CLSID-List.htm @@ -0,0 +1,131 @@ + + + CLSID List (Windows Class Identifiers) + + + + + + + +

CLSID List (À©µµ¿ìÁî Ŭ·¡½º ½Äº°ÀÚ)

+

+¿î¿µÃ¼Á¦ ¾ÈÀÇ ¾î¶² Ư¼ö Æú´õ´Â À¯ÀÏÇÑ ¹®ÀÚ¿­·Î ½Äº°µË´Ï´Ù. ÀÌ ¹®ÀÚ¿­Àº FileSelectFile, FileSelectFolder, ±×¸®°í Run¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
FileSelectFile, OutputVar,, ::{645ff040-5081-101b-9f08-00aa002f954e}  ; ÈÞÁöÅë ¾È¿¡¼­ ÆÄÀÏ Çϳª¸¦ ¼±ÅÃÇÕ´Ï´Ù.
+FileSelectFolder, OutputVar, ::{20d04fe0-3aea-1069-a2d8-08002b30309d}  ; ³» ÄÄÇ»ÅÍ ¾È¿¡¼­ Æú´õ¸¦ Çϳª ¼±ÅÃÇÕ´Ï´Ù.
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CLSIDÀǹÌ/À§Ä¡Run Áö¿ø ¿©ºÎ?
::{d20ea4e1-3957-11d2-a40b-0c5020524153}°ü¸® µµ±¸ 
::{85bbd92o-42a0-1o69-a2e4-08002b30309d}¼­·ù°¡¹æ 
::{21ec2o2o-3aea-1o69-a2dd-08002b30309d}Á¦¾îÆÇ 
::{d20ea4e1-3957-11d2-a40b-0c5020524152}±Û²Ã 
::{ff393560-c2a7-11cf-bff4-444553540000}À̷ 
::{00020d75-0000-0000-c000-000000000046}¹ÞÀº ÆíÁöÇÔ 
::{00028b00-0000-0000-c000-000000000046}¸¶ÀÌÅ©·Î¼ÒÇÁÆ® ³×Æ®¿öÅ© 
::{20d04fe0-3aea-1069-a2d8-08002b30309d}³» ÄÄÇ»ÅÍYes
::{450d8fba-ad25-11d0-98a8-0800361b1103}³» ¹®¼­Yes
::{208d2c60-3aea-1069-a2d7-08002b30309d}³» ³×Æ®¿öÅ© À§Ä¡Yes
::{1f4de370-d627-11d1-ba4f-00a0c91eedba}³×Æ®¿öÅ© ÄÄÇ»ÅÍYes
::{7007acc7-3202-11d1-aad2-00805fc1270e}³×Æ®¿öÅ© Á¢¼ÓYes
::{2227a280-3aea-1069-a2de-08002b30309d}ÇÁ¸°ÅÍ¿Í ÆѽºYes
::{7be9d83c-a729-4d97-b5a7-1b7313c39e0a}ÇÁ·Î±×·¥ Æú´õ 
::{645ff040-5081-101b-9f08-00aa002f954e}¾²·¹±âÅëYes
::{e211b736-43fd-11d1-9efb-0000f8757fcd}½ºÄ³³Ê¿Í Ä«¸Þ¶ó 
::{d6277990-4c6a-11cf-8d87-00aa0060f5bf}ÀÏÁ¤Yes
::{48e7caab-b918-4e58-a94d-505519c795dc}½ÃÀÛ ¸Þ´º Æú´õ 
::{7bd29e00-76c1-11cf-9dd0-00a0c9034933}Àӽà ÀÎÅÍ³Ý ÆÄÀÏ 
::{bdeadf00-c265-11d0-bced-00a0c90ab50f}À¥ Æú´õ 
+

+¸¶Áö¸· Ä÷³¿¡ ÀÖ´Â "Yes" ¿£Æ®¸®µéÀº Àý´ëÀûÀÌ ¾Æ´Õ´Ï´Ù: Run ¸í·É¾î´Â ½Ã½ºÅÛ È¯°æ ±¸¼º¿¡ µû¶ó ´Ù¸¥ CLSID¸¦ Áö¿øÇÒ ¼öµµ ÀÖ½À´Ï´Ù. RunÀ» ÅëÇÏ¿© CLSID¸¦ ¿­·Á¸é, ±×³É ù ¸Å°³º¯¼ö·Î CLSID¸¦ ÁöÁ¤ÇÏ¸é µË´Ï´Ù. ¿¹¸¦ µé¾î:

+
Run ::{20d04fe0-3aea-1069-a2d8-08002b30309d}  ; "³» ÄÄÇ»ÅÍ" Æú´õ¸¦ ¿±´Ï´Ù.
+Run ::{645ff040-5081-101b-9f08-00aa002f954e}  ; ÈÞÁöÅëÀ» ¿±´Ï´Ù.
+Run ::{450d8fba-ad25-11d0-98a8-0800361b1103}\My Folder  ; "³» ¹®¼­" ¾È¿¡ Á¸ÀçÇÏ´Â Æú´õ¸¦ ¿±´Ï´Ù.
+Run %A_MyDocuments%\My Folder  ; ´ëºÎºÐÀÇ ½Ã½ºÅÛ¿¡¼­ À§¿Í °°½À´Ï´Ù.
+ + diff --git a/src/docs/misc/Clipboard.htm b/src/docs/misc/Clipboard.htm new file mode 100644 index 0000000..1891cb4 --- /dev/null +++ b/src/docs/misc/Clipboard.htm @@ -0,0 +1,84 @@ + + +Clipboard and ClipboardAll + + + + + + + +

Clipboard ±×¸®°í ClipboardAll

+ +

Clipboard´Â ³»Àå º¯¼ö·Î¼­ âÀÇ Å¬¸³º¸µåÀÇ ÇöÀç ³»¿ëÀ» ¹Ý¿µÇÕ´Ï´Ù. ±× ³»¿ëÀÌ ÅؽºÆ®·Î Ç¥Çö °¡´ÉÇÏ¸é ¸»ÀÔ´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, ClipboardAllÀº ±×¸²ÀÌµç ±¸Á¶Àû ÅؽºÆ®ÀÌµç ¹«¾ùÀ̵ç Ŭ¸³º¸µå¿¡ ´ãÀ» ¼ö ÀÖ½À´Ï´Ù.

+

Clipboard¿¡¼­ ÅؽºÆ®ÀÇ °¢ ÁÙÀº ÀüÇüÀûÀ¸·Î ij¸®Áö ¸®ÅÏ°ú ¶óÀÎÇǵå(CR+LF)·Î ³¡³³´Ï´Ù. ½ºÅ©¸³Æ®¿¡¼­´Â `r`nÀ¸·Î Ç¥ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù. (Ž»ö±â âÀ¸·ÎºÎÅÍ Control-C¸¦ ÅëÇÏ¿© º¹»çµÈ) ÆÄÀÏÀº ÅؽºÆ®·Î °£Áֵ˴ϴÙ: ½ºÅ©¸³Æ®¿¡¼­ Clipboard¸¦ ÂüÁ¶ÇÒ ¶§¸¶´Ù ÀÚµ¿À¸·Î (¿ÏÀüÇÑ °æ·Î¿Í ÇÔ²²) ±×ÀÇ ÆÄÀÏÀ̸§À¸·Î º¯È¯µË´Ï´Ù. +ÆÄÀÏÀ» Çϳª¾¿ ÃßÃâÇÏ·Á¸é ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:

+ +
Loop, parse, clipboard, `n, `r
+{
+    MsgBox, 4, , File number %A_Index% is %A_LoopField%.`n`nContinue?
+    IfMsgBox, No, break
+}
+

+ÆÄÀÏ À̸§À» ¾ËÆĺª ¼ø¼­·Î Á¤·ÄÇÏ·Á¸é, Sort ¸í·É¾î¸¦ »ç¿ëÇÕ´Ï´Ù. Ŭ¸³º¸µå¿¡ Á¸ÀçÇÏ´Â ÆÄÀÏ À̸§À» ÆÄÀÏ¿¡ ¾²·Á¸é, FileAppend, %clipboard%`r`n, C:\My File.txt¸¦ »ç¿ëÇÕ´Ï´Ù. ¾ó¸¶³ª ¿À·§µ¿¾È ½ºÅ©¸³Æ®°¡ Ŭ¸³º¸µå¸¦ ¿­·Á°í ½ÃµµÇÒ Áö º¯°æÇÏ·Á¸é -- ´Ù¸¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­ »ç¿ëÇÏ°í ÀÖ´Â °æ¿ì -- #ClipboardTimeOutÀ» »ç¿ëÇÕ´Ï´Ù.

+±âº» ¿¹Á¦: +
clipboard = my text   ; Ŭ¸³º¸µå¿¡ ¿ÏÀüÈ÷ »õ·Î¿î ³»¿ëÀ» ºÎ¿©ÇÕ´Ï´Ù.
+clipboard =   ; Empty the clipboard.
+clipboard = %clipboard%   ; º¹»çµÈ ÆÄÀÏ, HTML, ¶Ç´Â ±âŸ Çü½ÄÀÇ ÅؽºÆ®¸¦ Æò¹üÇÑ ÅؽºÆ®·Î º¯È¯ÇÕ´Ï´Ù.
+clipboard = %clipboard% Text to append.   ; ÅؽºÆ®¸¦ Ŭ¸³º¸µå¿¡ Ãß°¡ÇÕ´Ï´Ù.
+StringReplace, clipboard, clipboard, ABC, DEF, All   ; ABC°¡ ³ªÅ¸³ª¸é ¸ðµÎ DEF·Î ¹Ù²ß´Ï´Ù (¶Ç Ŭ¸³º¸µå¸¦ Æò¹üÇÑ ÅؽºÆ®·Î º¯È¯ÇÕ´Ï´Ù).
+ +

ClipWait¸¦ »ç¿ëÇÏ¿© ½ºÅ©¸³Æ®ÀÇ ½Å·Ú¼º ³ôÀ̱â:

+
clipboard =  ; ÅؽºÆ®°¡ µµÂøÇÒ ¶§¸¦ ŽÁöÇϵµ·Ï Çϱâ À§ÇØ ClipWait¸¦ ºñ¿î ä·Î ½ÃÀÛÇÕ´Ï´Ù. 
+Send ^c
+ClipWait  ; Ŭ¸³º¸µå¿¡ ÅؽºÆ®°¡ ´ã±â±â¸¦ ±â´Ù¸³´Ï´Ù.
+MsgBox Control-C ´ÙÀ½ ³»¿ëÀÌ Å¬¸³º¸µå¿¡ º¹»çµÇ¾ú½À´Ï´Ù:`n`n%clipboard%
+ +

ClipboardAll (Ŭ¸³º¸µå¿¡ ¹«¾ùÀ̵ç ÀúÀåÇÏ°í º¹±¸Çϱâ)

+

+ClipboardAllÀº Ŭ¸³º¸µå¿¡ ¹«¾ùÀÌµç ´ã½À´Ï´Ù (±×¸²°ú ±¸Á¶È­ ÅؽºÆ®). Ŭ¸³º¸µåÀÇ ³»¿ëÀ» ÀúÀåÇϴµ¥ ÁÖ·Î »ç¿ëµË´Ï´Ù. ½ºÅ©¸³Æ®°¡ Àӽ÷Π±× Ŭ¸³º¸µå¸¦ ¿¬»ê¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¬»êÀÌ ¿Ï·áµÇ¸é, ½ºÅ©¸³Æ®´Â ¿ø·¡ÀÇ Å¬¸³º¸µå ³»¿ëÀ» ¾Æ·¡¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ º¹±¸ÇÕ´Ï´Ù:

+
ClipSaved := ClipboardAll   ; Àüü Ŭ¸³º¸µå¸¦ ¿©·¯ºÐÀÇ º¯¼ö¿¡ ÀúÀåÇÕ´Ï´Ù.
+; ... ¿©±â¿¡¼­ Àӽ÷ΠŬ¸³º¸µå¸¦ »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î Transform Unicode¸¦ ÅëÇÏ¿© À¯´ÏÄÚµå ÅؽºÆ®¸¦ Çؼ®ÇÒ ¼ö ÀÖ½À´Ï´Ù ...
+Clipboard := ClipSaved   ; ¿ø·¡ Ŭ¸³º¸µå¸¦ º¹±¸ÇÕ´Ï´Ù. ( ClipboardAllÀÌ ¾Æ´Ï¶ó) ClipboardÀÇ »ç¿ë¿¡ ÁÖ¸ñÇϽʽÿÀ.
+ClipSaved =   ; Ŭ¸³º¸µå°¡ ¾ÆÁÖ Å« °æ¿ì ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÕ´Ï´Ù.
+

+ClipboardAll¸¦ ÆÄÀÏ¿¡ ÀúÀåÇÒ ¼öµµ ÀÖ½À´Ï´Ù (ÀÌ ¸ðµå¿¡¼­, FileAppend´Â ¾ðÁ¦³ª ±âÁ¸ÀÇ ÆÄÀÏÀ» µ¤¾î¾¹´Ï´Ù):

+
FileAppend, %ClipboardAll%, C:\Company Logo.clip ; ÆÄÀÏ È®ÀåÀÚ´Â ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù.
+

+³ªÁß¿¡ ´Ù½Ã ±× ÆÄÀÏÀ» Ŭ¸³º¸µå·Î (¶Ç´Â º¯¼ö ¾ÈÀ¸·Î) ÀûÀçÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:

+
FileRead, Clipboard, *c C:\Company Logo.clip ; *cÀÇ »ç¿ë¿¡ ÁÖ¸ñÇϽʽÿÀ. ¹Ýµå½Ã ÆÄÀÏÀ̸§ ¾Õ¿¡ ¿Í¾ß ÇÕ´Ï´Ù.
+ +

ÁÖÀÇ

+

+ClipboardAll´Â À§¿¡ ±â¼úµÈ ¹æ½Ä ¿Ü¿¡ ´Ù¸¥ ¹æ½ÄÀ¸·Î »ç¿ëµÇ¸é ºñ¾î ÀÖ½À´Ï´Ù. °Ô´Ù°¡, ClipboardAll´Â ½°Ç¥·Î-°¡¸¥ Ç¥Çö½Ä ¾È¿¡¼­ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. Áï, ClipSaved := ClipboardAll°ú °°ÀÌ ÇÑ ÁÙ¿¡ ÀÚü¸¸ ÇÒ´çÇØ¾ß ÇÕ´Ï´Ù.

+

+ClipboardAllÀÌ ÇÒ´çµÈ º¯¼ö´Â ÀÌÁø Çü½ÄÀÌ¸ç ±×·¡¼­ MsgBox°°Àº °ÍÀ¸·Î º¸¸é ¾²·¹±âó·³ º¸ÀÔ´Ï´Ù. ¶Ç, ÀÌÁø-Ŭ¸³º¸µå º¯¼ö (StringReplace¿Í °°Àº ¼ö´ÜÀ¸·Î) º¸Åë º¯¼ö·Î ȯ¿øÇϸé, °á°úÀûÀ¸·Î ±×ÀÇ Å¬¸³º¸µå µ¥ÀÌÅÍ°¡ ¼Ò½ÇµË´Ï´Ù. v1.0.46+¿¡¼­, ÀÌÁø-Ŭ¸³º¸µå º¯¼ö´Â °ªÀ¸·Î ÇÔ¼ö¿¡ °Ç³×µµ µË´Ï´Ù (ÀÌÀü¿¡´Â ByRef·Î¸¸ ÀÛµ¿Çß½À´Ï´Ù).

+

+ClipboardAllÀÌ Å¬¸³º¸µå¿¡¼­ Çϳª ÀÌ»óÀÇ µ¥ÀÌÅÍ °´Ã¼(±¸Á¶Àû ÅؽºÆ®)¸¦ ¿­¶÷ÇÒ ¼ö ¾øÀ¸¸é, ±×°ÍÀº »ý·«µÇÁö¸¸ ³ª¸ÓÁö °´Ã¼´Â ±×´ë·Î ÀúÀåµË´Ï´Ù.

+

+Ŭ¸³º¸µå µ¥ÀÌÅ͸¦ ´ã°í ÀÖ´Â º¯¼ö´Â ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ´Ù¸¥ º¯¼ö¿¡ º¹»çÇÒ ¼ö ÀÖ½À´Ï´Ù: ClipSaved2 := ClipSaved.

+

+ClipWaitÀ» »ç¿ëÇϸé Ŭ¸³º¸µå¿¡ µ¥ÀÌÅÍ°¡ ´ã±â´Â ¶§¸¦ ŽÁöÇÒ ¼ö ÀÖ½À´Ï´Ù (¼±ÅÃÀûÀ¸·Î ÅؽºÆ®-¾Æ´Ñ µ¥ÀÌÅÍ Æ÷ÇÔ).

+

StrLen / StringLen¸¦ »ç¿ëÇϸé ClipboardAllÀÌ ÇÒ´çµÈ º¯¼öÀÇ ÃÑ Å©±â¸¦ ¹ß°ßÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, À¯´ÏÄÚµå ¹öÀüÀÇ ÇÖÅ°¿¡¼­ ¹ÙÀÌÆ® ´ÜÀ§·Î ±× Å©±â¸¦ ¾òÀ¸·Á¸é, ±× Å©±â¿¡ 2¸¦ °öÇØ¾ß ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. A_IsUnicode¸¦ »ç¿ëÇϸé ANSI¿Í Unicode ¹öÀüÀ» ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¼±ÅÃÀûÀ¸·Î Áö¿øÇÒ ¼ö ÀÖ½À´Ï´Ù: size := StrLen(ClipSaved) * (A_IsUnicode ? 2 : 1).

+

+ClipboardAllÀÌ ÇÒ´çµÈ º¯¼ö´Â <> ±×¸®°í = ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© ´Ù¸¥ º¯¼ö¿Í ºñ±³ÇÒ ¼ö ÀÖ½À´Ï´Ù (±×·¯³ª Á÷Á¢ ClipboardAll°ú ºñ±³ÇÒ ¼ö´Â ¾ø½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­, °¢ º¯¼öÀÇ Å©±â¸¦ ¸ÕÀú Á¡°ËÇÕ´Ï´Ù. Å©±â°¡ ÃæºÐÇÏÁö ¾Ê¾Æ °áÁ¤ÇÒ ¼ö ¾øÀ¸¸é, ±× ³»¿ëÀ» ºñ±³ÇØ ½ÂºÎ¸¦ °áÁ¤ÁöÀ» ¼ö ÀÖ½À´Ï´Ù:

+ +
if ClipSaved1 <> %ClipSaved2%   ; ÀÌ°ÍÀº  ¿¹Àü ½ºÅ¸ÀÏÀÇ IF ¼­¼ú¹®ÀÔ´Ï´Ù. Ç¥Çö½ÄÀÌ ¾Æ´Õ´Ï´Ù.
+    MsgBox ÀúÀåµÈ µÎ °³ÀÇ Å¬¸³º¸µå°¡ ¼­·Î ´Ù¸¨´Ï´Ù.
+

+ClipboardAllÀ» º¯¼ö¿¡ ÀúÀåÇÏ´Â °ÍÀº #MaxMem¿¡ ¼³Á¤µÈ ¸Þ¸ð¸® ÇÑ°è¿¡ Á¦ÇÑÀ» ¹ÞÁö ¾Ê½À´Ï´Ù.

+

+ÀúÀåµÈ Ŭ¸³º¸µå ÆÄÀÏÀº ³»ºÎÀûÀ¸·Î 4 ¹ÙÀÌÆ® Æ÷¸Ë À¯Çü, ´ÙÀ½¿¡ 4 ¹ÙÀÌÆ® µ¥ÀÌÅÍ ºí·Ï Å©±â, ±× ´ÙÀ½¿¡ ±× Æ÷¸Ë¿¡ ´ëÇÑ µ¥ÀÌÅÍ ºí·ÏÀ¸·Î ±¸¼ºµË´Ï´Ù. Ŭ¸³º¸µå¿¡ Çϳª ÀÌ»óÀÇ Æ÷¸ËÀÌ µé¾î ÀÖ´Ù¸é (°ÅÀÇ ¸ðµç °æ¿ì¿¡ ±×·¸½À´Ï´Ù), ÀÌ ¼¼ °³ÀÇ Ç׸ñÀº ¸ðµç Æ÷¸ËÀÌ Æ÷Ç﵃ ¶§±îÁö ¹Ýº¹µË´Ï´Ù. ÆÄÀÏÀº 4 ¹ÙÀÌÆ® Æ÷¸Ë À¯ÇüÀÌ 0À¸·Î ³¡³³´Ï´Ù.

+

+¾Ë·ÁÁø ÇÑ°è: ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® ¿¢¼¿ÀÇ ¼¿ÀÌ Å¬¸³º¸µå¿¡ ÀÖÀ» ¶§ ClipboardAll¸¦ ¿­¶÷ÇÏ¸é ¿¢¼¿ÀÌ "ÇÁ¸°ÅÍ ¾øÀ½" ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÖ´Â ¹ö±×°¡ ÀÖ½À´Ï´Ù.

+

¿ÀÅäÇÖÅ°·Î ÀÛ¼ºµÈ Ŭ¸³º¸µå À¯Æ¿¸®Æ¼:

+
    +
  • Deluxe Clipboard: ¹«Á¦ÇÑ °³¼öÀÇ »çÀûÀÎ, À̸§ºÙÀº Ŭ¸³º¸µå¸¦ Á¦°øÇÕ´Ï´Ù. ¼±ÅÃµÈ ÅؽºÆ®¸¦ Copy, Cut, Paste, Append ¶Ç´Â CutAppend ÇÒ ¼ö ÀÖ½À´Ï´Ù. www.autohotkey.com/forum/topic2665.html
  • +
  • ClipStep: ¿©·¯ Ŭ¸³º¸µå¸¦ Á¦¾îÇÕ´Ï´Ù. ¿ÀÁ÷ Å°º¸µåÀÇ Ctrl-X-C-V ¸¸ »ç¿ëÇÕ´Ï´Ù. www.autohotkey.com/forum/topic4836.html
  • +
+ +

OnClipboardChange

+

OnClipboardChange¸¦ »ç¿ëÇÏ¸é ½ºÅ©¸³Æ®´Â Ŭ¸³º¸µåÀÇ ³»¿ëÀÌ º¯Çϸé ŽÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ + + diff --git a/src/docs/misc/ErrorLevel.htm b/src/docs/misc/ErrorLevel.htm new file mode 100644 index 0000000..4821a86 --- /dev/null +++ b/src/docs/misc/ErrorLevel.htm @@ -0,0 +1,27 @@ + + +ErrorLevel + + + + + + + +

ErrorLevel

+ +

¸í·É¾îÀÇ ¼º°ø ¿©ºÎ¸¦ ¾Ë¸®±â À§ÇØ ¼³Á¤µÇ´Â ³»Àå º¯¼ö ÀÔ´Ï´Ù (¸ðµç ¸í·É¾î°¡ ErrorLevelÀÇ °ªÀ» º¯°æÇÏ´Â °ÍÀº ¾Æ´Õ´Ï´Ù). °ªÀÌ 0ÀÌ¸é º¸Åë ¼º°øÀ» ³ªÅ¸³»°í, ´Ù¸¥ °ªÀº º¸Åë ½ÇÆи¦ ³ªÅ¸³À´Ï´Ù. ErrorLevelÀÇ °ªÀ» Á÷Á¢ ¼³Á¤Çصµ µË´Ï´Ù.

+

+RunWait°¡ ÀÚ½ÅÀÌ ½ÇÇàÇÑ ÇÁ·Î±×·¥ÀÇ Á¾·á Äڵ尡 µÇµµ·Ï ErrorLevel¸¦ ¼³Á¤ÇÏ´Â °ÍÀº Ưº°È÷ Èï¹Ì·Ó½À´Ï´Ù. ´ëºÎºÐÀÇ ÇÁ·Î±×·¥Àº ¼º°øÀûÀ¸·Î ¿Ï·áÇϸé Á¾·á Äڵ带 0À¸·Î »êÃâÇÕ´Ï´Ù.

+

+°¢ ¾²·¹µå¸¶´Ù ÀÚ½ÅÀÇ ErrorLevelÀ» º¸À¯ÇÕ´Ï´Ù. ÇöÀç ¾²·¹µå°¡ ´Ù¸¥ ¾²·¹µå¿¡ ÀÇÇØ ÀÎÅÍ·´Æ® µÇ´õ¶óµµ, ¿ø·¡ ¾²·¹µå°¡ Àç°³Çϸé, ¿©ÀüÈ÷ ÀÚ½ÅÀÇ ¿ø·¡ ErrorLevelÀ» º¸À¯ÇÕ´Ï´Ù. ÀÎÅÍ·´Æ® ÇÑ ¾²·¹µå°¡ ¼³Á¤ÇÑ ErrorLevelÀÌ ¾Æ´Ï¶ó´Â ¶æÀÔ´Ï´Ù.

+

+ÁÖÀÇ: ¾î¶² ¸í·É¾î´Â ErrorLevel¿¡ 1º¸´Ù Å« °ªÀ» ¼³Á¤ÇϹǷÎ, ErrorLevelÀÌ 1Àΰ¡¸¦ Á¡°ËÇÏÁö ¸»°í, ´ë½Å¿¡ ErrorLevelÀÌ 0ÀÌ ¾Æ´Ñ°¡¸¦ Á¡°ËÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.

+

¿¹Á¦

+
WinWait, MyWindow, , 1
+if ErrorLevel   ; Áï, ºñ¾î ÀÖÁö ¾Ê°Å³ª 0À̸é.
+    MsgBox, âÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.
+else
+    MsgBox, âÀÌ Á¸ÀçÇÕ´Ï´Ù.
+ + diff --git a/src/docs/misc/FontsStandard.htm b/src/docs/misc/FontsStandard.htm new file mode 100644 index 0000000..6258afc --- /dev/null +++ b/src/docs/misc/FontsStandard.htm @@ -0,0 +1,822 @@ + + + Standard Windows Fonts + + + + + + + +

Ç¥ÁØ À©µµ¿ìÁî ±Û²Ã

+

Progress, GUI, ±×¸®°í SplashImage ¸í·É¾î¿¡ »ç¿ëÇÕ´Ï´Ù.

+

±ÇÀå ±Û²ÃÀº ³ë¶õ»öÀ¸·Î °­Á¶ÇÏ¿´½À´Ï´Ù.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
±Û²Ã À̸§Win95WinNTWin98Win2000WinMeWinXP
Abadi MT Condensed Light

x


Arialxxxxxx
Arial Alternative Regular



x
Arial Alternative Symbol



x
Arial Black

xxxx
Arial Boldxxxxxx
Arial Bold +Italicxxxxxx
Arial Italicxxxxxx
Book Antiqua

x


Calisto MT

x


Century Gothic

x


Century Gothic Bold

x


Century Gothic Bold Italic

x


Century Gothic Italic

x


Comic Sans MS

xxx
Comic Sans MS Bold

xxxx
Copperplate Gothic Bold

x


Copperplate Gothic Light

x


Courierxxxxxx
Courier Newxxxxxx
Courier New Boldxxxxxx
Courier New Bold Italicxxxxxx
Courier New Italicxxxxxx
Estrangelo Edessa




x
Franklin Gothic Medium




x
Franklin Gothic Medium Italic



x
Gautami




x
Georgia


x
x
Georgia Bold


x
x
Georgia Bold Italic


x
x
Georgia Italic


x
x
Georgia Italic Impact




x
Impact

xxx
Latha




x
Lucida Console
xxxxx
Lucida Handwriting Italic

x


Lucida Sans Italic

x


Lucida Sans Unicode

xx
x
Marlett

x
x
Matisse ITC

x


Modernxxxx

Modern MS Sans Serif




x
MS Sans Serifxxxxxx
MS Serifxxxxx
Mv Boli




x
News Gothic MT

x


News Gothic MT Bold

x


News Gothic MT Italic

x


OCR A Extended

x


Palatino Linotype


x
x
Palatino Linotype Bold


x
x
Palatino Linotype Bold Italic

x
x
Palatino Linotype Italic


x
x
Roman
x
x
x
Script
x
x
x
Small Fonts
x
x
x
Smallfontsx
x
x
Symbolxxxxxx
Tahoma

xxxx
Tahoma Bold

xxxx
Tempus Sans ITC

xx

Times New Romanxxxxxx
Times New Roman Boldxxxxxx
Times New Roman Bold Italicxxxxxx
Times New Roman Italicxxxxxx
Trebuchet



x
Trebuchet Bold



x
Trebuchet Bold Italic



x
Trebuchet Italic



x
Trebuchet MS


x
x
Trebuchet MS Bold


x
x
Trebuchet MS Bold Italic


x
x
Trebuchet MS Italic


x
x
Tunga




x
Verdana (included with MSIE 3+)

xxxx
Verdana Bold

xxxx
Verdana Bold Italic

xxxx
Verdana Italic

xxxx
Webdings

xxxx
Westminster

x
xx
Wingdingsxx
x
x
WST_Czech




x
WST_Engl




x
WST_Fren




x
WST_Germ




x
WST_Ital




x
WST_Span




x
WST_Swed




x
+ +
+ÀÌ ¸ñ·ÏÀº KaysKreations ±×¸®°í AutoIt TeamÀÌ ÆíÁýÇß½À´Ï´Ù. + + diff --git a/src/docs/misc/Labels.htm b/src/docs/misc/Labels.htm new file mode 100644 index 0000000..bf5ba3a --- /dev/null +++ b/src/docs/misc/Labels.htm @@ -0,0 +1,63 @@ + + +Labels + + + + + + + +

¶óº§

+

¶óº§Àº ÄÚµå ÇÑ ÁÙÀ» ½Äº°ÇÕ´Ï´Ù. GotoÀÇ ¸ñÇ¥³ª ¼­ºê·çƾÀ» Çü¼ºÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+
LabelName:
+

+¶óº§À» ¸¸µé·Á¸é, À§¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ ¶óº§ À̸§ ´ÙÀ½¿¡ ½ÖÁ¡À» Àû½À´Ï´Ù. °ø¹é¹®ÀÚ¿Í ÁÖ¼® ¿Ü¿¡, ´Ù¸¥ ÄÚµå´Â °°Àº ÁÙ¿¡ ¾µ ¼ö ¾ø½À´Ï´Ù.

+

À̸§: ¶óº§ À̸§Àº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾ÊÀ¸¸ç, ½ºÆäÀ̽º³ª ÅÇ ±×¸®°í ½°Ç¥¿Í ÇǽŠ¹®ÀÚ (`)¸¦ Á¦¿ÜÇÏ°í ¾î¶² ¹®Àڷεµ ±¸¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ½ºÅ¸ÀÏ °ü·Ê ¶§¹®¿¡, ÀϹÝÀûÀ¸·Î ¿ÀÁ÷ ±âÈ£¿Í ¼ýÀÚ ±×¸®°í ¹ØÁÙ ¹®ÀÚ¸¦ »ç¿ëÇÏ´Â ÆíÀÌ ÁÁ½À´Ï´Ù (¿¹¸¦ µé¾î: MyListView, Menu_File_Open, and outer_loop). ¶óº§ À̸§Àº Àüü ½ºÅ©¸³Æ®¸¦ ÅëÇØ À¯ÀÏÇØ¾ß ÇÕ´Ï´Ù.

+

+¿¹¾àµÈ À̸§Àº ¾øÁö¸¸, ´ÙÀ½ À̸§Àº »ç¿ëÇÏÁö ¾Ê±â¸¦ °­·ÂÇÏ°Ô ±Ç°íÇÕ´Ï´Ù: On, Off, Toggle, AltTab, ShiftAltTab, AltTabAndMenu ±×¸®°í AltTabMenuDismiss. ÀÌ·± °ªµéÀº Hotkey ¸í·É¾î¿¡ Ưº°ÇÑ Àǹ̰¡ ÀÖ½À´Ï´Ù.

+

¸ñÇ¥: ¶óº§ÀÇ ¸ñÇ¥´Â ½ÇÇà ÄÚµåÀÇ ´ÙÀ½ ÁÙÀÔ´Ï´Ù. ½ÇÇà Äڵ忡´Â ¸í·É¾î, ÇÒ´ç, Ç¥Çö½Ä ±×¸®°í ºí·ÏÀÌ ´ã±æ ¼ö ÀÖÁö¸¸, Áö½Ã¾î³ª ¶óº§, ÇÖÅ°¿Í ÇÖ½ºÆ®¸µÀº ¾ÈµË´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­, run_notepad¿Í #n´Â ¸ðµÎ Run ¶óÀÎÀ» °¡¸®Åµ´Ï´Ù:

+
run_notepad:
+#n::
+    Run Notepad
+    return
+
+

½ÇÇà: Áö½Ã¾îó·³, ¶óº§Àº Á¤»ó ½ÇÇà È帧¿¡ µµ´ÞÇÏ¸é ¾Æ¹« È¿°úµµ ¾ø½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­ ¸Þ½ÃÁö ¹Ú½º´Â µÎ¹ø ³ªÅ¸³³´Ï´Ù - ÇÑ ¹øÀº Gosub¿¡ ÀÇÇÑ ¼­ºê·çƾÀÇ ½ÇÇà µ¿¾È¿¡, ±×¸®°í ´Ù½Ã ¼­ºê·çƾÀÌ ¹ÝȯµÈ ÈÄ¿¡ ³ªÅ¸³³´Ï´Ù:

+
gosub Label1
+
+Label1:
+MsgBox %A_ThisLabel%
+return
+ +

¼­ºê·çƾ

+

+¼­ºê·çƾÀº ƯÁ¤ÇÑ ÀÛ¾÷À» À§ÇØ È£ÃâÇÒ ¼ö ÀÖ´Â ÄÚµå ÀϺÎÀÔ´Ï´Ù. ¼­ºê·çƾÀÇ ½ÇÇàÀº ¶óº§ÀÌ ¸ñÇ¥¿¡¼­ ½ÃÀÛÇؼ­ ReturnÀ̳ª ExitÀ» ¸¸³¯ ¶§±îÁö °è¼ÓµË´Ï´Ù. ¼­ºê·çƾÀÇ Á¾·á´Â ½ÇÇà È帧¿¡ ´Þ·Á Àֱ⠶§¹®¿¡, ¾î¶² ¶óº§À̵ç Goto ¸ñÇ¥¿Í ¼­ºê·çƾÀÇ ½ÃÀÛÀ¸·Î ÇàÀ§ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

µ¿ÀûÀÎ ¶óº§

+

+¶óº§À» ¹Þ´Â ¸¹Àº ¸í·É¾îµéÀº ¶Ç %MyLabel%¿Í °°ÀÌ º¯¼ö ÂüÁ¶µµ ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì º¯¼ö¿¡ ÀúÀåµÈ À̸§ÀÌ ¸ñÇ¥·Î »ç¿ëµË´Ï´Ù. ±×·¸Áö¸¸, ¼öÇ༺´ÉÀº ¾à°£ °¨¼ÒÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ½ºÅ©¸³Æ®°¡ óÀ½ ÀûÀçµÉ ¶§ ÇÑ ¹øÀÌ ¾Æ´Ï¶ó ¸ñÇ¥¸¦ ¸Å¹ø "ã¾Æ º¸¾Æ¾ß"Çϱ⠶§¹®ÀÔ´Ï´Ù.

+ +

ÇÖÅ°¿Í ÇÖ½ºÆ®¸µ

+

ÇÖÅ°¿Í ÇÖ½ºÆ®¸µ ¶óº§µµ Goto, Gosub ±×¸®°í ±âŸ ¸í·É¾î¿¡ ´ëÇÏ¿© À¯È¿ÇÕ´Ï´Ù. ±×·¸Áö¸¸, ÇÖÅ°³ª ÇÖ½ºÆ®¸µ¿¡ ¿©·¯ º¯Á¾ÀÌ ÀÖ´Ù¸é, ½ºÅ©¸³Æ®ÀÇ »ó´Ü¿¡ Á¦ÀÏ °¡±î¿î º¯Á¾ÀÌ »ç¿ëµË´Ï´Ù. ÇÖÅ°ÀÇ ¼ö½ÄÀÚ³ª ÇÖ½ºÆ®¸µÀÇ ¿É¼ÇÀº ¸ðµÎ ¶óº§ÀÇ À̸§ÀÇ ÀϺÎÀÔ´Ï´Ù. ±×·¯³ª ¸¶Áö¸· °ã-½ÖÁ¡ (::)Àº »ý·«ÇÕ´Ï´Ù.

+ +

À̸§Àִ ȸµ¹ÀÌ

+

+¶óº§Àº ¶Ç Continue¿Í Break ¸í·É¾î¿¡ ´ëÇÏ¿© ȸµ¹À̸¦ ½Äº°ÇÏ´Â µ¥¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ½ºÅ©¸³Æ®´Â ½±°Ô ±íÀÌ¿¡ »ó°ü¾øÀÌ ³»Æ÷ ȸµ¹À̸¦ °è¼ÓÇϰųª ºüÁ® ³ª¿Ã ¼ö ÀÖ½À´Ï´Ù.

+ +

ÇÔ¼ö

+

[v1.1.20] ÀÌÈÄ¿¡, ÇÔ¼ö´Â ¸¹Àº °æ¿ì ¶óº§À» ´ë½ÅÇØ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿©±â¿¡´Â:

+ +

+

ÇÔ¼öÀÇ ÇýÅÃÀº Áö¿ª º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. (Gui Á¦¾î À̺¥Æ®¿Í °°ÀÌ) ¾î¶² °æ¿ì À¯¿ëÇÑ Á¤º¸¸¦ ´ã°í ÀÖ´Â ¸Å°³º¯¼ö¸¦ ¹Þ±âµµ ÇÕ´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+

IsLabel(), A_ThisLabel, Gosub, Goto, OnExit, SetTimer, Hotkey, Gui Events, g-label, OnClipboardChange

+ + + diff --git a/src/docs/misc/Languages.htm b/src/docs/misc/Languages.htm new file mode 100644 index 0000000..9e6bb3b --- /dev/null +++ b/src/docs/misc/Languages.htm @@ -0,0 +1,149 @@ + + + Language Codes + + + + + + + +

¾ð¾î ÄÚµå

+ +

´ÙÀ½ ¸ñ·ÏÀº °¢ ¾ð¾î Äڵ忡 »óÀÀÇÏ´Â ¾ð¾î À̸§À» ´ã°í ÀÖ½À´Ï´Ù. A_Language º¯¼ö¿¡ ÇÒ´çµË´Ï´Ù. ¾ð¾î ÄÚµå ÀÚü´Â ¾Æ·¡¿¡¼­ µîÈ£ »çÀÎÀÇ ¿ÞÂÊ¿¡¼­ µÚ ³× °³ÀÇ ¼ýÀÚÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, A_Language¿¡ 0436ÀÌ ´ã°Ü ÀÖ´Ù¸é, ½Ã½ºÅÛÀÇ ±âº» ¾ð¾î´Â AfrikaansÀÔ´Ï´Ù. ÁÖÀÇ: Äڵ忡 ±âÈ£°¡ Æ÷ÇÔµÇ¸é ´ë¹®ÀÚ³ª ¼Ò¹®ÀÚ »ó°ü¾ø½À´Ï´Ù.

+

+A_Language¸¦ ¾Æ·¡ÀÇ ³× ÀÚ¸® ÄÚµå¿Í Á÷Á¢ÀûÀ¸·Î ºñ±³ÇÒ ¼ö ÀÖ½À´Ï´Ù; ¿¹¸¦ µé¾î: if (A_Language = "0436"). ´ë¾ÈÀ¸·Î, Àüü ¸®½ºÆ®¸¦ ½ºÅ©¸³Æ® ¾È¿¡ º¹»çÇØ ³Ö°í ÇöÀç ¾ð¾îÀÇ À̸§¿¡ Á¢±ÙÇÕ´Ï´Ù. ¸®½ºÆ® ¾Æ·¡ÀÇ ¿¹Á¦¿¡ º¸¿©ÁÖ´Â °Íó·³ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù.

+
languageCode_0436 = Afrikaans
+languageCode_041c = Albanian
+languageCode_0401 = Arabic_Saudi_Arabia
+languageCode_0801 = Arabic_Iraq
+languageCode_0c01 = Arabic_Egypt
+languageCode_0401 = Arabic_Saudi_Arabia
+languageCode_0801 = Arabic_Iraq
+languageCode_0c01 = Arabic_Egypt
+languageCode_1001 = Arabic_Libya
+languageCode_1401 = Arabic_Algeria
+languageCode_1801 = Arabic_Morocco
+languageCode_1c01 = Arabic_Tunisia
+languageCode_2001 = Arabic_Oman
+languageCode_2401 = Arabic_Yemen
+languageCode_2801 = Arabic_Syria
+languageCode_2c01 = Arabic_Jordan
+languageCode_3001 = Arabic_Lebanon
+languageCode_3401 = Arabic_Kuwait
+languageCode_3801 = Arabic_UAE
+languageCode_3c01 = Arabic_Bahrain
+languageCode_4001 = Arabic_Qatar
+languageCode_042b = Armenian
+languageCode_042c = Azeri_Latin
+languageCode_082c = Azeri_Cyrillic
+languageCode_042d = Basque
+languageCode_0423 = Belarusian
+languageCode_0402 = Bulgarian
+languageCode_0403 = Catalan
+languageCode_0404 = Chinese_Taiwan
+languageCode_0804 = Chinese_PRC
+languageCode_0c04 = Chinese_Hong_Kong
+languageCode_1004 = Chinese_Singapore
+languageCode_1404 = Chinese_Macau
+languageCode_041a = Croatian
+languageCode_0405 = Czech
+languageCode_0406 = Danish
+languageCode_0413 = Dutch_Standard
+languageCode_0813 = Dutch_Belgian
+languageCode_0409 = English_United_States
+languageCode_0809 = English_United_Kingdom
+languageCode_0c09 = English_Australian
+languageCode_1009 = English_Canadian
+languageCode_1409 = English_New_Zealand
+languageCode_1809 = English_Irish
+languageCode_1c09 = English_South_Africa
+languageCode_2009 = English_Jamaica
+languageCode_2409 = English_Caribbean
+languageCode_2809 = English_Belize
+languageCode_2c09 = English_Trinidad
+languageCode_3009 = English_Zimbabwe
+languageCode_3409 = English_Philippines
+languageCode_0425 = Estonian
+languageCode_0438 = Faeroese
+languageCode_0429 = Farsi
+languageCode_040b = Finnish
+languageCode_040c = French_Standard
+languageCode_080c = French_Belgian
+languageCode_0c0c = French_Canadian
+languageCode_100c = French_Swiss
+languageCode_140c = French_Luxembourg
+languageCode_180c = French_Monaco
+languageCode_0437 = Georgian
+languageCode_0407 = German_Standard
+languageCode_0807 = German_Swiss
+languageCode_0c07 = German_Austrian
+languageCode_1007 = German_Luxembourg
+languageCode_1407 = German_Liechtenstein
+languageCode_0408 = Greek
+languageCode_040d = Hebrew
+languageCode_0439 = Hindi
+languageCode_040e = Hungarian
+languageCode_040f = Icelandic
+languageCode_0421 = Indonesian
+languageCode_0410 = Italian_Standard
+languageCode_0810 = Italian_Swiss
+languageCode_0411 = Japanese
+languageCode_043f = Kazakh
+languageCode_0457 = Konkani
+languageCode_0412 = Korean
+languageCode_0426 = Latvian
+languageCode_0427 = Lithuanian
+languageCode_042f = Macedonian
+languageCode_043e = Malay_Malaysia
+languageCode_083e = Malay_Brunei_Darussalam
+languageCode_044e = Marathi
+languageCode_0414 = Norwegian_Bokmal
+languageCode_0814 = Norwegian_Nynorsk
+languageCode_0415 = Polish
+languageCode_0416 = Portuguese_Brazilian
+languageCode_0816 = Portuguese_Standard
+languageCode_0418 = Romanian
+languageCode_0419 = Russian
+languageCode_044f = Sanskrit
+languageCode_081a = Serbian_Latin
+languageCode_0c1a = Serbian_Cyrillic
+languageCode_041b = Slovak
+languageCode_0424 = Slovenian
+languageCode_040a = Spanish_Traditional_Sort
+languageCode_080a = Spanish_Mexican
+languageCode_0c0a = Spanish_Modern_Sort
+languageCode_100a = Spanish_Guatemala
+languageCode_140a = Spanish_Costa_Rica
+languageCode_180a = Spanish_Panama
+languageCode_1c0a = Spanish_Dominican_Republic
+languageCode_200a = Spanish_Venezuela
+languageCode_240a = Spanish_Colombia
+languageCode_280a = Spanish_Peru
+languageCode_2c0a = Spanish_Argentina
+languageCode_300a = Spanish_Ecuador
+languageCode_340a = Spanish_Chile
+languageCode_380a = Spanish_Uruguay
+languageCode_3c0a = Spanish_Paraguay
+languageCode_400a = Spanish_Bolivia
+languageCode_440a = Spanish_El_Salvador
+languageCode_480a = Spanish_Honduras
+languageCode_4c0a = Spanish_Nicaragua
+languageCode_500a = Spanish_Puerto_Rico
+languageCode_0441 = Swahili
+languageCode_041d = Swedish
+languageCode_081d = Swedish_Finland
+languageCode_0449 = Tamil
+languageCode_0444 = Tatar
+languageCode_041e = Thai
+languageCode_041f = Turkish
+languageCode_0422 = Ukrainian
+languageCode_0420 = Urdu
+languageCode_0443 = Uzbek_Latin
+languageCode_0843 = Uzbek_Cyrillic
+languageCode_042a = Vietnamese
+
+the_language := languageCode_%A_Language%  ; ½Ã½ºÅÛÀÇ ±âº» ¾ð¾î À̸§À» ¾ò½À´Ï´Ù.
+MsgBox %the_language%  ; ±× ¾ð¾î À̸§À» È­¸é¿¡ º¸¿©ÁÝ´Ï´Ù.
+ + diff --git a/src/docs/misc/Macros.htm b/src/docs/misc/Macros.htm new file mode 100644 index 0000000..47b06ea --- /dev/null +++ b/src/docs/misc/Macros.htm @@ -0,0 +1,37 @@ + + +Creating a Keyboard Macro or Mouse Macro + + + + + + + + + +

Å°º¸µå ¸ÅÅ©·Î³ª ¸¶¿ì½º ¸ÅÅ©·Î ¸¸µé±â

+ +

+¸ÅÅ©·Î´Â ¿ä±¸Çϸé "Ç÷¹À̵ǴÂ" ½ºÅ©¸³Æ®µÈ ÀÏ·ÃÀÇ Á¶Ä¡ÀÔ´Ï´Ù; °¡Àå ÈçÇÑ ¸ÅÅ©·Î Á¶Ä¡´Â Çϳª ÀÌ»óÀÇ Ã¢¿¡ Èä³»³½ Å°´­¸² ±×¸®°í ¸¶¿ì½º Ŭ¸¯À» Àü¼ÛÇÏ´Â °ÍÀÔ´Ï´Ù. ±×·± âÀº °¢ Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯¿¡ ¸¶Ä¡ ¿©·¯ºÐÀÌ ¼Õ¼ö ¼öÇàÇÑ °Íó·³ ¹ÝÀÀÇÕ´Ï´Ù. ±×·¯¹Ç·Î ¹Ýº¹ ÀÛ¾÷À» ºü¸£°Ô ±×¸®°í ½Å·Ú¼º ÀÖ°Ô ÀÚµ¿È­ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+¸ÅÅ©·Î´Â ¼ÕÀ¸·Î ÀÛ¼ºÇÒ ¼ö ÀÖÁö¸¸, ±â´Ù¶õ ¸ÅÅ©·Î¸¦ ÀÛ¼ºÇÏ·Á¸é ¸ÅÅ©·Î ·¹ÄÚ´õÀÇ µµ¿òÀ» ¹ÞÀº ÆíÀÌ ½¬¿ï °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î Titan/polyethene°¡ ÀÛ¼ºÇÑ ·¹ÄÚ´õ ½ºÅ©¸³Æ®°¡ ÀÖ½À´Ï´Ù. ¿©·¯ºÐÀÌ Å¸ÀÚÇÏ°í Ŭ¸¯ÇÏ´Â °ÍÀ» ÁöÄÑ º¸¸é¼­ È°¼º âÀ» ÃßÀû °ü¸®ÇÕ´Ï´Ù. ÀÌ Á¶Ä¡¸¦ ÀÛµ¿ÇÏ´Â ¸ÅÅ©·Î·Î º¯È¯ÇÏ¸é ³ªÁß¿¡ ´õ ºü¸¥ ¼Óµµ·Î "´Ù½Ã Ç÷¹ÀÌ ÇÒ" ¼ö ÀÖ½À´Ï´Ù.

+

+¸ÅÅ©·Î¸¦ ´Ù½Ã Ç÷¹ÀÌÇÏ´Â °¡Àå Æí¸®ÇÑ ¹æ¹ýÁß Çϳª´Â ±×°ÍÀ» ÇÖÅ°³ª ÇÖ½ºÆ®¸µ¿¡ ÇÒ´çÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ÇÖÅ°´Â ºó À̸ÞÀÏ ¸Þ½ÃÁö¸¦ »ý¼ºÇÏ°í ±×°ÍÀ» ƯÁ¤ À¯ÇüÀÇ ¼ö½ÅÀÎÀ» À§ÇØ ÁغñÇÕ´Ï´Ù. ±×°ÍÀ» º¸³»±â Àü¿¡ °³º°ÀûÀ¸·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù:

+
^!s::  ; Control+Alt+S ÇÖÅ°.
+IfWinNotExist Inbox - Microsoft Outlook
+    return  ; OutlookÀÌ ¿À¸¥ÂÊ¿¡ ¿­¸®Áö ¾Ê¾Ò½À´Ï´Ù. ±×·¡¼­ ¾Æ¹«°Íµµ ÇÏÁö ¾Ê½À´Ï´Ù.
+WinActivate  ; À§ÀÇ ¸í·É¾î·Î ¹ß°ßÇÑ Ã¢À» È°¼ºÈ­ÇÕ´Ï´Ù.
+Send ^n  ; Control+NÀ» ÅëÇÏ¿© »õ·Î ºó À̸ÞÀÏÀ» »ý¼ºÇÕ´Ï´Ù.
+WinWaitActive Untitled Message
+Send {Tab 2}Product Recall for ACME Rocket Skates  ; Á¦¸ñ ÁÙÀ» ¼³Á¤ÇÕ´Ï´Ù.
+Send {Tab}Dear Sir or Madam,{Enter 2}We have recently discovered a minor defect ...  ; µîµî.
+return  ; ÀÌ ÁÙÀº ÇÖÅ°¸¦ Á¾·áÇÏ´Â µ¥ ±â¿©ÇÕ´Ï´Ù.
+

+À§¿Í °°Àº ÇÖÅ° ¸ÅÅ©·Î´Â ¸ÅÀÏ ÀÚÁÖ ¼öÇàÇØ¾ß ÇÏ´Â ÀÛ¾÷¿¡ ƯÈ÷ À¯¿ëÇÕ´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, ÀÚÁÖ »ç¿ëÇÏÁö ¾Ê´Â ¸ÅÅ©·Î´Â °¢°¢ º°µµÀÇ ÆÄÀÏ¿¡ º¸°üÇÏ°í ¹ÙÅÁÈ­¸éÀ̳ª ½ÃÀÛ ¸Þ´ºÀÇ ´ÜÃà ¾ÆÀÌÄÜÀ» ÅëÇÏ¿© Á¢±ÙÇÕ´Ï´Ù.

+

+¸ÅÅ©·Î³ª ÇÖÅ°¸¦ Áö±Ý Áï½Ã ¸¸µé°í ½Í´Ù¸é, ºü¸£°Ô ½ÃÀÛÇϱâ ÀÚ½À¼­¸¦ ÀÐ¾î º¸½Ê½Ã¿À.

+

 

+

-- ȨÀ¸·Î --

+ + diff --git a/src/docs/misc/Override.htm b/src/docs/misc/Override.htm new file mode 100644 index 0000000..ad34e66 --- /dev/null +++ b/src/docs/misc/Override.htm @@ -0,0 +1,43 @@ + + +Overriding Hotkeys + + + + + + + +

ÇÖÅ°¸¦ ºÒ´ÉÈ­Çϰųª ¿À¹ö¶óÀ̵åÇϱâ

+ +

+Win+L°ú Win+U¸¦ Á¦¿ÜÇÏ°í ¸ðµç ³»Àå À©µµ¿ìÁî ÇÖÅ°¸¦ ²ø ¼ö ÀÖ½À´Ï´Ù. ·¹Áö½ºÆ®¸¦ ´ÙÀ½°ú °°ÀÌ º¯°æÇÏ¸é µË´Ï´Ù (ÀÌ ¹æ¹ýÀº ¸ðµç ¿î¿µÃ¼Á¦¿¡ ÀÛµ¿ÇÏ°ÚÁö¸¸, ¾Æ¸¶µµ ¸®ºÎÆ®°¡ ÇÊ¿äÇÒ °ÍÀÔ´Ï´Ù):

+
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
+NoWinKeys REG_DWORD 0x00000001 (1)
+

+±×·¯³ª ´Ü¼øÈ÷ ºÒ´ÉÈ­ÇÏ´Â °Í ¸»°í ´õ ¸¹Àº °ÍÀ» ¿øÇÑ´Ù¸é °è¼Ó ÀÐ¾î º¸½Ê½Ã¿À.

+

+¶Ç´Ù¸¥ ¾îÇø®ÄÉÀ̼ÇÀÌ ¼ÒÀ¯ÇÑ ÇÖÅ°¸¦ ¿À¹ö¶óÀ̵å Çϰųª ºÒ´ÉÀ¸·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ±×³É ½ºÅ©¸³Æ®¿¡¼­ °Å±â¿¡ ´Ù¸¥ Á¶Ä¡¸¦ ÇÒ´çÇϱ⸸ ÇÏ¸é µË´Ï´Ù. ÀÌ Æ¯Â¡À» °¡Àå ¸¹ÀÌ »ç¿ëÇÏ´Â ¿¹´Â À©µµ¿ìÁî ÀÚü¿¡ ³»ÀåµÈ ÇÖÅ°¸¦ ¹Ù²Ù´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, Win+E (À©µµ¿ìÁî Ž»ö±â¸¦ ±âµ¿ÇÏ´Â ´ÜÃà Å°)¸¦ ´Ù¸¥ ÇàÀ§¸¦ ¼öÇàÇϵµ·Ï ¸¸µé°í ½Í´Ù¸é, ´ÙÀ½À» »ç¿ëÇϽʽÿÀ:

+
#e::
+MsgBox ÀÌ ÇÖÅ°´Â ÀÌÁ¦ ½ºÅ©¸³Æ®°¡ ¼ÒÀ¯ÇÕ´Ï´Ù.
+return
+

+´ÙÀ½ ¿¹Á¦¿¡¼­, RUN âÀ» ¿©´Â Win+R ÇÖÅ°´Â ¿ÏÀüÈ÷ ºÒ´ÉÈ­µË´Ï´Ù:

+
#r::return
+

+ºñ½ÁÇÏ°Ô, µÎ À©µµ¿ìÁî Å°¸¦ ¸ðµÎ ²ô·Á¸é, ´ÙÀ½À» »ç¿ëÇϽʽÿÀ:

+
Lwin::return
+Rwin::return
+

+¾îÇø®ÄÉÀ̼ÇÀÇ ºñ-Àü¿ª ÇÖÅ°¸¦ ¹Ù²Ù°Å³ª ²ô·Á¸é (Áï, ¾îÇø®ÄÉÀ̼ÇÀÌ È°¼º âÀÏ °æ¿ì¿¡¸¸ ÀÛµ¿ÇÏ´Â ´ÜÃà Å°), ´ÙÀ½ ¿¹Á¦¿¡¼­ ³ëÆ®Æе忡¸¸ Control+P (Print)¸¦ ²ô´Â ¹æ¹ýÀ» ¿¬±¸ÇØ º¸½Ê½Ã¿À. ´Ù¸¥ ¸ðµç â¿¡´Â ´ÜÃà Å°°¡ ¿©ÀüÈ÷ È¿°ú°¡ ÀÖµµ·Ï ±×´ë·Î µÓ´Ï´Ù:

+
$^p::
+IfWinActive ahk_class Notepad
+    return  ; Áï, ¾Æ¹«°Íµµ ÇÏÁö ¾Ê½À´Ï´Ù. Control-P°¡ Notepad¿¡¼­ ¾Æ¹«Àϵµ ÇÏÁö ¾Ê°Ô µË´Ï´Ù.
+Send ^p
+return
+

+À§ÀÇ ¿¹Á¦¿¡¼­, $ Á¢µÎ ½Éº¼ÀÌ ÀÖ¾î¾ß ÇÖÅ°°¡ ÀÚ½ÅÀ» È°¼ºÈ­ ½ÃÅ°Áö ¾Ê°í "ÀÚ½ÅÀ» Àü¼Û"ÇÒ ¼ö ÀÖ½À´Ï´Ù (±×·¸Áö ¾ÊÀ¸¸é ¹«ÇÑ È¸µ¹ÀÌ °üÇÏ¿© °æ°í »óÀÚ°¡ Ã˹ߵ˴ϴÙ). ´ÙÀ½µµ ÂüÁ¶ÇϽʽÿÀ: ¹®¸Æ-°¨Áö ÇÖÅ°.

+

+À§ÀÇ ¸ðµç ¿¹Á¦¸¦ ½ÃÇèÇØ º¼ ¼ö ÀÖ½À´Ï´Ù. "Override.ahk"¿Í °°Àº »õ ÅؽºÆ® ÆÄÀÏ ¾ÈÀ¸·Î º¹»çÇØ ³Ö°í, ÆÄÀÏÀ» ±âµ¿ÇØ º¸½Ê½Ã¿À.

+ + diff --git a/src/docs/misc/Performance.htm b/src/docs/misc/Performance.htm new file mode 100644 index 0000000..86c1898 --- /dev/null +++ b/src/docs/misc/Performance.htm @@ -0,0 +1,36 @@ + + +Performance + + + + + + + +

½ºÅ©¸³Æ® ¼öÇ༺´É

+ +

¼öÇ༺´ÉÀ» ±Ø´ëÈ­ÇÏ·Á¸é, SetFormatÀÇ »ç¿ëÀ» ÀÚÁ¦ÇÏ°í (ºü¸¥ ¸ðµå Á¦¿Ü) ´ÙÀ½ ÁÙÀ» °¢ ½ºÅ©¸³Æ®ÀÇ »ó´Ü ±Ùó¿¡ Æ÷ÇÔÇϽʽÿÀ:

+
#NoEnv
+SetBatchLines -1
+ListLines Off
+

+°Ô´Ù°¡, ´ÙÀ½ ¸í·É¾î¸¦ »ç¿ëÇÏ¸é ½ºÅ©¸³Æ®ÀÇ ¼ºÁú¿¡ µû¶ó ¼öÇ༺´É¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù: SendMode, SetKeyDelay, SetMouseDelay, SetWinDelay, SetControlDelay, ±×¸®°í SetDefaultMouseSpeed.

+ +

³»Àå ¼öÇ༺´É Ư¡

+

+½ºÅ©¸³Æ®´Â ÀûÀçµÇ´Â µ¿¾È ±×¸®°í ±¸¹®À» Á¡°ËÇÏ´Â µ¿¾È À¯»ç-ÄÄÆÄÀϵ˴ϴÙ. À¯»ç-ÄÄÆÄÀÏÀº ½ºÅ©¸³Æ®°¡ ¼Ò¸ðÇÏ´Â ¸Þ¸ð¸®¸¦ ÁÙÀÌ´Â ¿Ü¿¡µµ, ±ØÀûÀ¸·Î ¼öÇ༺´ÉÀ» Çâ»ó½Ãŵ´Ï´Ù.

+

´ÙÀ½Àº Å×Å©´ÏÄÃÇÑ ÃÖÀûÈ­ °úÁ¤À» ±â¼úÇÕ´Ï´Ù (À¯»ç-ÄÄÆÄÀϸµ):

+
    +
  • ÀÔ·Â º¯¼ö¿Í Ãâ·Â º¯¼ö (À̸§¿¡ ´Ù¸¥ º¯¼ö¸¦ °¡¸®Å°´Â ÂüÁ¶ ÁÖ¼Ò°¡ µé¾îÀÖÁö ¾ÊÀ» ¶§) ±×¸®°í ±×·ì À̸§Àº ¸Þ¸ð¸® ÁÖ¼Ò·Î °áÁ¤µË´Ï´Ù.
  • +
  • Loops, blocks, IFs, ±×¸®°í ELSEs¿¡´Â ½ºÅ©¸³Æ®¿¡¼­ ±×¿Í °ü·ÃµÈ Á¡ÇÁ ÁöÁ¡ÀÇ ¸Þ¸ð¸® ÁÖ¼Ò°¡ ºÎ¿©µË´Ï´Ù.
  • +
  • °¢ ÇÖÅ°, Gosub, ±×¸®°í GotoÀÇ ¸ñÀûÁö´Â º¯¼ö°¡ ¾Æ´Ñ ÇÑ ¸Þ¸ð¸® ÁÖ¼Ò·Î °áÁ¤µË´Ï´Ù.
  • +
  • °¢ ¸í·É¾î À̸§Àº Á¡ÇÁ Å×À̺íÀÇ ÁÖ¼Ò·Î ±³Ã¼µË´Ï´Ù.
  • +
  • °¢ ÁÙÀº ¹Ì¸®-Çؼ®µÇ¾î ¸Å°³º¯¼ö ¸®½ºÆ®·Î µé¾î°©´Ï´Ù. (ÀÖ´Ù¸é) °¢ ¸Å°³º¯¼ö´Â ¹Ì¸® Çؼ®µÇ¾î º¯¼ö ¸®½ºÆ®·Î µé¾î°©´Ï´Ù.
  • +
  • °¢ Ç¥Çö½ÄÀº ÅäÅ«È­µÇ¾î ÁßÀ§½Ä¿¡¼­ ÈÄÀ§½ÄÀ¸·Î º¯È¯µË´Ï´Ù.
  • +
  • º¯¼ö³ª ÇÔ¼ö¸¦ °¡¸®Å°´Â ÂüÁ¶ ÁÖ¼Ò´Â ¸Þ¸ð¸® ÁÖ¼Ò·Î °áÁ¤µË´Ï´Ù.
  • +
  • Ç¥Çö½Ä¿¡¼­ ¹®ÀÚ ±×´ë·ÎÀÇ Á¤¼ö¿Í ¼öÇÐ/ºñ±³ ¸í·É¾î´Â ÀÌÁø Á¤¼ö·Î ±³Ã¼µË´Ï´Ù.
  • +
+

°Ô´Ù°¡, ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ´Â µ¿¾È, ÀÌÁø ¼ýÀÚµéÀº º¯¼ö¿¡ ij½¬°¡ µÇ¾î ¹®ÀÚ¿­·Î/À¸·ÎºÎÅÍ º¯È¯À» ÇÇÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº SetFormatÀ» ÂüÁ¶ÇϽʽÿÀ.

+ + diff --git a/src/docs/misc/RegEx-QuickRef.htm b/src/docs/misc/RegEx-QuickRef.htm new file mode 100644 index 0000000..faed233 --- /dev/null +++ b/src/docs/misc/RegEx-QuickRef.htm @@ -0,0 +1,209 @@ + + +Regular Expressions (RegEx) - Quick Reference + + + + + + + +

Á¤±ÔÇ¥Çö½Ä (RegEx) - °£Æí ÂüÁ¶¼­

+ +

±âº» Áö½Ä

+

+¾îµð¿¡³ª ºÎÇÕ: ±âº»°ªÀ¸·Î, Á¤±Ô Ç¥Çö½Ä¿¡¼­ ºÎºÐ¹®ÀÚ¿­Àº °Ë»öµÉ ¹®ÀÚ¿­ ¾È ¾îµð¿¡³ª ºÎÇÕÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, Á¤±Ô Ç¥Çö½Ä abc´Â abc123, 123abc, ±×¸®°í 123abcxyz¿¡ ºÎÇÕÇÕ´Ï´Ù. ºÎÇÕÀ» óÀ½À̳ª ³¡¿¡¼­¸¸ ÀϾµµ·Ï ÇÏ·Á¸é ´éÀ» »ç¿ëÇÕ´Ï´Ù.

+

+ÇǽŠ¹®ÀÚ: abc123°ú °°ÀÌ ´ëºÎºÐÀÇ ¹®ÀÚ´Â Á¤±Ô Ç¥Çö½Ä ¾È¿¡ ¹®ÀÚ ±×´ë·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, \.*?+[{|()^$ÀÇ ¹®ÀÚµéÀº ¹Ýµå½Ã ¾Õ¿¡ ¿ª»ç¼±À» ¹èÄ¡ÇØ¾ß ¹®ÀÚ ±×´ë·Î º¸ÀÏ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, \.´Â ¹®ÀÚ ±×´ë·ÎÀÇ ¸¶Ä§Ç¥ÀÌ°í \\´Â ¹®ÀÚ ±×´ë·ÎÀÇ ¿ª»ç¼±ÀÔ´Ï´Ù. ÇǽÅÀ» ÇÇÇÏ·Á¸é \Q...\EÀ» »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: \QLiteral Text\E.

+

+´ë¼Ò¹®ÀÚ ±¸ºÐ: ±âº»°ªÀ¸·Î Á¤±Ô Ç¥Çö½ÄÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù. ÀÌ ÇàÀ§´Â "i" ¿É¼ÇÀ¸·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ÆÐÅÏ i)abc´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê°í "abc"¸¦ °Ë»öÇÕ´Ï´Ù. ´Ù¸¥ ¼ö½ÄÀÚµéÀº ¾Æ·¡¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

¿É¼Ç (´ë¼Ò¹®ÀÚ ±¸ºÐ)

+

Á¤±Ô Ç¥Çö½Ä ¸Ç ¾Õ¿¡ ´ÙÀ½ ¿É¼ÇÀ» ÁöÁ¤ÇÏ°í ´ÙÀ½¿¡ ¹Ý°ýÈ£·Î ´Ý¾Æ ¿É¼ÇÀ» ÁöÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ÆÐÅÏ "im)abc"´Â ¿©·¯ ÁÙ ¿É¼ÇÀ» °¡Áö°í ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏ¿© abc¸¦ °Ë»öÇÕ´Ï´Ù (¾Æ¹« ¿É¼ÇÀÌ ¾øÀ¸¸é ´Ý´Â ¹Ý°ýÈ£´Â »ý·«ÇÕ´Ï´Ù.). ÀÌ ±¸¹®Àº ÀüÅëÀ» ¾î±âÁö¸¸, Ư¼öÇÑ ±¸ºÐÀÚ¸¦ ¿ä±¸ÇÏÁö ¾Ê½À´Ï´Ù (¿¹¸¦ µé¾î ¿ª»ç¼±). ±×·¡¼­ ÆÐÅÏ ¾È¿¡¼­ ±×·± ±¸ºÐÀÚ¸¦ ÇǽŽÃų ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. °Ô´Ù°¡ ¼öÇ༺´ÉÀÌ Çâ»óµË´Ï´Ù. ¿Ö³ÄÇÏ¸é ¿É¼ÇÀ» Çؼ®ÇϱⰡ ´õ ½±±â ¶§¹®ÀÔ´Ï´Ù.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
i´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê°í ºÎÇÕÇÕ´Ï´Ù. ±âÈ£ AºÎÅÍ Z¸¦ ¼Ò¹®ÀÚ¿Í µ¿ÀÏÇÏ°Ô Ãë±ÞÇÕ´Ï´Ù.
m

¿©·¯ ÁÙ¿¡ ºÎÇÕÇÕ´Ï´Ù. (»õÁÙ ¹®ÀÚ°¡ Æ÷ÇԵǾî ÀÖ´Ù¸é) ¸ñÇ¥ ¹®ÀÚ¿­(Haystack)À» ÇϳªÀÇ ¿¬¼ÓÀûÀÎ ÁÙ·Î º¸Áö ¾Ê°í °¢ ÁÙÀÌ ¸ðÀÎ Áý´ÜÀ¸·Î º¾´Ï´Ù. ƯÈ÷, ´ÙÀ½°ú °°ÀÌ º¯°æµË´Ï´Ù:

+

1) À­²©¼è(^)´Â ¸ðµç ³»ºÎ »õÁÙ ¹®ÀÚ µÚ¿¡ Áï½Ã ºÎÇÕÇÕ´Ï´Ù -- »Ó¸¸ ¾Æ´Ï¶ó HaystackÀÇ ½ÃÀÛ¿¡µµ ¾ðÁ¦³ª ºÎÇÕÇÕ´Ï´Ù (±×·¯³ª HaystackÀÇ ¸Ç ³¡¿¡ ÀÖ´Â »õÁÙ ¹®ÀÚ ´ÙÀ½¿¡´Â ºÎÇÕÇÏÁö ¾Ê½À´Ï´Ù).

+

2) ´Þ·¯ »çÀÎ ($)Àº Haystack ¾ÈÀÇ ¾î¶² »õÁÙ ¹®ÀÚ ¾Õ¿¡µµ ºÎÇÕÇÕ´Ï´Ù. (»Ó¸¸ ¾Æ´Ï¶ó ¸Ç ³¡ÀÇ »õÁÙ ¹®ÀÚ¿¡µµ ¾ðÁ¦³ª ºÎÇÕÇÕ´Ï´Ù).

+

¿¹¸¦ µé¾î, ÆÐÅÏ "m)^abc$"´Â "m" ¿É¼ÇÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é ¸ñÇ¥¹®ÀÚ¿­(Haystack) "xyz`r`nabc"¿¡ ºÎÇÕÇÏÁö ¾Ê½À´Ï´Ù.

+

"D" ¿É¼ÇÀº "m" ¿É¼ÇÀÌ ÀÖÀ¸¸é ¹«½ÃµË´Ï´Ù.

sDotAll. ¸¶Ä§Ç¥ (.)°¡ »õÁÙ¹®ÀÚ¸¦ Æ÷ÇÔÇÏ¿© ¸ðµç ¹®ÀÚ¿¡ ÀÏÄ¡ÇÕ´Ï´Ù (º¸Åë, »õÁÙ¹®ÀÚ¿¡´Â ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù). ±×·¸Áö¸¸, »õÁÙ ¹®ÀÚ°¡ ±âº»°ªÀ¸·Î CRLF (`r`n)À̸é, µÎ °³ÀÇ Á¡ÀÌ ÀÖ¾î¾î ºÎÇÕÇÕ´Ï´Ù (Çϳª¸¸À¸·Î´Â ºÎÇÕÇÏÁö ¾Ê½À´Ï´Ù). ÀÌ ¿É¼Ç°ú »ó°ü¾øÀÌ, [^a]°°Àº ºÎÁ¤ ºÎ·ù´Â ¾ðÁ¦³ª »õÁÙ¹®ÀÚ¿¡ ºÎÇÕÇÕ´Ï´Ù.
x¹®ÀÚ ºÎ·ù ¾ÈÀ̳ª ÇǽŽÃŲ °æ¿ì¸¦ Á¦¿ÜÇÏ°í ÆÐÅÏ¿¡¼­ °ø¹é ¹®ÀÚ¸¦ ¹«½ÃÇÕ´Ï´Ù. ¹®ÀÚ `n°ú `tÀÌ ¹«½ÃµÇ´Âµ¥ ¿Ö³ÄÇϸé PCRE¿¡ µµÂøÇÒ ¶§ ÂëÀ̸é, ÀÌ¹Ì ³¯/±âÈ£ °ø¹é ¹®ÀÚÀ̱⠶§¹®ÀÔ´Ï´Ù (´ëÁ¶ÀûÀ¸·Î, \n¿Í \t´Â PCRE ÇǽŠ¿¬¼Ó¿­À̱⠶§¹®¿¡ ¹«½ÃµÇÁö ¾Ê½À´Ï´Ù). x ¿É¼ÇÀº ¶Ç ¹®ÀÚ ºÎ·ù ¹ÛÀÇ ÇǽŵÇÁö ¾ÊÀº #ºÎÅÍ ´ÙÀ½ »õÁÙ¹®ÀÚ(Æ÷ÇÔ) »çÀÌÀÇ ¹®ÀÚµéÀ» ¹«½ÃÇÕ´Ï´Ù. ÀÌ ´öºÐ¿¡ º¹ÀâÇÑ ÆÐÅÏ ¾È¿¡ ÁÖ¼®À» »ðÀÔÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, ÀÌ°ÍÀº ¿ÀÁ÷ µ¥ÀÌÅÍ ¹®ÀÚ¿¡¸¸ Àû¿ëµË´Ï´Ù; Á¶°ÇÀû ºÎÆÐÅÏÀ» ½ÃÀÛÇÏ´Â (?(¿Í °°Àº Ư¼ö ¹®ÀÚ ¿¬¼Ó¿­ ¾È¿¡ °ø¹é¹®ÀÚ´Â ³ªÅ¸³ªÁö ¾Ê½À´Ï´Ù.
AÆÐÅÏÀ» °­Á¦·Î °íÁ¤ÇÕ´Ï´Ù; Áï, HaystackÀÇ ½ÃÀÛ¿¡¸¸ ºÎÇÕÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ëºÎºÐÀÇ »óȲ¿¡¼­, ÀÌ°ÍÀº "^"¿Í °°Àº ¼ö´ÜÀ» »ç¿ëÇÏ¿© ¸í½ÃÀûÀ¸·Î ÆÐÅÏÀ» °íÁ¤ÇÑ °Í°ú µ¿µîÇÕ´Ï´Ù.
D´Þ·¯ »çÀÎ($)À» °­Á¦·Î ¸ñÇ¥ ¹®ÀÚ¿­(Haystack)ÀÇ ¸Ç ³¡¿¡ ºÎÇÕ½Ãŵ´Ï´Ù. ¸ñÇ¥ ¹®ÀÚ¿­(Haystack)ÀÇ ¸¶Áö¸·ÀÌ »õÁÙ ¹®ÀÚ¿©µµ ºÎÇÕÇÕ´Ï´Ù. + ÀÌ ¿É¼Ç¿¡ ¾ø´Ù¸é, ´ë½Å¿¡ $´Â (ÀÖ´Ù¸é) ¸¶Áö¸· »õÁÙ ¹®ÀÚ ¹Ù·Î ¾Õ¿¡ ºÎÇÕÇÕ´Ï´Ù. ÁÖÀÇ: ÀÌ ¿É¼ÇÀº "m" ¿É¼ÇÀÌ ÀÖÀ¸¸é ¹«½ÃµË´Ï´Ù.
JÀ̸§ºÙÀÎ ºÎÆÐÅÏÀÇ Áߺ¹À» Çã¿ëÇÕ´Ï´Ù. + + +ÀÌ°ÍÀº °°Àº-À̸§ÀÇ ºÎÆÐÅÏ Áß Çϳª¸¸ ºÎÇÕÇÒ ¼ö ÀÖ´Â ÆÐÅÏ¿¡ À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. +ÁÖÀÇ: ¹«¾ùÀ̵ç ƯÁ¤ À̸§ÀÌ ÇÑ ¹ø ÀÌ»ó ºÎÇÕÇϸé, ¿ÞÂÊ¿¡ ÀÖ´Â °Í¸¸ ÀúÀåµË´Ï´Ù. ¶Ç, º¯¼ö À̸§Àº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê½À´Ï´Ù.
UºñŽ¿åÀû. + + +¼ö·®ÀÚ *+?{}°¡ ºÎÇÕÀ» Çü¼ºÇϴµ¥ Àý´ëÀûÀ¸·Î ÇÊ¿äÇÑ ¹®Àڵ鸸 ¼ÒºñÇÕ´Ï´Ù. ³ª¸ÓÁö ºÎÇÕÀº ´ÙÀ½ ÆÐÅÏÀ» À§ÇØ ³²°ÜµÓ´Ï´Ù. "U" ¿É¼ÇÀÌ È¿°ú°¡ ¾øÀ¸¸é, °¢ ¼ö·®ÀÚ ´ÙÀ½¿¡ ¹°À½Ç¥¸¦ Ãß°¡ÇÏ¸é ºñŽ¿åÀûÀ¸·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ¹Ý´ë·Î, "U"°¡ È¿°ú°¡ ÀÖÀ¸¸é, ¹°À½Ç¥´Â °¢ ¼ö·®ÀÚ¸¦ Ž¿åÀûÀ¸·Î ¸¸µì´Ï´Ù.
XPCRE_EXTRA. ÆÞ°ú ȣȯµÇÁö ¾Ê´Â PCRE Ư¡À» È°¼ºÈ­ÇÕ´Ï´Ù. ÇöÀç, Áö¿øµÇ´Â À¯ÀÏÇÑ Æ¯Â¡Àº ´ÙÀ½°ú °°½À´Ï´Ù. ÆÐÅÏ¿¡¼­ ¿ª»ç¼± ´ÙÀ½¿¡ ¾Æ¹« Ư¼ö Àǹ̰¡ ¾ø´Â ±âÈ£°¡ µû¶ó¿À¸é ºÎÇÕÀº ½ÇÆÐÇÏ°í ±×¿¡ ¸Â°Ô ErrorLevelÀÌ ¼³Á¤µË´Ï´Ù. + ÀÌ ¿É¼ÇÀº »ç¿ëÇÏÁö ¾Ê´Â ¿ª»ç¼± ¹®ÀÚ¿­À» ¹Ì·¡¿¡ »ç¿ëÇϱâ À§ÇØ ¿¹¾àÇϴµ¥ µµ¿òÀ» ÁÝ´Ï´Ù. ÀÌ ¿É¼ÇÀÌ ¾ø´Ù¸é, ¿ª»ç¼± ´ÙÀ½¿¡ ¾Æ¹« Ư¼ö Àǹ̰¡ ¾ø´Â ±âÈ£°¡ µû¶ó¿À¸é ±âÈ£ ±×´ë·Î Ãë±ÞÇÕ´Ï´Ù (¿¹, \g¿Í g´Â ¸ðµÎ ±âÈ£ ±×´ë·ÎÀÇ g·Î Àνĵ˴ϴÙ). ÀÌ ¿É¼Ç¿¡ »ó°ü¾øÀÌ, ¾Æ¹« Àǹ̰¡ ¾ø´Â ¾ËÆĺª-¾Æ´Ñ ¿¬¼Ó¿­Àº ¾ðÁ¦³ª ±âÈ£ ±×´ë·Î Ãë±ÞµË´Ï´Ù (¿¹, \/ ±×¸®°í / ´Â ¸ðµÎ Á¤»ç¼±À¸·Î ÀÎÁöµË´Ï´Ù).
PÀ§Ä¡ ¸ðµå. ÀÌ ¸ðµå´Â RegExMatch()°¡ ºÎÇÕÇÑ ºÎ¹®ÀÚ¿­ÀÌ ¾Æ´Ï¶ó ±×ÀÇ ºÎÆÐÅÏ°ú ºÎÇÕÀÇ À§Ä¡¿Í ±æÀ̸¦ »êÃâÇϵµ·Ï ¸¸µì´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº UnquotedOutputVar¸¦ ÂüÁ¶ÇϽʽÿÀ.
SÆÐÅÏÀ» ¿¬±¸ÇÏ¿© ¼öÇ༺´ÉÀ» Çâ»ó½ÃÅ°·Á°í ½ÃµµÇÕ´Ï´Ù. ÀÌ Æ¯Â¡Àº ƯÁ¤ ÆÐÅÏÀÌ (ƯÈ÷ º¹ÀâÇÑ ÆÐÅÏÀÌ) ¿©·¯ ¹ø ¼öÇàµÉ ¶§ À¯¿ëÇÕ´Ï´Ù. PCRE°¡ ¼öÇ༺´ÉÀ» Çâ»ó½ÃÅ°´Â ¹ýÀ» ¹ß°ßÇϸé, ±× ¹ß°ßÀº ÆÐÅÏ°ú ÇÔ²² ij½¬¿¡ ÀúÀåµË´Ï´Ù. °°Àº ÆÐÅÏÀÌ ¿¬ÀÌ¾î ½ÇÇàµÇ¸é ÀúÀåµÈ ¹ß°ßÀ» »ç¿ëÇÕ´Ï´Ù. + + (ÆÐÅÏÀ» ¿¬ÀÌ¾î »ç¿ëÇϸé S ¿É¼ÇÀ» ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ¿Ö³ÄÇϸé ij½¬¿¡¼­ ºÎÇÕÀ» ¹ß°ßÇÏ·Á¸é ±× ¿É¼Ç ±âÈ£°¡ Á¤È®ÇÏ°Ô ÀÏÄ¡ÇØ¾ß Çϸç, ¼ø¼­±îÁö ÀÏÄ¡ÇØ¾ß Çϱ⠶§¹®ÀÔ´Ï´Ù).
CÀÚµ¿-callout ¸ðµå¸¦ ÄÕ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â Á¤±Ô Ç¥Çö½Ä ¿ÜºÎÈ£ÃâÀ» ÂüÁ¶ÇϽʽÿÀ.
`n±âº» »õÁÙ ¹®ÀÚ(`r`n)¸¦ ´Üµ¶ ¶óÀÎÇǵå (`n)·Î ÀüȯÇÕ´Ï´Ù. ÀÌ ÁÙ³¡ ¹®ÀÚ´Â UNIX ½Ã½ºÅÛÀÇ Ç¥ÁØÀÔ´Ï´Ù. ¼±ÅÃµÈ »õÁÙ ¹®ÀÚ´Â ´é (^¿Í $) ±×¸®°í Á¡(dot/period) ÆÐÅÏÀÇ ÇàÀ§¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.
`r±âº» »õÁÙ ¹®ÀÚ (`r`n)¸¦ ´Üµ¶ ij¸®Áö ¸®ÅÏ (`r)À¸·Î ÀüȯÇÕ´Ï´Ù.
`av1.0.46.06+¿¡¼­, `a´Â »õÁÙÀÌ¸é ¾î¶² Á¾·ùµçÁö ¸ðµÎ ÀÎÁöÇÕ´Ï´Ù. Áï, `r, `n, `r`n, `v/VT/vertical tab/chr(0xB), `f/FF/formfeed/chr(0xC), ±×¸®°í NEL/next-line/chr(0x85). v1.0.47.05+¿¡¼­, »õÁÙÀº CR, LF, ±×¸®°í CRLF·Î Á¦ÇÑÇÒ ¼ö ÀÖ½À´Ï´Ù. ÆÐÅÏÀÇ ½ÃÀÛ¿¡ (¿É¼Ç µÚ¿¡) ´ë¹®ÀÚ·Î (*ANYCRLF)¸¦ ÁöÁ¤ÇÏ¸é µË´Ï´Ù; ¿¹, im)(*ANYCRLF)^abc$.
+

ÁÖÀÇ: °¢ ¿É¼ÇÀ» ´ÙÀ½ ¿É¼Ç°ú °¡¸£´Âµ¥ ½ºÆäÀ̽º¿Í ÅÇÀ» ¼±ÅÃÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

ÀÚÁÖ »ç¿ëµÇ´Â ½Éº¼°ú ±¸¹®

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.±âº»°ªÀ¸·Î, Á¡Àº ¹®ÀÚ Çϳª¿¡ ºÎÇÕÇÕ´Ï´Ù. »õÁÙ¹®ÀÚ (`r`n) ¿¬¼Ó¿­Àº Á¦¿ÜÇÕ´Ï´Ù. ±×·¯³ª DotAll (s), ¶óÀÎÇǵå (`n), ij¸®Áö ¸®ÅÏ (`r), `a ¶Ç´Â (*ANYCRLF) ¿É¼ÇÀ» »ç¿ëÇÏ¿© ÀÌ ÇàÀ§¸¦ º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ab.´Â abc and abz ±×¸®°í ab_¿¡ ºÎÇÕÇÕ´Ï´Ù.
*

º°Ç¥´Â 0°³ ÀÌ»óÀÇ ÀÌÀü ¹®ÀÚ, ºÎ·ù, ¶Ç´Â ºÎÆÐÅÏ¿¡ ºÎÇÕÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, a*´Â ab ±×¸®°í aaab¿¡ ºÎÇÕÇÕ´Ï´Ù. ¶Ç "a"°¡ ÀüÇô ¾ø´Â ¹®ÀÚ¿­ÀÇ ¸Ç ¾Õ¿¡µµ ºÎÇÕÇÕ´Ï´Ù.

+

¸¸´É¹®ÀÚ: Á¡-º° ÆÐÅÏ .*Àº °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â ÆÐÅÏÀÔ´Ï´Ù. ¿Ö³ÄÇÏ¸é ¾î¶² ¹®ÀÚµçÁö 0 ȸ ÀÌ»ó ºÎÇÕÇϱ⠶§¹®ÀÔ´Ï´Ù (»õÁÙ ¹®ÀÚ´Â Á¦¿ÜÇÕ´Ï´Ù: `r ±×¸®°í `n). ¿¹¸¦ µé¾î, abc.*123Àº abcAnything123´Â ¹°·Ð abc123¿¡µµ ºÎÇÕÇÕ´Ï´Ù.

?¹°À½Ç¥´Â ÀÌÀü ¹®ÀÚ, ºÎ·ù, ¶Ç´Â ºÎÆÐÅÏÀÌ 0 ¶Ç´Â 1°³¿¡ ºÎÇÕÇÕ´Ï´Ù. ÀÌ°ÍÀ» "¾ÕÀÇ ¹®ÀÚ´Â ¼±ÅÃÀûÀÌ´Ù"¶ó°í °£ÁÖÇϽʽÿÀ; ¿¹¸¦ µé¾î, colou?r´Â color¿Í colour¿¡ ¸ðµÎ ºÎÇÕÇÕ´Ï´Ù ¿Ö³ÄÇϸé "u"°¡ ¼±ÅÃÀûÀ̱⠶§¹®ÀÔ´Ï´Ù.
+µ¡¼À ºÎÈ£´Â Çϳª ÀÌ»óÀÇ ÀÌÀü ¹®ÀÚ, ºÎ·ù, ¶Ç´Â ºÎÆÐÅÏ¿¡ ºÎÇÕÇÕ´Ï´Ù. ¿¹¸¦ µé¾î a+´Â ab ±×¸®°í aaab¿¡ ºÎÇÕÇÕ´Ï´Ù. ±×·¯³ª a* ±×¸®°í a?¿Í ´Ù¸£°Ô, ÆÐÅÏ a+´Â "a"°¡ ¾ø´Â ¹®ÀÚ¿­ÀÇ ¼±µÎ¿¡ ºÎÇÕÇÏÁö ¾Ê½À´Ï´Ù.
{min,max}

ÀÌÀüÀÇ ¹®ÀÚ, ºÎ·ù, ¶Ç´Â ºÎÆÐÅÏÀÌ ÃÖ¼Ò minȸ ±×¸®°í ÃÖ´ë maxȸ ³ªÅ¸³ª¸é ºÎÇÕÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, a{1,2}´Â ab¿¡ ºÎÇÕÇÏÁö¸¸ aaab¿¡¼­ ¿ÀÁ÷ ¾ÕÀÇ µÎ a¿¡¸¸ ºÎÇÕÇÕ´Ï´Ù.

+

¶Ç, {3}´Â Á¤È®ÇÏ°Ô 3 ȸ ³ªÅ¸³ª¾ß ÇÑ´Ù´Â ¶æÀÌ°í, {3,}´Â 3 ȸ ÀÌ»óÀ» ÀǹÌÇÕ´Ï´Ù. ÁÖÀÇ: ÁöÁ¤µÈ Ƚ¼ö´Â 65536º¸´Ù ÀÛ¾Æ¾ß ÇÕ´Ï´Ù. ±×¸®°í ¾ÕÀÇ ¼ýÀÚ´Â µÚÀÇ ¼ýÀÚº¸´Ù °°°Å³ª ÀÛ¾Æ¾ß ÇÕ´Ï´Ù.

[...]

¹®ÀÚ ºÎ·ù: °¢°ýÈ£´Â ¹®ÀÚÀÇ ¹üÀ§³ª ¸®½ºÆ®¸¦ µÑ·¯½Ô´Ï´Ù (¶Ç´Â µÑ ´Ù). ¿¹¸¦ µé¾î, [abc]´Â " a, b ¶Ç´Â cÁß ¾î´À ¹®ÀÚ¿¡³ª ºÎÇÕÇÑ´Ù"´Â ¶æÀÔ´Ï´Ù. »çÀÌ¿¡ ¿·ÁÙ ¹®ÀÚ¸¦ »ç¿ëÇÏ¸é ¹üÀ§°¡ »ý¼ºµË´Ï´Ù; ¿¹¸¦ µé¾î, [a-z]´Â "¼Ò¹®ÀÚ aºÎÅÍ z±îÁöÀÇ (Æ÷ÇÔ) ¸ðµç ¹®ÀÚ Çϳª¿¡ ºÎÇÕÇÑ´Ù"´Â ¶æÀÔ´Ï´Ù. ¸®½ºÆ®¿Í ¹üÀ§´Â Á¶ÇÕÇÒ ¼ö ÀÖ½À´Ï´Ù; ¿¹¸¦ µé¾î [a-zA-Z0-9_]´Â "¸ðµç ¾ËÆĺª°ú ¼ýÀÚ ¶Ç´Â ¹ØÁÙ ¹®ÀÚ"¸¦ ¶æÇÕ´Ï´Ù.

+

¹®ÀÚ ºÎ·ù ´ÙÀ½¿¡ *, ?, +, ¶Ç´Â {min,max}°¡ µû¶ó¿Ã ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, [0-9]+´Â ¼ýÀÚ°¡ Çϳª ÀÌ»ó ³ªÅ¸³ª¸é ºÎÇÕÇÕ´Ï´Ù; ±×·¡¼­ xyz123¿¡´Â ºÎÇÕÇÏÁö¸¸ abcxyz¿¡´Â ºÎÇÕÇÏÁö ¾Ê½À´Ï´Ù.

+

´ÙÀ½ POSIX À̸§ ÁýÇÕµµ Áö¿øÇÕ´Ï´Ù. ÇüÅ´ [[:xxx:]]¿Í °°À¸¸ç, ¿©±â¿¡¼­ xxx´Â ´ÙÀ½ ´Ü¾î Áß ÇϳªÀÔ´Ï´Ù: alnum, alpha, ascii (0-127), blank (½ºÆäÀ̽º ¶Ç´Â ÅÇ), cntrl (Á¦¾î ¹®ÀÚ), digit (0-9), xdigit (½ÊÀ°Áø¼ö), print, graph (½ºÆäÀ̽º¸¦ Á¦¿ÜÇÏ°í Àμ⠰¡´É ¹®ÀÚ), punct, lower, upper, space (°ø¹é¹®ÀÚ), word (\w¿Í µ¿ÀÏ).

+

¹®ÀÚ ºÎ·ù ¾È¿¡¼­, ¹®ÀÚµéÀº ÇǽŽÃų ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ºÎ·ù ¾È¿¡¼­ Ưº°ÇÑ Àǹ̸¦ °¡Áú °æ¿ì´Â Á¦¿ÜÇÕ´Ï´Ù; ¿¹¸¦ µé¾î, [\^a], [a\-b], [a\]], ±×¸®°í [\\a].

[^...]ºÎ·ù¿¡ ¾ø´Â ¹®ÀÚ¿¡ ºÎÇÕÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, [^/]*´Â Á¤»ç¼±ÀÌ ¾Æ´Ñ¹®ÀÚ°¡ 0ȸ ÀÌ»ó ³ªÅ¸³ª¸é ºÎÇÕÇÕ´Ï´Ù. ¿¹¸¦ µé¾î http://. ºñ½ÁÇÏ°Ô, [^0-9xyz]´Â ¼ýÀÚ°¡ ¾Æ´Ï°í ¼Ò¹®ÀÚ x, y, ¶Ç´Â z°¡ ¾Æ´Ï¸é ºÎÇÕÇÕ´Ï´Ù.
\d¼ýÀÚ Çϳª¿¡ ºÎÇÕÇÕ´Ï´Ù (¹®ÀÚ ºÎ·ù [0-9]¿Í µ¿µîÇÕ´Ï´Ù). ¿ªÀ¸·Î, ´ë¹®ÀÚ \D´Â "¼ýÀÚ°¡ ¾Æ´Ñ-¹®ÀÚ Çϳª"¿¡ ºÎÇÕÇÕ´Ï´Ù. ÀÌ°Í°ú ¾Æ·¡ÀÇ µÎ °³´Â ºÎ·ù ¾È¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù; ¿¹¸¦ µé¾î, [\d.-]´Â "¼ýÀÚ, ¸¶Ä§Ç¥, ¶Ç´Â »¬¼À ±âÈ£"¸¦ ¶æÇÕ´Ï´Ù.
\s°ø¹é ¹®ÀÚ¿¡ ºÎÇÕÇÕ´Ï´Ù. ÁÖ·Î ½ºÆäÀ̽º, ÅÇ, ±×¸®°í »õÁÙ¹®ÀÚ (`r ±×¸®°í `n)¿¡ ºÎÇÕÇÕ´Ï´Ù. ¹Ý´ë·Î, ´ë¹®ÀÚ \S´Â "°ø¹é ¹®ÀÚ°¡ ¾Æ´Ñ-¹®ÀÚ"¸¦ ¶æÇÕ´Ï´Ù.
\w"´Ü¾î" ¹®ÀÚ¿¡ ºÎÇÕÇÕ´Ï´Ù. Áï ¾ËÆĺª¼ýÀÚ³ª ¹ØÁÙ¹®ÀÚ¿¡ ºÎÇÕÇÕ´Ï´Ù. ÀÌ°ÍÀº ¹®Àںηù [a-zA-Z0-9_]¿Í µ¿µîÇÕ´Ï´Ù. ¿ªÀ¸·Î, ´ë¹®ÀÚ \W´Â "´Ü¾î ¹®ÀÚ°¡ ¾Æ´Ñ-¹®ÀÚ"¸¦ ¶æÇÕ´Ï´Ù.
^
+ $

À­²©¼è (^)¿Í ´Þ·¯ »çÀÎ($)Àº ´é(anchors)¶ó°í ºÎ¸¨´Ï´Ù. ¿Ö³ÄÇÏ¸é ¹®ÀÚ¸¦ ¼ÒºñÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù; ´ë½Å¿¡, ÆÐÅÏÀ» °Ë»öµÉ ¹®ÀÚ¿­ÀÇ ¼±µÎ ¶Ç´Â ÈĹ̿¡ °íÁ¤ÇÕ´Ï´Ù.

+

^´Â ÆÐÅÏÀÇ ¼±µÎ¿¡ ³ªÅ¸³ª¸é ºÎÇÕÀÌ ÇÑ ÁÙÀÇ ¸Ç ¾Õ¿¡¼­ ÀϾ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ^abc´Â abc123¿¡´Â ºÎÇÕÇÏÁö¸¸ 123abc¿¡´Â ºÎÇÕÇÏÁö ¾Ê½À´Ï´Ù.

+

$°¡ ÆÐÅÏÀÇ ÈĹ̿¡ ³ªÅ¸³ª¸é ºÎÇÕÀÌ ÇÑ ÁÙÀÇ ¸Ç µÚ¿¡¼­ ÀϾ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, abc$´Â 123abc¿¡´Â ºÎÇÕÇÏÁö¸¸ abc123¿¡´Â ºÎÇÕÇÏÁö ¾Ê½À´Ï´Ù.

+

µÎ °³ÀÇ ´éÀ» Á¶ÇÕÇØ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ^abc$´Â abc¿¡¸¸ ºÎÇÕÇÕ´Ï´Ù (Áï, ¾Õ µÚ¿¡ ¾Æ¹« ¹®ÀÚµµ ¾ø¾î¾ß ÇÕ´Ï´Ù).

+

°Ë»öµÉ ÅؽºÆ®¿¡ ¿©·¯ ÁÙÀÌ Æ÷ÇԵǾî ÀÖ´Ù¸é, "m" ¿É¼ÇÀ» ¼ö´ÜÀ¸·Î ´éÀ» ÅؽºÆ® Àüü°¡ ¾Æ´Ï¶ó °¢ ÁÙ¿¡ Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, m)^abc$´Â 123`r`nabc`r`n789¿¡ ºÎÇÕÇÕ´Ï´Ù. ±×·¯³ª "m" ¿É¼ÇÀÌ ¾ø´Ù¸é, ºÎÇÕÇÏÁö ¾Ê½À´Ï´Ù.

\b\b´Â "´Ü¾î °æ°è"¸¦ ¶æÇϴµ¥, ¹®ÀÚ¸¦ ¼ÒºñÇÏÁö ¾Ê±â ¶§¹®¿¡ ´é°ú ºñ½ÁÇÕ´Ï´Ù. ÇöÀç ¹®ÀÚÀÇ »óÅ°¡ ´Ü¾î ¹®ÀÚ(\w)ÀÇ ¹Ý´ë°¡ µÇ±â¸¦ ¿ä±¸ÇÕ´Ï´Ù. ÀüÇüÀûÀ¸·Î ´Ù¸¥ ´Ü¾î ¾È¿¡ ³ªÅ¸³ª´Â ´Ü¾î¿¡ ¿ì¹ßÀûÀ¸·Î ºÎÇÕÇÏ´Â °ÍÀ» ÇÇÇϱâ À§ÇØ »ç¿ëµË´Ï´Ù. + ¿¹¸¦ µé¾î, \bcat\b´Â catfish¿¡ ºÎÇÕÇÏÁö ¾ÊÁö¸¸, cat¿¡´Â ±× µÑ·¹¿¡ ±¸µÎÁ¡ ±âÈ£°¡ ÀÖµç °ø¹é¹®ÀÚ°¡ ÀÖµç »ó°ü¾øÀÌ ºÎÇÕÇÕ´Ï´Ù. ´ë¹®ÀÚ \B´Â ±× ¹Ý´ëÀÔ´Ï´Ù: ÇöÀç ¹®ÀÚ°¡ ´Ü¾î °æ°è¿¡ ÀÖÁö ¾Ê±â¸¦ ¿ä±¸ÇÕ´Ï´Ù.
|¼öÁ÷ ¸·´ë´Â µÎ °³ ÀÌ»óÀÇ ´ë¾ÈÀ» °¡¸¨´Ï´Ù. ´ë¾È Áß ¾î´À °ÍÀÌ¶óµµ ¸¸Á·ÇÏ¸é ºÎÇÕÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, gray|grey´Â gray¿Í grey¿¡ ¸ðµÎ ºÎÇÕÇÕ´Ï´Ù. ºñ½ÁÇÏ°Ô, ÆÐÅÏ gr(a|e)y´Â ¾Æ·¡¿¡ ±â¼úÇÑ ¹Ý°ýÈ£ÀÇ µµ¿òÀ¸·Î °°Àº ÀÏÀ» ÇÕ´Ï´Ù.
(...)

°ýÈ£·Î µÑ·¯½ÎÀÎ Ç׸ñÀº ´ÙÀ½¿¡ ÁÖ·Î ¸¹ÀÌ »ç¿ëµË´Ï´Ù:

+
    +
  • Æò°¡ÀÇ ¼ø¼­¸¦ °áÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, (Sun|Mon|Tues|Wednes|Thurs|Fri|Satur)day´Â ¿äÀÏ À̸§¿¡ ºÎÇÕÇÕ´Ï´Ù.
  • +
  • *, ?, +, ¶Ç´Â {min,max}¸¦ ¹®ÀÚ Çϳª°¡ ¾Æ´Ï¶ó ÀÏ·ÃÀÇ ¹®ÀÚ¿¡ Àû¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, (abc)+´Â ¹®ÀÚ¿­ "abc"°¡ Çϳª ÀÌ»ó ³ªÅ¸³ª¸é ºÎÇÕÇÕ´Ï´Ù; ±×·¡¼­ abcabc123´Â ºÎÇÕÇÏÁö¸¸ ab123À̳ª bc123¿¡´Â ºÎÇÕÇÏÁö ¾Ê½À´Ï´Ù.
  • +
  • abc(.*)xyz¿¡¼­ Á¡-º°°ú °°ÀÌ ºÎÆÐÅÏÀ» ³ªÆ÷ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, RegExMatch()´Â °¢ ÆÐÅÏ¿¡ ºÎÇÕÇÏ´Â ºÎ¹®ÀÚ¿­À» ÀÚ½ÅÀÇ Ãâ·Â ¹è¿­¿¡ ÀúÀåÇÕ´Ï´Ù. ºñ½ÁÇÏ°Ô, RegExReplace()´Â $1¿Í °°Àº ¿ªÂüÁ¶¸¦ ÅëÇÏ¿©, °¢ ºÎÆÐÅÏ¿¡ ºÎÇÕÇÏ´Â ºÎ¹®ÀÚ¿­À» °á°ú¿¡ »ðÀÔÇÒ ¼ö ÀÖ½À´Ï´Ù. ºÎÆÐÅÏÀ» ³ªÆ÷ÇÏ´Â ºÎÀÛ¿ë ¾øÀÌ ¹Ý°ýÈ£¸¦ »ç¿ëÇÏ·Á¸é, ?:¸¦ ¾ÕÂÊ µÎ °³ÀÇ ¹®ÀÚ·Î ÇÏ¿© °ýÈ£ ¾È¿¡ ÁöÁ¤ÇϽʽÿÀ; ¿¹¸¦ µé¾î: (?:.*)
  • +
  • ¹Ù·Î¹Ù·Î ¿É¼ÇÀ» º¯°æÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, (?im)´Â ÆÐÅÏÀÇ ³ª¸ÓÁö¿¡ ´ëÇÏ¿© (¶Ç´Â ºÎÆÐÅÏ ¾È¿¡¼­ ÀϾ¸é ºÎÆÐÅÏ¿¡) ´ë¼Ò¹®ÀÚ ±¸º°°ú ¿©·¯ ÁÙ ¿É¼ÇÀ» ÄÕ´Ï´Ù. ¿ªÀ¸·Î, (?-im)´Â ±× µÑÀ» ´Ù ²ü´Ï´Ù. DPS`r`n`a¸¦ Á¦¿ÜÇÏ°í ¸ðµç ¿É¼ÇÀ» Áö¿øÇÕ´Ï´Ù.
  • +
\t
+ \r
+ etc.

ÀÌ ÇǽŠ¿¬¼Ó¿­Àº Ư¼ö ¹®ÀÚ¸¦ ÀǹÌÇÕ´Ï´Ù. °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â °ÍÀº \t (ÅÇ), \r (ij¸®Áö ¸®ÅÏ), ±×¸®°í \n (Áٳѱè)ÀÔ´Ï´Ù. ¿ÀÅäÇÖÅ°¿¡¼­ ¾×¼¾Æ® (`)´Â ¼±ÅÃÀûÀ¸·Î ÀÌ·± °æ¿ì ¿ª»ç¼± ´ë½Å »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. \xhh ÇüÅÂÀÇ ÇǽŠ¿¬¼Ó¿­µµ Áö¿øÇÕ´Ï´Ù. ¿©±â¿¡¼­ hh´Â 00ºÎÅÍ FF »çÀÌÀÇ ANSI ¹®ÀÚÀÇ ½ÊÀ°Áø ÄÚµåÀÔ´Ï´Ù.

+

v1.0.46.06+¿¡¼­, \R´Â "Á¾·ù¿¡ »ó°ü¾øÀÌ »õÁÙ Çϳª"¸¦ ¶æÇÕ´Ï´Ù. Áï, `a ¿É¼Ç¿¡ ³ª¿­µÇ¾î ÀÖ´Â ÁÙµéÀ» ¶æÇÕ´Ï´Ù (±×·¸Áö¸¸, ¹®ÀÚ ºÎ·ù ¾È¿¡¼­ \RÀº ±×Àú ±âÈ£ "R"¿¡ ºÒ°úÇÕ´Ï´Ù). v1.0.47.05+¿¡¼­, \R¸¦ CR, LF, ±×¸®°í CRLF·Î Á¦ÇÑÇÒ ¼ö ÀÖ½À´Ï´Ù. (¿É¼Ç ¹Ù·Î µÚ) ÆÐÅÏÀÇ ¾Õ¿¡ ´ë¹®ÀÚ·Î (*BSR_ANYCRLF)¸¦ ÁöÁ¤ÇÏ¸é µË´Ï´Ù; ¿¹, im)(*BSR_ANYCRLF)abc\Rxyz

\p{xx}
\P{xx}
\X

[AHK_L 61+]: À¯´ÏÄÚµå ¹®ÀÚ Æ¯¼º. ANSI ºôµå´Â Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. \p{xx}´Â xx Ư¼ºÀÌ ÀÖ´Â ¹®ÀÚ¿¡ ºÎÇÕÇÕ´Ï´Ù. ¹Ý¸é¿¡ \P{xx}´Â xx Ư¼ºÀÌ ¾ø´Â ¹®ÀÚ¿¡ ºÎÇÕÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, \pL´Â ¾î´À ±âÈ£¿¡³ª ºÎÇÕÇÏ°í \p{Lu}´Â ´ë¹®ÀÚ ±âÈ£ÀÌ¸é ºÎÇÕÇÕ´Ï´Ù. \X´Â È®Àå À¯´ÏÄÚµå ¿¬¼Ó¿­À» Çü¼ºÇϱ⸸ ÇÏ¸é ¹®ÀÚÀÇ °³¼ö¿¡ »ó°ü¾øÀÌ ºÎÇÕÇÕ´Ï´Ù.

+

Áö¿øµÇ´Â Ư¼º À̸§°ú ±âŸ ÀÚ¼¼ÇÑ Á¤º¸¸¦ ´ãÀº ¿ÏÀüÇÑ ¸ñ·ÏÀº www.pcre.org/pcre.txt¿¡¼­ "\p{xx}"¸¦ °Ë»öÇØ º¸½Ê½Ã¿À.

(*UCP)

[AHK_L 61+]: ¼öÇ༺´ÉÀ» À§ÇØ, \d, \D, \s, \S, \w, \W, \b ±×¸®°í \B´Â ±âº»°ªÀ¸·Î ASCII ¹®ÀÚ¸¸ ÀÎÁöÇÕ´Ï´Ù. À¯´ÏÄÚµå ºôµåµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. ÆÐÅÏÀÌ (*UCP)·Î ½ÃÀÛÇϸé, À¯´ÏÄÚµå Ư¼ºÀ» »ç¿ëÇÏ¿© ¾î´À ¹®ÀÚ¿¡ ºÎÇÕÇÒÁö °áÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, , \w´Â [\p{L}\p{N}_]¿Í µ¿µîÇØÁö°í \d´Â \p{Nd}¿Í µ¿µîÇØÁý´Ï´Ù.

+
+

Ž¿åÀû: ±âº»°ªÀÔ´Ï´Ù, *, ?, +, ±×¸®°í {min,max}´Â Ž¿åÀûÀÔ´Ï´Ù. ¿Ö³ÄÇÏ¸é ¿©ÀüÈ÷ Àüü ÆÐÅÏÀ» ¸¸Á·½ÃÅ°±â¸¸ ÇÏ¸é ¸¶Áö¸· °¡´ÉÇÑ ¹®ÀÚ±îÁö ¸ðµç ¹®ÀÚ¸¦ ¼ÒºñÇϱ⠶§¹®ÀÔ´Ï´Ù. + +´ë½Å¿¡ °¡´ÉÇÑ Ã¹ ¹®ÀÚ¿¡ ¸ØÃß°Ô ÇÏ°í ½Í´Ù¸é, ´ÙÀ½¿¡ ¹°À½Ç¥¸¦ µ¡ºÙÀ̽ʽÿÀ. ¿¹¸¦ µé¾î, (¹°À½Ç¥ ¾ø´Â) ÆÐÅÏ <.+>´Â ´ÙÀ½°ú °°Àº ¶æÀÔ´Ï´Ù: "<¸¦ ã°í, ´ÙÀ½¿¡ Çϳª ÀÌ»óÀÇ ¹®ÀÚµéÀÌ µû¶ó¿À°í, ´ÙÀ½¿¡ >ÀÌ µû¶ó¿À´Â ¹®ÀÚ¿­À» ã¾Æ¶ó". ÀÌ ÆÐÅÏÀÌ Àüü ¹®ÀÚ¿­ <em>text</em>¿¡ ºÎÇÕÇÏÁö ¸øÇϵµ·Ï ¸·À¸·Á¸é, ¹°À½Ç¥¸¦ µ¡¼À ºÎÈ£ µÚ¿¡ Ãß°¡ÇϽʽÿÀ: <.+?>. ÀÌ·¸°Ô ÇÏ¸é ºÎÇÕÀÌ Ã¹ ¹ø° '>'¿¡¼­ ¸ØÃß°í ±×¸®ÇÏ¿© ù ¹ø° ÅÂ±× <em>¿¡¸¸ ºÎÇÕÇÕ´Ï´Ù.

+

+³»´Ù-º¸±â¿Í µ¹¾Æ-º¸±â Ç¥¸í: ±×·ì (?=...), (?!...), (?<=...), ±×¸®°í (?<!...)´Â Ç¥¸í(assertions)À̶ó°í ºÎ¸¨´Ï´Ù. ¿Ö³ÄÇϸé Á¶°ÇÀº ¸¸Á·Çϵµ·Ï ¿ä±¸ÇÏÁö¸¸ ¹®ÀÚ¸¦ ÀüÇô ¼ÒºñÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, abc(?=.*xyz) ´Â ³»´Ù-º¸±â Ç¥¸íÀÔ´Ï´Ù. ¹®ÀÚ¿­ xyz°¡ ¹®ÀÚ¿­ abcÀÇ ¿À¸¥ÂÊ ¾îµò°¡¿¡¼­ ³¡³ª±â¸¦ ¿ä±¸ÇÕ´Ï´Ù (±×·¸Áö ¾Ê´Ù¸é, Àüü ÆÐÅÏÀ» ºÎÇÕÇÑ °ÍÀ¸·Î °£ÁÖÇÏÁö ¾Ê½À´Ï´Ù). (?=...)´Â ±àÁ¤ ³»´Ù-º¸±â·Î ºÎ¸¨´Ï´Ù. ¿Ö³ÄÇϸé ÁöÁ¤µÈ ÆÐÅÏÀÌ Á¸ÀçÇϱ⸦ ¿ä±¸Çϱ⠶§¹®ÀÔ´Ï´Ù. ¹Ý´ë·Î, (?!...)´Â ºÎÁ¤ ³»´Ù-º¸±â ÀÔ´Ï´Ù. ¿Ö³ÄÇϸé ÁöÁ¤ÇÑ ÆÐÅÏÀÌ Á¸ÀçÇÏÁö ¾Ê±â¸¦ ¿ä±¸ÇÕ´Ï´Ù. ºñ½ÁÇÏ°Ô, (?<=...)¿Í (?<!...)´Â (°¢°¢) ±àÁ¤ ±×¸®°í ºÎÁ¤ µ¹¾Æ-º¸±âÀÔ´Ï´Ù. ¿Ö³ÄÇϸé ÇöÀç À§Ä¡¿¡¼­ ¿À¸¥ÂÊÀÌ ¾Æ´Ï¶ó ¿ÞÂÊÀ» µ¹¾Æ º¸±â ¶§¹®ÀÔ´Ï´Ù. µ¹¾Æ-º¸±â´Â ³»´Ù-º¸±âº¸´Ù Á¦ÇÑÀÌ ´õ ¸¹½À´Ï´Ù. ¿Ö³ÄÇϸé *, ?, ±×¸®°í +¿Í °°Àº ´Ù¾çÇÑ Å©±âÀÇ ¼ö·®ÀÚ¸¦ Áö¿øÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ÇǽŠ¿¬¼Ó¿­ \K´Â µ¹¾Æ-º¸±â Ç¥¸í°ú ºñ½ÁÇØ º¸ÀÔ´Ï´Ù. ¿Ö³ÄÇϸé ÀÌÀü¿¡-ºÎÇÕµÈ ¹®ÀÚ¸¦ ÃÖÁ¾ ºÎÇÕ °á°ú¿¡¼­ »©¹ö¸®±â ¶§¹®ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, foo\Kbar´Â "foobar"¿¡ ºÎÇÕÇÏÁö¸¸ "bar"¿¡ ºÎÇÕÇß´Ù°í º¸°íÇÕ´Ï´Ù.

+

°ü·Ã Ç׸ñ: Á¤±Ô Ç¥Çö½ÄÀº RegExMatch(), RegExReplace(), ±×¸®°í SetTitleMatchMode°¡ Áö¿øÇÕ´Ï´Ù.

+

¸¶Áö¸· ´çºÎ: ÀÌ ÆäÀÌÁö°¡ ¾ÆÁÖ »ç¿ëµÇ´Â RegEx Ư¡ÀÇ ´ëºÎºÐÀ» ´Ù·ç°í ÀÖÁö¸¸, ÀÌ ¸»°íµµ Á¶°ÇÀû ºÎºÐ ÆÐÅÏ °°ÀÌ, ŽÇèÇØ º¼ ¸¸ÇÑ ¼ö ¸¹Àº Ư¡ÀÌ ÀÖ½À´Ï´Ù. ¿ÏÀüÇÑ PCRE ¸Å´º¾óÀº www.pcre.org/pcre.txt¿¡ ÀÖ½À´Ï´Ù.

+

 

+ + diff --git a/src/docs/misc/RegExCallout.htm b/src/docs/misc/RegExCallout.htm new file mode 100644 index 0000000..54bc546 --- /dev/null +++ b/src/docs/misc/RegExCallout.htm @@ -0,0 +1,128 @@ + + +Regular Expression Callouts + + + + + + + +

Á¤±Ô Ç¥Çö½Ä Callouts [AHK_L 14+]

+ +

¿ÜºÎÈ£Ãâ(Callouts)Àº Á¤±Ô Ç¥Çö½Ä ÀÏÄ¡ ÀÛ¾÷ Áß°£¿¡ Àӽ÷ΠÁ¦¾î¸¦ ½ºÅ©¸³Æ®¿¡ ³Ñ±â´Â ¼ö´ÜÀ» Á¦°øÇÕ´Ï´Ù. PCRE-Ç¥ÁØ callout Ư¡¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â pcre.txt¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

ÄݾƿôÀº ÇöÀç RegExMatch ±×¸®°í RegExReplace¸¸ Áö¿øÇÕ´Ï´Ù.

+ +

±¸¹®

+ +

¿ÀÅäÇÖÅ°¿¡¼­ callout ±¸¹®Àº (?CNumber:Function)ÀÔ´Ï´Ù. Number¿Í Function ¸ðµÎ ¼±ÅÃÀûÀÔ´Ï´Ù. ½ÖÁ¡ ':'Àº Function°¡ ÁöÁ¤µÇ¾úÀ» °æ¿ì¿¡¸¸ Çã¿ëµË´Ï´Ù. Number¸¦ »ý·«ÇÏ¸é ¼±ÅÃÀûÀÔ´Ï´Ù. Function°¡ ÁöÁ¤µÇ¾úÁö¸¸ »ç¿ëÀÚ-Á¤ÀÇ ÇÔ¼öÀÇ À̸§ÀÌ ¾Æ´Ï¸é, ÄÄÆÄÀÏ ¿¡·¯°¡ ÀϾ°í ÆÐÅÏ-ÀÏÄ¡°¡ ½ÃÀÛµÇÁö ¾Ê½À´Ï´Ù.

+ +

+FunctionÀ» »ý·«Çϸé, ÇÔ¼ö À̸§À» ºìµå½Ã pcre_calloutÀ̶ó´Â À̸§ÀÇ º¯¼ö¿¡ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ À̸§À¸·Î Àü¿ª º¯¼ö¿Í Áö¿ª º¯¼ö°¡ ¸ðµÎ Á¸ÀçÇϸé, Áö¿ª º¯¼ö°¡ ¿ì¼± ¼øÀ§¸¦ °®½À´Ï´Ù. pcre_callout¿¡ »ç¿ëÀÚ-Á¤ÀÇ ÇÔ¼ö À̸§ÀÌ ¾øÀ¸¸é, FunctionÀÌ »ý·«µÈ calloutsÀº ¹«½ÃµË´Ï´Ù.

+ +

Callout ÇÔ¼ö

+ +
Function(Match, CalloutNumber, FoundPos, Haystack, NeedleRegEx)
+{
+    ...
+}
+

Callout ÇÔ¼ö´Â ¸Å°³º¯¼ö¸¦ 5 °³ ±îÁö Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
    +
  • Match: ÇÊ¿äÇÏ¸é ¹è¿­ º¯¼öÀÇ »ý¼ºµµ Æ÷ÇÔÇؼ­ RegExMatchÀÇ UnquotedOutputVar¿Í µ¿µîÇÕ´Ï´Ù.
  • +
  • CalloutNumber: ÄݾƿôÀÇ Number¸¦ ¹Þ½À´Ï´Ù.
  • +
  • FoundPos: ÇöÀçÀÇ ÀáÀçÀûÀÎ ºÎÇÕÀÇ À§Ä¡¸¦ ¹Þ½À´Ï´Ù.
  • +
  • Haystack: RegExMatch ¶Ç´Â RegExReplace¿¡ °Ç³×¾îÁø HaystackÀ» ¹Þ½À´Ï´Ù.
  • +
  • NeedleRegEx: RegExMatch ¶Ç´Â RegExReplaceReceives¿¡ °Ç³×¾îÁø NeedleRegEx¸¦ ¹Þ½À´Ï´Ù.
  • +
+

+ÀÌ À̸§µéÀº ±×³É Á¦½Ã ¿ëÀÏ »ÓÀÔ´Ï´Ù. ½ÇÁ¦ À̸§Àº ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù.

+ +

ÆÐÅÏ-ÀÏÄ¡´Â Äݾƿô ÇÔ¼öÀÇ °á°ú¿¡ µû¶ó °è¼Ó ÁøÇàµÇ°Å³ª ½ÇÆÐÇÕ´Ï´Ù:

+
    +
  • Äݾƿô ÇÔ¼ö°¡ 0À» µ¹·ÁÁְųª ¼ýÄ¡ °ªÀ» µ¹·ÁÁÖÁö ¾ÊÀ¸¸é, ºÎÇÕÀº Á¤»ó´ë·Î ÁøÇàµË´Ï´Ù.
  • +
  • ÇÔ¼ö°¡ 1 ÀÌ»óÀ» µ¹·ÁÁÖ¸é, ÇöÀç À§Ä¡ÀÇ ºÎÇÕÀº ½ÇÆÐÇÕ´Ï´Ù. ±×·¯³ª ´Ù¸¥ ºÎÇÕÀÇ °¡´É¼º Å×½ºÆ®´Â °è¼Ó ÁøÇàµË´Ï´Ù.
  • +
  • ÇÔ¼ö°¡ -1À» µ¹·ÁÁÖ¸é, ºÎÇÕÀ» Æ÷±âÇÕ´Ï´Ù.
  • +
  • ÇÔ¼ö°¡ -1º¸´Ù ÀÛÀº °ªÀ» µ¹·ÁÁÖ¸é, PCRE ¿¡·¯ ÄÚµå·Î °£ÁÖÇÏ°í ºÎÇÕÀ» Æ÷±âÇÕ´Ï´Ù. RegExMatch´Â ºó ¹®ÀÚ¿­À» µ¹·ÁÁÖ´Â ¹Ý¸é¿¡, RegExReplace´Â ¿ø·¡ÀÇ HaystackÀ» µ¹·ÁÁÝ´Ï´Ù. ¾î´À °æ¿ìµç, ErrorLevel¿¡ ¿¡·¯ Äڵ尡 ´ã±é´Ï´Ù.
  • +
+ +

¿¹¸¦ µé¾î:

+ +
Haystack = The quick brown fox jumps over the lazy dog.
+RegExMatch(Haystack, "i)(The) (\w+)\b(?CCallout)")
+Callout(m) {
+    MsgBox m=%m%`nm1=%m1%`nm2=%m2%
+    return 1
+}
+

+À§ÀÇ ¿¹Á¦¿¡¼­, Func´Â Äݾƿô ¾ÕÀÇ ÆÐÅÏ ÀϺο¡ ºÎÇÕÇÏ´Â ºÎ¹®ÀÚ¿­¸¶´Ù ÇÑ ¹ø¾¿ È£ÃâµË´Ï´Ù. +\b´Â ºÎÇÕ¿¡¼­ ºÒ¿ÏÀüÇÑ ´Ü¾îµéÀ» ¹èÁ¦ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î The quic, The qui, The qu, µîµîÀº ´Ü¾î°¡ ¾Æ´Ï¹Ç·Î Á¦¿ÜµË´Ï´Ù.

+ +

EventInfo

+ +

+A_EventInfo¸¦ ÅëÇÏ¿© pcre_callout_block ±¸Á¶Ã¼¿¡ Á¢±ÙÇϸé Ãß°¡ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù .

+ +
version           := NumGet(A_EventInfo,  0, "Int")
+callout_number    := NumGet(A_EventInfo,  4, "Int")
+offset_vector     := NumGet(A_EventInfo,  8)
+subject           := NumGet(A_EventInfo,  8 + A_PtrSize)
+subject_length    := NumGet(A_EventInfo,  8 + A_PtrSize*2, "Int")
+start_match       := NumGet(A_EventInfo, 12 + A_PtrSize*2, "Int")
+current_position  := NumGet(A_EventInfo, 16 + A_PtrSize*2, "Int")
+capture_top       := NumGet(A_EventInfo, 20 + A_PtrSize*2, "Int")
+capture_last      := NumGet(A_EventInfo, 24 + A_PtrSize*2, "Int")
+pad := A_PtrSize=8 ? 4 : 0  ; Compensate for 64-bit data alignment.
+callout_data      := NumGet(A_EventInfo, 28 + pad + A_PtrSize*2)
+pattern_position  := NumGet(A_EventInfo, 28 + pad + A_PtrSize*3, "Int")
+next_item_length  := NumGet(A_EventInfo, 32 + pad + A_PtrSize*3, "Int")
+if version >= 2
+    mark   := StrGet(NumGet(A_EventInfo, 36 + pad + A_PtrSize*3, "Int"), "UTF-8")
+
+

+´õ ÀÚ¼¼ÇÑ Á¤º¸´Â pcre.txt, NumGet ±×¸®°í A_PtrSize¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

Auto-Callout

+ +

+ÆÐÅÏÀÇ ¿É¼Ç¿¡ C¸¦ Æ÷ÇÔÇϸé auto-callout ¸ðµå°¡ ÄÑÁý´Ï´Ù. ÀÌ ¸ðµå¿¡¼­ (?C255)¿Í µ¿µîÇÑ ÄݾƿôÀÌ ÆÐÅÏÀÇ °¢ Ç׸ñ ¾Õ¿¡ »ðÀԵ˴ϴÙ. ¿¹¸¦ µé¾î, ´ÙÀ½ ÅÛÇø´À» »ç¿ëÇϸé Á¤±Ô Ç¥Çö½ÄÀ» µð¹ö±×ÇÒ ¼ö ÀÖ½À´Ï´Ù:

+ +
; ±âº» Äݾƿô ÇÔ¼ö¸¦ ¼³Á¤ÇÕ´Ï´Ù.
+pcre_callout = DebugRegEx
+
+; ÀÚµ¿-Äݾƿô ¿É¼Ç C¸¦ °¡Áö°í RegExMatch¸¦ È£ÃâÇÕ´Ï´Ù.
+RegExMatch("xxxabc123xyz", "C)abc.*xyz")
+
+DebugRegEx(Match, CalloutNumber, FoundPos, Haystack, NeedleRegEx)
+{
+    ; ´ÙÀ½ Çʵåµé¿¡ ´ëÇÑ ¼³¸íÀº pcre.txt¸¦ ÂüÁ¶ÇϽʽÿÀ.
+    start_match       := NumGet(A_EventInfo, 12 + A_PtrSize*2, "Int")
+    current_position  := NumGet(A_EventInfo, 16 + A_PtrSize*2, "Int")
+    pad := A_PtrSize=8 ? 4 : 0
+    pattern_position  := NumGet(A_EventInfo, 28 + pad + A_PtrSize*3, "Int")
+    next_item_length  := NumGet(A_EventInfo, 32 + pad + A_PtrSize*3, "Int")
+
+    ; ´ÙÀ½°ú °°ÀÌ Ç¥½Ã: >>ÇöÀç ºÎÇÕ<<.
+    _HAYSTACK:=SubStr(Haystack, 1, start_match)
+        . ">>" SubStr(Haystack, start_match + 1, current_position - start_match)
+        . "<<" SubStr(Haystack, current_position + 1)
+    
+    ; ´ÙÀ½°ú °°ÀÌ Ç¥½Ã: >>Æò°¡µÉ ´ÙÀ½ Ç׸ñ<<.
+    _NEEDLE:=  SubStr(NeedleRegEx, 1, pattern_position)
+        . ">>" SubStr(NeedleRegEx, pattern_position + 1, next_item_length)
+        . "<<" SubStr(NeedleRegEx, pattern_position + 1 + next_item_length)
+    
+    ListVars
+    ; °è¼ÓÇÏ·Á¸é Pause¸¦ ´©¸£½Ê½Ã¿À.
+    Pause
+}
+ +

³íÆò

+ +

+ÄݾƿôÀº ÇöÀçÀÇ ÀÇ»ç-¾²·¹µå¿¡¼­ ½ÇÇàµË´Ï´Ù. ±×·¯³ª Äݾƿô ÇÔ¼ö°¡ ¹ÝȯµÈ ÈÄ¿¡ A_EventInfoÀÇ ÀÌÀü °ªÀÌ º¹±¸µË´Ï´Ù. RegExMatch ¶Ç´Â RegExReplace°¡ µ¹¾Æ¿À±â ¹Ù·Î Àü±îÁö ErrorLevelÀº ¼³Á¤µÇÁö ¾Ê½À´Ï´Ù.

+

+PCRE´Â ¾î¶² °æ¿ì¿¡ ºÎÇÕÀÌ ºÒ°¡´ÉÇÏ´Ù°í ÆÇ´ÜÇϸé ÀÏÂï Ãë¼ÒµÇµµ·Ï ÃÖÀûÈ­µÇ¾î ÀÖ½À´Ï´Ù. ±×·± °æ¿ì¶ó¸é ¸ðµç Äݾƿô¿¡ ´ëÇÏ¿© ÀÌ·± ÃÖÀûÈ­¸¦ ²ø ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ÆÐÅÏÀÇ Ã³À½¿¡ (*NO_START_OPT) ¸¦ ÁöÁ¤ÇÏ¸é µË´Ï´Ù. ÀÌ ±â´ÉÀº v1.1.05 ÀÌ»óÀ» ¿ä±¸ÇÕ´Ï´Ù.

+ + + diff --git a/src/docs/misc/Remap.htm b/src/docs/misc/Remap.htm new file mode 100644 index 0000000..c7b3618 --- /dev/null +++ b/src/docs/misc/Remap.htm @@ -0,0 +1,204 @@ + + +Remapping Keys and Buttons + + + + + + + + + +

Å°¿Í ¹öÆ° ¸®¸ÊÇϱâ

+ +

µé¾î°¡´Â ¸»

+

+ÇÑ°è: ¾Æ·¡¿¡ ±â¼úÇÏ´Â ¿ÀÅäÇÖÅ°ÀÇ ¸®¸ÊÇΠƯ¡Àº ÀϹÝÀûÀ¸·Î À©µµ¿ìÁî ·¹Áö½ºÆ®¸®¸¦ ÅëÇÏ¿© ¸®¸ÊÇÎ ÇÏ´Â °Í¿¡ ºñÇØ ¼ø¼öÇÏÁö ¸øÇϸç È¿°úµµ ±×¿¡ ¸ø ¹ÌĨ´Ï´Ù. °¢ Á¢±Ù¹ýÀÇ ÀåÁ¡°ú ´ÜÁ¡¿¡ °üÇÑ °ÍÀº ·¹Áö½ºÆ®¸® ¸®¸ÊÇÎÀ» ÂüÁ¶ÇϽʽÿÀ.

+ +

Å°º¸µå¿Í ¸¶¿ì½º ¸®¸ÊÇϱâ

+

³»Àå ¸®¸ÊÇΠƯ¡ÀÇ ±¸¹®Àº OriginKey::DestinationKeyÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ÁÙ¸¸ µé¾îÀÖ´Â ½ºÅ©¸³Æ®´Â "a" Å°¸¦ ¸¶Ä¡ "b" Űó·³ ÇൿÇÏ°Ô ¸¸µì´Ï´Ù:

+
a::b
+

+À§ÀÇ ¿¹Á¦´Â "b" Å° ÀÚü¸¦ º¯°æÇÏÁö ¾Ê½À´Ï´Ù. "b" Å°´Â °è¼ÓÇؼ­ "b" Å°´­¸²À» Àü¼ÛÇÕ´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ´Ù¸¥ °Í¿¡ ¸®¸ÊÇÏÁö¸¸ ¾Ê´Â´Ù¸é ¸»ÀÔ´Ï´Ù:

+
a::b
+b::a
+

+À§ÀÇ ¿¹Á¦´Â ¼Ò¹®ÀÚ¸¦ »ç¿ëÇÕ´Ï´Ù. ´ëºÎºÐÀÇ ¸ñÀû¿¡ ¼Ò¹®ÀÚ¸¦ ±ÇÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é »óÀÀÇÏ´Â ´ë¹®ÀÚµµ ¸®¸ÊµÇ±â ¶§¹®ÀÔ´Ï´Ù (Áï, CapslockÀÌ "ÄÑÁ®" Àְųª Shift Å°°¡ ´­¸®¸é ´ë¹®ÀÚ°¡ Àü¼ÛµË´Ï´Ù). ´ëÁ¶ÀûÀ¸·Î, ´ë¹®ÀÚ¸¦ ¿À¸¥ÂÊ¿¡ ÁöÁ¤ÇÏ¸é ´ë¹®ÀÚ¸¦ °­Á¦ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ÁÙÀº (CapslockÀÌ ²¨Á® ÀÖ´Â ÇÑ) "a"³ª "A"¸¦ ´©¸¦ ¶§ ´ë¹®ÀÚ B¸¦ »ý»êÇÕ´Ï´Ù:

+
a::B
+

 

+

+¸¶¿ì½º ¸®¸ÊÇÎ: Å°º¸µå ´ë½Å¿¡ ¸¶¿ì½º¸¦ ¸®¸ÊÇÏ·Á¸é °°Àº Á¢±Ù¹ýÀ» »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+ + + + + + + + + + + + + +
MButton::Shift°¡¿îµ¥ ¹öÆ°À» ¸¶Ä¡ Shift Űó·³ ÇൿÇÏ°Ô ¸¸µì´Ï´Ù.
XButton1::LButton³× ¹ø° ¸¶¿ì½º ¹öÆ°À» ¿ÞÂÊ ¹öưó·³ ÇàÀ§ÇÏ°Ô ¸¸µì´Ï´Ù.
RAlt::RButton¿À¸¥ÂÊ Alt Å°¸¦ ¿À¸¥ÂÊ ¸¶¿ì½º ¹öÆ° ó·³ ÇàÀ§ÇÏ°Ô ¸¸µì´Ï´Ù.
+

 

+

´Ù¸¥ À¯¿ëÇÑ ¸®¸ÊÇÎ:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Capslock::CtrlCapslockÀ» Control Å°°¡ µÇµµ·Ï ¸¸µì´Ï´Ù. CapslockÀ» ±×´ë·Î ÄÑ°í ²ø ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ, ¸ÕÀú +Capslock::Capslock ¸®¸ÊÇÎÀ» Ãß°¡ÇÕ´Ï´Ù. ÀÌ·¸°Ô Çϸé Shift Å°¸¦ ´©¸¥ ä CapslockÀ» ´©¸¦ ¶§ CapslockÀ» Åä±ÛÇÕ´Ï´Ù. µÎ ¸®¸ÊÇÎ ¸ðµÎ Ãß°¡ ¼ö½ÄÅ°°¡ ´­·Á ÀÖ´Â °ÍÀ» Çã¿ëÇϱ⠶§¹®¿¡, ´õ ±¸Ã¼ÀûÀ¸·Î +Capslock::Capslock ¸®¸ÊÇÎÀ» ¸ÕÀú ¹èÄ¡ÇØ¾ß Capslock::CtrlÀÌ ÀÛµ¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.
XButton2::^LButton´Ù¼¸ ¹ø° ¸¶¿ì½º ¹öÆ°À» (XButton2) Control-LeftClickÀÌ µÇµµ·Ï ¸¸µì´Ï´Ù.
RAlt::AppsKey¿À¸¥ÂÊ Alt Å°´ÂApps Å°°¡ µË´Ï´Ù (¹®¸Æ ¸Þ´º¸¦ ¿©´Â Å°ÀÔ´Ï´Ù).
RCtrl::RWin¿À¸¥ÂÊ Control Å°¸¦ ¿À¸¥ÂÊ Windows Å°°¡ µÇµµ·Ï ¸¸µì´Ï´Ù.
Ctrl::AltControl Å°¸¦ Alt Űó·³ ÇàÀ§Çϵµ·Ï ¸¸µì´Ï´Ù. ±×·¸Áö¸¸, alt-tab ¹®Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ.
^x::^cControl-X°¡ Control-C¸¦ »ý»êÇÕ´Ï´Ù. ¶Ç Control-Alt-X´Â Control-Alt-C, µîµîÀ» »ý»êÇÕ´Ï´Ù.
RWin::Return¿À¸¥ÂÊ Windows Å°¸¦ ºÒ´ÉÀ¸·Î ¸¸µì´Ï´Ù. ´Ü¼øÈ÷ returnÀ» ÇÒ´çÇß½À´Ï´Ù.
+

+ÀÌ ¿¹Á¦µéÀ» ½ÃÇèÇØ º¼ ¼ö ÀÖ½À´Ï´Ù. »õ ÅؽºÆ® ÆÄÀÏ·Î "Remap.ahk"¿Í °°ÀÌ º¹»çÇÑ ´ÙÀ½, ±× ÆÄÀÏÀ» ±âµ¿½Ãŵ´Ï´Ù.

+

+¿ÏÀüÇÑ Å°¸ñ·Ï°ú ¸¶¿ì½º ¹öÆ° À̸§ ¸ñ·ÏÀº Å° ¸®½ºÆ®¸¦ ÂüÁ¶ÇϽʽÿÀ.

+ +

³íÆò

+

+Áö½Ã¾î #IfWinActive/Exist¸¦ »ç¿ëÇÏ¸é ¼±ÅÃµÈ ¸®¸ÊÇÎÀ» ÁöÁ¤ÇÑ Ã¢¿¡ ´ëÇؼ­¸¸ ÄÓ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
#IfWinActive ahk_class Notepad
+a::b  ;  'a'Å°°¡ 'b' Å°¸¦ Àü¼ÛÇϵµ·Ï ¸¸µéÁö¸¸, ¿ÀÁ÷ ³ëÆ® ÆÐµå ¾È¿¡¼­¸¸ ÀϾ´Ï´Ù.
+#IfWinActive  ; ÀÕ´Ù¸£´Â ¸®¸ÊÇΰú ÇÖÅ°°¡ ¸ðµç â¿¡ È¿·ÂÀ» ¹ÌĨ´Ï´Ù.
+

+Å°³ª ¸¶¿ì½º¸¦ ¸®¸ÊÇÎ ÇÏ´Â ÀÏÀº ´ÙÀ½°ú °°Àº °üÁ¡¿¡¼­ "¿Ïº®ÇÕ´Ï´Ù":

+
    +
  • Control³ª Shift °°Àº ¼ö½Ä Å°¸¦ ´©¸¥ ä·Î ¿ø·¡ÀÇ Å°¸¦ ŸÀÚÇÏ¸é ±× ¼ö½ÄÅ°°¡ ¸ñÇ¥ Å°¿¡ È¿°ú¸¦ ¹ßÈÖÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, b::a´Â Control-B¸¦ ´©¸£¸é Control-A¸¦ »ý»êÇÕ´Ï´Ù .
  • +
  • CapslockÀº ÀϹÝÀûÀ¸·Î ¸®¸ÊµÈ Å°¿¡ Á¤»ó Å°¿Í ¸¶Âù°¡Áö ¹æ½ÄÀ¸·Î ¿µÇâÀ» ¹ÌĨ´Ï´Ù.
  • +
  • ¿ø·¡ Å°¸¦ °è¼Ó ´©¸£°í ÀÖ´Â µ¿¾È ¸ñÇ¥ Å°³ª ¸ñÇ¥ ¹öÆ°ÀÌ ´­·ÁÁý´Ï´Ù. ±×·¸Áö¸¸, ¾î¶² °ÔÀÓÀº ¸®¸ÊÇÎÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù; ±×·± °æ¿ì, Å°º¸µå¿Í ¸¶¿ì½º´Â ¸®¸ÊµÇÁö ¾ÊÀº °Íó·³ ÇàÀ§ÇÕ´Ï´Ù.
  • +
  • ¸®¸ÊµÈ Å°´Â ´­·Á ÀÖ´Â µ¿¾È ÀÚµ¿À¸·Î ¹Ýº¹ÇÕ´Ï´Ù (¸¶¿ì½º ¹öÆ°ÀÌ µÇµµ·Ï ¸®¸ÊµÈ Å°´Â Á¦¿Ü).
  • +
+

¸®¸ÊµÈ Å°¸¦ Á¤»ó Űó·³ Ã˹߽Ãų ¼ö ÀÖÁö¸¸, ±âº»°ªÀ¸·Î ¸¶¿ì½º ÇÖÅ°³ª °¥°í¸® ÇÖÅ°´Â Ã˹߽Ãų ¼ö ¾ø½À´Ï´Ù. +(ListHotkeys¸¦ »ç¿ëÇÏ¸é ¾î´À ÇÖÅ°°¡ "°¥°í¸®")ÀÎÁö ¾Ë ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¸®¸ÊÇÎ a::b°¡ ÀÛµ¿ ÁßÀÏ ¶§, Ctrl-Alt-A¸¦ ´©¸£¸é ^!b ÇÖÅ°°¡ Ã˹ߵ˴ϴÙ. ¿ÀÁ÷ ^!b°¡ °¥°í¸® ÇÖÅ°°¡ ¾Æ´Ò °æ¿ì¿¡¸¸ ±×·¸½À´Ï´Ù. ^!b°¡ °¥°í¸® ÇÖÅ°ÀÏ °æ¿ì, ^!a¸¦ ÇÖÅ°·Î Á¤ÀÇÇϸé Ctrl-Alt-A ´Â Ctrl-Alt-B¿Í °°Àº ÇàÀ§¸¦ ¼öÇàÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
a::b
+^!a::
+^!b::
+ToolTip You pressed %A_ThisHotkey%.
+return
+

+´ë¾ÈÀûÀ¸·Î, v1.1.06 ÀÌÈÄ¿¡¼­, #InputLevel¸¦ »ç¿ëÇÏ¸é ±âº» ÇàÀ§¸¦ ¿À¹ö¶óÀ̵åÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
#InputLevel 1
+a::b
+
+#InputLevel 0
+^!b::
+ToolTip You pressed %A_ThisHotkey%.
+return
+

+SendMode°¡ ÀÚµ¿ ½ÇÇà ¼½¼Ç¿¡ »ç¿ëÁßÀ̸é (½ºÅ©¸³Æ® »ó´Ü ºÎºÐ), ¸ðµç ¸®¸ÊÇο¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù. ±×·¸Áö¸¸, ¸®¸ÊÇÎÀº Send {Blind}¸¦ »ç¿ëÇÏ°í SendPlay mode´Â ¿ÏÀüÇÏ°Ô {Blind}¸¦ Áö¿øÇÏÁö´Â ¸øÇϱ⠶§¹®¿¡, ¾î¶² ¸®¸ÊÇÎÀº SendPlay ¸ðµå¿¡¼­ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼öµµ ÀÖ½À´Ï´Ù (Ư, Control, Shift, Alt, ±×¸®°í Win). À̸¦ µ¹¾Æ°¡·Á¸é, ¸®¸ÊÇÎÀ» »ç¿ëÇÒ ¶§ SendPlay¸¦ ÀÚµ¿-½ÇÇà ¼½¼Ç¿¡ »ç¿ëÇÏÁö ¸¶½Ê½Ã¿À; ±× ´ÙÀ½ºÎÅÍ ´Ù¸¥ °÷¿¡´Â ¸í·É¾î SendPlay vs. Send¸¦ »ç¿ëÇÏ½Ã¸é µË´Ï´Ù. ´ë¾ÈÀûÀ¸·Î, ¸®¸ÊÇÎÀ» ÇÖÅ°·Î ¹ø¿ªÇÒ ¼ö ÀÖ½À´Ï´Ù. (¾Æ·¡¿¡ ±â¼úÇÏ´Â ¹Ù¿Í °°ÀÌ) ¸í½ÃÀûÀ¸·Î SendEvent vs. Send¸¦ È£ÃâÇÕ´Ï´Ù.

+

+½ºÅ©¸³Æ®°¡ ±âµ¿ÇÒ ¶§, °¢ ¸®¸ÊÇÎÀº ÇÑ ½ÖÀÇ ÇÖÅ°·Î ¹ø¿ªµË´Ï´Ù. ¿¹¸¦ µé¾î, a::b°¡ µé¾îÀÖ´Â ½ºÅ©¸³Æ®´Â ½ÇÁ¦·Î´Â ´ë½Å¿¡ ´ÙÀ½ÀÇ µÎ ÇÖÅ°°¡ µé¾î ÀÖ½À´Ï´Ù:

+
*a::
+SetKeyDelay -1   ; ¸ñÇ¥ Å°°¡ ¸¶¿ì½º ¹öÆ°À̸é, ´ë½Å¿¡ SetMouseDelay°¡ »ç¿ëµË´Ï´Ù.
+Send {Blind}{b DownTemp}  ; DownTemp´Â Down°ú °°½À´Ï´Ù. ´Ü ´Ù¸¥ Send ¸í·É¾î´Â "b" °¡ SendÇÏ´Â µ¿¾È ´­·Á ÀÖÀ» °ÍÀ̶ó°í °¡Á¤ÇÏÁö ¾Ê½À´Ï´Ù.
+return
+
+*a up::
+SetKeyDelay -1  ; ¿Ö ´­¸²-Áö¼Ó½Ã°£ÀÌ ÀÌ SetKeyDelays Áß Çϳª·Î ÁöÁ¤µÇÁö ¾Ê´ÂÁö ±× ÀÌÀ¯´Â ¾Æ·¡¸¦ º¸½Ê½Ã¿À.
+Send {Blind}{b Up}
+return
+

±×·¸Áö¸¸, À§ÀÇ ÇÖÅ°´Â ´ÙÀ½°ú °°Àº »óȲ¿¡¼­ ´Þ¶óÁý´Ï´Ù:

+
    +
  1. ¼Ò½º Å°°¡ LCtrlÀÌ°í ¸ñÇ¥ Å°°¡ Alt Å°ÀÏ ¶§, ÁÙ Send {Blind}{LAlt DownTemp}´Â Send {Blind}{LCtrl Up}{LAlt DownTemp}·Î ±³Ã¼µË´Ï´Ù. ¼Ò½º°¡ RCtrlÀÏ °æ¿ìµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. ´Ü, {RCtrl up}ÀÌ »ç¿ëµÇ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.
  2. +
  3. Å°º¸µå Å°°¡ ¸¶¿ì½º ¹öÆ°À¸·Î ¸®¸ÊÁßÀÏ ¶§ (¿¹, RCtrl::RButton), À§ÀÇ ÇÖÅ°´Â SetKeyDelay ´ë½Å¿¡ SetMouseDelay¸¦ »ç¿ëÇÕ´Ï´Ù. °Ô´Ù°¡, À§ÀÇ Ã¹ ÇÖÅ°´Â ´ÙÀ½À¸·Î ±³Ã¼µË´Ï´Ù. ÀÌ ¶§¹®¿¡ Å°º¸µåÀÇ ÀÚµ¿-¹Ýº¹ Ư¡Àº ¹Ýº¹ÀûÀÎ ¸¶¿ì½º Ŭ¸¯À» ¸¸µé¾î ³»Áö ¸øÇÕ´Ï´Ù: +
    *RCtrl::
    +SetMouseDelay -1
    +if not GetKeyState("RButton")  ; Áï, ¿À¸¥ÂÊ ¹öÆ°ÀÌ ¾ÆÁ÷ ´­¸®Áö ¾Ê¾Ò½À´Ù.
    +    Send {Blind}{RButton DownTemp}
    +return
    +
  4. +
+

SetKeyDelayÀÇ µÎ ¹ø° ¸Å°³º¯¼ö´Â (´­¸² Áö¼Ó ½Ã°£) À§ÀÇ ÇÖÅ°¿¡¼­ »ý·«µË´Ï´Ù. {b down}°ú {b up}°ú °°ÀÌ ´©¸§¸¸ Àְųª ¶À¸¸ ÀÖ´Â À̺¥Æ®¿¡´Â ´­¸² Áö¼Ó ½Ã°£ÀÌ Àû¿ëµÇÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ±×·¸Áö¸¸, Shift/Ctrl/Alt/Win Å°ÀÇ »óÅ º¯È­¿¡´Â Àû¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î a::B³ª a::^b¿Í °°Àº ¸®¸ÊÇο¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù. °á·ÐÀûÀ¸·Î, ½ºÅ©¸³Æ®°¡ ÀÚµ¿-½ÇÇà ¼½¼Ç¸¦ ÅëÇÏ¿© È¿°ú¸¦ ÁØ ¸ðµç ´©¸§ Áö¼Ó ½Ã°£Àº ¸ðµç ¸®¸ÊÇο¡ Àû¿ëµË´Ï´Ù.

+

+ÇÑ ½ÖÀÇ Å°¸¦ Á÷Á¢ÀûÀ¸·Î ÇϳªÀÇ Å°¿¡ ¸®¸ÊÇÒ ¼ö´Â ¾øÁö¸¸ (¿¹, a & c::b°ú °°ÀÌ ÀÛ¼ºÇÏ´Â °ÍÀº ¹«È¿ÀÔ´Ï´Ù), ¸í½ÃÀûÀ¸·Î Àú À§¿¡ ÀÖ´Â ¿¹Á¦·ÎºÎÅÍ À§ ¾Æ·¡ ÇÖÅ°¸¦ Ãß°¡Çϸé ÀÌ È¿°ú¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù: ±×³É *a::¸¦ with a & c::·Î, ±×¸®°í *a up::¸¦ a & c up::·Î ±³Ã¼Çϱ⸸ ÇÏ¸é µË´Ï´Ù.

+

+¸®¸ÊÇÎÀº À§¿¡ ±â¼úÇÑ ¹Ù¿Í °°ÀÌ ÇÖÅ°·Î ¹ø¿ªµÇ±â ¶§¹®¿¡, Suspend ¸í·É¾î¿¡ ¿µÇâÀ» ¹Þ½À´Ï´Ù. ºñ½ÁÇÏ°Ô, Hotkey ¸í·É¾î´Â ¸®¸ÊÇÎÀ» º¯°æÇϰųª ²ø ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ µÎ ¸í·É¾î´Â ¸®¸ÊÇÎ a::b¸¦ ²ü´Ï´Ù.

+
Hotkey, *a, off
+Hotkey, *a up, off
+

+Alt-tab ¹®Á¦: +Å°³ª ¸¶¿ì½º ¹öÆ°À» Alt Å°°¡ µÇµµ·Ï ¸®¸ÊÇß´Ù¸é, ±× Å°´Â ¾Æ¸¶µµ Á¦´ë·Î alt-tabÀ» ÀÛµ¿½ÃÅ°Áö ¸øÇÒ °ÍÀÔ´Ï´Ù. °¡´ÉÇÑ ÇØ°áÃ¥Àº ÇÖÅ° *Tab::Send {Blind}{Tab}¸¦ Ãß°¡ÇÏ´Â °ÍÀÔ´Ï´Ù -- ±×·¯³ª ÁøÂ¥ ÇÖÅ°°¡ ¾ËÆ® ÅÇÀ» ¼öÇàÇÒ ¶§ °£¼·À» ÀÏÀ¸Å³ °¡´É¼ºÀÌ ³ô´Ù´Â Á¡À» ¸í½ÉÇϽʽÿÀ. ±×·¯¹Ç·Î, ¿ÀÁ÷ ¸®¸ÊµÈ alt-tab ÇÖÅ°¸¸ ´Üµ¶À¸·Î »ç¿ëÇÒ °æ¿ì¿¡¸¸ »ç¿ëÀ» °í·ÁÇØ¾ß ÇÕ´Ï´Ù.

+

+Å° ¸®½ºÆ® ÆäÀÌÁö¿¡ ³ª¿­µÈ Å°¿Í ¸¶¿ì½º ¹öÆ° ¸»°íµµ, ¼Ò½º Å°·Î´Â °¡»ó Å° (VKnn) ¶Ç´Â ½ºÄµ ÄÚµå (SCnnn)µµ °¡´ÉÇÕ´Ï´Ù. À̴ Ư¼ö Å° ÆäÀÌÁö¿¡ ±â¼úµÇ¾î ÀÖ½À´Ï´Ù. ¸ñÇ¥ Å°µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. ´Ü, ¸ñÇ¥ Å°´Â ¼±ÅÃÀûÀ¸·Î °¡»ó Å° ´ÙÀ½¿¡ ½ºÄµ Äڵ带 ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, sc01e::vk42sc030´Â ´ëºÎºÐÀÇ Å°º¸µå ¹èÄ¡µµ¿¡¼­ a::b°ú µ¿µîÇÕ´Ï´Ù.

+

+Å°¸¦ ¸®¸ÊÇϱ⠺¸´Ù ²ô·Á¸é, ±×³É ¹ÝȯµÇ´Â ÇÖÅ°·Î ¸¸µé¸é µË´Ï´Ù. ¿¹¸¦ µé¾î, F1::return´Â F1 Å°¸¦ ºÒ´ÉÀ¸·Î ¸¸µì´Ï´Ù.

+

+´ÙÀ½ Å°´Â ³»Àå ¸®¸ÊÇÎ ¸Þ½îµå°¡ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù:

+
    +
  • ¸¶¿ì½º ÈÙ (WheelUp/Down/Left/Right).
  • +
  • Pause ±×¸®°í Break¸¦ ¸ñÇ¥ Å°·Î ºÒ°¡ (¸í·É¾î À̸§¿¡ ÀÏÄ¡Çϱ⠶§¹®¿¡ ºÒ°¡).
  • +
  • È°°ýÈ£ {}¸¦ ¸ñÇ¥ Å°·Î ºÒ°¡. ´ë½Å¿¡ VK/SC ¹æ¹ýÀ» »ç¿ëÇϽʽÿÀ; ¿¹, x::+sc01A ±×¸®°í y::+sc01B.
  • +
  • ÆÛ¼¾Æ® »çÀÎ(%)À» ¸ñÇ¥ Å°·Î ºÒ°¡. ´ë½Å¿¡ VK/SC ¹æ¹ýÀ» »ç¿ëÇϽʽÿÀ.
  • +
  • "Return"À» ¸ñÇ¥ Å°·Î ºÒ°¡. ´ë½Å¿¡ "Enter"¸¦ »ç¿ëÇϽʽÿÀ.
  • +
+

Å°º¸µå·Î ¸¶¿ì½º Ä¿¼­ À̵¿Çϱâ

+

+Å°º¸µå¸¦ »ç¿ëÇÏ¿© ¸¶¿ì½º Ä¿¼­¸¦ À̵¿ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹Á¦´Â ¿Ïº®ÇÏ°Ô ±â´ÉÀ» °®Ãá Keyboard-To-Mouse ½ºÅ©¸³Æ®¸¦ º¸½Ê½Ã¿À. ½ºÅ©¸³Æ®´Â ºÎµå·¯¿î ¸¶¿ì½º À̵¿°ú, °¡¼Ó, ±âŸ Ư¡À» Á¦°øÇϱ⠶§¹®¿¡, Å°º¸µå·Î ¸¶¿ì½º ÀÛ¾÷À» ¸¹ÀÌ ÇÒ °èȹÀÌ ÀÖ´Ù¸é ±ÇÀåÇÏ´Â Á¢±Ù¹ýÀÔ´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, ´ÙÀ½ ¿¹Á¦´Â Á» °£´ÜÇÕ´Ï´Ù:

+
*#up::MouseMove, 0, -10, 0, R  ; Win+UpArrow hotkey => Ä¿¼­¸¦ À§·Î À̵¿½Ãŵ´Ï´Ù
+*#Down::MouseMove, 0, 10, 0, R  ; Win+DownArrow => Ä¿¼­¸¦ ¾Æ·¡·Î À̵¿½Ãŵ´Ï´Ù
+*#Left::MouseMove, -10, 0, 0, R  ; Win+LeftArrow => Ä¿¼­¸¦ À§·Î ¿ÞÂÊÀ¸·Î½Ãŵ´Ï´Ù
+*#Right::MouseMove, 10, 0, 0, R  ; Win+RightArrow => Ä¿¼­¸¦ À§·Î ¿À¸¥ÂÊÀ¸·Î½Ãŵ´Ï´Ù
+
+*<#RCtrl::  ; LeftWin + RightControl => Left-click (Control/ShiftÀ» ´©¸¥ ä·Î Control-Click ¶Ç´Â Shift-Click).
+SendEvent {Blind}{LButton down}
+KeyWait RCtrl  ; Å°º¸µå ÀÚµ¿-¹Ýº¹ÀÌ ¸¶¿ì½º Ŭ¸¯À» ¹Ýº¹½ÃÅ°Áö ¸øÇϵµ·Ï ¸·½À´Ï´Ù.
+SendEvent {Blind}{LButton up}
+return
+
+*<#AppsKey::  ; LeftWin + AppsKey => Right-click
+SendEvent {Blind}{RButton down}
+KeyWait AppsKey  ; Å°º¸µå ÀÚµ¿-¹Ýº¹ÀÌ ¸¶¿ì½º Ŭ¸¯À» ¹Ýº¹½ÃÅ°Áö ¸øÇϵµ·Ï ¸·½À´Ï´Ù.
+SendEvent {Blind}{RButton up}
+return
+ +

·¹Áö½ºÆ®¸®ÀÇ "½ºÄµÄÚµå ¸Ê" ¸®¸ÊÇÎÇϱâ

+

ÀåÁ¡:

+
    +
  • ·¹Áö½ºÆ®¸® ¸®¸ÊÇÎÀº ÀϹÝÀûÀ¸·Î ¿ÀÅäÇÖÅ°ÀÇ ¸®¸ÊÇκ¸´Ù ´õ ¼ø¼öÇÏ°í È¿°úÀûÀÔ´Ï´Ù. ¿¹¸¦ µé¾î ´õ ³ÐÀº ¹üÀ§ÀÇ °ÔÀÓ¿¡ ÀÛµ¿ÇÏ°í, alt-tab ¹®Á¦µµ ¾ø´Â °ÍÀ¸·Î ¾Ë·ÁÁ® ÀÖÀ¸¸ç, ±×¸®°í AutoHotkeyÀÇ °¥°í¸® ÇÖÅ°¸¦ Ã˹߽Ãų ¼ö ÀÖ½À´Ï´Ù (¹Ý¸é ¿ÀÅäÇÖÅ°ÀÇ ¸®¸ÊÇÎÀº ¿ìȸåÀÌ ÇÊ¿äÇÕ´Ï´Ù).
  • +
  • ·¹Áö½ºÆ®¸® ¿£Æ®¸®¸¦ ¼Õ¼ö ¸¸µé±â·Î °áÁ¤Çß´õ¶óµµ (¾Æ·¡¿¡ ¼³¸í), Å°º¸µå¸¦ ¸®¸ÊÇϴµ¥ Àý´ë ¿ÜºÎ ¼ÒÇÁÆ®¿þ¾î°¡ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù.KeyTweakÀ» »ç¿ëÇÏ¿© ·¹Áö½ºÆ®¸® ¿£Æ®¸®¸¦ ¸¸µç´Ù°í ÇÒÁö¶óµµ, KeyTweakÀÌ Ç×»ó ½ÇÇàÁßÀ̾î¾ß ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù (AutoHotkey¿Í ´Ù¸¨´Ï´Ù).
  • +
+

´ÜÁ¡:

+
    +
  • ·¹Áö½ºÆ®¸® ¸®¸ÊÇÎÀº »ó´ëÀûÀ¸·Î ¿µ±¸ÀûÀÔ´Ï´Ù: º¯°æÀ» ¾ðµÎÇϰųª »õ º¯°æÀÌ È¿°ú°¡ ÀÖÀ¸·Á¸é ÀçºÎÆÃÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.
  • +
  • ±×ÀÇ È¿°ú´Â Àü¿ªÀûÀÔ´Ï´Ù: ƯÁ¤ÇÑ »ç¿ëÀÚ³ª ¾îÇø®ÄÉÀÌ¼Ç ¶Ç´Â ·ÎÄÉÀÏ¿¡ ¸Â°Ô ¸®¸ÊÇÎÀ» ¸¸µå´Â °ÍÀº ºÒ°¡´ÉÇÕ´Ï´Ù.
  • +
  • Shift, Control, Alt, ¶Ç´Â AltGr À¸·Î ¼ö½ÄµÈ Å°´­¸²Àº Àü¼ÛÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, ¼Ò¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î ¸®¸ÊÇÒ ¼ö ¾ø½À´Ï´Ù.
  • +
  • Å°º¸µå¸¸ Áö¿øÇÕ´Ï´Ù (AutoHotkey´Â ¸¶¿ì½º ¸®¸ÊÇΰú Á¦ÇÑÀûÀ̳ª¸¶ Á¶À̽ºÆ½ ¸®¸ÊÇÎÀ» Áö¿øÇÕ´Ï´Ù).
  • +
+

·¹Áö½ºÆ®¸®¿¡ º¯°æÀ» Àû¿ëÇÏ´Â ¹ý: ·¹Áö½ºÆ®¸®¸¦ ÅëÇÏ¿© Å°¸¦ ¸®¸ÊÇÏ´Â µ¥ Àû¾îµµ µÎ °¡Áö ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù:

+
    +
  1. KeyTweak (¹«·á¿þ¾î)¿Í °°Àº ÇÁ·Î±×·¥À» »ç¿ëÇÏ¿© ½Ã°¢ÀûÀ¸·Î Å°¸¦ ¸®¸ÊÇÕ´Ï´Ù. ´ë½Å ·¹Áö½ºÆ®¸®¸¦ º¯°æÇØ ÁÝ´Ï´Ù.
  2. +
  3. ¼öµ¿À¸·Î Å°¸¦ ¸®¸ÊÇÕ´Ï´Ù. .reg ÆÄÀÏ (Æò¹üÇÑ ÅؽºÆ®)¸¦ ¸¸µé¾î ·¹Áö½ºÆ®¸® ¾ÈÀ¸·Î ÀûÀçÇÏ¸é µË´Ï´Ù. ÀÌ ¹æ¹ýÀº www.autohotkey.com/forum/post-56216.html#56216¿¡ ¿¹½ÃµÇ¾î ÀÖ½À´Ï´Ù.
  4. +
+

°ü·Ã ÁÖÁ¦

+

Å°¿Í ¸¶¿ì½º ¹öÆ° ¸ñ·Ï
+GetKeyState
+Á¶À̽ºÆ½ ¸®¸ÊÇÎÇϱâ

+ + diff --git a/src/docs/misc/RemapJoystick.htm b/src/docs/misc/RemapJoystick.htm new file mode 100644 index 0000000..f85dbe3 --- /dev/null +++ b/src/docs/misc/RemapJoystick.htm @@ -0,0 +1,182 @@ + + +Remapping a Joystick to Keyboard or Mouse + + + + + + + + + +

Á¶À̽ºÆ½À» Å°º¸µå³ª ¸¶¿ì½º¿¡ ¸®¸ÊÇϱâ

+ + +

¸ñÂ÷

+ +

Áß¿äÇÑ °íÁö »çÇ×

+
    +
  • ¸ðµç Á¶À̽ºÆ½ ¹öÆ°À̳ª ÃàÀ» Å°³ª ¸¶¿ì½º ¹öÆ°ÀÌ µÇµµ·Ï ¸®¸ÊÇÒ ¼ö´Â ÀÖÁö¸¸, ¾î¶² Á¶À̽ºÆ½ ¹öÆ°À̳ª ÃàÀº ¸®¸ÊÇÒ ¼ö ¾ø½À´Ï´Ù. ±×·² °æ¿ì´Â PPJoy °°Àº Á¶À̽ºÆ½ ¿¡¹Ä·¹ÀÌÅÍÀÇ µµ¿òÀ» ¹Þ¾Æ¾ß¸¸ ÇÕ´Ï´Ù.
  • +
  • ¿ÀÅäÇÖÅ°´Â Á¶À̽ºÆ½ÀÇ °¢ ¹öÆ°À» 1°ú 32 »çÀÌÀÇ ¹øÈ£·Î ½Äº°ÇÕ´Ï´Ù. ÀÌ ¹øÈ£¸¦ °áÁ¤ÇÏ·Á¸é Á¶À̽ºÆ½ Å×½ºÆ® ½ºÅ©¸³Æ®¸¦ »ç¿ëÇϽʽÿÀ.
  • +
+

Á¶À̽ºÆ½ ¹öÆ°ÀÌ Å°´­¸²À̳ª ¸¶¿ì½º Ŭ¸¯À» º¸³»µµ·Ï ¸¸µé±â

+

+¾Æ·¡¿¡ ¼¼ °¡Áö Á¢±Ù¹ýÀÌ ÀÖ½À´Ï´Ù. °¡Àå ½¬¿î ¹æ¹ý¿¡¼­ ½ÃÀÛÇÏ¿© °¡Àå º¹ÀâÇÑ ¹æ¹ýÀ¸·Î ³¡³³´Ï´Ù. º¹ÀâÇÑ ¹æ¹ýÀº ±¤¹üÀ§ÇÑ »óȲ¿¡ ÀÛµ¿ÇÕ´Ï´Ù (¿¹¸¦ µé¾î Å°³ª ¸¶¿ì½º ¹öÆ°À» ´©¸¥ ä·Î Àֱ⸦ ¿ä±¸ÇÏ´Â °ÔÀÓ).

+

¹æ¹ý #1: ÀÌ ¹æ¹ýÀº °£´ÜÇÑ Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯À» Àü¼ÛÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

+
Joy1::Send {Left}  ; ¹öÆ° #1ÀÌ ¿ÞÂÊ È­»ìÇ¥ Å° ´­¸²À» Àü¼ÛÇϵµ·Ï ¸¸µì´Ï´Ù.
+Joy2::Click  ; ¹öÆ° #2°¡ ¿ÞÂÊ ¸¶¿ì½º ¹öÆ° Ŭ¸¯À» Àü¼ÛÇϵµ·Ï ¸¸µì´Ï´Ù.
+Joy3::Send a{Esc}{Space}{Enter}  ; ¹öÆ° #3ÀÌ ±âÈ£ "a" ¿Í ´ÙÀ½¿¡ ÇǽŠ¹®ÀÚ, ½ºÆäÀ̽º, ±×¸®°í ¿£Å͸¦ Àü¼ÛÇϵµ·Ï ¸¸µì´Ï´Ù.
+Joy4::Send Sincerely,{Enter}John Smith  ; ¹öÆ° #4°¡ µÎ ÁÙÀÇ ¼­¸íÀ» º¸³»µµ·Ï ¸¸µì´Ï´Ù.
+

+¹öÆ°¿¡°Ô Çϳª ÀÌ»óÀÇ ¸í·É¾î¸¦ ¼öÇàÇϵµ·Ï ¸¸µé·Á¸é, ù ¸í·É¾î¸¦ ¹öÆ° À̸§ ¾Æ·¡¿¡ µÎ°í ¸¶Áö¸· ¸í·É¾î¸¦ returnÀ¸·Î ¸¸µé¸é µË´Ï´Ù. ¿¹¸¦ µé¾î:

+
Joy5::
+Run Notepad
+WinWait Untitled - Notepad
+WinActivate
+Send ÀÌ ÅؽºÆ®´Â ³ëÆ®Æе忡 ³ªÅ¸³³´Ï´Ù.{Enter}
+return
+

+¿ÏÀüÇÑ Å°¿Í ¸¶¿ì½º/Á¶À̽ºÆ½ ¹öÆ°¿¡ ´ëÇÑ Å° ¸ñ·ÏÀ» ÂüÁ¶ÇϽʽÿÀ.

+
+

+¹æ¹ý #2: ÀÌ ¹æ¹ýÀº Á¶À̽ºÆ½ ¹öÆ°À» ´©¸£°í ÀÖ´Â µ¿¾È Å°³ª ¸¶¿ì½º ¹öÆ°ÀÌ ¹Ýµå½Ã ´­·Á ÀÖ¾î¾ß ÇÏ´Â °æ¿ì¿¡ ÇʼöÀÔ´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â Á¶À̽ºÆ½ÀÇ µÎ ¹ø° ¹öÆ°ÀÌ ¿ÞÂÊ È­»ìÇ¥ Å°°¡ µÇµµ·Ï ¸¸µì´Ï´Ù:

+
Joy2::
+Send {Left down}  ; ¿ÞÂÊ È­»ìÇ¥ Å°¸¦ ´©¸¨´Ï´Ù.
+KeyWait Joy2  ; »ç¿ëÀÚ°¡ Á¶À̽ºÆ½ ¹öÆ°À» ¶¿ ¶§±îÁö ±â´Ù¸³´Ï´Ù.
+Send {Left up}  ; ¿ÞÂÊ È­»ìÇ¥ Å°¸¦ ¶Á´Ï´Ù.
+return
+
+

¹æ¹ý #3: ÀÌ ¹æ¹ýÀº ¹æ¹ý #2¿¡ ±â¼úµÈ À¯ÇüÀÇ Á¶À̽ºÆ½ ÇÖÅ°°¡ Çϳª ÀÌ»ó ÀÖ°í, Á¾Á¾ ±×·± ÇÖÅ°¸¦ µ¿½Ã¿¡ ´©¸£°í ¶¼¾î¾ß ÇÒ °æ¿ì¿¡ ÇʼöÀÔ´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â Á¶À̽ºÆ½ÀÇ ¼¼¹ø° ¹öÆ°ÀÌ ¿ÞÂÊ ¸¶¿ì½º ¹öÆ°ÀÌ µÇµµ·Ï ¸¸µì´Ï´Ù:

+
Joy3::
+Send {LButton down}   ; ¿ÞÂÊ ¸¶¿ì½º ¹öÆ°À» ´©¸¨´Ï´Ù.
+SetTimer, WaitForButtonUp3, 10
+return
+
+WaitForButtonUp3:
+if GetKeyState("Joy3")  ; ¹öÆ°ÀÌ ¿©ÀüÈ÷ ´­·Á ÀÖ½À´Ï´Ù. ±×·¡¼­ °è¼Ó ±â´Ù¸³´Ï´Ù.
+    return
+; ±×·¸Áö ¾ÊÀ¸¸é, ¹öÆ°À» ¶Ã½À´Ï´Ù.
+Send {LButton up}  ; ¿ÞÂÊ ¸¶¿ì½º ¹öÆ°À» ¶Á´Ï´Ù.
+SetTimer, WaitForButtonUp3, off
+return
+
+
+

ÀÚµ¿-¹Ýº¹ Å°´­¸²: ¾î¶² ÇÁ·Î±×·¥À̳ª °ÔÀÓÀº (¸¶Ä¡ Å°º¸µå¸¦ °è¼Ó ´©¸¥ ä·Î ÀÖ´Â °Íó·³) Å°°¡ ¹Ýº¹ÀûÀ¸·Î Àü¼ÛµÇ±â¸¦ ¿ä±¸ÇÕ´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â Á¶À̽ºÆ½ÀÇ µÎ ¹ø° ¹öÆ°À» ´©¸£°í ÀÖ´Â µ¿¾È ½ºÆäÀ̽º¹Ù Å°´­¸²À» ¹Ýº¹ÀûÀ¸·Î Àü¼ÛÇÕ´Ï´Ù:

+
Joy2::
+Send {Space down}   ; ½ºÆäÀ̹ٸ¦ ´©¸¨´Ï´Ù.
+SetTimer, WaitForJoy2, 30  ; ¹øÈ£¸¦ 30¿¡¼­ 20À̳ª 10À¸·Î ÁÙ¿© ´õ ºü¸£°Ô Å°¸¦ Àü¼ÛÇÕ´Ï´Ù. ´õ Áõ°¡½ÃÅ°¸é ´õ ´À¸®°Ô Àü¼ÛµË´Ï´Ù.
+return
+
+WaitForJoy2:
+if not GetKeyState("Joy2")  ; ¹öÆ°À» ¶Ã½À´Ï´Ù.
+{
+    Send {Space up}  ; ½ºÆäÀ̽º¹Ù¸¦ ¶Á´Ï´Ù.
+    SetTimer, WaitForJoy2, off  ; ¹öÆ° °üÁ¦¸¦ ¸ØÃä´Ï´Ù.
+    return
+}
+; À§´Â "¹ÝȯµÇÁö ¾Ê¾Ò±â ¶§¹®¿¡", ¹öÆ°Àº ¿©ÀüÈ÷ ´­¸° ä·Î ÀÖ½À´Ï´Ù.
+Send {Space down}  ; ¶Ç´Ù¸¥ ½ºÆäÀ̽º¹Ù Å°´­¸²À» Àü¼ÛÇÕ´Ï´Ù.
+return
+

¹®¸Æ-°¨Áö Á¶À̽ºÆ½ ¹öÆ°: Áö½Ã¾î #IfWinActive/Exist¸¦ »ç¿ëÇÏ¸é ¼±ÅÃµÈ Á¶À̽ºÆ½ ¹öÆ°ÀÌ È°¼ºÈ­ »óÅ ¶Ç´Â Á¸ÀçÇϴ âÀÇ Á¾·ù¿¡ µû¶ó ´Ù¸¥ ÇàÀ§¸¦ ¼öÇàÇϵµ·Ï (¶Ç´Â ÀüÇô ¸øÇϵµ·Ï) ¸¸µé ¼ö ÀÖ½À´Ï´Ù.

+

Á¶À̽ºÆ½À» ¸¶¿ì½ºÃ³·³ »ç¿ëÇϱâ: + +Joystick-To-Mouse ½ºÅ©¸³Æ®´Â Á¶À̽ºÆ½À» ±×ÀÇ ¹öÆ°°ú Ãà ÄÜÆ®·ÑÀ» ¸®¸ÊÇÎÇÏ¿© ¸¶¿ì½º·Î Å»¹Ù²Þ½Ãŵ´Ï´Ù.

+ +

Á¶À̽ºÆ½ Ãà ¶Ç´Â POV HatÀÌ Å°´­¸²À̳ª ¸¶¿ì½º Ŭ¸¯À» Àü¼ÛÇϵµ·Ï ¸¸µé±â

+

+½ºÅ©¸³Æ®°¡ Á¶À̽ºÆ½ ÃàÀ̳ª POV hatÀÇ ¿òÁ÷ÀÓ¿¡ ¹ÝÀÀÇϵµ·Ï ¸¸µé·Á¸é, SetTimer°ú GetKeyState¸¦ »ç¿ëÇϽʽÿÀ. ´ÙÀ½ ¿¹Á¦´Â Á¶À̽ºÆ½ÀÇ X¿Í Y ÃàÀ» ¸¶Ä¡ Å°º¸µå À§ÀÇ È­»ìÇ¥ Å° ±ºÃ³·³ ÇàÀ§ÇÏ°Ô ¸¸µì´Ï´Ù (»óÇÏÁ¿ì):

+
#Persistent  ; ½ºÅ©¸³Æ®¸¦ »ç¿ëÀÚ°¡ ¸í½ÃÀûÀ¸·Î Á¾·áÇÒ ¶§±îÁö ½ÇÇàÇÕ´Ï´Ù.
+SetTimer, WatchAxis, 5
+return
+
+WatchAxis:
+GetKeyState, JoyX, JoyX  ; X ÃàÀÇ À§Ä¡¸¦ ¾ò½À´Ï´Ù.
+GetKeyState, JoyY, JoyY  ; Y ÃàÀÇ À§Ä¡¸¦ ¾ò½À´Ï´Ù.
+KeyToHoldDownPrev = %KeyToHoldDown%  ; Prev´Â ÀÌÁ¦ ÀÌÀü¿¡ ³î¸° Å°¸¦ (ÀÖ´Ù¸é) º¸À¯ÇÕ´Ï´Ù.
+
+if JoyX > 70
+    KeyToHoldDown = Right
+else if JoyX < 30
+    KeyToHoldDown = Left
+else if JoyY > 70
+    KeyToHoldDown = Down
+else if JoyY < 30
+    KeyToHoldDown = Up
+else
+    KeyToHoldDown =
+
+if KeyToHoldDown = %KeyToHoldDownPrev%  ; ¿Ã¹Ù¸¥ Å°°¡ ÀÌ¹Ì ´­·Á ÀÖ½À´Ï´Ù (¶Ç´Â ¾Æ¹« Å°µµ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù).
+    return  ; ¾Æ¹«°Íµµ ÇÏÁö ¾Ê½À´Ï´Ù.
+
+; ±×·¸Áö ¾ÊÀ¸¸é, ÀÌÀüÀÇ Å°¸¦ ¶¼°í »õ·Î¿î Å°¸¦ ´©¸¨´Ï´Ù:
+SetKeyDelay -1  ; Å°´­¸² »çÀÌ¿¡ Áö¿¬À» ÇÇÇÕ´Ï´Ù.
+if KeyToHoldDownPrev   ; ¶¼¾ß ÇÒ ÀÌÀüÀÇ Å°°¡ ÀÖ½À´Ï´Ù.
+    Send, {%KeyToHoldDownPrev% up}  ; ±× Å°¸¦ ¶Á´Ï´Ù.
+if KeyToHoldDown   ; ´©¸¦ Å°°¡ ÀÖ½À´Ï´Ù.
+    Send, {%KeyToHoldDown% down}  ; ±× Å°¸¦ ´©¸¨´Ï´Ù.
+return
+

 

+

+´ÙÀ½ ¿¹Á¦´Â Á¶À̽ºÆ½ÀÇ POV hatÀÌ ¸¶Ä¡ Å°º¸µåÀÇ È­»ìÇ¥ ±ºÃ³·³ ÇàÀ§ÇÏ°Ô ¸¸µì´Ï´Ù; Áï, POV hatÀº È­»ìÇ¥ Å°´­¸²À» Àü¼ÛÇÕ´Ï´Ù (»óÇÏÁ¿ì):

+
#Persistent  ; »ç¿ëÀÚ°¡ ¸í½ÃÀûÀ¸·Î Á¾·áÇÒ ¶§±îÁö ½ºÅ©¸³Æ®¸¦ °è¼Ó ½ÇÇàÇÕ´Ï´Ù.
+SetTimer, WatchPOV, 5
+return
+
+WatchPOV:
+GetKeyState, POV, JoyPOV  ; POV ÄÜÆ®·ÑÀÇ À§Ä¡¸¦ ¾ò½À´Ï´Ù.
+KeyToHoldDownPrev = %KeyToHoldDown%  ; Prev´Â ÀÌÁ¦ ÀÌÀü¿¡ ´­¸° Å°¸¦ (ÀÖ´Ù¸é) º¸À¯ÇÕ´Ï´Ù.
+
+; ¾î¶² Á¶À̽ºÆ½Àº °íÁ¤ Áõ°¡µÇÁö ¾Ê°í ºÎµå·¯¿î/¿¬¼ÓÀûÀÎ POV¸¦ °¡Áý´Ï´Ù.
+; ±×µé ¸ðµÎ¸¦ Áö¿øÇÏ·Á¸é, ¹üÀ§¸¦ »ç¿ëÇϽʽÿÀ:
+if POV < 0   ; º¸°íÇÒ °¢µµ°¡ ¾ø½À´Ï´Ù
+    KeyToHoldDown =
+else if POV > 31500                 ; 315 µµºÎÅÍ 360 µµ±îÁö: ¾ÕÀ¸·Î
+    KeyToHoldDown = Up
+else if POV between 0 and 4500      ; 0 µµºÎÅÍ 45 µµ±îÁö: ¾ÕÀ¸·Î
+    KeyToHoldDown = Up
+else if POV between 4501 and 13500  ; 45 µµºÎÅÍ 135 µµ±îÁö: ¿À¸¥ÂÊÀ¸·Î
+    KeyToHoldDown = Right
+else if POV between 13501 and 22500 ; 135 µµºÎÅÍ 225 µµ±îÁö: ¾Æ·§ÂÊÀ¸·Î
+    KeyToHoldDown = Down
+else                                ; 225 µµºÎÅÍ 315 µµ±îÁö: ¿ÞÂÊÀ¸·Î
+    KeyToHoldDown = Left
+
+if KeyToHoldDown = %KeyToHoldDownPrev%  ; ¿Ã¹Ù¸¥ Å°°¡ ÀÌ¹Ì ´­·Á ÀÖ½À´Ï´Ù (¶Ç´Â ¾Æ¹« Å°µµ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù).
+    return  ; ¾Æ¹«°Íµµ ÇÏÁö ¾Ê½À´Ï´Ù.
+
+; ±×·¸Áö ¾ÊÀ¸¸é, ÀÌÀüÀÇ Å°¸¦ ¶¼°í »õ Å°¸¦ ´©¸¨´Ï´Ù:
+SetKeyDelay -1  ; Å°´­¸² »çÀÌ¿¡ Áö¿¬À» ÇÇÇÕ´Ï´Ù.
+if KeyToHoldDownPrev   ; ¶¼¾ß ÇÒ ÀÌÀüÀÇ Å°°¡ ÀÖ½À´Ï´Ù.
+    Send, {%KeyToHoldDownPrev% up}  ; ±× Å°¸¦ ¶Á´Ï´Ù.
+if KeyToHoldDown   ; ´©¸¦ Å°°¡ ÀÖ½À´Ï´Ù.
+    Send, {%KeyToHoldDown% down}  ; ±× Å°¸¦ ´©¸¨´Ï´Ù.
+return
+

 

+

Å°´­¸² ÀÚµ¿-¹Ýº¹Çϱâ: µÎ ¿¹Á¦ ¸ðµÎ ´Ü¼øÈ÷ Å°¸¦ ´©¸£°í ÀÖ´Â°Ô ¾Æ´Ï¶ó Å°¸¦ ¹Ýº¹ÀûÀ¸·Î Àü¼ÛÇϵµ·Ï º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù (Áï, Å°º¸µå¿¡¼­ ¹°¸®ÀûÀ¸·Î Å°¸¦ ´©¸£°í ÀÖ´Â °Íó·³ Èä³»³¾ ¼ö ÀÖ½À´Ï´Ù). ÀÌ·¸°Ô ÇÏ·Á¸é, ´ÙÀ½ ÁÙÀ»:

+
return  ; ¾Æ¹«°Íµµ ÇÏÁö ¾Ê½À´Ï´Ù.
+

´ÙÀ½°ú °°ÀÌ ±³Ã¼ÇϽʽÿÀ:

+
{
+    if KeyToHoldDown
+        Send, {%KeyToHoldDown% down}  ; Å°´­¸²À» ÀÚµ¿À¸·Î ¹Ýº¹ÇÕ´Ï´Ù.
+    return
+}
+

³íÆò

+

+ù ¹ø° ¸»°í ´Ù¸¥ Á¶À̽ºÆ½À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹öÆ° À̸§À̳ª Ãà À̸§ ¾Õ¿¡ Á¶À̽ºÆ½ ¹öÆ° ¹øÈ£¸¦ ÁÖ¸é µË´Ï´Ù. ¿¹¸¦ µé¾î, 2Joy1Àº µÎ ¹ø° Á¶À̽ºÆ½ÀÇ Ã¹ ¹ø° ¹öÆ°ÀÔ´Ï´Ù.

+

+´Ù¸¥ À¯¿ëÇÑ Á¶À̽ºÆ½ ½ºÅ©¸³Æ®¸¦ ¹ß±¼ÇÏ·Á¸é AutoHotkey Æ÷·³À» ¹æ¹®ÇϽʽÿÀ. Joystick and GetKeyState and Send¿Í °°Àº Å°¿öµå °Ë»öÀ̸é Èï¹Ì·Î¿î ÁÖÁ¦µéÀ» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.

+ +

°ü·Ã ÁÖÁ¦

+

+Joystick-To-Mouse ½ºÅ©¸³Æ® (Á¶À̽ºÆ½À» ¸¶¿ì½º·Î »ç¿ëÇϱâ)
+Á¶À̽ºÆ½ ¹öÆ°, Ãà, ±×¸®°í ÄÜÆ®·Ñ ¸®½ºÆ®
+GetKeyState
+Å°º¸µå¿Í ¸¶¿ì½º ¸®¸ÊÇÎÇϱâ

+ + diff --git a/src/docs/misc/SendMessage.htm b/src/docs/misc/SendMessage.htm new file mode 100644 index 0000000..ae8ccdf --- /dev/null +++ b/src/docs/misc/SendMessage.htm @@ -0,0 +1,87 @@ + + +PostMessage/SendMessage Tutorial + + + + + + + +

¸Þ½ÃÁö¸¦ âÀ̳ª ±×ÀÇ ÄÜÆ®·Ñ¿¡ º¸³»±â
+by Rajat

+ +

+ÀÌ ÆäÀÌÁö´Â PostMessage¿Í SendMessage ¸í·É¾î¸¦ ¿¬±¸ÇÏ°í ´ÙÀ½°ú °°Àº Áú¹®¿¡ ´äÇÕ´Ï´Ù:

+

"¾î¶»°Ô ÃÖ¼ÒÈ­µÈ â¿¡ ¹öÆ°À» ´©¸£´Â°¡?"
+"WinMenuSelectItemÀÌ ¸Þ´º Ç׸ñ°ú ÀÛµ¿ÇÏÁö ¾ÊÀ» ¶§ ¾î¶»°Ô ¸Þ´º Ç׸ñÀ» ¼±ÅÃÇϴ°¡?!"
+"ÀÌ°ÍÀº °Ñ¸ð½ÀÀ» ¹Ù²Ü ¼ö Àִ âÀÌ´Ù.... ¾î¶»°Ô ÇØ¾ß Ç×»ó ÀÛµ¿ÇÏ´Â ¸í·É¾î¸¦ Àü¼ÛÇϴ°¡?"
+"¼ûÀº âÀº ¾î¶»°Ô Çϴ°¡?!"
+
+
+Çʼö Á¶°Ç: AutoHotkey v1.0.09+ ±×¸®°í Winspector Spy (http://www.softpedia.com/get/Security/Security-Related/Winspector.shtml)

+

+ù ¿¹Á¦·Î¼­, WinMenuSelectItem°¡ ¾Æ¿ô·è ÀͽºÇÁ·¹½ºÀÇ "New Message" âÀÇ ¸Þ´º ¹Ù¿Í ÀÛµ¿ÇÏ´Â µ¥ ½ÇÆÐÇÑ´Ù´Â »ç½ÇÀ» ÁÖ¸ñÇϽʽÿÀ; +´Ù½Ã ¸»ÇØ, ´ÙÀ½ ÄÚµå´Â ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù:

+
WinMenuSelectItem, New Message,, &Insert, &Picture...
+

 

+

+±×·¯³ª PostMessage°¡ ±× ÀÏÀ» ÇØ ÁÙ ¼ö ÀÖ½À´Ï´Ù:

+
PostMessage, 0x111, 40239, 0, , New Message
+

+¸¶¹ýó·³ ÀÛµ¿ÇÕ´Ï´Ù! ±×·¯³ª µµµ¥Ã¼ ÀÌ°ÍÀº ¹«¾ùÀΰ¡? 0x111´Â wm_command ¸Þ½ÃÁöÀÇ ½ÊÀ°Áø ÄÚµåÀÌ°í 40239´Â ÀÌ Æ¯Á¤ÇÑ Ã¢ÀÌ ¸Þ´º Ç׸ñ 'Insert Picture' ¼±ÅÃÀ¸·Î ÀÌÇØÇÏ´Â ÄÚµåÀÔ´Ï´Ù. ÀÌÁ¦ ¾î¶»°Ô 40239¿Í °°Àº °ªÀ» ã´ÂÁö ¾Ë·Á µå¸®°Ú½À´Ï´Ù:

+
    +
  1. Winspector Spy¸¦ ¿­°í "New Message" âÀ» ¿±´Ï´Ù.
  2. +
  3. ½ÊÀÚ°¡ Ç¥½ÄÀ» Winspector Spy âÀ¸·ÎºÎÅÍ "New Message" âÀÇ Å¸ÀÌƲ¹Ù·Î ²ü´Ï´Ù (Winspector Spy¿¡ µ¤È÷Áö ¾Ê´Â ºÎºÐÀ¸·Î ²ô½Ê½Ã¿À).
  4. +
  5. ¿ÞÂÊ¿¡ ÀÖ´Â ¸®½ºÆ®¿¡¼­ ¼±ÅÃµÈ Ã¢À» ¿ìŬ¸¯ÇÏ°í 'Messages'¸¦ ¼±ÅÃÇÕ´Ï´Ù.
  6. +
  7. ºó â¿¡ ¿ìŬ¸¯ÇÏ°í 'Edit message filter'¸¦ ¼±ÅÃÇÕ´Ï´Ù.
  8. +
  9. 'filter all' ¹öÆ°À» Ŭ¸¯ÇÑ ´ÙÀ½ ¿ÞÂÊ ¸®½ºÆ®¿¡¼­ 'wm_command'¸¦ ´õºíŬ¸¯ÇÕ´Ï´Ù. ÀÌ·± ½ÄÀ¸·Î ÇÏ¸é ¿ÀÁ÷ ÀÌ ¸Þ½ÃÁö¸¸ °üÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù.
  10. +
  11. ÀÌÁ¦ "New Message" âÀ¸·Î °¡¼­ ¸Þ´º ¹Ù·ÎºÎÅÍ Insert > Picture¸¦ ¼±ÅÃÇÕ´Ï´Ù.
  12. +
  13. ´Ù½Ã Winspector Spy·Î µ¹¾Æ¿Í ½ÅÈ£µî ¹öÆ°À» ´­·¯ °üÁ¦¸¦ Á¤ÁöÇÕ´Ï´Ù.
  14. +
  15. ±× µ¿¾È ÃàÀûµÈ wm_command ¸Þ½ÃÁöµéÀ» È®´ëÇÕ´Ï´Ù (´Ù¸¥ °ÍÀº ÀÖ´õ¶óµµ ¹«½ÃÇÕ´Ï´Ù).
  16. +
  17. (º¸Åë) º¸°í ½ÍÀº °ÍÀº ÄÚµå 0 ¸Þ½ÃÁöÀÔ´Ï´Ù. Á¾Á¾ wm_command ¸Þ½ÃÁö¿¡ 'win activated' or 'win destroyed' ±âŸ µîµîÀÌ ÀÖÀ» ¼ö Àִµ¥.. ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù. 'Control ID: 40239'¶ó°í ¸»ÇØÁÖ´Â ¸Þ½ÃÁö¸¦ ¹ß°ßÇß´Ù¸é ...¹Ù·Î ±×°ÍÀÔ´Ï´Ù!
  18. +
  19. ÀÌÁ¦ ±×°ÍÀ» À§ÀÇ ¸í·É¾î¿¡ ¹èÄ¡ÇÏ¸é ¿Ï¼ºÀÔ´Ï´Ù! ±×°ÍÀÌ ¹Ù·Î wParam °ªÀÔ´Ï´Ù.
  20. +
+

+´ÙÀ½ ¿¹Á¦·Î ÆäÀÎÆ® ÇÁ·Î±×·¥À» ÅÃÇÏ°Ú½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ´©±¸³ª°¡ ÀÖÀ» °ÍÀ̱⠶§¹®ÀÔ´Ï´Ù. ÀÌÁ¦ ¾îÇÃÀÌ Çϳª Àִµ¥ ¿ÀÅäÇÖÅ°¸¦ »ç¿ëÇÏ¿© Åø¹Ù·ÎºÎÅÍ ÅøÀ» Çϳª ¼±ÅÃÇØ¾ß ÇÑ´Ù°í °¡Á¤ÇØ º¸°Ú½À´Ï´Ù.

+

+´ÙÀ½Àº ¹«¾ùÀ» ÇÒ °ÍÀΰ¡? ´ëºÎºÐÀº ¾Æ¸¶µµ Åø¹Ù ¹öÆ°¿¡ ¸¶¿ì½º Ŭ¸¯À» ¿¹»óÇÒ °Ì´Ï´Ù. ±×·¯³ª Åø¹Ù´Â À̵¿ÇÏ°í ¼ûÀ» ¼ö ÀÖ½À´Ï´Ù! ÆäÀÎÆ® Åø¹Ùµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. ±×·¡¼­ ÇØ´ç »ç¿ëÀÚ°¡ ÀÌ·¸°Ô ±¸¼ºÇØ µÎ¾ú´Ù¸é, ½ºÅ©¸³Æ®´Â ±× ½ÃÁ¡¿¡ ¹Ù·Î ½ÇÆÐÇÕ´Ï´Ù. ±×·¯³ª ´ÙÀ½ ¸í·É¾î´Â ¿©ÀüÈ÷ ÀÛµ¿ÇÕ´Ï´Ù:

+ +
PostMessage, 0x111, 639,,,untitled - Paint
+

+PostMessageÀÇ ¶Ç´Ù¸¥ ÀåÁ¡Àº âÀÌ ¹è°æ¿¡ ÀÖÀ» ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù; ´ëÁ¶ÀûÀ¸·Î, ¸¶¿ì½º Ŭ¸¯Àº âÀÌ È°¼ºÈ­µÇ¾î Àֱ⸦ ¿ä±¸ÇÕ´Ï´Ù.

+

+´ÙÀ½¿¡ ¸î °¡Áö ¿¹¸¦ ´õ º¸¿©µå¸®°Ú½À´Ï´Ù. ÁÖÀÇ: ÇÊÀÚ´Â WinXP Pro (SP1)À» »ç¿ëÇÕ´Ï´Ù ... ´Ù¸¥ OS¸¦ »ç¿ëÇÑ´Ù¸é ¸Å°³º¯¼ö°¡ ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù (À©µµ¿ìÁî¿¡ µû¶ó ¿À´Â Wordpad ±×¸®°í Notepad¿¡¸¸ Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù; ´Ù¸¥ °ÍÀº ¸Å°³º¯¼ö°¡ ´Ù¸£Áö ¾ÊÀ» °ÍÀÔ´Ï´Ù):

+ +
;Wordpad ¿¡ ±ºÃ»»ö ¾²±â¸¦ ¼³Á¤ÇÕ´Ï´Ù
+PostMessage, 0x111, 32788, 0, , Document - WordPad
+
;NotepadÀÇ °üÇÏ¿© »óÀÚ¸¦ ¿±´Ï´Ù
+PostMessage, 0x111, 65, 0, , Untitled - Notepad
+
;Notepad¿¡ ¿öµå·¦À» Åä±ÛÇÕ´Ï´Ù
+PostMessage, 0x111, 32, 0, , Untitled - Notepad
+
;¹Ìµð¾î Ç÷¹À̾ ¿¬ÁÖ/Á¤ÁöÇÕ´Ï´Ù
+PostMessage, 0x111, 32808, 0, , Windows Media Player
+
;½ÇÇà ÁßÀÎ AHK ½ºÅ©¸³Æ®ÀÇ ÇÖÅ°µéÀ» º¸·ùÇÕ´Ï´Ù
+DetectHiddenWindows, on
+SetTitleMatchMode, 2
+PostMessage, 0x111, 65305,,, MyScript.ahk - AutoHotkey ; 65306¸¦ »ç¿ëÇϸé Á¤Áö(Pause) vs. º¸·ù(Suspend)ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+

+À§´Â PostMessage¿ëÀ̾ú½À´Ï´Ù. SendMessageµµ ¶È°°ÀÌ ÀÛµ¿ÇÏÁö¸¸ Ãß°¡·Î ¹Ýȯ °ªÀ» ±â´Ù¸³´Ï´Ù. ÀÌ °ªÀ» »ç¿ëÇϸé Winamp¿¡¼­ ÇöÀç ¿¬ÁÖ ÁßÀÎ Æ®·¢À» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù (¿¹Á¦´Â Winamp ÀÚµ¿È­Çϱ⸦ ÂüÁ¶ÇϽʽÿÀ).

+

´ÙÀ½¿¡ ¸î °¡Áö ´õ ÁÖÀÇ »çÇ×ÀÌ ÀÖ½À´Ï´Ù:

+
    +
  • À§¿¡¼­ OS°¡ XPÀÌ°í ¸Þ½ÃÁö °ªÀÌ OS ¸¶´Ù ´Ù¸¦ ¼ö ÀÖ´Ù°í ÁÖÀǸ¦ ÁØ °ÍÀº ¼øÀüÈ÷ °æ°è Â÷¿øÀÔ´Ï´Ù. ¿©·¯ºÐÀÇ ½Ã½ºÅÛ¿¡¼­ (ƯÁ¤ ¼ÒÇÁÆ®¿þ¾î ¹öÀü°ú ÇÔ²²) ÀÛµ¿ÇÏ´Â ¸Þ½ÃÁö¸¦ ¹ß°ßÇß´Ù¸é. ´Ù¸¥ ½Ã½ºÅÛ¿¡µµ °°Àº ¹öÀüÀÌ ¿ª½Ã ÀÛµ¿ÇÒ °ÍÀ̶ó°í È®½ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. °Ô´Ù°¡, ´ëºÎºÐÀÇ ¾îÇÃÀº ¹öÀüÀÌ ´Ù¸£´õ¶óµµ ÀÌ ¸Þ½ÃÁö °ªÀ» ¶È °°ÀÌ À¯ÁöÇÕ´Ï´Ù (¿¹, Windows Media Player ±×¸®°í Winamp).
  • +
  • Winspector Spy ÇÊÅ͸¦ ¼³Á¤ÇØ ¿ÀÁ÷ wm_command¸¸ º¸¿©ÁÖ·Á°í Çϴµ¥ ¿©ÀüÈ÷ ÇÑ ¹«´õ±â ¸Þ½ÃÁö°¡ ³ª¿Â´Ù¸é ±× ¸Þ½ÃÁö¿¡ ¿ìŬ¸¯ÇÏ°í hide (¸ÞÁöÁö À̸§)À» ¼±ÅÃÇϽʽÿÀ... ¸ñÇ¥ ¼ÒÇÁÆ®¿þ¾î¿Í »óÈ£ÀÛ¿ëÀ» ÇÏÁö ¾Ê´Â ¸Þ½ÃÁöµéÀÌ ³ªÅ¸³ª±â¸¦ ¿øÇÏÁö´Â ¾ÊÀ» °ÍÀÔ´Ï´Ù.
  • +
  • Winspector Spy¿¡¼­ ¿À¸¥ÂÊ Áö½Ã È­»ìÇ¥¸¦ Ŭ¸¯ÇÏ¸é ¸Þ½ÃÁö °ªµéÀ» º¸¿©ÁÖ°í È帴ÇÑ ¿ÞÂÊ Áö½Ã È­»ìÇ¥´Â ¹Ýȯ °ªÀ» º¸¿©ÁÝ´Ï´Ù. 0 (¿µ) °ªÀº ±âº»ÀûÀ¸·Î '¿¡·¯ ¾øÀ½'À¸·Î °£ÁÖÇصµ ¾ÈÀüÇÕ´Ï´Ù (±×°ÍÀ» SendMessage¿¡ »ç¿ëÇϸé, ¹Ýȯ°ªÀº %ErrorLevel%¿¡ ´ã±é´Ï´Ù).
  • +
  • Á¦¸ñ¿¡ ºÎºÐÀûÀ¸·Î ºÎÇÕ½ÃÅ°·Á¸é ´ÙÀ½ Äڵ带 ½ºÅ©¸³Æ®¿¡ Ãß°¡ÇϽʽÿÀ:
    + SetTitleMatchMode, 2
  • +
  • ¼ûÀº âÀ» Æ÷½ºÆ®ÇÏ·Á¸é ´ÙÀ½ Äڵ带 Ãß°¡ÇϽʽÿÀ:
    + DetectHiddenWindows, On
  • +
+

ÁÖÀÇ: ÀÌ Å×Å©´ÐÀ¸·Îµµ ÀÛµ¿ÇÏÁö ¾Ê´Â ¾îÇÃÀÌ ÀÖ½À´Ï´Ù. VB ¾îÇðú Delphi ¾îÇÿ¡¼­ ±×·± °æ¿ì¸¦ ¸¸³µ½À´Ï´Ù. ÀÌ Å×Å©´ÐÀº C, C++ ¾îÇÿ¡ »ç¿ëÇÏ´Â °ÍÀÌ Á¦ÀÏ ÁÁ½À´Ï´Ù. VB ¾îÇÃÀº °°Àº ¸í·É¾îÀε¥µµ 'LParam'ÀÌ ½ÇÇàÇÒ ¶§¸¶´Ù ²÷ÀÓ¾øÀÌ º¯ÇÕ´Ï´Ù. Delphi ¾îÇÃÀº GUI°¡ ÀüÇô wm_command¸¦ »ç¿ëÇÏÁö ¾Ê±âµµ ÇÕ´Ï´Ù. ¾Æ¸¶µµ ¸¶¿ì½ºÀÇ À§Ä¡¿Í Ŭ¸¯À» »ç¿ëÇÏ´Â µí º¸ÀÔ´Ï´Ù.

+

+¿ÀÅäÇÖÅ° Æ÷·³¿¡ °¡¼Å¼­ ŽÇèÇØ º¸°í ¿©·¯ºÐÀÇ °æÇèÀ» °øÀ¯ÇϽʽÿÀ. Çǵå¹éÀº ¾ðÁ¦³ª ȯ¿µÇÕ´Ï´Ù!

+

+ÀÌ ÀÚ½À¼­´Â Ãʺ¸ÀÚ¸¦ À§ÇÑ °ÍÀÌ ¾Æ´Õ´Ï´Ù (±âºÐ ³ª»Ú°Ô ÇÒ Àǵµ´Â ¾ø½À´Ï´Ù). ¿Ö³ÄÇϸé ÀÌ ¸í·É¾îµéÀº °í±Þ Ư¡À¸·Î °£ÁֵDZ⠶§¹®ÀÔ´Ï´Ù. ±×·¡¼­ À§ÀÇ ±ÛÀ» ÀÐ¾î º» ÈÄ¿¡ Àß ¸ð¸£°Ú´Ù¸é, ±×³É ÀØ¾î ¹ö¸®½Ê½Ã¿À.

+

-Rajat

+ + diff --git a/src/docs/misc/SendMessageList.htm b/src/docs/misc/SendMessageList.htm new file mode 100644 index 0000000..dee1570 --- /dev/null +++ b/src/docs/misc/SendMessageList.htm @@ -0,0 +1,239 @@ + + +List of Windows Messages + + + + + + + +

À©µµ¿ìÁî ¸Þ½ÃÁö ¸ñ·Ï

+ +

+¾Æ·¡´Â PostMessage¿Í SendMessageÀÇ Msg ¸Å°³º¯¼ö¿¡ ´ëÇÑ °ªÀÇ ¸ñ·ÏÀÔ´Ï´Ù. ƯÁ¤ ¸Þ½ÃÁö¸¦ »ç¿ëÇÏ´Â ¹æ¹ý¿¡ °üÇÑ ´õ ¸¹Àº Á¤º¸´Â (¿¹, WM_VSCROLL) http://msdn.microsoft.comÀ» °Ë»öÇØ º¸½Ã°Å³ª °Ë»ö ¿£ÁøÀ» »ç¿ëÇϽʽÿÀ. ¶Ç, ¸Þ½ÃÁö ÀÚ½À¼­¸¦ ÂüÁ¶ÇϽʽÿÀ.

+
WM_NULL = 0x00
+WM_CREATE = 0x01
+WM_DESTROY = 0x02
+WM_MOVE = 0x03
+WM_SIZE = 0x05
+WM_ACTIVATE = 0x06
+WM_SETFOCUS = 0x07
+WM_KILLFOCUS = 0x08
+WM_ENABLE = 0x0A
+WM_SETREDRAW = 0x0B
+WM_SETTEXT = 0x0C
+WM_GETTEXT = 0x0D
+WM_GETTEXTLENGTH = 0x0E
+WM_PAINT = 0x0F
+WM_CLOSE = 0x10
+WM_QUERYENDSESSION = 0x11
+WM_QUIT = 0x12
+WM_QUERYOPEN = 0x13
+WM_ERASEBKGND = 0x14
+WM_SYSCOLORCHANGE = 0x15
+WM_ENDSESSION = 0x16
+WM_SYSTEMERROR = 0x17
+WM_SHOWWINDOW = 0x18
+WM_CTLCOLOR = 0x19
+WM_WININICHANGE = 0x1A
+WM_SETTINGCHANGE = 0x1A
+WM_DEVMODECHANGE = 0x1B
+WM_ACTIVATEAPP = 0x1C
+WM_FONTCHANGE = 0x1D
+WM_TIMECHANGE = 0x1E
+WM_CANCELMODE = 0x1F
+WM_SETCURSOR = 0x20
+WM_MOUSEACTIVATE = 0x21
+WM_CHILDACTIVATE = 0x22
+WM_QUEUESYNC = 0x23
+WM_GETMINMAXINFO = 0x24
+WM_PAINTICON = 0x26
+WM_ICONERASEBKGND = 0x27
+WM_NEXTDLGCTL = 0x28
+WM_SPOOLERSTATUS = 0x2A
+WM_DRAWITEM = 0x2B
+WM_MEASUREITEM = 0x2C
+WM_DELETEITEM = 0x2D
+WM_VKEYTOITEM = 0x2E
+WM_CHARTOITEM = 0x2F
+
+WM_SETFONT = 0x30
+WM_GETFONT = 0x31
+WM_SETHOTKEY = 0x32
+WM_GETHOTKEY = 0x33
+WM_QUERYDRAGICON = 0x37
+WM_COMPAREITEM = 0x39
+WM_COMPACTING = 0x41
+WM_WINDOWPOSCHANGING = 0x46
+WM_WINDOWPOSCHANGED = 0x47
+WM_POWER = 0x48
+WM_COPYDATA = 0x4A
+WM_CANCELJOURNAL = 0x4B
+WM_NOTIFY = 0x4E
+WM_INPUTLANGCHANGEREQUEST = 0x50
+WM_INPUTLANGCHANGE = 0x51
+WM_TCARD = 0x52
+WM_HELP = 0x53
+WM_USERCHANGED = 0x54
+WM_NOTIFYFORMAT = 0x55
+WM_CONTEXTMENU = 0x7B
+WM_STYLECHANGING = 0x7C
+WM_STYLECHANGED = 0x7D
+WM_DISPLAYCHANGE = 0x7E
+WM_GETICON = 0x7F
+WM_SETICON = 0x80
+
+WM_NCCREATE = 0x81
+WM_NCDESTROY = 0x82
+WM_NCCALCSIZE = 0x83
+WM_NCHITTEST = 0x84
+WM_NCPAINT = 0x85
+WM_NCACTIVATE = 0x86
+WM_GETDLGCODE = 0x87
+WM_NCMOUSEMOVE = 0xA0
+WM_NCLBUTTONDOWN = 0xA1
+WM_NCLBUTTONUP = 0xA2
+WM_NCLBUTTONDBLCLK = 0xA3
+WM_NCRBUTTONDOWN = 0xA4
+WM_NCRBUTTONUP = 0xA5
+WM_NCRBUTTONDBLCLK = 0xA6
+WM_NCMBUTTONDOWN = 0xA7
+WM_NCMBUTTONUP = 0xA8
+WM_NCMBUTTONDBLCLK = 0xA9
+
+WM_KEYFIRST = 0x100
+WM_KEYDOWN = 0x100
+WM_KEYUP = 0x101
+WM_CHAR = 0x102
+WM_DEADCHAR = 0x103
+WM_SYSKEYDOWN = 0x104
+WM_SYSKEYUP = 0x105
+WM_SYSCHAR = 0x106
+WM_SYSDEADCHAR = 0x107
+WM_KEYLAST = 0x108
+
+WM_IME_STARTCOMPOSITION = 0x10D
+WM_IME_ENDCOMPOSITION = 0x10E
+WM_IME_COMPOSITION = 0x10F
+WM_IME_KEYLAST = 0x10F
+
+WM_INITDIALOG = 0x110
+WM_COMMAND = 0x111
+WM_SYSCOMMAND = 0x112
+WM_TIMER = 0x113
+WM_HSCROLL = 0x114
+WM_VSCROLL = 0x115
+WM_INITMENU = 0x116
+WM_INITMENUPOPUP = 0x117
+WM_MENUSELECT = 0x11F
+WM_MENUCHAR = 0x120
+WM_ENTERIDLE = 0x121
+
+WM_CTLCOLORMSGBOX = 0x132
+WM_CTLCOLOREDIT = 0x133
+WM_CTLCOLORLISTBOX = 0x134
+WM_CTLCOLORBTN = 0x135
+WM_CTLCOLORDLG = 0x136
+WM_CTLCOLORSCROLLBAR = 0x137
+WM_CTLCOLORSTATIC = 0x138
+
+WM_MOUSEFIRST = 0x200
+WM_MOUSEMOVE = 0x200
+WM_LBUTTONDOWN = 0x201
+WM_LBUTTONUP = 0x202
+WM_LBUTTONDBLCLK = 0x203
+WM_RBUTTONDOWN = 0x204
+WM_RBUTTONUP = 0x205
+WM_RBUTTONDBLCLK = 0x206
+WM_MBUTTONDOWN = 0x207
+WM_MBUTTONUP = 0x208
+WM_MBUTTONDBLCLK = 0x209
+WM_MOUSEWHEEL = 0x20A
+WM_MOUSEHWHEEL = 0x20E
+
+WM_PARENTNOTIFY = 0x210
+WM_ENTERMENULOOP = 0x211
+WM_EXITMENULOOP = 0x212
+WM_NEXTMENU = 0x213
+WM_SIZING = 0x214
+WM_CAPTURECHANGED = 0x215
+WM_MOVING = 0x216
+WM_POWERBROADCAST = 0x218
+WM_DEVICECHANGE = 0x219
+
+WM_MDICREATE = 0x220
+WM_MDIDESTROY = 0x221
+WM_MDIACTIVATE = 0x222
+WM_MDIRESTORE = 0x223
+WM_MDINEXT = 0x224
+WM_MDIMAXIMIZE = 0x225
+WM_MDITILE = 0x226
+WM_MDICASCADE = 0x227
+WM_MDIICONARRANGE = 0x228
+WM_MDIGETACTIVE = 0x229
+WM_MDISETMENU = 0x230
+WM_ENTERSIZEMOVE = 0x231
+WM_EXITSIZEMOVE = 0x232
+WM_DROPFILES = 0x233
+WM_MDIREFRESHMENU = 0x234
+
+WM_IME_SETCONTEXT = 0x281
+WM_IME_NOTIFY = 0x282
+WM_IME_CONTROL = 0x283
+WM_IME_COMPOSITIONFULL = 0x284
+WM_IME_SELECT = 0x285
+WM_IME_CHAR = 0x286
+WM_IME_KEYDOWN = 0x290
+WM_IME_KEYUP = 0x291
+
+WM_MOUSEHOVER = 0x2A1
+WM_NCMOUSELEAVE = 0x2A2
+WM_MOUSELEAVE = 0x2A3
+
+WM_CUT = 0x300
+WM_COPY = 0x301
+WM_PASTE = 0x302
+WM_CLEAR = 0x303
+WM_UNDO = 0x304
+
+WM_RENDERFORMAT = 0x305
+WM_RENDERALLFORMATS = 0x306
+WM_DESTROYCLIPBOARD = 0x307
+WM_DRAWCLIPBOARD = 0x308
+WM_PAINTCLIPBOARD = 0x309
+WM_VSCROLLCLIPBOARD = 0x30A
+WM_SIZECLIPBOARD = 0x30B
+WM_ASKCBFORMATNAME = 0x30C
+WM_CHANGECBCHAIN = 0x30D
+WM_HSCROLLCLIPBOARD = 0x30E
+WM_QUERYNEWPALETTE = 0x30F
+WM_PALETTEISCHANGING = 0x310
+WM_PALETTECHANGED = 0x311
+
+WM_HOTKEY = 0x312
+WM_PRINT = 0x317
+WM_PRINTCLIENT = 0x318
+
+WM_HANDHELDFIRST = 0x358
+WM_HANDHELDLAST = 0x35F
+WM_PENWINFIRST = 0x380
+WM_PENWINLAST = 0x38F
+WM_COALESCE_FIRST = 0x390
+WM_COALESCE_LAST = 0x39F
+WM_DDE_FIRST = 0x3E0
+WM_DDE_INITIATE = 0x3E0
+WM_DDE_TERMINATE = 0x3E1
+WM_DDE_ADVISE = 0x3E2
+WM_DDE_UNADVISE = 0x3E3
+WM_DDE_ACK = 0x3E4
+WM_DDE_DATA = 0x3E5
+WM_DDE_REQUEST = 0x3E6
+WM_DDE_POKE = 0x3E7
+WM_DDE_EXECUTE = 0x3E8
+WM_DDE_LAST = 0x3E8
+
+WM_USER = 0x400
+WM_APP = 0x8000
+ + diff --git a/src/docs/misc/Styles.htm b/src/docs/misc/Styles.htm new file mode 100644 index 0000000..f0fb0cd --- /dev/null +++ b/src/docs/misc/Styles.htm @@ -0,0 +1,1341 @@ + + + GUI Styles + + + + + + + +

Gui ±×¸®°í GuiControl ¸í·É¾î°¡ »ç¿ëÇÏ´Â ½ºÅ¸ÀÏ

+

¸ñÂ÷

+ +

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
½ºÅ¸ÀÏ°ª¼³¸í
GUI ⠱⺻°ª WS_POPUP, WS_CAPTION, WS_SYSMENU, WS_MINIMIZEBOX
GUI â¿¡ °­Á¦ WS_CLIPSIBLINGS
WS_BORDER0x800000+/-Border. ¾ãÀº Å׵θ®ÀÇ Ã¢À» ¸¸µì´Ï´Ù.
WS_POPUP0x80000000Æ˾÷ âÀ» ¸¸µì´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº WS_CHILD ½ºÅ¸ÀÏ°ú ÇÔ²² »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
WS_CAPTION0xC00000+/-Caption. ŸÀÌƲ¹Ù¸¦ °¡Áø âÀ» ¸¸µì´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº WS_BORDER ±×¸®°í WS_DLGFRAME¸¦ ¼ýÄ¡ÀûÀ¸·Î Á¶ÇÕÇÕ´Ï´Ù.
WS_DISABLED0x8000000+/-Disabled. óÀ½¿¡ ºñÈ°¼º »óÅ·ΠâÀ» ¸¸µì´Ï´Ù.
WS_DLGFRAME0x400000Å׵θ® ½ºÅ¸ÀÏÀ» °¡Áø âÀ» ¸¸µì´Ï´Ù. º¸Åë ´ëÈ­»óÀÚ¿¡ ¸¹ÀÌ »ç¿ëµË´Ï´Ù.
WS_GROUP0x20000+/-Group. ÀÌ ÄÜÆ®·ÑÀÌ ÄÜÆ®·Ñ ±×·ì¿¡¼­ ù ¹ø° ÄÜÆ®·ÑÀ̶ó´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº ÀÚµ¿À¸·Î ¶óµð¿À ¹öÆ°ÀÇ "ÇÑ ¹ø¿¡ ¿ÀÁ÷ Çϳª¸¸" ÇàÀ§¸¦ °ü¸®Çϵµ·Ï Àû¿ëµË´Ï´Ù. + + +¾ÆÁÖ Èñ±ÍÇÑ °æ¿ì·Î µÎ ±×·ìÀÇ ¶óµð¿À ¹öÆ°ÀÌ ¿¬¼ÓÀûÀ¸·Î (»çÀÌ¿¡ ´Ù¸¥ ÄÜÆ®·Ñ À¯ÇüÀÌ ¾øÀÌ) Ãß°¡µÇ¸é, + ÀÌ ½ºÅ¸ÀÏÀº µÎ ¹ø° ¶óµð¿À ±×·ìÀÇ Ã¹ ÄÜÆ®·Ñ¿¡¸¸ Àû¿ëµË´Ï´Ù. µû¶ó¼­ ù ¹ø° ±×·ì°ú ºÐ¸®µÇ¾î ¹ö¸³´Ï´Ù. +
WS_HSCROLL0x100000¼öÆò ½ºÅ©·Ñ¹Ù¸¦ °¡Áø âÀ» ¸¸µì´Ï´Ù.
WS_MAXIMIZE0x1000000óÀ½¿¡ ÃÖ´ëÈ­ »óÅ·ΠâÀ» ¸¸µì´Ï´Ù.
WS_MAXIMIZEBOX0x10000+/-MaximizeBox. ÃÖ´ëÈ­ ¹öÆ°ÀÌ Àִ âÀ» ¸¸µì´Ï´Ù. WS_EX_CONTEXTHELP ½ºÅ¸ÀÏ°ú ÇÔ²² »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. WS_SYSMENU ½ºÅ¸Àϵµ ¿ª½Ã ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù.
WS_MINIMIZE0x20000000óÀ½¿¡ ÃÖ¼ÒÈ­ »óÅ·ΠâÀ» ¸¸µì´Ï´Ù.
WS_MINIMIZEBOX0x20000+/-MinimizeBox. ÃÖ¼ÒÈ­ ¹öÆ°À» °¡Áø âÀ» ¸¸µì´Ï´Ù. WS_EX_CONTEXTHELP ½ºÅ¸ÀÏ°ú ÇÔ²² »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. WS_SYSMENU ½ºÅ¸Àϵµ ¿ª½Ã ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù.
WS_OVERLAPPED0Áßø âÀ» ¸¸µì´Ï´Ù. Áßø âÀº ŸÀÌƲ¹Ù¿Í Å׵θ®¸¦ °¡Áý´Ï´Ù. WS_TILED ½ºÅ¸ÀÏ°ú µ¿ÀÏÇÕ´Ï´Ù.
WS_OVERLAPPEDWINDOW0xCF0000WS_OVERLAPPED, WS_CAPTION, + WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX, ±×¸®°í WS_MAXIMIZEBOX ½ºÅ¸ÀÏÀ» »ç¿ëÇØ Áßø âÀ» ¸¸µì´Ï´Ù. + WS_TILEDWINDOW ½ºÅ¸ÀÏ°ú µ¿ÀÏÇÕ´Ï´Ù.
WS_POPUPWINDOW0x80880000WS_BORDER, WS_POPUP, ±×¸®°í WS_SYSMENU ½ºÅ¸ÀÏÀ» »ç¿ëÇØ Æ˾÷ âÀ» ¸¸µì´Ï´Ù. + The WS_CAPTION°ú WS_POPUPWINDOW ½ºÅ¸ÀÏÀ» Á¶ÇÕÇÏ¿© â ¸Þ´º¸¦ º¸¿©ÁÖ¾î¾ß ÇÕ´Ï´Ù.
WS_SIZEBOX0x40000+/-Resize. Å©±âÁ¶Àý Å׵θ®¸¦ °¡Áø âÀ» ¸¸µì´Ï´Ù. WS_THICKFRAME ½ºÅ¸ÀÏ°ú µ¿ÀÏÇÕ´Ï´Ù.
WS_SYSMENU0x80000+/-SysMenu. ŸÀÌƲ ¹Ù¿¡ â ¸Þ´º¸¦ °¡Áø âÀ» ¸¸µì´Ï´Ù. WS_CAPTION ½ºÅ¸Àϵµ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù.
WS_TABSTOP0x10000+/-Tabstop. »ç¿ëÀÚ°¡ TAB Å°¸¦ ´©¸¦ ¶§ Å°º¸µå ÃÊÁ¡À» ¹ÞÀ» ¼ö ÀÖ´Â ÄÜÆ®·ÑÀ» ÁöÁ¤ÇÕ´Ï´Ù. TAB Å°¸¦ ´©¸£¸é WS_TABSTOP ½ºÅ¸ÀÏ°ú ÇÔ²² Å°º¸µå ÃÊÁ¡ÀÌ ´ÙÀ½ ÄÜÆ®·Ñ·Î ¹Ù²ò´Ï´Ù.
WS_THICKFRAME0x40000Å©±âÁ¶Àý Å׵θ®¸¦ °¡Áø âÀ» ¸¸µì´Ï´Ù. WS_SIZEBOX ½ºÅ¸ÀÏ°ú µ¿ÀÏÇÕ´Ï´Ù
WS_VSCROLL0x200000¼öÁ÷ ½ºÅ©·Ñ¹Ù¸¦ °¡Áø âÀ» ¸¸µì´Ï´Ù.
WS_VISIBLE0x10000000óÀ½¿¡ º¸ÀÌ´Â »óÅ·ΠâÀ» ¸¸µì´Ï´Ù.
WS_CHILD0x40000000ÀÚ¼Õ Ã¢À» ¸¸µì´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀÇ Ã¢Àº ¸Þ´º¹Ù¸¦ °¡Áú ¼ö ¾ø½À´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº WS_POPUP ½ºÅ¸ÀÏ°ú ÇÔ²² »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Text ½ºÅ¸ÀÏ°ª¼³¸í
default None
forced None
SS_BLACKFRAME0x7¹Ú½º¸¦ ÁöÁ¤ÇÕ´Ï´Ù. â ÇÁ·¹ÀÓ°ú °°Àº »öÀ¸·Î ±×¸³´Ï´Ù. ÀÌ »öÀº ±âº» Ä÷¯ ü°è¿¡ ´ëÇÏ¿© °ËÁ¤»öÀÔ´Ï´Ù.
SS_BLACKRECT0x4ÇöÀç â ÇÁ·¹ÀÓ »öÀ¸·Î ä¿öÁø »ç°¢ÇüÀ» ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ »öÀº ±âº» Ä÷¯ ü°è¿¡ ´ëÇÏ¿© °ËÁ¤»öÀÔ´Ï´Ù.
SS_CENTER0x1+/-Center. °£´ÜÇÑ »ç°¢ÇüÀ» ÁöÁ¤ÇÏ°í ¿¡·¯ °ª ÅؽºÆ®¸¦ ±× °¡¿îµ¥¿¡ ¹èÄ¡ÇÕ´Ï´Ù. ÄÜÆ®·ÑÀº ÁÙ ³¡À» Áö³ª ´ÙÀ½ ÁÙÀÇ Ã³À½±îÁö °ÉÄ¡´Â ´Ü¾îµéÀ» ÀÚµ¿À¸·Î ³Ñ±é´Ï´Ù.
SS_ETCHEDFRAME0x12Á¤Àû ÄÜÆ®·ÑÀÇ ÇÁ·¹ÀÓÀ» ±×¸³´Ï´Ù. EDGE_ETCHED Å×Åõ¸® ½ºÅ¸ÀÏÀ» »ç¿ëÇÕ´Ï´Ù.
SS_ETCHEDHORZ0x10Á¤Àû ÄÜÆ®·ÑÀÇ À§ ¾Æ·¡ Å׵θ®¸¦ ±×¸³´Ï´Ù. EDGE_ETCHED Å׵θ® ½ºÅ¸ÀÏÀ» »ç¿ëÇÕ´Ï´Ù.
SS_ETCHEDVERT0x11Á¤Àû ÄÜÆ®·ÑÀÇ Á¿ì Å׵θ®¸¦ ±×¸³´Ï´Ù. EDGE_ETCHED Å׵θ® ½ºÅ¸ÀÏÀ» »ç¿ëÇÕ´Ï´Ù.
SS_GRAYFRAME0x8ÇÁ·¹ÀÓÀ» °¡Áø ¹Ú½º¸¦ ÁöÁ¤ÇÕ´Ï´Ù. È­¸é(¹ÙÅÁÈ­¸é) ¹è°æ»ö°ú °°Àº »öÀ¸·Î ±×·ÁÁý´Ï´Ù. ÀÌ »öÀº ±âº» Ä÷¯ ü°è¿¡¼­ ȸ»öÀÔ´Ï´Ù.
SS_GRAYRECT0x5ÇöÀç È­¸é ¹è°æ »öÀ¸·Î ä¿öÁø »ç°¢ÇüÀ» ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ »öÀº ±âº» Ä÷¯ ü°è¿¡¼­ ȸ»öÀÔ´Ï´Ù.
SS_LEFT0+/-Left. ÀÌ°ÍÀÌ ±âº»°ªÀÔ´Ï´Ù. °£´ÜÇÑ »ç°¢ÇüÀ» ÁöÁ¤ÇÏ°í ¾ÈÀÇ ÅؽºÆ®¸¦ ¿ÞÂÊÀ¸·Î Á¤·ÄÇÕ´Ï´Ù. + ÅؽºÆ®¸¦ º¸¿©ÁÖ±â Àü¿¡ ¸ÕÀú Æ÷¸ËÇÕ´Ï´Ù. ÁÙ ³¡À» Áö³ª È®ÀåµÈ ´Ü¾îµéÀº ÀÚµ¿À¸·Î ´ÙÀ½ ÁÙ¿¡ ¿ÞÂÊ Á¤·ÄµË´Ï´Ù. ÄÜÆ®·ÑÀÇ ³Êºñº¸´Ù ´õ ±ä ´Ü¾îµéÀº Àß·Á ³ª°©´Ï´Ù.
SS_LEFTNOWORDWRAP0xC+/-Wrap. »ç°¢ÇüÀ» ÁöÁ¤ÇÏ°í ¾ÈÀÇ ÅؽºÆ®¸¦ ¿ÞÂÊ Á¤·ÄÇÕ´Ï´Ù. ÅÇÀº È®ÀåµÇÁö¸¸, ´Ü¾îµéÀº ·¦µÇÁö ¾Ê½À´Ï´Ù. ÁÙ³¡À» Áö³ª È®ÀåµÈ ÅؽºÆ®´Â Àß·Á³ª°©´Ï´Ù.
SS_NOPREFIX0x80ÄÜÆ®·ÑÀÇ ÅؽºÆ®¿¡¼­ ¾ÚÆÛ¼¾µå(&) ¹®ÀÚ¸¦ °¡¼Ó Á¢µÎ ¹®ÀÚ·Î ¹ø¿ªÇÏÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù. ÀÌ°ÍÀº ¾ÚÆÛ¼¾µå (&)°¡ Æ÷ÇԵǾî ÀÖ´Â ÆÄÀÏ À̸§À̳ª ´Ù¸¥ ¹®ÀÚ¿­À» º¸¿©ÁÖ¾î¾ß ÇÒ °æ¿ì¿¡ À¯¿ëÇÕ´Ï´Ù
SS_NOTIFY0x100»ç¿ëÀÚ°¡ ÄÜÆ®·ÑÀ» Ŭ¸¯ÇÒ ¶§ ºÎ¸ð â¿¡ STN_CLICKED °íÁö¸¦ Àü¼ÛÇÕ´Ï´Ù.
SS_RIGHT0x2+/-Right. »ç°¢ÇüÀ» ÁöÁ¤ÇÏ°í ±× ¾ÈÀÇ ÅؽºÆ®¸¦ ¿À¸¥ÂÊ Á¤·ÄÇÕ´Ï´Ù.
SS_SUNKEN0x1000Á¤Àû ÄÜÆ®·Ñ µÑ·¹¿¡ ¹ÝÂë ´­·ÁÁø Å׵θ®¸¦ ±×¸³´Ï´Ù.
SS_WHITEFRAME0x9ÇÁ·¹ÀÓÀ» °¡Áø ¹Ú½º¸¦ ÁöÁ¤ÇÕ´Ï´Ù. â ¹è°æ°ú °°Àº »öÀ¸·Î ±×·ÁÁý´Ï´Ù. ÀÌ »öÀº ±âº» Ä÷¯ ü°è¿¡¼­ ÇϾá»öÀÔ´Ï´Ù.
SS_WHITERECT0x6ÇöÀç âÀÇ ¹è°æ»öÀ¸·Î ä¿öÁø »ç°¢ÇüÀ» ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ »öÀº ±âº» Ä÷¯ ü°è¿¡¼­ ÇϾá»öÀÔ´Ï´Ù.
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Edit ½ºÅ¸ÀÏ°ª¼³¸í
default 

WS_TABSTOP ±×¸®°í WS_EX_CLIENTEDGE (È®Àå ½ºÅ¸ÀÏ E0x200)

+

Edit ÄÜÆ®·ÑÀÌ ¿©·¯-ÁÙ·Î ÀÚµ¿ ŽÁöµË´Ï´Ù. ½ÃÀÛºÎÅÍ ³»¿ë¿¡ ¿©·¯ ÁÙÀÌ ´ã°Ü Àְųª, ±×ÀÇ ³ôÀÌ°¡ 1 Çຸ´Ù Å©°Å³ª, ¾Æ´Ï¸é ±×ÀÇ Çà °³¼ö°¡ ¸í½ÃÀûÀ¸·Î 1º¸´Ù Å©°Ô ÁöÁ¤µÇ¾î Àֱ⠶§¹®ÀÔ´Ï´Ù. + ´ÙÀ½ ½ºÅ¸ÀÏÀÌ ±âº»À¸·Î Àû¿ëµË´Ï´Ù: WS_VSCROLL, ES_WANTRETURN, ±×¸®°í ES_AUTOVSCROLL

+

EditÀÌ ÇÑ ÁÙ·Î ÀÚµ¿ ŽÁöµÇ¸é, ±âº»°ªÀº ES_AUTOHSCROLLÀÔ´Ï´Ù.

forced None
ES_AUTOHSCROLL0x80+/-Wrap ¿©·¯-ÁÙ ÆíÁý, ±×¸®°í +/-Limit ÇÑ-ÁÙ ÆíÁý. + »ç¿ëÀÚ°¡ ÁÙ ³¡¿¡¼­ ¹®ÀÚ¸¦ Çϳª ŸÀÚÇϸé ÀÚµ¿À¸·Î ¿À¸¥ÂÊÀ¸·Î 10 ¹®ÀÚ ¸¸Å­ °¨½À´Ï´Ù. + »ç¿ëÀÚ°¡ ENTER Å°¸¦ ´©¸¦ ¶§, ¸ðµç ÅؽºÆ®¸¦ ´Ù½Ã 0 À§Ä¡·Î °¨½À´Ï´Ù.
ES_AUTOVSCROLL0x40»ç¿ëÀÚ°¡ ¸¶Áö¸· ÁÙ¿¡¼­ ENTER Å°¸¦ ´©¸£¸é ÅؽºÆ®¸¦ ÇÑ ÆäÀÌÁö °¨¾Æ ¿Ã¸³´Ï´Ù.
ES_CENTER0x1+/-Center. ¿©·¯ ÁÙ ÄÜÆ®·Ñ¿¡¼­ ÅؽºÆ®¸¦ °¡¿îµ¥ Á¤·ÄÇÕ´Ï´Ù.
ES_LOWERCASE0x10+/-Lowercase. ÆíÁý ÄÜÆ®·Ñ ¾ÈÀ¸·Î ¹®ÀÚ°¡ ŸÀÚµÇ¾î µé¾î¿À¸é ¸ðµÎ ¼Ò¹®ÀÚ·Î º¯È¯ÇÕ´Ï´Ù.
ES_NOHIDESEL0x100±âº» ÇàÀ§¸¦ ºÎÀÎÇÕ´Ï´Ù. ±âº» ÇàÀ§´Â ÄÜÆ®·ÑÀÌ ÀÔ·Â ÃÊÁ¡À» ÀÒ¾î ¹ö¸± ¶§ ¼±ÅÃÀ» °¨Ãß°í ÀÔ·Â ÃÊÁ¡À» ¹ÞÀ» ¶§ ¼±ÅÃÀ» ¿ª»óÀ¸·Î º¸¿©ÁÝ´Ï´Ù. ES_NOHIDESELÀ» ÁöÁ¤Çß´Ù¸é, ÄÜÆ®·Ñ¿¡ ÃÊÁ¡ÀÌ ¾ø´õ¶óµµ ¼±ÅÃµÈ ÅؽºÆ®°¡ ¿ª»óÀ¸·Î º¸ÀÔ´Ï´Ù.
ES_NUMBER0x2000+/-Number. »ç¿ëÀÚ°¡ ¼ýÀÚ°¡ ¾Æ´Ñ ´Ù¸¥ °ÍÀº ŸÀÚÇÏÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù.
ES_OEMCONVERT0x400ÀÌ ½ºÅ¸ÀÏÀº ÆÄÀÏ À̸§ÀÌ Æ÷ÇÔµÈ ÆíÁý ÄÜÆ®·Ñ¿¡ ¾ÆÁÖ À¯¿ëÇÕ´Ï´Ù.
ES_MULTILINE0x4+/-Multi. ¿©·¯ÁÙ ÆíÁý ÄÜÆ®·ÑÀ» ÁöÁ¤ÇÕ´Ï´Ù. ±âº»°ªÀº ÇÑÁÙ ÆíÁý ÄÜÆ®·ÑÀÔ´Ï´Ù.
ES_PASSWORD0x20+/-Password. ŸÀÚµÇ¾î µé¾î¿À´Â °¢ ¹®ÀÚ ´ë½Å¿¡ ÀºÆó ¹®ÀÚ¸¦ º¸¿©ÁÝ´Ï´Ù. ÅؽºÆ®¸¦ °¨Ãä´Ï´Ù.
ES_READONLY0x800+/-ReadOnly. »ç¿ëÀÚ°¡ ÆíÁý ÄÜÆ®·Ñ¿¡ ŸÀÚÇϰųª ÆíÁýÇÏÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù.
ES_RIGHT0x2+/-Right. ¿©·¯ÁÙ ÆíÁý ÄÜÆ®·Ñ¿¡ ¿ìÃø Á¤·ÄÇÕ´Ï´Ù.
ES_UPPERCASE0x8+/-Uppercase. ÆíÁý ÄÜÆ®·Ñ ¾ÈÀ¸·Î ¹®ÀÚ°¡ ŸÀÚµÇ¾î µé¾î¿À¸é ¸ðµÎ ´ë¹®ÀÚ·Î º¯È¯ÇÕ´Ï´Ù.
ES_WANTRETURN0x1000+/-WantReturn. ´ëÈ­»óÀÚ¿¡¼­ ¿©·¯ÁÙ ÆíÁý ÄÜÆ®·Ñ ¾ÈÀ¸·Î ÅؽºÆ®¸¦ ŸÀÚÇÏ´Â µ¿¾È »ç¿ëÀÚ°¡ ENTER Å°¸¦ ´©¸¦ ¶§ ij¸®Áö ¸®ÅÏÀÌ »ðÀԵǵµ·Ï ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀ» ÁöÁ¤ÇÏÁö ¾ÊÀº °æ¿ì, ENTER Å°¸¦ ´©¸£¸é ´ëÈ­»óÀÚÀÇ ±âº» Ǫ½Ã ¹öÆ°À» ´©¸¥ °Í°ú È¿°ú°¡ µ¿ÀÏÇÕ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº ÇÑ-ÁÙ ÆíÁý ÄÜÆ®·Ñ¿¡´Â ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù.
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UpDown ½ºÅ¸ÀÏ°ª¼³¸í
default UDS_ARROWKEYS, UDS_ALIGNRIGHT, UDS_SETBUDDYINT, ±×¸®°í UDS_AUTOBUDDY.
forced None
UDS_WRAP0x1À̸§ÀÖ´Â ¿É¼Ç "Wrap". ÄÜÆ®·ÑÀº »ç¿ëÀÚ°¡ ÃÖ´ë ÃÖ¼Ò °ªÀ» ³Ñ¾î¼­·Á°í ÇÏ¸é ±×ÀÇ ¹üÀ§ÀÇ ´Ù¸¥ ÂÊ ³¡À¸·Î µÇµ¹¸³´Ï´Ù. WrapÀÌ ¾ø´Ù¸é, ÃÖ´ë ÃÖ¼Ò °ª¿¡ µµ´ÞÇÏ¸é ¸ØÃä´Ï´Ù.
UDS_SETBUDDYINT0x2 À§Ä¡°¡ ¹Ù²ð ¶§ UpDown ÄÜÆ®·ÑÀº (WM_SETTEXT ¸Þ½ÃÁö¸¦ »ç¿ëÇÏ¿©) Ä£±¸ ÄÜÆ®·ÑÀÇ ÅؽºÆ®¸¦ ¼³Á¤ÇÕ´Ï´Ù. ±×·¸Áö¸¸, Ä£±¸°¡ ListBox¶ó¸é, ±× ListBoxÀÇ ÇöÀç ¼±ÅÃÀÌ ´ë½Å ¹Ù²ò´Ï´Ù.
UDS_ALIGNRIGHT0x4À̸§ÀÖ´Â ¿É¼Ç "Right" (±âº»°ª). UpDownÀ» Ä£±¸ ÄÜÆ®·ÑÀÇ ¿À¸¥ÂÊ¿¡ ¹èÄ¡ÇÕ´Ï´Ù.
UDS_ALIGNLEFT0x8À̸§ÀÖ´Â ¿É¼Ç "Left". UpDownÀ» Ä£±¸ ÄÜÆ®·ÑÀÇ ¿ÞÂÊ¿¡ ¹èÄ¡ÇÕ´Ï´Ù.
UDS_AUTOBUDDY0x10ÀÚµ¿À¸·Î UpDown ÄÜÆ®·ÑÀÇ Ä£±¸ ÄÜÆ®·Ñ·Î z-¼ø¼­·Î ÀÌÀüÀÇ ÄÜÆ®·ÑÀ» ¼±ÅÃÇÕ´Ï´Ù.
UDS_ARROWKEYS0x20»ç¿ëÀÚ´Â Å°º¸µå¿¡¼­ Up ¶Ç´Â Down È­»ìÇ¥ Å°¸¦ ´­·¯ UpDown ÄÜÆ®·ÑÀÌ À§Ä¡¸¦ º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.
UDS_HORZ0x40À̸§ÀÖ´Â ¿É¼Ç "Horz". ÄÜÆ®·ÑÀÇ È­»ìÇ¥°¡ À§ ¾Æ·¡°¡ ¾Æ´Ï¶ó Á¿츦 °¡¸®Åµ´Ï´Ù.
UDS_NOTHOUSANDS0x80Ä£±¸ ÄÜÆ®·Ñ¿¡ ¼¼ÀÚ¸®¸¶´Ù »çÀÌ¿¡ õÀÇ ÀÚ¸® °¡¸§ÀÚ¸¦ »ðÀÔÇÏÁö ¾Ê½À´Ï´Ù.
UDS_HOTTRACK0x100ÄÜÆ®·ÑÀº "ÇÖ Æ®·¡Å·" ÇàÀ§¸¦ ÇÕ´Ï´Ù. Áï, ¸¶¿ì½º°¡ Áö³ª°¥ ¶§ ÄÜÆ®·Ñ ¹öÆ°À» °­Á¶ÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀº Windows XP¿¡¼­ ¹ÙÅÁÈ­¸é Å׸¶°¡ ¿À¹ö¶óÀ̵å ÇÏ¸é ¹«½ÃµË´Ï´Ù.
(hex) 

Ä£±¸ ÄÜÆ®·Ñ ¾È¿¡ º¸¿©Áö´Â ¼ýÀÚ Çü½ÄÀº ½ÊÁø Çü½Ä¿¡¼­ ½ÊÀ°Áø Çü½ÄÀ¸·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦¸¦ µû¸£¸é µË´Ï´Ù:

+ +
Gui +LastFound
+SendMessage, 1133, 16, 0, msctls_updown321 ; 1133Àº UDM_SETBASEÀÔ´Ï´Ù
+ +

±×·¸Áö¸¸, ÀÌ°ÍÀº Ä£±¸ ÄÜÆ®·Ñ¿¡¸¸ ¿µÇâÀ» ÁÝ´Ï´Ù. UpDownÀÇ º¸°íµÈ À§Ä¡¿¡´Â ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù.

+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Picture ½ºÅ¸ÀÏ°ª¼³¸í
default None
forced ¾ÆÀÌÄÜ°ú Ä¿¼­´Â SS_ICON.
+ ´Ù¸¥ À̹ÌÁö À¯ÇüÀº SS_BITMAP.
SS_REALSIZECONTROL0x40[Windows XP ÀÌÈÄ] ºñÆ®¸ÊÀ» ÄÜÆ®·ÑÀÇ Å©±â¿¡ ¸ÂÃä´Ï´Ù.
SS_CENTERIMAGE0x200ºñÆ®¸ÊÀ» °¡¿îµ¥ Á¤·ÄÇÕ´Ï´Ù. ºñÆ®¸ÊÀÌ ³Ê¹« Å©¸é Àß·Á ³ª°©´Ï´Ù. ÅؽºÆ® ÄÜÆ®·Ñ¿¡ ´ëÇÏ¿© ÄÜÆ®·Ñ¿¡ ÇÑÁÙÀÇ ÅؽºÆ®°¡ µé¾î ÀÖÀ¸¸é, ÅؽºÆ®´Â °¡´ÉÇÑ ³ôÀÌ ¾È¿¡¼­ ¼öÁ÷À¸·Î °¡¿îµ¥ Á¤·ÄµË´Ï´Ù. +

Microsoft Windows XP: ÀÌ ½ºÅ¸ÀÏÀº »ç¿ëµÇÁö ¾Ê´Â ºÎºÐÀ» ´õ ÀÌ»ó ºñÆ®¸ÊÀ̳ª ¾ÆÀÌÄÜÀÇ Á»ó Çȼ¿ÀÇ »öÀ¸·Î ä¿ìÁö ¾Ê½À´Ï´Ù. »ç¿ëµÇÁö ¾Ê´Â ºÎºÐÀº ¿©ÀüÈ÷ ¹è°æ»öÀ¸·Î ³²¾Æ ÀÖ½À´Ï´Ù.

+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Button, Checkbox, Radio, ±×¸®°í GroupBox ½ºÅ¸ÀÏ°ª¼³¸í
default 

BS_MULTILINE (GroupBox Á¦¿Ü, ¹öÆ° Á¦¿Ü, üũ¹Ú½º Á¦¿Ü, ±×¸®°í ¸í½ÃÀûÀ¸·Î ³Êºñ¿Í ³ôÀÌ°¡ ¼³Á¤µÇÁö ¾ÊÀº ¶óµð¿À ¹öÆ° Á¦¿Ü, ÅؽºÆ® ¾È¿¡ CR/LF ¹®ÀÚ°¡ À־ Á¦¿Ü)

+

WS_TABSTOP (GroupBox Á¦¿Ü) -- ±×·¸Áö¸¸, °¢ ¶óµð¿À ±×·ì¿¡¼­ ù ¹ø° ¹öÆ°¸¸ ±âº»À¸·Î WS_TABSTOPÀÌ ÀÖ½À´Ï´Ù. °Ô´Ù°¡, ¶óµð¿À ¹öÆ°Àº BS_NOTIFYÀÌ À־ ´õºí Ŭ¸¯À» ŽÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.

forced ¹öÆ°: BS_PUSHBUTTON ¶Ç´Â BS_DEFPUSHBUTTON
+ ¶óµð¿À: BS_AUTORADIOBUTTON
+ üũ¹Ú½º: BS_AUTOCHECKBOX ¶Ç´Â BS_AUTO3STATE
+ ±×·ì¹Ú½º: BS_GROUPBOX
BS_LEFT0x100+/-Left. ÅؽºÆ®¸¦ ¿ÞÂÊ Á¤·ÄÇÕ´Ï´Ù.
BS_PUSHLIKE0x1000üũ¹Ú½º³ª ¶óµð¿À ¹öÆ°ÀÌ Çª½Ã ¹öưó·³ º¸ÀÌ°í ÇൿÇÏ°Ô ¸¸µì´Ï´Ù. ¹öÆ°Àº ´­·Á ÀÖÁö ¾Ê°Å³ª üũµÇ¾î ÀÖÁö ¾ÊÀ¸¸é Æ¢¾î ³ª¿Í º¸ÀÔ´Ï´Ù. ´©¸£°Å³ª üũÇÒ ¶§ ¾¦ µé¾î°©´Ï´Ù.
BS_RIGHT0x200+/-Right. ÅؽºÆ®¸¦ ¿ìÃø Á¤·ÄÇÕ´Ï´Ù.
BS_RIGHTBUTTON0x20+Right (Áï, +Right´Â BS_RIGHT ±×¸®°í BS_RIGHTBUTTON¸¦ µÑ ´Ù Æ÷ÇÔÇÏÁö¸¸, -Right´Â BS_RIGHT¸¸ Á¦°ÅÇÕ´Ï´Ù. BS_RIGHTBUTTON´Â Á¦°ÅÇÏÁö ¾Ê½À´Ï´Ù). üũ¹Ú½º ³×¸ð ¶Ç´Â ¶óµð¿À ¹öÆ° µ¿±×¶ó¹Ì¸¦ ÄÜÆ®·ÑÀÇ ¿ÞÂÊ ´ë½Å¿¡ ¿À¸¥ÂÊ¿¡ ¹èÄ¡ÇÕ´Ï´Ù.
BS_BOTTOM0x800ÅؽºÆ®¸¦ ÄÜÆ®·Ñ ³ôÀÌÀÇ ¾Æ·¡¿¡ ¹èÄ¡ÇÕ´Ï´Ù.
BS_CENTER0x300+/-Center. ÅؽºÆ®¸¦ ÄÜÆ®·Ñ ³ÊºñÀÇ Áß¾Ó¿¡ ¼öÆòÀ¸·Î ¹èÄ¡ÇÕ´Ï´Ù.
BS_DEFPUSHBUTTON0x1+/-Default. µÎ²¨¿î °ËÁ¤»ö Å׵θ®¸¦ °¡Áø Ǫ½¬ ¹öÆ°À» »ý¼ºÇÕ´Ï´Ù. ¹öÆ°ÀÌ ´ëÈ­»óÀÚ ¾È¿¡ ÀÖÀ¸¸é, »ç¿ëÀÚ´Â ±× ¹öÆ°¿¡ ÀÔ·Â ÃÊÁ¡ÀÌ ¾ø´õ¶óµµ ENTER Å°¸¦ ´­·¯ ±× ¹öÆ°À» ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ½ºÅ¸ÀÏ·Î »ç¿ëÀÚ´Â Áï½Ã ´ëºÎºÐÀÇ °¡´ÉÇÑ ¿É¼ÇÀ» ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.
BS_MULTILINE0x2000+/-Wrap. ÅؽºÆ®¸¦ ¿©·¯ÁÙ·Î ³Ñ±é´Ï´Ù. ÅؽºÆ®°¡ ÄÜÆ®·Ñ ³Êºñº¸´Ù ³Ê¹« ±æ¾î ÇÑ ÁÙ¿¡ ¸ÂÃâ ¼ö ¾øÀ¸¸é ¶ÇÇÑ ¶óÀÎÇǵ带 Çã¿ëÇؼ­ (`n) »õ ÁÙÀÇ ÅؽºÆ®¸¦ ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù.
BS_TOP0x400ÅؽºÆ®¸¦ ÄÜÆ®·Ñ ³ôÀÌÀÇ »ó´Ü¿¡ ¹èÄ¡ÇÕ´Ï´Ù.
BS_VCENTER0xC00ÄÜÆ®·ÑÀÇ ³ôÀÌ¿¡ ¼öÁ÷À¸·Î ÅؽºÆ®¸¦ Áß¾Ó¿¡ ¹èÄ¡ÇÕ´Ï´Ù.
BS_FLAT0x8000¹öÆ°ÀÌ Æò¸éÀÓÀ» ÁöÁ¤ÇÕ´Ï´Ù; 3-D È¿°ú¸¦ À§ÇØ ±âº» ½¦À̵ùÀ» »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù.
+ +

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DropDownList ±×¸®°í ComboBox ½ºÅ¸ÀÏ°ª¼³¸í
default WS_TABSTOP (+/-Tabstop)
+ DropDownList: WS_VSCROLL
+ ComboBox: WS_VSCROLL, CBS_AUTOHSCROLL
forced DropDownList: CBS_DROPDOWNLIST
+ ComboBox: Either CBS_DROPDOWN ¶Ç´Â CBS_SIMPLE
CBS_AUTOHSCROLL0x40+/-Limit. »ç¿ëÀÚ°¡ ÁÙ³¡¿¡ ¹®ÀÚ¸¦ ŸÀÚÇϸé ÀÚµ¿À¸·Î ÅؽºÆ®¸¦ ÆíÁý ÄÜÆ®·Ñ ¾È¿¡¼­ ¿À¸¥ÂÊÀ¸·Î °¨½À´Ï´Ù. ÀÌ ½ºÅ¸ÀÏ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é, ¿ÀÁ÷ »ç°¢ °æ°è ¾È¿¡ ¸Â´Â ÅؽºÆ®¸¸ º¸ÀÔ´Ï´Ù.
CBS_DISABLENOSCROLL0x800½ºÅ©·Ñ ÇÒ ¸¸Å­ ÃæºÐÈ÷ Ç׸ñÀÌ ¾øÀ» ¶§ ºñÈ°¼ºÈ­ µÈ ¼öÁ÷ ½ºÅ©·Ñ ¹Ù¸¦ ¸®½ºÆ® ¹Ú½º¿¡ º¸¿©ÁÝ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀÌ ¾ø´Ù¸é, ÃæºÐÈ÷ Ç׸ñÀÌ ¾øÀ» ¶§ ½ºÅ©·Ñ ¹Ù°¡ º¸ÀÌÁö ¾Ê½À´Ï´Ù.
CBS_LOWERCASE0x4000+/-Lowercase. ÄÞº¸ ¹Ú½ºÀÇ ÆíÁý ÄÜÆ®·Ñ ¾ÈÀ¸·Î ŸÀÚµÇ¾î µé¾î°¡´Â ´ë¹®ÀÚ¸¦ ¼Ò¹®ÀÚ·Î º¯È¯ÇÕ´Ï´Ù.
CBS_NOINTEGRALHEIGHT0x400ÄÞº¸ ¹Ú½º¸¦ ¸¸µé ¶§ ¾îÇÃÀÌ ÁöÁ¤ÇÑ Å©±â´ë·Î Á¤È®ÇÏ°Ô °°Àº Å©±â°¡ µÇµµ·Ï ÁöÁ¤ÇÕ´Ï´Ù. º¸Åë, + Windows CE´Â ÄÞº¸ ¹Ú½º¸¦ ºÎºÐÀûÀ¸·Î Ç׸ñÀ» º¸¿©ÁÖÁö ¾Êµµ·Ï Å©±â¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
CBS_OEMCONVERT0x80 + ÄÞº¸ ¹Ú½ºÀÇ ÆíÁý ÄÜÆ®·Ñ¿¡ ŸÀÚµÇ¾î µé¾î°¡´Â ÅؽºÆ®¸¦ Windows CE ¹®ÀÚ ÁýÇÕÀ¸·ÎºÎÅÍ OEM ¹®ÀÚ ÁýÇÕÀ¸·Î ±×¸®°í ´Ù½Ã Windows CE ¹®ÀÚ ÁýÇÕÀ¸·Î º¯È¯ÇÕ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº ÆÄÀÏ À̸§ÀÌ µé¾î ÀÖ´Â ÄÞº¸ ¹Ú½º¿¡ ¾ÆÁÖ À¯¿ëÇÕ´Ï´Ù. CBS_DROPDOWN ½ºÅ¸ÀÏ·Î »ý¼ºµÈ ÄÞº¸ ¹Ú½º¿¡¸¸ Àû¿ëµË´Ï´Ù.
CBS_SIMPLE0x1+/-Simple (ÄÞº¸¹Ú½º Àü¿ë). ¸®½ºÆ® ¹Ú½º¸¦ ¾ðÁ¦³ª º¸¿©ÁÝ´Ï´Ù. ¸®½ºÆ® ¹Ú½ºÀÇ ÇöÀç ¼±ÅÃÀº ÆíÁý ÄÜÆ®·Ñ ¾È¿¡ º¸¿©Áý´Ï´Ù.
CBS_SORT0x100+/-Sort. µå·Ó ¸®½ºÆ®ÀÇ Ç׸ñµéÀ» ¾ËÆĺª ¼ø¼­·Î ¼³Á¤ÇÕ´Ï´Ù.
CBS_UPPERCASE0x2000+/-Uppercase. ÄÞº¸ ¹Ú½ºÀÇ ÆíÁý ÄÜÆ®·Ñ ¾ÈÀ¸·Î ŸÀÚµÇ¾î µé¾î¿À´Â ¼Ò¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î º¯°æÇÕ´Ï´Ù.
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ListBox ½ºÅ¸ÀÏ°ª±â¼ú
default WS_TABSTOP, LBS_USETABSTOPS, WS_VSCROLL, ±×¸®°í WS_EX_CLIENTEDGE (È®Àå ½ºÅ¸ÀÏ E0x200).
forced LBS_NOTIFY (´õºí Ŭ¸¯ ŽÁö Áö¿ø)
LBS_DISABLENOSCROLL0x1000 + ¹Ú½º¿¡ Ç׸ñÀÌ ÃæºÐÇÏÁö ¾Ê¾Æ ½ºÅ©·Ñ ÇÒ ¼ö ¾øÀ» ¶§ ºÒ´ÉÈ­ µÈ ¼öÁ÷ ½ºÅ©·Ñ ¹Ù¸¦ º¸¿©ÁÝ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀ» ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, ½ºÅ©·Ñ¹Ù´Â ¸®½ºÆ® ¹Ú½º¿¡ ÃæºÐÇÑ Ç׸ñÀÌ ¾øÀ» ¶§ º¸ÀÌÁö ¾Ê½À´Ï´Ù.
LBS_NOINTEGRALHEIGHT0x100¸®½ºÆ® ¹Ú½º°¡ ¾îÇø®ÄÉÀ̼ǿ¡ ÀÇÇÏ¿© »ý¼ºµÉ ¶§ ÁöÁ¤µÈ Å©±â¸¦ Á¤È®ÇÏ°Ô °¡Áöµµ·Ï ÁöÁ¤ÇÕ´Ï´Ù.
LBS_EXTENDEDSEL0x800+/-Multi. ÄÜÆ®·Ñ Ŭ¸¯ ±×¸®°í ½¬ÇÁÆ® Ŭ¸¯À¸·Î ´ÙÁß ¼±ÅÃÀ» Çã¿ëÇÕ´Ï´Ù.
LBS_MULTIPLESEL0x8´ÙÁß ¼±ÅÃÀ» °£·«È­ÇÑ ¹öÀü. control-click°ú shift-clickÀÌ ºÒÇÊ¿äÇÕ´Ï´Ù. º¸ÅëÀÇ ¿ÞŬ¸¯¸¸À¸·Î ¼±ÅÃÀ» È®ÀåÇϰųª ¼±ÅÃµÈ Ç׸ñÀ» ÇØÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù.
LBS_NOSEL0x4000+/-ReadOnly. »ç¿ëÀÚ´Â ¸®½ºÆ® ¹Ú½º ¹®ÀÚ¿­À» º¼ ¼ö´Â ÀÖÁö¸¸ ¼±ÅÃÇÒ ¼ö´Â ¾ø½À´Ï´Ù.
LBS_SORT0x2+/-Sort. ¸®½ºÆ® ¹Ú½º ¾ÈÀÇ Ç׸ñÀ» ¾ËÆĺª ¼øÀ¸·Î Á¤·ÄÇÕ´Ï´Ù.
LBS_USETABSTOPS0x80¹®ÀÚ¿­À» ±×¸± ¶§ ListBox°¡ ÅÇ ¹®ÀÚ¸¦ ÀÎÁöÇÏ°í È®´ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±âº» ÅÇ À§Ä¡´Â 32 ´ëÈ­»óÀÚ ¹Ú½º ´ÜÀ§ÀÔ´Ï´Ù. ´ëÈ­»óÀÚ ¹Ú½º ´ÜÀ§(dialog box unit)´Â ÇöÀç ´ëÈ­»óÀÚÀÇ ±âº» ³Êºñ ´ÜÀ§ÀÇ 1/4¿Í µ¿ÀÏÇÕ´Ï´Ù.
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ListView ½ºÅ¸ÀÏ°ª±â¼ú
default WS_TABSTOP, LVS_REPORT, LVS_SHOWSELALWAYS, LVS_EX_FULLROWSELECT, LVS_EX_HEADERDRAGDROP, WS_EX_CLIENTEDGE (E0x200)
forced None
LVS_ALIGNLEFT0x800¾ÆÀÌÄÜ Ã¢¿¡¼­ Ç׸ñµéÀº ¿ÞÂÊ Á¤·ÄµË´Ï´Ù.
LVS_ALIGNTOP0¾ÆÀÌÄÜ Ã¢¿¡¼­ Ç׸ñµéÀº À§ÂÊ¿¡ Á¤·ÄµË´Ï´Ù. ±âº»°ªÀÔ´Ï´Ù.
LVS_AUTOARRANGE0x100¾ÆÀÌÄÜÀº ÀÚµ¿À¸·Î Á¤·ÄµË´Ï´Ù.
LVS_EDITLABELS0x200+/-ReadOnly. -ReadOnly (¶Ç´Â +0x200)À» ÁöÁ¤ÇÏ¸é »ç¿ëÀÚ´Â °¢ ÇàÀÇ Ã¹ Çʵ带 Á¦ÀÚ¸®¿¡¼­ ÆíÁýÇÒ ¼ö ÀÖ½À´Ï´Ù.
LVS_ICON0+Icon. Å«-¾ÆÀÌÄÜ º¸±â¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
LVS_LIST0x3+List. ¸®½ºÆ® º¸±â¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
LVS_NOCOLUMNHEADER0x4000+/-Hdr. º¸°í¼­ º¸±â¿¡ ¿­ Çì´õ¸¦ º¸¿©ÁÖÁö ¾Ê½À´Ï´Ù.
LVS_NOLABELWRAP0x80¾ÆÀÌÄÜ º¸±â¿¡¼­ Item ÅؽºÆ®¸¦ ÇÑ ÁÙ¿¡ º¸¿©ÁÝ´Ï´Ù. ±âº»°ªÀ¸·Î, Ç׸ñÀº ¾ÆÀÌÄÜ º¸±â¿¡¼­ Áٳѱâ±â µË´Ï´Ù.
LVS_NOSCROLL0x2000½ºÅ©·ÑÀ» ²ü´Ï´Ù. ¸ðµç Ç׸ñÀº Ŭ¶óÀ̾ðÆ® ±¸¿ª ¾È¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº LVS_LIST ¶Ç´Â LVS_REPORT ½ºÅ¸ÀÏ°ú ȣȯµÇÁö ¾Ê½À´Ï´Ù.
LVS_NOSORTHEADER0x8000+/-NoSortHdr. ¿­ Çì´õ°¡ ¹öưó·³ ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù. º¸°í¼­ º¸±â¿¡¼­ ¿­ Çì´õ¸¦ Ŭ¸¯Çصµ ¾Æ¹« Á¶Ä¡µµ ÇÏÁö ¾ÊÀ» °æ¿ì¿¡ ÀÌ ½ºÅ¸ÀÏÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
LVS_OWNERDATA0x1000ÀÌ ½ºÅ¸ÀÏÀº °¡»ó ¸®½ºÆ® ºä ÄÜÆ®·ÑÀ» ÁöÁ¤ÇÕ´Ï´Ù. (¿ÀÅäÇÖÅ°°¡ Á÷Á¢ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù).
LVS_OWNERDRAWFIXED0x400»ç¿ëÀÚ Ã¢ÀÌ WM_DRAWITEM ¸Þ½ÃÁö¿¡ ÀÀ´äÇÏ¿© º¸°í¼­ º¸±â·Î Ç׸ñµéÀ» ±×¸³´Ï´Ù. (¿ÀÅäÇÖÅ°°¡ Á÷Á¢ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù).
LVS_REPORT0x1+Report. º¸°í¼­ º¸±â¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
LVS_SHAREIMAGELISTS0x40ÄÜÆ®·ÑÀÌ Æı«µÇ´õ¶óµµ À̹ÌÁö ¸®½ºÆ®°¡ »èÁ¦µÇÁö ¾Ê½À´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº ´ÙÁß ¸®½ºÆ® ºä ÄÜÆ®·Ñ¿¡ °°Àº À̹ÌÁö¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
LVS_SHOWSELALWAYS0x8¼±ÅÃÀÌ ¾ðÁ¦³ª º¸ÀÔ´Ï´Ù. ÄÜÆ®·Ñ¿¡ Å°º¸µå ÃÊÁ¡ÀÌ ¾ø´õ¶óµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.
LVS_SINGLESEL0x4+/-Multi. ÇÑ ¹ø¿¡ ¿ÀÁ÷ ÇÑ Ç׸ñ¸¸ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ±âº»°ªÀ¸·Î ¿©·¯ Ç׸ñÀ» ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.
LVS_SMALLICON0x2+IconSmall. ÀÛÀº ¾ÆÀÌÄÜ º¸±â¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
LVS_SORTASCENDING0x10+/-Sort. ÇàµéÀº ù ÇʵåÀÇ ³»¿ë¿¡ ±â¹ÝÇÏ¿© ¿À¸§Â÷¼øÀ¸·Î Á¤·ÄµË´Ï´Ù.
LVS_SORTDESCENDING0x20+/-SortDesc. À§¿Í °°Áö¸¸ ³»¸²Â÷¼øÀÔ´Ï´Ù.
LVS_EX_BORDERSELECTLV0x8000Ç׸ñÀÌ ¼±ÅÃµÉ ¶§ Ç׸ñÀÌ °­Á¶µÇ´Â °ÍÀÌ ¾Æ´Ï¶ó Ç׸ñÀÇ Å׵θ® »öÀÌ ¹Ù²ò´Ï´Ù (ÃֽŠ¿î¿µ üÁ¦¿¡¼­´Â ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù).
LVS_EX_CHECKBOXESLV0x4

+/-Checked. °¢ Ç׸ñ¸¶´Ù üũ¹Ú½º¸¦ º¸¿©ÁÝ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀ» ¼³Á¤Çϸé, ÄÜÆ®·ÑÀº DrawFrameControl¸¦ »ç¿ëÇÏ¿© µÎ °³ÀÇ À̹ÌÁö¸¦ °¡Áø »óÅ À̹ÌÁö ¸®½ºÆ®¸¦ »ý¼ºÇÏ°í ¼³Á¤ÇÕ´Ï´Ù. + »óÅ À̹ÌÁö 1Àº üũ Ç¥½Ã°¡ ¾ø´Â ¹Ú½ºÀÌ°í, »óÅ À̹ÌÁö 2´Â üũ Ç¥½ÃµÈ ¹Ú½ºÀÔ´Ï´Ù. »óÅ À̹ÌÁö¸¦ 0À¸·Î ¼³Á¤Çϸé üũ ¹Ú½º°¡ ¿ÏÀüÈ÷ Á¦°ÅµË´Ï´Ù.

+

+ Windows XP ÀÌÈÄ: üũ¹Ú½º´Â ¸ðµç ¸®½ºÆ® ºä ¸ðµå¿¡¼­ º¸ÀÌ°í ÀÛµ¿ÇÕ´Ï´Ù. ´Ü, Windows XP¿¡¼­ µµÀÔµÈ Å¸ÀϺä´Â Á¦¿ÜÇÕ´Ï´Ù. üũ¹Ú½º¸¦ ŸÀÏ º¸±â ¸ðµå¿¡¼­ Ŭ¸¯Çϸé Ç׸ñ¸¸ ¼±Åõ˴ϴÙ; »óÅ´ ¹Ù²îÁö ¾Ê½À´Ï´Ù.

LVS_EX_FLATSBLV0x100¸®½ºÆ® ºä¿¡¼­ ÆòÆòÇÑ ½ºÅ©·Ñ ¹Ù¸¦ ÄÕ´Ï´Ù.
LVS_EX_FULLROWSELECTLV0x20ÇàÀÌ ¼±ÅÃµÉ ¶§, ±×ÀÇ ¸ðµç Çʵ尡 °­Á¶µË´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº LVS_REPORT ½ºÅ¸ÀÏ°í Á¶ÇÕÇؼ­¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
LVS_EX_GRIDLINESLV0x1+/-Grid. °ÝÀÚ ÁÙÀ» Çà°ú ¿­¿¡ º¸¿©ÁÝ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº LVS_REPORT °ú Á¶ÇÕÇؼ­¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
LVS_EX_HEADERDRAGDROPLV0x10¸®½ºÆ® ºä ÄÜÆ®·Ñ¿¡¼­ ²ø¾î ¶³±¸±â·Î ¿­À» Àç¹èÄ¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº LVS_REPORT ½ºÅ¸ÀÏÀ» »ç¿ëÇÏ´Â ¸®½ºÆ® ºä ÄÜÆ®·Ñ¿¡¼­¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
LVS_EX_INFOTIPLV0x400¸®½ºÆ® ºä ÄÜÆ®·ÑÀÌ LVS_EX_INFOTIP ½ºÅ¸ÀÏÀ» »ç¿ëÇÒ ¶§, Ç׸ñÀÇ ÅøÆÁÀ» º¸¿©ÁÖ±â Àü¿¡ LVN_GETINFOTIP °íÁö ¸Þ½ÃÁö°¡ ºÎ¸ð â¿¡ Àü¼ÛµË´Ï´Ù.
LVS_EX_LABELTIPLV0x4000 + ¸®½ºÆ® ºä ¸ðµå¿¡¼­ ºÎºÐÀûÀ¸·Î ¼ûÀº ¶óº§¿¡ ÅøÆÁ ÅؽºÆ®°¡ ¾ø´Ù¸é, ±× ¶óº§À» ¾ðÆúµåÇÕ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀÌ ¼³Á¤µÇÁö ¾ÊÀ¸¸é, ¸®½ºÆ® ºä ÄÜÆ®·ÑÀº ¿ÀÁ÷ Å« ¾ÆÀÌÄÜ ¸ðµå¿¡ ´ëÇؼ­¸¸ ºÎºÐÀûÀ¸·Î ¼ûÀº ¶óº§À» ¾ðÆúµåÇÕ´Ï´Ù. Windows XP ÀÌ»óÀ» ¿ä±¸ÇÕ´Ï´Ù. ¾Æ´Ï¸é Internet Explorer 5.0 ÀÌ»ó°ú ¹èÆ÷µÇ´Â DLLÀÌ ÇÊ¿äÇÕ´Ï´Ù. ÁÖÀÇ: ¾î¶² À©µµ¿ìÁî ¹öÀü¿¡¼­´Â GUI âÀÌ Ç×»ó À§¿¡ ¿Àµµ·Ï ¼³Á¤µÇ¾î ÀÖÀ» °æ¿ì ÀÌ ½ºÅ¸ÀÏ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.
LVS_EX_MULTIWORKAREASLV0x2000¸®½ºÆ®-ºä ÄÜÆ®·Ñ¿¡ LVS_AUTOARRANGE ½ºÅ¸ÀÏÀÌ ÀÖ´Ù¸é, ±× ÄÜÆ®·ÑÀº Çϳª ÀÌ»óÀÇ ÀÛ¾÷ ±¸¿ªÀÌ Á¤ÀÇµÉ ¶§±îÁö ±×ÀÇ ¾ÆÀÌÄܵéÀ» ÀÚµ¿ Á¤·ÄÇÏÁö ¾Ê½À´Ï´Ù (LVM_SETWORKAREAS ÂüÁ¶). ÀÌ ½ºÅ¸ÀÏÀº ÀÛ¾÷ ±¸¿ªÀÌ Á¤ÀǵDZâ Àü¿¡ ±×¸®°í ÄÜÆ®·Ñ¿¡ Ç׸ñµéÀÌ ¸ðµÎ Ãß°¡µÇ±â Àü¿¡ ¼³Á¤ÇØ¾ß È¿°ú°¡ ÀÖ½À´Ï´Ù.
LVS_EX_ONECLICKACTIVATELV0x40»ç¿ëÀÚ°¡ Ç׸ñÀ» Ŭ¸¯ÇÏ¸é ºÎ¸ð â¿¡ LVN_ITEMACTIVATE °íÁö ¸Þ½ÃÁö¸¦ Àü¼ÛÇÕ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº ¶Ç ¸®½ºÆ® ºä ÄÜÆ®·Ñ¿¡ ÇÖ Æ®·¡Å·À» È°¼ºÈ­ ÇÕ´Ï´Ù. ÇÖ Æ®·¡Å·À̶õ ¸¶¿ì½º³ª Ç׸ñ À§¸¦ Áö³ª°¥ ¶§, °­Á¶¸¦ ÇÏÁö¸¸ ¼±ÅÃÇÏÁö´Â ¾Ê´Â ±â´ÉÀÔ´Ï´Ù.
LVS_EX_REGIONALLV0x200 + ¸®½ºÆ® ºä â ±¸¿ª¿¡ SetWindowRgnÀ» »ç¿ëÇÏ¿© ¿ÀÁ÷ Ç׸ñ ¾ÆÀÌÄÜ°ú ÅؽºÆ®¸¸ Æ÷ÇÔÇϵµ·Ï ÁöÁ¤ÇÕ´Ï´Ù. +Ç׸ñÀÇ ÀϺΰ¡ ¾Æ´Ñ ºÎºÐµéÀº â ±¸¿ª¿¡¼­ ¹èÁ¦µË´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº LVS_ICON ½ºÅ¸ÀÏÀ» »ç¿ëÇÏ´Â ¸®½ºÆ® ºä ÄÜÆ®·Ñ¿¡¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
LVS_EX_SIMPLESELECTLV0x100000¾ÆÀÌÄÜ º¸±â¿¡¼­, ÄÜÆ®·ÑÀÇ »óÅ À̹ÌÁö¸¦ Å« ÀÔü ¾ÆÀÌÄÜÀÇ ¿ì»óÀ¸·Î À̵¿½Ãŵ´Ï´Ù. ´Ù¸¥ º¸±â ¸ðµå¿¡¼­´Â ¾Æ¹« º¯È­°¡ ¾ø½À´Ï´Ù. »ç¿ëÀÚ°¡ ½ºÆäÀ̽º ¹Ù¸¦ ´­·¯ »óŸ¦ ¹Ù²Ü ¶§, ÃÊÁ¡ÀÌ ÀÖ´Â Ç׸ñÀÌ ¾Æ´Ï¶ó ¼±ÅÃµÈ ¸ðµç Ç׸ñÀÌ »óŸ¦ ¹Ù²ß´Ï´Ù. Windows XP ÀÌ»óÀ» ¿ä±¸ÇÕ´Ï´Ù. +
LVS_EX_SUBITEMIMAGESLV0x2À̹ÌÁö¸¦ ù Çʵ带 ³Ñ¾î¼­ º¸¿©ÁÝ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº LVS_REPORT ½ºÅ¸ÀÏ°ú Á¶ÇÕÇؼ­¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
LVS_EX_TRACKSELECTLV0x8¸®½ºÆ® ºä ÄÜÆ®·Ñ¿¡ ÇÖ Æ®·¢ ¼±ÅÃÀ» È°¼ºÈ­ ÇÕ´Ï´Ù. ÇÖ Æ®·¢ ¼±ÅÃÀº Ç× Ç׸ñÀÌ ¸¶¿ì½º°¡ Ç׸ñ À§¿¡ ÀÏÁ¤ ½Ã°£ ÀÌ»ó ¸Ó¹«¸£¸é ÀÚµ¿À¸·Î ¼±ÅõǴ °ÍÀÔ´Ï´Ù. LVM_SETHOVERTIME ¸Þ½ÃÁö·Î ¸Ó¹³ ½Ã°£Àº ±âº» ½Ã½ºÅÛ ¼³Á¤À¸·ÎºÎÅÍ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº ¸®½ºÆ® ºä ÄÜÆ®·ÑÀÇ ¸ðµç ½ºÅ¸ÀÏ¿¡ Àû¿ëµË´Ï´Ù. ÇÖ Æ®·¢ ¼±ÅÃÀÌ ÄÑÁ® ÀÖ´ÂÁö È®ÀÎÇÏ·Á¸é SystemParametersInfo¸¦ È£ÃâÇØ º¸¸é ¾Ë ¼ö ÀÖ½À´Ï´Ù.
LVS_EX_TWOCLICKACTIVATELV0x80»ç¿ëÀÚ°¡ Ç׸ñÀ» ´õºí Ŭ¸¯ÇÒ ¶§ ¸®½ºÆ®-ºä ÄÜÆ®·ÑÀº LVN_ITEMACTIVATE °íÁö ¸Þ½ÃÁö¸¦ ºÎ¸ð â¿¡ Àü¼ÛÇÕ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº ¶Ç ¸®½ºÆ® ºä ÄÜÆ®·Ñ¿¡ ÇÖ Æ®·¡Å·À» È°¼ºÈ­ ÇÕ´Ï´Ù. ÇÖ Æ®·¡Å·À̶õ ¸¶¿ì½º°¡ Ç׸ñ À§¸¦ Áö³ª¸é, °­Á¶ÇÏ´Â °ÍÀÔ´Ï´Ù. ´Ü, ¼±ÅÃÇÏÁö´Â ¾Ê½À´Ï´Ù.
LVS_EX_UNDERLINECOLDLV0x1000È°¼ºÈ­°¡ °¡´ÉÇÑ ºñ-ÇÖ Ç׸ñµéÀ» ¹ØÁÙ ±×Àº ÅؽºÆ®¿Í ÇÔ²² º¸¿©ÁÝ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº LVS_EX_TWOCLICKACTIVATEµµ ¼³Á¤µÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù.
LVS_EX_UNDERLINEHOTLV0x800È°¼ºÈ­°¡ °¡´ÉÇÑ ÇÖ Ç׸ñµéÀº ¹ØÁÙ ±×Àº ÅؽºÆ®¿Í ÇÔ²² º¸¿©ÁÝ´Ï´Ù. +ÀÌ ½ºÅ¸ÀÏÀº LVS_EX_ONECLICKACTIVATE ¶Ç´Â LVS_EX_TWOCLICKACTIVATEµµ ¼³Á¤µÇ¾î Àֱ⸦ ¿ä±¸ÇÕ´Ï´Ù.
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TreeView ½ºÅ¸ÀÏ°ª¼³¸í
default WS_TABSTOP, TVS_SHOWSELALWAYS, TVS_HASLINES, TVS_LINESATROOT, TVS_HASBUTTONS, WS_EX_CLIENTEDGE (E0x200)
forced None
TVS_CHECKBOXES0x100+/-Checked. °¢ Ç׸ñ ¿·¿¡ üũ¹Ú½º¸¦ º¸¿©ÁÝ´Ï´Ù.
TVS_DISABLEDRAGDROP0x10Æ®¸® ºä ÄÜÆ®·ÑÀÌ TVN_BEGINDRAG °íÁö ¸Þ½ÃÁö¸¦ Àü¼ÛÇÏÁö ¸øÇϵµ·Ï ¸·½À´Ï´Ù.
TVS_EDITLABELS0x8+/-ReadOnly. »ç¿ëÀÚ°¡ Æ®¸® ºä Ç׸ñÀÇ À̸§À» ÆíÁýÇϵµ·Ï Çã¿ëÇÕ´Ï´Ù.
TVS_FULLROWSELECT0x1000Æ®¸® ºä¿¡¼­ Àüü ÇàÀ» ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼±ÅÃµÈ Ç׸ñÀÇ Àüü ÇàÀÌ °­Á¶µÇ°í, ÇÑ Ç׸ñÀÇ ¾Æ¹«µ¥³ª Ŭ¸¯Çϸé Àüü ÇàÀÌ ¼±Åõ˴ϴÙ. ÀÌ ½ºÅ¸ÀÏÀº TVS_HASLINES ½ºÅ¸ÀÏ°ú Á¶ÇÕÇÏ¿© ÇÔ²² »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
TVS_HASBUTTONS0x1+/-Buttons. Ç÷¯½º (+) ±×¸®°í ¸¶À̳ʽº (-) ¹öÆ°À» ºÎ¸ð Ç׸ñ ¿·¿¡ º¸¿©ÁÝ´Ï´Ù. »ç¿ëÀÚ´Â ±× ¹öÆ°À» Ŭ¸¯ÇÏ¿© ºÎ¸ð Ç׸ñÀÇ ÀÚ¼Õ Ç׸ñ ¸®½ºÆ®¸¦ ÆîÄ¡°Å³ª Á¢À» ¼ö ÀÖ½À´Ï´Ù. Ç׸ñ ¹öÆ°À» Æ®¸® ºäÀÇ ·çÆ®¿¡ Æ÷ÇÔ½ÃÅ°·Á¸é, TVS_LINESATROOTµµ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù.
TVS_HASLINES0x2+/-Lines. Ç׸ñÀÇ °èÅëÀ» ÁÙÀ» »ç¿ëÇÏ¿© º¸¿©ÁÝ´Ï´Ù.
TVS_INFOTIP0x800TVN_GETINFOTIP °íÁö¸¦ Àü¼ÛÇØ ÅøÆÁ Á¤º¸¸¦ ¾ò½À´Ï´Ù.
TVS_LINESATROOT0x4+/-Lines. Æ®¸® ºä ÄÜÆ®·ÑÀÇ ·çÆ®¿¡ Ç׸ñµéÀ» ÁÙÀ» »ç¿ëÇØ ¿¬°áÇÕ´Ï´Ù. ÀÌ °ªÀº TVS_HASLINESµµ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é ¹«½ÃµË´Ï´Ù.
TVS_NOHSCROLL0x8000+/-HScroll. ¼öÆò ½ºÅ©·ÑÀ» ±ÝÁöÇÕ´Ï´Ù. ¼öÆò ½ºÅ©·Ñ¹Ù¸¦ º¸¿©ÁÖÁö ¾Ê½À´Ï´Ù.
TVS_NONEVENHEIGHT0x4000TVM_SETITEMHEIGHT ¸Þ½ÃÁö·Î Ç׸ñÀÇ ³ôÀ̸¦ Ȧ¼ö ³ôÀÌ·Î ¼³Á¤ÇÕ´Ï´Ù. ±âº»ÀûÀ¸·Î Ç׸ñÀÇ ³ôÀ̴ ¦¼ö °ªÀ̾î¾ß ÇÕ´Ï´Ù.
TVS_NOSCROLL0x2000¼öÆò ¼öÁ÷ ½ºÅ©·ÑÀ» ¸ðµÎ ±ÝÁöÇÕ´Ï´Ù. ½ºÅ©·Ñ¹Ù°¡ ÀüÇô ¾ø½À´Ï´Ù.
TVS_NOTOOLTIPS0x80ÅøÆÁÀ» ±ÝÁöÇÕ´Ï´Ù.
TVS_RTLREADING0x40ÅؽºÆ®¸¦ ¿À¸¥ÂÊ¿¡¼­ ¿ÞÂÊÀ¸·Î º¸¿©ÁÝ´Ï´Ù(right-to-left (RTL)). º¸Åë, âÀº ÅؽºÆ®¸¦ ¿ÞÂÊ¿¡¼­ ¿À¸¥ÂÊÀ¸·Î º¸¿©ÁÝ´Ï´Ù(left-to-right (LTR)).
TVS_SHOWSELALWAYS0x20Æ®¸® ºä ÄÜÆ®·ÑÀÌ ÃÊÁ¡À» ÀҾ ¼±ÅÃµÈ Ç׸ñÀ» ¼±ÅÃµÈ Ã¤·Î ÀÖ°Ô ÇÕ´Ï´Ù.
TVS_SINGLEEXPAND0x400¼±ÅÃÇÒ ¶§ ¼±ÅÃµÈ Ç׸ñÀº È®´ëÇÏ°í ¼±ÅõÇÁö ¾ÊÀº Ç׸ñµéÀ» Ãà¼ÒÇÕ´Ï´Ù. »ç¿ëÀÚ°¡ CTRL Å°¸¦ ´©¸¥ ä·Î Ç׸ñÀ» ¼±ÅÃÇϸé, ¼±ÅõÇÁö ¾ÊÀº Ç׸ñÀÌ Ãà¼ÒµÇÁö ¾Ê½À´Ï´Ù.
TVS_TRACKSELECT0x200¸¶¿ì½º ÇÖ Æ®·¡Å·À» È°¼ºÈ­ÇÕ´Ï´Ù.
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DateTime ½ºÅ¸ÀÏ°ª¼³¸í
±âº»°ª DTS_SHORTDATECENTURYFORMAT ±×¸®°í WS_TABSTOP (+/-Tabstop)
°­Á¦ ¾øÀ½
DTS_UPDOWN0x1³¯Â¥-½Ã°£ °ªÀ» º¯°æÇÒ ¾÷-´Ù¿î ÄÜÆ®·ÑÀ» ÄÜÆ®·ÑÀÇ ¿À¸¥ÂÊ¿¡ ¹èÄ¡ÇÕ´Ï´Ù. µå·Ó-´Ù¿î ´Þ·ÂÀ» ±³Ã¼ÇÕ´Ï´Ù.
DTS_SHOWNONE0x2üũ¹Ú½º¸¦ ÄÜÆ®·Ñ ¾È¿¡ º¸¿©ÁÝ´Ï´Ù. »ç¿ëÀڴ üũ¸¦ ÇØÁ¦ÇØ ÄÜÆ®·Ñ¿¡ ³¯Â¥/½Ã°£À» ¼±ÅÃÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ÄÜÆ®·Ñ¿¡ ³¯Â¥/½Ã°£ÀÌ ¾øÀ¸¸é, Gui Submit ±×¸®°í GuiControlGetÀº ºó °ªÀ» ¿­¶÷ÇÕ´Ï´Ù (ºó ¹®ÀÚ¿­).
DTS_SHORTDATEFORMAT0x0³¯Â¥¸¦ ªÀº Çü½ÄÀ¸·Î º¸¿©ÁÝ´Ï´Ù. ¾î¶² ·ÎÄÉÀÏ¿¡¼­´Â 6/1/05 ¶Ç´Â 6/1/2005¿Í °°ÀÌ º¸ÀÔ´Ï´Ù. ¿¹ÀüÀÇ ¿î¿µ üÁ¦¿¡¼­´Â µÎ ÀÚ¸® Çظ¦ º¸¿©ÁÙ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº DTS_SHORTDATECENTURYFORMATÀÌ ±âº»°ªÀÌ°í DTS_SHORTDATEFORMATÀÌ ¾Æ´Ï±â ¶§¹®ÀÔ´Ï´Ù.
DTS_LONGDATEFORMAT0x4Çü½Ä ¿É¼Ç "LongDate". ³¯Â¥¸¦ ±ä Çü½ÄÀ¸·Î º¸¿©ÁÝ´Ï´Ù. ¾î¶² ·ÎÄÉÀÏ¿¡¼­´Â Wednesday, June 01, 2005ó·³ º¸ÀÔ´Ï´Ù.
DTS_SHORTDATECENTURYFORMAT0xCÇü½Ä ¿É¼Ç ºñ¾îÀְųª/»ý·«µÊ. ³¯Â¥¸¦ ªÀº Çü½ÄÀÇ ³× ÀÚ¸® ÇØ·Î º¸¿© ÁÝ´Ï´Ù. ¾î¶² ·ÎÄÉÀÏ¿¡¼­´Â 6/1/2005ó·³ º¸ÀÔ´Ï´Ù. + Comctl32.dllÀÇ ½Ã½ºÅÛ ¹öÀüÀÌ 5.8 ¹Ì¸¸À̸é, ÀÌ ½ºÅ¸ÀÏÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ±×¸®°í ÀÚµ¿À¸·Î DTS_SHORTDATEFORMATÀÌ ´ë½ÅÇÕ´Ï´Ù.
DTS_TIMEFORMAT0x9Çü½Ä ¿É¼Ç "Time". ½Ã°£¸¸ º¸¿©ÁÝ´Ï´Ù. ¾î¶² ·ÎÄÉÀÏ¿¡¼­´Â 5:31:42 PMó·³ º¸ÀÔ´Ï´Ù.
DTS_APPCANPARSE0x10¾ÆÁ÷ Áö¿ø ¾ÈµÊ. »ç¿ëÀÚ¿¡°Ô »ç¿ëÀÚ ÀÔ·ÂÀ» Çؼ®Çؼ­ ÇÊ¿äÇÑ Á¶Ä¡¸¦ ÃëÇϵµ·Ï Çã¿ëÇÕ´Ï´Ù. »ç¿ëÀÚ´Â F2 Å°¸¦ ´­·¯ ÄÜÆ®·ÑÀÇ Å¬¶óÀ̾ðÆ® ±¸¿ª ¾È¿¡¼­ ÆíÁýÇÒ ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ°¡ ÀÏÀ» ¸¶Ä¡¸é ÄÜÆ®·ÑÀº DTN_USERSTRING °íÁö ¸Þ½ÃÁö¸¦ Àü¼ÛÇÕ´Ï´Ù.
DTS_RIGHTALIGN0x20+/-Right. ´Þ·ÂÀº ÄÜÆ®·ÑÀÇ ¿ÞÂÊÀÌ ¾Æ´Ï¶ó ¿À¸¥ÂÊ¿¡ µå·Ó ´Ù¿îµË´Ï´Ù.
(µå·Ó ´Ù¿î ´Þ·Â ¾ÈÀÇ Ä÷¯) µå·Ó-´Ù¿î ´Þ·Â ¾ÈÀÇ ³¯Â¥ÀÇ Ä÷¯´Â Gui Font ¸í·É¾î ¶Ç´Â c (Color) ¿É¼ÇÀ¸·Î ¼³Á¤µÈ »öÀ» ÁؼöÇÕ´Ï´Ù. ´Þ·ÂÀÇ ´Ù¸¥ ºÎºÐÀÇ Ä÷¯¸¦ ¹Ù²Ù·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:
+ +
Gui +LastFound
+SendMessage, 0x1006, 4, 0xFFAA99, SysDateTimePick321 ; 0x1006Àº DTM_SETMCCOLORÀÔ´Ï´Ù. 4´Â MCSC_MONTHBKÀÔ´Ï´Ù (¹è°æ»ö). Ä÷¯´Â BGR vs. RGB Çü½ÄÀ¸·Î ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù (Àûû ±³Ã¼¿¡ ÁÖÀÇ).
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MonthCal ½ºÅ¸ÀÏ°ª¼³¸í
default WS_TABSTOP ([v1.1.22+]Àü¿ë, Windows ÀÌÈÄ Àü¿ë)
forced None
MCS_DAYSTATE0x1ÄÜÆ®·ÑÀÌ MCN_GETDAYSTATE °íÁö¸¦ Àü¼ÛÇϵµ·Ï ¸¸µì´Ï´Ù. ¾î´À ³¯Â¥¸¦ º¼µåü·Î º¸¿©ÁÖ¾î¾ß ÇÏ´ÂÁö¿¡ °üÇÑ Á¤º¸¸¦ ¿ä±¸ÇÕ´Ï´Ù. [¾ÆÁ÷ Áö¿øÇÏÁö ¾ÊÀ½]
MCS_MULTISELECT0x2À̸§ÀÖ´Â ¿É¼Ç "Multi". + + + »ç¿ëÀÚ´Â ³¯Â¥ Çϳª·Î Á¦ÇѵÇÁö ¾Ê°í ÇÑ ¹üÀ§ÀÇ ³¯Â¥¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ±âº»°ªÀ¸·Î, ÃÖ´ë ¹üÀ§´Â 366 ÀÏÀÔ´Ï´Ù. ¹üÀ§´Â MCM_SETMAXSELCOUNT ¸Þ½ÃÁö¸¦ º¸³» ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:
+
Gui +LastFound
+SendMessage, 0x1004, 7, 0, SysMonthCal321 ; 7 days. 0x1004 is MCM_SETMAXSELCOUNT.
MCS_WEEKNUMBERS0x4ÁÖ ¹øÈ£(1-52)À» °¢°¢ÀÇ ³¯Â¥ ÁÙ ¿ÞÂÊ¿¡ º¸¿©ÁÝ´Ï´Ù. Week 1Àº Àû¾îµµ ³× °³ÀÇ ³¯ÀÌ ÀÖ´Â ÁÖ¸¦ ù ÁÖ·Î Á¤ÀÇÇÕ´Ï´Ù.
MCS_NOTODAYCIRCLE0x8ÄÜÆ®·Ñ ¾È¿¡¼­ ¿À´Ã ³¯Â¥ÀÇ ¼øȯÀ» ¸·½À´Ï´Ù.
MCS_NOTODAY0x10¿À´Ã ³¯Â¥°¡ ÄÜÆ®·Ñ ÇÏ´Ü¿¡ ³ªÅ¸³ªÁö ¾Êµµ·Ï ¸·½À´Ï´Ù.
(colors) ´Þ·Â ¾È¿¡¼­ ³¯Â¥ ¹øÈ£ÀÇ »öÀº Gui Font ¸í·É¾î³ª c (Color) ¿É¼ÇÀÇ ¼³Á¤À» ÁؼöÇÕ´Ï´Ù. ´Þ·ÂÀÇ ´Ù¸¥ ºÎºÐÀÇ »öÀ» º¯°æÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À:
+
Gui +LastFound
+SendMessage, 0x100A, 5, 0xFFAA99, SysMonthCal321 ; 0x100A´Â MCM_SETCOLORÀÔ´Ï´Ù. 5´Â MCSC_TITLETEXTÀÔ´Ï´Ù (Á¦¸ñ ÅؽºÆ® »ö). Ä÷¯´Â BGR vs. RGB Çü½ÄÀ¸·Î ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù (Àûû ±³Ã¼¿¡ ÁÖÀÇ).
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Slider ½ºÅ¸ÀÏ°ª¼³¸í
default WS_TABSTOP (+/-Tabstop)
forced None
TBS_VERT0x2+/-Vertical. ÄÜÆ®·ÑÀÌ ¼öÁ÷ ¹æÇâÀÔ´Ï´Ù.
TBS_LEFT0x4+/-Left. ÄÜÆ®·ÑÀº »ó´Ü¿¡ ƽ Ç¥½ÄÀ» º¸¿©ÁÝ´Ï´Ù (¶Ç´Â TBS_VERTÀÌ Á¸ÀçÇÑ´Ù¸é ¿ÞÂÊ¿¡). TBS_TOP¿Í µ¿ÀÏÇÕ´Ï´Ù.
TBS_TOP0x4same as TBS_LEFT.
TBS_BOTH0x8+/-Center. ƽ Ç¥½ÄÀ» ÄÜÆ®·Ñ Á¿쿡 º¸¿©ÁÝ´Ï´Ù. TBS_HORZ°¡ »ç¿ëµÇ¸é »óÇÏ¿¡ TBS_VERT°¡ »ç¿ëµÇ¸é Á¿쿡 º¸¿©ÁÝ´Ï´Ù.
TBS_AUTOTICKS0x1°ªÀÇ ¹üÀ§ ¾È¿¡ °¢ Áõ°¡ À§Ä¡¸¶´Ù ƽ Ç¥½ÄÀÌ ÀÖ½À´Ï´Ù. +/-TickInterval¸¦ »ç¿ëÇÏ¸é ´õ À¯¿¬ÇÕ´Ï´Ù.
TBS_ENABLESELRANGE0x20

¼±Åà ¹üÀ§¸¸ º¸¿©ÁÝ´Ï´Ù. ¼±Åà ¹üÀ§ÀÇ ½ÃÀÛ°ú ³¡¿¡ À§Ä¡ÇÑ Æ½ Ç¥½ÄÀº (¼öÁ÷ ´ë½¬ ´ë½Å¿¡) »ï°¢ÇüÀ¸·Î º¸¿©ÁÝ´Ï´Ù. ±×¸®°í ¼±Åà ¹üÀ§°¡ °­Á¶µË´Ï´Ù (°­Á¶¸¦ ÇÏ·Á¸é Gui -theme¸¦ ÅëÇÏ¿© Å׸¶¸¦ Á¦°ÅÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¼öµµ ÀÖ½À´Ï´Ù).

+

¼±Åà ¹üÀ§¸¦ ¼³Á¤ÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¸¦ µû¸£½Ê½Ã¿À. ½ÃÀÛ À§Ä¡¸¦ 55¿¡ ±×¸®°í ³¡ À§Ä¡¸¦ 66¿¡ ¼³Á¤ÇÕ´Ï´Ù:

+
SendMessage, 1035, 1, 55, msctls_trackbar321, WinTitle
+SendMessage, 1036, 1, 66, msctls_trackbar321, WinTitle
TBS_FIXEDLENGTH0x40+/-Thick. ¾öÁö ¼ÕÀâÀÌ Å©±â¸¦ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.
TBS_NOTHUMB0x80À̵¿ °¡´ÉÇÑ ¹Ù¸¦ º¸¿© ÁÖÁö ¾Ê½À´Ï´Ù.
TBS_NOTICKS0x10+/-NoTicks. ƽ Ç¥½ÄÀ» º¸¿© ÁÖÁö ¾Ê½À´Ï´Ù.
TBS_TOOLTIPS0x100+/-Tooltip. ÅøÆÁÀ» Áö¿øÇÕ´Ï´Ù. ÄÜÆ®·ÑÀÌ ÀÌ ½ºÅ¸ÀÏÀ» »ç¿ëÇÏ¿© »ý¼ºµÉ ¶§, ÀÚµ¿À¸·Î ±âº» ÅøÆÁ ÄÜÆ®·ÑÀ» »ý¼ºÇØ ½½¶óÀÌ´õÀÇ ÇöÀç À§Ä¡¸¦ º¸¿©ÁÝ´Ï´Ù. ÅøÆÁÀ» º¸¿©ÁÙ °÷Àº TBM_SETTIPSIDE ¸Þ½ÃÁö¸¦ »ç¿ëÇÏ¿© ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.
TBS_REVERSED0x200¾ÈŸ±õ°Ôµµ, ÀÌ ½ºÅ¸ÀÏÀº ÄÜÆ®·ÑÀÇ ½ÇÁ¦ ÇàÀ§¿¡ ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù. ±×·¡¼­ »ç¿ëÇÏ´Â Àǹ̰¡ ¾øÀ» °ÍÀÔ´Ï´Ù (´ë½Å¿¡, ÄÜÆ®·Ñ ¿É¼Ç¿¡ +Invert¸¦ »ç¿ëÇÏ¸é µÚÁýÀ» ¼ö ÀÖ½À´Ï´Ù). OS ¹öÀü¿¡ µû¶ó, ÀÌ ½ºÅ¸ÀÏÀº ÀÎÅÍ³Ý ÀͽºÇ÷μ­ 5.0 ÀÌ»óÀ» ¿ä±¸ÇÕ´Ï´Ù.
TBS_DOWNISLEFT0x400¾ÈŸ±õ°Ôµµ, ÀÌ ½ºÅ¸ÀÏÀº ÄÜÆ®·ÑÀÇ ½ÇÁ¦ ÇàÀ§¿¡ ¾Æ¹« ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù. ±×·¡¼­ ¾Æ¸¶µµ »ç¿ëÇÏ´Â Àǹ̰¡ ¾øÀ» °ÍÀÔ´Ï´Ù. OS ¹öÀü¿¡ µû¶ó, ÀÌ ½ºÅ¸ÀÏÀº Internet Explorer 5.01 ÀÌ»óÀ» ¿ä±¸ÇÕ´Ï´Ù.
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Progress ½ºÅ¸ÀÏ°ª¼³¸í
default PBS_SMOOTH
forced None
PBS_SMOOTH0x1+/-Smooth. ÇÁ·Î±×·¹½º ¹Ù´Â ÁøÇà »óŸ¦ ±âº» ±¸È¹ ¹Ù ´ë½Å¿¡ ºÎµå·¯¿î ½ºÅ©·Ñ ¹Ù¿¡ º¸¿©ÁÝ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀÌ Á¸ÀçÇÒ ¶§, Windows XP ÀÌÈÄ¿¡¼­ ½ºÅ©·ÑÀº ÀÚµ¿À¸·Î °íÀü Å׸¶ ¸ð½À¿¡ ÀÇÁ¸ÇÕ´Ï´Ù.
PBS_VERTICAL0x4+/-Vertical. ¾Æ·¡¿¡¼­ À§·Î ¼öÁ÷À¸·Î ÁøÇà »óŸ¦ º¸¿©ÁÝ´Ï´Ù.
PBS_MARQUEE0x8

[Windows XP ÀÌÈÄ Àü¿ë] ÇÁ·Î±×·¹½º ¹Ù´Â ¸¶¸£Å°Ã³·³ À̵¿ÇÕ´Ï´Ù; Áï, À§Ä¡°¡ º¯ÇÒ ¶§¸¶´Ù ¹Ù°¡ À̵¿ÇÏ´Ù°¡ ³¡¿¡ µµ´ÞÇÏ¸é ´Ù½Ã ¹Ý´ë ÂÊÀ¸·Î À̵¿ÇÕ´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀÇ ¹Ù´Â À§Ä¡°¡ Á¤ÀǵǾî ÀÖÁö ¾Ê½À´Ï´Ù. ±× À§Ä¡¸¦ º¯°æÇÏ·Á°í ½ÃµµÇÏ¸é ´ë½Å¿¡ ¹Ù°¡ ÇÑ ´«±Ý¾¿ ½½¶óÀ̵åµË´Ï´Ù.

+

ÀÌ ½ºÅ¸ÀÏÀº ÀüÇüÀûÀ¸·Î ¿Ï·á ½Ã°£À» ¾Ë ¼ö ¾ø´Â ÀÛ¾÷ÀÇ ÁøÇà »óȲÀ» ³ªÅ¸³»´Â µ¥ »ç¿ëµË´Ï´Ù.

+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Tab ½ºÅ¸ÀÏ°ª¼³¸í
default WS_TABSTOP ±×¸®°í TCS_MULTILINE
forced WS_CLIPSIBLINGS
+ TCS_OWNERDRAWFIXED: ÄÜÆ®·ÑÀÇ ¹è°æ»ö ±×¸®°í ÅؽºÆ® Ä÷¯°¡ ¿ä±¸ÇÏ´Â ´ë·Î °­Á¦·Î ÄѰųª ²ü´Ï´Ù.
TCS_SCROLLOPPOSITE0x1ºÒÇÊ¿äÇÑ ÅǵéÀº ÅÇÀÌ ¼±ÅÃµÉ ¶§ ÄÜÆ®·ÑÀÇ ¹Ý´ëÂÊÀ¸·Î ½ºÅ©·ÑµË´Ï´Ù.
TCS_BOTTOM0x2+/-Bottom. ÅÇÀÌ ÄÜÆ®·Ñ »ó´ÜÀÌ ¾Æ´Ï¶ó ÇÏ´Ü¿¡ ³ªÅ¸³³´Ï´Ù.
TCS_RIGHT0x2ÅÇÀÌ ¿À¸¥ÂÊ¿¡ ¼öÁ÷À¸·Î ³ªÅ¸³³´Ï´Ù. TCS_VERTICAL ½ºÅ¸ÀÏÀ» »ç¿ëÇÕ´Ï´Ù.
TCS_MULTISELECT0x4¿©·¯ ÅÇÀ» ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. CTRL Å°¸¦ ´©¸£°í Ŭ¸¯ÇÏ¸é µË´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº + TCS_BUTTONS ½ºÅ¸ÀÏ°ú ÇÔ²² »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
TCS_FLATBUTTONS0x8 + ¼±ÅÃµÈ ÅÇÀÌ ¹è°æ µÚ·Î ´­·Á ³ªÅ¸³³´Ï´Ù. ¹Ý¸é¿¡ ´Ù¸¥ ÅǵéÀº ±×´ë·Î °°Àº Æò¸é¿¡ °°Àº »öÀ¸·Î ³ªÅ¸³³´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº TCS_BUTTONS ½ºÅ¸ÀÏ°ú ÇÔ²² »ç¿ëÇؾ߸¸ ÅÇ ÄÜÆ®·Ñ¿¡ È¿°ú°¡ ÀÖ½À´Ï´Ù.
TCS_FORCEICONLEFT0x10¾ÆÀÌÄÜÀº °íÁ¤-³ÊºñÀÇ ÅǸ¶´Ù ¿ÞÂÊÀ¸·Î Á¤·ÄµË´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀºTCS_FIXEDWIDTH ½ºÅ¸ÀÏ¿¡¸¸ Á¶ÇÕÇØ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
TCS_FORCELABELLEFT0x20¶óº§Àº °íÁ¤-³ÊºñÀÇ ÅǸ¶´Ù ¿ÞÂÊ¿¡ Á¤·ÄµË´Ï´Ù; Áï, ¶óº§Àº ¾ÆÀÌÄÜ ¹Ù·Î ¿À¸¥ÂÊ¿¡ º¸¿©Áý´Ï´Ù. °¡¿îµ¥°¡ ¾Æ´Õ´Ï´Ù. +

ÀÌ ½ºÅ¸ÀÏÀº TCS_FIXEDWIDTH ½ºÅ¸ÀÏ¿¡¸¸ Á¶ÇÕÇØ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í TCS_FIXEDWIDTH ½ºÅ¸ÀÏÀº TCS_FORCEICONLEFT ½ºÅ¸ÀÏÀ» ¾Ï½ÃÇÕ´Ï´Ù.

TCS_HOTTRACK0x40Æ÷ÀÎÅÍ ¾Æ·¡ÀÇ Ç׸ñµéÀº ÀÚµ¿À¸·Î °­Á¶µË´Ï´Ù
TCS_VERTICAL0x80

+/-Left ¶Ç´Â +/-Right. ÅÇÀÌ ÄÜÆ®·ÑÀÇ ¿ÞÂÊ¿¡ ³ªÅ¸³³´Ï´Ù. ÅؽºÆ®´Â ¼öÁ÷À¸·Î º¸¿©Áý´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº ¿ÀÁ÷ TCS_MULTILINE ½ºÅ¸ÀÏ°ú »ç¿ëÇÒ ¶§¸¸ È¿°ú°¡ ÀÖ½À´Ï´Ù. ÅÇÀ» ÄÜÆ®·ÑÀÇ ¿À¸¥ÂÊ¿¡ º¸¿©ÁÖ·Á¸é, TCS_RIGHT ½ºÅ¸ÀÏÀ» »ç¿ëÇÕ´Ï´Ù.

+

ÀÌ ½ºÅ¸ÀÏÀº ¸ÂÃã ¹è°æ »öÀ̳ª ÅؽºÆ® »öÀÌ ¿µÇâÀ» ¹ÌÄ¡¸é ¿Ã¹Ù¸£°Ô ÅÇÀ» º¸¿©ÁÖÁö ¸øÇÕ´Ï´Ù. À̸¦ ¿ìȸÇÏ·Á¸é, ÅÇ ÄÜÆ®·Ñ ¿É¼Ç¿¡ -Background ±×¸®°í/¶Ç´Â cDefault¸¦ ÁöÁ¤ÇϽʽÿÀ.

+
TCS_BUTTONS0x100+/-Buttons. ÅÇÀÌ ¹öÆ°À¸·Î ³ªÅ¸³³´Ï´Ù. Å׵θ®°¡ ±×·ÁÁöÁö ¾Ê½À´Ï´Ù.
TCS_SINGLELINE0+/-Wrap. ¿ÀÁ÷ ÇÑ ÁÙÀÇ ÅǸ¸ º¸¿©Áý´Ï´Ù. »ç¿ëÀÚ´Â °¨¾Æ¼­ ÅÇÀ» ´õ º¼ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀÌ ±âº»°ªÀÔ´Ï´Ù.
TCS_MULTILINE0x200+/-Wrap. ¿©·¯ ÁÙ ÅÇÀ» º¸¿©ÁÝ´Ï´Ù. ±×·¡¼­ ¸ðµç ÅÇÀ» ÇÑ ¹ø¿¡ º¼ ¼ö ÀÖ½À´Ï´Ù.
TCS_RIGHTJUSTIFY0±âº»°ªÀÔ´Ï´Ù. °¢ ÅÇÀÇ ³Êºñ´Â ÇÊ¿äÇϸé Áõ°¡µË´Ï´Ù. ±×·¡¼­ °¢ ÁÙÀÇ ÅÇÀº ÅÇ ÄÜÆ®·ÑÀÇ Àüü ³Êºñ¸¦ ä¿ó´Ï´Ù. +

ÀÌ Ã¢ ½ºÅ¸ÀÏÀº TCS_MULTILINE ½ºÅ¸Àϵµ ÁöÁ¤ÇØ¾ß È¿°ú°¡ ÀÖ½À´Ï´Ù.

TCS_FIXEDWIDTH0x400¸ðµç ÅÇÀÌ ³Êºñ°¡ °°½À´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº TCS_RIGHTJUSTIFY ½ºÅ¸ÀÏ°ú Á¶ÇÕÇØ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
TCS_RAGGEDRIGHT0x800ÅÇ ÁÙÀº ÄÜÆ®·ÑÀÇ Àüü ³Êºñ¸¦ ä¿ì±â À§ÇØ ´Ã¾î³ªÁö ¾Ê½À´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀÌ ±âº»°ªÀÔ´Ï´Ù.
TCS_FOCUSONBUTTONDOWN0x1000ÅÇ ÄÜÆ®·ÑÀº Ŭ¸¯µÉ ¶§ ÀÔ·Â ÃÊÁ¡À» ¹Þ½À´Ï´Ù.
TCS_OWNERDRAWFIXED0x2000ºÎ¸ð âÀÌ Ã¥ÀÓÁö°í ÅÇÀ» ±×¸³´Ï´Ù.
TCS_TOOLTIPS0x4000ÅÇ ÄÜÆ®·Ñ¿¡ ÅøÆÁ ÄÜÆ®·ÑÀ» ¿¬°üÁþ½À´Ï´Ù.
TCS_FOCUSNEVER0x8000ÅÇ ÄÜÆ®·ÑÀº Ŭ¸¯µÉ ¶§ ÀÔ·Â ÃÊÁ¡À» ¹ÞÁö ¾Ê½À´Ï´Ù.
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
StatusBar ½ºÅ¸ÀÏ°ª¼³¸í
±âº»°ª SBARS_TOOLTIPS ±×¸®°í SBARS_SIZEGRIP (âÀÇ Å©±â º¯°æÀÌ °¡´ÉÇÒ °æ¿ì¿¡¸¸).
forced None
SBARS_TOOLTIPS0x800

¸¶¿ì½º°¡ »óŹÙÀÇ ÀϺο¡ ¿Ã¶ó¿À¸é ÅøÆÁÀ» º¸¿©ÁÝ´Ï´Ù: +

    +
  1. ³Ê¹« º¸¿©ÁÙ ÅؽºÆ®°¡ ¸¹À» ¶§; +
  2. ¶Ç´Â ¾ÆÀÌÄÜÀº ÀÖÀ¸³ª ÅؽºÆ®°¡ ¾øÀ» ¶§ +
+

+

ÅøÆÁÀÇ ÅؽºÆ®´Â ´ÙÀ½À» ÅëÇÏ¿© ¼³Á¤ÇÕ´Ï´Ù:

+
Gui +LastFound
+SendMessage, 0x410, 0, "Text to display", msctls_statusbar321
+

À§¿¡¼­ º¼µåü 0Àº 0-±â¹ÝÀÇ ±¸¿ª ¹øÈ£ÀÔ´Ï´Ù. ù ¹ø° ¸»°í ´Ù¸¥ ±¸¿ªÀ» »ç¿ëÇÏ·Á¸é, µÎ ¹ø° ±¸¿ªÀº 1, ¼¼ ¹ø° ±¸¿ªÀº 2 µîµîÀ» ÁöÁ¤ÇÕ´Ï´Ù. ÁÖÀÇ: ¾î¶² ¿î¿µÃ¼Á¦¿¡¼­´Â ÅøÆÁÀÌ ÀüÇô ³ªÅ¸³ªÁö ¾ÊÀ» ¼öµµ ÀÖ½À´Ï´Ù.

SBARS_SIZEGRIP0x100»óÅ ¹ÙÀÇ ¿À¸¥ÂÊ ³¡¿¡ Å©±âº¯°æ ¼ÕÀâÀ̸¦ Æ÷ÇÔÇÕ´Ï´Ù. Å©±âº¯°æ ¼ÕÀâÀÌ´Â Å©±âÁ¶Àý Å׵θ®¿Í ºñ½ÁÇÕ´Ï´Ù; »ç°¢ ±¸¿ª¿¡ »ç¿ëÀÚ°¡ Ŭ¸¯ÇÏ¸é ºÎ¸ð âÀ» ²ø ¼ö ÀÖ½À´Ï´Ù.
+

 

+ + + diff --git a/src/docs/misc/Threads.htm b/src/docs/misc/Threads.htm new file mode 100644 index 0000000..7d59e1e --- /dev/null +++ b/src/docs/misc/Threads.htm @@ -0,0 +1,38 @@ + + +Threads + + + + + + + +

¾²·¹µå

+ +

+ÇöÀç ¾²·¹µå´Â ÃÖ±ÙÀÇ À̺¥Æ®°¡ ¿äûÇÑ ½ÇÇà È帧À¸·Î Á¤Àǵ˴ϴÙ; ¿¹·Î´Â ÇÖÅ°, SetTimer ¼­ºê·çƾ, ¸ÂÃã ¸Þ´º Ç׸ñ, ±×¸®°í GUI À̺¥Æ®°¡ Æ÷ÇԵ˴ϴÙ. ÇöÀç ¾²·¹µå´Â ÀÚ½ÅÀÇ ¼­ºê·çƾ ¾È ¶Ç´Â ±× ¼­ºê·çƾÀ» È£ÃâÇÑ ´Ù¸¥ ¼­ºê·çƾ ¾È¿¡¼­ ¸í·É¾î¸¦ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+¿ÀÅäÇÖÅ°´Â ½ÇÁ¦·Î ´ÙÁß ½º·¹µå¸¦ »ç¿ëÇÏÁö ¾ÊÁö¸¸, ±× ¸î °¡Áö ÇàÀ§´Â Èä³»¸¦ ³À´Ï´Ù: µÎ ¹ø° ¾²·¹µå°¡ ½ÃÀ۵Ǹé -- ¿¹¸¦ µé¾î ÀÌÀüÀÇ ÇÖÅ°°¡ ¿©ÀüÈ÷ ½ÇÇà ÁßÀÎ µ¿¾È ¶Ç´Ù¸¥ ÇÖÅ°¸¦ ´­·¯¼­ -- ÇöÀç ¾²·¹µå°¡ ÀÎÅÍ·´Æ® µÇ¾î (Àӽ÷ΠÁ¤ÁöµÇ¾î) »õ ¾²·¹µå°¡ ÇöÀç ¾²·¹µå°¡ µË´Ï´Ù. µÎ ¹ø° ¾²·¹µå°¡ ½ÇÇà ÁßÀÎ µ¿¾È ¼¼ ¹ø° ¾²·¹µå°¡ ½ÃÀ۵Ǹé, ù ¹ø°¿Í µÎ ¹ø° ¾²·¹µå ¸ðµÎ µ¿¸é »óÅ·Πµé¾î°©´Ï´Ù. µîµî.

+

+ÇöÀç ¾²·¹µå°¡ ³¡³ª¸é, °¡Àå ÃÖ±Ù¿¡ ÀÎÅÍ·´Æ®µÈ ¾²·¹µå°¡ Àç°³µË´Ï´Ù. µîµî. ¸ðµç ¾²·¹µå°¡ °á±¹ ´Ù ³¡³¯ ¶§±îÁö °è¼ÓµË´Ï´Ù. Àç°³µÇ¸é, ErrorLevel°ú SendMode¿¡ ´ëÇÑ ¾²·¹µåÀÇ ¼³Á¤ÀÌ ÀÚµ¿À¸·Î ÀÎÅÍ·´Æ® Àü°ú ¶È °°Àº »óÅ·Πº¹±¸µË´Ï´Ù; ´Ù¸¥ ¸»·Î, ¾²·¹µå´Â ÀÎÅÍ·´Æ® µÇ¾îµµ ºÎÀÛ¿ëÀ» °æÇèÇÏÁö ¾Ê½À´Ï´Ù (´Ü, È°¼º â¿¡ °¡ÇÑ º¯°æÀº ¿¹¿ÜÀÔ´Ï´Ù).

+

+ÁÖÀÇ: KeyHistory ¸í·É¾î/¸Þ´º-Ç׸ñÀº ¾ó¸¶³ª ¸¹Àº ¾²·¹µå°¡ ÀÎÅÍ·´µåµÈ »óÅ¿¡ ÀÖ´ÂÁö¸¦ º¸¿©ÁÝ´Ï´Ù. ListHotkeys ¸í·É¾î/¸Þ´º-Ç׸ñÀº ¾î´À ÇÖÅ°°¡ ¾²·¹µå¸¦ °¡Á³´ÂÁö º¸¿©ÁÝ´Ï´Ù.

+

+½ºÅ©¸³Æ® Çϳª°¡ µ¿½Ã¿¡ MsgBox, InputBox, FileSelectFile, ±×¸®°í FileSelectFolder ´ëÈ­»óÀÚ¸¦ ¿©·¯ °³ °¡Áú ¼ö ÀÖ½À´Ï´Ù. ÀÌÀü ¾²·¹µå°¡ ÀÌ¹Ì ´ëÈ­»óÀÚ¸¦ º¸¿©ÁÖ°í ÀÖ´Â µ¿¾È¿¡ (ÇÖÅ°, ½Ã°£Á¦ÇÑ ¼­ºê·çƾ, ¸ÂÃã ¸Þ´º Ç׸ñ, µîµîÀ» ÅëÇÏ¿©.). »õ ¾²·¹µå¸¦ ¶Ç ±âµ¿ÇÏ¸é µË´Ï´Ù

+

+±âº»°ªÀ¸·Î, ÁÖ¾îÁø ÇÖÅ°³ª ÇÖ½ºÆ®¸µ ¼­ºê·çƾÀº ÀÌ¹Ì ½ÇÇà ÁßÀÌ¸é µÎ ¹ø°·Î ½ÃÀÛÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ ÇàÀ§¸¦ ¹Ù²Ù·Á¸é #MaxThreadsPerHotkey¸¦ »ç¿ëÇϽʽÿÀ.

+ +

¾²·¹µå ¿ì¼± ¼øÀ§

+

+¾î¶² ¾²·¹µåÀ̵ç (ÇÖÅ°, ½Ã°£Á¦ÇÑ ¼­ºê·çƾ, ¸ÂÃã ¸Þ´º Ç׸ñ, µîµî.) ÇöÀç ¾²·¹µåº¸´Ù ¿ì¼± ¼øÀ§º¸´Ù ³·À¸¸é ÀÎÅÍ·´Æ® ÇÒ ¼ö ¾ø½À´Ï´Ù. ±× ½Ã°£ µ¿¾È, ŸÀ̸Ӵ ½ÇÇàµÇÁö ¾ÊÀ¸¸ç, »ç¿ëÀÚ°¡ (ÇÖÅ°³ª GUI ¹öÆ°À» ´­·¯¼­) »õ·Î¿î ¾²·¹µå¸¦ ¸¸µé·Á´Â ½Ãµµµµ ¾Æ¹« È¿°ú°¡ ¾ø½À´Ï´Ù. ¹öÆÛ Ã³¸®Á¶Â÷ µÇÁö ¾Ê½À´Ï´Ù. ÀÌ ¶§¹®¿¡, º¸Åë ÃÖ°í ¿ì¼±¼øÀ§ÀÇ ¾²·¹µå¸¦ »¡¸® ³¡³»µµ·Ï ¼³°èÇÏ´Â °ÍÀÌ °¡Àå ÁÁ½À´Ï´Ù. ¾Æ´Ï¸é ÃÖ°í ¿ì¼± ¼øÀ§¸¦ ÁÖÁö ¸»°í CriticalÀ» »ç¿ëÇϽʽÿÀ.

+

+¿ì¼± ¼øÀ§ ±âº»°ªÀº 0ÀÔ´Ï´Ù. ¸ðµç ¾²·¹µå´Â ±âº» ¿ì¼± ¼øÀ§¸¦ »ç¿ëÇÕ´Ï´Ù. ´Ü, ´ÙÀ½ ¹æ½Ä Áß Çϳª ¶§¹®¿¡ ¹Ù²î´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù:
+ 1) ½Ã°£Á¦ÇÑ ¼­ºê·çƾÀº SetTimer¸¦ ÅëÇÏ¿© ƯÁ¤ÇÑ ¿ì¼± ¼øÀ§°¡ ºÎ¿©µË´Ï´Ù.
+ 2) ÇÖÅ°´Â Hotkey ¸í·É¾î¸¦ ÅëÇÏ¿© ƯÁ¤ÇÑ ¿ì¼± ¼øÀ§°¡ ºÎ¿©µË´Ï´Ù.
+ 3) ÇÖ½ºÆ®¸µÀº #Hotstring Áö½Ã¾î¸¦ ÅëÇÏ¿© ¶Ç´Â Á¤ÀÇµÉ ¶§ ƯÁ¤ÇÑ ¿ì¼± ¼øÀ§°¡ ºÎ¿©µË´Ï´Ù.
+ 4) ¸ÂÃã ¸Þ´º Ç׸ñÀº Menu ¸í·É¾î¸¦ ÅëÇÏ¿© ƯÁ¤ ¿ì¼± ¼øÀ§°¡ ºÎ¿©µË´Ï´Ù.
+ 5) ÇöÀç ¾²·¹µå´Â Thread ¸í·É¾î¸¦ ÅëÇÏ¿© ÀÚ½ÅÀÇ ¿ì¼± ¼øÀ§¸¦ ÁöÁ¤ÇÕ´Ï´Ù.

+

OnExit ¼­ºê·çƾÀº (ÀÖ´Ù¸é) ¾ðÁ¦³ª È£ÃâµÇ¸é ÇöÀç ¾²·¹µåÀÇ ¿ì¼± ¼øÀ§¿¡ »ó°ü¾øÀÌ ¹Ù·Î ½ÇÇàµË´Ï´Ù.

+ + diff --git a/src/docs/misc/WinTitle.htm b/src/docs/misc/WinTitle.htm new file mode 100644 index 0000000..e070b93 --- /dev/null +++ b/src/docs/misc/WinTitle.htm @@ -0,0 +1,162 @@ + + +WinTitle & Last Found Window + + + + + + + +

WinTitle ¸Å°³º¯¼ö & °¡Àå ¸¶Áö¸·À¸·Î ¹ß°ßµÈ â

+ +

+¸¹Àº ¸í·É¾î¿Í ¸î¸î ÇÔ¼ö´Â WinTitle ¸Å°³º¯¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â ÀÛ¾÷ÇÒ Ã¢À» ½Äº°ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â âÀÇ Á¦¸ñ ¶Ç´Â Á¦¸ñ ÀϺÎÀÏ ¼öµµ ÀÖ°í ÀÌ ÆäÀÌÁö¿¡ ±â¼úµÈ ´Ù¸¥ ±âÁØÀÏ ¼öµµ ÀÖ½À´Ï´Ù.

+ +°£Æí ÂüÁ¶ + + + + + + + + + + +
TitleºÎÇÕ ÇàÀ§
AÈ°¼º â
ahk_classâ Ŭ·¡½º
ahk_idÀ¯ÀÏÇÑ ID/HWND
ahk_pidÇÁ·Î¼¼½º ID
ahk_exeÇÁ·Î¼¼½º À̸§/°æ·Î
ahk_groupâ ±×·ì
 ´ÙÁß ±âÁØ
(All empty)¸¶Áö¸·À¸·Î ¹ß°ßµÈ â
+ +

ºÎÇÕ ÇàÀ§

+

SetTitleMatchModeÀº °¢ âÀÇ Á¦¸ñ¿¡ ºÎºÐ ¶Ç´Â Àüü Á¦¸ñÀ» ¾î¶»°Ô ºñ±³ÇÒÁö Á¦¾îÇÕ´Ï´Ù. ¼³Á¤¿¡ µû¶ó, WinTitleÀº Á¤È­ÇÏ°Ô ÀÏÄ¡ÇÏ´Â Á¦¸ñÀÌ µÉ ¼öµµ ÀÖ°í, ¾Æ´Ï¸é Á¦¸ñ¿¡ ¾îµð¿¡³ª ³ªÅ¸³ª´Â ºÎ¹®ÀÚ¿­, ¶Ç´Â RegEx ÆÐÅÏÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¼³Á¤Àº ¶Ç ahk_class¸¦ Á¤È®ÇÑ Å¬·¡½º À̸§À¸·Î ÀÌÇØÇÒÁö ¾Æ´Ï¸é RegEx ÆÐÅÏÀ¸·Î ÀÌÇØÇÒÁö Á¦¾îÇÕ´Ï´Ù.

+

+¼ûÀº âÀº DetectHiddenWindowsÀÌ ÄÑÁ® ÀÖÀ» ¶§¸¸ ŽÁöµË´Ï´Ù. ¾ðÁ¦³ª ¼ûÀ» ÂüÀ» ŽÁöÇÏ´Â WinShow´Â Á¦¿ÜÇÕ´Ï´Ù.

+

+¿©·¯ âÀÌ WinTitle°ú ±âŸ ±âÁØ¿¡ ºÎÇÕÇϸé, °¡Àå À§¿¡ ºÎÇÕÇÑ Ã¢ÀÌ »ç¿ëµË´Ï´Ù. È°¼º âÀÌ ±âÁØ¿¡ ºÎÇÕÇϸé, º¸Åë ´Ù¸¥ ¸ðµç ⺸´Ù À§¿¡ Àֱ⠶§¹®¿¡ ¿ì¼± ¼øÀ§¸¦ °®½À´Ï´Ù. ±×·¸Áö¸¸, Ç×»ó ÃÖ»ó´Ü âÀÌ ºÎÇÕÇϸé (±×¸®°í È°¼º âÀº ÃÖ»ó´Ü âÀÌ ¾Æ´Ï¸é), ´ë½Å¿¡ ±×°ÍÀÌ »ç¿ëµË´Ï´Ù.

+ +

È°¼º â (A)

+

+WinTitleÀÌ ±âÈ£ AÀÌ°í ´Ù¸¥ ¼¼ °³ÀÇ Ã¢ ¸Å°³º¯¼ö°¡ ºñ¾î Àְųª »ý·«µÇ¸é, ±× È°¼º âÀÌ »ç¿ëµË´Ï´Ù (WinText, ExcludeTitle ±×¸®°í ExcludeText).

+
+; È°¼º âÀÇ ID/HWND¸¦ ¿­¶÷ÇÕ´Ï´Ù
+id := WinExist("A")
+MsgBox % id
+
+; Win+&uarrÀ» ´­·¯; È°¼º âÀ» ÃÖ´ëÈ­ÇÕ´Ï´Ù
+#Up::WinMaximize, A
+ +

ahk_class â Ŭ·¡½º

+

+â Ŭ·¡½º´Â ½Ã½ºÅÛÀÌ Ã¢À» »ý¼ºÇϱâ À§ÇÏ¿© ÁÖÇüƲ·Î »ç¿ëÇÏ´Â ¼Ó¼ºÀÇ ÁýÇÕÀÔ´Ï´Ù. ´Ù¸¥ ¸»·Î, âÀÇ Å¬·¡½º À̸§Àº ¾î¶² À¯ÇüÀÇ Ã¢ÀÎÁö ½Äº°ÇÕ´Ï´Ù. â Ŭ·¡½º¸¦ »ç¿ëÇÏ·Á¸é, Window Spy°¡ º¸¿©ÁÖ´Â °Íó·³ ahk_class ExactClassName¸¦ »ç¿ëÇϽʽÿÀ. ExactClassNameÀº WinGetClass·Î ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+RegEx Á¦¸ñ ºÎÇÕ ¸ðµå°¡ ÄÑÁ® ÀÖÀ¸¸é, ahk_class´Â Á¤±Ô Ç¥Çö½ÄÀ» ¹Þ½À´Ï´Ù.

+
+; ÄÜ¼Ö Ã¢À» È°¼ºÈ­ÇÕ´Ï´Ù (¿¹, cmd.exe)
+WinActivate, ahk_class ConsoleWindowClass
+
+ +

ahk_id Unique ID / HWND

+

+°¢ âÀ̳ª ÄÜÆ®·Ñ¿¡ À¯ÀÏÇÑ ID°¡ ÀÖ½À´Ï´Ù. À̸¦ HWND (Handle to WiNDow)¶ó°íµµ ÇÕ´Ï´Ù. ÀÌ ID¸¦ »ç¿ëÇϸé Á¦¸ñÀÌ º¯Çصµ âÀ̳ª ÄÜÆ®·ÑÀ» ½Äº°ÇÒ ¼ö ÀÖ½À´Ï´Ù. âÀÇ ID´Â ÀüÇüÀûÀ¸·Î WinExist()³ª WinGetÀ» ÅëÇÏ¿© ¿­¶÷ÇÕ´Ï´Ù. ÄÜÆ®·ÑÀÇ ID´Â ÀüÇüÀûÀ¸·Î ControlGet Hwnd, MouseGetPos, ¶Ç´Â DllCallÀ» ÅëÇÏ¿© ¿­¶÷ÇÕ´Ï´Ù. ¶ÇÇÑ, ahk_id´Â ÄÜÆ®·ÑÀÌ º¸ÀÌÁö ¾Ê¾Æµµ ÀÛµ¿ÇÕ´Ï´Ù; Áï, DetectHiddenWindows ¼³Á¤Àº ÄÜÆ®·Ñ¿¡ ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù.

+
+WinActivate, ahk_id %VarContainingID%
+
+ +

ahk_pid ÇÁ·Î¼¼½º ID

+

+ahk_pid¸¦ »ç¿ëÇϸé ƯÁ¤ ÇÁ·Î¼¼½º¿¡ ¼ÓÇÑ Ã¢À» ½Äº°ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÁ·Î¼¼½º ½Äº°ÀÚ (PID)´Â ÀüÇüÀûÀ¸·Î WinGet, Run ¶Ç´Â ProcessÀ¸·Î ¿­¶÷ÇÕ´Ï´Ù.

+
+WinActivate, ahk_pid %VarContainingPID%
+
+ +

ahk_exe ÇÁ·Î¼¼½º À̸§/°æ·Î [v1.1.01+]

+

+ahk_exe¸¦ »ç¿ëÇϸé ÁÖ¾îÁø °æ·Î³ª À̸§ÀÇ ÇÁ·Î¼¼½º¿¡ ¼ÓÇÑ Ã¢À» ½Äº°ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+ahk_pid´Â ƯÁ¤ÇÑ ÇÁ·Î¼¼½º Çϳª·Î Á¦ÇѵǴ ¹Ý¸é¿¡, ahk_exe´Â ÁÖ¾îÁø ¹®ÀÚ¿­¿¡ ºÎÇÕÇÏ´Â À̸§ ¶Ç´Â Àüü °æ·Î¸¦ °¡Áø ¸ðµç ÇÁ·Î¼¼½º¸¦ °í·ÁÇÕ´Ï´Ù. RegEx Á¦¸ñ ÀÏÄ¡ ¸ðµå°¡ ÄÑÁ® ÀÖ´Ù¸é, ahk_exe´Â Á¤±Ô Ç¥Çö½ÄÀ» ¹Þ½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ahk_exe´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏ´Â À̸§À̳ª Àüü °æ·Î¸¦ ¹Þ½À´Ï´Ù; ¿¹¸¦ µé¾î, ahk_exe notepad.exe´Â ahk_exe C:\Windows\Notepad.exe, ahk_exe C:\Windows\System32\Notepad.exe ±×¸®°í ±âŸ º¯Á¾µéÀ» Æ÷°ýÇÕ´Ï´Ù.

+
+; ±âÁ¸ÀÇ notepad.exe âÀ» È°¼ºÈ­Çϰųª, »õ·Î ¿±´Ï´Ù
+if WinExist("ahk_exe notepad.exe")
+    WinActivate, ahk_exe notepad.exe
+else
+    Run, notepad.exe
+
+ +

ahk_group â ±×·ì

+

+ahk_groupÀ» »ç¿ëÇϸé ÀÌÀü¿¡ Á¤ÀÇµÈ Ã¢ ±×·ì¿¡ Æ÷ÇÔµÈ ±ÔÄ¢¿¡ ºÎÇÕÇÏ´ÂâÀ» ½Äº°ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+

+WinMinimize, WinMaximize, WinRestore, WinHide, WinShow, WinClose, ±×¸®°í WinKill ¸í·É¾î´Â ¸ðµç ±×·ì â¿¡ ÀÛµ¿ÇÕ´Ï´Ù. ´ëÁ¶ÀûÀ¸·Î, WinActivate¿Í IfWinExist °°Àº ´Ù¸¥ â ¸í·É¾î´Â ±×·ìÀÇ ÃÖ»óÀ§ â¿¡¸¸ ÀÛµ¿ÇÕ´Ï´Ù.

+
+; ±×·ìÀ» Á¤ÀÇÇÕ´Ï´Ù: À©µµ¿ìÁî Ž»ö±â â
+GroupAdd, Explorer, ahk_class ExploreWClass ; ºñ½ºÅ¸ ÀÌÈÄ¿¡ »ç¿ë¾ÈµÊ
+GroupAdd, Explorer, ahk_class CabinetWClass
+
+; À§ÀÇ ±âÁØ¿¡ ºÎÇÕÇϴ âÀº ¸ðµÎ È°¼ºÈ­ÇÕ´Ï´Ù
+WinActivate, ahk_group Explorer
+
+ +

´ÙÁß ±âÁØ

+

+(°Ë»öÀ» È®´ëÇÏ´Â) ahk_group°ú ´ëÁ¶ÀûÀ¸·Î, WinTitle ¸Å°³º¯¼ö ¾È¿¡ Çϳª ÀÌ»óÀÇ ±âÁØÀ» ƯÁ¤ÇØ °Ë»öÀÇ ¹üÀ§¸¦ Á¼Èú ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­, ½ºÅ©¸³Æ®´Â Á¦¸ñ¿¡ My File.txtÀÌ Æ÷ÇԵǾî ÀÖ°í ±×¸®°í ±×ÀÇ Å¬·¡½º°¡ NotepadÀΠâÀ» ±â´Ù¸³´Ï´Ù:

+
WinWait My File.txt ahk_class Notepad
+WinActivate  ; ¹ß°ßµÈ âÀ» È°¼ºÈ­ÇÕ´Ï´Ù.
+

+ÀÌ ¸ðµå¸¦ »ç¿ëÇÒ ¶§, Á¦¸ñ ÅؽºÆ®¸¦ (¿øÇÏ´Â ¼ø¼­´ë·Î) Á¦ÀÏ ¸ÕÀú ³ª¿­ÇØ¾ß ÇÏ°í, ´ÙÀ½¿¡ Çϳª ÀÌ»óÀÇ ±âÁØÀÌ µû¶ó ¿Í¾ß ÇÕ´Ï´Ù. ù ¹ø° ±âÁØ ÀÌÈķδ ¼­·Î Á¤È®ÇÏ°Ô ÇϳªÀÇ ½ºÆäÀ̽º³ª ÅÇÀ¸·Î °¥¶ó¾ß ÇÕ´Ï´Ù (´Ù¸¥ ½ºÆäÀ̽º³ª ÅÇÀº ÀÌÀü ±âÁØÀÇ ±âÈ£ ±×´ë·ÎÀÇ ºÎºÐÀ¸·Î Ãë±ÞµË´Ï´Ù).

+

ahk_id¸¦ ´Ù¸¥ ±âÁØ°ú Á¶ÇÕÇØ Ã¢ Á¦¸ñ, Ŭ·¡½º ¶Ç´Â ±âŸ Ư¼ºÀ» Å×½ºÆ®ÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
+MouseGetPos,,, id
+if WinExist("ahk_class Notepad ahk_id " id)
+    MsgBox ¸¶¿ì½º°¡ ³ëÆ®Æеå À§¿¡ ÀÖ½À´Ï´Ù.
+
+ + +

"°¡Àå ¸¶Áö¸·À¸·Î ¹ß°ßµÈ" â

+ +

+ÀÌ°ÍÀº ´ÙÀ½ÀÌ °¡Àå ¸¶Áö¸·À¸·Î ¹ß°ßÇÑ Ã¢ÀÔ´Ï´Ù: IfWin[Not]Exist, WinExist(), IfWin[Not]Active, WinActive(), WinWait[Not]Active, ¶Ç´Â WinWait.

+

+½ºÅ©¸³Æ®¸¦ ½±°Ô ¸¸µé°í °ü¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ¸ñÇ¥ âÀÇ WinTitle°ú WinText°¡ ¸Å â ¸í·É¾î¸¶´Ù ¹Ýº¹µÉ ÇÊ¿ä°¡ ¾ø±â ¶§¹®ÀÔ´Ï´Ù. °Ô´Ù°¡, ½ºÅ©¸³Æ®ÀÇ ¼öÇ༺´Éµµ ´õ ÁÁ¾ÆÁý´Ï´Ù. ¿Ö³ÄÇÏ¸é ¸ñÇ¥ âÀ» óÀ½ ¹ß°ßÇÏ¸é ±× ´ÙÀ½ºÎÅÍ´Â ¹Ýº¹Çؼ­ °Ë»öÇÒ ÇÊ¿ä°¡ ¾ø±â ¶§¹®ÀÔ´Ï´Ù.

+

+"°¡Àå ¸¶Áö¸·¿¡ ¹ß°ßµÈ" âÀº WinWait, WinActivateBottom, ±×¸®°í GroupAdd¸¦ Á¦¿ÜÇÏ°í ´Ù¸¥ ¸ðµç â °ü·Ã ¸í·É¾î°¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÇÏ·Á¸é, ±×³É ³× °³ÀÇ Ã¢ ¸Å°³º¯¼ö¸¦ »ý·«ÇÏ¸é µË´Ï´Ù (WinTitle, WinText, ExcludeTitle, ±×¸®°í ExcludeText).

+

+°¢ ¾²·¹µå¸¶´Ù ÀÚ½ÅÀÇ "¸¶Áö¸·À¸·Î ¹ß°ßµÈ" âÀÇ °ªÀ» À¯ÁöÇÕ´Ï´Ù. Áï, ÇöÀç ¾²·¹µå ¶Ç´Ù¸¥ ¾²·¹µå¿¡ ÀÇÇØ ÀÎÅÍ·´Æ® µÇ´õ¶óµµ, ¿ø·¡ ¾²·¹µå°¡ Àç°³ÇÒ ¶§ ÀÎÅÍ·´Æ®ÇÑ ¾²·¹µåÀÇ °ÍÀÌ ¾Æ´Ï¶ó ¿©ÀüÈ÷ ¿ø·¡ÀÇ "¸¶Áö¸·À¸·Î ¹ß°ßµÈ" âÀÇ °ªÀ» °¡Áø´Ù´Â ¶æÀÔ´Ï´Ù..

+

+¸¶Áö¸·À¸·Î ¹ß°ßµÈ âÀÌ º¸ÀÌÁö ¾Ê´Â Gui âÀ̸é, DetectHiddenWindows°¡ ²¨Á® ÀÖ´õ¶óµµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº Á¾Á¾ Gui +LastFound¿Í ÇÔ²² Á¶ÇÕÇؼ­ »ç¿ëµË´Ï´Ù.

+
Run Notepad
+WinWait Untitled - Notepad
+WinActivate  ; °¡Àå ¸¶Áö¸·¿¡ ¹ß°ßµÈ âÀ» »ç¿ëÇÕ´Ï´Ù.
+
+IfWinExist, Untitled - Notepad
+{
+    WinActivate  ; À§¿¡¼­ ¹ß°ßµÈ âÀ» ÀÚµ¿À¸·Î »ç¿ëÇÕ´Ï´Ù.
+    WinMaximize  ; °°½À´Ï´Ù
+    Send, Some text.{Enter}
+    return
+}
+
+IfWinNotExist, Calculator
+    return
+else
+{
+    WinActivate  ; À§ÀÇ "IfWinNotExist"´Â ¶Ç  "°¡Àå ¸¶Áö¸· ¹ß°ß" âÀ» ¼³Á¤ÇÕ´Ï´Ù.
+    WinMove, 40, 40  ; »õ À§Ä¡·Î À̵¿ÇÕ´Ï´Ù.
+    return
+}
+ + + diff --git a/src/docs/misc/Winamp.htm b/src/docs/misc/Winamp.htm new file mode 100644 index 0000000..f14a299 --- /dev/null +++ b/src/docs/misc/Winamp.htm @@ -0,0 +1,85 @@ + + +Automating Winamp + + + + + + + +

Winamp ÀÚµ¿È­Çϱâ

+ +

+ÀÌ ¼½¼ÇÀº ÇÖÅ°¸¦ ÅëÇÏ¿© Winamp¸¦ Á¦¾îÇÏ´Â ¹ýÀ» º¸¿©ÁÝ´Ï´Ù. ÃÖ¼ÒÈ­µÇ¾î ÀÖµç ºñÈ°¼ºÈ­ »óÅÂÀÌµç »ó°ü¾øÀÌ Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Á¤º¸´Â Winamp 2.78c·Î °ËÁõµÇ¾úÁö¸¸ ´Ù¸¥ ¹èÆ÷º»¿¡µµ ¿ª½Ã Àß ÀÛµ¿ÇÒ °ÍÀ̶ó ¹Ï½À´Ï´Ù. º¯°æÀ» ÇÏ¿´°Å³ª °³¼±À» ÇÏ¿´À¸¸é Æ÷·Ò¿¡ °Ô½ÃÇØ Áֽðųª ÀúÀÚ¿¡°Ô ¿¬¶ôÀ» ÁֽʽÿÀ.

+

+´ÙÀ½ ¿¹Á¦´Â Ctrl+Alt+P ÇÖÅ°¸¦ WinampÀÇ pause/unpause ¹öÆ°À» ´©¸¥ °Í°ú µ¿µîÇÏ°Ô ¸¸µì´Ï´Ù:

+
^!p::
+IfWinNotExist ahk_class Winamp v1.x
+    return
+; ±×·¸Áö ¾ÊÀ¸¸é, À§¿¡¼­ "°¡Àå ¸¶Áö¸·¿¡ ¹ß°ßµÈ" âÀ» ¾Æ·¡¿¡ »ç¿ëÇϵµ·Ï ¼³Á¤Çß½À´Ï´Ù.
+ControlSend, ahk_parent, c  ; Pause/Unpause
+return
+

+´ÙÀ½Àº Winamp 2.x¿¡¼­ »ç¿ë°¡´ÉÇÑ ¸î °¡Áö Å°º¸µå ´ÜÃàÅ°ÀÔ´Ï´Ù (´Ù¸¥ ¹öÀü¿¡¼­µµ ÀÛµ¿ÇÒ °ÍÀÔ´Ï´Ù). À§ÀÇ ¿¹Á¦´Â ´ÙÀ½ Å°µéÀ» »ç¿ëÇϵµ·Ï °³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
º¸³¾ Å°È¿°ú
cÁ¤Áö/Àç°³
xÇ÷¹ÀÌ/Àç½ÃÀÛ/Àç°³
v¸ØÃã
+v¼Ò¸®¸¦ Á×À̸ç õõÈ÷ ¸ØÃã
^vÇöÀç Æ®·¢ÀÌ ³¡³ª¸é ¸ØÃã
b´ÙÀ½ Æ®·¢À¸·Î
zÀÌÀü Æ®·¢À¸·Î
{left}5 ÃÊ µÇ°¨À½
{right}ºü¸£°Ô 5ÃÊ ¾ÕÀ¸·Î °¨À½
{up}º¼·ý ³ô°Ô
{down}º¼·ý ³·°Ô
+

 

+
+; ´ÙÀ½ ¿¹Á¦´Â Winamp¿¡°Ô ÇöÀç ¾î´À Æ®·¢ÀÌ È°¼ºÈ­µÇ¾î ÀÖ´ÂÁö ¹¯½À´Ï´Ù:
+SendMessage, 1024, 0, 120, ahk_class Winamp v1.x
+if ErrorLevel <> FAIL
+{
+    ErrorLevel += 1  ; WinampÀÇ Ä«¿îÆ®´Â 0ºÎÅÍ ½ÃÀÛÇÕ´Ï´Ù. ±×·¡¼­ 1 ¸¸Å­ Á¶Á¤ÇÕ´Ï´Ù.
+    MsgBox, #%ErrorLevel% ¹ø Æ®·¢ÀÌ ÇöÀç ¿¬ÁÖ ÁßÀÔ´Ï´Ù.
+}
+ + diff --git a/src/docs/objects/Enumerator.htm b/src/docs/objects/Enumerator.htm new file mode 100644 index 0000000..c45cb73 --- /dev/null +++ b/src/docs/objects/Enumerator.htm @@ -0,0 +1,56 @@ + + +Enumerator + + + + + + + +

¿­°Å °´Ã¼ [AHK_L 49+]

+ +

Áý´Ü ¾ÈÀÇ Ç׸ñµéÀ» ¿­°ÅÇÕ´Ï´Ù.

+ +
+

Next

+ +

´ÙÀ½À¸·Î ¿­°ÅµÈ Ç׸ñÀ» ¿­¶÷ÇÕ´Ï´Ù.

+
Enum.Next(OutputVar1 [, OutputVar2, ...])
+ + + + +
OutputVar1, OutputVar2±¸Çö¿¡-Á¾¼ÓÀûÀÎ °ªÀ» ¿­¶÷ÇÕ´Ï´Ù.
...Áö¿øµÇ¸é, Ãß°¡ ¸Å°³º¯¼ö.
Returns¼º°øÇϸé 0-¾Æ´Ñ Á¤¼ö, Ç׸ñÀÌ ³²¾Æ ÀÖÁö ¾ÊÀ¸¸é 0, ¶Ç´Â ¸Å°³º¯¼ö°¡ ¿Ã¹Ù¸£Áö ¾ÊÀ¸¸é ºó ¹®ÀÚ¿­À» µ¹·ÁÁÝ´Ï´Ù.
+ +

°´Ã¼

+

ObjNewEnum()°¡ µ¹·ÁÁÖ´Â ¿­°ÅÀÚ´Â Å°-°ª ½Ö¸¶´Ù ÇÑ ¹ø½Ä È£ÃâµË´Ï´Ù. ¸Å°³º¯¼ö´Â µÎ °³±îÁö Çã¿ëÇÕ´Ï´Ù:

+ + + +
OutputVar1Å°-°ª ½Ö¿¡¼­ Å°(key)¸¦ ¹Þ½À´Ï´Ù.
OutputVar2 OutputVar1¿Í ¿¬°üµÈ °ª(value)¸¦ ¹Þ½À´Ï´Ù.
+

+Å°-°ª ½ÖÀº ±¸Çö¿¡-Á¤ÀÇµÈ ¼ø¼­·Î ¹ÝȯµË´Ï´Ù. Áï, ÀüÇüÀûÀ¸·Î ÇÒ´çµÈ ¼ø¼­¿Í °°Àº ¼ø¼­·Î ¹ÝȯµÇÁö ¾Ê½À´Ï´Ù. ±âÁ¸ÀÇ Å°-°ª ½ÖÀº ¿­°Å Áß¿¡ º¯°æÇÒ ¼ö´Â ÀÖÁö¸¸, Å°¸¦ »ðÀÔÇϰųª »èÁ¦Çϸé Ç׸ñµéÀÌ ¿©·¯ ¹ø ¿­°ÅµÇ°Å³ª ÀüÇô ¿­°ÅµÇÁö ¾Ê°Å³ª µÚÁ×¹ÚÁ×ÀÌ µË´Ï´Ù.

+ +

°ü·Ã Ç׸ñ

+For-ȸµ¹ÀÌ, Object.NewEnum() + +

¿¹Á¦

+
; »ùÇà µ¥ÀÌÅ͸¦ ¸¸µì´Ï´Ù.
+obj := Object("red", 0xFF0000, "blue", 0x0000FF, "green", 0x00FF00)
+
+; ¿­°ÅÇÕ´Ï´Ù!
+enum := obj._NewEnum()
+While enum[k, v]
+    t .= k "=" v "`n"
+MsgBox % t
+
+; AHK_L 59+
+For k, v in obj
+    s .= k "=" v "`n"
+MsgBox % s
+
+
+ + + diff --git a/src/docs/objects/File.htm b/src/docs/objects/File.htm new file mode 100644 index 0000000..1d8253c --- /dev/null +++ b/src/docs/objects/File.htm @@ -0,0 +1,153 @@ + + +File Object + + + + + + + +

ÆÄÀÏ °´Ã¼ [AHK_L 42+]

+ +

ÆÄÀÏ ÀÔ/Ãâ·ÂÀ» À§ÇÑ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÕ´Ï´Ù. FileOpenÀÌ ÀÌ À¯ÇüÀÇ °´Ã¼¸¦ µ¹·ÁÁÝ´Ï´Ù.

+ +

Read

+

¹®ÀÚ¿­À» ÆÄÀϷκÎÅÍ Àаí ÆÄÀÏ Æ÷ÀÎÅ͸¦ ¾ÕÀ¸·Î À̵¿½Ãŵ´Ï´Ù.

+
String := File.Read([Characters])
+ + + +
CharactersÀÐÀ» ¹®ÀÚÀÇ ÃÖ´ë °³¼ö. »ý·«Çϸé, ÆÄÀÏ ³ª¸ÓÁö¸¦ Àо ÇϳªÀÇ ¹®ÀÚ¿­·Î µ¹·ÁÁÝ´Ï´Ù. ÄÜ¼Ö ¹öÆÛ³ª ÆÄÀÌÇÁ °°ÀÌ Æ÷ÀÎÅ͸¦ ¾ÕµÚ·Î À̵¿½Ãų ¼ö ¾ø´Â ÇÚµé·ÎºÎÅÍ ÆÄÀÏ °´Ã¼°¡ »ý¼ºµÇ¾úÀ» °æ¿ì, ÀÌ ¸Å°³º¯¼ö¸¦ »ý·«ÇÏ¸é ¸Þ½îµå°¡ ½ÇÆÐÇϰųª ¶Ç´Â ÇöÀç »ç¿ëÀÌ °¡´ÉÇÑ µ¥ÀÌÅ͸¸ µ¹·ÁÁÙ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.
Returns¹®ÀÚ¿­.
+ +

Write

+

¹®ÀÚ¿­À» ÆÄÀÏ¿¡ ¾²°í ÆÄÀÏ Æ÷ÀÎÅ͸¦ ¾ÕÀ¸·Î À̵¿½Ãŵ´Ï´Ù.

+
File.Write(String)
+ + + +
String¹®ÀÚ¿­.
Returns¾º¿©Áø ¹ÙÀÌÆ® °³¼ö (¹®ÀÚ °³¼ö°¡ ¾Æ´Ô).
+ +

ReadLine

+

ÆÄÀϷκÎÅÍ ÅؽºÆ® ÇÑ ÁÙÀ» Àаí ÆÄÀÏ Æ÷ÀÎÅ͸¦ ¾ÕÀ¸·Î À̵¿½Ãŵ´Ï´Ù.

+
Line := File.ReadLine()
+ + +
ReturnsÅؽºÆ® ÇÑ ÁÙ. ¿©±â¿¡´Â ÆÄÀÏ°ú ±× ÆÄÀÏÀ» ¿©´Â µ¥ »ç¿ëµÈ EOL Ç÷¡±×¿¡ µû¶ó `n, `r`n ¶Ç´Â `rÀÌ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù.
+ +

WriteLine

+

¹®ÀÚ¿­À» ¾¹´Ï´Ù. ÆÄÀÏÀ» ¿©´Â µ¥ »ç¿ëµÈ Ç÷¡±×¿¡ µû¶ó ´ÙÀ½¿¡ `n ¶Ç´Â `r`nÀÌ µû¶ó¿É´Ï´Ù. ÆÄÀÏ Æ÷ÀÎÅ͸¦ ¾ÕÀ¸·Î À̵¿½Ãŵ´Ï´Ù.

+
File.WriteLine([String])
+ + + +
String¼±ÅÃÀûÀÎ ¹®ÀÚ¿­.
Returns¾º¿©Áø ¹ÙÀÌÆ® °³¼ö (¹®ÀÚ °³¼ö°¡ ¾Æ´Ô).
+ +

ReadNum

+

ÁöÁ¤ÇÑ ¹ÙÀÌÆ® °³¼ö¸¸Å­ ÆÄÀϷκÎÅÍ Àаí ÆÄÀÏ Æ÷ÀÎÅ͸¦ ¾ÕÀ¸·Î À̵¿½Ãŵ´Ï´Ù.

+
Num := File.ReadNumType()
+ + + +
NumType´ÙÀ½ Áß Çϳª¸¦ ÇÔ¼ö À̸§¿¡ Á÷Á¢ ÁöÁ¤ÇÕ´Ï´Ù:
UInt, Int, Int64, Short, UShort, Char, UChar, Double, ¶Ç´Â Float.
Returns¼º°øÇÏ¸é ¹ÙÀÌÆ® °³¼ö, ±×·¸Áö ¾ÊÀ¸¸é ºó ¹®ÀÚ¿­À» µ¹·ÁÁÝ´Ï´Ù.
+ +

WriteNum

+

ÁöÁ¤µÈ ¹ÙÀÌÆ® °³¼ö ¸¸Å­ ¾²°í ÆÄÀÏ Æ÷ÀÎÅ͸¦ ¾ÕÀ¸·Î À̵¿½Ãŵ´Ï´Ù.

+
File.WriteNumType(Num)
+ + + + +
NumType´ÙÀ½ Áß Çϳª¸¦ ÇÔ¼ö À̸§¿¡ Á÷Á¢ ÁöÁ¤ÇÕ´Ï´Ù:
UInt, Int, Int64, Short, UShort, Char, UChar, Double, ¶Ç´Â Float.
Num¼ýÀÚ.
Returns¾º¿©Áø ¹ÙÀÌÆ® °³¼ö. ¿¹¸¦ µé¸é WriteUInt´Â ¼º°øÇϸé 4¸¦ µ¹·ÁÁÝ´Ï´Ù.
+ +

RawRead

+

³¯ ÀÌÁø µ¥ÀÌÅ͸¦ ÆÄÀϷκÎÅÍ ¸Þ¸ð¸®·Î ÀÐ¾î µéÀÔ´Ï´Ù. º¯¼ö°¡ ÁöÁ¤µÇ¾î ÀÖÀ¸¸é, ÇÊ¿äÇÑ °æ¿ì ÀÚµ¿À¸·Î È®´ëµË´Ï´Ù.

+
File.RawRead(VarOrAddress, Bytes)
+ + + + +
VarOrAddressµ¥ÀÌÅÍ°¡ º¹»çµÉ º¯¼ö ¶Ç´Â ¸Þ¸ð¸® ÁÖ¼Ò. »ç¿ë¹ýÀº NumGet°ú ºñ½ÁÇÕ´Ï´Ù.
BytesÀÐÀ» ¹ÙÀÌÆ®ÀÇ ÃÖ´ë °³¼ö.
ReturnsÀÐÀº ¹ÙÀÌÆ® °³¼ö.
+ +

RawWrite

+

³¯ ÀÌÁø µ¥ÀÌÅ͸¦ ÆÄÀÏ¿¡ ¾¹´Ï´Ù.

+
File.RawWrite(VarOrAddress, Bytes)
+ + + + +
VarOrAddressµ¥ÀÌÅ͸¦ ´ã°í ÀÖ´Â º¯¼ö ¶Ç´Â ¸Þ¸ð¸®ÀÇ µ¥ÀÌÅÍ ÁÖ¼Ò. »ç¿ë¹ýÀº NumPut°ú ºñ½ÁÇÕ´Ï´Ù.
Bytes¾µ ¹ÙÀÌÆ® °³¼ö.
ReturnsÀÐÀº ¹ÙÀÌÆ® °³¼ö.
+ +

Seek

+

ÆÄÀÏ Æ÷ÀÎÅ͸¦ À̵¿½Ãŵ´Ï´Ù.

+
File.Seek(Distance [, Origin = 0])
+File.Position := Distance
+File.Pos := Distance
+ + + + +
Distance¹ÙÀÌÆ® ´ÜÀ§·Î À̵¿ÇÒ °Å¸®. °ªÀÌ ³·À» ¼ö·Ï ÆÄÀÏÀÇ ¾Õ ÂÊ¿¡ °¡±õ½À´Ï´Ù.
OriginÆÄÀÏ Æ÷ÀÎÅÍÀÇ À̵¿ ½ÃÀÛ ÁöÁ¡. ¹Ýµå½Ã ´ÙÀ½ Çϳª°¡ µÇ¾î¾ß ÇÕ´Ï´Ù:
    +
  • 0 (SEEK_SET): ÆÄÀÏÀÇ Ã³À½. Distance´Â 0ÀÌ»óÀ̾î¾ß ÇÕ´Ï´Ù.
  • +
  • 1 (SEEK_CUR): ÆÄÀÏ Æ÷ÀÎÅÍÀÇ ÇöÀç À§Ä¡.
  • +
  • 2 (SEEK_END): ÆÄÀÏ ³¡. Distance´Â º¸Åë À½ÀÇ Á¤¼öÀÔ´Ï´Ù.
  • +
»ý·«Çϸé, Distance°¡ À½ÀÇ Á¤¼öÀÏ ¶§ Origin´Â SEEK_ENDÀÌ ±âº»°ªÀÌ°í ±×·¸Áö ¾ÊÀ¸¸é SEEK_SETÀÌ ±âº»°ªÀÔ´Ï´Ù.
Returns¼º°øÇϸé 0-¾Æ´Ñ °ªÀ», ±×·¸Áö ¾ÊÀ¸¸é 0À» µ¹·ÁÁÝ´Ï´Ù.
+ +

Tell

+
Pos := File.Tell()
+Pos := File.Position
+Pos := File.Pos
+ + +
ReturnsÆÄÀÏ Æ÷ÀÎÅÍÀÇ ÇöÀç À§Ä¡. 0À̸é ÆÄÀÏÀÇ Ã³À½ÀÔ´Ï´Ù.
+ +

Length

+

ÆÄÀÏÀÇ Å©±â¸¦ ¿­¶÷Çϰųª ¼³Á¤ÇÕ´Ï´Ù.

+
FileSize := File.Length
+File.Length := NewSize
+ + + +
NewSize¹ÙÀÌÆ® ´ÜÀ§·Î, ÆÄÀÏÀÇ »õ Å©±â.
Returns¹ÙÀÌÆ® ´ÜÀ§·Î, ÆÄÀÏÀÇ Å©±â.
+

ÀÌ Æ¯¼ºÀº ½ÇÁ¦ ÆÄÀÏ¿¡¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ÆÄÀÏ °´Ã¼°¡ ÆÄÀÌÇÁ¸¦ °¡¸®Å°´Â ÇÚµé·ÎºÎÅÍ »ý¼ºµÇ¾ú´Ù¸é, ÆÄÀÌÇÁÀÇ ³»ºÎ ¹öÆÛ¿¡¼­ ÇöÀç »ç¿ë°¡´ÉÇÑ ˆÔÀÇ µ¥ÀÌÅ͸¦ µ¹·ÁÁÙ ¼ö ÀÖÁö¸¸, ÀÌ ÇàÀ§´Â º¸ÁõÇÏÁö ¾Ê½À´Ï´Ù.

+ +

AtEOF

+
IsAtEOF := File.AtEOF
+ + +
ReturnsÆÄÀÏ Æ÷ÀÎÅÍ°¡ ÆÄÀÏÀÇ ³¡¿¡ µµ´ÞÇϸé 0 ¾Æ´Ñ °ªÀ», ±×·¸Áö ¾ÊÀ¸¸é 0À» µ¹·ÁÁÝ´Ï´Ù.
+

+ÀÌ Æ¯¼ºÀº ½ÇÁ¦ ÆÄÀÏ¿¡¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ÄÜ¼Ö ¹öÆÛ³ª ÆÄÀÌÇÁ °°Àº Æ÷ÀÎÅÍ-À̵¿ ¾ø´Â ÀåÄ¡¸¦ °¡¸®Å°´Â ÇÚµé·ÎºÎÅÍ ÆÄÀÏ °´Ã¼°¡ »ý¼ºµÇ¾ú´Ù¸é, ¹Ýȯ °ªÀº Àǹ̰¡ ¾ø½À´Ï´Ù. ±×·± ÀåÄ¡´Â ³í¸®ÀûÀ¸·Î "ÆÄÀÏ ³¡"ÀÌ ¾ø±â ¶§¹®ÀÔ´Ï´Ù.

+ +

Close

+

ÆÄÀÏÀ» ´Ý½À´Ï´Ù. ij½¬¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ µð½ºÅ©·Î ºñ¿ó´Ï´Ù. °øÀ¯ Àá±ÝÀ» ÇØÁ¦ÇÕ´Ï´Ù. °´Ã¼°¡ ÇØÁ¦µÇ¸é ÀÚµ¿À¸·Î ÆÄÀÏÀÌ ´ÝÈ÷Áö¸¸, °¡´ÉÇÏ¸é »¡¸® ´Ý±â¸¦ ±ÇÀåÇÕ´Ï´Ù.

+
File.Close()
+

¸Å°³º¯¼öµµ ¾ø°í ¹Ýȯ °ªµµ ¾ø½À´Ï´Ù.

+ +

Encoding

+

ÀÌ ÆÄÀÏ °´Ã¼°¡ »ç¿ëÇÏ´Â ÅؽºÆ® ÀÎÄÚµùÀ» ¿­¶÷Çϰųª ¼³Á¤ÇÕ´Ï´Ù.

+
Encoding := File.Encoding
+File.Encoding := Encoding
+ + +
Encoding¼ýÀÚ ÄÚµå ÆäÀÌÁö ½Äº°ÀÚ (MSDN ÂüÁ¶) ¶Ç´Â ´ÙÀ½ ¹®ÀÚ¿­ Áß Çϳª:
+
    +
  • UTF-8: Unicode UTF-8, CP65001¿Í µ¿µîÇÔ.
  • +
  • UTF-16: Unicode UTF-16 ÀÛÀº °ª Á¾·áÇü ¹ÙÀÌÆ® ¼ø¼­r, CP1200¿Í µ¿µîÇÔ.
  • +
  • CPnnn: ¼ýÄ¡ ½Äº°ÀÚ nnn¸¦ °¡Áø ÄÚµå ÆäÀÌÁö.
  • +
+

ÀÎÄÚµùÀº -RAW Á¢¹Ì»ç¸¦ ºÙÀÌ¸é °ªÀ» µ¹·ÁÁÖÁö ¾Ê½À´Ï´Ù. ÆÄÀÏÀÌ ¾î¶»°Ô ¿­·ÈµçÁö ¶Ç´Â ¾È¿¡ ¹ÙÀÌÆ® ¼ø¼­ Ç¥½Ä (BOM)ÀÌ µé¾î ÀÖµç ¸»µç »ó°üÇÏÁö ¾Ê½À´Ï´Ù. ÀÎÄÚµù ¼³Á¤¸¸À¸·Î BOMÀÌ ºÙ°Å³ª Á¦°ÅµÇÁö ¾Ê½À´Ï´Ù. BOMÀº º¸Åë óÀ½ ÆÄÀÏÀÌ »ý¼ºµÉ ¶§ ¾º¿©Áý´Ï´Ù.

+

+ v1.1.15.04+¿¡¼­, ÀÎÄÚµùÀ» UTF-8-RAWÀ̳ª UTF-16-RAWÀ¸·Î ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª -RAW Á¢¹Ì»ç´Â ¹«½ÃµË´Ï´Ù. ÀÌÀü ¹öÀü¿¡¼­, UTF-8-RAW¿Í UTF-16-RAWÀº ¹«È¿ÇÑ 8-ºñÆ® ÀÎÄÚµùó·³ ÇàÀ§ÇϹǷÎ, ¸ðµç ºñ-ASCII ¹®ÀÚµéÀÌ Æó±âµË´Ï´Ù. ÀÌ°ÍÀº ¿ÀÁ÷ File.Encoding¿¡¸¸ Àû¿ëµÇÁö, FileOpen()¿¡´Â Àû¿ëµÇÁö ¾Ê½À´Ï´Ù.

+
+ +

__Handle

+
File.__Handle
+ + +
Returns½Ã½ºÅÛ ÆÄÀÏ ÇÚµé, DllCall°ú ÇÔ²² »ç¿ëÇÏ´Â °ÍÀÌ ¸ñÀûÀÔ´Ï´Ù. CreateFileÀ» ÂüÁ¶ÇϽʽÿÀ.
+

+ÆÄÀÏ °´Ã¼´Â ³»ºÎÀûÀ¸·Î Àбâ¿Í ¾²±â¸¦ ¹öÆÛ Ã³¸®ÇÕ´Ï´Ù. µ¥ÀÌÅÍ°¡ °´Ã¼ÀÇ ³»ºÎ ¹öÆÛ¿¡ ¾º¿©Á³´Ù¸é, ÇÚµéÀ» ¹ÝȯÇϱâ Àü¿¡ µð½ºÅ©¿¡ ½á¾ß ÇÕ´Ï´Ù. ¹öÆÛ¿¡ ÆÄÀϷκÎÅÍ ÀÐÀº µ¥ÀÌÅÍ°¡ µé¾î ÀÖ´Ù¸é, ±× µ¥ÀÌÅÍ´Â Æó±âµÇ°í File.Pos°¡ °¡¸®Å°´Â ½ÇÁ¦ ÆÄÀÏ Æ÷ÀÎÅÍ´Â ³í¸® À§Ä¡·Î Àç¼³Á¤µË´Ï´Ù.

+ + + diff --git a/src/docs/objects/Func.htm b/src/docs/objects/Func.htm new file mode 100644 index 0000000..87c88c1 --- /dev/null +++ b/src/docs/objects/Func.htm @@ -0,0 +1,87 @@ + + +Func Object + + + + + + + +

Func Object [v1.1.00+]

+ +

½ºÅ©¸³Æ®°¡ È£ÃâÇÒ ¼ö ÀÖ´Â »ç¿ëÀÚ-Á¤ÀÇ ÇÔ¼ö³ª ³»Àå ÇÔ¼ö¸¦ °¡¸®Åµ´Ï´Ù.

+ +

ÇÔ¼öó·³ È£ÃâÇÒ ¼ö ÀÖ´Â ´Ù¸¥ °´Ã¼¿¡ °üÇÑ Á¤º¸´Â ÇÔ¼ö °´Ã¼¸¦ ÂüÁ¶ÇÕ´Ï´Ù.

+ +

ÇÔ¼ö °´Ã¼¸¦ °¡¸®Å°´Â ÂüÁ¶´Â ÇÔ¼ö ÂüÁ¶·Î ¾Ë·ÁÁ® ÀÖ½À´Ï´Ù. ÇÔ¼ö ÂüÁ¶¸¦ ¿­¶÷ÇÏ·Á¸é, ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ÇÔ¼ö °´Ã¼¸¦ »ç¿ëÇϽʽÿÀ:

+
; "StrLen"À̶ó´Â À̸§ÀÇ ÇÔ¼ö¸¦ °¡¸®Å°´Â ÂüÁ¶¸¦ ¿­¶÷ÇÕ´Ï´Ù.
+fn := Func("StrLen")
+
+; ÇÔ¼ö¿¡ °üÇÑ Á¤º¸¸¦ º¸¿©ÁÝ´Ï´Ù.
+MsgBox % fn.Name "() is " (fn.IsBuiltIn ? "built-in." : "user-defined.")
+
+ +

Call

+

ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù.

+
Func.Call(Parameters)  ; v1.1.19+
+Func.(Parameters)  ; ¿¹Àü Çü½Ä - ºñÃßõ
+

+¸Å°³º¯¼ö¿Í ¹Ýȯ °ªÀº ÇÔ¼ö°¡ Á¤ÀÇÇÕ´Ï´Ù.

+

[v1.1.07+]: %Func%()¸¦ »ç¿ëÇϸé À̸§À̳ª ÂüÁ¶·Î ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶Ç´Â __Call ¸ÞŸ-ÇÔ¼ö¸¦ ±¸ÇöÇÑ °´Ã¼¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. °¡´ÉÇϸé Func.() ´ë½Å¿¡ ÀÌ°ÍÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

+
+ +

Bind [v1.1.20+]

+

¸Å°³º¯¼ö¸¦ ÇÔ¼ö¿¡ ¹­°í BoundFunc °´Ã¼¸¦ µ¹·ÁÁÝ´Ï´Ù.

+
BoundFunc := Func.Bind(Parameters)
+

Parameters´Â °³¼ö¿¡ »ó°üÀÌ ¾ø½À´Ï´Ù.

+

ÀÚ¼¼ÇÑ Á¤º¸¿Í ¿¹Á¦´Â BoundFunc °´Ã¼¸¦ ÂüÁ¶ÇϽʽÿÀ.

+
+ +

Name

+

ÇÔ¼öÀÇ À̸§À» µ¹·ÁÁÝ´Ï´Ù.

+
Func.Name
+
+ +

IsBuiltIn

+

ÇÔ¼ö°¡ ³»Àå ÇÔ¼öÀ̸é Âü(true)À» µ¹·ÁÁÖ°í ±×·¸Áö ¾ÊÀ¸¸é °ÅÁþ(false)À» µ¹·ÁÁÝ´Ï´Ù.

+
Func.IsBuiltIn
+
+ +

IsVariadic

+

ÇÔ¼ö°¡ °¡º¯ ÇÔ¼öÀ̸é Âü(true)À» µ¹·ÁÁÖ°í ±×·¸Áö ¾ÊÀ¸¸é °ÅÁþ(false)À» µ¹·ÁÁÝ´Ï´Ù.

+
Func.IsVariadic
+
+ +

MinParams

+

Çʼö ¸Å°³º¯¼öÀÇ °³¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.

+
Func.MinParams
+
+ +

MaxParams

+

»ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö¿¡ °ø½ÄÀûÀ¸·Î-¼±¾ðµÈ ¸Å°³º¯¼öÀÇ °³¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. ¶Ç´Â ³»Àå ÇÔ¼öÀÇ ÃÖ´ë ¸Å°³º¯¼ö °³¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.

+
Func.MaxParams
+

+ÇÔ¼ö°¡ °¡º¯ ÇÔ¼öÀ̸é, ¹Ýȯ °ªÀº "variadic*" ¸Å°³º¯¼ö·Î Èê·¯ ³ÑÄ¡Áö ¾Ê°í ÇÔ¼ö°¡ ¹Þ¾Æ µéÀÏ ¼ö ÀÖ´Â ¸Å°³º¯¼öÀÇ ÃÖ´ë °³¼ö¸¦ ³ªÅ¸³À´Ï´Ù.

+ +

IsByRef()

+

¸Å°³º¯¼ö°¡ ByRefÀÎÁö °áÁ¤ÇÕ´Ï´Ù.

+
Func.IsByRef(ParamIndex)
+ + + +
ParamIndex¼±ÅÃÀûÀÔ´Ï´Ù: ¸Å°³º¯¼öÀÇ 1 ±â¹Ý-À妽º. »ý·«µÇ¸é, ¹Ýȯ °ªÀº ÇÔ¼ö¿¡ ByRef ¸Å°³º¯¼ö°¡ ÀÖ´ÂÁö ¾Ë·ÁÁÝ´Ï´Ù.
ReturnsÇÔ¼ö°¡ ³»Àå ÇÔ¼öÀ̰ųª ParamIndex°¡ À¯È¿ÇÏÁö ¾ÊÀ¸¸é ºó ¹®ÀÚ¿­À» µ¹·ÁÁÝ´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é, ¸Å°³º¯¼ö°¡ ByRefÀÎÁö ³ªÅ¸³»´Â ºÒ¸®¾ð °ªÀ» µ¹·ÁÁÝ´Ï´Ù.
+
+ +

IsOptional()

+

¸Å°³º¯¼ö°¡ ¼±ÅÃÀûÀÎÁö °áÁ¤ÇÕ´Ï´Ù.

+
Func.IsOptional(ParamIndex)
+ + + +
ParamIndex¼±ÅÃÀû: ¸Å°³º¯¼öÀÇ 1-±â¹Ý À妽º. »ý·«µÇ¸é, ¹Ýȯ °ªÀº ÇÔ¼ö¿¡ ¼±ÅÃÀû ¸Å°³º¯¼ö°¡ ÀÖ´ÂÁö ¾Ë·ÁÁÝ´Ï´Ù.
ReturnsParamIndex°¡ À¯È¿ÇÏÁö ¾ÊÀ¸¸é ºó ¹®ÀÚ¿­À» µ¹·ÁÁÖ°í; ±×·¸Áö ¾ÊÀ¸¸é, ¸Å°³º¯¼ö°¡ ¼±ÅÃÀûÀÎÁö ¾Ë·ÁÁÖ´Â ºÒ¸®¾ð °ªÀ» µ¹·ÁÁÝ´Ï´Ù.
+

+°¡º¯ ÇÔ¼öÀÎ °æ¿ì ¸Å°³º¯¼ö´Â °ø½ÄÀûÀ¸·Î ¼±¾ðÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ³»Àå ÇÔ¼ö¸¦ Áö¿øÇÕ´Ï´Ù.

+ + + diff --git a/src/docs/objects/Functor.htm b/src/docs/objects/Functor.htm new file mode 100644 index 0000000..8f4134d --- /dev/null +++ b/src/docs/objects/Functor.htm @@ -0,0 +1,83 @@ + + +Function Objects + + + + + + + +

ÇÔ¼ö °´Ã¼

+ +

"ÇÔ¼ö °´Ã¼"´Â º¸Åë ´ÙÀ½À» ¶æÇÕ´Ï´Ù:

+
    +
  • Func object¸¦ °¡¸®Å°´Â ÂüÁ¶ ÁÖ¼Ò. ½ÇÁ¦ ÇÔ¼ö¸¦ °¡¸®Åµ´Ï´Ù; ³»Àå ÇÔ¼ö ¶Ç´Â ½ºÅ©¸³Æ®¿¡ Á¤ÀÇµÈ ÇÔ¼ö.
  • +
  • ÇÔ¼öó·³ È£ÃâÇÒ ¼ö ÀÖ´Â »ç¿ëÀÚ-Á¤ÀÇ °´Ã¼. ÀÌ´Â Á¾Á¾ "functor"¶ó°í ÁöĪµÇ±âµµ ÇÕ´Ï´Ù.
  • +
  • ÇÔ¼öó·³ È£ÃâÇÒ ¼ö ÀÖ´Â ´Ù¸¥ °´Ã¼. ¿¹¸¦ µé¾î COM ¸Þ½îµå°¡ ¹ÝȯÇÏ´Â BoundFunc object ¶Ç´Â JavaScript ÇÔ¼ö °´Ã¼.
  • +
+

ÇÔ¼ö °´Ã¼´Â ´ÙÀ½°ú ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:

+ + +

»ç¿ëÀÚ-Á¤ÀÇ ÇÔ¼ö

+ +

+»ç¿ëÀÚ-Á¤ÀÇ ÇÔ¼ö °´Ã¼´Â ´ÙÀ½ ÀÏ¹Ý ÆÐÅÏÀ» µû¶ó¾ß ÇÕ´Ï´Ù:

+
class YourClassName {
+    Call(a, b) {  ; ÇÊ¿äÇÑ ¸¸Å­ ¸Å°³º¯¼ö¸¦ ¼±¾ðÇϰųª, array*¸¦ ¼±¾ðÇÕ´Ï´Ù.
+        ;...
+    }
+    __Call(method, args*) {
+        if (method = "")  ; For %fn%() or fn.()
+            return this.Call(args*)
+        if (IsObject(method))  ; ÀÌ ÇÔ¼ö °´Ã¼°¡ ¸Þ½îµå·Î »ç¿ëµÇ¸é.
+            return this.Call(method, args*)
+    }
+    ;...
+}
+
+

Á¤È®ÇÏ°Ô ¾î´À ºÎºÐÀÌ ÇÊ¿äÇÑÁö´Â »ç¿ë¹ý¿¡ µû¶ó ´Ù¸¨´Ï´Ù:

+
    +
  • ½ºÅ©¸³Æ®°¡ %this%()³ª this.()¸¦ »ç¿ëÇß´Ù¸é method´Â ºó ¹®ÀÚ¿­ÀÔ´Ï´Ù.
  • +
  • ÀÌ ÇÔ¼ö °´Ã¼°¡ ¸Þ½îµå·Î »ç¿ëÁßÀ̶ó¸é, IsObject(method)´Â ÂüÀÌ°í method¿¡´Â ¸ñÇ¥ °´Ã¼¸¦ °¡¸®Å°´Â ÂüÁ¶ ÁÖ¼Ò°¡ ´ã±é´Ï´Ù. ¿¹¸¦ µé¾î, x.y°¡ this ÇÔ¼ö °´Ã¼¸¦ °¡¸®Å°¸é, x.y()this[x]()this.__Call(x)this.Call(x).
  • +
  • [v1.1.20+]: OnMessage³ª SetTimer¿Í °°ÀÌ ¿ªÈ£Ãâ ÇÔ¼ö¸¦ ¹Þ´Â ³»Àå ÇÔ¼ö Áß Çϳª°¡ ÀÌ ÇÔ¼ö °´Ã¼¸¦ »ç¿ëÁßÀ̸é, Call ¸Þ½îµå¸¸ ÇÊ¿äÇÕ´Ï´Ù.
  • +
+

+ __CallÀ¸·Î Á÷Á¢ °°Àº ÀÏÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, __CallÀ» Call·Î ¹æÇâÀüȯÇϱ⸦ ±ÇÀåÇÕ´Ï´Ù. ½±°Ô AutoHotkey v2·Î ÀÌÀüÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿ÀÅäÇÖÅ° v2¿¡¼­ %this%()ÀÇ ÇàÀ§¿Í ¸Þ½îµå È£ÃâÀº Á÷Á¢ÀûÀ¸·Î Call ¸Þ½îµå¸¦ È£ÃâÇϵµ·Ï º¯°æµÇ¾ú½À´Ï´Ù.

+ +

BoundFunc Object [v1.1.20+]

+

+ÇÔ¼öó·³ ÇàÀ§ÇÕ´Ï´Ù. ±×·¯³ª ±×Àú ¹Ì¸® Á¤ÀÇµÈ ¸Å°³º¯¼ö¸¦ ´Ù¸¥ ÇÔ¼ö·Î °Ç³×´Â ¿ªÇÒ¸¸ ÇÕ´Ï´Ù.

+

+µÎ °¡Áö ¹æ¹ýÀ¸·Î BoundFunc °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù:

+
    +
  • Func.Bind() ¸Þ½îµå¸¦ È£ÃâÇϸé, ¸Å°³º¯¼ö °ªÀ» ÇÔ¼ö¿¡ ¹­½À´Ï´Ù.
  • +
  • ObjBindMethod()¸¦ È£ÃâÇϸé, ¸Å°³º¯¼ö °ª°ú ¸Þ½îµå À̸§À» ¸ñÇ¥ °´Ã¼¿¡ ¹­½À´Ï´Ù.
  • +
+

+BoundFunc °´Ã¼´Â ¾Æ·¡ ¿¹Á¦¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¸Þ½îµå´Â Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. BoundFunc°¡ È£ÃâµÉ ¶§, ±×¿¡ ¹­ÀÎ ÇÔ¼ö³ª ¸Þ½îµå¸¦ È£ÃâÇϸ鼭, ¹­ÀÎ ¸Å°³º¯¼ö¿Í ±×¸®°í È£ÃâÀÚ°¡ °Ç³Ù °ÍÀ» ¸ðµÎ °Ç³Ü´Ï´Ù. ¿¹¸¦ µé¾î:

+
fn := Func("RealFn").Bind(1)
+
+%fn%(2)    ; Shows "1, 2"
+fn.Call(3) ; Shows "1, 3"
+
+RealFn(a, b) {
+    MsgBox %a%, %b%
+}
+

+ObjBindMethod()¸¦ »ç¿ëÇÏ¸é ¸Þ½îµå ÀÚü¸¦ °¡¸®Å°´Â ÂüÁ¶ ÁÖ¼Ò¸¦ ¿­¶÷ÇÒ ¼ö ¾øÀ» ¶§ ¸Þ½îµå¿¡ ¹­À» ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:

+ +
file := FileOpen(A_ScriptFullPath, "r")
+getLine := ObjBindMethod(file, "ReadLine")
+MsgBox % %getLine%()  ; ÀÌ ÆÄÀÏÀÇ Ã¹ ÁÙÀ» º¸¿©ÁÝ´Ï´Ù.
+ + + diff --git a/src/docs/objects/Object.htm b/src/docs/objects/Object.htm new file mode 100644 index 0000000..0db7a15 --- /dev/null +++ b/src/docs/objects/Object.htm @@ -0,0 +1,249 @@ + + +Object + + + + + + + +

°´Ã¼

+ +

¿ÀÅäÇÖÅ°ÀÇ ±âº» °´Ã¼ µ¥ÀÌÅÍÀ¯ÇüÀº ¿¬°ü ¹è¿­ÀÔ´Ï´Ù. ±×ÀÇ ÇàÀ§¸¦ Àç´ÜÇÒ ¼ö Àִ Ư¡ÀÌ ÀÖ½À´Ï´Ù. ±âº»°ªÀ¸·Î, {}, [], Object() ±×¸®°í Array()°¡ »ý¼ºÇÑ ¸ðµç °´Ã¼´Â ´ÙÀ½ ¸Þ½îµå¸¦ Áö¿øÇÕ´Ï´Ù:

+ +

ºñÃßõ (»ç¿ëÀ» ±ÇÀåÇÏÁö ¾Ê½À´Ï´Ù):

+ +

+°¢ ¸Þ½îµå ¸¶´Ù µ¿µîÇÑ ÇÔ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é ´Ù¸¥ °´Ã¼°¡ ±¸ÇöÇÑ ¸ÂÃã ÇàÀ§¸¦ ¿ìȸÇÒ ¼ö ÀÖ½À´Ï´Ù -- ÀÌ ÇÔ¼öµéÀº ²À ¿ìȸÀÇ ¸ñÀûÀ¸·Î¸¸ »ç¿ëÇϽñ⸦ ±ÇÀåÇÕ´Ï´Ù. È£ÃâÇÏ·Á¸é, ¸Þ½îµå À̸§ ¾Õ¿¡ "Obj"¸¦ ºÙÀÎ ´ÙÀ½ ¸ñÇ¥ °´Ã¼¸¦ ù ¹ø° ¸Å°³º¯¼ö·Î °Ç³×½Ê½Ã¿À. ¿¹¸¦ µé¾î:

+
array := [1, 2, 3]
+MsgBox % ObjMaxIndex(array) " = " array.MaxIndex()
+

+Obj ÇÔ¼ö°¡ À߸øµÈ À¯ÇüÀÇ °´Ã¼ ¶Ç´Â °ªÀ¸·Î È£ÃâµÇ¸é, ºó ¹®ÀÚ¿­À» µ¹·ÁÁÝ´Ï´Ù.

+  + +

InsertAt [v1.1.21+]

+

+Çϳª ÀÌ»óÀÇ °ªÀ» ¼±Çü ¹è¿­ ¾È¿¡ ÁÖ¾îÁø À§Ä¡¿¡ »ðÀÔÇÕ´Ï´Ù..

+
Object.InsertAt(Pos, Value1 [, Value2, ... ValueN])
+
+
Pos
+

Value1À» »ðÀÔÇÒ À§Ä¡. ¿¬ÀÌÀº °ªÀº Pos+1, Pos+2, µîµî¿¡ »ðÀԵ˴ϴÙ.

+
Value1 ...
+

»ðÀÔÇÒ Çϳª ÀÌ»óÀÇ °ªµé. °ª ¹è¿­À» »ðÀÔÇÏ·Á¸é, ¸¶Áö¸· ¸Å°³º¯¼ö·Î theArray*¸¦ °Ç³×½Ê½Ã¿À.

+
+

³íÆò

+

+InsertAtÀº RemoveAt°ú »ó´ëÀûÀÔ´Ï´Ù.

+

+°´Ã¼´Â ¿¬°ü ¹è¿­À̹ǷÎ, Posµµ Value1 °ª°ú ¿¬°üµÇ´Â Á¤¼ö Å°ÀÔ´Ï´Ù. ÀÌÀü¿¡ Pos À§Ä¡¿Í ±× ¿À¸¥ÂÊ¿¡ ÀÖ´Â Ç׸ñµéÀº Á¤È®ÇÏ°Ô ¸Å°³º¯¼öÀÇ °¹¼ö¸¸Å­ ¿À¸¥ÂÊÀ¸·Î À̵¿ÇÕ´Ï´Ù. ±× °á°ú ¸î¸î °ªµéÀÌ ¼Ò½ÇµÉ ¼ö ÀÖ½À´Ï´Ù (Áï, ÀÌ °´Ã¼´Â Èñ¼Ò ¹è¿­ÀÔ´Ï´Ù). ¿¹¸¦ µé¾î:

+
x := []
+x.InsertAt(1, "A", "B") ; =>  ["A", "B"]
+x.InsertAt(2, "C")      ; =>  ["A", "C", "B"]
+
+; ¼º±ä/ÇÒ´çµÇÁö ¾ÊÀº ¿ø¼Ò´Â º¸Á¸µË´Ï´Ù:
+x := ["A", , "C"]
+x.InsertAt(2, "B")      ; =>  ["A", "B",    , "C"]
+
+x := ["C"]
+x.InsertAt(1, , "B")    ; =>  [   , "B", "C"]
+

+InsertAtÀº °´Ã¼ÀÇ Á¤¼ö Å°°¡ ¼±Çü ¹è¿­ ¾ÈÀÇ À§Ä¡¸¦ ³ªÅ¸³»´Â °æ¿ì¿¡¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ±× °´Ã¼¿¡ ID³ª ÇÚµé °°ÀÌ ÀÓÀÇÀÇ Á¤¼ö Å°°¡ ´ã°Ü ÀÖ¸é, InsertAtÀº ¿øÄ¡ ¾ÊÀº ºÎÀÛ¿ëÀ» ¾ß±âÇÒ °¡´É¼ºÀÌ ³ô½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
x := [], handleX := 0x4321, handleY := 0x1234
+x.InsertAt(handleX, "A")
+MsgBox % x[handleX]  ; A - okay
+x.InsertAt(handleY, "B")
+MsgBox % x[handleX]  ; ºñ¾î ÀÖ½À´Ï´Ù
+MsgBox % x[handleX+1]  ; ÀÌ°÷ÀÌ "B"ÀÇ »õ "À§Ä¡"ÀÔ´Ï´Ù.
+

+InsertAtÀº ¹®ÀÚ¿­À̳ª °´Ã¼ Å°¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù. ±×·¡¼­ È¥ÇÕ Å° À¯ÇüÀÌ ´ã±ä °´Ã¼¿Í ¾ÈÀüÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+
+ +

RemoveAt [v1.1.21+]

+

¼±Çü ¹è¿­¿¡¼­ ÁÖ¾îÁø À§Ä¡·ÎºÎÅÍ Ç׸ñÀ» Á¦°ÅÇÕ´Ï´Ù.

+
Object.RemoveAt(Pos [, Length])
+
+
Pos
+

Á¦°ÅÇÒ °ªÀÇ À§Ä¡.

+ +
Length
+

Á¦°ÅÇÒ °ªÀÇ ¹üÀ§ÀÇ ±æÀÌ. PosºÎÅÍ Pos+Length-1±îÁöÀÇ Ç׸ñÀÌ Á¦°ÅµË´Ï´Ù. »ý·«Çϸé, ÇϳªÀÇ Ç׸ñ¸¸ Á¦°ÅµË´Ï´Ù.

+ +
Return Value
+

¸¸¾à Length°¡ »ý·«µÇ¸é, PosÀ¸·Î Á¦°ÅµÈ °ªÀÌ ¹ÝȯµË´Ï´Ù (¾øÀ¸¸é ºñ¾î ÀÖ½À´Ï´Ù). ±×·¸Áö ¾ÊÀ¸¸é, ¹Ýȯ °ªÀº °ªÀ» °¡Áø Ç׸ñÀÌ Á¦°ÅµÈ °³¼öÀÔ´Ï´Ù. ÀÌ°ÍÀº Èñ¼Ò ¹è¿­ÀÇ Length¿Í ´Ù¸£Áö¸¸, ¾ðÁ¦³ª 0ºÎÅÍLength (Æ÷ÇÔ) »çÀÌÀÔ´Ï´Ù.

+
+

Remarks

+

+RemoveAtÀº InsertAt¿¡ »ó´ëÀûÀÔ´Ï´Ù.

+

+Pos ¿À¸¥ÂÊÀÇ ³ª¸ÓÁö Ç׸ñµéÀº ¿ÞÂÊÀ¸·Î Length ¸¸Å­ (¶Ç´Â »ý·«µÇ¸é 1¸¸Å­) À̵¿ÇÕ´Ï´Ù. Á¦°ÅµÈ ¹üÀ§¿¡¼­ ¾î¶² Ç׸ñµéÀº °ªÀÌ ¾ø´õ¶óµµ »ó°üÀÌ ¾ø½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
x := ["A", "B"]
+MsgBox % x.RemoveAt(1)  ; A
+MsgBox % x[1]           ; B
+
+x := ["A", , "C"]
+MsgBox % x.RemoveAt(1, 2)  ; 1
+MsgBox % x[1]              ; C
+

+RemoveAtÀº ±× °´Ã¼ÀÇ Á¤¼ö Å°°¡ ¼±Çü ¹è¿­¿¡¼­ À§Ä¡¸¦ ³ªÅ¸³¾ °æ¿ì¿¡¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ±× °´Ã¼ ¾È¿¡ ID³ª ÇÚµé °°ÀÌ ÀÓÀÇÀÇ Á¤¼öÅ°°¡ ÀÖ´Ù¸é, RemoveAtÀº ¿øÇÏÁö ¾Ê´Â ºÎÀÛ¿ëÀ» ¾ß±âÇÒ °¡´É¼ºÀÌ ³ô½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
x := {0x4321: "A", 0x1234: "B"}
+MsgBox % x.RemoveAt(0x1234) ; B
+MsgBox % x[0x4321]          ; Empty
+MsgBox % x[0x4321-1]        ; A
+

+RemoveAtÀº ¹®ÀÚ¿­À̳ª °´Ã¼ Å°¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù. ±×·¡¼­ È¥ÇÕ Å° À¯ÇüÀÌ ´ã±ä °´Ã¼¿Í ¾ÈÀüÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+
+ +

Push [v1.1.21+]

+

¹è¿­ÀÇ ³¡¿¡ °ªÀ» Ãß°¡ÇÕ´Ï´Ù.

+
Object.Push([ Value, Value2, ..., ValueN ])
+
+
Value ...
+

»ðÀÔÇÒ Çϳª ÀÌ»óÀÇ °ª. °ª ¹è¿­À» »ðÀÔÇÏ·Á¸é, ¸¶Áö¸· ¸Å°³º¯¼ö·Î theArray*¸¦ °Ç³×½Ê½Ã¿À.

+
Return Value
+
+

°¡Àå ¸¶Áö¸·À¸·Î »ðÀÔµÈ °ªÀÇ À§Ä¡, ¹è¿­ÀÌ À½¼ö ÁöÇ¥¿¡ ¿ø¼Ò¸¦ °¡Áö°í ÀÖ´Ù¸é À½ÀÇ Á¤¼öÀÏ ¼ö ÀÖ½À´Ï´Ù.

+
+

Remarks

+

+¹è¿­ÀÌ ºñ¾î ÀÖ°Å ¶Ç´Â ¿ÀÁ÷ ¹®ÀÚ¿­À̳ª °´Ã¼ Å°¸¸ ´ã°Ü ÀÖ´Ù¸é ù ¹ø° °ªÀº À§Ä¡ 1¿¡ »ðÀԵ˴ϴÙ.

+

+±×·¸Áö ¾ÊÀ¸¸é, ù ¹ø° °ªÀº Object.MaxIndex() + 1¿¡ »ðÀԵ˴ϴÙ. ±× À§Ä¡°¡ À½¼ö ¶Ç´Â 0ÀÌ¶óµµ »ó°ü¾ø½À´Ï´Ù. ÀÌ À§Ä¡°¡ ¸¶À½¿¡ ¾Èµé°í °´Ã¼¿¡ À½¼ö Å°°¡ µé¾î ÀÖÀ» ¼ö ÀÖ´Ù¸é, ´ë½Å¿¡ Object.InsertAt(Object.Length() + 1, ...)¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

+
+ +

Pop [v1.1.21+]

+

¸¶Áö¸· ¹è¿­ ¿ø¼Ò¸¦ Á¦°ÅÇÏ°í µ¹·ÁÁÝ´Ï´Ù.

+
Value := Object.Pop()
+

+¹è¿­ ¿ø¼Ò°¡ ¾ø´Ù¸é, ¹Ýȯ °ªÀº ºó ¹®ÀÚ¿­ÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ´ÙÀ½°ú µ¿µîÇÕ´Ï´Ù:

+
Value := Object.RemoveAt(Object.Length())
+
+ +

Delete [v1.1.21+]

+

Å°-°ª ½ÖÀ» °´Ã¼·ÎºÎÅÍ Á¦°ÅÇÕ´Ï´Ù.

+
Object.Delete(Key)
+Object.Delete(FirstKey, LastKey)
+
+
Key
+

Any single key.

+
FirstKey, LastKey
+

À¯È¿ÇÑ ¹üÀ§ÀÇ Á¤¼ö³ª ¹®ÀÚÅ°. FirstKey <= LastKey. µÎ Å° ¸ðµÎ À¯ÇüÀÌ °°¾Æ¾ß ÇÕ´Ï´Ù.

+
Return Value
+

Á¤È®ÇÏ°Ô ¸Å°³º¯¼ö°¡ Çϳª¸¸ ÀÖ´Ù¸é, Á¦°ÅµÈ °ªÀÌ ¹ÝȯµË´Ï´Ù (¾ø´Ù¸é ºñ¾î ºó °ªÀ» µ¹·ÁÁÝ´Ï´Ù). ±×·¸Áö ¾ÊÀ¸¸é ¹Ýȯ °ªÀº ¹ß°ßµÇ°Å³ª Á¦°ÅµÈ Å°ÀÇ °³¼öÀÔ´Ï´Ù.

+
+

Remarks

+

+RemoveAt¿Í ´Ù¸£°Ô, Delete´Â Á¦°ÅÇÏÁö ¾ÊÀº Å°-°ª ½Ö¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î:

+
x := ["A", "B"]
+MsgBox % x.RemoveAt(1)  ; A
+MsgBox % x[1]           ; B
+
+x := ["A", "B"]
+MsgBox % x.Delete(1)    ; A
+MsgBox % x[1]           ; Empty
+
+ +

MinIndex / MaxIndex [AHK_L 31+]

+
MinIndex := Object.MinIndex()
+MaxIndex := Object.MaxIndex()
+

+Á¤¼ö Å°°¡ Á¸ÀçÇϸé, MinIndex´Â °¡Àå ³·Àº °ªÀ» µ¹·ÁÁÖ°í MaxIndex´Â °¡Àå ³ôÀº °ªÀ» µ¹·ÁÁÝ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ºó ¹®ÀÚ¿­À» µ¹·ÁÁÝ´Ï´Ù.

+ +

Length [v1.1.21+]

+
Length := Object.Length()
+

+À§Ä¡ 1¿¡¼­ ½ÃÀÛÇÏ¿© ¼±Çü ¹è¿­ÀÇ ±æÀ̸¦ µ¹·ÁÁÝ´Ï´Ù; Áï, °´Ã¼ ¾È¿¡¼­ °¡Àå ³ôÀº ¾çÀÇ Á¤¼ö Å°¸¦ µ¹·ÁÁÖ°í, ±×°Ô ¾ø´Ù¸é 0À» µ¹·ÁÁÝ´Ï´Ù.

+
+MsgBox % ["A", "B", "C"].Length()  ;  3
+MsgBox % ["A",    , "C"].Length()  ;  3
+MsgBox % {-10: 0, 10: 0}.Length()  ; 10
+MsgBox % {-10: 0, -1: 0}.Length()  ;  0
+
+ +

SetCapacity [AHK_L 31+]

+

°´Ã¼ÀÇ ¶Ç´Â °´Ã¼ ÇʵåÀÇ °¡¿ë ´É·ÂÀ» Á¶Á¤ÇÕ´Ï´Ù.

+
Object.SetCapacity(MaxItems)
+Object.SetCapacity(Key, ByteSize)
+ + + + + + +
MaxItems°´Ã¼°¡ ´ãÀ» ¼ö ÀÖ´ÂÅ°-°ª ½ÖÀÇ ÃÖ´ë °³¼ö. ÀÌ °ªÀ» ³Ñ¾î¼­¸é ÀÚµ¿À¸·Î È®´ëµË´Ï´Ù. Å°-°ª ½ÖÀÇ ÇöÀç °³¼öº¸´Ù ÀÛÀ¸¸é, ´ë½Å¿¡ ÇöÀç °³¼ö°¡ »ç¿ëµÇ°í, »ç¿ëµÇÁö ¾Ê´Â °ø°£Àº ¸ðµÎ ÇØÁ¦µË´Ï´Ù.
KeyÀ¯È¿ÇÑ Å°¸é ¸ðµÎ.
ByteSizeÇʵåÀÇ ¹®ÀÚ¿­ ¹öÆÛÀÇ ¹ÙÀÌÆ® ´ÜÀ§·Î »õ Å©±â. ³Î Á¾·á ¹®ÀÚ´Â Á¦¿ÜÇÕ´Ï´Ù. Çʵ尡 Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, »õ·Î »ý¼ºµË´Ï´Ù. ByteSize°¡ 0À̸é, ¹öÆÛ°¡ ÇØÁ¦µÇÁö¸¸ ºó Çʵå´Â Á¦°ÅµÇÁö ¾Ê½À´Ï´Ù. ByteSize°¡ ÇöÀç Å©±âº¸´Ù ÀÛÀ¸¸é, ÃÊ°úµÈ µ¥ÀÌÅÍ´Â Àß·Á ³ª°©´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é ±âÁ¸ÀÇ ¸ðµç µ¥ÀÌÅÍ°¡ º¸Á¸µË´Ï´Ù.
Returns¼º°øÇÏ¸é »õ °¡¿ë ´É·Â, ±×·¸Áö ¾ÊÀ¸¸é ºó ¹®ÀÚ¿­À» µ¹·ÁÁÝ´Ï´Ù.
+ +

GetCapacity [AHK_L 31+]

+
MaxItems := Object.GetCapacity()
+ByteSize := Object.GetCapacity(Key)
+

°´Ã¼³ª °´Ã¼ ÇʵåÀÇ ÇöÀç °¡¿ë ´É·ÂÀ» µ¹·ÁÁÝ´Ï´Ù.

+ +

GetAddress [AHK_L 31+]

+
Ptr := Object.GetAddress(Key)
+

ÀÖ´Ù¸é, ÇʵåÀÇ ¹®ÀÚ¿­ ¹öÆÛÀÇ ÇöÀç ÁÖ¼Ò¸¦ µ¹·ÁÁÝ´Ï´Ù.

+ +

NewEnum [AHK_L 49+]

+
Enum := Object._NewEnum()
+

»õ ¿­°ÅÀÚ(enumerator)¸¦ µ¹·ÁÁÖ¾î ÀÌ °´Ã¼ÀÇ Å°-°ª ½ÖÀ» ¿­°ÅÇÕ´Ï´Ù. ÀÌ ¸Þ½îµå´Â º¸Åë Á÷Á¢ È£ÃâµÇÁö ¾Ê°í, for-ȸµ¹ÀÌ ¾È¿¡¼­ »ç¿ëµË´Ï´Ù.

+ +

HasKey [AHK_L 53+]

+
Object.HasKey(Key)
+

Key°¡ Object¾ÈÀÇ °ª (even "")¿¡ ¿¬°üµÇ¾î ÀÖÀ¸¸é ÂüÀ», ±×·¸Áö ¾ÊÀ¸¸é °ÅÁþÀ» µ¹·ÁÁÝ´Ï´Ù.

+ +

Clone [AHK_L 60+]

+
Clone := Object.Clone()
+

°´Ã¼ÀÇ ¾èÀº »çº»À» µ¹·ÁÁÝ´Ï´Ù.

+ +

ObjRawSet

+

Å°-°ª ½ÖÀ» °´Ã¼¿¡ ÀúÀåÇϰųª µ¤¾î¾¹´Ï´Ù.

+
ObjRawSet(Object, Key, Value)
+

+ÀÌ ÇÔ¼ö·Î ½ºÅ©¸³Æ®´Â __Set ¸ÞŸ-ÇÔ¼ö¸¦ ¿ìȸÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÊ¿äÇÏÁö ¾ÊÀ¸¸é, ´ë½Å¿¡ Á¤»óÀûÀÎ ÇÒ´çÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: Object[Key] := Value

+

+¸ÞŸ-ÇÔ¼ö¸¦ ¿ìȸÇÏ´Â °ÍÀÌ ¸ñÀûÀ̹ǷÎ, ¸Þ½îµå°¡ ¾Æ´Ï¶ó ÇÔ¼öÀÔ´Ï´Ù. ³»Àå ¸Þ½îµå¸¦ È£ÃâÇϸé ÀϹÝÀûÀ¸·Î __Call meta-ÇÔ¼ö°¡ È£ÃâµË´Ï´Ù.

+ +

Insert [AHK_L 31+]

+
ºñÃßõ: Insert´Â »õ ½ºÅ©¸³Æ®¿¡ »ç¿ëÀ» ÃßõÇÏÁö ¾Ê½À´Ï´Ù. ´ë½Å¿¡ InsertAt, Push, ObjRawSet ¶Ç´Â ±×³É ´Ü¼øÇÏ°Ô ÇÒ´çÀ» »ç¿ëÇϽʽÿÀ.
+

+Å°-°ª ½ÖÀ» °´Ã¼¿¡ »ðÀÔÇÕ´Ï´Ù. Á¤¼ö Å°°¡ ÁÖ¾îÁö¸é ÀÚµ¿À¸·Î ±âÁ¸ÀÇ Å°¸¦ Á¶Á¤ÇÕ´Ï´Ù.

+
Object.Insert(Pos, Value1 [, Value2, ... ValueN ])
+Object.Insert(Value)
+Object.Insert(StringOrObjectKey, Value)
+

InsertÀÇ ÇàÀ§´Â ¸Å°³º¯¼öÀÇ °³¼ö ±×¸®°í À¯Çü¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù:

+
    +
  • ¸Å°³º¯¼ö°¡ ¿©·¯ °³ÀÌ°í ù ¸Å°³º¯¼ö°¡ Á¤¼öÀ̸é, Insert´Â InsertAtó·³ ÇàÀ§ÇÕ´Ï´Ù.
  • +
  • ¸Æ°³º¯¼ö°¡ ¿©·¯ °³ÀÌ°í ù ¹è°³º¯¼ö°¡ Á¤¼ö°¡ ¾Æ´Ï¸é, Insert´Â ObjRawSetó·³ ÇàÀ§ÇÕ´Ï´Ù.
  • +
  • ¸Å°³º¯¼ö°¡ Çϳª¸¸ ÀÖÀ¸¸é, Insert´Â Pushó·³ ÇàÀ§ÇÕ´Ï´Ù.
  • +
+

Insert´Â true¸¦ µ¹·ÁÁÝ´Ï´Ù. v1.1.21 ÀÌÈÄ¿¡¼­, ¸Þ¸ð¸® ÇÒ´çÀÌ ½ÇÆÐÇÏ¸é ¿¹¿Ü°¡ ´øÁ®Áý´Ï´Ù. ÀÌÀü ¹öÀü¿¡¼­´Â ±× °æ¿ì ºó ¹®ÀÚ¿­À» µ¹·ÁÁÖ¾ú½À´Ï´Ù.

+
+ +

Remove [AHK_L 31+]

+
ºñÃßõ: Remove´Â »õ ½ºÅ©¸³Æ®¿¡ »ç¿ëÀ» ÃßõÇÏÁö ¾Ê½À´Ï´Ù. ´ë½Å¿¡ RemoveAt, Delete ¶Ç´Â PopÀ» »ç¿ëÇϽʽÿÀ.
+

°´Ã¼·ÎºÎÅÍ Å°-°ª ½ÖÀ» Á¦°ÅÇÕ´Ï´Ù.

+
Object.Remove(FirstKey, LastKey)
+

RemoveÀÇ ÇàÀ§´Â ¸Å°³º¯¼öÀÇ °³¼ö¿Í À¯Çü¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù:

+
    +
  • Object.Remove(Integer)´Â Object.RemoveAt(Integer)ó·³ ÇàÀ§ÇÕ´Ï´Ù.
  • +
  • Object.Remove(Integer, "")´Â Object.Delete(Integer)ó·³ ÇàÀ§ÇÕ´Ï´Ù.
  • +
  • Object.Remove(Integer1, Integer2)´Â Object.RemoveAt(Integer1, Integer2 - Integer1 + 1)ó·³ ÇàÀ§ÇÕ´Ï´Ù.
  • +
  • Object.Remove()´Â Object.Pop()ó·³ ÇàÀ§ÇÕ´Ï´Ù.
  • +
  • ´Ù¸¥ ¸ðµç ¸Å°³º¯¼ö Á¶ÇÕÀº Deleteó·³ ÇàÀ§ÇÕ´Ï´Ù.
  • +
+
+ + + diff --git a/src/docs/scripts/ContextSensitiveHelp.ahk b/src/docs/scripts/ContextSensitiveHelp.ahk new file mode 100644 index 0000000..2e774a2 --- /dev/null +++ b/src/docs/scripts/ContextSensitiveHelp.ahk @@ -0,0 +1,73 @@ +; Context Sensitive Help in Any Editor -- by Rajat +; http://www.autohotkey.com +; This script makes Ctrl+2 (or another hotkey of your choice) show the help file +; page for the selected AutoHotkey command or keyword. If nothing is selected, +; the command name will be extracted from the beginning of the current line. + +; The hotkey below uses the clipboard to provide compatibility with the maximum +; number of editors (since ControlGet doesn't work with most advanced editors). +; It restores the original clipboard contents afterward, but as plain text, +; which seems better than nothing. + +$^2:: +; The following values are in effect only for the duration of this hotkey thread. +; Therefore, there is no need to change them back to their original values +; because that is done automatically when the thread ends: +SetWinDelay 10 +SetKeyDelay 0 +AutoTrim, On + +if A_OSType = WIN32_WINDOWS ; Windows 9x + Sleep, 500 ; Give time for the user to release the key. + +C_ClipboardPrev = %clipboard% +clipboard = +; Use the highlighted word if there is one (since sometimes the user might +; intentionally highlight something that isn't a command): +Send, ^c +ClipWait, 0.1 +if ErrorLevel <> 0 +{ + ; Get the entire line because editors treat cursor navigation keys differently: + Send, {home}+{end}^c + ClipWait, 0.2 + if ErrorLevel <> 0 ; Rare, so no error is reported. + { + clipboard = %C_ClipboardPrev% + return + } +} +C_Cmd = %clipboard% ; This will trim leading and trailing tabs & spaces. +clipboard = %C_ClipboardPrev% ; Restore the original clipboard for the user. +Loop, parse, C_Cmd, %A_Space%`, ; The first space or comma is the end of the command. +{ + C_Cmd = %A_LoopField% + break ; i.e. we only need one interation. +} +IfWinNotExist, AutoHotkey Help +{ + ; Determine AutoHotkey's location: + RegRead, ahk_dir, HKEY_LOCAL_MACHINE, SOFTWARE\AutoHotkey, InstallDir + if ErrorLevel ; Not found, so look for it in some other common locations. + { + if A_AhkPath + SplitPath, A_AhkPath,, ahk_dir + else IfExist ..\..\AutoHotkey.chm + ahk_dir = ..\.. + else IfExist %A_ProgramFiles%\AutoHotkey\AutoHotkey.chm + ahk_dir = %A_ProgramFiles%\AutoHotkey + else + { + MsgBox Could not find the AutoHotkey folder. + return + } + } + Run %ahk_dir%\AutoHotkey.chm + WinWait AutoHotkey Help +} +; The above has set the "last found" window which we use below: +WinActivate +WinWaitActive +StringReplace, C_Cmd, C_Cmd, #, {#} +send, !n{home}+{end}%C_Cmd%{enter} +return diff --git a/src/docs/scripts/ContextSensitiveHelp.htm b/src/docs/scripts/ContextSensitiveHelp.htm new file mode 100644 index 0000000..78d5607 --- /dev/null +++ b/src/docs/scripts/ContextSensitiveHelp.htm @@ -0,0 +1,87 @@ + + +Context Sensitive Help in Any Editor -- by Rajat + + + + + + + +

¹®¸Æ °¨Áö µµ¿ò¸» -- by Rajat

+ +

+ÀÌ ½ºÅ©¸³Æ®´Â Ctrl+2 (¼±Åÿ¡ µû¶ó ´Ù¸¥ ÇÖÅ°)¸¦ ´©¸£¸é ¼±ÅÃµÈ ¿ÀÅäÇÖÅ° ¸í·É¾î³ª Å°¿öµå¿¡ ´ëÇÑ µµ¿ò¸»À» º¸¿©ÁÝ´Ï´Ù. ¾Æ¹«°Íµµ ¼±ÅÃÇÏÁö ¾ÊÀ¸¸é ¸í·É¾î À̸§À» ÇöÀç ÁÙÀÇ Ã³À½À¸·ÎºÎÅÍ ÃßÃâÇÕ´Ï´Ù. +

+

ÀÌ ½ºÅ©¸³Æ® ³»·Á¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

+ +
; ¾Æ·¡ÀÇ ÇÖÅ°´Â (ControlGetÀÌ ´ëºÎºÐÀÇ °í±Þ ÆíÁý±â¿Í ÀÛµ¿ÇÏÁö ¾Ê±â ¶§¹®¿¡)
+; °¡´ÉÇÏ¸é ¸¹Àº ¿¡µðÅÍ¿ÍÀÇ È£È¯¼ºÀ» À§ÇØ Å¬¸³º¸µå¸¦ »ç¿ëÇÕ´Ï´Ù.
+; ¿ø·¡ Ŭ¸³º¸µå ³»¿ëÀ» ³ªÁß¿¡ º¹±¸ÇÏÁö¸¸, Æò¹üÇÑ ÅؽºÆ®·Î º¹±¸ÇÕ´Ï´Ù.
+; ±×·¡µµ ¾ø´Â °Íº¸´Ù´Â ³´½À´Ï´Ù.
+
+$^2::
+; ´ÙÀ½ °ªµéÀº ÀÌ ÇÖÅ°ÀÇ ¾²·¹µå°¡ Á¸ÀçÇÏ´Â µ¿¾È¿¡¸¸ È¿°ú°¡ ÀÖ½À´Ï´Ù.
+; ±×·¯¹Ç·Î, ¿ø·¡ °ªÀ¸·Î ´Ù½Ã º¹±¸ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù
+; ¿Ö³ÄÇÏ¸é ¾²·¹µå°¡ ³¡³ª¸é ÀÚµ¿À¸·Î º¹±¸µÇ±â ¶§¹®ÀÔ´Ï´Ù:
+SetWinDelay 10
+SetKeyDelay 0
+AutoTrim, On
+
+if A_OSType = WIN32_WINDOWS  ; Windows 9x
+    Sleep, 500  ; »ç¿ëÀÚ¿¡°Ô Å°¸¦ ¶¿ ½Ã°£À» ÁÝ´Ï´Ù.
+
+C_ClipboardPrev = %clipboard%
+clipboard =
+; ÀÖ´Ù¸é °­Á¶µÈ ´Ü¾î¸¦ »ç¿ëÇÕ´Ï´Ù.
+; (¾î¶² °æ¿ì »ç¿ëÀÚ´Â ¸í·É¾î°¡ ¾Æ´Ñ °ÍÀ» ÀǵµÀûÀ¸·Î °­Á¶ÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù):
+Send, ^c
+ClipWait, 0.1
+if ErrorLevel <> 0
+{
+    ; ÆíÁý±â´Â Ä¿¼­ Å°¸¦ ´Ù¸£°Ô Ãë±ÞÇϱ⠶§¹®¿¡ Àüü ÁÙÀ» ¾ò½À´Ï´Ù:
+    Send, {home}+{end}^c
+    ClipWait, 0.2
+    if ErrorLevel <> 0  ; °ÅÀÇ ¾ø´Â °æ¿ìÀ̹ǷΠ¿¡·¯¸¦ º¸°íÇÏÁö ¾Ê½À´Ï´Ù.
+    {
+        clipboard = %C_ClipboardPrev%
+        return
+    }
+}
+C_Cmd = %clipboard%  ; ÀÌ°ÍÀ¸·Î ¾ÕµÚÀÇ ÅÇ°ú & ½ºÆäÀ̽º°¡ Á¦°ÅµË´Ï´Ù.
+clipboard = %C_ClipboardPrev%  ; »ç¿ëÀÚ¸¦ À§ÇØ ¿ø·¡ Ŭ¸³º¸µå¸¦ º¹±¸ÇÕ´Ï´Ù.
+Loop, parse, C_Cmd, %A_Space%`,  ; ù ¹ø° ½ºÆäÀ̽º³ª ½°Ç¥°¡ ¸í·É¾îÀÇ ³¡ÀÔ´Ï´Ù.
+{
+    C_Cmd = %A_LoopField%
+    break ; Áï, ÇÑ ¹ø¸¸ ¹Ýº¹ÇÏ¸é µË´Ï´Ù.
+}
+IfWinNotExist, AutoHotkey Help
+{
+    ; ¿ÀÅäÇÖÅ°ÀÇ À§Ä¡¸¦ ¾Ë¾Æ³À´Ï´Ù:
+    RegRead, ahk_dir, HKEY_LOCAL_MACHINE, SOFTWARE\AutoHotkey, InstallDir
+    if ErrorLevel  ; ¹ß°ßÀÌ ¾ÈµÇ¸é, ´Ù¸¥ À§Ä¡¿¡¼­ ã¾Æº¾´Ï´Ù.
+    {
+        if A_AhkPath
+            SplitPath, A_AhkPath,, ahk_dir
+        else IfExist ..\..\AutoHotkey.chm
+            ahk_dir = ..\..
+        else IfExist %A_ProgramFiles%\AutoHotkey\AutoHotkey.chm
+            ahk_dir = %A_ProgramFiles%\AutoHotkey
+        else
+        {
+            MsgBox ¿ÀÅäÇÖÅ° Æú´õ¸¦ ¹ß°ßÇÏÁö ¸øÇß½À´Ï´Ù.
+            return
+        }
+    }
+    Run %ahk_dir%\AutoHotkey.chm
+    WinWait AutoHotkey Help
+}
+; À§¿¡¼­ "¸¶Áö¸· ¹ß°ß" âÀ» ¼³Á¤Çß°í ±×°ÍÀ» ¾Æ·¡¿¡ »ç¿ëÇÕ´Ï´Ù:
+WinActivate
+WinWaitActive
+StringReplace, C_Cmd, C_Cmd, #, {#}
+send, !n{home}+{end}%C_Cmd%{enter}
+return
+
+ + diff --git a/src/docs/scripts/EasyWindowDrag.ahk b/src/docs/scripts/EasyWindowDrag.ahk new file mode 100644 index 0000000..5282b4d --- /dev/null +++ b/src/docs/scripts/EasyWindowDrag.ahk @@ -0,0 +1,45 @@ +; Easy Window Dragging (requires XP/2k/NT) +; http://www.autohotkey.com +; Normally, a window can only be dragged by clicking on its title bar. +; This script extends that so that any point inside a window can be dragged. +; To activate this mode, hold down CapsLock or the middle mouse button while +; clicking, then drag the window to a new position. + +; Note: You can optionally release Capslock or the middle mouse button after +; pressing down the mouse button rather than holding it down the whole time. +; This script requires v1.0.25+. + +~MButton & LButton:: +CapsLock & LButton:: +CoordMode, Mouse ; Switch to screen/absolute coordinates. +MouseGetPos, EWD_MouseStartX, EWD_MouseStartY, EWD_MouseWin +WinGetPos, EWD_OriginalPosX, EWD_OriginalPosY,,, ahk_id %EWD_MouseWin% +WinGet, EWD_WinState, MinMax, ahk_id %EWD_MouseWin% +if EWD_WinState = 0 ; Only if the window isn't maximized + SetTimer, EWD_WatchMouse, 10 ; Track the mouse as the user drags it. +return + +EWD_WatchMouse: +GetKeyState, EWD_LButtonState, LButton, P +if EWD_LButtonState = U ; Button has been released, so drag is complete. +{ + SetTimer, EWD_WatchMouse, off + return +} +GetKeyState, EWD_EscapeState, Escape, P +if EWD_EscapeState = D ; Escape has been pressed, so drag is cancelled. +{ + SetTimer, EWD_WatchMouse, off + WinMove, ahk_id %EWD_MouseWin%,, %EWD_OriginalPosX%, %EWD_OriginalPosY% + return +} +; Otherwise, reposition the window to match the change in mouse coordinates +; caused by the user having dragged the mouse: +CoordMode, Mouse +MouseGetPos, EWD_MouseX, EWD_MouseY +WinGetPos, EWD_WinX, EWD_WinY,,, ahk_id %EWD_MouseWin% +SetWinDelay, -1 ; Makes the below move faster/smoother. +WinMove, ahk_id %EWD_MouseWin%,, EWD_WinX + EWD_MouseX - EWD_MouseStartX, EWD_WinY + EWD_MouseY - EWD_MouseStartY +EWD_MouseStartX := EWD_MouseX ; Update for the next timer-call to this subroutine. +EWD_MouseStartY := EWD_MouseY +return diff --git a/src/docs/scripts/EasyWindowDrag.htm b/src/docs/scripts/EasyWindowDrag.htm new file mode 100644 index 0000000..6a9829c --- /dev/null +++ b/src/docs/scripts/EasyWindowDrag.htm @@ -0,0 +1,57 @@ + + +Easy Window Dragging (requires XP/2k/NT) + + + + + + + +

âÀ» ½±°Ô ²ô´Â ¹æ¹ý (XP/2k/NT ÀÌ»ó)

+ +

º¸Åë, âÀº Á¦¸ñ ¹Ù¸¦ Ŭ¸¯Çؼ­ ²ø ¼ö ÀÖ½À´Ï´Ù. ÀÌ ½ºÅ©¸³Æ®´Â â ¾ÈÀÇ ¾î´À ÁöÁ¡¿¡¼­µç ²ø ¼ö ÀÖµµ·Ï È®ÀåÇÕ´Ï´Ù. ÀÌ ¸ðµå¸¦ È°¼ºÈ­ÇÏ·Á¸é, CapsLock ¶Ç´Â °¡¿îµ¥ ¹öÆ°À» ´©¸£¸é¼­ Ŭ¸¯Çϸé, âÀ» »õ À§Ä¡±îÁö ²ø ¼ö ÀÖ½À´Ï´Ù. +

+

ÀÌ ½ºÅ©¸³Æ® ³»·Á ¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

+ +
; ÁÖÀÇ: ¼±ÅÃÀûÀ¸·Î °è¼Ó ´©¸£°í ÀÖÀ» ÇÊ¿ä ¾øÀÌ 
+; ¸¶¿ì½º ¹öÆ°À» ´©¸¥ ´ÙÀ½¿¡ Capslock ¶Ç´Â °¡¿îµ¥ ¹öÆ°À» ¶¼µµ µË´Ï´Ù
+; ÀÌ ½ºÅ©¸³Æ®´Â v1.0.25+¸¦ ¿ä±¸ÇÕ´Ï´Ù..
+
+~MButton & LButton::
+CapsLock & LButton::
+CoordMode, Mouse  ; È­¸é/Àý´ë ÁÂÇ¥¸¦ º¯È¯ÇÕ´Ï´Ù.
+MouseGetPos, EWD_MouseStartX, EWD_MouseStartY, EWD_MouseWin
+WinGetPos, EWD_OriginalPosX, EWD_OriginalPosY,,, ahk_id %EWD_MouseWin%
+WinGet, EWD_WinState, MinMax, ahk_id %EWD_MouseWin% 
+if EWD_WinState = 0  ; âÀÌ ÃÖ´ëÈ­ µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì¿¡¸¸,
+    SetTimer, EWD_WatchMouse, 10 ; »ç¿ëÀÚ°¡ ¸¶¿ì½º¸¦ ²ô´Â °ÍÀ» ÃßÀûÇÕ´Ï´Ù.
+return
+
+EWD_WatchMouse:
+GetKeyState, EWD_LButtonState, LButton, P
+if EWD_LButtonState = U  ; ¹öÆ°ÀÌ ¶¼¾îÁ³½À´Ï´Ù. ±×·¡¼­ ²ø±â°¡ ¿Ï·á µÇ¾ú½À´Ï´Ù.
+{
+    SetTimer, EWD_WatchMouse, off
+    return
+}
+GetKeyState, EWD_EscapeState, Escape, P
+if EWD_EscapeState = D  ; EscapeÀÌ ´­·È½À´Ï´Ù. ±×·¡¼­ ²ø±â°¡ Ãë¼Ò µÇ¾ú½À´Ï´Ù.
+{
+    SetTimer, EWD_WatchMouse, off
+    WinMove, ahk_id %EWD_MouseWin%,, %EWD_OriginalPosX%, %EWD_OriginalPosY%
+    return
+}
+; ±×·¸Áö ¾ÊÀ¸¸é, âÀ» ´Ù½Ã ¹èÄ¡ÇØ
+; »ç¿ëÀÚ°¡ ¸¶¿ì½º¸¦ ²ø¾î º¯°æµÈ ¸¶¿ì½º ÁÂÇ¥¸¦ ¹Ý¿µÇÕ´Ï´Ù:
+CoordMode, Mouse
+MouseGetPos, EWD_MouseX, EWD_MouseY
+WinGetPos, EWD_WinX, EWD_WinY,,, ahk_id %EWD_MouseWin%
+SetWinDelay, -1   ; ¾Æ·¡¸¦ ´õ ºÎµå·´°Ô ´õ ºü¸£°Ô À̵¿½Ãŵ´Ï´Ù.
+WinMove, ahk_id %EWD_MouseWin%,, EWD_WinX + EWD_MouseX - EWD_MouseStartX, EWD_WinY + EWD_MouseY - EWD_MouseStartY
+EWD_MouseStartX := EWD_MouseX  ; ÀÌ ¼­ºê·çƾ¿¡ ´ëÇÑ ´ÙÀ½ ŸÀÌ¸Ó È£ÃâÀ» ¾÷µ¥ÀÌÆ® ÇÕ´Ï´Ù.
+EWD_MouseStartY := EWD_MouseY
+return
+
+ + diff --git a/src/docs/scripts/EasyWindowDrag_(KDE).ahk b/src/docs/scripts/EasyWindowDrag_(KDE).ahk new file mode 100644 index 0000000..aeba9c2 --- /dev/null +++ b/src/docs/scripts/EasyWindowDrag_(KDE).ahk @@ -0,0 +1,149 @@ +; Easy Window Dragging -- KDE style (requires XP/2k/NT) -- by Jonny +; http://www.autohotkey.com +; This script makes it much easier to move or resize a window: 1) Hold down +; the ALT key and LEFT-click anywhere inside a window to drag it to a new +; location; 2) Hold down ALT and RIGHT-click-drag anywhere inside a window +; to easily resize it; 3) Press ALT twice, but before releasing it the second +; time, left-click to minimize the window under the mouse cursor, right-click +; to maximize it, or middle-click to close it. + +; This script was inspired by and built on many like it +; in the forum. Thanks go out to ck, thinkstorm, Chris, +; and aurelian for a job well done. + +; Change history: +; November 07, 2006: Optimized resizing code in !RButton, courtesy of bluedawn. +; February 05, 2006: Fixed double-alt (the ~Alt hotkey) to work with latest versions of AHK. + +; The Double-Alt modifier is activated by pressing +; Alt twice, much like a double-click. Hold the second +; press down until you click. +; +; The shortcuts: +; Alt + Left Button : Drag to move a window. +; Alt + Right Button : Drag to resize a window. +; Double-Alt + Left Button : Minimize a window. +; Double-Alt + Right Button : Maximize/Restore a window. +; Double-Alt + Middle Button : Close a window. +; +; You can optionally release Alt after the first +; click rather than holding it down the whole time. + +If (A_AhkVersion < "1.0.39.00") +{ + MsgBox,20,,This script may not work properly with your version of AutoHotkey. Continue? + IfMsgBox,No + ExitApp +} + + +; This is the setting that runs smoothest on my +; system. Depending on your video card and cpu +; power, you may want to raise or lower this value. +SetWinDelay,2 + +CoordMode,Mouse +return + +!LButton:: +If DoubleAlt +{ + MouseGetPos,,,KDE_id + ; This message is mostly equivalent to WinMinimize, + ; but it avoids a bug with PSPad. + PostMessage,0x112,0xf020,,,ahk_id %KDE_id% + DoubleAlt := false + return +} +; Get the initial mouse position and window id, and +; abort if the window is maximized. +MouseGetPos,KDE_X1,KDE_Y1,KDE_id +WinGet,KDE_Win,MinMax,ahk_id %KDE_id% +If KDE_Win + return +; Get the initial window position. +WinGetPos,KDE_WinX1,KDE_WinY1,,,ahk_id %KDE_id% +Loop +{ + GetKeyState,KDE_Button,LButton,P ; Break if button has been released. + If KDE_Button = U + break + MouseGetPos,KDE_X2,KDE_Y2 ; Get the current mouse position. + KDE_X2 -= KDE_X1 ; Obtain an offset from the initial mouse position. + KDE_Y2 -= KDE_Y1 + KDE_WinX2 := (KDE_WinX1 + KDE_X2) ; Apply this offset to the window position. + KDE_WinY2 := (KDE_WinY1 + KDE_Y2) + WinMove,ahk_id %KDE_id%,,%KDE_WinX2%,%KDE_WinY2% ; Move the window to the new position. +} +return + +!RButton:: +If DoubleAlt +{ + MouseGetPos,,,KDE_id + ; Toggle between maximized and restored state. + WinGet,KDE_Win,MinMax,ahk_id %KDE_id% + If KDE_Win + WinRestore,ahk_id %KDE_id% + Else + WinMaximize,ahk_id %KDE_id% + DoubleAlt := false + return +} +; Get the initial mouse position and window id, and +; abort if the window is maximized. +MouseGetPos,KDE_X1,KDE_Y1,KDE_id +WinGet,KDE_Win,MinMax,ahk_id %KDE_id% +If KDE_Win + return +; Get the initial window position and size. +WinGetPos,KDE_WinX1,KDE_WinY1,KDE_WinW,KDE_WinH,ahk_id %KDE_id% +; Define the window region the mouse is currently in. +; The four regions are Up and Left, Up and Right, Down and Left, Down and Right. +If (KDE_X1 < KDE_WinX1 + KDE_WinW / 2) + KDE_WinLeft := 1 +Else + KDE_WinLeft := -1 +If (KDE_Y1 < KDE_WinY1 + KDE_WinH / 2) + KDE_WinUp := 1 +Else + KDE_WinUp := -1 +Loop +{ + GetKeyState,KDE_Button,RButton,P ; Break if button has been released. + If KDE_Button = U + break + MouseGetPos,KDE_X2,KDE_Y2 ; Get the current mouse position. + ; Get the current window position and size. + WinGetPos,KDE_WinX1,KDE_WinY1,KDE_WinW,KDE_WinH,ahk_id %KDE_id% + KDE_X2 -= KDE_X1 ; Obtain an offset from the initial mouse position. + KDE_Y2 -= KDE_Y1 + ; Then, act according to the defined region. + WinMove,ahk_id %KDE_id%,, KDE_WinX1 + (KDE_WinLeft+1)/2*KDE_X2 ; X of resized window + , KDE_WinY1 + (KDE_WinUp+1)/2*KDE_Y2 ; Y of resized window + , KDE_WinW - KDE_WinLeft *KDE_X2 ; W of resized window + , KDE_WinH - KDE_WinUp *KDE_Y2 ; H of resized window + KDE_X1 := (KDE_X2 + KDE_X1) ; Reset the initial position for the next iteration. + KDE_Y1 := (KDE_Y2 + KDE_Y1) +} +return + +; "Alt + MButton" may be simpler, but I +; like an extra measure of security for +; an operation like this. +!MButton:: +If DoubleAlt +{ + MouseGetPos,,,KDE_id + WinClose,ahk_id %KDE_id% + DoubleAlt := false + return +} +return + +; This detects "double-clicks" of the alt key. +~Alt:: +DoubleAlt := A_PriorHotKey = "~Alt" AND A_TimeSincePriorHotkey < 400 +Sleep 0 +KeyWait Alt ; This prevents the keyboard's auto-repeat feature from interfering. +return diff --git a/src/docs/scripts/EasyWindowDrag_(KDE).htm b/src/docs/scripts/EasyWindowDrag_(KDE).htm new file mode 100644 index 0000000..3754570 --- /dev/null +++ b/src/docs/scripts/EasyWindowDrag_(KDE).htm @@ -0,0 +1,159 @@ + + +Easy Window Dragging -- KDE style (requires XP/2k/NT) -- by Jonny + + + + + + + +

âÀ» ½±°Ô ²ô´Â ¹æ¹ý -- KDE ½ºÅ¸ÀÏ (XP/2k/NT ¿ä±¸) -- by Jonny

+ +

ÀÌ ½ºÅ©¸³Æ®´Â ÈξÀ ´õ ½±°Ô âÀ» À̵¿Çϰųª Å©±â¸¦ º¯°æÇÒ ¼ö ÀÖµµ·Ï ¸¸µé¾î ÁÝ´Ï´Ù: 1) â ¾È ¾Æ¹«µ¥³ª ALT Å°¿Í LEFT-Ŭ¸¯À» ´©¸£°í âÀ» »õ À§Ä¡·Î ²ø ¼ö ÀÖ½À´Ï´Ù; 2) â ¾È ¾Æ¹« °÷À̳ª ALT¿Í RIGHT-Ŭ¸¯À¸·Î ²ø¾î¼­ ½±°Ô Å©±â¸¦ º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù; 3) ALT¸¦ µÎ ¹ø, ±×·¯³ª µÎ ¹ø°¸¦ ³õ±â Àü¿¡, ¿ÞŬ¸¯ÇÏ¸é ¸¶¿ì½º Ä¿¼­ ¾Æ·¡ÀÇ Ã¢À» ÃÖ¼ÒÈ­ÇÏ°í ¿ìŬ¸¯Çϰųª ¶Ç´Â °¡¿îµ¥ Ŭ¸¯Çϸé âÀ» ´ÝÀ» ¼ö ÀÖ½À´Ï´Ù. +

+

ÀÌ ½ºÅ©¸³Æ® ³»·Á¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

+ +
; ÀÌ ½ºÅ©¸³Æ®´Â Æ÷·³¿¡ ÀÖ´Â ¸¹Àº ºÐµé·ÎºÎÅÍ
+; ¿µ°¨À» ¾ò¾î ÀÛ¼ºµÇ¾ú½À´Ï´Ù. ÈǸ¢ÇÑ ÀÛÇ°À» °ø°³ÇØ ÁֽŠck, thinkstorm, Chris,
+; ±×¸®°í aurelian¿¡°Ô °¨»çÀÇ ¸»¾¸À» ÀüÇÕ´Ï´Ù.
+
+; º¯°æ ÀÌ·Â:
+; November 07, 2006: !RButton¿¡¼­ Å©±â Á¶Àý ÄÚµå ÃÖÀûÈ­, bluedawn Á¦°ø.
+; February 05, 2006: ´õºí-alt (~Alt ÇÖÅ°)°¡ ÃֽŠ¹öÀüÀÇ AHK¿¡¼­ ÀÛµ¿Çϵµ·Ï ¼öÁ¤.
+
+; ´õºíD-Alt ¼ö½ÄÅ°´Â ¾ËÆ® Å°¸¦ µÎ ¹ø ´©¸£¸é È°¼ºÈ­ µË´Ï´Ù.
+; ´õºí Ŭ¸¯°ú ¸¹ÀÌ ´à¾Ò½À´Ï´Ù.
+; µÎ ¹ø° ¾ËÆ® Å°´Â Ŭ¸¯ÇÒ ¶§±îÁö ´©¸£°í °è½Ê½Ã¿À.
+;
+; ´ÜÃàÅ°:
+;  Alt + Left Button  : ²ø¾î âÀ» À̵¿.
+;  Alt + Right Button : ²ø¾î â Å©±â¸¦ º¯°æ.
+;  Double-Alt + Left Button   : â ÃÖ¼ÒÈ­.
+;  Double-Alt + Right Button  : â ÃÖ´ëÈ­/º¹±¸.
+;  Double-Alt + Middle Button : ⠴ݱâ.
+;
+; ¼±ÅÃÀûÀ¸·Î ù ¹ø° Ŭ¸¯ ´ÙÀ½¿¡ ¾ËÆ® Å°¸¦ ³õÀ» ¼ö ÀÖ½À´Ï´Ù.
+; °è¼Ó ´©¸£°í ÀÖÀ» ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.
+
+If (A_AhkVersion < "1.0.39.00")
+{
+    MsgBox,20,,ÀÌ ½ºÅ©¸³Æ®´Â ÇöÀçÀÇ ¿ÀÅäÇÖÅ° ¹öÀü¿¡¼­ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. °è¼ÓÇÒ±î¿ä?
+    IfMsgBox,No
+    ExitApp
+}
+
+
+; ´ÙÀ½Àº ÇÊÀÚÀÇ ½Ã½ºÅÛ¿¡¼­ °¡Àå ºÎµå·´°Ô ÀÛµ¿ÇÏ´Â ¼³Á¤ÀÔ´Ï´Ù
+; ¿©·¯ºÐÀÇ ºñµð¿À Ä«µå¿Í ½ÃÇÇÀ¯ ¼º´É¿¡ µû¶ó
+; ÀÌ °ªÀ» ¿Ã¸®°Å³ª ³»¸®¸é µË´Ï´Ù.
+SetWinDelay,2
+
+CoordMode,Mouse
+return
+
+!LButton::
+If DoubleAlt
+{
+    MouseGetPos,,,KDE_id
+    ; ÀÌ ¸Þ½ÃÁö´Â °ÅÀÇ WinMinimize¿Í µ¿µîÇÏÁö¸¸,
+    ; PSPadÀÇ ¹ö±×¸¦ ÇÇÇÕ´Ï´Ù.
+    PostMessage,0x112,0xf020,,,ahk_id %KDE_id%
+    DoubleAlt := false
+    return
+}
+; ÃÖÃÊÀÇ ¸¶¿ì½º À§Ä¡¿Í â ¾ÆÀ̵𸦠¾ò½À´Ï´Ù. 
+; âÀÌ ÃÖ´ëÈ­µÇ¾î ÀÖ´Ù¸é Ãë¼ÒÇÕ´Ï´Ù.
+MouseGetPos,KDE_X1,KDE_Y1,KDE_id
+WinGet,KDE_Win,MinMax,ahk_id %KDE_id%
+If KDE_Win
+    return
+; ÃÖÃÊÀÇ Ã¢ À§Ä¡¸¦ ¾ò½À´Ï´Ù.
+WinGetPos,KDE_WinX1,KDE_WinY1,,,ahk_id %KDE_id%
+Loop
+{
+    GetKeyState,KDE_Button,LButton,P ; ¹öÆ°À» ³õ¾Ò´Ù¸é ºüÁ® ³ª°©´Ï´Ù.
+    If KDE_Button = U
+        break
+    MouseGetPos,KDE_X2,KDE_Y2 ; ÇöÀç ¸¶¿ì½º À§Ä¡¸¦ ¾ò½À´Ï´Ù.
+    KDE_X2 -= KDE_X1 ; ÃÖÃÊ ¸¶¿ì½º À§Ä¡·ÎºÎÅÍ »ó´ë°Å¸®(offset)¸¦ ¾ò½À´Ï´Ù.
+    KDE_Y2 -= KDE_Y1
+    KDE_WinX2 := (KDE_WinX1 + KDE_X2) ; ÀÌ »ó´ë°Å¸®¸¦ âÀ§ À§Ä¡¿¡ Àû¿ëÇÕ´Ï´Ù.
+    KDE_WinY2 := (KDE_WinY1 + KDE_Y2)
+    WinMove,ahk_id %KDE_id%,,%KDE_WinX2%,%KDE_WinY2% ; âÀ» »õ À§Ä¡·Î À̵¿½Ãŵ´Ï´Ù.
+}
+return
+
+!RButton::
+If DoubleAlt
+{
+    MouseGetPos,,,KDE_id
+    ; ÃÖ´ëÈ­ »óÅÂ¿Í º¹±¸ »óÅ »çÀ̸¦ Åä±ÛÇÕ´Ï´Ù.
+    WinGet,KDE_Win,MinMax,ahk_id %KDE_id%
+    If KDE_Win
+        WinRestore,ahk_id %KDE_id%
+    Else
+        WinMaximize,ahk_id %KDE_id%
+    DoubleAlt := false
+    return
+}
+; ÃÖÃÊ ¸¶¿ì½º À§Ä¡¿Í â ¾ÆÀ̵𸦠¾ò½À´Ï´Ù.
+; âÀÌ ÃÖ´ëÈ­ µÇ¾î ÀÖ´Ù¸é Ãë¼ÒÇÕ´Ï´Ù.
+MouseGetPos,KDE_X1,KDE_Y1,KDE_id
+WinGet,KDE_Win,MinMax,ahk_id %KDE_id%
+If KDE_Win
+    return
+; ÃÖÃÊ Ã¢ÀÇ À§Ä¡¿Í Å©±â¸¦ ¾ò½À´Ï´Ù.
+WinGetPos,KDE_WinX1,KDE_WinY1,KDE_WinW,KDE_WinH,ahk_id %KDE_id%
+; ÇöÀç ¸¶¿ì½º°¡ Àִ â ±¸¿ªÀ» Á¤ÀÇÇÕ´Ï´Ù.
+; ³× ±¸¿ªÀº  Á»ó, ¿ì»ó, ÁÂÇÏ, ¿ìÇÏÀÔ´Ï´Ù.
+If (KDE_X1 < KDE_WinX1 + KDE_WinW / 2)
+   KDE_WinLeft := 1
+Else
+   KDE_WinLeft := -1
+If (KDE_Y1 < KDE_WinY1 + KDE_WinH / 2)
+   KDE_WinUp := 1
+Else
+   KDE_WinUp := -1
+Loop
+{
+    GetKeyState,KDE_Button,RButton,P ; ¹öÆ°ÀÌ ´­·Á ÀÖÀ¸¸é ºüÁ® ³ª°©´Ï´Ù.
+    If KDE_Button = U
+        break
+    MouseGetPos,KDE_X2,KDE_Y2 ; ÇöÀç ¸¶¿ì½º À§Ä¡¸¦ ¾ò½À´Ï´Ù.
+    ; ÇöÀç âÀÇ À§Ä¡¿Í Å©±â¸¦ ¾ò½À´Ï´Ù.
+    WinGetPos,KDE_WinX1,KDE_WinY1,KDE_WinW,KDE_WinH,ahk_id %KDE_id%
+    KDE_X2 -= KDE_X1 ; ÃÖÃÊ ¸¶¿ì½º À§Ä¡·ÎºÎÅÍ »ó´ë°Å¸®(offset)¸¦ ¾ò½À´Ï´Ù.
+    KDE_Y2 -= KDE_Y1
+    ; ÀÌÁ¦, Á¤ÀÇµÈ ±¸¿ª¿¡ ¸Â°Ô ÇàÀ§ÇÕ´Ï´Ù.
+    WinMove,ahk_id %KDE_id%,, KDE_WinX1 + (KDE_WinLeft+1)/2*KDE_X2  ; Å©±â º¯°æµÈ âÀÇ X
+                            , KDE_WinY1 +   (KDE_WinUp+1)/2*KDE_Y2  ; Å©±â º¯°æµÈ âÀÇ Y
+                            , KDE_WinW  -     KDE_WinLeft  *KDE_X2  ; Å©±â º¯°æµÈ âÀÇ W
+                            , KDE_WinH  -       KDE_WinUp  *KDE_Y2  ; Å©±â º¯°æµÈ âÀÇ H
+    KDE_X1 := (KDE_X2 + KDE_X1) ; ´ÙÀ½ ¹Ýº¹À» À§ÇØ ÃÖÃÊ À§Ä¡·Î ¸®¼ÂÇÕ´Ï´Ù.
+    KDE_Y1 := (KDE_Y2 + KDE_Y1)
+}
+return
+
+; "Alt + MButton"ÀÌ ´õ °£´ÜÇÒ ¼ö ÀÖÁö¸¸,
+; ÇÊÀÚ´Â ´ÙÀ½°ú °°ÀÌ ¿¬»ê¿¡
+; º¸¾ÈÀ» Ãß°¡ÇÏ´Â °ÍÀ» ÁÁ¾ÆÇÕ´Ï´Ù.
+!MButton::
+If DoubleAlt
+{
+    MouseGetPos,,,KDE_id
+    WinClose,ahk_id %KDE_id%
+    DoubleAlt := false
+    return
+}
+return
+
+; ´ÙÀ½Àº ¾ËÆ® Å°ÀÇ "´õºí-Ŭ¸¯"À» ŽÁöÇÕ´Ï´Ù.
+~Alt::
+DoubleAlt := A_PriorHotKey = "~Alt" AND A_TimeSincePriorHotkey < 400
+Sleep 0
+KeyWait Alt  ; ÀÌ·¸°Ô Çϸé Å°º¸µåÀÇ ÀÚµ¿ ¹Ýº¹ Ư¡ ¶§¹®¿¡ ¹æÇØ ¹ÞÁö ¾Ê½À´Ï´Ù.
+return
+
+ + diff --git a/src/docs/scripts/FavoriteFolders.ahk b/src/docs/scripts/FavoriteFolders.ahk new file mode 100644 index 0000000..dbcc6a6 --- /dev/null +++ b/src/docs/scripts/FavoriteFolders.ahk @@ -0,0 +1,186 @@ +; Easy Access to Favorite Folders -- by Savage +; http://www.autohotkey.com +; When you click the middle mouse button while certain types of +; windows are active, this script displays a menu of your favorite +; folders. Upon selecting a favorite, the script will instantly +; switch to that folder within the active window. The following +; window types are supported: 1) Standard file-open or file-save +; dialogs; 2) Explorer windows; 3) Console (command prompt) windows. +; The menu can also be optionally shown for unsupported window +; types, in which case the chosen favorite will be opened as a new +; Explorer window. + +; Note: In Windows Explorer, if "View > Toolbars > Address Bar" is +; not enabled, the menu will not be shown if the hotkey chosen below +; has a tilde. If it does have a tilde, the menu will be shown +; but the favorite will be opened in a new Explorer window rather +; than switching the active Explorer window to that folder. + +; CONFIG: CHOOSE YOUR HOTKEY +; If your mouse has more than 3 buttons, you could try using +; XButton1 (the 4th) or XButton2 (the 5th) instead of MButton. +; You could also use a modified mouse button (such as ^MButton) or +; a keyboard hotkey. In the case of MButton, the tilde (~) prefix +; is used so that MButton's normal functionality is not lost when +; you click in other window types, such as a browser. The presence +; of a tilde tells the script to avoid showing the menu for +; unsupported window types. In other words, if there is no tilde, +; the hotkey will always display the menu; and upon selecting a +; favorite while an unsupported window type is active, a new +; Explorer window will be opened to display the contents of that +; folder. +f_Hotkey = ~MButton + +; CONFIG: CHOOSE YOUR FAVORITES +; Update the special commented section below to list your favorite +; folders. Specify the name of the menu item first, followed by a +; semicolon, followed by the name of the actual path of the favorite. +; Use a blank line to create a separator line. + +/* +ITEMS IN FAVORITES MENU <-- Do not change this string. +Desktop ; %A_Desktop% +Favorites ; %A_Desktop%\..\Favorites +My Documents ; %A_MyDocuments% + +Program Files; %A_ProgramFiles% +*/ + + +; END OF CONFIGURATION SECTION +; Do not make changes below this point unless you want to change +; the basic functionality of the script. + +#SingleInstance ; Needed since the hotkey is dynamically created. + +Hotkey, %f_Hotkey%, f_DisplayMenu +StringLeft, f_HotkeyFirstChar, f_Hotkey, 1 +if f_HotkeyFirstChar = ~ ; Show menu only for certain window types. + f_AlwaysShowMenu = n +else + f_AlwaysShowMenu = y + +; Used to reliably determine whether script is compiled: +SplitPath, A_ScriptName,,, f_FileExt +if f_FileExt = Exe ; Read the menu items from an external file. + f_FavoritesFile = %A_ScriptDir%\Favorites.ini +else ; Read the menu items directly from this script file. + f_FavoritesFile = %A_ScriptFullPath% + +;----Read the configuration file. +f_AtStartingPos = n +f_MenuItemCount = 0 +Loop, Read, %f_FavoritesFile% +{ + if f_FileExt <> Exe + { + ; Since the menu items are being read directly from this + ; script, skip over all lines until the starting line is + ; arrived at. + if f_AtStartingPos = n + { + IfInString, A_LoopReadLine, ITEMS IN FAVORITES MENU + f_AtStartingPos = y + continue ; Start a new loop iteration. + } + ; Otherwise, the closing comment symbol marks the end of the list. + if A_LoopReadLine = */ + break ; terminate the loop + } + ; Menu separator lines must also be counted to be compatible + ; with A_ThisMenuItemPos: + f_MenuItemCount++ + if A_LoopReadLine = ; Blank indicates a separator line. + Menu, Favorites, Add + else + { + StringSplit, f_line, A_LoopReadLine, `; + f_line1 = %f_line1% ; Trim leading and trailing spaces. + f_line2 = %f_line2% ; Trim leading and trailing spaces. + ; Resolve any references to variables within either field, and + ; create a new array element containing the path of this favorite: + Transform, f_path%f_MenuItemCount%, deref, %f_line2% + Transform, f_line1, deref, %f_line1% + Menu, Favorites, Add, %f_line1%, f_OpenFavorite + } +} +return ;----End of auto-execute section. + + +;----Open the selected favorite +f_OpenFavorite: +; Fetch the array element that corresponds to the selected menu item: +StringTrimLeft, f_path, f_path%A_ThisMenuItemPos%, 0 +if f_path = + return +if f_class = #32770 ; It's a dialog. +{ + if f_Edit1Pos <> ; And it has an Edit1 control. + { + ; Activate the window so that if the user is middle-clicking + ; outside the dialog, subsequent clicks will also work: + WinActivate ahk_id %f_window_id% + ; Retrieve any filename that might already be in the field so + ; that it can be restored after the switch to the new folder: + ControlGetText, f_text, Edit1, ahk_id %f_window_id% + ControlSetText, Edit1, %f_path%, ahk_id %f_window_id% + ControlSend, Edit1, {Enter}, ahk_id %f_window_id% + Sleep, 100 ; It needs extra time on some dialogs or in some cases. + ControlSetText, Edit1, %f_text%, ahk_id %f_window_id% + return + } + ; else fall through to the bottom of the subroutine to take standard action. +} +else if f_class in ExploreWClass,CabinetWClass ; In Explorer, switch folders. +{ + if f_Edit1Pos <> ; And it has an Edit1 control. + { + ControlSetText, Edit1, %f_path%, ahk_id %f_window_id% + ; Tekl reported the following: "If I want to change to Folder L:\folder + ; then the addressbar shows http://www.L:\folder.com. To solve this, + ; I added a {right} before {Enter}": + ControlSend, Edit1, {Right}{Enter}, ahk_id %f_window_id% + return + } + ; else fall through to the bottom of the subroutine to take standard action. +} +else if f_class = ConsoleWindowClass ; In a console window, CD to that directory +{ + WinActivate, ahk_id %f_window_id% ; Because sometimes the mclick deactivates it. + SetKeyDelay, 0 ; This will be in effect only for the duration of this thread. + IfInString, f_path, : ; It contains a drive letter + { + StringLeft, f_path_drive, f_path, 1 + Send %f_path_drive%:{enter} + } + Send, cd %f_path%{Enter} + return +} +; Since the above didn't return, one of the following is true: +; 1) It's an unsupported window type but f_AlwaysShowMenu is y (yes). +; 2) It's a supported type but it lacks an Edit1 control to facilitate the custom +; action, so instead do the default action below. +Run, Explorer %f_path% ; Might work on more systems without double quotes. +return + + +;----Display the menu +f_DisplayMenu: +; These first few variables are set here and used by f_OpenFavorite: +WinGet, f_window_id, ID, A +WinGetClass, f_class, ahk_id %f_window_id% +if f_class in #32770,ExploreWClass,CabinetWClass ; Dialog or Explorer. + ControlGetPos, f_Edit1Pos,,,, Edit1, ahk_id %f_window_id% +if f_AlwaysShowMenu = n ; The menu should be shown only selectively. +{ + if f_class in #32770,ExploreWClass,CabinetWClass ; Dialog or Explorer. + { + if f_Edit1Pos = ; The control doesn't exist, so don't display the menu + return + } + else if f_class <> ConsoleWindowClass + return ; Since it's some other window type, don't display menu. +} +; Otherwise, the menu should be presented for this type of window: +Menu, Favorites, show +return diff --git a/src/docs/scripts/FavoriteFolders.htm b/src/docs/scripts/FavoriteFolders.htm new file mode 100644 index 0000000..d37c790 --- /dev/null +++ b/src/docs/scripts/FavoriteFolders.htm @@ -0,0 +1,194 @@ + + +Easy Access to Favorite Folders -- by Savage + + + + + + + +

ÀÚÁÖ °¡´Â Æú´õ¿¡ ½±°Ô Á¢±ÙÇÏ´Â ¹ý -- by Savage

+ +

¾î¶° À¯ÇüÀÌ Ã¢ÀÌ È°¼ºÈ­µÇ¾î ÀÖ´Â µ¿¾È¿¡ ¸¶¿ì½º °¡¿îµ¥ ¹öÆ°À» Ŭ¸¯Çϸé, ÀÌ ½ºÅ©¸³Æ®´Â ÀÚÁÖ °¡´Â Æú´õÀÇ ¸Þ´º¸¦ º¸¿©ÁÝ´Ï´Ù. ÀÚÁÖ °¡´Â Æú´õ¸¦ ¼±ÅÃÇÏ´Â ¼ø°£ ±× È°¼º â ¾ÈÀÇ Æú´õ·Î ¼ø°£ À̵¿ÇÕ´Ï´Ù. ´ÙÀ½ À¯ÇüÀÇ Ã¢À» Áö¿øÇÕ´Ï´Ù: 1) Ç¥ÁØ ÆÄÀÏ ¿­±â ¶Ç´Â ÀúÀå ´ëÈ­»óÀÚ; 2) Ž»ö â; 3) ÄÜ¼Ö (¸í·É¾î ÇÁ·ÒÇÁÆ®) â. +¸Þ´º´Â ¶Ç ¼±ÅÃÀûÀ¸·Î Áö¿øµÇ´Â ¾Ê´Â À¯ÇüÀÇ Ã¢¿¡ ´ëÇؼ­µµ º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì ¼±ÅÃµÈ Æú´õ´Â »õ Ž»ö â¿¡ ¿­¸³´Ï´Ù. +

+

ÀÌ ½ºÅ©¸³Æ® ³»·Á¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  Home

+ +
; ÁÖÀÇ: Ž»ö â¿¡¼­, "View > Toolbars > Address Bar"°¡ È°¼ºÈ­µÇ¾î ÀÖÁö ¾ÊÀ» ¶§
+; ¾Æ·¡ÀÇ ÇÖÅ°¿¡ Æ¿µå°¡ ÀÖ´Â °æ¿ì ±× ¸Þ´º´Â º¸¿©ÁöÁö ¾Ê½À´Ï´Ù. 
+; Æ¿µå°¡ À־ ¸Þ´º´Â º¸ÀÏ ¼öµµ ÀÖÁö¸¸
+; ÀÚÁÖ °¡´Â Æú´õ´Â »õ Ž»ö â¿¡ ¿­¸³´Ï´Ù.
+; È°¼ºÈ­µÇ¾î Àִ âÀÌ ±× Æú´õ·Î ÀüȯµÇÁö ¾Ê½À´Ï´Ù.
+
+; CONFIG: ÇÖÅ°¸¦ °í¸£½Ê½Ã¿À.
+; ¸¶¿ì½º¿¡ 3 ¹öÆ° ÀÌ»óÀÌ ÀÖÀ¸¸é, MButton ´ë½Å¿¡
+; XButton1 (the 4th) ¶Ç´Â XButton2 (the 5th)À» ½ÃµµÇØ º¼ ¼ö ÀÖ½À´Ï´Ù.
+; ¶ÇÇÑ º¯Çü ¸¶¿ì½º ¹öÆ° (¿¹, ^MButton) ¶Ç´Â Å°º¸µå ÇÖÅ°¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù
+; MButtonÀÇ °æ¿ì, Æ¿µå (~) Á¢µÎ ½Éº¼À» »ç¿ëÇϸé
+; ¿¹¸¦ µé¾î À¥ ºê¶ó¿ìÀú °°Àº ´Ù¸¥ À¯ÇüÀÇ Ã¢À» Ŭ¸¯ÇÒ ¶§,
+; MButton¹öÆ°ÀÇ Á¤»ó ±â´ÉÀÌ ¼Ò½ÇµÇÁö ¾Ê½À´Ï´Ù
+; Æ¿µå°¡ ÀÖÀ¸¸é ½ºÅ©¸³Æ®´Â Áö¿øµÇÁö ¾Ê´Â â À¯Çü¿¡´Â
+; ¸Þ´º¸¦ º¸¿©ÁÖÁö ¾Ê½À´Ï´Ù. ´Ù¸¥ ¸»·Î, Æ¿µå°¡ ¾ø´Ù¸é,
+; ÇÖÅ°´Â ¾ðÁ¦³ª ¸Þ´º¸¦ º¸¿©ÁÝ´Ï´Ù; Áö¿øµÇÁö ¾Ê´Â â À¯ÇüÀÌ
+; È°¼ºÈ­µÇ¾î ÀÖ´Â µ¿¾È ÀÚÁÖ °¡´Â Æú´õ¸¦ ¼±ÅÃÇϸé
+; »õ Ž»ö âÀÌ ¿­¸®°í ±× Æú´õÀÇ ³»¿ëÀ»
+; º¸¿©ÁÝ´Ï´Ù.
+f_Hotkey = ~MButton
+
+; CONFIG: Áñ°Ü ã±â¸¦ °í¸£½Ê½Ã¿À
+; ¾Æ·¡¿¡ Ưº°È÷ ÁÖ¼® ó¸®ÇÑ ºÎºÐÀ» ¾÷µ¥ÀÌÆ® Çϸé
+; ÀÚÁÖ °¡´Â Æú´õ¸¦ ³ª¿­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸Þ´º Ç׸ñÀÇ À̸§À» ¸ÕÀú ÁöÁ¤ÇÏ°í
+; ´ÙÀ½¿¡ ½Ö¹ÝÁ¡, ±× ´ÙÀ½¿¡ ½ÇÁ¦ °æ·Î¸¦ ÁöÁ¤ÇϽʽÿÀ.
+; ºó ÁÙÀ» »ç¿ëÇÏ¸é °¡¸§ ÁÙÀ» ¸¸µé ¼ö ÀÖ½À´Ï´Ù.
+
+/*
+ITEMS IN FAVORITES MENU <-- ÀÌ ¹®ÀÚ¿­Àº ¹Ù²ÙÁö ¸¶½Ê½Ã¿À.
+Desktop      ; %A_Desktop%
+Favorites    ; %A_Desktop%\..\Favorites
+My Documents ; %A_MyDocuments%
+
+Program Files; %A_ProgramFiles%
+*/
+
+
+; END OF CONFIGURATION SECTION
+; ÀÌ ½ÃÁ¡ ºÎÅÍ´Â º¯°æÇÏÁö ¸¶½Ê½Ã¿À.
+; ´Ü, ½ºÅ©¸³Æ®ÀÇ ±âº» ±â´ÉÀ» ¹Ù²Ù°í ½Í´Ù¸é ¿¹¿ÜÀÔ´Ï´Ù.
+
+#SingleInstance  ; ÇÖÅ°°¡ µ¿ÀûÀ¸·Î »ý¼ºµÇ¹Ç·Î ÇʼöÀÔ´Ï´Ù.
+
+Hotkey, %f_Hotkey%, f_DisplayMenu
+StringLeft, f_HotkeyFirstChar, f_Hotkey, 1
+if f_HotkeyFirstChar = ~  ; ƯÁ¤ À¯ÇüÀÇ Ã¢¿¡ ´ëÇؼ­¸¸ ¸Þ´º¸¦ º¸¿©ÁÝ´Ï´Ù.
+    f_AlwaysShowMenu = n
+else
+    f_AlwaysShowMenu = y
+
+; ½ºÅ©¸³Æ®°¡ ÄÄÆÄÀÏ µÇ¾î ÀÖ´ÂÁö ¾Ë¾Æ³»´Â µ¥ »ç¿ëµË´Ï´Ù:
+SplitPath, A_ScriptName,,, f_FileExt
+if f_FileExt = Exe  ; ¿ÜºÎ ÆÄÀϷκÎÅÍ ¸Þ´º Ç׸ñµéÀ» ÀнÀ´Ï´Ù.
+    f_FavoritesFile = %A_ScriptDir%\Favorites.ini
+else  ; ÀÌ ½ºÅ©¸³Æ® ÆÄÀϷκÎÅÍ Á÷Á¢ ¸Þ´º Ç׸ñµéÀ» ÀнÀ´Ï´Ù.
+    f_FavoritesFile = %A_ScriptFullPath%
+
+;----ȯ°æ ±¸¼º ÆÄÀÏÀ» ÀнÀ´Ï´Ù.
+f_AtStartingPos = n
+f_MenuItemCount = 0
+Loop, Read, %f_FavoritesFile%
+{
+    if f_FileExt <> Exe
+    {
+        ; ¸Þ´º Ç׸ñµéÀº ÀÌ ½ºÅ©¸³Æ®·ÎºÎÅÍ Á÷Á¢ Àаí Àֱ⠶§¹®¿¡,
+        ; ½ÃÀÛ ÁÙ¿¡ µµÂøÇÒ ¶§±îÁö
+        ; ¸ðµç ÁÙÀ» °Ç³Ê ¶Ý´Ï´Ù.
+        if f_AtStartingPos = n
+        {
+            IfInString, A_LoopReadLine, ITEMS IN FAVORITES MENU
+                f_AtStartingPos = y
+            continue  ; »õ ȸµ¹ÀÌ ¹Ýº¹À» ½ÃÀÛÇÕ´Ï´Ù.
+        }
+        ; ±×·¸Áö ¾ÊÀ¸¸é, ÁÖ¼® ´Ý±â ½Éº¼ÀÌ ¸®½ºÆ®ÀÇ ³¡À» Ç¥½ÄÇÕ´Ï´Ù.
+        if A_LoopReadLine = */
+            break  ; ȸµ¹À̸¦ ³¡³À´Ï´Ù
+    }
+    ; A_ThisMenuItemPos¿ÍÀÇ È£È¯À» À§ÇØ
+    ; ¸Þ´º °¡¸§ Áٵ鵵 ¼¼¾î¾ß ÇÕ´Ï´Ù: 
+    f_MenuItemCount++
+    if A_LoopReadLine =  ; ºó ÁÙÀº °¡¸§ ÁÙÀ» ¶æÇÕ´Ï´Ù.
+        Menu, Favorites, Add
+    else
+    {
+        StringSplit, f_line, A_LoopReadLine, `;
+        f_line1 = %f_line1%  ; ¼±µÎ ÈĹÌÀÇ ½ºÆäÀ̽º¸¦ Á¦°ÅÇÕ´Ï´Ù.
+        f_line2 = %f_line2%  ; ¼±µÎ ÈĹÌÀÇ ½ºÆäÀ̽º¸¦ Á¦°ÅÇÕ´Ï´Ù.
+        ; ÇÊµå ¾È¿¡ º¯¼ö ÂüÁ¶¸¦ ¸ðµÎ °áÁ¤ÇÕ´Ï´Ù. ±×¸®°í
+        ; ÀÚÁÖ °¡´Â Æú´õÀÇ °æ·Î¸¦ ´ãÀº »õ ¹è¿­ ¿ø¼Ò¸¦ »ý¼ºÇÕ´Ï´Ù:
+        Transform, f_path%f_MenuItemCount%, deref, %f_line2%
+        Transform, f_line1, deref, %f_line1%
+        Menu, Favorites, Add, %f_line1%, f_OpenFavorite
+    }
+}
+return  ;----ÀÚµ¿ ½ÇÇà ¼½¼ÇÀÇ ³¡.
+
+
+;----¼±ÅÃµÈ Æú´õ¸¦ ¿±´Ï´Ù
+f_OpenFavorite:
+; ¼±ÅÃµÈ ¸Þ´º Ç׸ñ¿¡ »óÀÀÇÏ´Â ¹è¿­ ¿ø¼Ò¸¦ °¡Á® ¿É´Ï´Ù:
+StringTrimLeft, f_path, f_path%A_ThisMenuItemPos%, 0
+if f_path =
+    return
+if f_class = #32770    ; ´ëÈ­»óÀÚÀÔ´Ï´Ù.
+{
+    if f_Edit1Pos <>   ; ±×¸®°í Edit1 ÄÜÆ®·ÑÀÌ ÀÖ½À´Ï´Ù.
+    {
+        ; âÀ» È°¼ºÈ­ ÇÕ´Ï´Ù. ±×·¯¸é »ç¿ëÀÚ°¡ ´ëÈ­»óÀÚ ¹Û¿¡¼­
+        ; °¡¿îµ¥ ¹öÆ°À» Ŭ¸¯Çϸé, ÀÕ´Ù¸£´Â Ŭ¸¯µéµµ ÀÛµ¿ÇÕ´Ï´Ù:
+        WinActivate ahk_id %f_window_id%
+        ; ÀÌ¹Ì Çʵ忡 Á¸ÀçÇÏ´õ¶óµµ ÆÄÀÏÀ̸§À» ¸ðµÎ ¿­¶÷ÇÕ´Ï´Ù.
+        ; ±×·¡¾ß »õ Æú´õ·Î ÀüȯÇÑ ÈÄ¿¡ ´Ù½Ã º¹±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù:
+        ControlGetText, f_text, Edit1, ahk_id %f_window_id%
+        ControlSetText, Edit1, %f_path%, ahk_id %f_window_id%
+        ControlSend, Edit1, {Enter}, ahk_id %f_window_id%
+        Sleep, 100  ; ¾î¶² °æ¿ì ¾î¶² ´ëÈ­»óÀÚ¿¡´Â Ãß°¡·Î ½Ã°£ÀÌ ÇÊ¿äÇÕ´Ï´Ù.
+        ControlSetText, Edit1, %f_text%, ahk_id %f_window_id%
+        return
+    }
+    ; ±×·¸Áö ¾ÊÀ¸¸é ¼­ºê·çƾÀÇ ¾Æ·¡·Î °¡ Ç¥ÁØ Á¶Ä¡¸¦ ÃëÇÕ´Ï´Ù.
+}
+else if f_class in ExploreWClass,CabinetWClass  ; Ž»ö âÀ̹ǷÎ, Æú´õ¸¦ ÀüȯÇÕ´Ï´Ù.
+{
+    if f_Edit1Pos <>   ; ±×¸®°í Edit1 ÄÜÆ®·ÑÀÌ ÀÖ½À´Ï´Ù.
+    {
+        ControlSetText, Edit1, %f_path%, ahk_id %f_window_id%
+        ; TeklÀÇ º¸°í¿¡ ÀÇÇϸé: "¸¸¾à Æú´õ L:\folder·Î ¹Ù²Ù°í ½Í´Ù¸é
+        ; ÁÖ¼Ò¹Ù´Â http://www.L:\folder.com¸¦ º¸¿©ÁØ´Ù. À̸¦ ÇØ°áÇϱâ À§ÇØ,
+        ; ³ª´Â {Enter} ¾Õ¿¡ {right}¸¦ Ãß°¡Çß´Ù":
+        ControlSend, Edit1, {Right}{Enter}, ahk_id %f_window_id%
+        return
+    }
+    ; ±×·¸Áö ¾ÊÀ¸¸é ¼­ºê·çƾÀÇ ¾Æ·¡·Î °¡¼­ Ç¥ÁØ ÇàÀ§¸¦ ÃëÇÕ´Ï´Ù.
+}
+else if f_class = ConsoleWindowClass ; ÄÜ¼Ö Ã¢À̹ǷÎ, ±× µð·ºÅ丮·Î CD ÇÕ´Ï´Ù
+{
+    WinActivate, ahk_id %f_window_id% ; Á¾Á¶ mclick ¶§¹®¿¡ ºñÈ°¼ºÈ­ µÇ´Â °æ¿ì°¡ ÀÖÀ¸¹Ç·Î,
+    SetKeyDelay, 0  ; ÀÌ°ÍÀº ÀÌ ¾²·¹µå°¡ Á¸ÀçÇÏ´Â µ¿¾È¿¡¸¸ È¿°ú°¡ ÀÖ½À´Ï´Ù.
+    IfInString, f_path, :  ; µå¶óÀÌºê ±âÈ£°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù
+    {
+        StringLeft, f_path_drive, f_path, 1
+        Send %f_path_drive%:{enter}
+    }
+    Send, cd %f_path%{Enter}
+    return
+}
+; À§¿¡¼­ ¹ÝȯµÇÁö ¾Ê¾Ò´Ù¸é, ´ÙÀ½ Áß Çϳª°¡ ÂüÀÔ´Ï´Ù:
+; 1) Áö¿øÇÏÁö ¾Ê´Â â À¯ÇüÀÌÁö¸¸ f_AlwaysShowMenu°¡ y (yes)ÀÔ´Ï´Ù.
+; 2) Áö¿øÇÏ´Â À¯ÇüÀÌÁö¸¸ Edit1 ÄÜÆ®·ÑÀÌ ¾ø¾î¼­ ¸ÂÃã Á¶Ä¡¿¡ ÀÌ¿ëÇÏÁö ¸øÇÕ´Ï´Ù.
+;     ±×·¡¼­ ´ë½Å ¾Æ·¡ÀÇ ±âº» ÇàÀ§¸¦ ÇÕ´Ï´Ù.
+Run, Explorer %f_path%  ; °ãµû¿ÈÇ¥°¡ ¾øÀ¸¸é ´õ ¸¹Àº ½Ã½ºÅÛ¿¡ ÀÛµ¿ÇÒ °¡´É¼ºÀÌ ³ô½À´Ï´Ù.
+return
+
+
+;----¸Þ´º¸¦ º¸¿©ÁÝ´Ï´Ù
+f_DisplayMenu:
+; ´ÙÀ½ ù ¸î º¯¼öµéÀº ¿©±â¿¡¼­ ¼³Á¤ÇÏ°í f_OpenFavorite°¡ »ç¿ëÇÕ´Ï´Ù:
+WinGet, f_window_id, ID, A
+WinGetClass, f_class, ahk_id %f_window_id%
+if f_class in #32770,ExploreWClass,CabinetWClass  ; ´ëÈ­»óÀÚ ¶Ç´Â Ž»ö±â.
+    ControlGetPos, f_Edit1Pos,,,, Edit1, ahk_id %f_window_id%
+if f_AlwaysShowMenu = n  ; ¸Þ´º´Â ¼±ÅÃÀûÀ¸·Î¸¸ º¸¿©ÁÖ¾î¾ß ÇÕ´Ï´Ù.
+{
+    if f_class in #32770,ExploreWClass,CabinetWClass  ; ´ëÈ­»óÀÚ ¶Ç´Â Ž»ö±â.
+    {
+        if f_Edit1Pos =  ; ÄÜÆ®·ÑÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ±×·¡¼­ ¸Þ´º¸¦ º¸¿©ÁÖÁö ¾Ê½À´Ï´Ù
+            return
+    }
+    else if f_class <> ConsoleWindowClass
+        return ; ´Ù¸¥ À¯ÇüÀÇ Ã¢À̱⠶§¹®¿¡, ¸Þ´º¸¦ º¸¿©ÁÖÁö ¾Ê½À´Ï´Ù.
+}
+; ±×·¸Áö ¾ÊÀ¸¸é, ¸Þ´º¸¦ ÀÌ À¯ÇüÀÇ Ã¢¿¡ º¸¿© ÁÖ¾î¾ß ÇÕ´Ï´Ù:
+Menu, Favorites, show
+return
+
+ + diff --git a/src/docs/scripts/IntelliSense.ahk b/src/docs/scripts/IntelliSense.ahk new file mode 100644 index 0000000..d9aab70 --- /dev/null +++ b/src/docs/scripts/IntelliSense.ahk @@ -0,0 +1,188 @@ +; IntelliSense -- by Rajat (requires XP/2k/NT) +; http://www.autohotkey.com +; This script watches while you edit an AutoHotkey script. When it sees you +; type a command followed by a comma or space, it displays that command's +; parameter list to guide you. In addition, you can press Ctrl+F1 (or +; another hotkey of your choice) to display that command's page in the help +; file. To dismiss the parameter list, press Escape or Enter. + +; Requires v1.0.41+ + +; CONFIGURATION SECTION: Customize the script with the following variables. + +; The hotkey below is pressed to display the current command's page in the +; help file: +I_HelpHotkey = ^F1 + +; The string below must exist somewhere in the active window's title for +; IntelliSense to be in effect while you're typing. Make it blank to have +; IntelliSense operate in all windows. Make it Pad to have it operate in +; editors such as Metapad, Notepad, and Textpad. Make it .ahk to have it +; operate only when a .ahk file is open in Notepad, Metapad, etc. +I_Editor = pad + +; If you wish to have a different icon for this script to distinguish it from +; other scripts in the tray, provide the filename below (leave blank to have +; no icon). For example: E:\stuff\Pics\icons\GeoIcons\Information.ico +I_Icon = + +; END OF CONFIGURATION SECTION (do not make changes below this point unless +; you want to change the basic functionality of the script). + +SetKeyDelay, 0 +#SingleInstance + +if I_HelpHotkey <> + Hotkey, %I_HelpHotkey%, I_HelpHotkey + +; Change tray icon (if one was specified in the configuration section above): +if I_Icon <> + IfExist, %I_Icon% + Menu, Tray, Icon, %I_Icon% + +; Determine AutoHotkey's location: +RegRead, ahk_dir, HKEY_LOCAL_MACHINE, SOFTWARE\AutoHotkey, InstallDir +if ErrorLevel ; Not found, so look for it in some other common locations. +{ + if A_AhkPath + SplitPath, A_AhkPath,, ahk_dir + else IfExist ..\..\AutoHotkey.chm + ahk_dir = ..\.. + else IfExist %A_ProgramFiles%\AutoHotkey\AutoHotkey.chm + ahk_dir = %A_ProgramFiles%\AutoHotkey + else + { + MsgBox Could not find the AutoHotkey folder. + ExitApp + } +} + +ahk_help_file = %ahk_dir%\AutoHotkey.chm + +; Read command syntaxes: +Loop, Read, %ahk_dir%\Extras\Editors\Syntax\Commands.txt +{ + I_FullCmd = %A_LoopReadLine% + + ; Directives have a first space instead of a first comma. + ; So use whichever comes first as the end of the command name: + StringGetPos, I_cPos, I_FullCmd, `, + StringGetPos, I_sPos, I_FullCmd, %A_Space% + if (I_cPos = -1 or (I_cPos > I_sPos and I_sPos <> -1)) + I_EndPos := I_sPos + else + I_EndPos := I_cPos + + if I_EndPos <> -1 + StringLeft, I_CurrCmd, I_FullCmd, %I_EndPos% + else ; This is a directive/command with no parameters. + I_CurrCmd = %A_LoopReadLine% + + StringReplace, I_CurrCmd, I_CurrCmd, [,, All + StringReplace, I_CurrCmd, I_CurrCmd, %A_Space%,, All + StringReplace, I_FullCmd, I_FullCmd, ``n, `n, All + StringReplace, I_FullCmd, I_FullCmd, ``t, `t, All + + ; Make arrays of command names and full cmd syntaxes: + I_Cmd%A_Index% = %I_CurrCmd% + I_FullCmd%A_Index% = %I_FullCmd% +} + +; Use the Input command to watch for commands that the user types: +Loop +{ + ; Editor window check: + WinGetTitle, ActiveTitle, A + IfNotInString, ActiveTitle, %I_Editor% + { + ToolTip + Sleep, 500 + Continue + } + + ; Get all keys till endkey: + Input, I_Word, V, {enter}{escape}{space}`, + I_EndKey = %ErrorLevel% + + ; Tooltip is hidden in these cases: + if I_EndKey in EndKey:Enter,EndKey:Escape + { + ToolTip + Continue + } + + ; Editor window check again! + WinGetActiveTitle, ActiveTitle + IfNotInString, ActiveTitle, %I_Editor% + { + ToolTip + Continue + } + + ; Compensate for any indentation that is present: + StringReplace, I_Word, I_Word, %A_Space%,, All + StringReplace, I_Word, I_Word, %A_Tab%,, All + if I_Word = + Continue + + ; Check for commented line: + StringLeft, I_Check, I_Word, 1 + if (I_Check = ";" or I_Word = "If") ; "If" seems a little too annoying to show tooltip for. + Continue + + ; Match word with command: + I_Index = + Loop + { + ; It helps performance to resolve dynamic variables only once. + ; In addition, the value put into I_ThisCmd is also used by the + ; I_HelpHotkey subroutine: + I_ThisCmd := I_Cmd%A_Index% + if I_ThisCmd = + break + if (I_Word = I_ThisCmd) + { + I_Index := A_Index + I_HelpOn = %I_ThisCmd% + break + } + } + + ; If no match then resume watching user input: + if I_Index = + Continue + + ; Show matched command to guide the user: + I_ThisFullCmd := I_FullCmd%I_Index% + ToolTip, %I_ThisFullCmd%, A_CaretX, A_CaretY + 20 +} + + + +I_HelpHotkey: +WinGetTitle, ActiveTitle, A +IfNotInString, ActiveTitle, %I_Editor%, Return + +ToolTip ; Turn off syntax helper since there is no need for it now. + +SetTitleMatchMode, 1 ; In case it's 3. This setting is in effect only for this thread. +IfWinNotExist, AutoHotkey Help +{ + IfNotExist, %ahk_help_file% + { + MsgBox, Could not find the help file: %ahk_help_file%. + return + } + Run, %ahk_help_file% + WinWait, AutoHotkey Help +} + +if I_ThisCmd = ; Instead, use what was most recently typed. + I_ThisCmd := I_Word + +; The above has set the "last found" window which we use below: +WinActivate +WinWaitActive +StringReplace, I_ThisCmd, I_ThisCmd, #, {#} ; Replace leading #, if any. +Send, !n{home}+{end}%I_HelpOn%{enter} +return diff --git a/src/docs/scripts/IntelliSense.htm b/src/docs/scripts/IntelliSense.htm new file mode 100644 index 0000000..28f1a9a --- /dev/null +++ b/src/docs/scripts/IntelliSense.htm @@ -0,0 +1,198 @@ + + +IntelliSense -- by Rajat (requires XP/2k/NT) + + + + + + + +

IntelliSense -- by Rajat (XP/2k/NT ÀÌ»ó)

+ +

ÀÌ ½ºÅ©¸³Æ®´Â AutoHotkey ½ºÅ©¸³Æ®¸¦ ÆíÁýÇÏ´Â µ¿¾È °¨½ÃÇÏ´Ù°¡ ¸í·É¾î ´ÙÀ½¿¡ ½°Ç¥³ª ½ºÆäÀ̽º¸¦ ŸÀÚÇÏ´Â ¼ø°£, ±× ¸í·É¾îÀÇ ¸Å°³º¯¼ö ¸®½ºÆ®¸¦ º¸¿©ÁÝ´Ï´Ù °Ô´Ù°¡ Ctrl+F1 (¶Ç´Â ¿©·¯ºÐÀÇ ¼±Åÿ¡ µû¶ó ´Ù¸¥ ÇÖÅ°)¸¦ ´©¸£¸é ±× ¸í·É¾îÀÇ µµ¿ò¸»À» º¸¿©ÁÝ´Ï´Ù. ¸Å°³º¯¼ö ¸®½ºÆ®¸¦ Ãë¼ÒÇÏ·Á¸é Escape ¶Ç´Â Enter¸¦ ´©¸£½Ê½Ã¿À. +

+

ÀÌ ½ºÅ©¸³Æ®¸¦ ³»·Á¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

+ +
; Requires v1.0.41+
+
+; CONFIGURATION SECTION: ½ºÅ©¸³Æ®¸¦ ´Ù¿ò º¯¼ö·Î Àç´ÜÇÕ´Ï´Ù.
+
+; ¾Æ·¡ÀÇ ÇÖÅ°¸¦ ´©¸£¸é ÇöÀç ¸í·É¾îÀÇ µµ¿ò¸»À» º¸¿©ÁÝ´Ï´Ù:
+I_HelpHotkey = ^F1
+
+; ¾Æ·¡ÀÇ ¹®ÀÚ¿­ÀÌ È°¼ºÃ¢ÀÇ Á¦¸ñ¿¡ Á¸ÀçÇؾß
+; ŸÀÚÇÏ´Â µ¿¾È IntelliSense°¡ ÀÛµ¿ÇÕ´Ï´Ù.  ºñ¿ö µÎ¸é
+; IntelliSense´Â ¸ðµç â¿¡ ÀÛµ¿ÇÕ´Ï´Ù. Pad·Î ¸¸µé¸é 
+; Metapad, Notepad, ±×¸®°í Textpad °°Àº ÆíÁý±â¿¡¼­ ÀÛµ¿ÇÕ´Ï´Ù.  .ahk·Î ¸¸µé¸é
+; ¿ÀÁ÷ .ahk ÆÄÀÏÀÌ Notepad, Metapad, µîµî¿¡ ¿­·Á ÀÖÀ» °æ¿ì¿¡¸¸ ÀÛµ¿ÇÕ´Ï´Ù.
+I_Editor = pad
+
+; Æ®·¹ÀÌ¿¡ ´Ù¸¥ ½ºÅ©¸³Æ®¿Í Â÷º°À» À§ÇØ ÀÌ ½ºÅ©¸³Æ®¿¡ ´ëÇÏ¿© ´Ù¸¥ ¾ÆÀÌÄÜÀ» »ç¿ëÇÏ°í ½ÍÀ¸¸é
+; ¾Æ·¡¿¡ ÆÄÀÏ À̸§À» Á¦°øÇϽʽÿÀ. (ºñ¿ö µÎ¸é ¾ÆÀÌÄÜÀÌ ¾ø½À´Ï´Ù).
+; ¿¹¸¦ µé¾î: E:\stuff\Pics\icons\GeoIcons\Information.ico
+I_Icon = 
+
+; END OF CONFIGURATION SECTION (ÀÌ ½ÃÁ¡ ÀÌÈÄ·Î º¯°æÇÏÁö ¸¶½Ê½Ã¿À.
+; ´Ü, ½ºÅ©¸³Æ®ÀÇ ±âº» ±â´ÉÀ» ¹Ù²Ù°í ½ÍÀº °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù).
+
+SetKeyDelay, 0
+#SingleInstance
+
+if I_HelpHotkey <>
+    Hotkey, %I_HelpHotkey%, I_HelpHotkey
+
+; Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» ¹Ù²ß´Ï´Ù (À§ÀÇ È¯°æ ±¸¼º ¼½¼Ç¿¡ ÁöÁ¤µÇ¾î ÀÖ´Ù¸é):
+if I_Icon <>
+    IfExist, %I_Icon%
+        Menu, Tray, Icon, %I_Icon%
+
+; ¿ÀÅäÇÖÅ°ÀÇ À§Ä¡¸¦ ¾Ë¾Æ ³À´Ï´Ù:
+RegRead, ahk_dir, HKEY_LOCAL_MACHINE, SOFTWARE\AutoHotkey, InstallDir
+if ErrorLevel  ; ¹ß°ßÀÌ ¾ÈµÇ¾úÀ¸¹Ç·Î, ´Ù¸¥ À§Ä¡¿¡¼­ ã¾Æ º¾´Ï´Ù.
+{
+    if A_AhkPath
+        SplitPath, A_AhkPath,, ahk_dir
+    else IfExist ..\..\AutoHotkey.chm
+        ahk_dir = ..\..
+    else IfExist %A_ProgramFiles%\AutoHotkey\AutoHotkey.chm
+        ahk_dir = %A_ProgramFiles%\AutoHotkey
+    else
+    {
+        MsgBox Could not find the AutoHotkey folder.
+        ExitApp
+    }
+}
+
+ahk_help_file = %ahk_dir%\AutoHotkey.chm
+
+; ¸í·É¾î ±¸¹®À» ÀнÀ´Ï´Ù:
+Loop, Read, %ahk_dir%\Extras\Editors\Syntax\Commands.txt
+{
+    I_FullCmd = %A_LoopReadLine%
+
+    ; Áö½Ã¾îµéÀº ½°Ç¥°¡ ¾Æ´Ï¶ó ½ºÆäÀ̽º¸¦ ù ¹ø°·Î °¡Áý´Ï´Ù.
+    ; ±×·¡¼­ ¸ÕÀú ¿À´Â °ÍÀ» ¸í·É¾î À̸§ÀÇ ³¡À¸·Î °£ÁÖÇÕ´Ï´Ù:
+    StringGetPos, I_cPos, I_FullCmd, `,
+    StringGetPos, I_sPos, I_FullCmd, %A_Space%
+    if (I_cPos = -1 or (I_cPos > I_sPos and I_sPos <> -1))
+        I_EndPos := I_sPos
+    else
+        I_EndPos := I_cPos
+
+    if I_EndPos <> -1
+        StringLeft, I_CurrCmd, I_FullCmd, %I_EndPos%
+    else  ; ÀÌ Áö½Ã¾î/¸í·É¾î´Â ¸Å°³º¯¼ö°¡ ¾ø½À´Ï´Ù.
+        I_CurrCmd = %A_LoopReadLine%
+    
+    StringReplace, I_CurrCmd, I_CurrCmd, [,, All
+    StringReplace, I_CurrCmd, I_CurrCmd, %A_Space%,, All
+    StringReplace, I_FullCmd, I_FullCmd, ``n, `n, All
+    StringReplace, I_FullCmd, I_FullCmd, ``t, `t, All
+    
+    ; ¸í·É¾î À̸§ ¹è¿­°ú ¿ÏÀüÇÑ cmd ±¸¹®À» ±¸¼ºÇÕ´Ï´Ù:
+    I_Cmd%A_Index% = %I_CurrCmd%
+    I_FullCmd%A_Index% = %I_FullCmd%
+}
+
+; Input ¸í·É¾î¸¦ »ç¿ëÇØ »ç¿ëÀÚ°¡ ŸÀÚÇÏ´Â ¸í·É¾î¸¦ °¨½ÃÇÕ´Ï´Ù:
+Loop
+{
+    ; ÆíÁý±â â Á¡°Ë:
+    WinGetTitle, ActiveTitle, A
+    IfNotInString, ActiveTitle, %I_Editor%
+    {
+        ToolTip
+        Sleep, 500
+        Continue
+    }
+    
+    ; ¿£µåÅ°¸¦ ¸¸³¯¶§±îÁö ¸ðµç Å°¸¦ ¾ò½À´Ï´Ù:
+    Input, I_Word, V, {enter}{escape}{space}`,
+    I_EndKey = %ErrorLevel%
+    
+    ; ÀÌ °æ¿ì ÅøÆÁÀº º¸ÀÌÁö ¾Ê½À´Ï´Ù:
+    if I_EndKey in EndKey:Enter,EndKey:Escape
+    {
+        ToolTip
+        Continue
+    }
+
+    ; ´Ù½Ã ÆíÁý±â âÀ» Á¡°ËÇÕ´Ï´Ù!
+    WinGetActiveTitle, ActiveTitle
+    IfNotInString, ActiveTitle, %I_Editor%
+    {
+        ToolTip
+        Continue
+    }
+
+    ; Á¸ÀçÇÏ´Â µé¿©¾²±â ¸¸Å­ º¸»óÇÕ´Ï´Ù:
+    StringReplace, I_Word, I_Word, %A_Space%,, All
+    StringReplace, I_Word, I_Word, %A_Tab%,, All
+    if I_Word =
+        Continue
+    
+    ; ÁÖ¼® ÁÙÀ» Á¡°ËÇÕ´Ï´Ù:
+    StringLeft, I_Check, I_Word, 1
+    if (I_Check = ";" or I_Word = "If")  ; "If"´Â ÅøÆÁÀ» º¸¿©Áֱ⿡´Â ³Ê¹« °ÅÃßÀ彺·´½À´Ï´Ù.
+        Continue
+
+    ; ´Ü¾î¸¦ ¸í·É¾î¿¡ ºÎÇÕ½Ãŵ´Ï´Ù:
+    I_Index =
+    Loop
+    {
+        ; µ¿Àû º¯¼ö¸¦ ÇÑ ¹ø¸¸ °áÁ¤ÇÏ¸é ¼öÇ༺´ÉÀÌ °³¼±µË´Ï´Ù.
+        ; °Ô´Ù°¡,  I_ThisCmd¿¡ ¹è°æµÈ °ªÀº ¶Ç
+        ; I_HelpHotkey ¼­ºê·çƾÀÌ »ç¿ëÇÕ´Ï´Ù:
+        I_ThisCmd := I_Cmd%A_Index%
+        if I_ThisCmd =
+            break
+        if (I_Word = I_ThisCmd)
+        {
+            I_Index := A_Index
+            I_HelpOn = %I_ThisCmd%
+            break
+        }
+    }
+    
+    ; ºÎÇÕÀÌ ¾øÀ¸¸é »ç¿ëÀÚ ÀÔ·Â °¨½Ã¸¦ Àç°³ÇÕ´Ï´Ù:
+    if I_Index =
+        Continue
+    
+    ; ºÎÇÕµÈ ¸í·É¾î¸¦ º¸¿©ÁÖ¾î »ç¿ëÀÚ¸¦ ¾È³»ÇÕ´Ï´Ù:
+    I_ThisFullCmd := I_FullCmd%I_Index%
+    ToolTip, %I_ThisFullCmd%, A_CaretX, A_CaretY + 20
+}
+
+
+
+I_HelpHotkey:
+WinGetTitle, ActiveTitle, A
+IfNotInString, ActiveTitle, %I_Editor%, Return
+
+ToolTip  ; Áö±Ý ´çÀåÀº ÇÊ¿ä°¡ ¾ø±â ¶§¹®¿¡ ±¸¹® µµ¿ò ÅøÆÁÀ» ²ü´Ï´Ù.
+
+SetTitleMatchMode, 1  ; 3ÀÇ °æ¿ì, ÀÌ ¼³Á¤Àº ÀÌ ¾²·¹µå¿¡¸¸ È¿°ú°¡ ÀÖ½À´Ï´Ù.
+IfWinNotExist, AutoHotkey Help
+{
+    IfNotExist, %ahk_help_file%
+    {
+        MsgBox, Could not find the help file: %ahk_help_file%.
+        return
+    }
+    Run, %ahk_help_file%
+    WinWait, AutoHotkey Help
+}
+
+if I_ThisCmd =  ; ´ë½Å¿¡, ÃÖ±Ù¿¡ ŸÀÚµÈ °ÍÀ» »ç¿ëÇÕ´Ï´Ù.
+    I_ThisCmd := I_Word
+
+; À§¿¡¼­ "¸¶Áö¸· ¹ß°ß" âÀÌ ¼³Á¤µÇ¾ú°í ±×°ÍÀ» ¾Æ·¡¿¡ »ç¿ëÇÕ´Ï´Ù:
+WinActivate
+WinWaitActive
+StringReplace, I_ThisCmd, I_ThisCmd, #, {#}  ; ÀÖ´Ù¸é, ¾ÕÀÇ #¸¦ ±³Ã¼ÇÕ´Ï´Ù.
+Send, !n{home}+{end}%I_HelpOn%{enter}
+return
+
+ + diff --git a/src/docs/scripts/JoystickMouse.ahk b/src/docs/scripts/JoystickMouse.ahk new file mode 100644 index 0000000..5295afc --- /dev/null +++ b/src/docs/scripts/JoystickMouse.ahk @@ -0,0 +1,155 @@ +; Using a Joystick as a Mouse +; http://www.autohotkey.com +; This script converts a joystick into a three-button mouse. It allows each +; button to drag just like a mouse button and it uses virtually no CPU time. +; Also, it will move the cursor faster depending on how far you push the joystick +; from center. You can personalize various settings at the top of the script. + +; Increase the following value to make the mouse cursor move faster: +JoyMultiplier = 0.30 + +; Decrease the following value to require less joystick displacement-from-center +; to start moving the mouse. However, you may need to calibrate your joystick +; -- ensuring it's properly centered -- to avoid cursor drift. A perfectly tight +; and centered joystick could use a value of 1: +JoyThreshold = 3 + +; Change the following to true to invert the Y-axis, which causes the mouse to +; move vertically in the direction opposite the stick: +InvertYAxis := false + +; Change these values to use joystick button numbers other than 1, 2, and 3 for +; the left, right, and middle mouse buttons. Available numbers are 1 through 32. +; Use the Joystick Test Script to find out your joystick's numbers more easily. +ButtonLeft = 1 +ButtonRight = 2 +ButtonMiddle = 3 + +; If your joystick has a POV control, you can use it as a mouse wheel. The +; following value is the number of milliseconds between turns of the wheel. +; Decrease it to have the wheel turn faster: +WheelDelay = 250 + +; If your system has more than one joystick, increase this value to use a joystick +; other than the first: +JoystickNumber = 1 + +; END OF CONFIG SECTION -- Don't change anything below this point unless you want +; to alter the basic nature of the script. + +#SingleInstance + +JoystickPrefix = %JoystickNumber%Joy +Hotkey, %JoystickPrefix%%ButtonLeft%, ButtonLeft +Hotkey, %JoystickPrefix%%ButtonRight%, ButtonRight +Hotkey, %JoystickPrefix%%ButtonMiddle%, ButtonMiddle + +; Calculate the axis displacements that are needed to start moving the cursor: +JoyThresholdUpper := 50 + JoyThreshold +JoyThresholdLower := 50 - JoyThreshold +if InvertYAxis + YAxisMultiplier = -1 +else + YAxisMultiplier = 1 + +SetTimer, WatchJoystick, 10 ; Monitor the movement of the joystick. + +GetKeyState, JoyInfo, %JoystickNumber%JoyInfo +IfInString, JoyInfo, P ; Joystick has POV control, so use it as a mouse wheel. + SetTimer, MouseWheel, %WheelDelay% + +return ; End of auto-execute section. + + +; The subroutines below do not use KeyWait because that would sometimes trap the +; WatchJoystick quasi-thread beneath the wait-for-button-up thread, which would +; effectively prevent mouse-dragging with the joystick. + +ButtonLeft: +SetMouseDelay, -1 ; Makes movement smoother. +MouseClick, left,,, 1, 0, D ; Hold down the left mouse button. +SetTimer, WaitForLeftButtonUp, 10 +return + +ButtonRight: +SetMouseDelay, -1 ; Makes movement smoother. +MouseClick, right,,, 1, 0, D ; Hold down the right mouse button. +SetTimer, WaitForRightButtonUp, 10 +return + +ButtonMiddle: +SetMouseDelay, -1 ; Makes movement smoother. +MouseClick, middle,,, 1, 0, D ; Hold down the right mouse button. +SetTimer, WaitForMiddleButtonUp, 10 +return + +WaitForLeftButtonUp: +if GetKeyState(JoystickPrefix . ButtonLeft) + return ; The button is still, down, so keep waiting. +; Otherwise, the button has been released. +SetTimer, WaitForLeftButtonUp, off +SetMouseDelay, -1 ; Makes movement smoother. +MouseClick, left,,, 1, 0, U ; Release the mouse button. +return + +WaitForRightButtonUp: +if GetKeyState(JoystickPrefix . ButtonRight) + return ; The button is still, down, so keep waiting. +; Otherwise, the button has been released. +SetTimer, WaitForRightButtonUp, off +MouseClick, right,,, 1, 0, U ; Release the mouse button. +return + +WaitForMiddleButtonUp: +if GetKeyState(JoystickPrefix . ButtonMiddle) + return ; The button is still, down, so keep waiting. +; Otherwise, the button has been released. +SetTimer, WaitForMiddleButtonUp, off +MouseClick, middle,,, 1, 0, U ; Release the mouse button. +return + +WatchJoystick: +MouseNeedsToBeMoved := false ; Set default. +SetFormat, float, 03 +GetKeyState, joyx, %JoystickNumber%JoyX +GetKeyState, joyy, %JoystickNumber%JoyY +if joyx > %JoyThresholdUpper% +{ + MouseNeedsToBeMoved := true + DeltaX := joyx - JoyThresholdUpper +} +else if joyx < %JoyThresholdLower% +{ + MouseNeedsToBeMoved := true + DeltaX := joyx - JoyThresholdLower +} +else + DeltaX = 0 +if joyy > %JoyThresholdUpper% +{ + MouseNeedsToBeMoved := true + DeltaY := joyy - JoyThresholdUpper +} +else if joyy < %JoyThresholdLower% +{ + MouseNeedsToBeMoved := true + DeltaY := joyy - JoyThresholdLower +} +else + DeltaY = 0 +if MouseNeedsToBeMoved +{ + SetMouseDelay, -1 ; Makes movement smoother. + MouseMove, DeltaX * JoyMultiplier, DeltaY * JoyMultiplier * YAxisMultiplier, 0, R +} +return + +MouseWheel: +GetKeyState, JoyPOV, %JoystickNumber%JoyPOV +if JoyPOV = -1 ; No angle. + return +if (JoyPOV > 31500 or JoyPOV < 4500) ; Forward + Send {WheelUp} +else if JoyPOV between 13500 and 22500 ; Back + Send {WheelDown} +return diff --git a/src/docs/scripts/JoystickMouse.htm b/src/docs/scripts/JoystickMouse.htm new file mode 100644 index 0000000..7d51e9d --- /dev/null +++ b/src/docs/scripts/JoystickMouse.htm @@ -0,0 +1,167 @@ + + +Using a Joystick as a Mouse + + + + + + + +

Á¶À̽ºÆ½À» ¸¶¿ì½ºÃ³·³ »ç¿ëÇϱâ

+ +

ÀÌ ½ºÅ©¸³Æ®´Â Á¶À̽ºÆ½À» ¼¼ ¹öÆ° ¸¶¿ì½º·Î º¯½Å½Ãŵ´Ï´Ù. °¢ ¹öÆ°À» ¸¶Ä¡ ¸¶¿ì½º ¹öÆ° ó·³ ²ø ¼ö ÀÖ°í »ç½Ç»ó CPU ½Ã°£À» ¼ÒºñÇÏÁö ¾Ê½À´Ï´Ù. ¶ÇÇÑ, Á¶À̽ºÆ½À» Áß¾ÓÀ¸·ÎºÎÅÍ ¸Ö¸® ¹Ð¼ö·Ï Ä¿¼­¸¦ ´õ »¡¸® À̵¿½Ãŵ´Ï´Ù. ´Ù¾çÇÑ ¼³Á¤Àº ½ºÅ©¸³Æ® »ó´Ü¿¡¼­ ±âÈ£¿¡ ¸Â°Ô Àç´ÜÇÒ ¼ö ÀÖ½À´Ï´Ù. +

+

ÀÌ ½ºÅ©¸³Æ® ³»·Á¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

+ +
; ¸¶¿ì½º Ä¿¼­¸¦ ´õ »¡¸® À̵¿½ÃÅ°·Á¸é ´ÙÀ½ °ªÀ» Áõ°¡½ÃÅ°¸é µË´Ï´Ù:
+JoyMultiplier = 0.30
+
+; ´ÙÀ½ °ªÀ» ÁÙÀ̸é Á¶À̽ºÆ½ Áß¾ÓÀ¸·ÎºÎÅÍ Á» ´ú ¹Ð¾îµµ 
+; ¸¶¿ì½º¸¦ À̵¿½ÃÅ°±â ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, Á¶À̽ºÆ½ ´«±Ý Á¶Á¤ÀÌ ÇÊ¿äÇÒ ¼ö ÀÖ½À´Ï´Ù.
+; -- ÀûÀýÈ÷ Áß¾Ó¿¡ Á¤·ÄµÇ¾ú´ÂÁö È®ÀÎÇØ¾ß ÇØ¾ß -- Ä¿¼­°¡ Ç¥·ùÇÏ´Â °ÍÀ» ÇÇÇÒ ¼ö ÀÖ½º´Ï´Ù. 
+; ¿Ïº®ÇÏ°Ô ºóÆ´ ¾øÀÌ Áß¾Ó Á¤·ÄµÈ Á¶À̽ºÆ½Àº °ª 1À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:
+JoyThreshold = 3
+
+; ´ÙÀ½À» true·Î ¹Ù²Ù¸é Y-ÃàÀ» µÚÁýÀ» ¼ö ÀÖ½À´Ï´Ù.
+; ±×·¯¸é ¸¶¿ì½º´Â Á¶À̽ºÆ½ÀÇ ¼öÁ÷ ¹Ý´ë ¹æÇâÀ¸·Î À̵¿ÇÕ´Ï´Ù:
+InvertYAxis := false
+
+; ´ÙÀ½ °ªµéÀ» ¹Ù²Ù¸é Á¶À̽ºÆ½ ¹öÆ° ¹øÈ£¸¦ ¿ÞÂÊ, ¿À¸¥ÂÊ, ±×¸®°í °¡¿îµ¥ ¸¶¿ì½º ¹öÆ°¿¡ ´ëÇÏ¿©
+; 1, 2, ±×¸®°í 3 ¸»°í ´Ù¸¥ °ªÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. °¡´ÉÇÑ °ªÀº 1ºÎÅÍ 32±îÁöÀÔ´Ï´Ù.
+; Á¶À̽ºÆ½ Å×½ºÆ® ½ºÅ©¸³Æ®¸¦ »ç¿ëÇϸé Á¶À̽ºÆ½ ¹øÈ£¸¦ ´õ ½±°Ô ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù.
+ButtonLeft = 1
+ButtonRight = 2
+ButtonMiddle = 3
+
+; Á¶À̽ºÆ½¿¡ POV ÄÜÆ®·ÑÀÌ ÀÖ´Ù¸é, ±×°ÍÀ» ¸¶¿ì½º ÈÙ·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
+; ´ÙÀ½ °ªÀº ÈÙÀÇ È¸Àü »çÀÌÀÇ ¹Ð¸®ÃÊÀÇ °³¼öÀÔ´Ï´Ù.
+; °³¼ö¸¦ ÁÙÀ̸é ÈÙÀÌ ´õ »¡¸® ȸÀüÇÕ´Ï´Ù:
+WheelDelay = 250
+
+; Á¶À̽ºÆ½ÀÌ ¿©·¯ °³À̸é, ÀÌ °ªÀ» Áõ°¡½ÃÄÑ
+; ´Ù¸¥ Á¶À̽ºÆ½À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:
+JoystickNumber = 1
+
+; END OF CONFIG SECTION -- ÀÌ ½ÃÁ¡ ¾Æ·¡·Î ¾Æ¹« °Íµµ º¯°æÇÏÁö ¸¶½Ê½Ã¿À.
+; ´Ü, ½ºÅ©¸³Æ®ÀÇ ±âº» ±â´ÉÀ» º¯°æÇÏ°í ½ÍÀº °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.
+
+#SingleInstance
+
+JoystickPrefix = %JoystickNumber%Joy
+Hotkey, %JoystickPrefix%%ButtonLeft%, ButtonLeft
+Hotkey, %JoystickPrefix%%ButtonRight%, ButtonRight
+Hotkey, %JoystickPrefix%%ButtonMiddle%, ButtonMiddle
+
+; ¸¶¿ì½º À̵¿À» ½ÃÀÛ½ÃÅ°´Âµ¥ ÇÊ¿äÇÑ ÃàÀÇ ÀÌ°ÝÀ» °è»êÇÕ´Ï´Ù:
+JoyThresholdUpper := 50 + JoyThreshold
+JoyThresholdLower := 50 - JoyThreshold
+if InvertYAxis
+    YAxisMultiplier = -1
+else
+    YAxisMultiplier = 1
+
+SetTimer, WatchJoystick, 10  ; Á¶À̽ºÆ½ÀÇ À̵¿À» °üÁ¦ÇÕ´Ï´Ù.
+
+GetKeyState, JoyInfo, %JoystickNumber%JoyInfo
+IfInString, JoyInfo, P  ; Á¶À̽ºÆ½¿¡ POV ÄÜÆ®·ÑÀÌ ÀÖ½À´Ï´Ù. ±×·¡¼­ ±×°ÍÀ» ¸¶¿ì½º ÈÙ·Î »ç¿ëÇÕ´Ï´Ù.
+    SetTimer, MouseWheel, %WheelDelay%
+
+return  ; ÀÚµ¿ ½ÇÇà ¼½¼ÇÀÇ ³¡.
+
+
+; ¾Æ·¡ÀÇ ¼­ºê·çƾÀº KeyWait¸¦ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù.
+; ¿Ö³ÄÇϸé Á¾Á¾ ¹öÆ°-¾÷-´ë±â ¾²·¹µå ¾Æ·¡ÀÇ WatchJoystick ÀÇ»ç-¾²·¹µå¸¦ °¡·Î ä°í,
+; ±×·¯¸é Á¶À̽ºÆ½À¸·Î ¸¶¿ì½º ²ø±â¸¦ ¹æÇØÇÏ´Â È¿°ú°¡ Àֱ⠶§¹®ÀÔ´Ï´Ù.
+
+ButtonLeft:
+SetMouseDelay, -1  ;  ´õ ºÎµå·´°Ô À̵¿Çϵµ·Ï ¸¸µì´Ï´Ù.
+MouseClick, left,,, 1, 0, D  ; ¿ÞÂÊ ¸¶¿ì½º ¹öÆ°À» ´©¸£°í ÀÖ½À´Ï´Ù.
+SetTimer, WaitForLeftButtonUp, 10
+return
+
+ButtonRight:
+SetMouseDelay, -1  ; ´õ ºÎµå·´°Ô À̵¿Çϵµ·Ï ¸¸µì´Ï´Ù.
+MouseClick, right,,, 1, 0, D  ; ¿À¸¥ÂÊ ¸¶¿ì½º ¹öÆ°À» ´©¸£°í ÀÖ½À´Ï´Ù.
+SetTimer, WaitForRightButtonUp, 10
+return
+
+ButtonMiddle:
+SetMouseDelay, -1  ; ´õ ºÎµå·´°Ô À̵¿Çϵµ·Ï ¸¸µì´Ï´Ù.
+MouseClick, middle,,, 1, 0, D  ; ¿À¸¥ÂÊ ¸¶¿ì½º ¹öÆ°À» ´©¸£°í ÀÖ½À´Ï´Ù.
+SetTimer, WaitForMiddleButtonUp, 10
+return
+
+WaitForLeftButtonUp:
+if GetKeyState(JoystickPrefix . ButtonLeft)
+    return  ; ¹öÆ°ÀÌ ¿©ÀüÈ÷ ´­·Á ÀÖ½À´Ï´Ù. ±×·¡¼­ °è¼Ó ´ë±âÇÕ´Ï´Ù.
+; ±×·¸Áö ¾ÊÀ¸¸é, ¹öÆ°ÀÌ ¶¼¾îÁ³½À´Ï´Ù.
+SetTimer, WaitForLeftButtonUp, off
+SetMouseDelay, -1  ; ´õ ºÎµå·´°Ô À̵¿Çϵµ·Ï ¸¸µì´Ï´Ù.
+MouseClick, left,,, 1, 0, U  ; ¸¶¿ì½º ¹öÆ°À» ¶Á´Ï´Ù.
+return
+
+WaitForRightButtonUp:
+if GetKeyState(JoystickPrefix . ButtonRight)
+    return  ; ¹öÆ°ÀÌ ¿©ÀüÈ÷ ´­·Á ÀÖ½À´Ï´Ù. ±×·¡¼­ °è¼Ó ±â´Ù¸³´Ï´Ù.
+; ±×·¸Áö ¾ÊÀ¸¸é, ¹öÆ°ÀÌ ¶¼¾îÁ³½À´Ï´Ù.
+SetTimer, WaitForRightButtonUp, off
+MouseClick, right,,, 1, 0, U  ; ¸¶¿ì½º ¹öÆ°À» ¶Á´Ï´Ù.
+return
+
+WaitForMiddleButtonUp:
+if GetKeyState(JoystickPrefix . ButtonMiddle)
+    return  ; ¹öÆ°ÀÌ ¿©ÀüÈ÷ ´­·Á ÀÖ½À´Ï´Ù. ±×·¡¼­ °è¼Ó ±â´Ù¸³´Ï´Ù.
+; ±×·¸Áö ¾ÊÀ¸¸é, ¹öÆ°ÀÌ ¶¼¾îÁ³½À´Ï´Ù.
+SetTimer, WaitForMiddleButtonUp, off
+MouseClick, middle,,, 1, 0, U  ; ¸¶¿ì½º ¹öÆ°À» ¶Á´Ï´Ù.
+return
+
+WatchJoystick:
+MouseNeedsToBeMoved := false  ; ±âº»°ªÀ» ¼³Á¤ÇÕ´Ï´Ù.
+SetFormat, float, 03
+GetKeyState, joyx, %JoystickNumber%JoyX
+GetKeyState, joyy, %JoystickNumber%JoyY
+if joyx > %JoyThresholdUpper%
+{
+    MouseNeedsToBeMoved := true
+    DeltaX := joyx - JoyThresholdUpper
+}
+else if joyx < %JoyThresholdLower%
+{
+    MouseNeedsToBeMoved := true
+    DeltaX := joyx - JoyThresholdLower
+}
+else
+    DeltaX = 0
+if joyy > %JoyThresholdUpper%
+{
+    MouseNeedsToBeMoved := true
+    DeltaY := joyy - JoyThresholdUpper
+}
+else if joyy < %JoyThresholdLower%
+{
+    MouseNeedsToBeMoved := true
+    DeltaY := joyy - JoyThresholdLower
+}
+else
+    DeltaY = 0
+if MouseNeedsToBeMoved
+{
+    SetMouseDelay, -1  ; ´õ ºÎµå·´°Ô À̵¿½Ãŵ´Ï´Ù.
+    MouseMove, DeltaX * JoyMultiplier, DeltaY * JoyMultiplier * YAxisMultiplier, 0, R
+}
+return
+
+MouseWheel:
+GetKeyState, JoyPOV, %JoystickNumber%JoyPOV
+if JoyPOV = -1  ; °¢µµ ¾øÀ½.
+    return
+if (JoyPOV > 31500 or JoyPOV < 4500)  ; ¾ÕÀ¸·Î À̵¿
+    Send {WheelUp}
+else if JoyPOV between 13500 and 22500  ; µÚ·Î À̵¿
+    Send {WheelDown}
+return
+
+ + diff --git a/src/docs/scripts/JoystickTest.ahk b/src/docs/scripts/JoystickTest.ahk new file mode 100644 index 0000000..4943c45 --- /dev/null +++ b/src/docs/scripts/JoystickTest.ahk @@ -0,0 +1,88 @@ +; Joystick Test Script +; http://www.autohotkey.com +; This script helps determine the button numbers and other attributes +; of your joystick. It might also reveal if your joystick is in need +; of calibration; that is, whether the range of motion of each of its +; axes is from 0 to 100 percent as it should be. If calibration is +; needed, use the operating system's control panel or the software +; that came with your joystick. + +; July 6, 2005: Added auto-detection of joystick number. +; May 8, 2005 : Fixed: JoyAxes is no longer queried as a means of +; detecting whether the joystick is connected. Some joysticks are +; gamepads and don't have even a single axis. + +; If you want to unconditionally use a specific joystick number, change +; the following value from 0 to the number of the joystick (1-16). +; A value of 0 causes the joystick number to be auto-detected: +JoystickNumber = 0 + +; END OF CONFIG SECTION. Do not make changes below this point unless +; you wish to alter the basic functionality of the script. + +; Auto-detect the joystick number if called for: +if JoystickNumber <= 0 +{ + Loop 16 ; Query each joystick number to find out which ones exist. + { + GetKeyState, JoyName, %A_Index%JoyName + if JoyName <> + { + JoystickNumber = %A_Index% + break + } + } + if JoystickNumber <= 0 + { + MsgBox The system does not appear to have any joysticks. + ExitApp + } +} + +#SingleInstance +SetFormat, float, 03 ; Omit decimal point from axis position percentages. +GetKeyState, joy_buttons, %JoystickNumber%JoyButtons +GetKeyState, joy_name, %JoystickNumber%JoyName +GetKeyState, joy_info, %JoystickNumber%JoyInfo +Loop +{ + buttons_down = + Loop, %joy_buttons% + { + GetKeyState, joy%a_index%, %JoystickNumber%joy%a_index% + if joy%a_index% = D + buttons_down = %buttons_down%%a_space%%a_index% + } + GetKeyState, joyx, %JoystickNumber%JoyX + axis_info = X%joyx% + GetKeyState, joyy, %JoystickNumber%JoyY + axis_info = %axis_info%%a_space%%a_space%Y%joyy% + IfInString, joy_info, Z + { + GetKeyState, joyz, %JoystickNumber%JoyZ + axis_info = %axis_info%%a_space%%a_space%Z%joyz% + } + IfInString, joy_info, R + { + GetKeyState, joyr, %JoystickNumber%JoyR + axis_info = %axis_info%%a_space%%a_space%R%joyr% + } + IfInString, joy_info, U + { + GetKeyState, joyu, %JoystickNumber%JoyU + axis_info = %axis_info%%a_space%%a_space%U%joyu% + } + IfInString, joy_info, V + { + GetKeyState, joyv, %JoystickNumber%JoyV + axis_info = %axis_info%%a_space%%a_space%V%joyv% + } + IfInString, joy_info, P + { + GetKeyState, joyp, %JoystickNumber%JoyPOV + axis_info = %axis_info%%a_space%%a_space%POV%joyp% + } + ToolTip, %joy_name% (#%JoystickNumber%):`n%axis_info%`nButtons Down: %buttons_down%`n`n(right-click the tray icon to exit) + Sleep, 100 +} +return diff --git a/src/docs/scripts/JoystickTest.htm b/src/docs/scripts/JoystickTest.htm new file mode 100644 index 0000000..4607eaf --- /dev/null +++ b/src/docs/scripts/JoystickTest.htm @@ -0,0 +1,98 @@ + + +Joystick Test Script + + + + + + + +

Á¶À̽ºÆ½ Å×½ºÆ® ½ºÅ©¸³Æ®

+ +

ÀÌ ½ºÅ©¸³Æ®·Î Á¶À̽ºÆ½ÀÇ ¹öÆ° ¹øÈ£¿Í ±âŸ ¼Ó¼ºÀ» ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ¶Ç Á¶À̽ºÆ½ÀÌ ´«±Ý Á¶Á¤ÀÌ ÇÊ¿äÇÑÁö ³ëÃâ½ÃÄÑ ÁÝ´Ï´Ù; Áï, °¢ ÃàÀÇ À̵¿ ¹üÀ§´Â ±×·¡¾ß ÇÏ´Â °Íó·³ 0ºÎÅÍ 100 ÆÛ¼¾Æ® »çÀÌÀÔ´Ï´Ù. ´«±Ý Á¶Á¤ÀÌ ÇÊ¿äÇϸé, ¿î¿µ üÁ¦ÀÇ Á¦¾îÆÇÀ̳ª Á¶À̽ºÆ½¿¡ µû¶ó¿À´Â ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÌ¿ëÇϽʽÿÀ. +

+

ÀÌ ½ºÅ©¸³Æ® ³»·Á ¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

+ +
; July 6, 2005: Á¶À̽ºÆ½ ¹øÈ£¸¦ ÀÚµ¿ ŽÁö.
+; May 8, 2005 : ¼öÁ¤: Á¶À̽ºÆ½ÀÌ Á¢¼ÓµÇ¾î ÀÖ´ÂÁö ŽÁöÇÏ´Â ¼ö´ÜÀ¸·Î
+; JoyAxes¸¦ ´õ ÀÌ»ó ÁúÀÇÇÏÁö ¾ÊÀ½. ¾î¶² Á¶À̽ºÆ½Àº °ÔÀÓÆеåÀÌ°í
+; ÃàÀÌ Çϳªµµ ¾ø±â ¶§¹®ÀÔ´Ï´Ù.
+
+; ¹«Á¶°Ç ƯÁ¤ Á¶À̽ºÆ½ ¹øÈ£¸¦ »ç¿ëÇÏ°í ½Í´Ù¸é,
+; ´ÙÀ½ °ªÀ» 0¿¡¼­ Á¶À̽ºÆ½ ¹øÈ£·Î ¹Ù²ß´Ï´Ù (1-16).
+; °ªÀÌ 0À̸é Á¶À̽ºÆ½ ¹øÈ£¸¦ ÀÚµ¿ ŽÁöÇÕ´Ï´Ù:
+JoystickNumber = 0
+
+; END OF CONFIG SECTION. ÀÌ ½ÃÁ¡ ÀÌÈÄ·Î º¯°æÇÏÁö ¸¶½Ê½Ã¿À
+; ´Ü, ½ºÅ©¸³Æ®ÀÇ ±âº» ±â´ÉÀ» ¹Ù²Ù°í ½Í´Ù¸é ¿¹¿ÜÀÔ´Ï´Ù.
+
+; ¿äûÇϸé Á¶À̽ºÆ½ ¹øÈ£¸¦ ÀÚµ¿ ŽÁöÇÕ´Ï´Ù:
+if JoystickNumber <= 0
+{
+    Loop 16  ; °¢ Á¶À̽ºÆ½ ¹øÈ£¸¦ ÁúÀÇÇØ ¾î´À ¹øÈ£°¡ Á¸ÀçÇÏ´ÂÁö ¾Ë¾Æ³À´Ï´Ù.
+    {
+        GetKeyState, JoyName, %A_Index%JoyName
+        if JoyName <>
+        {
+            JoystickNumber = %A_Index%
+            break
+        }
+    }
+    if JoystickNumber <= 0
+    {
+        MsgBox ½Ã½ºÅÛ¿¡ Á¶À̽ºÆ½ÀÌ ÀåÂøµÇ¾î ÀÖÁö ¾ÊÀº °Í °°½À´Ï´Ù.
+        ExitApp
+    }
+}
+
+#SingleInstance
+SetFormat, float, 03  ; Ãà À§Ä¡ ÆÛ¼¾Æ®¿¡¼­ ¼Ò¼öÁ¡À» »ý·«ÇÕ´Ï´Ù.
+GetKeyState, joy_buttons, %JoystickNumber%JoyButtons
+GetKeyState, joy_name, %JoystickNumber%JoyName
+GetKeyState, joy_info, %JoystickNumber%JoyInfo
+Loop
+{
+    buttons_down =
+    Loop, %joy_buttons%
+    {
+        GetKeyState, joy%a_index%, %JoystickNumber%joy%a_index%
+        if joy%a_index% = D
+            buttons_down = %buttons_down%%a_space%%a_index%
+    }
+    GetKeyState, joyx, %JoystickNumber%JoyX
+    axis_info = X%joyx%
+    GetKeyState, joyy, %JoystickNumber%JoyY
+    axis_info = %axis_info%%a_space%%a_space%Y%joyy%
+    IfInString, joy_info, Z
+    {
+        GetKeyState, joyz, %JoystickNumber%JoyZ
+        axis_info = %axis_info%%a_space%%a_space%Z%joyz%
+    }
+    IfInString, joy_info, R
+    {
+        GetKeyState, joyr, %JoystickNumber%JoyR
+        axis_info = %axis_info%%a_space%%a_space%R%joyr%
+    }
+    IfInString, joy_info, U
+    {
+        GetKeyState, joyu, %JoystickNumber%JoyU
+        axis_info = %axis_info%%a_space%%a_space%U%joyu%
+    }
+    IfInString, joy_info, V
+    {
+        GetKeyState, joyv, %JoystickNumber%JoyV
+        axis_info = %axis_info%%a_space%%a_space%V%joyv%
+    }
+    IfInString, joy_info, P
+    {
+        GetKeyState, joyp, %JoystickNumber%JoyPOV
+        axis_info = %axis_info%%a_space%%a_space%POV%joyp%
+    }
+    ToolTip, %joy_name% (#%JoystickNumber%):`n%axis_info%`nButtons Down: %buttons_down%`n`n(Á¾·áÇÏ·Á¸é Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» ¿ìŬ¸¯ ÇϽʽÿÀ)
+    Sleep, 100
+}
+return
+
+ + diff --git a/src/docs/scripts/KeyboardOnScreen.ahk b/src/docs/scripts/KeyboardOnScreen.ahk new file mode 100644 index 0000000..e7d880f --- /dev/null +++ b/src/docs/scripts/KeyboardOnScreen.ahk @@ -0,0 +1,230 @@ +; On-Screen Keyboard (requires XP/2k/NT) -- by Jon +; http://www.autohotkey.com +; This script creates a mock keyboard at the bottom of your screen that shows +; the keys you are pressing in real time. I made it to help me to learn to +; touch-type (to get used to not looking at the keyboard). The size of the +; on-screen keyboard can be customized at the top of the script. Also, you +; can double-click the tray icon to show or hide the keyboard. + +;---- Configuration Section: Customize the size of the on-screen keyboard and +; other options here. + +; Changing this font size will make the entire on-screen keyboard get +; larger or smaller: +k_FontSize = 10 +k_FontName = Verdana ; This can be blank to use the system's default font. +k_FontStyle = Bold ; Example of an alternative: Italic Underline + +; Names for the tray menu items: +k_MenuItemHide = Hide on-screen &keyboard +k_MenuItemShow = Show on-screen &keyboard + +; To have the keyboard appear on a monitor other than the primary, specify +; a number such as 2 for the following variable. Leave it blank to use +; the primary: +k_Monitor = + +;---- End of configuration section. Don't change anything below this point +; unless you want to alter the basic nature of the script. + + +;---- Alter the tray icon menu: +Menu, Tray, Add, %k_MenuItemHide%, k_ShowHide +Menu, Tray, Add, &Exit, k_MenuExit +Menu, Tray, Default, %k_MenuItemHide% +Menu, Tray, NoStandard + +;---- Calculate object dimensions based on chosen font size: +k_KeyWidth = %k_FontSize% +k_KeyWidth *= 3 +k_KeyHeight = %k_FontSize% +k_KeyHeight *= 3 +k_KeyMargin = %k_FontSize% +k_KeyMargin /= 6 +k_SpacebarWidth = %k_FontSize% +k_SpacebarWidth *= 25 +k_KeyWidthHalf = %k_KeyWidth% +k_KeyWidthHalf /= 2 + +k_KeySize = w%k_KeyWidth% h%k_KeyHeight% +k_Position = x+%k_KeyMargin% %k_KeySize% + +;---- Create a GUI window for the on-screen keyboard: +Gui, Font, s%k_FontSize% %k_FontStyle%, %k_FontName% +Gui, -Caption +E0x200 +ToolWindow +TransColor = F1ECED +Gui, Color, %TransColor% ; This color will be made transparent later below. + +;---- Add a button for each key. Position the first button with absolute +; coordinates so that all other buttons can be positioned relative to it: +Gui, Add, Button, section %k_KeySize% xm+%k_KeyWidth%, 1 +Gui, Add, Button, %k_Position%, 2 +Gui, Add, Button, %k_Position%, 3 +Gui, Add, Button, %k_Position%, 4 +Gui, Add, Button, %k_Position%, 5 +Gui, Add, Button, %k_Position%, 6 +Gui, Add, Button, %k_Position%, 7 +Gui, Add, Button, %k_Position%, 8 +Gui, Add, Button, %k_Position%, 9 +Gui, Add, Button, %k_Position%, 0 +Gui, Add, Button, %k_Position%, - +Gui, Add, Button, %k_Position%, = +Gui, Add, Button, %k_Position%, Bk + +Gui, Add, Button, xm y+%k_KeyMargin% h%k_KeyHeight%, Tab ; Auto-width. +Gui, Add, Button, %k_Position%, Q +Gui, Add, Button, %k_Position%, W +Gui, Add, Button, %k_Position%, E +Gui, Add, Button, %k_Position%, R +Gui, Add, Button, %k_Position%, T +Gui, Add, Button, %k_Position%, Y +Gui, Add, Button, %k_Position%, U +Gui, Add, Button, %k_Position%, I +Gui, Add, Button, %k_Position%, O +Gui, Add, Button, %k_Position%, P +Gui, Add, Button, %k_Position%, [ +Gui, Add, Button, %k_Position%, ] +Gui, Add, Button, %k_Position%, \ + +Gui, Add, Button, xs+%k_KeyWidthHalf% y+%k_KeyMargin% %k_KeySize%, A +Gui, Add, Button, %k_Position%, S +Gui, Add, Button, %k_Position%, D +Gui, Add, Button, %k_Position%, F +Gui, Add, Button, %k_Position%, G +Gui, Add, Button, %k_Position%, H +Gui, Add, Button, %k_Position%, J +Gui, Add, Button, %k_Position%, K +Gui, Add, Button, %k_Position%, L +Gui, Add, Button, %k_Position%, `; +Gui, Add, Button, %k_Position%, ' +Gui, Add, Button, x+%k_KeyMargin% h%k_KeyHeight%, Enter ; Auto-width. + +; The first button below adds %A_Space% at the end to widen it a little, +; making the layout of keys next to it more accurately reflect a real keyboard: +Gui, Add, Button, xm y+%k_KeyMargin% h%k_KeyHeight%, Shift%A_Space%%A_Space% +Gui, Add, Button, %k_Position%, Z +Gui, Add, Button, %k_Position%, X +Gui, Add, Button, %k_Position%, C +Gui, Add, Button, %k_Position%, V +Gui, Add, Button, %k_Position%, B +Gui, Add, Button, %k_Position%, N +Gui, Add, Button, %k_Position%, M +Gui, Add, Button, %k_Position%, `, +Gui, Add, Button, %k_Position%, . +Gui, Add, Button, %k_Position%, / + +Gui, Add, Button, xm y+%k_KeyMargin% h%k_KeyHeight%, Ctrl ; Auto-width. +Gui, Add, Button, h%k_KeyHeight% x+%k_KeyMargin%, Win ; Auto-width. +Gui, Add, Button, h%k_KeyHeight% x+%k_KeyMargin%, Alt ; Auto-width. +Gui, Add, Button, h%k_KeyHeight% x+%k_KeyMargin% w%k_SpacebarWidth%, Space + + +;---- Show the window: +Gui, Show +k_IsVisible = y + +WinGet, k_ID, ID, A ; Get its window ID. +WinGetPos,,, k_WindowWidth, k_WindowHeight, A + +;---- Position the keyboard at the bottom of the screen (taking into account +; the position of the taskbar): +SysGet, k_WorkArea, MonitorWorkArea, %k_Monitor% + +; Calculate window's X-position: +k_WindowX = %k_WorkAreaRight% +k_WindowX -= %k_WorkAreaLeft% ; Now k_WindowX contains the width of this monitor. +k_WindowX -= %k_WindowWidth% +k_WindowX /= 2 ; Calculate position to center it horizontally. +; The following is done in case the window will be on a non-primary monitor +; or if the taskbar is anchored on the left side of the screen: +k_WindowX += %k_WorkAreaLeft% + +; Calculate window's Y-position: +k_WindowY = %k_WorkAreaBottom% +k_WindowY -= %k_WindowHeight% + +WinMove, A,, %k_WindowX%, %k_WindowY% +WinSet, AlwaysOnTop, On, ahk_id %k_ID% +WinSet, TransColor, %TransColor% 220, ahk_id %k_ID% + + +;---- Set all keys as hotkeys. See www.asciitable.com +k_n = 1 +k_ASCII = 45 + +Loop +{ + Transform, k_char, Chr, %k_ASCII% + StringUpper, k_char, k_char + if k_char not in <,>,^,~,,`, + Hotkey, ~*%k_char%, k_KeyPress + ; In the above, the asterisk prefix allows the key to be detected regardless + ; of whether the user is holding down modifier keys such as Control and Shift. + if k_ASCII = 93 + break + k_ASCII++ +} + +return ; End of auto-execute section. + + +;---- When a key is pressed by the user, click the corresponding button on-screen: + +~*Backspace:: +ControlClick, Bk, ahk_id %k_ID%, , LEFT, 1, D +KeyWait, Backspace +ControlClick, Bk, ahk_id %k_ID%, , LEFT, 1, U +return + + +; LShift and RShift are used rather than "Shift" because when used as a hotkey, +; "Shift" would default to firing upon release of the key (in older AHK versions): +~*LShift:: +~*RShift:: +~*LCtrl:: ; Must use Ctrl not Control to match button names. +~*RCtrl:: +~*LAlt:: +~*RAlt:: +~*LWin:: +~*RWin:: +StringTrimLeft, k_ThisHotkey, A_ThisHotkey, 3 +ControlClick, %k_ThisHotkey%, ahk_id %k_ID%, , LEFT, 1, D +KeyWait, %k_ThisHotkey% +ControlClick, %k_ThisHotkey%, ahk_id %k_ID%, , LEFT, 1, U +return + + +~*,:: +~*':: +~*Space:: +~*Enter:: +~*Tab:: +k_KeyPress: +StringReplace, k_ThisHotkey, A_ThisHotkey, ~ +StringReplace, k_ThisHotkey, k_ThisHotkey, * +SetTitleMatchMode, 3 ; Prevents the T and B keys from being confused with Tab and Backspace. +ControlClick, %k_ThisHotkey%, ahk_id %k_ID%, , LEFT, 1, D +KeyWait, %k_ThisHotkey% +ControlClick, %k_ThisHotkey%, ahk_id %k_ID%, , LEFT, 1, U +Return + + +k_ShowHide: +if k_IsVisible = y +{ + Gui, Cancel + Menu, Tray, Rename, %k_MenuItemHide%, %k_MenuItemShow% + k_IsVisible = n +} +else +{ + Gui, Show + Menu, Tray, Rename, %k_MenuItemShow%, %k_MenuItemHide% + k_IsVisible = y +} +return + + +GuiClose: +k_MenuExit: +ExitApp diff --git a/src/docs/scripts/KeyboardOnScreen.htm b/src/docs/scripts/KeyboardOnScreen.htm new file mode 100644 index 0000000..528cccc --- /dev/null +++ b/src/docs/scripts/KeyboardOnScreen.htm @@ -0,0 +1,242 @@ + + +On-Screen Keyboard (requires XP/2k/NT) -- by Jon + + + + + + + +

È­¸é À§ Å°º¸µå (XP/2k/NT ¿ä±¸) -- by Jon

+ +

+ÀÌ ½ºÅ©¸³Æ®´Â °¡Â¥ Å°º¸µå¸¦ È­¸é ¾Æ·¡¿¡ »ý¼ºÇÏ°í ´©¸£´Â Å°µéÀ» ½Ç½Ã°£À¸·Î º¸¿©ÁÝ´Ï´Ù. (Å°º¸µå¸¦ º¸Áö ¾Ê°í) ¼Õ°¨°¢À» ÀÍÈ÷±â À§ÇØ ¸¸µé¾ú½À´Ï´Ù. È­¸é À§ Å°º¸µåÀÇ Å©±â´Â ½ºÅ©¸³Æ® »ó´Ü¿¡¼­ Àç´ÜÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ, Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» ´õºí Ŭ¸¯Çϸé Å°º¸µå¸¦ º¸¿©Áְųª °¨Ãâ ¼ö ÀÖ½À´Ï´Ù. +

+

ÀÌ ½ºÅ©¸³Æ® ³»·Á ¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

+ +
;---- ȯ°æ ±¸¼º ºÎºÐ: È­¸é À§ Å°º¸µå Å©±â¿Í
+; ±âŸ ¿É¼ÇÀ» ¿©±â¿¡¼­ Àç´ÜÇÕ´Ï´Ù.
+
+; ´ÙÀ½ ±Û²Ã Å©±â¸¦ ¹Ù²Ù¸é Àü¿¡ È­¸é À§ Å°º¸µå°¡
+; ´õ Ä¿Áö°Å³ª ´õ ÀÛ¾ÆÀÔ´Ï´Ù:
+k_FontSize = 10
+k_FontName = Verdana  ; ÀÌ ÁÙÀ» ºñ¿ì¸é ½Ã½ºÅÛÀÇ ±âº» ±Û²ÃÀ» »ç¿ëÇÕ´Ï´Ù.
+k_FontStyle = Bold    ; ´Ù¸¥ ¿¹Á¦: Italic Underline
+
+; Æ®·¹ÀÌ ¸Þ´º Ç׸ñ À̸§:
+k_MenuItemHide = Hide on-screen &keyboard
+k_MenuItemShow = Show on-screen &keyboard
+
+; ±âº» ¸ðµðÅÍ ¸»°í ´Ù¸¥ ¸ð´ÏÅÍ¿¡ Å°º¸µå¸¦ º¸¿©ÁÖ·Á¸é,
+; ´ÙÀ½ º¯¼ö¿¡ 2¿Í °°ÀÌ ¼ýÀÚ¸¦ ÁöÁ¤ÇϽʽÿÀ. ºñ¿öµÎ¸é,
+; ±âº» ¸ð´ÏÅ͸¦ »ç¿ëÇÕ´Ï´Ù:
+k_Monitor = 
+
+;---- ȯ°æ ±¸¼º ºÎºÐ ³¡.  ÀÌ ½ÃÁ¡ ºÎÅÍ´Â º¯°æÇÏÁö ¸¶½Ê½Ã¿À.
+; ´Ü, ½ºÅ©¸³Æ®ÀÌ ±âº» ¼º°ÝÀ» ¹Ù²Ù°í ½ÍÀº °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.
+
+
+;---- Æ®·¹ÀÌ ¾ÆÀÌÄÜ ¸Þ´º¸¦ º¯°æÇÕ´Ï´Ù:
+Menu, Tray, Add, %k_MenuItemHide%, k_ShowHide
+Menu, Tray, Add, &Exit, k_MenuExit
+Menu, Tray, Default, %k_MenuItemHide%
+Menu, Tray, NoStandard
+
+;---- ¼±ÅÃµÈ ±Û²Ã Å©±â¿¡ ±â¹ÝÇÏ¿© °´Ã¼ Å©±â¸¦ °è»êÇÕ´Ï´Ù.:
+k_KeyWidth = %k_FontSize%
+k_KeyWidth *= 3
+k_KeyHeight = %k_FontSize%
+k_KeyHeight *= 3
+k_KeyMargin = %k_FontSize%
+k_KeyMargin /= 6
+k_SpacebarWidth = %k_FontSize%
+k_SpacebarWidth *= 25
+k_KeyWidthHalf = %k_KeyWidth%
+k_KeyWidthHalf /= 2
+
+k_KeySize = w%k_KeyWidth% h%k_KeyHeight%
+k_Position = x+%k_KeyMargin% %k_KeySize%
+
+;---- È­¸é À§ Å°º¸µå¸¦ À§ÇÏ¿© GUI âÀ» »ý¼ºÇÕ´Ï´Ù:
+Gui, Font, s%k_FontSize% %k_FontStyle%, %k_FontName%
+Gui, -Caption +E0x200 +ToolWindow
+TransColor = F1ECED
+Gui, Color, %TransColor%  ; ÀÌ »öÀº ³ªÁß¿¡ ¾Æ·¡¿¡¼­ Åõ¸í»öÀÌ µË´Ï´Ù.
+
+;---- °¢ Å°¿¡ ¹öÆ°À» Ãß°¡ÇÕ´Ï´Ù. ù ¹öÆ°À» Àý´ë ÁÂÇ¥¿¡ ¹èÄ¡ÇÕ´Ï´Ù.
+; ±×·¯¸é ´Ù¸¥ ¸ðµç ¹öÆ°ÀÌ ±×¿¡ »ó´ëÀûÀ¸·Î ¹èÄ¡µË´Ï´Ù:
+Gui, Add, Button, section %k_KeySize% xm+%k_KeyWidth%, 1
+Gui, Add, Button, %k_Position%, 2
+Gui, Add, Button, %k_Position%, 3
+Gui, Add, Button, %k_Position%, 4
+Gui, Add, Button, %k_Position%, 5
+Gui, Add, Button, %k_Position%, 6
+Gui, Add, Button, %k_Position%, 7
+Gui, Add, Button, %k_Position%, 8
+Gui, Add, Button, %k_Position%, 9
+Gui, Add, Button, %k_Position%, 0
+Gui, Add, Button, %k_Position%, -
+Gui, Add, Button, %k_Position%, =
+Gui, Add, Button, %k_Position%, Bk
+
+Gui, Add, Button, xm y+%k_KeyMargin% h%k_KeyHeight%, Tab  ; ÀÚµ¿-³Êºñ.
+Gui, Add, Button, %k_Position%, Q
+Gui, Add, Button, %k_Position%, W
+Gui, Add, Button, %k_Position%, E
+Gui, Add, Button, %k_Position%, R
+Gui, Add, Button, %k_Position%, T
+Gui, Add, Button, %k_Position%, Y
+Gui, Add, Button, %k_Position%, U
+Gui, Add, Button, %k_Position%, I
+Gui, Add, Button, %k_Position%, O
+Gui, Add, Button, %k_Position%, P
+Gui, Add, Button, %k_Position%, [
+Gui, Add, Button, %k_Position%, ]
+Gui, Add, Button, %k_Position%, \
+
+Gui, Add, Button, xs+%k_KeyWidthHalf% y+%k_KeyMargin% %k_KeySize%, A
+Gui, Add, Button, %k_Position%, S
+Gui, Add, Button, %k_Position%, D
+Gui, Add, Button, %k_Position%, F
+Gui, Add, Button, %k_Position%, G
+Gui, Add, Button, %k_Position%, H
+Gui, Add, Button, %k_Position%, J
+Gui, Add, Button, %k_Position%, K
+Gui, Add, Button, %k_Position%, L
+Gui, Add, Button, %k_Position%, `;
+Gui, Add, Button, %k_Position%, '
+Gui, Add, Button, x+%k_KeyMargin% h%k_KeyHeight%, Enter  ; ÀÚµ¿-³Êºñ.
+
+; ¾Æ·¡ÀÇ Ã¹ ¹ø° ¹öÆ°Àº ³¡¿¡ %A_Space%¸¦ Ãß°¡ÇØ ¾à°£ ´õ ³ÐÈü´Ï´Ù.
+; ±×·¡¼­ ±× ´ÙÀ½ Å°¿ÍÀÇ ·¹À̾ƿôÀÌ ´õ Á¤È®ÇÏ°Ô Å°º¸µå¸¦ ¹Ý¿µÇÕ´Ï´Ù.:
+Gui, Add, Button, xm y+%k_KeyMargin% h%k_KeyHeight%, Shift%A_Space%%A_Space%
+Gui, Add, Button, %k_Position%, Z
+Gui, Add, Button, %k_Position%, X
+Gui, Add, Button, %k_Position%, C
+Gui, Add, Button, %k_Position%, V
+Gui, Add, Button, %k_Position%, B
+Gui, Add, Button, %k_Position%, N
+Gui, Add, Button, %k_Position%, M
+Gui, Add, Button, %k_Position%, `,
+Gui, Add, Button, %k_Position%, .
+Gui, Add, Button, %k_Position%, /
+
+Gui, Add, Button, xm y+%k_KeyMargin% h%k_KeyHeight%, Ctrl  ; Auto-width.
+Gui, Add, Button, h%k_KeyHeight% x+%k_KeyMargin%, Win      ; Auto-width.
+Gui, Add, Button, h%k_KeyHeight% x+%k_KeyMargin%, Alt      ; Auto-width.
+Gui, Add, Button, h%k_KeyHeight% x+%k_KeyMargin% w%k_SpacebarWidth%, Space
+
+
+;---- âÀ» º¸¿©ÁÝ´Ï´Ù:
+Gui, Show
+k_IsVisible = y
+
+WinGet, k_ID, ID, A   ; Get its window ID.
+WinGetPos,,, k_WindowWidth, k_WindowHeight, A
+
+;---- (ŽºÅ©¹ÙÀÇ À§Ä¡¸¦ °í·ÁÇÏ¿©)
+; Å°º¸µå¸¦ È­¸é ¾Æ·¡¿¡ ¹èÄ¡ÇÕ´Ï´Ù:
+SysGet, k_WorkArea, MonitorWorkArea, %k_Monitor%
+
+; âÀÇ X-À§Ä¡¸¦ °è»êÇÕ´Ï´Ù:
+k_WindowX = %k_WorkAreaRight%
+k_WindowX -= %k_WorkAreaLeft%  ; ÀÌÁ¦ k_WindowX¿¡ ÀÌ ¸ð´ÏÅÍÀÇ ³Êºñ°¡ ´ã±é´Ï´Ù.
+k_WindowX -= %k_WindowWidth%
+k_WindowX /= 2  ; ¼öÆòÀ¸·Î °¡¿îµ¥ À§Ä¡¸¦ °è»êÇÕ´Ï´Ù.
+; ´ÙÀ½Àº âÀÌ ±âº» ¸ð´ÏÅÍ¿¡ ÀÖÁö ¾Ê°Å³ª
+; ŽºÅ©¹Ù°¡ È­¸é ¿ÞÂÊ º¯¿¡ Á¤¹ÚµÇ¾î ÀÖ´Â °æ¿ì¸¦ ó¸®ÇÕ´Ï´Ù:
+k_WindowX += %k_WorkAreaLeft%
+
+; âÀÇ Y-À§Ä¡¸¦ °è»êÇÕ´Ï´Ù:
+k_WindowY = %k_WorkAreaBottom%
+k_WindowY -= %k_WindowHeight%
+
+WinMove, A,, %k_WindowX%, %k_WindowY%
+WinSet, AlwaysOnTop, On, ahk_id %k_ID%
+WinSet, TransColor, %TransColor% 220, ahk_id %k_ID%
+
+
+;---- ¸ðµç Å°¸¦ ÇÖÅ°·Î ¼³Á¤ÇÕ´Ï´Ù. ÂüÁ¶ www.asciitable.com
+k_n = 1
+k_ASCII = 45
+
+Loop
+{
+    Transform, k_char, Chr, %k_ASCII%
+    StringUpper, k_char, k_char
+    if k_char not in <,>,^,~,,`,
+        Hotkey, ~*%k_char%, k_KeyPress
+        ; À§¿¡¼­, º°Ç¥ Á¢µÎ ½Éº¼ ´öºÐ¿¡ »ç¿ëÀÚ°¡ Control°ú Shift °°Àº ¼ö½Ä Å°¸¦ ´©¸£°í ÀÖµç ¾øµç
+        ; Å°¸¦ ŽÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.
+    if k_ASCII = 93
+        break
+    k_ASCII++
+}
+
+return ; ÀÚµ¿ ½ÇÇà ¼½¼ÇÀÇ ³¡.
+
+
+;---- »ç¿ëÀÚ°¡ Å°¸¦ ´©¸£¸é, È­¸é À§¿¡¼­ »óÀÀÇÏ´Â ¹öÆ°À» Ŭ¸¯ÇÕ´Ï´Ù:
+
+~*Backspace::
+ControlClick, Bk, ahk_id %k_ID%, , LEFT, 1, D
+KeyWait, Backspace
+ControlClick, Bk, ahk_id %k_ID%, , LEFT, 1, U
+return
+
+
+;  "Shift" ´ë½Å¿¡ LShift¿Í RShift¸¦ »ç¿ëÇÕ´Ï´Ù. ¿Ö³ÄÇϸé ÇÖÅ°·Î »ç¿ëµÉ ¶§,
+; "Shift"´Â ±âº»ÀûÀ¸·Î Å°¸¦ ¶¿ ¶§ Ã˹ߵDZ⠶§¹®ÀÔ´Ï´Ù (¿¹Àü AHK ¹öÀü¿¡¼­):
+~*LShift::
+~*RShift::
+~*LCtrl::  ; Control ´ë½Å¿¡ CtrlÀ» »ç¿ëÇØ¾ß ¹öÆ° À̸§¿¡ ºÎÇÕÇÒ ¼ö ÀÖ½À´Ï´Ù.
+~*RCtrl::
+~*LAlt::
+~*RAlt::
+~*LWin::
+~*RWin::
+StringTrimLeft, k_ThisHotkey, A_ThisHotkey, 3
+ControlClick, %k_ThisHotkey%, ahk_id %k_ID%, , LEFT, 1, D
+KeyWait, %k_ThisHotkey%
+ControlClick, %k_ThisHotkey%, ahk_id %k_ID%, , LEFT, 1, U
+return
+
+
+~*,::
+~*'::
+~*Space::
+~*Enter::
+~*Tab::
+k_KeyPress:
+StringReplace, k_ThisHotkey, A_ThisHotkey, ~
+StringReplace, k_ThisHotkey, k_ThisHotkey, *
+SetTitleMatchMode, 3  ; T Å°¿Í B Å°¸¦ Tab°ú Backspace·Î È¥µ¿ÇÏÁö ¾Êµµ·Ï ¹æÁöÇÕ´Ï´Ù.
+ControlClick, %k_ThisHotkey%, ahk_id %k_ID%, , LEFT, 1, D
+KeyWait, %k_ThisHotkey%
+ControlClick, %k_ThisHotkey%, ahk_id %k_ID%, , LEFT, 1, U
+Return
+
+
+k_ShowHide:
+if k_IsVisible = y
+{
+    Gui, Cancel
+    Menu, Tray, Rename, %k_MenuItemHide%, %k_MenuItemShow%
+    k_IsVisible = n
+}
+else
+{
+    Gui, Show
+    Menu, Tray, Rename, %k_MenuItemShow%, %k_MenuItemHide%
+    k_IsVisible = y
+}
+return
+
+
+GuiClose:
+k_MenuExit:
+ExitApp
+
+ + diff --git a/src/docs/scripts/MinimizeToTrayMenu.ahk b/src/docs/scripts/MinimizeToTrayMenu.ahk new file mode 100644 index 0000000..c493218 --- /dev/null +++ b/src/docs/scripts/MinimizeToTrayMenu.ahk @@ -0,0 +1,249 @@ +; Minimize Window to Tray Menu +; http://www.autohotkey.com +; This script assigns a hotkey of your choice to hide any window so that +; it becomes an entry at the bottom of the script's tray menu. Hidden +; windows can then be unhidden individually or all at once by selecting +; the corresponding item on the menu. If the script exits for any reason, +; all the windows that it hid will be unhidden automatically. + +; CHANGES: +; July 22, 2005 (changes provided by egilmour): +; - Added new hotkey to unhide the last hidden window (Win+U) +; +; November 3, 2004 (changes provided by trogdor): +; - Program manager is prevented from being hidden. +; - If there is no active window, the minimize-to-tray hotkey will have +; no effect rather than waiting indefinitely. +; +; October 23, 2004: +; - The taskbar is prevented from being hidden. +; - Some possible problems with long window titles have been fixed. +; - Windows without a title can be hidden without causing problems. +; - If the script is running under AHK v1.0.22 or greater, the +; maximum length of each menu item is increased from 100 to 260. + +; CONFIGURATION SECTION: Change the below values as desired. + +; This is the maximum number of windows to allow to be hidden (having a +; limit helps performance): +mwt_MaxWindows = 50 + +; This is the hotkey used to hide the active window: +mwt_Hotkey = #h ; Win+H + +; This is the hotkey used to unhide the last hidden window: +mwt_UnHotkey = #u ; Win+U + +; If you prefer to have the tray menu empty of all the standard items, +; such as Help and Pause, use N. Otherwise, use Y: +mwt_StandardMenu = N + +; These next few performance settings help to keep the action within the +; #HotkeyModifierTimeout period, and thus avoid the need to release and +; press down the hotkey's modifier if you want to hide more than one +; window in a row. These settings are not needed you choose to have the +; script use the keyboard hook via #InstallKeybdHook or other means: +#HotkeyModifierTimeout 100 +SetWinDelay 10 +SetKeyDelay 0 + +#SingleInstance ; Allow only one instance of this script to be running. + +; END OF CONFIGURATION SECTION (do not make changes below this point +; unless you want to change the basic functionality of the script). + +Hotkey, %mwt_Hotkey%, mwt_Minimize +Hotkey, %mwt_UnHotkey%, mwt_UnMinimize + +; If the user terminates the script by any means, unhide all the +; windows first: +OnExit, mwt_RestoreAllThenExit + +if mwt_StandardMenu = Y + Menu, Tray, Add +else +{ + Menu, Tray, NoStandard + Menu, Tray, Add, E&xit and Unhide All, mwt_RestoreAllThenExit +} +Menu, Tray, Add, &Unhide All Hidden Windows, mwt_RestoreAll +Menu, Tray, Add ; Another separator line to make the above more special. + +if a_AhkVersion = ; Since it's blank, version is older than 1.0.22. + mwt_MaxLength = 100 +else + mwt_MaxLength = 260 ; Reduce this to restrict the width of the menu. + +return ; End of auto-execute section. + + +mwt_Minimize: +if mwt_WindowCount >= %mwt_MaxWindows% +{ + MsgBox No more than %mwt_MaxWindows% may be hidden simultaneously. + return +} + +; Set the "last found window" to simplify and help performance. +; Since in certain cases it is possible for there to be no active window, +; a timeout has been added: +WinWait, A,, 2 +if ErrorLevel <> 0 ; It timed out, so do nothing. + return + +; Otherwise, the "last found window" has been set and can now be used: +WinGet, mwt_ActiveID, ID +WinGetTitle, mwt_ActiveTitle +WinGetClass, mwt_ActiveClass +if mwt_ActiveClass in Shell_TrayWnd,Progman +{ + MsgBox The desktop and taskbar cannot be hidden. + return +} +; Because hiding the window won't deactivate it, activate the window +; beneath this one (if any). I tried other ways, but they wound up +; activating the task bar. This way sends the active window (which is +; about to be hidden) to the back of the stack, which seems best: +Send, !{esc} +; Hide it only now that WinGetTitle/WinGetClass above have been run (since +; by default, those commands cannot detect hidden windows): +WinHide + +; If the title is blank, use the class instead. This serves two purposes: +; 1) A more meaningful name is used as the menu name. +; 2) Allows the menu item to be created (otherwise, blank items wouldn't +; be handled correctly by the various routines below). +if mwt_ActiveTitle = + mwt_ActiveTitle = ahk_class %mwt_ActiveClass% +; Ensure the title is short enough to fit. mwt_ActiveTitle also serves to +; uniquely identify this particular menu item. +StringLeft, mwt_ActiveTitle, mwt_ActiveTitle, %mwt_MaxLength% + +; In addition to the tray menu requiring that each menu item name be +; unique, it must also be unique so that we can reliably look it up in +; the array when the window is later unhidden. So make it unique if it +; isn't already: +Loop, %mwt_MaxWindows% +{ + if mwt_WindowTitle%a_index% = %mwt_ActiveTitle% + { + ; Match found, so it's not unique. + ; First remove the 0x from the hex number to conserve menu space: + StringTrimLeft, mwt_ActiveIDShort, mwt_ActiveID, 2 + StringLen, mwt_ActiveIDShortLength, mwt_ActiveIDShort + StringLen, mwt_ActiveTitleLength, mwt_ActiveTitle + mwt_ActiveTitleLength += %mwt_ActiveIDShortLength% + mwt_ActiveTitleLength += 1 ; +1 the 1 space between title & ID. + if mwt_ActiveTitleLength > %mwt_MaxLength% + { + ; Since menu item names are limted in length, trim the title + ; down to allow just enough room for the Window's Short ID at + ; the end of its name: + TrimCount = %mwt_ActiveTitleLength% + TrimCount -= %mwt_MaxLength% + StringTrimRight, mwt_ActiveTitle, mwt_ActiveTitle, %TrimCount% + } + ; Build unique title: + mwt_ActiveTitle = %mwt_ActiveTitle% %mwt_ActiveIDShort% + break + } +} + +; First, ensure that this ID doesn't already exist in the list, which can +; happen if a particular window was externally unhidden (or its app unhid +; it) and now it's about to be re-hidden: +mwt_AlreadyExists = n +Loop, %mwt_MaxWindows% +{ + if mwt_WindowID%a_index% = %mwt_ActiveID% + { + mwt_AlreadyExists = y + break + } +} + +; Add the item to the array and to the menu: +if mwt_AlreadyExists = n +{ + Menu, Tray, add, %mwt_ActiveTitle%, RestoreFromTrayMenu + mwt_WindowCount += 1 + Loop, %mwt_MaxWindows% ; Search for a free slot. + { + ; It should always find a free slot if things are designed right. + if mwt_WindowID%a_index% = ; An empty slot was found. + { + mwt_WindowID%a_index% = %mwt_ActiveID% + mwt_WindowTitle%a_index% = %mwt_ActiveTitle% + break + } + } +} +return + + +RestoreFromTrayMenu: +Menu, Tray, delete, %A_ThisMenuItem% +; Find window based on its unique title stored as the menu item name: +Loop, %mwt_MaxWindows% +{ + if mwt_WindowTitle%a_index% = %A_ThisMenuItem% ; Match found. + { + StringTrimRight, IDToRestore, mwt_WindowID%a_index%, 0 + WinShow, ahk_id %IDToRestore% + WinActivate ahk_id %IDToRestore% ; Sometimes needed. + mwt_WindowID%a_index% = ; Make it blank to free up a slot. + mwt_WindowTitle%a_index% = + mwt_WindowCount -= 1 + break + } +} +return + + +;; This will pop the last minimized window off the stack and unhide it. +mwt_UnMinimize: +;; Make sure there's something to unhide. +if mwt_WindowCount > 0 +{ + ;; Get the id of the last window minimized and unhide it + StringTrimRight, IDToRestore, mwt_WindowID%mwt_WindowCount%, 0 + WinShow, ahk_id %IDToRestore% + WinActivate ahk_id %IDToRestore% + + ;; Get the menu name of the last window minimized and remove it + StringTrimRight, MenuToRemove, mwt_WindowTitle%mwt_WindowCount%, 0 + Menu, Tray, delete, %MenuToRemove% + + ;; clean up our 'arrays' and decrement the window count + mwt_WindowID%mwt_WindowCount% = + mwt_WindowTitle%mwt_WindowCount% = + mwt_WindowCount -= 1 +} +return + + +mwt_RestoreAllThenExit: +Gosub, mwt_RestoreAll +ExitApp ; Do a true exit. + + +mwt_RestoreAll: +Loop, %mwt_MaxWindows% +{ + if mwt_WindowID%a_index% <> + { + StringTrimRight, IDToRestore, mwt_WindowID%a_index%, 0 + WinShow, ahk_id %IDToRestore% + WinActivate ahk_id %IDToRestore% ; Sometimes needed. + ; Do it this way vs. DeleteAll so that the sep. line and first + ; item are retained: + StringTrimRight, MenuToRemove, mwt_WindowTitle%a_index%, 0 + Menu, Tray, delete, %MenuToRemove% + mwt_WindowID%a_index% = ; Make it blank to free up a slot. + mwt_WindowTitle%a_index% = + mwt_WindowCount -= 1 + } + if mwt_WindowCount = 0 + break +} +return diff --git a/src/docs/scripts/MinimizeToTrayMenu.htm b/src/docs/scripts/MinimizeToTrayMenu.htm new file mode 100644 index 0000000..b13fbdb --- /dev/null +++ b/src/docs/scripts/MinimizeToTrayMenu.htm @@ -0,0 +1,261 @@ + + +Minimize Window to Tray Menu + + + + + + + +

âÀ» Æ®·¹ÀÌ ¸Þ´º·Î ÃÖ¼ÒÈ­Çϱâ

+ +

ÀÌ ½ºÅ©¸³Æ®´Â ¿©·¯ºÐÀÌ ¼±ÅÃÇÑ ÇÖÅ°¸¦ âÀ» °¨Ãß´Â µ¥ ÇÒ´çÇÕ´Ï´Ù. âÀº ½ºÅ©¸³Æ®ÀÇ Æ®·¹ÀÌ ¸Þ´º ¾Æ·¡¿¡ ¿£Æ®¸®°¡ µË´Ï´Ù. ¼ûÀº âµéÀº °³º°ÀûÀ¸·Î ¶Ç´Â ÇÑ ²¨¹ø¿¡ ¸Þ´º¿¡¼­ »óÀÀÇÏ´Â Ç׸ñÀ» ¼±ÅÃÇØ º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. ½ºÅ©¸³Æ®°¡ ¾î¶² ÀÌÀ¯·Î Á¾·áÇϸé, ¼û°ÜÁø ¸ðµç âÀº ÀÚµ¿À¸·Î ¼û±è ÇØÁ¦µË´Ï´Ù. +

+

ÀÌ ½ºÅ©¸³Æ® ³»·Á¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

+ +
; º¯°æ ÀÌ·Â:
+; July 22, 2005 (egilmour°¡ Á¦°øÇÑ º¯°æ):
+; - ¸¶Áö¸· ¼ûÀº âÀ» º¸¿©ÁÙ »õ ÇÖÅ° Ãß°¡ (Win+U)
+;
+; November 3, 2004 (trogdor°¡ Á¦°øÇÑ º¯°æ):
+; - ÇÁ·Î±×·¥ °ü¸®ÀÚ°¡ ¼ûÁö ¸øÇϵµ·Ï ¹æÁö.
+; - È°¼º âÀÌ ¾ø´Ù¸é, minimize-to-tray ÇÖÅ°°¡ ¹«ÇÑÁ¤ ±â´Ù¸®´Â ´ë½Å¿¡
+;   ¾Æ¹« È¿°ú°¡ ¾øµµ·Ï º¯°æ.
+;
+; October 23, 2004:
+; - ŽºÅ©¹Ù°¡ ¼ûÁö ¸øÇϵµ·Ï ¹æÁö.
+; - â Á¦¸ñÀÌ ±ä°æ¿ì ¹ß»ý °¡´ÉÇÑ ¹®Á¦µéÀÌ ÇØ°áµÊ.
+; - Á¦¸ñ ¾ø´Â âµµ ¾Æ¹« ¹®Á¦ ¾øÀÌ ¼û±æ ¼ö ÀÖÀ½.
+; - ½ºÅ©¸³Æ®°¡  AHK v1.0.22 À̻󿡼­ ½ÇÇà ÁßÀ̸é,
+;   °¢ ¸Þ´º Ç׸ñÀÇ ÃÖ´ë ±æÀÌÀ» 100¿¡¼­ 260À¸·Î ´Ã¸².
+
+; CONFIGURATION SECTION: ¾Æ·¡ÀÇ °ªÀ» ÀÔ¸À¿¡ ¸Â°Ô ¹Ù²Ù½Ê½Ã¿À.
+
+; ´ÙÀ½Àº ¼û±â±â¸¦ Çã¿ëÇÒ Ã¢ÀÇ ÃÖ´ë °³¼öÀÔ´Ï´Ù.
+; (Á¦ÇÑÀ» µÎ¸é ¼öÇ༺´ÉÀÌ Çâ»óµË´Ï´Ù):
+mwt_MaxWindows = 50
+
+; È°¼º âÀ» °¨Ãߴµ¥ »ç¿ëµÇ´Â ÇÖÅ°ÀÔ´Ï´Ù:
+mwt_Hotkey = #h  ; Win+H
+
+; ¸¶Áö¸· ¼û±è âÀ» º¸¿©ÁÖ´Â µ¥ »ç¿ëµÇ´Â ÇÖÅ°ÀÔ´Ï´Ù:
+mwt_UnHotkey = #u  ; Win+U
+
+; Æ®·¹ÀÌ ¸Þ´º¿¡¼­ ¸ðµç Ç¥ÁØ Ç׸ñÀ» ºñ¿ì·Á¸é,
+; ¿¹¸¦ µé¾î Help ±×¸®°í Pause¸¦ ºñ¿ì·Á¸é, NÀ» »ç¿ëÇϽʽÿÀ. ±×·¸Áö ¾ÊÀ¸¸é, Y¸¦ »ç¿ëÇϽʽÿÀ:
+mwt_StandardMenu = N
+
+; ´ÙÀ½ÀÇ ¸î °¡Áö ¼öÇ༺´ÉÀ» À§ÇÑ ¼³Á¤Àº 
+; #HotkeyModifierTimeout ½Ã°£ ¾È¿¡ Á¶Ä¡¸¦ ¸¶Ä¡´Â µ¥ µµ¿òÀÌ µË´Ï´Ù. 
+; ±×¸®ÇÏ¿© ÁÖ¿í ´Ã¾î¼± ¿©·¯ âÀ» ÀÏ·Ä·Î °¨Ãß±â À§ÇØ
+;  ÇÖÅ°ÀÇ ¼ö½ÄÀÚ¸¦ ¶¼°í ´©¸¦ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. 
+; ´ÙÀ½°ú °°ÀÌ ¼³Á¤Çϸé #InstallKeybdHook ¶Ç´Â ±âŸ ¼ö´ÜÀ» ÅëÇÏ¿©
+; ½ºÅ©¸³Æ®¿¡ Å°º¸µå °¥°í¸®¸¦ »ç¿ëÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù:
+#HotkeyModifierTimeout 100
+SetWinDelay 10
+SetKeyDelay 0
+
+#SingleInstance  ; ÀÌ ½ºÅ©¸³Æ®ÀÇ ½Çü°¡ Çϳª¸¸ ½ÇÇàµÇµµ·Ï Çã¿ëÇÕ´Ï´Ù.
+
+; END OF CONFIGURATION SECTION (ÀÌ ½ÃÁ¡ºÎÅÍ º¯°æÇÏÁö ¸¶½Ê½Ã¿À
+; ´Ü, ½ºÅ©¸³Æ®ÀÇ ±âº» ±â´ÉÀ» º¯°æÇÏ°í ½ÍÀº °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù).
+
+Hotkey, %mwt_Hotkey%, mwt_Minimize
+Hotkey, %mwt_UnHotkey%, mwt_UnMinimize
+
+; »ç¿ëÀÚ°¡ ¾î¶² ¼ö´ÜÀ¸·Î ½ºÅ©¸³Æ®¸¦ Á¾·áÇϸé, 
+; ¸ðµç âÀ» ¸ÕÀú ´Ý½À´Ï´Ù:
+OnExit, mwt_RestoreAllThenExit
+
+if mwt_StandardMenu = Y
+    Menu, Tray, Add
+else
+{
+    Menu, Tray, NoStandard
+    Menu, Tray, Add, E&xit and Unhide All, mwt_RestoreAllThenExit
+}
+Menu, Tray, Add, &Unhide All Hidden Windows, mwt_RestoreAll
+Menu, Tray, Add  ; À§ Ç׸ñÀ» ´õ Ưº°ÇÏ°Ô ¸¸µé¾î ÁÙ ¶Ç´Ù¸¥ °¡¸§ ÁÙ.
+
+if a_AhkVersion =   ; ºñ¾î ÀÖÀ¸¹Ç·Î, ¹öÀüÀÌ 1.0.22 ¹Ì¸¸ÀÔ´Ï´Ù.
+    mwt_MaxLength = 100
+else
+    mwt_MaxLength = 260  ; À̸¦ ÁÙÀÌ¸é ¸Þ´ºÀÇ ³Êºñ¸¦ Á¦ÇÑÇÒ ¼ö ÀÖ½À´Ï´Ù.
+
+return  ; ÀÚµ¿ ½ÇÇà ¼½¼ÇÀÇ ³¡.
+
+
+mwt_Minimize:
+if mwt_WindowCount >= %mwt_MaxWindows%
+{
+    MsgBox No more than %mwt_MaxWindows% may be hidden simultaneously.
+    return
+}
+
+; "¸¶Áö¸·À¸·Î ¹ß°ßµÈ â"À» ¼³Á¤ÇØ ¼öÇ༺´ÉÀ» °³¼±ÇÏ°í ÀÏÀ» °£´ÜÇÏ°Ô ¸¸µì´Ï´Ù.
+; ¾î¶² °æ¿ì È°¼º âÀÌ ¾øÀ» ¼ö ÀÖÀ¸¹Ç·Î,
+; ½Ã°£Á¦ÇÑÀ» Ãß°¡Çß½À´Ï´Ù:
+WinWait, A,, 2
+if ErrorLevel <> 0  ; ½ÃÇÑ Á¾·á, ±×·¡¼­ ¾Æ¹«°Íµµ ÇÏÁö ¾Ê½À´Ï´Ù.
+    return
+
+; ±×·¸Áö ¾ÊÀ¸¸é, "¸¶Áö¸· ¹ß°ß â"À» ¼³Á¤ÇÏ°í ÀÌÁ¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:
+WinGet, mwt_ActiveID, ID
+WinGetTitle, mwt_ActiveTitle
+WinGetClass, mwt_ActiveClass
+if mwt_ActiveClass in Shell_TrayWnd,Progman
+{
+    MsgBox The desktop and taskbar cannot be hidden.
+    return
+}
+; âÀ» °¨Ã߾ ºñÈ°¼ºÈ­µÇ´Â °ÍÀº ¾Æ´Ï±â ¶§¹®¿¡,
+; ÀÌ Ã¢ ¾Æ·¡ÀÇ Ã¢À» È°¼ºÈ­ ÇÕ´Ï´Ù. ´Ù¸¥ ¹æ¹ýÀ» ½ÃµµÇßÁö¸¸, °á°úÀûÀ¸·Î
+; ŽºÅ© ¹Ù°¡ È°¼ºÈ­µÇ¾ú½À´Ï´Ù. ÀÌ·± ½ÄÀ¸·Î (¼û±â ¹Ù·Î Á÷ÀüÀÇ) È°¼º âÀ» 
+; ½ºÅà µÚ·Î ¹Ð¾î ¹ö¸®´Â ÆíÀÌ °¡Àå ÁÁÀº µí º¸ÀÔ´Ï´Ù:
+Send, !{esc}
+; Hide it only now that WinGetTitle/WinGetClass above have been run
+; (±âº»ÀûÀ¸·Î, ±×·± ¸í·É¾îµéÀº ¼ûÀº âÀ» ŽÁöÇÒ ¼ö ¾ø±â ¶§¹®ÀÔ´Ï´Ù):
+WinHide
+
+; Á¦¸ñÀÌ ºñ¾î ÀÖÀ¸¸é, ´ë½Å¿¡ Ŭ·¡½º¸¦ »ç¿ëÇϽʽÿÀ. ÀÌ°ÍÀº µÎ °¡Áö ¸ñÀûÀ¸·Î ±â¿©ÇÕ´Ï´Ù:
+; 1) ´õ ÀÇ¹Ì ÀÖ´Â À̸§ÀÌ ¸Þ´º À̸§À¸·Î »ç¿ëµË´Ï´Ù.
+; 2) ¸Þ´º Ç׸ñÀ» »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù
+;     (±×·¸Áö ¾ÊÀ¸¸é, ºó Ç׸ñÀ» ¾Æ·¡ÀÇ ´Ù¾çÇÑ ·çƾ¿¡¼­ Á¦´ë·Î ´Ù·ê ¼ö ¾ø½À´Ï´Ù).
+if mwt_ActiveTitle =
+    mwt_ActiveTitle = ahk_class %mwt_ActiveClass%
+; Á¦¸ñÀÌ ±æÀÌ°¡ ªÀºÁö È®ÀÎÇÕ´Ï´Ù. 
+; mwt_ActiveTitleµµ ¿ª½Ã ÀÌ Æ¯Á¤ÇÑ ¸Þ´º Ç׸ñÀ» À¯ÀÏÇÏ°Ô ½Äº°ÇÏ´Â µ¥ ±â¿©ÇÕ´Ï´Ù.
+StringLeft, mwt_ActiveTitle, mwt_ActiveTitle, %mwt_MaxLength%
+
+; Æ®·¹ÀÌ ¸Þ´º°¡ °¢ ¸Þ´º À̸§ÀÌ À¯ÀÏÇϱ⸦ ¿ä±¸ÇÏ´Â ¿Ü¿¡µµ
+; ¸Þ´º À̸§ÀÌ À¯ÀÏÇؾ߸¸ ³ªÁß¿¡ âÀÌ ¼ûÀ» ¶§ 
+; ¹è¿­¿¡¼­ ¾ÈÀüÇÏ°Ô Ã£À» ¼ö ÀÖ½À´Ï´Ù.
+; ±×·¡¼­ ¾ÆÁ÷ ±×·¸Áö ¾Ê´Ù¸é À¯ÀÏÇÏ°Ô ¸¸µå½Ê½Ã¿À:
+Loop, %mwt_MaxWindows%
+{
+    if mwt_WindowTitle%a_index% = %mwt_ActiveTitle%
+    {
+        ; ºÎÇÕÀÌ ¹ß°ßµÊ. ±×·¡¼­ À¯ÀÏÇÑ °ÍÀÌ ¾Æ´Õ´Ï´Ù.
+        ; ¸ÕÀú 0x¸¦ ½ÊÀ°Áø ¼ö¿¡¼­ Á¦°ÅÇØ ¸Þ´º °ø°£À» º¸Á¸ÇÕ´Ï´Ù:
+        StringTrimLeft, mwt_ActiveIDShort, mwt_ActiveID, 2
+        StringLen, mwt_ActiveIDShortLength, mwt_ActiveIDShort
+        StringLen, mwt_ActiveTitleLength, mwt_ActiveTitle
+        mwt_ActiveTitleLength += %mwt_ActiveIDShortLength%
+        mwt_ActiveTitleLength += 1 ; +1 the 1 space between title & ID.
+        if mwt_ActiveTitleLength > %mwt_MaxLength%
+        {
+            ; ¸Þ´º À̸§ÀÌ ±æÀÌ¿¡ Á¦ÇÑÀÌ Àֱ⠶§¹®¿¡,
+            ; Á¦¸ñÀ» ´Ùµë¾î ±×ÀÇ À̸§ µÚ¿¡
+            ; âÀÇ Short ID¸¦ À§ÇÑ ÃæºÐÇÑ °ø°£À» È®º¸ÇÕ´Ï´Ù:
+            TrimCount = %mwt_ActiveTitleLength%
+            TrimCount -= %mwt_MaxLength%
+            StringTrimRight, mwt_ActiveTitle, mwt_ActiveTitle, %TrimCount%
+        }
+        ; À¯ÀÏÇÑ Á¦¸ñÀ» ºôµåÇÕ´Ï´Ù:
+        mwt_ActiveTitle = %mwt_ActiveTitle% %mwt_ActiveIDShort%
+        break
+    }
+}
+
+; ¸ÕÀú, ÀÌ ID°¡ ¸®½ºÆ®¿¡ ÀÌ¹Ì Á¸ÀçÇÏÁö ¾Ê´ÂÁö È®ÀÎÇÕ´Ï´Ù.
+; ÀÌ·± ÀÏÀº ƯÁ¤ âÀÌ ¿ÜºÎÀûÀ¸·Î º¸ÀÌ°Ô µÇ¸é (¶Ç´Â ±×ÀÇ ¾îÇø®ÄÉÀ̼ÇÀÌ ¼û±èÀ» ÇØÁ¦Çϸé
+; ÀϾ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í ÀÌÁ¦ ´Ù½Ã ¼û±â ÀϺ¸ Á÷ÀüÀÔ´Ï´Ù:
+mwt_AlreadyExists = n
+Loop, %mwt_MaxWindows%
+{
+    if mwt_WindowID%a_index% = %mwt_ActiveID%
+    {
+        mwt_AlreadyExists = y
+        break
+    }
+}
+
+; Ç׸ñÀ» Æ®·¹ÀÌ¿Í ¸Þ´º¿¡ Ãß°¡ÇÕ´Ï´Ù:
+if mwt_AlreadyExists = n
+{
+    Menu, Tray, add, %mwt_ActiveTitle%, RestoreFromTrayMenu
+    mwt_WindowCount += 1
+    Loop, %mwt_MaxWindows%  ; Search for a free slot.
+    {
+        ; ¿Ã¹Ù¸£°Ô ¼³°èµÇ¾ú´Ù¸é ¾ðÁ¦³ª ºó °ø°£À» ãÀ» ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
+        if mwt_WindowID%a_index% =  ; ºó ½½·ÔÀÌ ¹ß°ßµÇ¾ú½À´Ï´Ù.
+        {
+            mwt_WindowID%a_index% = %mwt_ActiveID%
+            mwt_WindowTitle%a_index% = %mwt_ActiveTitle%
+            break
+        }
+    }
+}
+return
+
+
+RestoreFromTrayMenu:
+Menu, Tray, delete, %A_ThisMenuItem%
+; ¸Þ´º Ç׸ñ À̸§À¸·Î ÀúÀåµÈ À¯ÀÏÇÑ Á¦¸ñ¿¡ ±â¹ÝÇÏ¿© âÀ» ã½À´Ï´Ù:
+Loop, %mwt_MaxWindows%
+{
+    if mwt_WindowTitle%a_index% = %A_ThisMenuItem%  ; ºÎÇÕ ¹ß°ß.
+    {
+        StringTrimRight, IDToRestore, mwt_WindowID%a_index%, 0
+        WinShow, ahk_id %IDToRestore%
+        WinActivate ahk_id %IDToRestore%  ; Á¾Á¾ ÇÊ¿ä.
+        mwt_WindowID%a_index% =  ; ºñ¿ö¼­ ½½·ÔÀ» Ç®¾îÁÝ´Ï´Ù.
+        mwt_WindowTitle%a_index% =
+        mwt_WindowCount -= 1
+        break
+    }
+}
+return
+
+
+;; ´ÙÀ½Àº ¸¶Áö¸· ÃÖ¼ÒÈ­ âÀ» ½ºÅÿ¡¼­ ²¨³» º¸¿©ÁÝ´Ï´Ù.
+mwt_UnMinimize:
+;; ´õ ÀÌ»ó º¸¿©ÁÙ °ÍÀÌ ¾ø´ÂÁö È®ÀÎÇÕ´Ï´Ù.
+if mwt_WindowCount > 0 
+{
+    ;; ¸¶Áö¸· ÃÖ¼Ò Ã¢ÀÇ id¸¦ ¾ò¾î ±×°ÍÀ» º¸¿©ÁÝ´Ï´Ù
+    StringTrimRight, IDToRestore, mwt_WindowID%mwt_WindowCount%, 0
+    WinShow, ahk_id %IDToRestore%
+    WinActivate ahk_id %IDToRestore%
+    
+    ;; ¸¶Áö¸· ÃÖ¼Ò Ã¢ÀÇ ¸Þ´º À̸§À» ¾ò¾î ±×°ÍÀ» Á¦°ÅÇÕ´Ï´Ù
+    StringTrimRight, MenuToRemove, mwt_WindowTitle%mwt_WindowCount%, 0
+    Menu, Tray, delete, %MenuToRemove%
+    
+    ;; ¿ì¸®ÀÇ '¹è¿­'À» Á¤¸®ÇÏ°í â °³¼ö¸¦ ÁÙÀÔ´Ï´Ù
+    mwt_WindowID%mwt_WindowCount% =
+    mwt_WindowTitle%mwt_WindowCount% = 
+    mwt_WindowCount -= 1
+}
+return
+
+
+mwt_RestoreAllThenExit:
+Gosub, mwt_RestoreAll
+ExitApp  ; ÁøÂ¥·Î Á¾·áÇÕ´Ï´Ù.
+
+
+mwt_RestoreAll:
+Loop, %mwt_MaxWindows%
+{
+    if mwt_WindowID%a_index% <>
+    {
+        StringTrimRight, IDToRestore, mwt_WindowID%a_index%, 0
+        WinShow, ahk_id %IDToRestore%
+        WinActivate ahk_id %IDToRestore%  ; Á¾Á¾ ÇÊ¿äÇÔ.
+        ; ÀÌ·± ½ÄÀ¸·Î Çϰųª vs. ¸ðµÎ Áö¿ó´Ï´Ù(DeleteAll)
+        ; °¡¸§ ÁÙ°ú ù Ç׸ñÀº ±×´ë·Î µÓ´Ï´Ù:
+        StringTrimRight, MenuToRemove, mwt_WindowTitle%a_index%, 0
+        Menu, Tray, delete, %MenuToRemove%
+        mwt_WindowID%a_index% =  ; ºñ¿ö¼­ ½½·ÔÀ» Ç®¾î ÁÝ´Ï´Ù.
+        mwt_WindowTitle%a_index% =
+        mwt_WindowCount -= 1
+    }
+    if mwt_WindowCount = 0
+        break
+}
+return
+
+ + diff --git a/src/docs/scripts/MouseGestures.htm b/src/docs/scripts/MouseGestures.htm new file mode 100644 index 0000000..63fb15b --- /dev/null +++ b/src/docs/scripts/MouseGestures.htm @@ -0,0 +1,19 @@ + + +Mouse Gestures -- by deguix + + + + + + + +

¸¶¿ì½º Á¦½ºÃÄ -- by deguix

+ +

+ÀÌ ½ºÅ©¸³Æ®´Â ¿À¸¥ÂÊ ¹öÆ°ÀÌ ´­·Á ÀÖ´Â µ¿¾È ¸¶¿ì½º¸¦ ¾î¶»°Ô À̵¿ÇÏ´ÂÁö °¨½ÃÇÕ´Ï´Ù. ¸¸¾à "±×¸®±â"¸¦ º¸°í ¾Ë°í ÀÖ´Â ¸ð¾çÀ̳ª ½Éº¼À» ¹ß°ßÇϸé, ÇÁ·Î±×·¥À» ±âµ¿Çϰųª (¸¶Ä¡ ÇÖŰó·³) ¼±Åÿ¡ µû¶ó ´Ù¸¥ Á¶Ä¡¸¦ ¼öÇàÇÕ´Ï´Ù. Á¦½ºÃĸ¦ Á¤ÀÇÇÏ´Â ¹ýÀº µ¿ºÀµÈ README ÆÄÀÏÀ» ÂüÁ¶ÇϽʽÿÀ. +

+

ÀÌ ½ºÅ©¸³Æ® ³»·Á¹Þ±â (17 KB Zip File)  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

+ + + diff --git a/src/docs/scripts/MouseGestures.zip b/src/docs/scripts/MouseGestures.zip new file mode 100644 index 0000000000000000000000000000000000000000..7183244c836248cc13e00ac776db52c9c640eca0 GIT binary patch literal 17027 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 literal 0 HcmV?d00001 diff --git a/src/docs/scripts/MsgBoxButtonNames.ahk b/src/docs/scripts/MsgBoxButtonNames.ahk new file mode 100644 index 0000000..06263e8 --- /dev/null +++ b/src/docs/scripts/MsgBoxButtonNames.ahk @@ -0,0 +1,24 @@ +; Changing MsgBox's Button Names +; http://www.autohotkey.com +; This is a working example script that uses a timer to change +; the names of the buttons in a MsgBox dialog. Although the button +; names are changed, the IfMsgBox command still requires that the +; buttons be referred to by their original names. + +#SingleInstance +SetTimer, ChangeButtonNames, 50 +MsgBox, 4, Add or Delete, Choose a button: +IfMsgBox, YES + MsgBox, You chose Add. +else + MsgBox, You chose Delete. +return + +ChangeButtonNames: +IfWinNotExist, Add or Delete + return ; Keep waiting. +SetTimer, ChangeButtonNames, off +WinActivate +ControlSetText, Button1, &Add +ControlSetText, Button2, &Delete +return diff --git a/src/docs/scripts/MsgBoxButtonNames.htm b/src/docs/scripts/MsgBoxButtonNames.htm new file mode 100644 index 0000000..b0838eb --- /dev/null +++ b/src/docs/scripts/MsgBoxButtonNames.htm @@ -0,0 +1,36 @@ + + +Changing MsgBox's Button Names + + + + + + + +

MsgBoxÀÇ ¹öÆ° À̸§ ¹Ù²Ù±â

+ +

´ÙÀ½Àº ŸÀ̸Ӹ¦ »ç¿ëÇÏ¿© MsgBox ´ëÈ­»óÀÚÀÇ ¹öÆ° À̸§À» ¹Ù²Ù´Â ¿¹Á¦ÀÔ´Ï´Ù. ¹öÆ° À̸§Àº ¹Ù²î´õ¶óµµ, IfMsgBox ¸í·É¾î´Â ¿©ÀüÈ÷ ¹öÆ°ÀÌ ±×ÀÇ ¿ø·¡ À̸§À¸·Î ÂüÁ¶µÇ±â¸¦ ¿ä±¸ÇÕ´Ï´Ù. +

+

ÀÌ ½ºÅ©¸³Æ® ³»·Á¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

+ +
#SingleInstance
+SetTimer, ChangeButtonNames, 50 
+MsgBox, 4, Add or Delete, Choose a button:
+IfMsgBox, YES 
+    MsgBox, You chose Add. 
+else 
+    MsgBox, You chose Delete. 
+return 
+
+ChangeButtonNames: 
+IfWinNotExist, Add or Delete
+    return  ; °è¼Ó ´ë±â.
+SetTimer, ChangeButtonNames, off 
+WinActivate 
+ControlSetText, Button1, &Add 
+ControlSetText, Button2, &Delete 
+return
+
+ + diff --git a/src/docs/scripts/Numpad000.ahk b/src/docs/scripts/Numpad000.ahk new file mode 100644 index 0000000..7ce016a --- /dev/null +++ b/src/docs/scripts/Numpad000.ahk @@ -0,0 +1,61 @@ +; Numpad 000 Key +; http://www.autohotkey.com +; This example script makes the special 000 key that appears on certain +; keypads into an equals key. You can change the action by replacing the +; “Send, =” line with line(s) of your choice. + +#MaxThreadsPerHotkey 5 ; Allow multiple threads for this hotkey. +$Numpad0:: +#MaxThreadsPerHotkey 1 +; Above: Use the $ to force the hook to be used, which prevents an +; infinite loop since this subroutine itself sends Numpad0, which +; would otherwise result in a recursive call to itself. +SetBatchLines, 100 ; Make it run a little faster in this case. +DelayBetweenKeys = 30 ; Adjust this value if it doesn't work. +if A_PriorHotkey = %A_ThisHotkey% +{ + if A_TimeSincePriorHotkey < %DelayBetweenKeys% + { + if Numpad0Count = + Numpad0Count = 2 ; i.e. This one plus the prior one. + else if Numpad0Count = 0 + Numpad0Count = 2 + else + { + ; Since we're here, Numpad0Count must be 2 as set by + ; prior calls, which means this is the third time the + ; the key has been pressed. Thus, the hotkey sequence + ; should fire: + Numpad0Count = 0 + Send, = ; ******* This is the action for the 000 key + } + ; In all the above cases, we return without further action: + CalledReentrantly = y + return + } +} +; Otherwise, this Numpad0 event is either the first in the series +; or it happened too long after the first one (e.g. perhaps the +; user is holding down the Numpad0 key to auto-repeat it, which +; we want to allow). Therefore, after a short delay -- during +; which another Numpad0 hotkey event may re-entrantly call this +; subroutine -- we'll send the key on through if no reentrant +; calls occurred: +Numpad0Count = 0 +CalledReentrantly = n +; During this sleep, this subroutine may be reentrantly called +; (i.e. a simultaneous "thread" which runs in parallel to the +; call we're in now): +Sleep, %DelayBetweenKeys% +if CalledReentrantly = y ; Another "thread" changed the value. +{ + ; Since it was called reentrantly, this key event was the first in + ; the sequence so should be suppressed (hidden from the system): + CalledReentrantly = n + return +} +; Otherwise it's not part of the sequence so we send it through normally. +; In other words, the *real* Numpad0 key has been pressed, so we want it +; to have its normal effect: +Send, {Numpad0} +return diff --git a/src/docs/scripts/Numpad000.htm b/src/docs/scripts/Numpad000.htm new file mode 100644 index 0000000..063d474 --- /dev/null +++ b/src/docs/scripts/Numpad000.htm @@ -0,0 +1,74 @@ + + +Numpad 000 Key + + + + + + + +

Numpad 000 Key

+ +

ÀÌ ¿¹Á¦ ½ºÅ©¸³Æ®´Â ¾î¶² Å°º¸µå¿¡ ³ªÅ¸³ª´Â Ư¼öÇÑ 000 Å°¸¦ µîÈ£ Å°·Î º¯½Å½Ãŵ´Ï´Ù. ÇàÀ§¸¦ ¹Ù²Ù·Á¸é + Send, = ÁÙÀ» ¿©·¯ºÐÀÇ ±âÈ£´ë·Î º¯°æÇϽʽÿÀ. +

+

ÀÌ ½ºÅ©¸³Æ® ³»·Á ¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

+ +
#MaxThreadsPerHotkey 5  ; ÀÌ ÇÖÅ°¿¡ ´ëÇÏ¿© ¿©·¯ ¾²·¹µå¸¦ Çã¿ëÇÕ´Ï´Ù.
+$Numpad0::
+#MaxThreadsPerHotkey 1
+; À§¿¡¼­: $¸¦ »ç¿ëÇØ °¥°í¸® »ç¿ëÀ» °­Á¦ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¹«ÇÑ È¸µ¹À̸¦ ¹æÁöÇÕ´Ï´Ù.
+; ¼­ºê·çƾ ÀÚü°¡ Numpad0¸¦ Àü¼ÛÇϱ⠶§¹®Àε¥, ÀÌ ¶§¹®¿¡
+; ÀÚ±â ÀÚ½ÅÀ» È£ÃâÇÏ´Â ¹«ÇÑ Àç±Í¿¡ ºüÁú ¼ö ÀÖ½À´Ï´Ù.
+SetBatchLines, 100 ; ÀÌ °æ¿ì ¾à°£ ´õ »¡¸® ½ÇÇàÇϵµ·Ï ¸¸µì´Ï´Ù.
+DelayBetweenKeys = 30 ; ÀÛµ¿ÇÏÁö ¾ÊÀ» °æ¿ì ÀÌ °ªÀ» Á¶ÀýÇÕ´Ï´Ù.
+if A_PriorHotkey = %A_ThisHotkey%
+{
+    if A_TimeSincePriorHotkey < %DelayBetweenKeys%
+    {
+        if Numpad0Count =
+            Numpad0Count = 2 ; Áï, ¾Õ¿¡ °Í¿¡´Ù ÀÌ°ÍÀ» ´õÇÑ °ÍÀÔ´Ï´Ù.
+        else if Numpad0Count = 0
+            Numpad0Count = 2
+        else
+        {
+            ; ¿©±â¿¡ ÀÖÀ¸¹Ç·Î, Numpad0Count°¡ ÀÌÀü È£Ãâ¿¡¼­
+            ; ¹Ýµå½Ã 2·Î ¼³Á¤µÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù.
+            ; Áï, ÀÌ ¹ø¿¡ Å°°¡ ¼¼ ¹ø° ´­¸° °ÍÀ̶ó´Â ¶æÀÔ´Ï´Ù
+            ; ±×·¯¹Ç·Î, ÇÖÅ° ¿¬¼Ó¿­ÀÌ Ã˹ߵǾî¾ß ÇÕ´Ï´Ù:
+            Numpad0Count = 0
+            Send, = ; ******* ÀÌ°ÍÀÌ 000 Å°¿¡ ´ëÇÑ Á¶Ä¡ÀÔ´Ï´Ù
+        }
+        ; À§ÀÇ ¸ðµç °æ¿ì¿¡, ´õ ÀÌ»ó Á¶Ä¡ ¾øÀÌ µ¹¾Æ°©´Ï´Ù:
+        CalledReentrantly = y
+        return
+    }
+}
+; ±×·¸Áö ¾ÊÀ¸¸é, ÀÌ Numpad0 À̺¥Æ®´Â ÀÏ·ÃÀÇ ¿¬¼Ó¿¡¼­ ù ¹ø°À̰ųª
+; ¾Æ´Ï¸é ¾î¼´Ù°¡ ù ¹ø° À̺¥Æ® ´ÙÀ½¿¡ ³Ê¹« ¿À·¡ °É¸° °ÍÀÔ´Ï´Ù.
+; (¿¹, »ç¿ëÀÚ°¡ Numpad0 Å°¸¦ °è¼Ó ´­·¯¼­ ÀÚµ¿ ¹Ýº¹À» ÇÏ´Â °æ¿ì°¡ ±×·²ÅÙµ¥, 
+; ÀÌ°ÍÀ» Çã¿ëÇÏ°í ½ÍÀº °ÍÀÔ´Ï´Ù).  ±×·¯¹Ç·Î, ªÀº Áö¿¬ ½Ã°£ ÈÄ¿¡
+; -- ±× »çÀÌ¿¡ ¶Ç´Ù¸¥ Numpad0 ÇÖÅ° À̺¥Æ®°¡ ÀçÁøÀÔÇÏ¿©
+;  ÀÌ ¼­ºê·çƾÀ» È£ÃâÇÒ ¼öµµ ÀÖÁö¸¸ -- 
+; ÀçÁøÀÔ È£ÃâÀÌ ÀϾÁö¸¸ ¾Ê´Â´Ù¸é ±× Å°¸¦ °è¼Ó º¸³À´Ï´Ù:
+Numpad0Count = 0
+CalledReentrantly = n
+; ÀÌ·¸°Ô ÀÚ´Â µ¿¾È, ÀÌ ¼­ºê·çƾÀº ÀçÁøÀÔ È£ÃâµÉ ¼ö ÀÖ½À´Ï´Ù
+; (Áï, µ¿½Ã "¾²·¹µå"·Î¼­ ÇöÀç È£Ãâ »óÅ¿¡ ÀÖ´Â ¾²·¹µå¿Í
+; º´ÇàÀûÀ¸·Î ½ÇÇàµË´Ï´Ù):
+Sleep, %DelayBetweenKeys%
+if CalledReentrantly = y ; ¶Ç´Ù¸¥ "¾²·¹µå"°¡ °ªÀ» º¯°æÇß½À´Ï´Ù.
+{
+    ; ÀçÁøÀÔ È£ÃâµÇ¾úÀ¸¹Ç·Î, ÀÌ Å° À̺¥Æ®´Â ¿¬¼Ó¿­¿¡¼­
+    ; ù ¹ø° À̺¥Æ®¿´½À´Ï´Ù. ±×·¡¼­ ¾ï´­·¯¾ß ÇÕ´Ï´Ù (½Ã½ºÅÛÀ¸·ÎºÎÅÍ ¼û°Ü¾ß ÇÕ´Ï´Ù):
+    CalledReentrantly = n
+    return
+}
+; ±×·¸Áö ¾ÊÀ¸¸é, ¿¬¼Ó¿­¿¡ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù. ±×·¡¼­ ±× Å°¸¦ º¸Åëó·³ Àü¼ÛÇÕ´Ï´Ù.
+; ´Ù¸¥ ¸»·Î, *ÁøÂ¥* Numpad0 Å°°¡ ´­·È½À´Ï´Ù. ±×·¡¼­ Á¤»óó·³ È¿°ú°¡ Àֱ⸦ ¿øÇÕ´Ï´Ù.:
+Send, {Numpad0}
+return
+
+ + diff --git a/src/docs/scripts/NumpadMouse.ahk b/src/docs/scripts/NumpadMouse.ahk new file mode 100644 index 0000000..4602be9 --- /dev/null +++ b/src/docs/scripts/NumpadMouse.ahk @@ -0,0 +1,750 @@ +; Using Keyboard Numpad as a Mouse -- by deguix +; http://www.autohotkey.com +; This script makes mousing with your keyboard almost as easy +; as using a real mouse (maybe even easier for some tasks). +; It supports up to five mouse buttons and the turning of the +; mouse wheel. It also features customizable movement speed, +; acceleration, and "axis inversion". + +/* +o------------------------------------------------------------o +|Using Keyboard Numpad as a Mouse | +(------------------------------------------------------------) +| By deguix / A Script file for AutoHotkey 1.0.22+ | +| ----------------------------------------| +| | +| This script is an example of use of AutoHotkey. It uses | +| the remapping of numpad keys of a keyboard to transform it | +| into a mouse. Some features are the acceleration which | +| enables you to increase the mouse movement when holding | +| a key for a long time, and the rotation which makes the | +| numpad mouse to "turn". I.e. NumPadDown as NumPadUp | +| and vice-versa. See the list of keys used below: | +| | +|------------------------------------------------------------| +| Keys | Description | +|------------------------------------------------------------| +| ScrollLock (toggle on)| Activates numpad mouse mode. | +|-----------------------|------------------------------------| +| NumPad0 | Left mouse button click. | +| NumPad5 | Middle mouse button click. | +| NumPadDot | Right mouse button click. | +| NumPadDiv/NumPadMult | X1/X2 mouse button click. (Win 2k+)| +| NumPadSub/NumPadAdd | Moves up/down the mouse wheel. | +| | | +|-----------------------|------------------------------------| +| NumLock (toggled off) | Activates mouse movement mode. | +|-----------------------|------------------------------------| +| NumPadEnd/Down/PgDn/ | Mouse movement. | +| /Left/Right/Home/Up/ | | +| /PgUp | | +| | | +|-----------------------|------------------------------------| +| NumLock (toggled on) | Activates mouse speed adj. mode. | +|-----------------------|------------------------------------| +| NumPad7/NumPad1 | Inc./dec. acceleration per | +| | button press. | +| NumPad8/NumPad2 | Inc./dec. initial speed per | +| | button press. | +| NumPad9/NumPad3 | Inc./dec. maximum speed per | +| | button press. | +| ^NumPad7/^NumPad1 | Inc./dec. wheel acceleration per | +| | button press*. | +| ^NumPad8/^NumPad2 | Inc./dec. wheel initial speed per | +| | button press*. | +| ^NumPad9/^NumPad3 | Inc./dec. wheel maximum speed per | +| | button press*. | +| NumPad4/NumPad6 | Inc./dec. rotation angle to | +| | right in degrees. (i.e. 180° = | +| | = inversed controls). | +|------------------------------------------------------------| +| * = These options are affected by the mouse wheel speed | +| adjusted on Control Panel. If you don't have a mouse with | +| wheel, the default is 3 +/- lines per option button press. | +o------------------------------------------------------------o +*/ + +;START OF CONFIG SECTION + +#SingleInstance force +#MaxHotkeysPerInterval 500 + +; Using the keyboard hook to implement the Numpad hotkeys prevents +; them from interfering with the generation of ANSI characters such +; as à. This is because AutoHotkey generates such characters +; by holding down ALT and sending a series of Numpad keystrokes. +; Hook hotkeys are smart enough to ignore such keystrokes. +#UseHook + +MouseSpeed = 1 +MouseAccelerationSpeed = 1 +MouseMaxSpeed = 5 + +;Mouse wheel speed is also set on Control Panel. As that +;will affect the normal mouse behavior, the real speed of +;these three below are times the normal mouse wheel speed. +MouseWheelSpeed = 1 +MouseWheelAccelerationSpeed = 1 +MouseWheelMaxSpeed = 5 + +MouseRotationAngle = 0 + +;END OF CONFIG SECTION + +;This is needed or key presses would faulty send their natural +;actions. Like NumPadDiv would send sometimes "/" to the +;screen. +#InstallKeybdHook + +Temp = 0 +Temp2 = 0 + +MouseRotationAnglePart = %MouseRotationAngle% +;Divide by 45º because MouseMove only supports whole numbers, +;and changing the mouse rotation to a number lesser than 45º +;could make strange movements. +; +;For example: 22.5º when pressing NumPadUp: +; First it would move upwards until the speed +; to the side reaches 1. +MouseRotationAnglePart /= 45 + +MouseCurrentAccelerationSpeed = 0 +MouseCurrentSpeed = %MouseSpeed% + +MouseWheelCurrentAccelerationSpeed = 0 +MouseWheelCurrentSpeed = %MouseSpeed% + +SetKeyDelay, -1 +SetMouseDelay, -1 + +Hotkey, *NumPad0, ButtonLeftClick +Hotkey, *NumpadIns, ButtonLeftClickIns +Hotkey, *NumPad5, ButtonMiddleClick +Hotkey, *NumpadClear, ButtonMiddleClickClear +Hotkey, *NumPadDot, ButtonRightClick +Hotkey, *NumPadDel, ButtonRightClickDel +Hotkey, *NumPadDiv, ButtonX1Click +Hotkey, *NumPadMult, ButtonX2Click + +Hotkey, *NumpadSub, ButtonWheelUp +Hotkey, *NumpadAdd, ButtonWheelDown + +Hotkey, *NumPadUp, ButtonUp +Hotkey, *NumPadDown, ButtonDown +Hotkey, *NumPadLeft, ButtonLeft +Hotkey, *NumPadRight, ButtonRight +Hotkey, *NumPadHome, ButtonUpLeft +Hotkey, *NumPadEnd, ButtonUpRight +Hotkey, *NumPadPgUp, ButtonDownLeft +Hotkey, *NumPadPgDn, ButtonDownRight + +Hotkey, Numpad8, ButtonSpeedUp +Hotkey, Numpad2, ButtonSpeedDown +Hotkey, Numpad7, ButtonAccelerationSpeedUp +Hotkey, Numpad1, ButtonAccelerationSpeedDown +Hotkey, Numpad9, ButtonMaxSpeedUp +Hotkey, Numpad3, ButtonMaxSpeedDown + +Hotkey, Numpad6, ButtonRotationAngleUp +Hotkey, Numpad4, ButtonRotationAngleDown + +Hotkey, !Numpad8, ButtonWheelSpeedUp +Hotkey, !Numpad2, ButtonWheelSpeedDown +Hotkey, !Numpad7, ButtonWheelAccelerationSpeedUp +Hotkey, !Numpad1, ButtonWheelAccelerationSpeedDown +Hotkey, !Numpad9, ButtonWheelMaxSpeedUp +Hotkey, !Numpad3, ButtonWheelMaxSpeedDown + +Gosub, ~ScrollLock ; Initialize based on current ScrollLock state. +return + +;Key activation support + +~ScrollLock:: +; Wait for it to be released because otherwise the hook state gets reset +; while the key is down, which causes the up-event to get suppressed, +; which in turn prevents toggling of the ScrollLock state/light: +KeyWait, ScrollLock +GetKeyState, ScrollLockState, ScrollLock, T +If ScrollLockState = D +{ + Hotkey, *NumPad0, on + Hotkey, *NumpadIns, on + Hotkey, *NumPad5, on + Hotkey, *NumPadDot, on + Hotkey, *NumPadDel, on + Hotkey, *NumPadDiv, on + Hotkey, *NumPadMult, on + + Hotkey, *NumpadSub, on + Hotkey, *NumpadAdd, on + + Hotkey, *NumPadUp, on + Hotkey, *NumPadDown, on + Hotkey, *NumPadLeft, on + Hotkey, *NumPadRight, on + Hotkey, *NumPadHome, on + Hotkey, *NumPadEnd, on + Hotkey, *NumPadPgUp, on + Hotkey, *NumPadPgDn, on + + Hotkey, Numpad8, on + Hotkey, Numpad2, on + Hotkey, Numpad7, on + Hotkey, Numpad1, on + Hotkey, Numpad9, on + Hotkey, Numpad3, on + + Hotkey, Numpad6, on + Hotkey, Numpad4, on + + Hotkey, !Numpad8, on + Hotkey, !Numpad2, on + Hotkey, !Numpad7, on + Hotkey, !Numpad1, on + Hotkey, !Numpad9, on + Hotkey, !Numpad3, on +} +else +{ + Hotkey, *NumPad0, off + Hotkey, *NumpadIns, off + Hotkey, *NumPad5, off + Hotkey, *NumPadDot, off + Hotkey, *NumPadDel, off + Hotkey, *NumPadDiv, off + Hotkey, *NumPadMult, off + + Hotkey, *NumpadSub, off + Hotkey, *NumpadAdd, off + + Hotkey, *NumPadUp, off + Hotkey, *NumPadDown, off + Hotkey, *NumPadLeft, off + Hotkey, *NumPadRight, off + Hotkey, *NumPadHome, off + Hotkey, *NumPadEnd, off + Hotkey, *NumPadPgUp, off + Hotkey, *NumPadPgDn, off + + Hotkey, Numpad8, off + Hotkey, Numpad2, off + Hotkey, Numpad7, off + Hotkey, Numpad1, off + Hotkey, Numpad9, off + Hotkey, Numpad3, off + + Hotkey, Numpad6, off + Hotkey, Numpad4, off + + Hotkey, !Numpad8, off + Hotkey, !Numpad2, off + Hotkey, !Numpad7, off + Hotkey, !Numpad1, off + Hotkey, !Numpad9, off + Hotkey, !Numpad3, off +} +return + +;Mouse click support + +ButtonLeftClick: +GetKeyState, already_down_state, LButton +If already_down_state = D + return +Button2 = NumPad0 +ButtonClick = Left +Goto ButtonClickStart +ButtonLeftClickIns: +GetKeyState, already_down_state, LButton +If already_down_state = D + return +Button2 = NumPadIns +ButtonClick = Left +Goto ButtonClickStart + +ButtonMiddleClick: +GetKeyState, already_down_state, MButton +If already_down_state = D + return +Button2 = NumPad5 +ButtonClick = Middle +Goto ButtonClickStart +ButtonMiddleClickClear: +GetKeyState, already_down_state, MButton +If already_down_state = D + return +Button2 = NumPadClear +ButtonClick = Middle +Goto ButtonClickStart + +ButtonRightClick: +GetKeyState, already_down_state, RButton +If already_down_state = D + return +Button2 = NumPadDot +ButtonClick = Right +Goto ButtonClickStart +ButtonRightClickDel: +GetKeyState, already_down_state, RButton +If already_down_state = D + return +Button2 = NumPadDel +ButtonClick = Right +Goto ButtonClickStart + +ButtonX1Click: +GetKeyState, already_down_state, XButton1 +If already_down_state = D + return +Button2 = NumPadDiv +ButtonClick = X1 +Goto ButtonClickStart + +ButtonX2Click: +GetKeyState, already_down_state, XButton2 +If already_down_state = D + return +Button2 = NumPadMult +ButtonClick = X2 +Goto ButtonClickStart + +ButtonClickStart: +MouseClick, %ButtonClick%,,, 1, 0, D +SetTimer, ButtonClickEnd, 10 +return + +ButtonClickEnd: +GetKeyState, kclickstate, %Button2%, P +if kclickstate = D + return + +SetTimer, ButtonClickEnd, off +MouseClick, %ButtonClick%,,, 1, 0, U +return + +;Mouse movement support + +ButtonSpeedUp: +MouseSpeed++ +ToolTip, Mouse speed: %MouseSpeed% pixels +SetTimer, RemoveToolTip, 1000 +return +ButtonSpeedDown: +If MouseSpeed > 1 + MouseSpeed-- +If MouseSpeed = 1 + ToolTip, Mouse speed: %MouseSpeed% pixel +else + ToolTip, Mouse speed: %MouseSpeed% pixels +SetTimer, RemoveToolTip, 1000 +return +ButtonAccelerationSpeedUp: +MouseAccelerationSpeed++ +ToolTip, Mouse acceleration speed: %MouseAccelerationSpeed% pixels +SetTimer, RemoveToolTip, 1000 +return +ButtonAccelerationSpeedDown: +If MouseAccelerationSpeed > 1 + MouseAccelerationSpeed-- +If MouseAccelerationSpeed = 1 + ToolTip, Mouse acceleration speed: %MouseAccelerationSpeed% pixel +else + ToolTip, Mouse acceleration speed: %MouseAccelerationSpeed% pixels +SetTimer, RemoveToolTip, 1000 +return + +ButtonMaxSpeedUp: +MouseMaxSpeed++ +ToolTip, Mouse maximum speed: %MouseMaxSpeed% pixels +SetTimer, RemoveToolTip, 1000 +return +ButtonMaxSpeedDown: +If MouseMaxSpeed > 1 + MouseMaxSpeed-- +If MouseMaxSpeed = 1 + ToolTip, Mouse maximum speed: %MouseMaxSpeed% pixel +else + ToolTip, Mouse maximum speed: %MouseMaxSpeed% pixels +SetTimer, RemoveToolTip, 1000 +return + +ButtonRotationAngleUp: +MouseRotationAnglePart++ +If MouseRotationAnglePart >= 8 + MouseRotationAnglePart = 0 +MouseRotationAngle = %MouseRotationAnglePart% +MouseRotationAngle *= 45 +ToolTip, Mouse rotation angle: %MouseRotationAngle%° +SetTimer, RemoveToolTip, 1000 +return +ButtonRotationAngleDown: +MouseRotationAnglePart-- +If MouseRotationAnglePart < 0 + MouseRotationAnglePart = 7 +MouseRotationAngle = %MouseRotationAnglePart% +MouseRotationAngle *= 45 +ToolTip, Mouse rotation angle: %MouseRotationAngle%° +SetTimer, RemoveToolTip, 1000 +return + +ButtonUp: +ButtonDown: +ButtonLeft: +ButtonRight: +ButtonUpLeft: +ButtonUpRight: +ButtonDownLeft: +ButtonDownRight: +If Button <> 0 +{ + IfNotInString, A_ThisHotkey, %Button% + { + MouseCurrentAccelerationSpeed = 0 + MouseCurrentSpeed = %MouseSpeed% + } +} +StringReplace, Button, A_ThisHotkey, * + +ButtonAccelerationStart: +If MouseAccelerationSpeed >= 1 +{ + If MouseMaxSpeed > %MouseCurrentSpeed% + { + Temp = 0.001 + Temp *= %MouseAccelerationSpeed% + MouseCurrentAccelerationSpeed += %Temp% + MouseCurrentSpeed += %MouseCurrentAccelerationSpeed% + } +} + +;MouseRotationAngle convertion to speed of button direction +{ + MouseCurrentSpeedToDirection = %MouseRotationAngle% + MouseCurrentSpeedToDirection /= 90.0 + Temp = %MouseCurrentSpeedToDirection% + + if Temp >= 0 + { + if Temp < 1 + { + MouseCurrentSpeedToDirection = 1 + MouseCurrentSpeedToDirection -= %Temp% + Goto EndMouseCurrentSpeedToDirectionCalculation + } + } + if Temp >= 1 + { + if Temp < 2 + { + MouseCurrentSpeedToDirection = 0 + Temp -= 1 + MouseCurrentSpeedToDirection -= %Temp% + Goto EndMouseCurrentSpeedToDirectionCalculation + } + } + if Temp >= 2 + { + if Temp < 3 + { + MouseCurrentSpeedToDirection = -1 + Temp -= 2 + MouseCurrentSpeedToDirection += %Temp% + Goto EndMouseCurrentSpeedToDirectionCalculation + } + } + if Temp >= 3 + { + if Temp < 4 + { + MouseCurrentSpeedToDirection = 0 + Temp -= 3 + MouseCurrentSpeedToDirection += %Temp% + Goto EndMouseCurrentSpeedToDirectionCalculation + } + } +} +EndMouseCurrentSpeedToDirectionCalculation: + +;MouseRotationAngle convertion to speed of 90 degrees to right +{ + MouseCurrentSpeedToSide = %MouseRotationAngle% + MouseCurrentSpeedToSide /= 90.0 + Temp = %MouseCurrentSpeedToSide% + Transform, Temp, mod, %Temp%, 4 + + if Temp >= 0 + { + if Temp < 1 + { + MouseCurrentSpeedToSide = 0 + MouseCurrentSpeedToSide += %Temp% + Goto EndMouseCurrentSpeedToSideCalculation + } + } + if Temp >= 1 + { + if Temp < 2 + { + MouseCurrentSpeedToSide = 1 + Temp -= 1 + MouseCurrentSpeedToSide -= %Temp% + Goto EndMouseCurrentSpeedToSideCalculation + } + } + if Temp >= 2 + { + if Temp < 3 + { + MouseCurrentSpeedToSide = 0 + Temp -= 2 + MouseCurrentSpeedToSide -= %Temp% + Goto EndMouseCurrentSpeedToSideCalculation + } + } + if Temp >= 3 + { + if Temp < 4 + { + MouseCurrentSpeedToSide = -1 + Temp -= 3 + MouseCurrentSpeedToSide += %Temp% + Goto EndMouseCurrentSpeedToSideCalculation + } + } +} +EndMouseCurrentSpeedToSideCalculation: + +MouseCurrentSpeedToDirection *= %MouseCurrentSpeed% +MouseCurrentSpeedToSide *= %MouseCurrentSpeed% + +Temp = %MouseRotationAnglePart% +Transform, Temp, Mod, %Temp%, 2 + +If Button = NumPadUp +{ + if Temp = 1 + { + MouseCurrentSpeedToSide *= 2 + MouseCurrentSpeedToDirection *= 2 + } + + MouseCurrentSpeedToDirection *= -1 + MouseMove, %MouseCurrentSpeedToSide%, %MouseCurrentSpeedToDirection%, 0, R +} +else if Button = NumPadDown +{ + if Temp = 1 + { + MouseCurrentSpeedToSide *= 2 + MouseCurrentSpeedToDirection *= 2 + } + + MouseCurrentSpeedToSide *= -1 + MouseMove, %MouseCurrentSpeedToSide%, %MouseCurrentSpeedToDirection%, 0, R +} +else if Button = NumPadLeft +{ + if Temp = 1 + { + MouseCurrentSpeedToSide *= 2 + MouseCurrentSpeedToDirection *= 2 + } + + MouseCurrentSpeedToSide *= -1 + MouseCurrentSpeedToDirection *= -1 + MouseMove, %MouseCurrentSpeedToDirection%, %MouseCurrentSpeedToSide%, 0, R +} +else if Button = NumPadRight +{ + if Temp = 1 + { + MouseCurrentSpeedToSide *= 2 + MouseCurrentSpeedToDirection *= 2 + } + + MouseMove, %MouseCurrentSpeedToDirection%, %MouseCurrentSpeedToSide%, 0, R +} +else if Button = NumPadHome +{ + Temp = %MouseCurrentSpeedToDirection% + Temp -= %MouseCurrentSpeedToSide% + Temp *= -1 + Temp2 = %MouseCurrentSpeedToDirection% + Temp2 += %MouseCurrentSpeedToSide% + Temp2 *= -1 + MouseMove, %Temp%, %Temp2%, 0, R +} +else if Button = NumPadPgUp +{ + Temp = %MouseCurrentSpeedToDirection% + Temp += %MouseCurrentSpeedToSide% + Temp2 = %MouseCurrentSpeedToDirection% + Temp2 -= %MouseCurrentSpeedToSide% + Temp2 *= -1 + MouseMove, %Temp%, %Temp2%, 0, R +} +else if Button = NumPadEnd +{ + Temp = %MouseCurrentSpeedToDirection% + Temp += %MouseCurrentSpeedToSide% + Temp *= -1 + Temp2 = %MouseCurrentSpeedToDirection% + Temp2 -= %MouseCurrentSpeedToSide% + MouseMove, %Temp%, %Temp2%, 0, R +} +else if Button = NumPadPgDn +{ + Temp = %MouseCurrentSpeedToDirection% + Temp -= %MouseCurrentSpeedToSide% + Temp2 *= -1 + Temp2 = %MouseCurrentSpeedToDirection% + Temp2 += %MouseCurrentSpeedToSide% + MouseMove, %Temp%, %Temp2%, 0, R +} + +SetTimer, ButtonAccelerationEnd, 10 +return + +ButtonAccelerationEnd: +GetKeyState, kstate, %Button%, P +if kstate = D + Goto ButtonAccelerationStart + +SetTimer, ButtonAccelerationEnd, off +MouseCurrentAccelerationSpeed = 0 +MouseCurrentSpeed = %MouseSpeed% +Button = 0 +return + +;Mouse wheel movement support + +ButtonWheelSpeedUp: +MouseWheelSpeed++ +RegRead, MouseWheelSpeedMultiplier, HKCU, Control Panel\Desktop, WheelScrollLines +If MouseWheelSpeedMultiplier <= 0 + MouseWheelSpeedMultiplier = 1 +MouseWheelSpeedReal = %MouseWheelSpeed% +MouseWheelSpeedReal *= %MouseWheelSpeedMultiplier% +ToolTip, Mouse wheel speed: %MouseWheelSpeedReal% lines +SetTimer, RemoveToolTip, 1000 +return +ButtonWheelSpeedDown: +RegRead, MouseWheelSpeedMultiplier, HKCU, Control Panel\Desktop, WheelScrollLines +If MouseWheelSpeedMultiplier <= 0 + MouseWheelSpeedMultiplier = 1 +If MouseWheelSpeedReal > %MouseWheelSpeedMultiplier% +{ + MouseWheelSpeed-- + MouseWheelSpeedReal = %MouseWheelSpeed% + MouseWheelSpeedReal *= %MouseWheelSpeedMultiplier% +} +If MouseWheelSpeedReal = 1 + ToolTip, Mouse wheel speed: %MouseWheelSpeedReal% line +else + ToolTip, Mouse wheel speed: %MouseWheelSpeedReal% lines +SetTimer, RemoveToolTip, 1000 +return + +ButtonWheelAccelerationSpeedUp: +MouseWheelAccelerationSpeed++ +RegRead, MouseWheelSpeedMultiplier, HKCU, Control Panel\Desktop, WheelScrollLines +If MouseWheelSpeedMultiplier <= 0 + MouseWheelSpeedMultiplier = 1 +MouseWheelAccelerationSpeedReal = %MouseWheelAccelerationSpeed% +MouseWheelAccelerationSpeedReal *= %MouseWheelSpeedMultiplier% +ToolTip, Mouse wheel acceleration speed: %MouseWheelAccelerationSpeedReal% lines +SetTimer, RemoveToolTip, 1000 +return +ButtonWheelAccelerationSpeedDown: +RegRead, MouseWheelSpeedMultiplier, HKCU, Control Panel\Desktop, WheelScrollLines +If MouseWheelSpeedMultiplier <= 0 + MouseWheelSpeedMultiplier = 1 +If MouseWheelAccelerationSpeed > 1 +{ + MouseWheelAccelerationSpeed-- + MouseWheelAccelerationSpeedReal = %MouseWheelAccelerationSpeed% + MouseWheelAccelerationSpeedReal *= %MouseWheelSpeedMultiplier% +} +If MouseWheelAccelerationSpeedReal = 1 + ToolTip, Mouse wheel acceleration speed: %MouseWheelAccelerationSpeedReal% line +else + ToolTip, Mouse wheel acceleration speed: %MouseWheelAccelerationSpeedReal% lines +SetTimer, RemoveToolTip, 1000 +return + +ButtonWheelMaxSpeedUp: +MouseWheelMaxSpeed++ +RegRead, MouseWheelSpeedMultiplier, HKCU, Control Panel\Desktop, WheelScrollLines +If MouseWheelSpeedMultiplier <= 0 + MouseWheelSpeedMultiplier = 1 +MouseWheelMaxSpeedReal = %MouseWheelMaxSpeed% +MouseWheelMaxSpeedReal *= %MouseWheelSpeedMultiplier% +ToolTip, Mouse wheel maximum speed: %MouseWheelMaxSpeedReal% lines +SetTimer, RemoveToolTip, 1000 +return +ButtonWheelMaxSpeedDown: +RegRead, MouseWheelSpeedMultiplier, HKCU, Control Panel\Desktop, WheelScrollLines +If MouseWheelSpeedMultiplier <= 0 + MouseWheelSpeedMultiplier = 1 +If MouseWheelMaxSpeed > 1 +{ + MouseWheelMaxSpeed-- + MouseWheelMaxSpeedReal = %MouseWheelMaxSpeed% + MouseWheelMaxSpeedReal *= %MouseWheelSpeedMultiplier% +} +If MouseWheelMaxSpeedReal = 1 + ToolTip, Mouse wheel maximum speed: %MouseWheelMaxSpeedReal% line +else + ToolTip, Mouse wheel maximum speed: %MouseWheelMaxSpeedReal% lines +SetTimer, RemoveToolTip, 1000 +return + +ButtonWheelUp: +ButtonWheelDown: + +If Button <> 0 +{ + If Button <> %A_ThisHotkey% + { + MouseWheelCurrentAccelerationSpeed = 0 + MouseWheelCurrentSpeed = %MouseWheelSpeed% + } +} +StringReplace, Button, A_ThisHotkey, * + +ButtonWheelAccelerationStart: +If MouseWheelAccelerationSpeed >= 1 +{ + If MouseWheelMaxSpeed > %MouseWheelCurrentSpeed% + { + Temp = 0.001 + Temp *= %MouseWheelAccelerationSpeed% + MouseWheelCurrentAccelerationSpeed += %Temp% + MouseWheelCurrentSpeed += %MouseWheelCurrentAccelerationSpeed% + } +} + +If Button = NumPadSub + MouseClick, wheelup,,, %MouseWheelCurrentSpeed%, 0, D +else if Button = NumPadAdd + MouseClick, wheeldown,,, %MouseWheelCurrentSpeed%, 0, D + +SetTimer, ButtonWheelAccelerationEnd, 100 +return + +ButtonWheelAccelerationEnd: +GetKeyState, kstate, %Button%, P +if kstate = D + Goto ButtonWheelAccelerationStart + +MouseWheelCurrentAccelerationSpeed = 0 +MouseWheelCurrentSpeed = %MouseWheelSpeed% +Button = 0 +return + +RemoveToolTip: +SetTimer, RemoveToolTip, Off +ToolTip +return \ No newline at end of file diff --git a/src/docs/scripts/NumpadMouse.htm b/src/docs/scripts/NumpadMouse.htm new file mode 100644 index 0000000..6585a0f --- /dev/null +++ b/src/docs/scripts/NumpadMouse.htm @@ -0,0 +1,763 @@ + + +Using Keyboard Numpad as a Mouse -- by deguix + + + + + + + +

Å°º¸µåÀÇ ³ÑÆе带 ¸¶¿ì½ºÃ³·³ »ç¿ëÇÏ´Â ¹ý -- by deguix

+ +

+ÀÌ ½ºÅ©¸³Æ®´Â Å°º¸µå¸¦ ¸¶¿ì½ºÃ³·³ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇØ ÁÝ´Ï´Ù. °ÅÀÇ ½ÇÁ¦ ¸¶¿ì½º¸¦ »ç¿ëÇÏ´Â °Í°ú ºñ½ÁÇÏ°Ô ½±½À´Ï´Ù (¾î¶² ÀÛ¾÷¿¡´Â ÈξÀ ´õ ½¬¿ï ¼ö ÀÖ½À´Ï´Ù). +ÃÖ´ë ´Ù¼¸ °³ÀÇ ¸¶¿ì½º ¹öÆ°À» Áö¿øÇÏ¸ç ¸¶¿ì½º ÈÙÀ» ȸÀüÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ À̵¿ ¼Óµµ, °¡¼Ó ±â´É, ±×¸®°í "Ãà µÚÁý±â"¸¦ Àç´ÜÇÒ ¼ö ÀÖ½À´Ï´Ù. +

+

ÀÌ ½ºÅ©¸³Æ² ³»·Á ¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

+ +
/*
+o------------------------------------------------------------o
+|Å°º¸µåÀÇ ³ÑÆе带 ¸¶¿ì½º·Î »ç¿ëÇ챉                         |
+(------------------------------------------------------------)
+| By deguix           / ¿ÀÅäÇÖÅ° 1.0.22+ ¿ë ½ºÅ©¸³Æ® ÆÄÀÏ    |
+|                    ----------------------------------------|
+|                                                            |
+|    ÀÌ ½ºÅ©¸³Æ®´Â ¿ÀÅäÇÖÅ°ÀÇ »ç¿ë¹ýÀ» º¸¿©ÁÖ´Â ¿¹Á¦ÀÔ´Ï´Ù.  |
+| Å°º¸µåÀÇ ³ÑÆеå Å°¸¦ ¸®¸ÊÇؼ­ ¸¶¿ì½º·Î¼­ º¯½Å½Ãŵ´Ï´Ù.     |
+| °¡¼Ó ±â´ÉÀÌ µé¾î À־ Å°¸¦ ¿À·§ ´©¸£°í ÀÖÀ¸¸é ¸¶¿ì½º     |
+| À̵¿À» °¡¼ÓÇÒ ¼ö ÀÖ½À´Ï´Ù´Ù. ȸÀü ±â´Éµµ °®Ãß°í À־     |
+| ³ÑÆÐµå ¸¶¿ì½º¸¦ "µ¹¸± ¼ö ÀÖ½À´Ï´Ù"                         |
+| Áï, NumPadDown¿Í NumPadUp¸¦ ´©¸£¸é ÈÙó·³ µ¹¸± ¼ö ÀÖ½À´Ï´Ù.|
+| ¾Æ·¡¿¡ »ç¿ëµÈ Å° ¸®½ºÆ®¸¦ ÂüÁ¶ÇϽʽÿÀ:                    |
+|                                                            |
+|------------------------------------------------------------|
+| Å°                    | ¼³¸í                               |
+|------------------------------------------------------------|
+| ScrollLock (toggle on)| ³ÑÆÐµå ¸¶¿ì½º ¸ðµå¸¦ È°¼ºÈ­        |
+|-----------------------|------------------------------------|
+| NumPad0               | ¿Þ¹öÆ° Ŭ¸¯.                       |
+| NumPad5               | °¡¿îµ¥ ¹öÆ° Ŭ¸¯.                  |
+| NumPadDot             | ¿ì¹öÆ° Ŭ¸¯.                       |
+| NumPadDiv/NumPadMult  | X1/X2 ¸¶¿ì½º ¹öÆ° Ŭ¸¯. (Win 2k+)  |
+| NumPadSub/NumPadAdd   | ¸¶¿ì½º ÈÙÀ» À§ ¾Æ·¡·Î À̵¿.        |
+|                       |                                    |
+|-----------------------|------------------------------------|
+| NumLock (toggled off) | ¸¶¿ì½º À̵¿ ¸ðµå¸¦ È°¼ºÈ­.         |
+|-----------------------|------------------------------------|
+| NumPadEnd/Down/PgDn/  | ¸¶¿ì½º À̵¿.                       |
+| /Left/Right/Home/Up/  |                                    |
+| /PgUp                 |                                    |
+|                       |                                    |
+|-----------------------|------------------------------------|
+| NumLock (toggled on)  | ¸¶¿ì½º ¼Óµµ Á¶Àý ¸ðµå È°¼ºÈ­.      |
+|-----------------------|------------------------------------|
+| NumPad7/NumPad1       | ¹öÆ°À» ´©¸¦ ¶§¸¶´Ù                 |
+|                       | °¡¼ÓÀÌ Áõ°¡/°¨¼Ò.                  |
+| NumPad8/NumPad2       | ¹öÆ°À» ´©¸¦ ¶§¸¶´Ù                 |
+|                       | ÃÖÃÊ ¼Óµµ°¡ Áõ°¡/°¨¼Ò.             |
+| NumPad9/NumPad3       | ¹öÆ°À» ´©¸¦ ¶§¸¶´Ù                 |
+|                       | ÃÖ´ë ¼Óµµ°¡ Áõ°¡/°¨¼Ò.             |
+| ^NumPad7/^NumPad1     | ¹öÆ°À» ´©¸¦ ¶§¸¶´Ù *               |
+|                       | ÈÙ °¡¼ÓÀÌ Áõ°¡/°¨¼Ò.               |
+| ^NumPad8/^NumPad2     | ¹öÆ°À» ´©¸¦ ¶§¸¶´Ù *               |
+|                       | ÈÙ Ãʱ⠼ӵµ Áõ°¡/°¨¼Ò.            |
+| ^NumPad9/^NumPad3     | ¹öÆ°À» ´©¸¦ ¶§¸¶´Ù *               |
+|                       | ÈÙ ÃÖ´ë ¼Óµµ Áõ°¡/°¨¼Ò.            |
+| NumPad4/NumPad6       | ¿À¸¥ÂÊÀ¸·Î ȸÀü °¢µµ¸¦ Áõ°¡/°¨¼Ò   |
+|                       | Áï, 180° = ¹Ý´ë·Î µÚÁý¾îÁü        |
+|------------------------------------------------------------|
+| * = ÀÌ ¿É¼ÇÀº Á¦¾îÆÇ¿¡¼­ Á¶ÀýÇÑ ¸¶¿ì½º ÈÙÀÇ ¼ÓµµÀÇ         |
+| ¿µÇâÀ» ¹Þ½À´Ï´Ù. ¸¶¿ì½º¿¡ ÈÙÀÌ ¾ø´Ù¸é                      |
+| ±âº»°ªÀº ¹öÆ° ´­¸²´ç 3 +/- ÁÙÀÔ´Ï´Ù.                       |
+o------------------------------------------------------------o
+*/
+
+;ȯ°æ ±¸¼º ½ÃÀÛ
+
+#SingleInstance force
+#MaxHotkeysPerInterval 500
+
+; Å°º¸µå °¥°í¸®¸¦ »ç¿ëÇÏ¿© ³ÑÆеå ÇÖÅ°¸¦ ±¸ÇöÇϸé
+; à¿Í °°Àº ANSI ¹®ÀÚÀÇ »ý¼ºÀ» °£¼·ÇÏÁö ¾Ê½À´Ï´Ù. 
+; ÀÌ ¶§¹®¿¡ ¿ÀÅä ÇÖÅ°´Â ALT¸¦ ´©¸£°í ÀÏ·ÃÀÇ  
+; ³ÑÆеå Å°´­¸²À» Àü¼ÛÇÔÀ¸·Î½á ±×·± ¹®ÀÚµéÀ» »ý¼ºÇÕ´Ï´Ù.
+; °¥°í¸® ÇÖÅ°´Â ¶È¶ÈÇؼ­ ±×·± Å°´­¸²Àº ¹«½ÃÇÕ´Ï´Ù.
+#UseHook
+
+MouseSpeed = 1
+MouseAccelerationSpeed = 1
+MouseMaxSpeed = 5
+
+; ¸¶¿ì½º ÈÙÀÇ ¼Óµµ´Â Á¦¾îÆÇ¿¡¼­ ¼³Á¤ÇÕ´Ï´Ù.
+; º¸ÅëÀÇ ¸¶¿ì½º ÇàÀ§¿¡ ¿µÇâÀ» ¹ÌÄ¡±â ¶§¹®¿¡, ¾Æ·¡ÀÇ ¼¼ °¡Áö ¼³Á¤ÀÇ
+; ½ÇÁ¦ ¼Óµµ´Â Á¤»ó ¸¶¿ì½º ÈÙ ¼ÓµµÀÇ µÎ ¹è°¡ µË´Ï´Ù.
+MouseWheelSpeed = 1
+MouseWheelAccelerationSpeed = 1
+MouseWheelMaxSpeed = 5
+
+MouseRotationAngle = 0
+
+;ȯ°æ ±¸¼º ³¡
+
+; ´ÙÀ½Àº ²À ÇÊ¿äÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é Å°´­¸²Àº
+; Á¤»óÀûÀÎ Á¶Ä¡¸¦ Àü¼ÛÇÏÁö ¸øÇϱ⠶§¹®ÀÔ´Ï´Ù.
+; NumPadDiv¿Í °°Àº °æ¿ì °¡²û "/"À» È­¸é¿¡ Àü¼ÛÇÕ´Ï´Ù
+#InstallKeybdHook
+
+Temp = 0
+Temp2 = 0
+
+MouseRotationAnglePart = %MouseRotationAngle%
+; 45º·Î ³ª´¯´Ï´Ù; ¿Ö³ÄÇϸé MouseMove´Â Á¤¼ö¸¸ Áö¿øÇϱ⠶§¹®ÀÔ´Ï´Ù,
+; ±×¸®°í ¸¶¿ì½º ȸÀüÀ» 45ºº¸´Ù ÀÛÀº ¼ýÀÚ·Î º¯°æÇϸé;
+; ÀÌ»óÇÑ ÇàÀ§¸¦ ¾ß±âÇÒ ¼ö ÀÖ½À´Ï´Ù.
+;
+; ¿¹¸¦ µé¾î: 22.5º·Î ÁöÁ¤Çϸé NumPadUp¸¦ ´©¸¦¶§:
+;  ¸ÕÀú º¯À» ÇâÇÏ¿© ¼Óµµ°¡ 1¿¡ µµ´ÞÇÒ ¶§±îÁö
+;  À§·Î À̵¿ÇÕ´Ï´Ù.
+MouseRotationAnglePart /= 45
+
+MouseCurrentAccelerationSpeed = 0
+MouseCurrentSpeed = %MouseSpeed%
+
+MouseWheelCurrentAccelerationSpeed = 0
+MouseWheelCurrentSpeed = %MouseSpeed%
+
+SetKeyDelay, -1
+SetMouseDelay, -1
+
+Hotkey, *NumPad0, ButtonLeftClick
+Hotkey, *NumpadIns, ButtonLeftClickIns
+Hotkey, *NumPad5, ButtonMiddleClick
+Hotkey, *NumpadClear, ButtonMiddleClickClear
+Hotkey, *NumPadDot, ButtonRightClick
+Hotkey, *NumPadDel, ButtonRightClickDel
+Hotkey, *NumPadDiv, ButtonX1Click
+Hotkey, *NumPadMult, ButtonX2Click
+
+Hotkey, *NumpadSub, ButtonWheelUp
+Hotkey, *NumpadAdd, ButtonWheelDown
+
+Hotkey, *NumPadUp, ButtonUp
+Hotkey, *NumPadDown, ButtonDown
+Hotkey, *NumPadLeft, ButtonLeft
+Hotkey, *NumPadRight, ButtonRight
+Hotkey, *NumPadHome, ButtonUpLeft
+Hotkey, *NumPadEnd, ButtonUpRight
+Hotkey, *NumPadPgUp, ButtonDownLeft
+Hotkey, *NumPadPgDn, ButtonDownRight
+
+Hotkey, Numpad8, ButtonSpeedUp
+Hotkey, Numpad2, ButtonSpeedDown
+Hotkey, Numpad7, ButtonAccelerationSpeedUp
+Hotkey, Numpad1, ButtonAccelerationSpeedDown
+Hotkey, Numpad9, ButtonMaxSpeedUp
+Hotkey, Numpad3, ButtonMaxSpeedDown
+
+Hotkey, Numpad6, ButtonRotationAngleUp
+Hotkey, Numpad4, ButtonRotationAngleDown
+
+Hotkey, !Numpad8, ButtonWheelSpeedUp
+Hotkey, !Numpad2, ButtonWheelSpeedDown
+Hotkey, !Numpad7, ButtonWheelAccelerationSpeedUp
+Hotkey, !Numpad1, ButtonWheelAccelerationSpeedDown
+Hotkey, !Numpad9, ButtonWheelMaxSpeedUp
+Hotkey, !Numpad3, ButtonWheelMaxSpeedDown
+
+Gosub, ~ScrollLock  ; ÇöÀç ½ºÅ©·Ñ¶ôÀÇ »óÅ¿¡ ±â¹ÝÇÏ¿© ÃʱâÈ­ÇÕ´Ï´Ù.
+return
+
+; Å° È°¼ºÈ­ Áö¿ø
+
+~ScrollLock::
+; Å°¸¦ ¶¼±â¸¦ ±â´Ù¸³´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é °¥°í¸® »óÅ°¡
+; Å°¸¦ ´©¸£°í ÀÖ´Â µ¿¾È ¸®¼ÂµÇ¾î ¹ö·Á¼­, ¾÷-À̺¥Æ®°¡ ¾ï´­·¯Áý´Ï´Ù,
+; À̾ ½ºÅ©·Ñ¶ô »óÅÂ/ºÒºûÀÇ ÅäŬÀ» ¸·¾Æ ¹ö¸³´Ï´Ù:
+KeyWait, ScrollLock
+GetKeyState, ScrollLockState, ScrollLock, T
+If ScrollLockState = D
+{
+    Hotkey, *NumPad0, on
+    Hotkey, *NumpadIns, on
+    Hotkey, *NumPad5, on
+    Hotkey, *NumPadDot, on
+    Hotkey, *NumPadDel, on
+    Hotkey, *NumPadDiv, on
+    Hotkey, *NumPadMult, on
+
+    Hotkey, *NumpadSub, on
+    Hotkey, *NumpadAdd, on
+
+    Hotkey, *NumPadUp, on
+    Hotkey, *NumPadDown, on
+    Hotkey, *NumPadLeft, on
+    Hotkey, *NumPadRight, on
+    Hotkey, *NumPadHome, on
+    Hotkey, *NumPadEnd, on
+    Hotkey, *NumPadPgUp, on
+    Hotkey, *NumPadPgDn, on
+
+    Hotkey, Numpad8, on
+    Hotkey, Numpad2, on
+    Hotkey, Numpad7, on
+    Hotkey, Numpad1, on
+    Hotkey, Numpad9, on
+    Hotkey, Numpad3, on
+
+    Hotkey, Numpad6, on
+    Hotkey, Numpad4, on
+
+    Hotkey, !Numpad8, on
+    Hotkey, !Numpad2, on
+    Hotkey, !Numpad7, on
+    Hotkey, !Numpad1, on
+    Hotkey, !Numpad9, on
+    Hotkey, !Numpad3, on
+}
+else
+{
+    Hotkey, *NumPad0, off
+    Hotkey, *NumpadIns, off
+    Hotkey, *NumPad5, off
+    Hotkey, *NumPadDot, off
+    Hotkey, *NumPadDel, off
+    Hotkey, *NumPadDiv, off
+    Hotkey, *NumPadMult, off
+
+    Hotkey, *NumpadSub, off
+    Hotkey, *NumpadAdd, off
+
+    Hotkey, *NumPadUp, off
+    Hotkey, *NumPadDown, off
+    Hotkey, *NumPadLeft, off
+    Hotkey, *NumPadRight, off
+    Hotkey, *NumPadHome, off
+    Hotkey, *NumPadEnd, off
+    Hotkey, *NumPadPgUp, off
+    Hotkey, *NumPadPgDn, off
+
+    Hotkey, Numpad8, off
+    Hotkey, Numpad2, off
+    Hotkey, Numpad7, off
+    Hotkey, Numpad1, off
+    Hotkey, Numpad9, off
+    Hotkey, Numpad3, off
+
+    Hotkey, Numpad6, off
+    Hotkey, Numpad4, off
+
+    Hotkey, !Numpad8, off
+    Hotkey, !Numpad2, off
+    Hotkey, !Numpad7, off
+    Hotkey, !Numpad1, off
+    Hotkey, !Numpad9, off
+    Hotkey, !Numpad3, off
+}
+return
+
+; ¸¶¿ì½º Ŭ¸¯ Áö¿ø
+
+ButtonLeftClick:
+GetKeyState, already_down_state, LButton
+If already_down_state = D
+    return
+Button2 = NumPad0
+ButtonClick = Left
+Goto ButtonClickStart
+ButtonLeftClickIns:
+GetKeyState, already_down_state, LButton
+If already_down_state = D
+    return
+Button2 = NumPadIns
+ButtonClick = Left
+Goto ButtonClickStart
+
+ButtonMiddleClick:
+GetKeyState, already_down_state, MButton
+If already_down_state = D
+    return
+Button2 = NumPad5
+ButtonClick = Middle
+Goto ButtonClickStart
+ButtonMiddleClickClear:
+GetKeyState, already_down_state, MButton
+If already_down_state = D
+    return
+Button2 = NumPadClear
+ButtonClick = Middle
+Goto ButtonClickStart
+
+ButtonRightClick:
+GetKeyState, already_down_state, RButton
+If already_down_state = D
+    return
+Button2 = NumPadDot
+ButtonClick = Right
+Goto ButtonClickStart
+ButtonRightClickDel:
+GetKeyState, already_down_state, RButton
+If already_down_state = D
+    return
+Button2 = NumPadDel
+ButtonClick = Right
+Goto ButtonClickStart
+
+ButtonX1Click:
+GetKeyState, already_down_state, XButton1
+If already_down_state = D
+    return
+Button2 = NumPadDiv
+ButtonClick = X1
+Goto ButtonClickStart
+
+ButtonX2Click:
+GetKeyState, already_down_state, XButton2
+If already_down_state = D
+    return
+Button2 = NumPadMult
+ButtonClick = X2
+Goto ButtonClickStart
+
+ButtonClickStart:
+MouseClick, %ButtonClick%,,, 1, 0, D
+SetTimer, ButtonClickEnd, 10
+return
+
+ButtonClickEnd:
+GetKeyState, kclickstate, %Button2%, P
+if kclickstate = D
+    return
+
+SetTimer, ButtonClickEnd, off
+MouseClick, %ButtonClick%,,, 1, 0, U
+return
+
+; ¸¶¿ì½º À̵¿ Áö¿ø
+
+ButtonSpeedUp:
+MouseSpeed++
+ToolTip, Mouse speed: %MouseSpeed% pixels
+SetTimer, RemoveToolTip, 1000
+return
+ButtonSpeedDown:
+If MouseSpeed > 1
+    MouseSpeed--
+If MouseSpeed = 1
+    ToolTip, Mouse speed: %MouseSpeed% pixel
+else
+    ToolTip, Mouse speed: %MouseSpeed% pixels
+SetTimer, RemoveToolTip, 1000
+return
+ButtonAccelerationSpeedUp:
+MouseAccelerationSpeed++
+ToolTip, Mouse acceleration speed: %MouseAccelerationSpeed% pixels
+SetTimer, RemoveToolTip, 1000
+return
+ButtonAccelerationSpeedDown:
+If MouseAccelerationSpeed > 1
+    MouseAccelerationSpeed--
+If MouseAccelerationSpeed = 1
+    ToolTip, Mouse acceleration speed: %MouseAccelerationSpeed% pixel
+else
+    ToolTip, Mouse acceleration speed: %MouseAccelerationSpeed% pixels
+SetTimer, RemoveToolTip, 1000
+return
+
+ButtonMaxSpeedUp:
+MouseMaxSpeed++
+ToolTip, Mouse maximum speed: %MouseMaxSpeed% pixels
+SetTimer, RemoveToolTip, 1000
+return
+ButtonMaxSpeedDown:
+If MouseMaxSpeed > 1
+    MouseMaxSpeed--
+If MouseMaxSpeed = 1
+    ToolTip, Mouse maximum speed: %MouseMaxSpeed% pixel
+else
+    ToolTip, Mouse maximum speed: %MouseMaxSpeed% pixels
+SetTimer, RemoveToolTip, 1000
+return
+
+ButtonRotationAngleUp:
+MouseRotationAnglePart++
+If MouseRotationAnglePart >= 8
+    MouseRotationAnglePart = 0
+MouseRotationAngle = %MouseRotationAnglePart%
+MouseRotationAngle *= 45
+ToolTip, Mouse rotation angle: %MouseRotationAngle%°
+SetTimer, RemoveToolTip, 1000
+return
+ButtonRotationAngleDown:
+MouseRotationAnglePart--
+If MouseRotationAnglePart < 0
+    MouseRotationAnglePart = 7
+MouseRotationAngle = %MouseRotationAnglePart%
+MouseRotationAngle *= 45
+ToolTip, Mouse rotation angle: %MouseRotationAngle%°
+SetTimer, RemoveToolTip, 1000
+return
+
+ButtonUp:
+ButtonDown:
+ButtonLeft:
+ButtonRight:
+ButtonUpLeft:
+ButtonUpRight:
+ButtonDownLeft:
+ButtonDownRight:
+If Button <> 0
+{
+    IfNotInString, A_ThisHotkey, %Button%
+    {
+        MouseCurrentAccelerationSpeed = 0
+        MouseCurrentSpeed = %MouseSpeed%
+    }
+}
+StringReplace, Button, A_ThisHotkey, *
+
+ButtonAccelerationStart:
+If MouseAccelerationSpeed >= 1
+{
+    If MouseMaxSpeed > %MouseCurrentSpeed%
+    {
+        Temp = 0.001
+        Temp *= %MouseAccelerationSpeed%
+        MouseCurrentAccelerationSpeed += %Temp%
+        MouseCurrentSpeed += %MouseCurrentAccelerationSpeed%
+    }
+}
+
+;MouseRotationAngleÀ» ¹öÆ° ¹æÇâÀÇ ¼Óµµ·Î º¯È¯
+{
+    MouseCurrentSpeedToDirection = %MouseRotationAngle%
+    MouseCurrentSpeedToDirection /= 90.0
+    Temp = %MouseCurrentSpeedToDirection%
+
+    if Temp >= 0
+    {
+        if Temp < 1
+        {
+            MouseCurrentSpeedToDirection = 1
+            MouseCurrentSpeedToDirection -= %Temp%
+            Goto EndMouseCurrentSpeedToDirectionCalculation
+        }
+    }
+    if Temp >= 1
+    {
+        if Temp < 2
+        {
+            MouseCurrentSpeedToDirection = 0
+            Temp -= 1
+            MouseCurrentSpeedToDirection -= %Temp%
+            Goto EndMouseCurrentSpeedToDirectionCalculation
+        }
+    }
+    if Temp >= 2
+    {
+        if Temp < 3
+        {
+            MouseCurrentSpeedToDirection = -1
+            Temp -= 2
+            MouseCurrentSpeedToDirection += %Temp%
+            Goto EndMouseCurrentSpeedToDirectionCalculation
+        }
+    }
+    if Temp >= 3
+    {
+        if Temp < 4
+        {
+            MouseCurrentSpeedToDirection = 0
+            Temp -= 3
+            MouseCurrentSpeedToDirection += %Temp%
+            Goto EndMouseCurrentSpeedToDirectionCalculation
+        }
+    }
+}
+EndMouseCurrentSpeedToDirectionCalculation:
+
+;MouseRotationAngle¸¦ 90µµÀÇ ¼Óµµ·Î ¿À¸¥ÂÊÀ¸·Î º¯È¯
+{
+    MouseCurrentSpeedToSide = %MouseRotationAngle%
+    MouseCurrentSpeedToSide /= 90.0
+    Temp = %MouseCurrentSpeedToSide%
+    Transform, Temp, mod, %Temp%, 4
+
+    if Temp >= 0
+    {
+        if Temp < 1
+        {
+            MouseCurrentSpeedToSide = 0
+            MouseCurrentSpeedToSide += %Temp%
+            Goto EndMouseCurrentSpeedToSideCalculation
+        }
+    }
+    if Temp >= 1
+    {
+        if Temp < 2
+        {
+            MouseCurrentSpeedToSide = 1
+            Temp -= 1
+            MouseCurrentSpeedToSide -= %Temp%
+            Goto EndMouseCurrentSpeedToSideCalculation
+        }
+    }
+    if Temp >= 2
+    {
+        if Temp < 3
+        {
+            MouseCurrentSpeedToSide = 0
+            Temp -= 2
+            MouseCurrentSpeedToSide -= %Temp%
+            Goto EndMouseCurrentSpeedToSideCalculation
+        }
+    }
+    if Temp >= 3
+    {
+        if Temp < 4
+        {
+            MouseCurrentSpeedToSide = -1
+            Temp -= 3
+            MouseCurrentSpeedToSide += %Temp%
+            Goto EndMouseCurrentSpeedToSideCalculation
+        }
+    }
+}
+EndMouseCurrentSpeedToSideCalculation:
+
+MouseCurrentSpeedToDirection *= %MouseCurrentSpeed%
+MouseCurrentSpeedToSide *= %MouseCurrentSpeed%
+
+Temp = %MouseRotationAnglePart%
+Transform, Temp, Mod, %Temp%, 2
+
+If Button = NumPadUp
+{
+    if Temp = 1
+    {
+        MouseCurrentSpeedToSide *= 2
+        MouseCurrentSpeedToDirection *= 2
+    }
+
+    MouseCurrentSpeedToDirection *= -1
+    MouseMove, %MouseCurrentSpeedToSide%, %MouseCurrentSpeedToDirection%, 0, R
+}
+else if Button = NumPadDown
+{
+    if Temp = 1
+    {
+        MouseCurrentSpeedToSide *= 2
+        MouseCurrentSpeedToDirection *= 2
+    }
+
+    MouseCurrentSpeedToSide *= -1
+    MouseMove, %MouseCurrentSpeedToSide%, %MouseCurrentSpeedToDirection%, 0, R
+}
+else if Button = NumPadLeft
+{
+    if Temp = 1
+    {
+        MouseCurrentSpeedToSide *= 2
+        MouseCurrentSpeedToDirection *= 2
+    }
+
+    MouseCurrentSpeedToSide *= -1
+    MouseCurrentSpeedToDirection *= -1
+
+    MouseMove, %MouseCurrentSpeedToDirection%, %MouseCurrentSpeedToSide%, 0, R
+}
+else if Button = NumPadRight
+{
+    if Temp = 1
+    {
+        MouseCurrentSpeedToSide *= 2
+        MouseCurrentSpeedToDirection *= 2
+    }
+
+    MouseMove, %MouseCurrentSpeedToDirection%, %MouseCurrentSpeedToSide%, 0, R
+}
+else if Button = NumPadHome
+{
+    Temp = %MouseCurrentSpeedToDirection%
+    Temp -= %MouseCurrentSpeedToSide%
+    Temp *= -1
+    Temp2 = %MouseCurrentSpeedToDirection%
+    Temp2 += %MouseCurrentSpeedToSide%
+    Temp2 *= -1
+    MouseMove, %Temp%, %Temp2%, 0, R
+}
+else if Button = NumPadPgUp
+{
+    Temp = %MouseCurrentSpeedToDirection%
+    Temp += %MouseCurrentSpeedToSide%
+    Temp2 = %MouseCurrentSpeedToDirection%
+    Temp2 -= %MouseCurrentSpeedToSide%
+    Temp2 *= -1
+    MouseMove, %Temp%, %Temp2%, 0, R
+}
+else if Button = NumPadEnd
+{
+    Temp = %MouseCurrentSpeedToDirection%
+    Temp += %MouseCurrentSpeedToSide%
+    Temp *= -1
+    Temp2 = %MouseCurrentSpeedToDirection%
+    Temp2 -= %MouseCurrentSpeedToSide%
+    MouseMove, %Temp%, %Temp2%, 0, R
+}
+else if Button = NumPadPgDn
+{
+    Temp = %MouseCurrentSpeedToDirection%
+    Temp -= %MouseCurrentSpeedToSide%
+    Temp2 *= -1
+    Temp2 = %MouseCurrentSpeedToDirection%
+    Temp2 += %MouseCurrentSpeedToSide%
+    MouseMove, %Temp%, %Temp2%, 0, R
+}
+
+SetTimer, ButtonAccelerationEnd, 10
+return
+
+ButtonAccelerationEnd:
+GetKeyState, kstate, %Button%, P
+if kstate = D
+    Goto ButtonAccelerationStart
+
+SetTimer, ButtonAccelerationEnd, off
+MouseCurrentAccelerationSpeed = 0
+MouseCurrentSpeed = %MouseSpeed%
+Button = 0
+return
+
+; ¸¶¿ì½º ÈÙ À̵¿ Áö¿ø
+
+ButtonWheelSpeedUp:
+MouseWheelSpeed++
+RegRead, MouseWheelSpeedMultiplier, HKCU, Control Panel\Desktop, WheelScrollLines
+If MouseWheelSpeedMultiplier <= 0
+    MouseWheelSpeedMultiplier = 1
+MouseWheelSpeedReal = %MouseWheelSpeed%
+MouseWheelSpeedReal *= %MouseWheelSpeedMultiplier%
+ToolTip, Mouse wheel speed: %MouseWheelSpeedReal% lines
+SetTimer, RemoveToolTip, 1000
+return
+ButtonWheelSpeedDown:
+RegRead, MouseWheelSpeedMultiplier, HKCU, Control Panel\Desktop, WheelScrollLines
+If MouseWheelSpeedMultiplier <= 0
+    MouseWheelSpeedMultiplier = 1
+If MouseWheelSpeedReal > %MouseWheelSpeedMultiplier%
+{
+    MouseWheelSpeed--
+    MouseWheelSpeedReal = %MouseWheelSpeed%
+    MouseWheelSpeedReal *= %MouseWheelSpeedMultiplier%
+}
+If MouseWheelSpeedReal = 1
+    ToolTip, Mouse wheel speed: %MouseWheelSpeedReal% line
+else
+    ToolTip, Mouse wheel speed: %MouseWheelSpeedReal% lines
+SetTimer, RemoveToolTip, 1000
+return
+
+ButtonWheelAccelerationSpeedUp:
+MouseWheelAccelerationSpeed++
+RegRead, MouseWheelSpeedMultiplier, HKCU, Control Panel\Desktop, WheelScrollLines
+If MouseWheelSpeedMultiplier <= 0
+    MouseWheelSpeedMultiplier = 1
+MouseWheelAccelerationSpeedReal = %MouseWheelAccelerationSpeed%
+MouseWheelAccelerationSpeedReal *= %MouseWheelSpeedMultiplier%
+ToolTip, Mouse wheel acceleration speed: %MouseWheelAccelerationSpeedReal% lines
+SetTimer, RemoveToolTip, 1000
+return
+ButtonWheelAccelerationSpeedDown:
+RegRead, MouseWheelSpeedMultiplier, HKCU, Control Panel\Desktop, WheelScrollLines
+If MouseWheelSpeedMultiplier <= 0
+    MouseWheelSpeedMultiplier = 1
+If MouseWheelAccelerationSpeed > 1
+{
+    MouseWheelAccelerationSpeed--
+    MouseWheelAccelerationSpeedReal = %MouseWheelAccelerationSpeed%
+    MouseWheelAccelerationSpeedReal *= %MouseWheelSpeedMultiplier%
+}
+If MouseWheelAccelerationSpeedReal = 1
+    ToolTip, Mouse wheel acceleration speed: %MouseWheelAccelerationSpeedReal% line
+else
+    ToolTip, Mouse wheel acceleration speed: %MouseWheelAccelerationSpeedReal% lines
+SetTimer, RemoveToolTip, 1000
+return
+
+ButtonWheelMaxSpeedUp:
+MouseWheelMaxSpeed++
+RegRead, MouseWheelSpeedMultiplier, HKCU, Control Panel\Desktop, WheelScrollLines
+If MouseWheelSpeedMultiplier <= 0
+    MouseWheelSpeedMultiplier = 1
+MouseWheelMaxSpeedReal = %MouseWheelMaxSpeed%
+MouseWheelMaxSpeedReal *= %MouseWheelSpeedMultiplier%
+ToolTip, Mouse wheel maximum speed: %MouseWheelMaxSpeedReal% lines
+SetTimer, RemoveToolTip, 1000
+return
+ButtonWheelMaxSpeedDown:
+RegRead, MouseWheelSpeedMultiplier, HKCU, Control Panel\Desktop, WheelScrollLines
+If MouseWheelSpeedMultiplier <= 0
+    MouseWheelSpeedMultiplier = 1
+If MouseWheelMaxSpeed > 1
+{
+    MouseWheelMaxSpeed--
+    MouseWheelMaxSpeedReal = %MouseWheelMaxSpeed%
+    MouseWheelMaxSpeedReal *= %MouseWheelSpeedMultiplier%
+}
+If MouseWheelMaxSpeedReal = 1
+    ToolTip, Mouse wheel maximum speed: %MouseWheelMaxSpeedReal% line
+else
+    ToolTip, Mouse wheel maximum speed: %MouseWheelMaxSpeedReal% lines
+SetTimer, RemoveToolTip, 1000
+return
+
+ButtonWheelUp:
+ButtonWheelDown:
+
+If Button <> 0
+{
+    If Button <> %A_ThisHotkey%
+    {
+        MouseWheelCurrentAccelerationSpeed = 0
+        MouseWheelCurrentSpeed = %MouseWheelSpeed%
+    }
+}
+StringReplace, Button, A_ThisHotkey, *
+
+ButtonWheelAccelerationStart:
+If MouseWheelAccelerationSpeed >= 1
+{
+    If MouseWheelMaxSpeed > %MouseWheelCurrentSpeed%
+    {
+        Temp = 0.001
+        Temp *= %MouseWheelAccelerationSpeed%
+        MouseWheelCurrentAccelerationSpeed += %Temp%
+        MouseWheelCurrentSpeed += %MouseWheelCurrentAccelerationSpeed%
+    }
+}
+
+If Button = NumPadSub
+    MouseClick, wheelup,,, %MouseWheelCurrentSpeed%, 0, D
+else if Button = NumPadAdd
+    MouseClick, wheeldown,,, %MouseWheelCurrentSpeed%, 0, D
+
+SetTimer, ButtonWheelAccelerationEnd, 100
+return
+
+ButtonWheelAccelerationEnd:
+GetKeyState, kstate, %Button%, P
+if kstate = D
+    Goto ButtonWheelAccelerationStart
+
+MouseWheelCurrentAccelerationSpeed = 0
+MouseWheelCurrentSpeed = %MouseWheelSpeed%
+Button = 0
+return
+
+RemoveToolTip:
+SetTimer, RemoveToolTip, Off
+ToolTip
+return
+
+ + diff --git a/src/docs/scripts/Seek_(SearchTheStartMenu).ahk b/src/docs/scripts/Seek_(SearchTheStartMenu).ahk new file mode 100644 index 0000000..3be6e4b --- /dev/null +++ b/src/docs/scripts/Seek_(SearchTheStartMenu).ahk @@ -0,0 +1,824 @@ +; Seek -- by Phi +; http://www.autohotkey.com +; Navigating the Start Menu can be a hassle, especially +; if you have installed many programs over time. 'Seek' +; lets you specify a case-insensitive key word/phrase +; that it will use to filter only the matching programs +; and directories from the Start Menu, so that you can +; easily open your target program from a handful of +; matched entries. This eliminates the drudgery of +; searching and traversing the Start Menu. + +;***************************************************************** +; +; Program : Seek +; Coder : Phi +; Updated : Mon Jan 31 10:08:37 2005 +; +; What do you seek, my friend? +; +;***************************************************************** +; +; I have a lot of fun coding this, and hope you will +; enjoy using it too. Feel free to drop me an email with +; your comments and feedback at: phi1618 (*a.t*) gmail +; :D0T: com. +; +; Options: +; -cache Use the cached directory-listing if available +; (this is the default mode when no option is specified) +; -scan Force a directory scan to retrieve the latest +; directory listing +; -scex Scan & exit (this is useful for scheduling the +; potentially time-consuming directory-scanning as +; a background job) +; -help Show this help +; +;***************************************************************** +; +; HOW TO 'SEEK': +; +; 1. 'Seek' is an AutoHotkey script. You can either run it +; as Seek.ahk (original script) or Seek.exe (compiled +; executable). +; +; To obtain Seek.exe, you can download Seek.zip (includes +; both the source code and the compiled binary) from +; http://home.ripway.com/2004-10/188589/ +; Otherwise, you can compile Seek.ahk on your own by +; using AutoHotkey's Ahk2Exe.exe compiler, or you can +; ask me for a copy via email. The filesize is small at +; about 200 kbytes. I can be reached at: phi1618 (*a.t*) +; gmail :D0T: com. +; +; To use Seek.ahk, first, you'll need to install +; AutoHotkey v1.0.25 or higher on your PC (download from +; http://www.autohotkey.com). Next, run the command: +; +; X:\myTools\AutoHotkey\AutoHotkey.exe Y:\myAHK\Seek.ahk +; +; Remember to replace X:\myTools and Y:\myAHK with +; the proper directory names on your PC. +; +; 2. You can place the executable Seek.exe anywhere you +; want. There is no installation required, it doesn't +; write anything to your registry, and it doesn't +; access the Internet at all (no phoning home). To +; uninstall, simply delete Seek.exe. +; +; The only 2 files 'Seek' creates are placed in your +; TMP directory: +; +; a. _Seek.key (cache file for last query string) +; b. _Seek.list (cache file for directory listing) +; +; If you're a purist, you can delete them manually +; when you decide to remove 'Seek' from your system. +; +; 3. The most convenient way to run 'Seek' is via a +; shortcut/hotkey. If you are not already using any +; hotkey management program on your PC, I highly +; recommend AutoHotkey. If you don't intend to install +; any hotkey management program at the moment, you can +; make use of Windows shortcut feature and bind a +; shortcut key (e.g. ALT-F1) to launch 'Seek'. This is +; important so that you can run 'Seek' at anytime and +; anywhere. +; +; 4. When you run 'Seek' for the first time, it'll scan +; your Start Menu, and save the directory listing into +; a cache file. +; +; The following directories are included in the scanning: +; - %A_StartMenu% +; - %A_StartMenuCommon% +; +; By default, subsequent runs will read from the +; cache file so as to reduce the loading time. For +; more info on options, run 'Seek.exe -help'. If you +; think your Start Menu doesn't contain too many +; programs, you can choose not to use the cache and +; instruct 'Seek' to always do a directory scan (via +; option -scan). That way, you will always get the +; latest listing. +; +; 5. When you run 'Seek', a window will appear, waiting +; for you to enter a key word/phrase. After you have +; entered a query string, a list of matching records +; will be displayed. Next, you need to highlight an +; entry and press or click on the 'Open' +; button to run the selected program or open the +; selected directory. +; +;***************************************************************** +; +; TECHNICAL NOTES: +; +; - 'Seek' requires Chris Mallett's AutoHotkey v1.0.25 +; or higher version (http://www.autohotkey.com). +; Thanks to Chris for his great work on AutoHotkey. :) +; +; - The following environment variables must be valid: +; a. TMP +; +;***************************************************************** +; +; KNOWN PROBLEMS: +; +; - Nil +; +;***************************************************************** +; +; IMPLEMENTED SUGGESTIONS: +; +; - Highlight 1st matching record by default so that +; user can just hit to run it. +; (Suggested by Yih Yeong) +; +; - Enable double-click on the listing of the search +; results to launch the program. +; (Suggested by Yih Yeong & Jack) +; +; - Auto real-time incremental search. +; (Suggested by Rajat) +; +; - Fuzzy search when user enters multiple query strings, +; separated by space. +; (Suggested by Rajat) +; +;***************************************************************** +; +; SUGGESTED FEATURES (MAY OR MAY NOT BE IMPLEMENTED): +; +; - Log the launch history. List the most frequently +; used programs at the top of the search results. +; (Suggested by Yih Yeong) +; +; - Instead of using list box, can it display a series +; of application icons so that hovering the cursor +; over the icon will display a tooltip containing the +; program information (path, etc). +; (Suggested by Yih Yeong) +; +; - Instead of matching text in the middle, match only +; those program/directory names that begin with the +; query string. +; (Suggested by Stefan) +; +; - Add favorites management. Launch group of programs +; in a single run. +; (Suggested by Atomhrt) +; +; - Integrate Seek into the Windows taskbar/toolbar so that +; it is always available and there is no need to bind a +; hotkey to launch Seek. +; (Suggested by Deniz Akay) +; +; - Search by wildcards/regex. +; (Suggested by Steve) +; +;***************************************************************** +; +; CHANGE HISTORY: +; +; * v1.1.0 +; - Initial release. +; +; * v1.1.1 +; - Removed maximise-window option since some programs don't +; function well with it. +; - Added double-click detection to trigger 'Open' function. +; +; * v2.0.0 +; - Integrated the 'Seek' popup window into the output screen +; so that user can re-enter the query string to search for +; something else without having to exit and run Seek again. +; - Added 'Scan Start-Menu' button. +; - Added real-time incremental search which will auto +; filter for matching records while you type away, +; without waiting for you to press . +; - Added internal switch (TrackKeyPhrase) to track search-string. +; - Added internal switch (ToolTipFilename) to show filename +; using tooltip. +; +; * v2.0.1 +; - Added horizontal scrollbar to ListBox so that very +; long records will not be cut-off in the middle. +; +; * v2.0.2 +; - Allowed user to add their own customised list of directories +; to be included in the scanning. User just needs to create a +; text file 'Seek.dir' in the same directory as Seek.exe or +; Seek.ahk, and specify the full path of the directory to be +; added, one directory per line. Do not enclose the path in +; quotes or double-quotes. +; +; * v2.0.3 +; - Added /on option to DIR-command to sort by name. +; - Fuzzy search when user enters multiple query strings, +; separated by space, for e.g. "med pla". It's a match +; when all the strings ("med" & "pla") are found. This +; will match "Media Player", "Macromedia Flash Player", +; "Play Medieval King", "medpla", "plamed". +; - Corrected tab-movement sequence by adding all buttons +; right from the start, but disable them until they can +; be used. +; - Added status bar to replace tooltip-feedback. +; - Removed obsolete internal switch (ToolTipFilename). +; - Replaced the use of "dir" command with AutoHotkey's +; own "Loop" command for scanning directory contents. +; "dir" cannot handle extended character set and thus +; non-English (e.g German) directory and filename are +; captured wrongly. (Thanks Wolfgang Bujatti and +; Sietse Fliege for testing this modification) +; - Added internal switch (ScanMode) to define whether +; files and/or directories are to be included in scan. +; - Replaced hardcoded directory paths of Start Menu with +; built-in variables A_StartMenu, A_StartMenuCommon. +; With this, Seek now works for different locales with +; different naming convention of the Start Menu. +; (Thanks Wolfgang Bujatti and Sietse Fliege for help +; in testing another method before these new variables +; are available.) +; - Added the pre-selection of the last-run program +; record so that a quick double- will run it. +; +;***************************************************************** + +;************************** +;<--- BEGIN OF PROGRAM ---> +;************************** + +;==== Your Customisation =================================== + +; Specify which program to use when opening a directory. +; If the program cannot be found or is not specified +; (i.e. variable is unassigned or assigned a null value), +; the default Explorer will be used. +dirExplorer = E:\utl\xplorer2_lite\xplorer2.exe + +; User's customised list of additional directories to be +; included in the scanning. The full path must not be +; enclosed by quotes or double-quotes. If this file is +; missing, only the default directories will be scanned. +SeekMyDir = %A_ScriptDir%\Seek.dir + +; Specify the filename and directory location to save +; the cached directory/program listing. There is no +; need to change this unless you want to. +dirListing = %A_Temp%\_Seek.list + +; Specify the filename and directory location to save +; the cached key word/phrase of last search. There is +; no need to change this unless you want to. +keyPhrase = %A_Temp%\_Seek.key + +; Track search string (ON/OFF) +; If ON, the last-used query string will be re-used as +; the default query string the next time you run Seek. +; If OFF, the last-used query string will not be tracked +; and there will not be a default query string value the +; next time you run Seek. +TrackKeyPhrase = ON + +; Specify what should be included in scan. +; 0: Directories are excluded (only files). +; 1: All files and directories are included. +; 2: Only directories are included (no files). +ScanMode = 1 + +;........................................................... + +; INIT +;#NoTrayIcon +StringCaseSense, Off +version = Seek v2.0.3 + +; DISPLAY HELP INSTRUCTIONS +If 1 in --help,-help,/h,-h,/?,-? +{ + MsgBox,, %version%, Navigating the Start Menu can be a hassle, especially if you have installed many programs over time. 'Seek' lets you specify a case-insensitive key word/phrase that it will use to filter only the matching programs and directories from the Start Menu, so that you can easily open your target program from a handful of matched entries. This eliminates the drudgery of searching and traversing the Start Menu.`n`nI have a lot of fun coding this, and hope you will enjoy using it too. Feel free to drop me an email with your comments and feedback at: phi1618 (*a.t*) gmail :D0T: com.`n`nOptions:`n -cache`tUse the cached directory-listing if available (this is the default mode when no option is specified)`n -scan`tForce a directory scan to retrieve the latest directory listing`n -scex`tScan & exit (this is useful for scheduling the potentially time-consuming directory-scanning as a background job)`n -help`tShow this help + Goto QuitNoSave +} + +; CHECK THAT THE MANDATORY ENVIRONMENT VARIABLES EXIST AND ARE VALID +; *TMP* +IfNotExist, %A_Temp% ; PATH DOES NOT EXIST +{ + MsgBox This mandatory environment variable is either not defined or invalid:`n`n TMP = %A_Temp%`n`nPlease fix it before running Seek. + Goto QuitNoSave +} + +; IF NOT SCAN-AND-EXIT +IfNotEqual 1, -scex +{ + ; RETRIEVE THE LAST USED KEY-PHRASE FROM CACHE FILE + ; TO BE USED AS THE DEFAULT QUERY STRING + If TrackKeyPhrase = ON + { + FileReadLine, PrevKeyPhrase, %keyPhrase%, 1 + FileReadLine, PrevOpenTarget, %keyPhrase%, 2 + } + NewKeyPhrase = %PrevKeyPhrase% + NewOpenTarget = %PrevOpenTarget% + + ; ADD THE TEXT BOX FOR USER TO ENTER THE QUERY STRING + Gui, 1:Add, Edit, vFilename W600, %NewKeyPhrase% + + ; ADD MY FAV TAGLINE + Gui, 1:Add, Text, X625 Y10, What do you seek, my friend? + + ; ADD THE STATUS BAR FOR PROVIDING FEEDBACK TO USER + Gui, 1:Add, Text, vStatusBar X10 Y31 R1 W764 + + ; ADD THE SELECTION LISTBOX FOR DISPLAYING SEARCH RESULTS + Gui, 1:Add, ListBox, vOpenTarget gTargetSelection X10 Y53 R28 W764 HScroll Disabled, %List% + + ; ADD THESE BUTTONS, BUT DISABLE THEM FOR NOW + Gui, 1:Add, Button, gButtonOPEN vButtonOPEN Default X10 Y446 Disabled, Open + Gui, 1:Add, Button, gButtonOPENDIR vButtonOPENDIR X59 Y446 Disabled, Open Directory + Gui, 1:Add, Button, gButtonSCANSTARTMENU vButtonSCANSTARTMENU X340 Y446 Disabled, Scan Start-Menu + + ; ADD THE EXIT BUTTON + Gui, 1:Add, Button, gButtonEXIT X743 Y446, Exit + + ; POP-UP THE QUERY WINDOW + Gui, 1:Show, Center, %version% +} + +; ENABLE RE-SCANNING OF LATEST DIRECTORY LISTING +If 1 in -scan,-scex + rescan = Y +; CHECK WHETHER THE DIRECTORY LISTING CACHE FILE ALREADY EXISTS. IF NOT, DO A RE-SCAN. +Else IfNotExist, %dirListing% + rescan = Y + +If rescan = Y ; DO A RE-SCAN +{ + ; SHOW STATUS UNLESS USER SPECIFIES SCAN-AND-EXIT OPTION + IfNotEqual 1, -scex + GuiControl,, StatusBar, Scanning directory listing... + + ; SCAN START-MENU AND STORE DIRECTORY/PROGRAM LISTINGS IN CACHE FILE + Gosub ScanStartMenu + + ; QUIT IF USER SPECIFIES SCAN-AND-EXIT OPTION + IfEqual 1, -scex, Goto, QuitNoSave +} + +GuiControl,, StatusBar, Retrieving last query result... + +; RETRIEVE THE MATCHING LIST FOR THE LAST USED KEY-PHRASE +Gosub SilentFindMatches + +; REMOVE THE STATUS TEXT +GuiControl,, StatusBar, + +; DIRECTORY LISTING IS NOW LOADED. ENABLE THE OTHER BUTTONS. +; THESE BUTTONS ARE DISABLED EARLIER BECAUSE THEY SHOULD NOT +; BE FUNCTIONAL UNTIL THIS PART OF THE SCRIPT. +GuiControl, 1:Enable, ButtonOPEN +GuiControl, 1:Enable, ButtonOPENDIR +GuiControl, 1:Enable, ButtonSCANSTARTMENU + +; TURN ON INCREMENTAL SEARCH +SetTimer, tIncrementalSearch, 500 + +; REFRESH THE GUI +Gosub EnterQuery + +Return + +;*********************************************************** +; * +; END OF MAIN PROGRAM * +; * +;*********************************************************** + + +;=== BEGIN ButtonSCANSTARTMENU EVENT ======================= + +ButtonSCANSTARTMENU: + +Gui, 1:Submit, NoHide +GuiControl,, StatusBar, Scanning directory listing... + +; DISABLE LISTBOX WHILE SCANNING IS IN PROGRESS +GuiControl, 1:Disable, OpenTarget +GuiControl, 1:Disable, ButtonEXIT +GuiControl, 1:Disable, ButtonOPEN +GuiControl, 1:Disable, ButtonOPENDIR +GuiControl, 1:Disable, ButtonSCANSTARTMENU + +; DO THE SCANNING +Gosub ScanStartMenu + +; INFORM USER THAT SCANNING HAS COMPLETED +If Filename = +{ + ; IF QUERY STRING IS EMPTY... + GuiControl, 1:Enable, ButtonEXIT + GuiControl, 1:Enable, ButtonOPEN + GuiControl, 1:Enable, ButtonSCANSTARTMENU + GuiControl,, StatusBar, Scan completed. + Gosub EnterQuery +} +Else +{ + ; IF QUERY STRING EXISTS... + ; FILTER FOR SEARCH STRING WITH THE NEW LISTING + NewKeyPhrase = + Gosub FindMatches +} +Return + +;... END ButtonSCANSTARTMENU EVENT ......................... + + +;=== BEGIN ScanStartMenu SUBROUTINE ======================== +; SCAN THE START-MENU AND STORE THE DIRECTORY/PROGRAM +; LISTINGS IN A CACHE FILE +ScanStartMenu: + +; DEFINE THE DIRECTORY PATHS TO RETRIEVE. +; THE PATH MUST NOT BE ENCLOSED BY QUOTES OR DOUBLE-QUOTES. +; +; FOR ENGLISH VERSION OF WINDOWS +scanPath = %A_StartMenu%|%A_StartMenuCommon% + +; INCLUDE ADDITIONAL USER-DEFINED PATHS FOR SCANNING +IfExist, %SeekMyDir% +{ + Loop, read, %SeekMyDir% + { + IfNotExist, %A_LoopReadLine% + MsgBox, 8192, %version%, Processing your customised directory list...`n`n"%A_LoopReadLine%" does not exist and will be excluded from the scanning.`nPlease update [ %SeekMyDir% ]. + Else + scanPath = %scanPath%|%A_LoopReadLine% + } +} + +; DELETE EXISTING FILE BEFORE CREATING A NEW VERSION +FileDelete, %dirListing% + +; SCAN DIRECTORY LISTING (DELIMITER = |) BY RECURSING +; EACH DIRECTORY TO RETRIEVE THE CONTENTS. HIDDEN FILES +; ARE EXCLUDED. +Loop, parse, scanPath, | +{ + Loop, %A_LoopField%\*, %ScanMode%, 1 + { + FileGetAttrib, fileAttrib, %A_LoopFileFullPath% + IfNotInString, fileAttrib, H ; EXCLUDE HIDDEN FILE + FileAppend, %A_LoopFileFullPath%`n, %dirListing% + } +} + +Return + +;... END ScanStartMenu SUBROUTINE .......................... + + +;=== BEGIN FindMatches SUBROUTINE ========================== +; SEARCH AND DISPLAY ALL MATCHING RECORDS IN THE LISTBOX +FindMatches: + +Gui, 1:Submit, NoHide +CurFilename = %Filename% +GuiControl,, StatusBar, + +; CHECK FOR EMPTY QUERY STRING +If CurFilename = +{ + MsgBox, 8192, %version%, Please enter the key word/phrase to search for. + Goto EnterQuery +} + +; tIncrementalSearch IS BEING INTERRUPTED. LET IT FINISHES. +If NewKeyPhrase <> %CurFilename% +{ + ; INFORM USER THAT PATIENCE IS A VIRTUE + GuiControl,, StatusBar, Seeking... + ResumeFindMatches = TRUE + Return +} + +If List = | +{ + ; NOT EVEN A SINGLE MATCHING RECORD IS FOUND. + ; LET USER MODIFY THE QUERY STRING AND TRY AGAIN. + MsgBox, 8192, %version%, The query string "%CurFilename%" does not match any record. Try again. + GuiControl, 1:Disable, ButtonOPENDIR + GuiControl, 1:Enable, ButtonSCANSTARTMENU + Goto EnterQuery +} +Else +{ + ; SELECT THE FIRST RECORD IF NO OTHER RECORD HAS BEEN SELECTED + Gui, 1:Submit, NoHide + GuiControl, 1:Enable, OpenTarget + GuiControl, 1:Enable, ButtonOPEN + GuiControl, 1:Enable, ButtonOPENDIR + GuiControl, 1:Enable, ButtonSCANSTARTMENU + GuiControl, Focus, OpenTarget + If OpenTarget = + GuiControl, 1:Choose, OpenTarget, |1 +} + +; REFRESH GUI +Gui, 1:Show, Center, %version% + +Return + +;... END FindMatches SUBROUTINE ............................ + + +;=== BEGIN SilentFindMatches SUBROUTINE ==================== + +SilentFindMatches: + +Gui, 1:Submit, NoHide +sfmFilename = %Filename% + +; FILTER MATCHING RECORDS BASED ON USER QUERY STRING +List = | +If sfmFilename <> +{ + Loop, read, %dirListing% + { + Gui, 1:Submit, NoHide + tFilename = %Filename% + If sfmFilename <> %tFilename% + { + ; USER HAS CHANGED THE SEARCH STRING. THERE IS NO POINT + ; TO CONTINUE SEARCHING USING THE OLD STRING, SO ABORT. + Return + } + Else + { + ; APPEND MATCHING RECORDS INTO THE LIST + SplitPath, A_LoopReadLine, name, dir, ext, name_no_ext, drive + MatchFound = Y + Loop, parse, sfmFilename, %A_Space% + { + IfNotInString, name, %A_LoopField% + { + MatchFound = N + Break + } + } + IfEqual, MatchFound, Y + { + ; ADD RECORD TO LIST + List = %List%%A_LoopReadLine%| + + ; PRE-SELECT IF THIS MATCHES THE LAST-RUN PROGRAM + If (A_LoopReadLine = PrevOpenTarget && sfmFilename = PrevKeyPhrase) + List = %List%| + } + } + } +} + +; REFRESH LIST WITH SEARCH RESULTS +GuiControl, 1:, OpenTarget, %List% + +If List = | +{ + ; NO MATCHING RECORD IS FOUND + ; DISABLE LISTBOX + GuiControl, 1:Disable, OpenTarget + GuiControl, 1:Disable, ButtonOPENDIR +} +Else +{ + ; MATCHING RECORDS ARE FOUND + ; ENABLE LISTBOX + GuiControl, 1:Enable, OpenTarget + GuiControl, 1:Enable, ButtonOPENDIR +} + +; REFRESH GUI +Gui, 1:Show, Center, %version% + +Return + +;... END SilentFindMatches SUBROUTINE ...................... + + +;=== BEGIN EnterQuery SUBROUTINE =========================== +; REFRESH GUI AND LET USER ENTERS SEARCH STRING +EnterQuery: +GuiControl, Focus, Filename +GuiControl, 1:Enable, ButtonOPEN +Gui, 1:Show, Center, %version% +Return +;... END EnterQuery SUBROUTINE ............................. + + +;=== BEGIN TargetSelection EVENT =========================== + +TargetSelection: +Gui, 1:Submit, NoHide + +; DOUBLE-CLICK DETECTION TO LAUNCH PROGRAM +If A_GuiControlEvent = DoubleClick +{ + Gosub ButtonOPEN +} +Else +{ + ; STUB - FOR FUTURE USE + If A_GuiControlEvent = Normal + { + ; DO NOTHING FOR NOW + } +} + +Return + +;... END TargetSelection EVENT ............................. + + +;=== BEGIN ButtonOPEN EVENT ================================ + +; USER CLICKED ON 'OPEN' BUTTON OR PRESSED +ButtonOPEN: +Gui, 1:Submit, NoHide + +; FIND OUT WHERE THE KEYBOARD FOCUS WAS. IF IT'S THE +; TEXT FIELD, RUN THE QUERY TO FIND MATCHES. ELSE, IT +; MUST BE FROM THE LISTBOX. +GuiControlGet, focusControl, 1:Focus +If focusControl = Edit1 +{ + GuiControl, Focus, OpenTarget + GuiControl, 1:Disable, OpenTarget + GuiControl, 1:Disable, ButtonOPENDIR + GuiControl, 1:Disable, ButtonSCANSTARTMENU + Goto FindMatches +} + +; NO RECORD FROM THE LISTBOX IS SELECTED +If OpenTarget = +{ + MsgBox, 8192, %version%, Please make a selection before hitting .`nPress to exit. + Goto EnterQuery +} + +; SELECTED RECORD DOES NOT EXIST (FILE OR DIRECTORY NOT FOUND) +IfNotExist, %OpenTarget% +{ + MsgBox, 8192, %version%, %OpenTarget% does not exist. This means that the directory cache is outdated. You may click on the 'Scan Start-Menu' button below to update the directory cache with your latest directory listing now. + Goto EnterQuery +} + +; CHECK WHETHER THE SELECTED RECORD IS A FILE OR DIRECTORY +FileGetAttrib, fileAttrib, %OpenTarget% +IfInString, fileAttrib, D ; IS DIRECTORY +{ + Gosub sOpenDir +} +Else If fileAttrib <> ; IS FILE +{ + Run, %OpenTarget% +} +Else +{ + MsgBox %OpenTarget% is neither a DIRECTORY or a FILE. This shouldn't happen. Seek cannot proceed. Quitting... +} + +Goto Quit + +;... END ButtonOPEN EVENT .................................. + + +;=== BEGIN ButtonOPENDIR EVENT ============================= + +; USER CLICKED ON 'OPEN DIRECTORY' BUTTON +ButtonOPENDIR: +Gui, 1:Submit, NoHide + +; CHECK THAT USER HAS SELECTED A RECORD ALREADY +If OpenTarget = +{ + MsgBox, 8192, %version%, Please make a selection first. + Goto EnterQuery +} + +; RUN SUBROUTINE TO OPEN A DIRECTORY +Gosub sOpenDir + +Goto Quit + +;... END ButtonOPENDIR EVENT ............................... + + +;=== BEGIN sOpenDir SUBROUTINE ============================= + +sOpenDir: + +; IF USER SELECTED A FILE-RECORD INSTEAD OF A DIRECTORY-RECORD, +; EXTRACT THE DIRECTORY PATH. (I'M USING DriveGet INSTEAD OF +; FileGetAttrib TO ALLOW THE SCENARIO WHEREBY OpenTarget IS +; INVALID BUT THE DIRECTORY PATH OF OpenTarget IS VALID. +DriveGet, status, status, %OpenTarget% +If status <> Ready ; NOT A DIRECTORY +{ + SplitPath, OpenTarget, name, dir, ext, name_no_ext, drive + OpenTarget = %dir% +} + +; CHECK WHETHER DIRECTORY EXISTS +IfNotExist, %OpenTarget% +{ + MsgBox, 8192, %version%, %OpenTarget% does not exist. This means that the directory cache is outdated. You may click on the 'Scan Start-Menu' button below to update the directory cache with your latest directory listing now. + Goto EnterQuery +} + +; OPEN THE DIRECTORY +IfExist, %dirExplorer% +{ + Run, "%dirExplorer%" "%OpenTarget%", , Max ; OPEN WITH CUSTOMISED FILE EXPLORER +} +Else +{ + Run, %OpenTarget%, , Max ; OPEN WITH DEFAULT WINDOWS FILE EXPLORER +} +Return + +;... END sOpenDir SUBROUTINE ............................... + + +;=== BEGIN tIncrementalSearch EVENT ======================== +; AUTOMATICALLY CONDUCT REAL-TIME INCREMENTAL SEARCH +; TO FIND MATCHING RECORDS WITHOUT WAITING FOR USER +; TO PRESS +tIncrementalSearch: + +Loop +; REPEAT SEARCHING UNTIL USER HAS STOPPED CHANGING THE QUERY STRING +{ + Gui, 1:Submit, NoHide + CurFilename = %Filename% + If NewKeyPhrase <> %CurFilename% + { + OpenTarget = + Gosub SilentFindMatches + NewKeyPhrase = %CurFilename% + Sleep, 100 ; DON'T HOG THE CPU! + } + Else + { + ; QUERY STRING HAS STOPPED CHANGING + Break + } +} + +; USER HAS HIT TO LOOK FOR MATCHING RECORDS. +; RUN FindMatches NOW. +If ResumeFindMatches = TRUE +{ + ResumeFindMatches = FALSE + Gosub FindMatches +} + +; CONTINUE MONITORING FOR CHANGES +SetTimer, tIncrementalSearch, 500 + +Return + +;... END tIncrementalSearch EVENT .......................... + + +;=== BEGIN Quit SUBROUTINE ================================= + +Quit: +ButtonEXIT: +GuiClose: +GuiEscape: + +Gui, 1:Submit, NoHide + +; SAVE THE KEY WORD/PHRASE FOR NEXT RUN IF IT HAS CHANGED +If TrackKeyPhrase = ON +{ + If (PrevKeyPhrase <> Filename || PrevOpenTarget <> OpenTarget) + { + FileDelete, %keyPhrase% + FileAppend, %Filename%`n, %keyPhrase% + FileAppend, %OpenTarget%`n, %keyPhrase% + } +} + +QuitNoSave: +ExitApp ; JOB DONE. G'DAY! + +;... END Quit SUBROUTINE ................................... + + +;************************ +;<--- END OF PROGRAM ---> +;************************ + +; /* vim: set noexpandtab shiftwidth=4: */ diff --git a/src/docs/scripts/Seek_(SearchTheStartMenu).htm b/src/docs/scripts/Seek_(SearchTheStartMenu).htm new file mode 100644 index 0000000..2ef866c --- /dev/null +++ b/src/docs/scripts/Seek_(SearchTheStartMenu).htm @@ -0,0 +1,832 @@ + + +Seek -- by Phi + + + + + + + +

Seek -- by Phi

+ +

½ÃÀÛ ¸Þ´º¸¦ Ç×ÇØÇÏ´Â °ÍÀº ³­»ðÇÒ ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ½Ã°£ÀÌ Áö³ª¸é¼­ ¸¹Àº ÇÁ·Î±×·¥À» ¼³Ä¡Çß´Ù¸é ´õ¿í ³­»ðÇÕ´Ï´Ù. 'Seek'À¸·Î ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê°í Å° ´Ü¾î/¹®±¸¸¦ ÁöÁ¤ÇÏ¸é ½ÃÀÛ ¸Þ´º·ÎºÎÅÍ ¿ÀÁ÷ ºÎÇÕÇÏ´Â ÇÁ·Î±×·¥°ú µð·ºÅ丮¸¸ ¿©°úÇÕ´Ï´Ù. ±×·¡¼­ ½±°Ô ¸ñÇ¥ ÇÁ·Î±×·¥À» ¸î °³ ¾ÈµÇ´Â ºÎÇÕ ¿£Æ®¸® Áß Çϳª¿¡¼­ ¿­ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ½ÃÀÛ ¸Þ´º¸¦ °Ë»öÇÏ°í ¼øȸÇÏ´Â Áö°Ü¿î ÀÛ¾÷À» ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. +

+

ÀÌ ½ºÅ©¸³Æ® ³»·Á¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

+ +
;*****************************************************************
+;
+;  Program : Seek
+;  Coder   : Phi
+;  Updated : Mon Jan 31 10:08:37 2005
+;
+;  ¿©·¯ºÐ, ¹«¾ùÀ» ã°í °è½Ê´Ï±î?
+;
+;*****************************************************************
+;
+;  ÇÊÀÚ´Â Àç¹ÌÀÖ°Ô ÀÌ ÄÚµùÀ» Áñ°å½À´Ï´Ù. ¸ðÂÉ·Ï ¿©·¯ºÐµµ
+;  Àç¹ÌÀÖ°Ô »ç¿ëÇϽñ⸦ ¹Ù¶ø´Ï´Ù. ÁÖÀúÇÏÁö ¸¶½Ã°í À̸ÞÀÏÀ»
+;  ÁֽʽÿÀ. ³íÆòÀ̵ç Çǵå¹éÀ̵ç ȯ¿µÇÕ´Ï´Ù: phi1618 (*a.t*) gmail
+;  :D0T: com.
+;
+;  ¿É¼Ç:
+;    -cache °¡´ÉÇϸé ij½¬µÈ µð·ºÅ丮 ¸®½ºÆ®¸¦ »ç¿ëÇÑ´Ù
+;           (¾Æ¹« ¿É¼Çµµ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ÀÌ°ÍÀÌ ±âº»°ªÀÌ´Ù)
+;    -scan  µð·ºÅ丮¸¦ ½ºÄµÇØ 
+              ÃÖ±ÙÀÇ µð·ºÅ丮 ¸ñ·ÏÀ» ¿­¶÷ÇÑ´Ù
+;    -scex  ½ºÄµ & Á¾·á (ÀáÀçÀûÀ¸·Î ½Ã°£À» ¼Ò¸ðÇÏ´Â 
+              µð·ºÅ丮 ½ºÄµ ÀÛ¾÷À» ¹è°æ ÀÛ¾÷À¸·Î ¼³Á¤ÇÒ °æ¿ì
+;              À¯¿ëÇÏ´Ù)
+;    -help  ÀÌ µµ¿ò¸»À» º¸¿©ÁØ´Ù
+;
+;*****************************************************************
+;
+; HOW TO 'SEEK':
+;
+; 1. 'Seek'Àº ¿ÀÅäÇÖÅ° ½ºÅ©¸³Æ®ÀÔ´Ï´Ù. 
+;    Seek.ahk (¿øº» ½ºÅ©¸³Æ®) ¶Ç´Â Seek.exe (ÄÄÆÄÀÏµÈ ½ÇÇà ÆÄÀÏ)
+;    ·Î ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
+;
+;    Seek.exe¸¦ ¾òÀ¸·Á¸é, Seek.zipÀ» ³»·Á¹ÞÀ¸¸é µË´Ï´Ù 
+;    (¾È¿¡ ¼Ò½º ÄÚµå¿Í ÄÄÆÄÀÏµÈ ÀÌÁø ÆÄÀÏÀÌ ¸ðµÎ µé¾î ÀÖ½À´Ï´Ù)
+;    http://home.ripway.com/2004-10/188589/
+;    ±×·¸Áö ¾ÊÀ¸¸é, ½º½º·Î Seek.ahk¸¦ ÄÄÆÄÀÏÇصµ µË´Ï´Ù
+;    ¿ÀÅäÇÖÅ°ÀÇ Ahk2Exe.exe ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇϰųª, ¾Æ´Ï¸é
+;    ÇÊÀÚ¿¡°Ô À̸ÞÀÏ·Î »çº»À» ¿äûÇصµ µË´Ï´Ù. ÆÄÀÏ Å©±â´Â ´ë·«
+;    200 ų·Î¹ÙÀÌÆ® Á¤µµ·Ï ÀÛ½À´Ï´Ù. ´ÙÀ½ À̸ÞÀÏ·Î ¿¬¶ô ÁֽʽÿÀ: phi1618 (*a.t*)
+;    gmail :D0T: com.
+;
+;    Seek.ahk¸¦ »ç¿ëÇÏ·Á¸é, ¸ÕÀú, ¿©·¯ºÐÀÇ ÄÄÇ»ÅÍ¿¡
+;    AutoHotkey v1.0.25 ÀÌ»óÀ» ¼³Ä¡ÇØ¾ß ÇÕ´Ï´Ù.
+;    (http://www.autohotkey.com¿¡¼­ ³»·Á ¹ÞÀ¸½Ê½Ã¿À). ´ÙÀ½ ¸í·É¾î¸¦ ½ÇÇàÇÕ´Ï´Ù:
+;
+;    X:\myTools\AutoHotkey\AutoHotkey.exe Y:\myAHK\Seek.ahk
+;
+;    ÀØÁö ¸»°í X:\myTools ±×¸®°í Y:\myAHK¸¦ 
+;    ¿©·¯ºÐÀÇ ÄÄÇ»ÅÍ¿¡ ¸Â´Â ÀûÀýÇÑ µð·ºÅ丮 À̸§À¸·Î ±³Ã¼ÇϽʽÿÀ.
+;
+; 2. ½ÇÇà ÆÄÀÏ Seek.exe´Â ¾îµðµç ¸¶À½·¡µµ µÎ¼Åµµ µË´Ï´Ù.
+;    ¼³Ä¡°¡ ÇÊ¿ä ¾ø½À´Ï´Ù. ·¹Áö½ºÆ®¸®¿¡ ÀüÇô ¾²Áöµµ ¾ÊÀ¸¸ç
+;    ÀÎÅͳݿ¡µµ ÀüÇô Á¢±ÙÇÏÁö ¾Ê½À´Ï´Ù
+;    ¼³Ä¡¸¦ Á¦°ÅÇÏ·Á¸é,
+;    ±×³É Seek.exe¸¦ »èÁ¦ÇÏ¸é ³¡ÀÔ´Ï´Ù.
+;
+;    'Seek'ÀÌ »ý¼ºÇÏ´Â µÎ °³ÀÇ 2 ÆÄÀϸ¸ 
+;    TMP µð·ºÅ丮¿¡ ¹èÄ¡µË´Ï´Ù:
+;
+;      a. _Seek.key  (¸¶Áö¸· ÁúÀÇ ¹®ÀÚ¿­À» À§ÇÑ Ä³½¬ ÆÄÀÏ)
+;      b. _Seek.list (µð·ºÅ丮 ¸®½ºÆ®¸¦ À§ÇÑ Ä³½¬ ÆÄÀÏ)
+;
+;    ¿©·¯ºÐÀÌ ¼ø¼ö ÁÖÀÇÀÚ¶ó¸é, ½Ã½ºÅÛ¿¡¼­ 'Seek'À» Á¦°ÅÇϱâ·Î
+;    °áÁ¤ÇÑ ¼ø°£ ¼Õ¼ö Áö¿ö ¹ö¸®¸é µË´Ï´Ù.
+;
+; 3. 'Seek'À» ½ÇÇàÇÏ´Â °¡Àå Æí¸®ÇÑ ¹æ¹ýÀº ´ÜÃàÅ°/ÇÖÅ°¸¦
+;    ÀÌ¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. ¿©·¯ºÐÀÇ ÄÄÇ»ÅÍ¿¡
+;    ¾ÆÁ÷ ÇÖÅ° °ü¸® ÇÁ·Î±×·¥À» »ç¿ëÇÏ°í ÀÖÁö ¾Ê´Ù¸é, ÇÊÀÚ´Â 
+;    AutoHotkey¸¦ °­·Â ÃßõÇÕ´Ï´Ù. Áö±Ý ´çÀåÀº
+;    ÇÖÅ° °ü¸® ÇÁ·Î±×·¥À» ¼³Ä¡ÇÏ°í ½ÍÁö ¾Ê´Ù¸é
+;    À©µµ¿ìÁîÀÇ ´ÜÃàÅ°¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.  'Seek'¸¦ ±âµ¿ÇÒ
+;    ´ÜÃà Å° (¿¹, ALT-F1)¸¦ ¹­À¸¸é µË´Ï´Ù. ÀÌ°ÍÀº Áß¿äÇÕ´Ï´Ù.
+;    ¾ðÁ¦µçÁö ¾îµð¼­µç 'Seek'¸¦
+;    ½ÇÇàÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù..
+;
+; 4. óÀ½ 'Seek'¸¦ ½ÇÇàÇÒ ¶§, ½ÃÀÛ ¸Þ´º¸¦ ½ºÄµÇÕ´Ï´Ù
+;    ±×¸®°í µð·ºÅ丮 ¸®½ºÆ®¸¦ 
+;    ij½¬ ÆÄÀÏ¿¡ ÀúÀåÇÕ´Ï´Ù.
+;
+;    ´ÙÀ½ µð·ºÅ丮°¡ ½ºÄµ ´ë»ó¿¡ Æ÷ÇԵ˴ϴÙ:
+;    - %A_StartMenu%
+;    - %A_StartMenuCommon%
+;
+;    ±âº»°ªÀ¸·Î, ¿¬ÀÌÀº ½ÇÇàÀº ij½¬ ÆÄÀϷκÎÅÍ ÀнÀ´Ï´Ù
+;    ±×·¡¼­ ÀûÀç ½Ã°£À» Àý¾àÇÕ´Ï´Ù. 
+;    ¿É¼Ç¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â 'Seek.exe -help'¸¦ ½ÇÇàÇϽʽÿÀ. 
+;    ½ÃÀÛ ¸Þ´º¿¡ º°·Î ÇÁ·Î±×·¥ÀÌ ¾ø´Ù¸é
+;    ij½¬ »ç¿ëÀ» Æ÷±âÇÏ°í ¾ðÁ¦³ª µð·ºÅ丮 ½ºÄµÀ»
+;    »ç¿ëÇ϶ó°í 'Seek'¿¡°Ô ¾Ë¸± ¼ö ÀÖ½À´Ï´Ù (¿É¼Ç -scan).
+;    ±×·± ½ÄÀ¸·Î ¾ðÁ¦³ª ÃֽŠ¸ñ·ÏÀ» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.
+;
+; 5. 'Seek'À» ½ÇÇàÇÒ ¶§, âÀÌ ³ªÅ¸³ª¼­
+;    ¿©·¯ºÐÀÌ Å° ´Ü¾î/¹®±¸¸¦ ÀÔ·ÂÇϱ⸦ ±â´Ù¸³´Ï´Ù.
+;    ÁúÀÇ ¹®ÀÚ¿­À» ÀÔ·ÂÇÑ ÈÄ, ºÎÇÕÇÏ´Â ·¹ÄÚµå ¸ñ·ÏÀ»
+;    º¸¿©ÁÝ´Ï´Ù. ´ÙÀ½À¸·Î, ¿£Æ®¸®¸¦ °­Á¶ÇÏ°í
+;    <Enter>¸¦ ´©¸£°Å³ª 'Open' ¹öÆ°À» Ŭ¸¯ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.
+;    ±×·¡¾ß ¼±ÅÃµÈ ÇÁ·Î±×·¥À» ½ÇÇàÇϰųª
+;     ÅÃµÈ µð·ºÅ丮¸¦ ¿­ ¼ö ÀÖ½À´Ï´Ù.
+;
+;*****************************************************************
+;
+; ±â¼úÀû °íÁö »çÇ×:
+;
+; - 'Seek'´Â Å©¸®½º ¸Ö¸´(Chris Mallett)ÀÇ AutoHotkey v1.0.25
+;   ÀÌ»óÀ» ¿ä±¸ÇÕ´Ï´Ù (http://www.autohotkey.com).
+;   Å©¸®½º¿¡°Ô À§´ëÇÑ ÀÛ¾÷À» ÇØ ÁֽŠ°Í¿¡ ´ëÇÏ¿© °¨»çµå¸³´Ï´Ù:)
+;
+; - ´ÙÀ½ ȯ°æ º¯¼ö´Â Ç×»ó À¯È¿ÇÕ´Ï´Ù:
+;   a. TMP
+;
+;*****************************************************************
+;
+; ¾Ë·ÁÁø ¹®Á¦:
+;
+; - ¾øÀ½
+;
+;*****************************************************************
+;
+; ±¸Çö Á¦¾È:
+;
+; - ±âº»À¸·Î ù ¹ø° ºÎÇÕ ·¹Äڵ带 °­Á¶.
+;   »ç¿ëÀÚ°¡ ±×³É <Enter>¸¸ Ä¡¸é ½ÇÇàµÇµµ·Ï.
+;   (Suggested by Yih Yeong)
+;
+; - °Ë»ö °á°ú ¸ñ·ÏÀ» ´õºí Ŭ¸¯Çϸé
+;   ÇÁ·Î±×·¥À» ½ÇÇàÇϵµ·Ï °³¼±.
+;   (Suggested by Yih Yeong & Jack)
+;
+; - ÀÚµ¿ ½Ç-½Ã°£ Á¡ÁøÀû °Ë»ö.
+;   (Suggested by Rajat)
+;
+; - »ç¿ëÀÚ°¡ ½ºÆäÀ̽º·Î ±¸ºÐÇÏ¿©,
+;    ¿©·¯ ÁúÀÇ ¹®ÀÚ¿­À» ÀÔ·Â¾Ë ¶§ ÆÛÁö(Fuzzy) °Ë»ö.
+;   (Suggested by Rajat)
+;
+;*****************************************************************
+;
+; Ư¡ Á¦¾È (±¸Çö ¹ÌÁ¤):
+;
+; - ±âµ¿ ÀÌ·Â ±â·Ï. ÃÖ±Ù¿¡ »ç¿ëµÈ ÇÁ·Î±×·¥À»
+;   °Ë»ö °á°úÀÇ »ó´Ü¿¡ ¹èÄ¡.
+;   (Suggested by Yih Yeong)
+;
+; - ¸®½ºÆ® ¹Ú½º ´ë½Å, ÀÏ·ÃÀÇ ¾îÇø®ÄÉÀÌ¼Ç ¾ÆÀÌÄÜÀ» 
+;   º¸¿©ÁÜ. ±×·¯¸é ±× ¾ÆÀÌÄÜ À§¿¡ Ä¿¼­¸¦ ¿Ã¸®¸é
+;   ÇÁ·Î±×·¥ Á¤º¸°¡ µé¾î ÀÖ´Â ÅøÆÁÀÌ
+;   ³ªÅ¸³­´Ù (°æ·Î, µîµî).
+;   (Suggested by Yih Yeong)
+;
+; - ÅؽºÆ® Áß°£¿¡ ºÎÇÕÇÏ´Â ´ë½Å¿¡,
+;   ÁúÀÇ ¹®ÀÚ¿­·Î ½ÃÀÛÇÏ´Â
+;   ÇÁ·Î±×·¥/µð·ºÅ丮¿¡¸¸ ºÎÇÕ.
+;   (Suggested by Stefan)
+;
+; - Áñ°Ü ã±â °ü¸® Ãß°¡. ´Ü ¹ø¿¡ 
+;   ÇÁ·Î±×·¥ ±×·ìÀ» ±âµ¿.
+;   (Suggested by Atomhrt)
+;
+; - Seek¸¦ À©µµ¿ìÁî ŽºÅ©¹Ù/Åø¹Ù¿¡ ÅëÇÕ.
+;   ¾ðÁ¦³ª °¡´ÉÇÏ°í Seek¸¦ ±âµ¿Çϱâ À§ÇØ
+;   ÇÖÅ°¸¦ ¹­À» ÇÊ¿ä°¡ ¾ø±â ¶§¹®¿¡.
+;   (Suggested by Deniz Akay)
+;
+; - ¸¸´É¹®ÀÚ/Á¤±Ô Ç¥Çö½ÄÀ¸·Î °Ë»ö.
+;   (Suggested by Steve)
+;
+;*****************************************************************
+;
+; º¯°æ ÀÌ·Â:
+;
+; * v1.1.0
+; - ÃÖÃÊ ¹èÆ÷.
+;
+; * v1.1.1
+; - â-ÃÖ´ëÈ­ ¿É¼Ç Á¦°Å. 
+;   Àß ÀÛµ¿ÇÏÁö ¾ÊÀº ÇÁ·Î±×·¥ÀÌ Àֱ⠶§¹®¿¡.
+; - 'Open' ±â´ÉÀ» Ã˹߽ÃÅ°±â À§ÇØ ´õºí Ŭ¸¯ ŽÁö Ãß°¡.
+;
+; * v2.0.0
+; - 'Seek' Æ˾÷ âÀ» Ãâ·Â È­¸é¿¡ ÅëÇÕ
+;   ´öºÐ¿¡ »ç¿ëÀÚ°¡ ÁúÀÇ ¹®ÀÚ¿­À» ÀçÀÔ·ÂÇÒ ¼ö ÀÖÀ½
+;   ¹º°¡¸¦ °Ë»öÇϱâ À§ÇØ Á¾·áÇß´Ù°¡ ´Ù½Ã SeekÀ» ½ÇÇàÇÒ ÇÊ¿ä°¡ ¾øÀ½.
+; - 'Scan Start-Menu' ¹öÆ° Ãß°¡.
+; - ½Ç½Ã°£ Á¡Áø °Ë»ö Ãß°¡. ŸÀÚÇÏ´Â µ¿¾È
+;   ºÎÇÕÇÏ´Â ·¹Äڵ带 ÀÚµ¿À¸·Î ¿©°úÇÑ´Ù,
+;   <Enter>¸¦ ´©¸£±â¸¦ ±â´Ù¸®Áö ¾Ê´Â´Ù.
+; - °Ë»ö ¹®ÀÚ¿­À» ÃßÀûÇÒ ³»ºÎ ½ºÀ§Ä¡ Ãß°¡ (TrackKeyPhrase).
+; - ÅøÆÁÀ» ÀÌ¿ëÇÏ¿© ÆÄÀÏÀ̸§À» º¸¿©ÁÙ
+;   ³»ºÎ ½ºÀ§Ä¡ Ãß°¡ (ToolTipFilename)
+;
+; * v2.0.1
+; - ¼öÆò ½ºÅ©·Ñ¹Ù¸¦ ¸®½ºÆ®¹Ú½º¿¡ Ãß°¡. ÀÌÁ¦ ¾ÆÁÖ ±ä
+;   ·¹ÄÚµå¶óµµ Áß°£¿¡¼­ ²÷¾îÁöÁö ¾Ê´Â´Ù.
+;
+; * v2.0.2
+; - »ç¿ëÀÚ°¡ ÀÚ½ÅÀÇ ¸ÂÃã µð·ºÅ丮 ¸ñ·ÏÀ» ½ºÄµ ´ë»ó¿¡ Æ÷ÇÔÇÒ ¼ö ÀÖµµ·Ï Çã¿ë.
+;   »ç¿ëÀÚ´Â ±×³É ÅؽºÆ® ÆÄÀÏ 'Seek.dir'À» Seek.exe ¶Ç´Â  Seek.ahk°¡ ÀÖ´Â
+;   µð·ºÅ丮¿¡ ¸¸µé¾î, Ãß°¡µÉ µð·ºÅ丮ÀÇ Àüü °æ·Î¸¦
+;   ÇÑ ÁÙ¿¡ Çϳª¾¿ ÁöÁ¤Çϱ⸸ ÇÏ¸é µÈ´Ù. 
+;   °æ·Î´Â Ȭµû¿ÈÇ¥ ¶Ç´Â °ãµû¿ÈÇ¥·Î µÑ·¯ ½ÎÁö ¸¶½Ê½Ã¿À.
+;
+; * v2.0.3
+; - À̸§À¸·Î Á¤·Ä /on ¿É¼ÇÀ» DIR-¸í·É¾î¿¡ Ãß°¡.
+; - »ç¿ëÀÚ°¡ ¿©·¯ ÁúÀÇ ¹®ÀÚ¿­À» ½ºÆäÀ̽º·Î ºÐÇÒÇØ ÀÔ·ÂÇÒ ¶§,
+;   ÆÛÁö °Ë»ö. ¿¹, "med pla". ¹®ÀÚ¿­ÀÌ ¸ðµÎ
+;   ("med" & "pla") ¹ß°ßµÇ¸é ºÎÇÕÇÑ´Ù.
+;   ÀÌ°ÍÀº "Media Player", "Macromedia Flash Player",
+;   "Play Medieval King", "medpla", "plamed"¿¡ ºÎÇÕÇÑ´Ù.
+; - ÅÇ-À̵¿ ÀýÂ÷¸¦ ±³Á¤. ¸ðµç ¹öÆ°À» ½ÃÀÛÀ¸·ÎºÎÅÍ ¿À¸¥ÂÊÀ¸·Î Ãß°¡ÇÏ°í,
+;   ½ÇÁ¦·Î »ç¿ëÇÒ ¼ö ÀÖÀ» ¶§±îÁö
+;   ºÒ´ÉÀ¸·Î ¸¸µé¾î¼­.
+; - ÅøÆÁ=Çǵå¹éÀ» ±³Ã¼Çϱâ À§ÇØ »óÅ ¹Ù¸¦ Ãß°¡.
+; - Æó±âµÈ ³»ºÎ ½ºÀ§Ä¡¸¦ Á¦°Å (ToolTipFilename).
+; - "dir" ¸í·É¾îÀÇ »ç¿ëÀ» ¿ÀÅäÇÖÅ°ÀÇ
+;   "Loop" ¸í·É¾î·Î ±³Ã¼ÇØ µð·ºÅ丮 ³»¿ëÀ» ½ºÄµ.
+;   "dir"Àº È®Àå ¹®ÀÚ ¼¼Æ®¸¦ ó¸®ÇÒ ¼ö ¾øÀ¸¹Ç·Î
+;   ºñ-¿µ¾î (¿¹, µ¶ÀϾî) µð·ºÅ丮¿Í ÆÄÀÏÀ̸§Àº À߸ø ¾ò°Ô µÊ
+;   (ÀÌ º¯°æÀ» Å×½ºÆ®ÇØ ÁֽŠº¼ÇÁ°­ ºÎ°¡Æ¼(Wolfgang Bujatti)¿Í
+;   ½Ã¿¡½º Çø®Áö(Sietse Fliege)¿¡°Ô °¨»ç)
+; - ³»ºÎ ½ºÀ§Ä¡ Ãß°¡ (ScanMode) ÆÄÀÏÀ̳ª µð·ºÅ丮°¡
+;   ½ºÄµ ´ë»ó¿¡ Æ÷ÇԵǾú´ÂÁö È®ÀÎ.
+; - ÇϵåÄÚµåµÈ ½ÃÀÛ ¸Þ´º °æ·Î¸¦ ³»Àå º¯¼ö
+;    A_StartMenu, A_StartMenuCommonÀ¸·Î ±³Ã¼.
+;   À̷μ­, SeekÀº ÀÌÁ¦ ½ÃÀÛ ¸Þ´º¿¡¼­
+;   ´Ù¸¥ À̸§Áþ±â °ü·Ê¸¦ °¡Áø ´Ù¸¥ ·ÎÄÉÀÏ°úµµ ÀÛµ¿.
+;   (ÀÌ »õ º¯¼ö¸¦ »ç¿ëÇϱâ Àü¿¡ ¶Ç´Ù¸¥ ¹æ¹ýÀ» Å×½ºÆ®ÇØ ÁÖ½Å
+;   º¼ÇÁ°­ ºÎ°¡Æ¼(Wolfgang Bujatti)¿Í
+;   ½Ã¿¡½º Çø®Áö(Sietse Fliege)¿¡°Ô °¨»ç)
+; - ¸¶Áö¸·-½ÇÇà ÇÁ·Î±×·¥ ·¹Äڵ带 ¹Ì¸® ¼±ÅÃ
+;   ½Å¼ÓÇÏ°Ô-<ENTER>¸¦ µÎ ¹ø ´©¸£¸é ±×°ÍÀ» ½ÇÇà.
+;
+;*****************************************************************
+
+;**************************
+;<--- BEGIN OF PROGRAM --->
+;**************************
+
+;==== ¿©±â´Â ¸ÂÃã ¼³Á¤ ±¸¿ª================================
+
+; µð·ºÅ丮¸¦ ¿­ ¶§ »ç¿ëÇÒ ÇÁ·Î±×·¥À» ÁöÁ¤ÇÕ´Ï´Ù.
+; ÇÁ·Î±×·¥À» ¹ß°ßÇÒ ¼ö ¾ø°Å³ª ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é
+; (Áï, º¯¼ö°¡ ÇÒ´çµÇÁö ¾Ê¾Ò°Å³ª ¹«È¿ÇÑ °ªÀÌ ÇÒ´çµÇ¾î ÀÖÀ¸¸é),
+; ±âº» ÀͽºÇ÷η¯°¡ »ç¿ëµË´Ï´Ù.
+dirExplorer = E:\utl\xplorer2_lite\xplorer2.exe
+
+; ½ºÄµ ´ë»ó¿¡ Æ÷Ç﵃  »ç¿ëÀÚÀÇ Ãß°¡ ¸ÂÃã µð·ºÅ丮 ¸ñ·Ï 
+; Àüü °æ·Î´Â Ȭµû¿ÈÇ¥ ¶Ç´Â °ãµû¿ÈÇ¥·Î µÑ·¯½Î¸é ¾ÈµË´Ï´Ù
+; ÀÌ ÆÄÀÏÀÌ ¾øÀ¸¸é
+; ±âº» µð·ºÅ丮¸¸ ½ºÄµÇÕ´Ï´Ù.
+SeekMyDir = %A_ScriptDir%\Seek.dir
+
+; ij½¬ µð·ºÅ丮/ÇÁ·Î±×·¥ ¸ñ·ÏÀ» ÀúÀåÇÒ
+; ÆÄÀÏÀ̸§°ú µð·ºÅ丮 À§Ä¡¸¦ ÁöÁ¤ÇÕ´Ï´Ù
+; ¿øÇÏÁö ¾ÊÀ¸¸é À̸¦ ¹Ù²Ü ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.
+dirListing = %A_Temp%\_Seek.list
+
+; ¸¶Áö¸· °Ë»öÀÇ Ä³½¬µÈ Å° ´Ü¾î/¹®±¸¸¦ ÀúÀåÇÒ
+; ÆÄÀÏÀ̸§°ú µð·ºÅ丮 À§Ä¡¸¦ ÁöÁ¤ÇÕ´Ï´Ù
+;  ¿øÇÏÁö ¾ÊÀ¸¸é À̸¦ ¹Ù²Ü ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.
+keyPhrase = %A_Temp%\_Seek.key
+
+; °Ë»ö ¹®ÀÚ¿­ ÃßÀû (ON/OFF)
+; ONÀ̸é, ´ÙÀ½¿¡ SeekÀ» ½ÇÇàÇÒ ¶§ 
+; ¸¶Áö¸·-»ç¿ëµÈ ÁúÀÇ ¹®ÀÚ¿­À»±âº»À¸·Î Àç»ç¿ëÇÕ´Ï´Ù.
+; OFFÀ̸é, ¸¶Áö¸· »ç¿ëµÈ ÁúÀÇ ¹®ÀÚ¿­À» ÃßÀûÇÏÁö ¾Ê½À´Ï´Ù
+; ±×¸®°í ´ÙÀ½¹ø Seek¸¦ ½ÇÇàÇÒ ¶§
+; ÁúÀÇ ¹®ÀÚ¿­ÀÌ ¾ø½À´Ï´Ù.
+TrackKeyPhrase = ON
+
+; ½ºÄµ ´ë»ó¿¡ Æ÷Ç﵃ °ÍµéÀ» ÁöÁ¤ÇÕ´Ï´Ù.
+; 0: µð·ºÅ丮 ¹èÁ¦ (ÆÄÀϸ¸ Æ÷ÇÔ).
+; 1: ¸ðµç ÆÄÀÏ°ú µð·ºÅ丮 Æ÷ÇÔ.
+; 2: ¿ÀÁ÷ µð·ºÅ丮¸¸ Æ÷ÇÔ (ÆÄÀÏ Á¦¿Ü).
+ScanMode = 1
+
+;...........................................................
+
+; INIT
+;#NoTrayIcon
+StringCaseSense, Off
+version = Seek v2.0.3
+
+; DISPLAY HELP INSTRUCTIONS
+If 1 in --help,-help,/h,-h,/?,-?
+{
+    MsgBox,, %version%, ½ÃÀÛ ¸Þ´º¸¦ Ç×ÇØÇÏ´Â °ÍÀº ³­»ðÇÒ ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ½Ã°£ÀÌ Áö³ª¸é¼­ ¸¹Àº ÇÁ·Î±×·¥À» ¼³Ä¡Çß´Ù¸é ´õ¿í ³­»ðÇÕ´Ï´Ù. 'Seek'À¸·Î ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê°í Å° ´Ü¾î/¹®±¸¸¦ ÁöÁ¤ÇÏ¸é ½ÃÀÛ ¸Þ´º·ÎºÎÅÍ ¿ÀÁ÷ ºÎÇÕÇÏ´Â ÇÁ·Î±×·¥°ú µð·ºÅ丮¸¸ ¿©°úÇÕ´Ï´Ù. ±×·¡¼­ ½±°Ô ¸ñÇ¥ ÇÁ·Î±×·¥À» ¸î °³ ¾ÈµÇ´Â ºÎÇÕ ¿£Æ®¸® Áß Çϳª¿¡¼­ ¿­ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ½ÃÀÛ ¸Þ´º¸¦ °Ë»öÇÏ°í ¼øȸÇÏ´Â Áö°Ü¿î ÀÛ¾÷À» ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù.`n`n;  ÇÊÀÚ´Â Àç¹ÌÀÖ°Ô ÀÌ ÄÚµùÀ» Áñ°å½À´Ï´Ù. ¸ðÂÉ·Ï ¿©·¯ºÐµµ Àç¹ÌÀÖ°Ô »ç¿ëÇϽñ⸦ ¹Ù¶ø´Ï´Ù. ÁÖÀúÇÏÁö ¸¶½Ã°í À̸ÞÀÏÀ» ÁֽʽÿÀ. ³íÆòÀ̵ç Çǵå¹éÀ̵ç ȯ¿µÇÕ´Ï´Ù: phi1618 (*a.t*) gmail :D0T: com.`n`nOptions:`n  -cache`t°¡´ÉÇϸé ij½¬µÈ µð·ºÅ丮 ¸®½ºÆ®¸¦ »ç¿ëÇÑ´Ù (¾Æ¹« ¿É¼Çµµ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ÀÌ°ÍÀÌ ±âº»°ªÀÌ´Ù)`n  -scan`tµð·ºÅ丮¸¦ ½ºÄµÇØ ÃÖ±ÙÀÇ µð·ºÅ丮 ¸ñ·ÏÀ» ¿­¶÷ÇÑ´Ù`n  -scex`tScan & ½ºÄµ & Á¾·á (ÀáÀçÀûÀ¸·Î ½Ã°£À» ¼Ò¸ðÇÏ´Â µð·ºÅ丮 ½ºÄµ ÀÛ¾÷À» ¹è°æ ÀÛ¾÷À¸·Î ¼³Á¤ÇÒ °æ¿ì À¯¿ëÇÏ´Ù)`n  -help`tÀÌ µµ¿ò¸»À» º¸¿©ÁØ´Ù
+    Goto QuitNoSave
+}
+
+; Çʼö ȯ°æ º¯¼ö°¡ Á¸ÀçÇÏ´ÂÁö ±×¸®°í À¯È¿ÇÑÁö Á¡°ËÇÕ´Ï´Ù
+; *TMP*
+IfNotExist, %A_Temp% ; °æ·Î°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù
+{
+    MsgBox ÀÌ Çʼö ȯ°æ º¯¼ö´Â Á¤ÀǵÇÁö ¾Ê¾Ò°Å³ª À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù:`n`n    TMP = %A_Temp%`n`n¸ÕÀú ¼öÁ¤ÇÑ ÈÄ¿¡ SeekÀ» ½ÇÇàÇϽʽÿÀ.
+    Goto QuitNoSave
+}
+
+; SCAN-AND-EXITÀÌ ¾Æ´Ï¸é
+IfNotEqual 1, -scex
+{
+    ; ¸¶Áö¸·À¸·Î »ç¿ëµÈ Å°-¹®±¸¸¦ ij½¬ ÆÄÀϷκÎÅÍ ¿­¶÷ÇØ
+    ; ±âº» ÁúÀÇ ¹®ÀÚ¿­·Î »ç¿ëÇÕ´Ï´Ù
+    If TrackKeyPhrase = ON
+    {
+        FileReadLine, PrevKeyPhrase, %keyPhrase%, 1
+        FileReadLine, PrevOpenTarget, %keyPhrase%, 2
+    }
+    NewKeyPhrase = %PrevKeyPhrase%
+    NewOpenTarget = %PrevOpenTarget%
+
+    ; »ç¿ëÀÚ°¡ ÁúÀÇ ¹®ÀÚ¿­À» ÀÔ·ÂÇÒ ÅؽºÆ® ¹Ú½º¸¦ Ãß°¡ÇÕ´Ï´Ù.
+    Gui, 1:Add, Edit, vFilename W600, %NewKeyPhrase%
+
+    ; ADD MY FAV TAGLINE
+    Gui, 1:Add, Text, X625 Y10, ¹«¾ùÀ» ã°í °è½Ê´Ï±î, ¿©·¯ºÐ?
+
+    ; »ç¿ëÀÚ¿¡°Ô Çǵå¹éÀ» Á¦°øÇϱâ À§ÇØ »óÅ ¹Ù¸¦ Ãß°¡ÇÕ´Ï´Ù
+    Gui, 1:Add, Text, vStatusBar X10 Y31 R1 W764
+
+    ; °Ë»ö °á°ú¸¦ º¸¿©ÁÙ ¼±Åà ¸®½ºÆ®¹Ú½º¸¦ Ãß°¡ÇÕ´Ï´Ù
+    Gui, 1:Add, ListBox, vOpenTarget gTargetSelection X10 Y53 R28 W764 HScroll Disabled, %List%
+
+    ; ´ÙÀ½ ¹öÆ°À» Ãß°¡ÇÏÁö¸¸, Áö±ÝÀº ºÒ´ÉÀ¸·Î ¸¸µé¾î µÓ´Ï´Ù
+    Gui, 1:Add, Button, gButtonOPEN vButtonOPEN Default X10 Y446 Disabled, Open
+    Gui, 1:Add, Button, gButtonOPENDIR vButtonOPENDIR X59 Y446 Disabled, Open Directory
+    Gui, 1:Add, Button, gButtonSCANSTARTMENU vButtonSCANSTARTMENU X340 Y446 Disabled, Scan Start-Menu
+
+    ; Á¾·á ¹öÆ° Ãß°¡
+    Gui, 1:Add, Button, gButtonEXIT X743 Y446, Exit
+
+    ; ÁúÀÇ Ã¢À» Æ˾÷ 
+    Gui, 1:Show, Center, %version%
+}
+
+; ¸¶Áö¸· µð·ºÅ丮 ¸ñ·ÏÀ» ´Ù½Ã ½ºÄµ
+If 1 in -scan,-scex
+    rescan = Y
+; µð·ºÅ丮 ij½¬ ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÏ´ÂÁö Á¡°ËÇÕ´Ï´Ù. ¾ø´Ù¸é, ´Ù½Ã ½ºÄµÇÕ´Ï´Ù.
+Else IfNotExist, %dirListing%
+    rescan = Y
+
+If rescan = Y ; ´Ù½Ã ½ºÄµÇÕ´Ï´Ù
+{
+    ; »ç¿ëÀÚ°¡ SCAN-AND-EXIT ¿É¼ÇÀ» ÁöÁ¤ÇÏÁö ¾Ê´Â ÇÑ, »óŸ¦ º¸¿©ÁÝ´Ï´Ù.
+    IfNotEqual 1, -scex
+        GuiControl,, StatusBar, µð·ºÅ丮 ¸ñ·Ï ½ºÄµ Áß...
+
+    ; ½ÃÀÛ ¸Þ´º¸¦ ½ºÄµÇØ µð·ºÅ丮/ÇÁ·Î±×·¥ ¸ñ·ÏÀ» ij½¬ ÆÄÀÏ¿¡ ÀúÀåÇÕ´Ï´Ù
+    Gosub ScanStartMenu
+
+    ; »ç¿ëÀÚ°¡ SCAN-AND-EXIT ¿É¼ÇÀ» ÁöÁ¤Çß´Ù¸é Á¾·áÇÕ´Ï´Ù
+    IfEqual 1, -scex, Goto, QuitNoSave
+}
+
+GuiControl,, StatusBar, ¸¶Áö¸· ÁúÀÇ °á°ú¸¦ ¿­¶÷ Áß...
+
+; ¸¶Áö¸·À¸·Î »ç¿ëµÈ Å° ¹®±¸¿¡ ´ëÇÏ¿© ºÎÇÕÇÏ´Â ¸ñ·ÏÀ» ¿­¶÷ÇÕ´Ï´Ù
+Gosub SilentFindMatches
+
+; »óÅ ÅؽºÆ®¸¦ Á¦°ÅÇÕ´Ï´Ù
+GuiControl,, StatusBar,
+
+; µð·ºÅ丮 ¸ñ·ÏÀÌ ÀÌÁ¦ ÀûÀçµÇ¾ú½À´Ï´Ù. ´Ù¸¥ ¹öÆ°À» È°¼ºÈ­ÇÕ´Ï´Ù.
+; ÀÌ ¹öÆ°µéÀº ¾Õ¿¡¼­ ºÒ´ÉÈ­ ½ÃÄÑ µÎ¾ú½À´Ï´Ù. ¿Ö³ÄÇϸé ÀÌ ½ºÅ©¸³Æ®¿¡¼­
+; ÀÌ ºÎºÐ¿¡ µµÂøÇϱâ Àü±îÁö ÀÛµ¿ÇÏ¸é ¾ÈµÇ±â ¶§¹®ÀÔ´Ï´Ù.
+GuiControl, 1:Enable, ButtonOPEN
+GuiControl, 1:Enable, ButtonOPENDIR
+GuiControl, 1:Enable, ButtonSCANSTARTMENU
+
+; Á¡Áø °Ë»öÀ» ÄÕ´Ï´Ù
+SetTimer, tIncrementalSearch, 500
+
+; ±¸À̸¦ °»½ÅÇÕ´Ï´Ù
+Gosub EnterQuery
+
+Return
+
+;***********************************************************
+;                                                          *
+;                 END OF MAIN PROGRAM                      *
+;                                                          *
+;***********************************************************
+
+
+;=== BEGIN ButtonSCANSTARTMENU EVENT =======================
+
+ButtonSCANSTARTMENU:
+
+Gui, 1:Submit, NoHide
+GuiControl,, StatusBar, µð·ºÅ丮 ¸ñ·Ï ½ºÄµ Áß...
+
+; ½ºÄµ ÁßÀÎ µ¿¾È ¸®½ºÆ®¹Ú½º¸¦ ºÒ´ÉÀ¸·Î ¸¸µì´Ï´Ù
+GuiControl, 1:Disable, OpenTarget
+GuiControl, 1:Disable, ButtonEXIT
+GuiControl, 1:Disable, ButtonOPEN
+GuiControl, 1:Disable, ButtonOPENDIR
+GuiControl, 1:Disable, ButtonSCANSTARTMENU
+
+; ½ºÄµÇÕ´Ï´Ù
+Gosub ScanStartMenu
+
+; »ç¿ëÀÚ¿¡°Ô ½ºÄµÀÌ ¿Ï·áµÇ¾ú´Ù°í ¾Ë¸³´Ï´Ù
+If Filename =
+{
+    ; ÁúÀÇ ¹®ÀÚ¿­ÀÌ ºñ¾î ÀÖ´Ù¸é...
+    GuiControl, 1:Enable, ButtonEXIT
+    GuiControl, 1:Enable, ButtonOPEN
+    GuiControl, 1:Enable, ButtonSCANSTARTMENU
+    GuiControl,, StatusBar, Scan completed.
+    Gosub EnterQuery
+}
+Else
+{
+    ; ÁúÀÇ ¹®ÀÚ¿­ÀÌ Á¸ÀçÇϸé...
+    ; »õ ¸ñ·ÏÀ» °Ë»ö ¹®ÀÚ¿­¿¡ ´ëÇÏ¿© ¿©°úÇÕ´Ï´Ù.
+    NewKeyPhrase =
+    Gosub FindMatches
+}
+Return
+
+;... END ButtonSCANSTARTMENU EVENT .........................
+
+
+;=== BEGIN ScanStartMenu SUBROUTINE ========================
+; ½ÃÀÛ ¸Þ´º¸¦ ½ºÄµÇÏ°í ij½Ã ÆÄÀÏ¿¡
+; µð·ºÅ丮/ÇÁ·Î±×·¥ ¸ñ·ÏÀ» ÀúÀåÇÕ´Ï´Ù
+ScanStartMenu:
+
+; ¿­¶÷ÇÒ µð·ºÅ丮 °æ·Î¸¦ Á¤ÀÇÇÕ´Ï´Ù.
+; °æ·Î¸¦ Ȭµû¿ÈÇ¥ ¶Ç´Â °ãµû¿ÈÇ¥·Î µÑ·¯½Î¸é ¾ÈµË´Ï´Ù.
+;
+; ¿µ¾î ¹öÀüÀÇ Ã¢¿¡ ´ëÇÏ¿©
+scanPath = %A_StartMenu%|%A_StartMenuCommon%
+
+; »ç¿ëÀÚ°¡ Á¤ÀÇÇÑ Ãß°¡ °æ·Î¸¦ ½ºÄµ ´ë»ó¿¡ Æ÷ÇÔÇÕ´Ï´Ù
+IfExist, %SeekMyDir%
+{
+    Loop, read, %SeekMyDir%
+    {
+        IfNotExist, %A_LoopReadLine%
+            MsgBox, 8192, %version%, ¸ÂÃã µð·ºÅ丮 ¸®½ºÆ®¸¦ ó¸®Áß
+			...`n`n"%A_LoopReadLine%"´Â Á¸ÀçÇÏÁö ¾ÊÀ¸¸ç
+			½ºÄµ ´ë»ó¿¡¼­ Á¦¿ÜµË´Ï´Ù.`n¾÷µ¥ÀÌÆ® ÇϽʽÿÀ [ %SeekMyDir% ].
+        Else
+            scanPath = %scanPath%|%A_LoopReadLine%
+    } 
+}
+
+; »õ ¹öÀüÀ» ¸¸µé±â Àü¿¡ ±âÁ¸ÀÇ ÆÄÀÏÀ» »èÁ¦ÇÕ´Ï´Ù
+FileDelete, %dirListing%
+
+; µð·ºÅ丮 ¸ñ·ÏÀ» ½ºÄµÇÕ´Ï´Ù (±¸ºÐÀÚ = |)
+; °¢ µð·ºÅ丮¸¶´Ù Àç±ÍÇØ µé¾î°¡ ±× ³»¿ëÀ» ¿­¶÷ÇÕ´Ï´Ù.
+; ¼ûÀº ÆÄÀÏÀº Á¦¿ÜµË´Ï´Ù.
+Loop, parse, scanPath, |
+{
+    Loop, %A_LoopField%\*, %ScanMode%, 1
+    {
+        FileGetAttrib, fileAttrib, %A_LoopFileFullPath%
+        IfNotInString, fileAttrib, H ; ¼ûÀº ÆÄÀÏÀ» Á¦¿ÜÇÕ´Ï´Ù
+            FileAppend, %A_LoopFileFullPath%`n, %dirListing%
+    }
+}
+
+Return
+
+;... END ScanStartMenu SUBROUTINE ..........................
+
+
+;=== BEGIN FindMatches SUBROUTINE ==========================
+; ºÎÇÕÇÏ´Â ¸ðµç ·¹ÄÚ¸£¸¦ °Ë»öÇØ ¸®½ºÆ®¹Ú½º¿¡ º¸¿©ÁÝ´Ï´Ù
+FindMatches:
+
+Gui, 1:Submit, NoHide
+CurFilename = %Filename%
+GuiControl,, StatusBar, 
+
+; ºó ÁúÀÇ ¹®ÀÚ¿­ÀÎÁö Á¡°ËÇÕ´Ï´Ù
+If CurFilename =
+{
+    MsgBox, 8192, %version%, °Ë»öÇÒ Å° ´Ü¾î/¹®±¸¸¦ ÀÔ·ÂÇϽʽÿÀ.
+    Goto EnterQuery
+}
+
+; tIncrementalSearch´Â ÀÎÅÍ·´Æ®µÈ »óÅÂÀÔ´Ï´Ù. Á¾·á½ÃÄÑ ¹ö¸³´Ï´Ù.
+If NewKeyPhrase <> %CurFilename%
+{
+    ; »ç¿ëÀÚ¿¡°Ô Âü°í ±â´Ù¸®¶ó°í ¾Ë¸³´Ï´Ù
+    GuiControl,, StatusBar, ã´Â Áß...
+    ResumeFindMatches = TRUE
+    Return
+}
+
+If List = |
+{
+    ; ºÎÇÕÇÏ´Â ·¹Äڵ尡 Çϳªµµ ¹ß°ßµÇÁö ¾Ê¾Ò½À´Ï´Ù
+    ; »ç¿ëÀÚ¿¡°Ô ÁúÀÇ ¹®ÀÚ¿­À» º¯°æÇÏ°í ´Ù½Ã ½ÃµµÇϵµ·Ï ¿ä±¸ÇÕ´Ï´Ù.
+    MsgBox, 8192, %version%, ÁúÀÇ ¹®ÀÚ¿­ "%CurFilename%"´Â ºÎÇÕÇÏ´Â ·¹Äڵ尡 ¾ø½À´Ï´Ù. ´Ù½Ã ½ÃµµÇϽʽÿÀ.
+    GuiControl, 1:Disable, ButtonOPENDIR
+    GuiControl, 1:Enable, ButtonSCANSTARTMENU
+    Goto EnterQuery
+}
+Else
+{
+    ; ´Ù¸¥ ·¹Äڵ尡 ¼±ÅõǾî ÀÖÁö ¾ÊÀ¸¸é ù ¹ø° ·¹Äڵ带 ¼±ÅÃÇÕ´Ï´Ù
+    Gui, 1:Submit, NoHide
+    GuiControl, 1:Enable, OpenTarget
+    GuiControl, 1:Enable, ButtonOPEN
+    GuiControl, 1:Enable, ButtonOPENDIR
+    GuiControl, 1:Enable, ButtonSCANSTARTMENU
+    GuiControl, Focus, OpenTarget
+    If OpenTarget =
+        GuiControl, 1:Choose, OpenTarget, |1
+}
+
+; REFRESH GUI
+Gui, 1:Show, Center, %version%
+
+Return
+
+;... END FindMatches SUBROUTINE ............................
+
+
+;=== BEGIN SilentFindMatches SUBROUTINE ====================
+
+SilentFindMatches:
+
+Gui, 1:Submit, NoHide
+sfmFilename = %Filename%
+
+; »ç¿ëÀÚÀÇ ÁúÀÇ ¹®ÀÚ¿­¿¡ ±â¹ÝÇÏ¿© ºÎÇÕÇÏ´Â ·¹Äڵ带 ¿©°úÇÕ´Ï´Ù
+List = |
+If sfmFilename <>
+{
+    Loop, read, %dirListing%
+    {
+        Gui, 1:Submit, NoHide
+        tFilename = %Filename%
+        If sfmFilename <> %tFilename%
+        {
+            ; »ç¿ëÀÚ°¡ °Ë»ö ¹®ÀÚ¿­À» º¯°æÇß½À´Ï´Ù. 
+            ; ¿¹Àü ¹®ÀÚ¿­À» »ç¿ëÇÏ¿© °Ë»öÀ» °è¼ÓÇÒ ÀÌÀ¯°¡ ¾ø½À´Ï´Ù. ±×·¡¼­ Á¾·áÇÕ´Ï´Ù.
+            Return
+        }
+        Else
+        {
+            ; APPEND MATCHING RECORDS INTO THE LIST
+            SplitPath, A_LoopReadLine, name, dir, ext, name_no_ext, drive
+            MatchFound = Y
+            Loop, parse, sfmFilename, %A_Space%
+            {
+                IfNotInString, name, %A_LoopField%
+                {
+                    MatchFound = N
+                    Break
+                }
+            }
+            IfEqual, MatchFound, Y
+            {
+                ; ·¹Äڵ带 ¸®½ºÆ®¿¡ Ãß°¡ÇÕ´Ï´Ù
+                List = %List%%A_LoopReadLine%|
+
+                ; ´ÙÀ½ÀÌ ¸¶Áö¸·-½ÇÇà ÇÁ·Î±×·¥¿¡ ºÎÇÕÇÏ¸é ¹Ì¸® ¼±ÅÃÇÕ´Ï´Ù
+                If (A_LoopReadLine = PrevOpenTarget && sfmFilename = PrevKeyPhrase)
+                    List = %List%|
+            }
+        }
+    }
+}
+
+; °Ë»ö °á°ú·Î ¸®½ºÆ®¸¦ °»½ÅÇÕ´Ï´Ù
+GuiControl, 1:, OpenTarget, %List%
+
+If List = |
+{
+    ; ºÎÇÕÇÏ´Â ·¹Äڵ带 ¹ß°ßÇÏÁö ¸øÇÞ½À´Ï´Ù
+    ; ¸®½ºÆ®¹Ú½º¸¦ ºÒ´ÉÀ¸·Î ¸¸µì´Ï´Ù
+    GuiControl, 1:Disable, OpenTarget
+    GuiControl, 1:Disable, ButtonOPENDIR
+}
+Else
+{
+    ; ºÎÇÕÇÏ´Â ·¹Äڵ带 ¹ß°ßÇß½À´Ï´Ù
+    ; ¸®½ºÆ®¹Ú½º¸¦ È°¼ºÈ­ ÇÕ´Ï´Ù
+    GuiControl, 1:Enable, OpenTarget
+    GuiControl, 1:Enable, ButtonOPENDIR
+}
+
+; ±¸À̸¦ °»½ÅÇÕ´Ï´Ù
+Gui, 1:Show, Center, %version%
+
+Return
+
+;... END SilentFindMatches SUBROUTINE ......................
+
+
+;=== BEGIN EnterQuery SUBROUTINE ===========================
+; ±¸À̸¦ °»½ÅÇÏ°í »ç¿ëÀÚ°¡ °Ë»ö ¹®ÀÚ¿­À» ÀÔ·ÂÇϵµ·Ï Çã¿ëÇÕ´Ï´Ù
+EnterQuery:
+GuiControl, Focus, Filename
+GuiControl, 1:Enable, ButtonOPEN
+Gui, 1:Show, Center, %version%
+Return
+;... END EnterQuery SUBROUTINE .............................
+
+
+;=== BEGIN TargetSelection EVENT ===========================
+
+TargetSelection:
+Gui, 1:Submit, NoHide
+
+; ÇÁ·Î±×·¥À» ±âµ¿Çϱâ À§ÇÏ¿© ´õºí Ŭ¸¯À» ŽÁöÇÕ´Ï´Ù
+If A_GuiControlEvent = DoubleClick
+{
+    Gosub ButtonOPEN
+}
+Else
+{
+    ; ¹Ì·¡¿¡ »ç¿ëÇÒ - Àӽà ±¸Á¶¹°
+    If A_GuiControlEvent = Normal
+    {
+        ; Áö±Ý ´çÀåÀº ¾Æ¹« °Íµµ ÇÏÁö ¾Ê½À´Ï´Ù
+    }
+}
+
+Return
+
+;... END TargetSelection EVENT .............................
+
+
+;=== BEGIN ButtonOPEN EVENT ================================
+
+; »ç¿ëÀÚ°¡ 'OPEN' ¹öÆ°À» Ŭ¸¯Çϰųª <ENTER>¸¦ ´­·¶½À´Ï´Ù.
+ButtonOPEN:
+Gui, 1:Submit, NoHide
+
+; Å°º¸µå ÃÊÁ¡ÀÌ ÀÖ´Â °÷À» ¾Ë¾Æ³À´Ï´Ù. ÃÊÁ¡ÀÌ ÅؽºÆ® Çʵ忡
+; ÀÖ´Ù¸é, ÁúÀÇ ¹®ÀÚ¿­À» ½ÇÇàÇØ ºÎÇÕÇÏ´Â °ÍÀ» ã½À´Ï´Ù.
+; ºÐ¸íÈ÷ ¸®½ºÆ® ¹Ú½º ¾È¿¡ ÀÖÀ» °ÍÀÔ´Ï´Ù.
+GuiControlGet, focusControl, 1:Focus
+If focusControl = Edit1
+{
+    GuiControl, Focus, OpenTarget
+    GuiControl, 1:Disable, OpenTarget
+    GuiControl, 1:Disable, ButtonOPENDIR
+    GuiControl, 1:Disable, ButtonSCANSTARTMENU
+    Goto FindMatches
+}
+
+; ¸®½ºÆ®¹Ú½º¿¡ ¾Æ¹« ·¹Äڵ嵵 ¼±ÅõǾî ÀÖÁö ¾Ê½À´Ï´Ù
+If OpenTarget =
+{
+    MsgBox, 8192, %version%, ¼±ÅÃÀ» ¸ÕÀú ÇÑ ÈÄ¿¡ <Enter>¸¦ ´©¸£½Ê½Ã¿À.`nÁ¾·áÇÏ·Á¸é <Esc>¸¦ ´©¸£½Ê½Ã¿À.
+    Goto EnterQuery
+}
+
+; ¼±ÅÃµÈ ·¹Äڵ尡 Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù (ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ ¹ß°ßÇÏÁö ¸øÇÔ)
+IfNotExist, %OpenTarget%
+{
+    MsgBox, 8192, %version%, %OpenTarget%ÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ°ÍÀº ±× µð·ºÅ丮 ij½¬°¡ À¯È¿±â°£ÀÌ Áö³µ´Ù´Â ¶æÀÔ´Ï´Ù. ¾Æ·¡ÀÇ 'Scan Start-Menu' ¹öÆ°À» Ŭ¸¯Çϸé ÀÌÁ¦ ¿©·¯ºÐÀÇ ÃֽŠµð·ºÅ丮 ¸ñ·ÏÀ¸·Î µð·ºÅ丮 ij½¬¸¦ ¾÷µ¥ÀÌÆ®ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+    Goto EnterQuery
+}
+
+; ¼±ÅÃµÈ ·¹Äڵ尡 ÆÄÀÏÀÎÁö ¾Æ´Ï¸é µð·ºÅ丮ÀÎÁö Á¡°ËÇÕ´Ï´Ù
+FileGetAttrib, fileAttrib, %OpenTarget%
+IfInString, fileAttrib, D ; IS DIRECTORY
+{
+    Gosub sOpenDir
+}
+Else If fileAttrib <> ; IS FILE
+{
+    Run, %OpenTarget%
+}
+Else
+{
+    MsgBox %OpenTarget%´Â µð·ºÅ丮µµ ¾Æ´Ï°í ÆÄÀϵµ ¾Æ´Õ´Ï´Ù. ÀÌ·± ÀÏÀº ÀϾ ¼ö ¾ø½À´Ï´Ù. ´õ ÀÌ»ó °Ë»öÀ» ÁøÇàÇÏÁö ¸øÇÕ´Ï´Ù. Á¾·á Áß...
+}
+
+Goto Quit
+
+;... END ButtonOPEN EVENT ..................................
+
+
+;=== BEGIN ButtonOPENDIR EVENT =============================
+
+; »ç¿ëÀÚ°¡ 'OPEN DIRECTORY' ¹öÆ°À» Ŭ¸¯Çß½À´Ï´Ù
+ButtonOPENDIR:
+Gui, 1:Submit, NoHide
+
+; »ç¿ëÀÚ°¡ ·¹Äڵ带 ÀÌ¹Ì ¼±ÅÃÇß´ÂÁö Á¡°ËÇÕ´Ï´Ù
+If OpenTarget =
+{
+    MsgBox, 8192, %version%, ¸ÕÀú ¼±ÅÃÇϽʽÿÀ.
+    Goto EnterQuery
+}
+
+; µð·ºÅ丮¸¦ ¿­±â À§ÇØ ¼­ºê·çƾÀ» ½ÇÇàÇÕ´Ï´Ù
+Gosub sOpenDir
+
+Goto Quit
+
+;... END ButtonOPENDIR EVENT ...............................
+
+
+;=== BEGIN sOpenDir SUBROUTINE =============================
+
+sOpenDir:
+
+; »ç¿ëÀÚ°¡ µð·ºÅ丮-·¹ÄÚµå ´ë½Å¿¡ ÆÄÀÏ-·¹Äڵ带 ¼±ÅÃÇß´Ù¸é,
+; ±× µð·ºÅ丮 °æ·Î¸¦ ÃßÃâÇÕ´Ï´Ù. (ÇÊÀÚ´Â FileGetAttrib ´ë½Å¿¡
+; DriveGetÀ» »ç¿ëÇÕ´Ï´Ù. OpenTargetÀº À¯È¿ÇÏÁö ¾ÊÁö¸¸
+; OpenTargetÀÇ µð·ºÅ丮 °æ·Î´Â À¯¿äÇÑ °æ¿ì¿¡ ´ëóÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.
+DriveGet, status, status, %OpenTarget%
+If status <> Ready ; µð·ºÅ丮°¡ ¾Æ´Ô
+{
+    SplitPath, OpenTarget, name, dir, ext, name_no_ext, drive
+    OpenTarget = %dir%
+}
+
+; µð·ºÅ丮°¡ Á¸ÀçÇÏ´ÂÁö Á¡°ËÇÕ´Ï´Ù
+IfNotExist, %OpenTarget%
+{
+    MsgBox, 8192, %version%, %OpenTarget%ÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ°ÍÀº µð·ºÅ丮 ij½¬°¡ À¯È¿ ±â°£ÀÌ Áö³µ´Ù´Â ¶æÀÔ´Ï´Ù. 'Scan Start-Menu' ¹öÆ°À» ¾Æ·¡¿¡¼­ Ŭ¸¯Çϸé ÀÌÁ¦ ÃֽŠµð·ºÅ丮 ¸®½ºÆ®·Î µð·ºÅ丮 ij½¬¸¦ ¾÷µ¥ÀÌÆ®ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+    Goto EnterQuery
+}
+
+; µð·ºÅ丮¸¦ ¿±´Ï´Ù
+IfExist, %dirExplorer%
+{
+    Run, "%dirExplorer%" "%OpenTarget%", , Max ; OPEN WITH CUSTOMISED FILE EXPLORER
+}
+Else
+{
+    Run, %OpenTarget%, , Max ; ±âº» â ÆÄÀÏ Å½»ö±â¸¦ ¿±´Ï´Ù
+}
+Return
+
+;... END sOpenDir SUBROUTINE ...............................
+
+
+;=== BEGIN tIncrementalSearch EVENT ========================
+; ÀÚµ¿À¸·Î ½Ç½Ã°£ Á¡Áø °Ë»öÀ» ¼öÇàÇÏ¿©
+; ºÎÇÕÇÏ´Â ·¹Äڵ带 ã½À´Ï´Ù.
+; »ç¿ëÀÚ°¡ <ENTER>¸¦ ´©¸£±â¸¦ ±â´Ù¸®Áö ¾Ê½À´Ï´Ù.
+tIncrementalSearch:
+
+Loop
+; »ç¿ëÀÚ°¡ ÁúÀÇ ¹®ÀÚ¿­ ¹Ù²Ù±â¸¦ ¸ØÃâ ¶§±îÁö °Ë»öÀ» ¹Ýº¹ÇÕ´Ï´Ù.
+{
+    Gui, 1:Submit, NoHide
+    CurFilename = %Filename%
+    If NewKeyPhrase <> %CurFilename%
+    {
+        OpenTarget =
+        Gosub SilentFindMatches
+        NewKeyPhrase = %CurFilename%
+        Sleep, 100 ; CPU µ¶Á¡ ±ÝÁö!
+    }
+    Else
+    {
+        ; ÁúÀÇ ¹®ÀÚ¿­ÀÌ ´õ ÀÌ»ó º¯ÇÏÁö ¾Ê½À´Ï´Ù
+        Break
+    }
+}
+
+; »ç¿ëÀÚ°¡ <ENTER>¸¦ ´­·¯¼­ ºÎÇÕÇÏ´Â ·¹Äڵ带 ã½À´Ï´Ù.
+; RUN FindMatches NOW.
+If ResumeFindMatches = TRUE
+{
+    ResumeFindMatches = FALSE
+    Gosub FindMatches
+}
+
+; °è¼Ó º¯È­¸¦ °üÁ¦ÇÕ´Ï´Ù
+SetTimer, tIncrementalSearch, 500
+
+Return
+
+;... END tIncrementalSearch EVENT ..........................
+
+
+;=== BEGIN Quit SUBROUTINE =================================
+
+Quit:
+ButtonEXIT:
+GuiClose:
+GuiEscape:
+
+Gui, 1:Submit, NoHide
+
+; ¸¸¾à º¯°æµÇ¾ú´Ù¸é ±× Å° ´Ü¾î/¹®±¸¸¦ ´ÙÀ½ ½ÇÇàÀ» ´ëºñÇØ ÀúÀåÇÕ´Ï´Ù.
+If TrackKeyPhrase = ON
+{
+    If (PrevKeyPhrase <> Filename || PrevOpenTarget <> OpenTarget)
+    {
+        FileDelete, %keyPhrase%
+        FileAppend, %Filename%`n, %keyPhrase%
+        FileAppend, %OpenTarget%`n, %keyPhrase%
+    }
+}
+
+QuitNoSave:
+ExitApp ; ÀÌ»ó ³¡. Áñ°Å¿î ÇÏ·ç µÇ½Ã±â¸¦!
+
+;... END Quit SUBROUTINE ...................................
+
+
+;************************
+;<--- END OF PROGRAM --->
+;************************
+
+; /* vim: set noexpandtab shiftwidth=4: */
+
+ + diff --git a/src/docs/scripts/TooltipMouseMenu.ahk b/src/docs/scripts/TooltipMouseMenu.ahk new file mode 100644 index 0000000..d5e81e5 --- /dev/null +++ b/src/docs/scripts/TooltipMouseMenu.ahk @@ -0,0 +1,164 @@ +; ToolTip Mouse Menu (requires XP/2k/NT) -- by Rajat +; http://www.autohotkey.com +; This script displays a popup menu in response to briefly holding down +; the middle mouse button. Select a menu item by left-clicking it. +; Cancel the menu by left-clicking outside of it. A recent improvement +; is that the contents of the menu can change depending on which type of +; window is active (Notepad and Word are used as examples here). + +; You can set any title here for the menu: +MenuTitle = -=-=-=-=-=-=-=- + +; This is how long the mouse button must be held to cause the menu to appear: +UMDelay = 20 + +SetFormat, float, 0.0 +SetBatchLines, 10ms +SetTitleMatchMode, 2 +#SingleInstance + + +;___________________________________________ +;_____Menu Definitions______________________ + +; Create / Edit Menu Items here. +; You can't use spaces in keys/values/section names. + +; Don't worry about the order, the menu will be sorted. + +MenuItems = Notepad/Calculator/Section 3/Section 4/Section 5 + + +;___________________________________________ +;______Dynamic menuitems here_______________ + +; Syntax: +; Dyn# = MenuItem|Window title + +Dyn1 = MS Word|- Microsoft Word +Dyn2 = Notepad II|- Notepad + +;___________________________________________ + +Exit + + +;___________________________________________ +;_____Menu Sections_________________________ + +; Create / Edit Menu Sections here. + +Notepad: +Run, Notepad.exe +Return + +Calculator: +Run, Calc +Return + +Section3: +MsgBox, You selected 3 +Return + +Section4: +MsgBox, You selected 4 +Return + +Section5: +MsgBox, You selected 5 +Return + +MSWord: +msgbox, this is a dynamic entry (word) +Return + +NotepadII: +msgbox, this is a dynamic entry (notepad) +Return + + +;___________________________________________ +;_____Hotkey Section________________________ + +~MButton:: +HowLong = 0 +Loop +{ + HowLong ++ + Sleep, 10 + GetKeyState, MButton, MButton, P + IfEqual, MButton, U, Break +} +IfLess, HowLong, %UMDelay%, Return + + +;prepares dynamic menu +DynMenu = +Loop +{ + IfEqual, Dyn%a_index%,, Break + + StringGetPos, ppos, dyn%a_index%, | + StringLeft, item, dyn%a_index%, %ppos% + ppos += 2 + StringMid, win, dyn%a_index%, %ppos%, 1000 + + IfWinActive, %win%, + DynMenu = %DynMenu%/%item% +} + + +;Joins sorted main menu and dynamic menu +Sort, MenuItems, D/ +TempMenu = %MenuItems%%DynMenu% + + +;clears earlier entries +Loop +{ + IfEqual, MenuItem%a_index%,, Break + MenuItem%a_index% = +} + +;creates new entries +Loop, Parse, TempMenu, / +{ + MenuItem%a_index% = %a_loopfield% +} + +;creates the menu +Menu = %MenuTitle% +Loop +{ + IfEqual, MenuItem%a_index%,, Break + numItems ++ + StringTrimLeft, MenuText, MenuItem%a_index%, 0 + Menu = %Menu%`n%MenuText% +} + +MouseGetPos, mX, mY +HotKey, ~LButton, MenuClick +HotKey, ~LButton, On +ToolTip, %Menu%, %mX%, %mY% +WinActivate, %MenuTitle% +Return + + +MenuClick: +HotKey, ~LButton, Off +IfWinNotActive, %MenuTitle% +{ + ToolTip + Return +} + +MouseGetPos, mX, mY +ToolTip +mY -= 3 ;space after which first line starts +mY /= 13 ;space taken by each line +IfLess, mY, 1, Return +IfGreater, mY, %numItems%, Return +StringTrimLeft, TargetSection, MenuItem%mY%, 0 +StringReplace, TargetSection, TargetSection, %a_space%,, A +Gosub, %TargetSection% +Return diff --git a/src/docs/scripts/TooltipMouseMenu.htm b/src/docs/scripts/TooltipMouseMenu.htm new file mode 100644 index 0000000..06441df --- /dev/null +++ b/src/docs/scripts/TooltipMouseMenu.htm @@ -0,0 +1,176 @@ + + +ToolTip Mouse Menu (requires XP/2k/NT) -- by Rajat + + + + + + + +

ÅøÆÁ ¸¶¿ì½º ¸Þ´º (XP/2k/NT ¿ä±¸) -- by Rajat

+ +

+ÀÌ ½ºÅ©¸³Æ®´Â °¡¿îµ¥ ¹öÆ°À» Àá±ñ ´©¸£´Âµ¥ ÀÀ´äÇÏ¿© Æ˾÷ ¸Þ´º¸¦ º¸¿©ÁÝ´Ï´Ù. ¿ÞŬ¸¯ÇÏ¿© ¸Þ´º Ç׸ñÀ» ¼±ÅÃÇÕ´Ï´Ù. ¹Ù±ù¿¡¼­ ÁÂŬ¸¯ÇÏ¸é ¸Þ´º¸¦ Ãë¼ÒÇÕ´Ï´Ù. ÃÖ±Ù¿¡ ¾î´À À¯ÇüÀÇ Ã¢ÀÌ È°¼ºÈ­µÇ¾î Àִ°¡¿¡ µû¶ó ¸Þ´ºÀÇ ³»¿ëÀÌ º¯Çϵµ·Ï °³¼±µÇ¾ú½À´Ï´Ù. (¿©±â¿¡¼­´Â Notepad¿Í Word¸¦ ¿¹Á¦·Î »ç¿ëÇÕ´Ï´Ù). +

+

ÀÌ ½ºÅ©¸³Æ® ³»·Á ¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

+ +
; ¸Þ´º¿¡ ´ëÇÏ¿© ¿©±â¿¡¼­ Á¦¸ñÀ» ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù:
+MenuTitle = -=-=-=-=-=-=-=-
+
+; ´ÙÀ½Àº ¾ó¸¶³ª ¿À·¡ ¹öÆ°À» ´­·¯¾ß ¸Þ´º¸¦ º¸¿©ÁÙÁö °áÁ¤ÇÕ´Ï´Ù:
+UMDelay = 20
+
+SetFormat, float, 0.0
+SetBatchLines, 10ms 
+SetTitleMatchMode, 2
+#SingleInstance
+
+
+;___________________________________________
+;_____¸Þ´º Á¤ÀÇ______________________
+
+; ¿©±â¿¡¼­ ¸Þ´º Ç׸ñÀ» ¸¸µé°í ¼öÁ¤ÇÕ´Ï´Ù.
+; keys/values/section À̸§¿¡ ½ºÆäÀ̽º¸¦ »ç¿ëÇÏ¸é ¾È µË´Ï´Ù.
+
+; ¼ø¼­´Â ½Å°æ¾²Áö ¾Ê¾Æµµ µË´Ï´Ù. ¸Þ´º´Â Á¤·ÄµË´Ï´Ù.
+
+MenuItems = Notepad/Calculator/Section 3/Section 4/Section 5
+
+
+;___________________________________________
+;______µ¿ÀûÀÎ ¸Þ´º Ç׸ñ Á¤ÀÇ_______________
+
+; ±¸¹®:
+;     Dyn# = ¸Þ´º Ç׸ñ|â Á¦¸ñ
+
+Dyn1 = MS Word|- Microsoft Word
+Dyn2 = Notepad II|- Notepad
+
+;___________________________________________
+
+Exit
+
+
+;___________________________________________
+;_____¸Þ´º ¼½¼Ç_________________________
+
+; ¿©±â¿¡ ¸Þ´º ¼½¼ÇÀ» »ý¼ºÇÏ°í ÆíÁýÇÕ´Ï´Ù.
+
+Notepad:
+Run, Notepad.exe
+Return
+
+Calculator:
+Run, Calc
+Return
+
+Section3:
+MsgBox, You selected 3
+Return
+
+Section4:
+MsgBox, You selected 4
+Return
+
+Section5:
+MsgBox, You selected 5
+Return
+
+MSWord:
+msgbox, this is a dynamic entry (word)
+Return
+
+NotepadII:
+msgbox, this is a dynamic entry (notepad)
+Return
+
+
+;___________________________________________
+;_____ÇÖÅ° ¼½¼Ç________________________
+
+~MButton::
+HowLong = 0
+Loop
+{
+    HowLong ++
+    Sleep, 10
+    GetKeyState, MButton, MButton, P
+    IfEqual, MButton, U, Break
+}
+IfLess, HowLong, %UMDelay%, Return
+
+
+; µ¿Àû ¸Þ´º¸¦ ÁغñÇÕ´Ï´Ù
+DynMenu =
+Loop
+{
+    IfEqual, Dyn%a_index%,, Break
+
+    StringGetPos, ppos, dyn%a_index%, |
+    StringLeft, item, dyn%a_index%, %ppos%
+    ppos += 2
+    StringMid, win, dyn%a_index%, %ppos%, 1000
+
+    IfWinActive, %win%,
+        DynMenu = %DynMenu%/%item%
+}
+
+
+; Á¤·ÄµÈ ¸ÞÀÎ ¸Þ´º¿Í µ¿Àû ¸Þ´º¸¦ °áÇÕÇÕ´Ï´Ù
+Sort, MenuItems, D/
+TempMenu = %MenuItems%%DynMenu%
+
+
+; ÀÌÀü ¿£Æ®¸®µéÀ» Áö¿ó´Ï´Ù
+Loop
+{
+    IfEqual, MenuItem%a_index%,, Break
+    MenuItem%a_index% =
+}
+
+; »õ ¿£Æ®¸®µéÀ» »ý¼ºÇÕ´Ï´Ù
+Loop, Parse, TempMenu, /
+{
+    MenuItem%a_index% = %a_loopfield%
+}
+
+; ¸Þ´º¸¦ »ý¼ºÇÕ´Ï´Ù
+Menu = %MenuTitle%
+Loop
+{
+    IfEqual, MenuItem%a_index%,, Break
+    numItems ++
+    StringTrimLeft, MenuText, MenuItem%a_index%, 0
+    Menu = %Menu%`n%MenuText%
+}
+
+MouseGetPos, mX, mY
+HotKey, ~LButton, MenuClick
+HotKey, ~LButton, On
+ToolTip, %Menu%, %mX%, %mY%
+WinActivate, %MenuTitle%
+Return
+
+
+MenuClick:
+HotKey, ~LButton, Off
+IfWinNotActive, %MenuTitle%
+{
+    ToolTip
+    Return
+}
+
+MouseGetPos, mX, mY
+ToolTip
+mY -= 3        ; ù ÁÙÀÌ ½ÃÀÛÇÏ¸é µÚ¿¡ ½ºÆäÀ̽º
+mY /= 13    ; °¢ ÁÙ¸¶´Ù ½ºÆäÀ̽º
+IfLess, mY, 1, Return
+IfGreater, mY, %numItems%, Return
+StringTrimLeft, TargetSection, MenuItem%mY%, 0
+StringReplace, TargetSection, TargetSection, %a_space%,, A
+Gosub, %TargetSection%
+Return
+
+ + diff --git a/src/docs/scripts/VolumeOSD.ahk b/src/docs/scripts/VolumeOSD.ahk new file mode 100644 index 0000000..20935a6 --- /dev/null +++ b/src/docs/scripts/VolumeOSD.ahk @@ -0,0 +1,127 @@ +; Volume On-Screen-Display (OSD) -- by Rajat +; http://www.autohotkey.com +; This script assigns hotkeys of your choice to raise and lower the +; master and/or wave volume. Both volumes are displayed as different +; color bar graphs. + +;_________________________________________________ +;_______User Settings_____________________________ + +; Make customisation only in this area or hotkey area only!! + +; The percentage by which to raise or lower the volume each time: +vol_Step = 4 + +; How long to display the volume level bar graphs: +vol_DisplayTime = 2000 + +; Master Volume Bar color (see the help file to use more +; precise shades): +vol_CBM = Red + +; Wave Volume Bar color +vol_CBW = Blue + +; Background color +vol_CW = Silver + +; Bar's screen position. Use -1 to center the bar in that dimension: +vol_PosX = -1 +vol_PosY = -1 +vol_Width = 150 ; width of bar +vol_Thick = 12 ; thickness of bar + +; If your keyboard has multimedia buttons for Volume, you can +; try changing the below hotkeys to use them by specifying +; Volume_Up, ^Volume_Up, Volume_Down, and ^Volume_Down: +HotKey, #Up, vol_MasterUp ; Win+UpArrow +HotKey, #Down, vol_MasterDown +HotKey, +#Up, vol_WaveUp ; Shift+Win+UpArrow +HotKey, +#Down, vol_WaveDown + + +;___________________________________________ +;_____Auto Execute Section__________________ + +; DON'T CHANGE ANYTHING HERE (unless you know what you're doing). + +vol_BarOptionsMaster = 1:B ZH%vol_Thick% ZX0 ZY0 W%vol_Width% CB%vol_CBM% CW%vol_CW% +vol_BarOptionsWave = 2:B ZH%vol_Thick% ZX0 ZY0 W%vol_Width% CB%vol_CBW% CW%vol_CW% + +; If the X position has been specified, add it to the options. +; Otherwise, omit it to center the bar horizontally: +if vol_PosX >= 0 +{ + vol_BarOptionsMaster = %vol_BarOptionsMaster% X%vol_PosX% + vol_BarOptionsWave = %vol_BarOptionsWave% X%vol_PosX% +} + +; If the Y position has been specified, add it to the options. +; Otherwise, omit it to have it calculated later: +if vol_PosY >= 0 +{ + vol_BarOptionsMaster = %vol_BarOptionsMaster% Y%vol_PosY% + vol_PosY_wave = %vol_PosY% + vol_PosY_wave += %vol_Thick% + vol_BarOptionsWave = %vol_BarOptionsWave% Y%vol_PosY_wave% +} + +#SingleInstance +SetBatchLines, 10ms +Return + + +;___________________________________________ + +vol_WaveUp: +SoundSet, +%vol_Step%, Wave +Gosub, vol_ShowBars +return + +vol_WaveDown: +SoundSet, -%vol_Step%, Wave +Gosub, vol_ShowBars +return + +vol_MasterUp: +SoundSet, +%vol_Step% +Gosub, vol_ShowBars +return + +vol_MasterDown: +SoundSet, -%vol_Step% +Gosub, vol_ShowBars +return + +vol_ShowBars: +; To prevent the "flashing" effect, only create the bar window if it +; doesn't already exist: +IfWinNotExist, vol_Wave + Progress, %vol_BarOptionsWave%, , , vol_Wave +IfWinNotExist, vol_Master +{ + ; Calculate position here in case screen resolution changes while + ; the script is running: + if vol_PosY < 0 + { + ; Create the Wave bar just above the Master bar: + WinGetPos, , vol_Wave_Posy, , , vol_Wave + vol_Wave_Posy -= %vol_Thick% + Progress, %vol_BarOptionsMaster% Y%vol_Wave_Posy%, , , vol_Master + } + else + Progress, %vol_BarOptionsMaster%, , , vol_Master +} +; Get both volumes in case the user or an external program changed them: +SoundGet, vol_Master, Master +SoundGet, vol_Wave, Wave +Progress, 1:%vol_Master% +Progress, 2:%vol_Wave% +SetTimer, vol_BarOff, %vol_DisplayTime% +return + +vol_BarOff: +SetTimer, vol_BarOff, off +Progress, 1:Off +Progress, 2:Off +return diff --git a/src/docs/scripts/VolumeOSD.htm b/src/docs/scripts/VolumeOSD.htm new file mode 100644 index 0000000..502b196 --- /dev/null +++ b/src/docs/scripts/VolumeOSD.htm @@ -0,0 +1,140 @@ + + +Volume On-Screen-Display (OSD) -- by Rajat + + + + + + + +

È­¸é À§ µð½ºÇ÷¹ÀÌ¿¡¼­ º¼·ý Á¶ÀýÇÏ´Â ¹ý (OSD) -- by Rajat

+ +

ÀÌ ½ºÅ©¸³Æ®´Â ¿©·¯ºÐÀÌ ¼±ÅÃÇÑ ÇÖÅ°¸¦ ¸¶½ºÅÍ ¶Ç´Â ¿þÀÌºê º¼·ýÀ» ³ôÀ̰ųª ³»¸®´Â µ¥ ÇÒ´çÇÕ´Ï´Ù. µÎ º¼·ý ¸ðµÎ ´Ù¸¥ »öÀÇ ¹Ù ±×·¡ÇÁ·Î º¸¿©ÁÝ´Ï´Ù. +

+

ÀÌ ½ºÅ©¸³Æ® ³»·Á ¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

+ +
;_________________________________________________ 
+;_______»ç¿ëÀÚ ¼³Á¤_____________________________
+
+; Àç´ÜÀº ÀÌ ±¸¿ª°ú ÇÖÅ° ±¸¿ª¿¡¼­¸¸ Çã¿ëÇÕ´Ï´Ù!!
+
+; ¸Å¹ø º¼·ýÀ» ¿Ã¸®°Å³ª ³»¸± ¹éºÐ·ü:
+vol_Step = 4
+
+; ¾ó¸¶³ª ¿À·¡ º¼·ý ·¹º§ ¹Ù ±×·¡ÇÁ¸¦ º¸¿©ÁÙ °ÍÀΰ¡:
+vol_DisplayTime = 2000
+
+; ¸¶½ºÅÍ º¼·ý ¹Ù Ä÷¯
+; (´õ Á¤¹ÐÇÑ ½¦À̵带 »ç¿ëÇÏ·Á¸é µµ¿ò¸» ÂüÁ¶):
+vol_CBM = Red
+
+; ¿þÀÌºê º¼·ý ¹Ù Ä÷¯
+vol_CBW = Blue
+
+; ¹è°æ »ö
+vol_CW = Silver
+
+; ¹ÙÀÇ È­¸é ÁÂÇ¥.  -1À» »ç¿ëÇϸé ÇØ´ç Â÷¿øÀÇ °¡¿îµ¥¿¡ Á¤·Ä:
+vol_PosX = -1
+vol_PosY = -1
+vol_Width = 150  ; ¹ÙÀÇ ³Êºñ
+vol_Thick = 12   ; ¹ÙÀÇ µÎ²²
+
+; Å°º¸µå¿¡ º¼·ý¿¡ ´ëÇÑ ¸ÖƼ¹Ìµð¾î ¹öÆ°ÀÌ ÀÖ´Ù¸é
+; ¾Æ·¡ÀÇ ÇÖÅ°¿¡ ±× ¹öÆ°µéÀ» »ç¿ëÇϵµ·Ï ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡¿Í °°ÀÌ ÁöÁ¤ÇϽʽÿÀ.
+; Volume_Up, ^Volume_Up, Volume_Down, ±×¸®°í ^Volume_Down:
+HotKey, #Up, vol_MasterUp      ; Win+UpArrow
+HotKey, #Down, vol_MasterDown
+HotKey, +#Up, vol_WaveUp       ; Shift+Win+UpArrow
+HotKey, +#Down, vol_WaveDown
+
+
+;___________________________________________ 
+;_____ÀÚµ¿ ½ÇÇà ¼½¼Ç__________________
+
+; ¿©±â´Â ¾Æ¹« °Íµµ ¹Ù²ÙÁö ¸¶½Ê½Ã¿À (´Ü, ¹«¾ùÀ» ÇÏ°í ÀÖ´ÂÁö Àß ¾Æ´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù).
+
+vol_BarOptionsMaster = 1:B ZH%vol_Thick% ZX0 ZY0 W%vol_Width% CB%vol_CBM% CW%vol_CW%
+vol_BarOptionsWave   = 2:B ZH%vol_Thick% ZX0 ZY0 W%vol_Width% CB%vol_CBW% CW%vol_CW%
+
+; X À§Ä¡°¡ ÁöÁ¤µÇ¾î ÀÖ´Ù¸é, ±×°ÍÀ» ¿É¼Ê¿¡ Ãß°¡ÇÕ´Ï´Ù.
+; ±×·¸Áö ¾ÊÀ¸¸é, »ý·«ÇØ ¹Ù¸¦ ¼öÆòÀ¸·Î °¡¿îµ¥¿¡ ¹èÄ¡ÇÒ ¼ö ÀÖ½À´Ï´Ù:
+if vol_PosX >= 0
+{
+    vol_BarOptionsMaster = %vol_BarOptionsMaster% X%vol_PosX%
+    vol_BarOptionsWave   = %vol_BarOptionsWave% X%vol_PosX%
+}
+
+; Y À§Ä¡°¡ ÁöÁ¤µÇ¾î ÀÖ´Ù¸é, ±×°ÍÀ» ¿É¼Ç¿¡ Ãß°¡ÇÕ´Ï´Ù.
+; ±×·¸Áö ¾ÊÀ¸¸é, »ý·«ÇØ ³ªÁß¿¡ °è»êÇÒ ¼ö ÀÖ½À´Ï´Ù:
+if vol_PosY >= 0
+{
+    vol_BarOptionsMaster = %vol_BarOptionsMaster% Y%vol_PosY%
+    vol_PosY_wave = %vol_PosY%
+    vol_PosY_wave += %vol_Thick%
+    vol_BarOptionsWave = %vol_BarOptionsWave% Y%vol_PosY_wave%
+}
+
+#SingleInstance
+SetBatchLines, 10ms
+Return
+
+
+;___________________________________________
+
+vol_WaveUp:
+SoundSet, +%vol_Step%, Wave
+Gosub, vol_ShowBars
+return
+
+vol_WaveDown:
+SoundSet, -%vol_Step%, Wave
+Gosub, vol_ShowBars
+return
+
+vol_MasterUp:
+SoundSet, +%vol_Step%
+Gosub, vol_ShowBars
+return
+
+vol_MasterDown:
+SoundSet, -%vol_Step%
+Gosub, vol_ShowBars
+return
+
+vol_ShowBars:
+; "¹ø½ÀÓ" È¿°ú¸¦ ¹æÁöÇÏ·Á¸é, ¾ÆÁ÷ Á¸ÀçÇÏÁö ¾ÊÀº °æ¿ì,
+; ¹Ù ⸸ »ý¼ºÇϽʽÿÀ:
+IfWinNotExist, vol_Wave
+    Progress, %vol_BarOptionsWave%, , , vol_Wave
+IfWinNotExist, vol_Master
+{
+    ; ½ºÅ©¸³Æ®°¡ ½ÇÇà ÁßÀÎ µ¿¾È¿¡ È­¸é Çػ󵵰¡ ¹Ù²î´Â °æ¿ì,
+    ; ¿©±â¿¡¼­ À§Ä¡¸¦ °è»êÇÕ´Ï´Ù:
+    if vol_PosY < 0
+    {
+        ; ¿þÀÌºê ¹Ù¸¦ ¸¶½ºÅÍ ¹Ù ¹Ù·Î À§¿¡ »ý¼ºÇÕ´Ï´Ù:
+        WinGetPos, , vol_Wave_Posy, , , vol_Wave
+        vol_Wave_Posy -= %vol_Thick%
+        Progress, %vol_BarOptionsMaster% Y%vol_Wave_Posy%, , , vol_Master
+    }
+    else
+        Progress, %vol_BarOptionsMaster%, , , vol_Master
+}
+; »ç¿ëÀÚ ¶Ç´Â ¿ÜºÎ ÇÁ·Î±×·¥ÀÌ º¼·ýÀ» ¹Ù²Ù¾úÀ» °æ¿ì, º¼·ýÀ» µÑ ´Ù ¾ò½À´Ï´Ù:
+SoundGet, vol_Master, Master
+SoundGet, vol_Wave, Wave
+Progress, 1:%vol_Master%
+Progress, 2:%vol_Wave%
+SetTimer, vol_BarOff, %vol_DisplayTime%
+return
+
+vol_BarOff:
+SetTimer, vol_BarOff, off
+Progress, 1:Off
+Progress, 2:Off
+return
+
+ + diff --git a/src/docs/scripts/WinLIRC.ahk b/src/docs/scripts/WinLIRC.ahk new file mode 100644 index 0000000..3747c40 --- /dev/null +++ b/src/docs/scripts/WinLIRC.ahk @@ -0,0 +1,280 @@ +; WinLIRC Client +; http://www.autohotkey.com +; This script receives notifications from WinLIRC whenever you press +; a button on your remote control. It can be used to automate Winamp, +; Windows Media Player, etc. It's easy to configure. For example, if +; WinLIRC recognizes a button named "VolUp" on your remote control, +; create a label named VolUp and beneath it use the command +; "SoundSet +5" to increase the soundcard's volume by 5%. + +; Here are the steps to use this script: +; 1) Configure WinLIRC to recognize your remote control and its buttons. +; WinLIRC is at http://winlirc.sourceforge.net +; 2) Edit the WinLIRC path, address, and port in the CONFIG section below. +; 3) Launch this script. It will start the WinLIRC server if needed. +; 4) Press some buttons on your remote control. A small window will +; appear showing the name of each button as you press it. +; 5) Configure your buttons to send keystrokes and mouse clicks to +; windows such as Winamp, Media Player, etc. See the examples below. + +; This script requires AutoHotkey 1.0.38.04 or later. +; HISTORY OF CHANGES +; March 2, 2007: +; - Improved reliability via "Critical" in ReceiveData(). +; October 5, 2005: +; - Eliminated Winsock warning dialog "10054" upon system shutdown/logoff. +; - Added option "DelayBetweenButtonRepeats" to throttle the repeat speed. + +; ------------------------------------------------- +; CONFIGURATION SECTION: Set your preferences here. +; ------------------------------------------------- +; Some remote controls repeat the signal rapidly while you're holding down +; a button. This makes it difficult to get the remote to send only a single +; signal. The following setting solves this by ignoring repeated signals +; until the specified time has passed. 200 is often a good setting. Set it +; to 0 to disable this feature. +DelayBetweenButtonRepeats = 200 + +; Specify the path to WinLIRC, such as C:\WinLIRC\winlirc.exe +WinLIRC_Path = %A_ProgramFiles%\WinLIRC\winlirc.exe + +; Specify WinLIRC's address and port. The most common are 127.0.0.1 (localhost) and 8765. +WinLIRC_Address = 127.0.0.1 +WinLIRC_Port = 8765 + +; Do not change the following two lines. Skip them and continue below. +Gosub WinLIRC_Init +return + +; -------------------------------------------- +; ASSIGN ACTIONS TO THE BUTTONS ON YOUR REMOTE +; -------------------------------------------- +; Configure your remote control's buttons below. Use WinLIRC's names +; for the buttons, which can be seen in your WinLIRC config file +; (.cf file) -- or you can press any button on your remote and the +; script will briefly display the button's name in a small window. +; +; Below are some examples. Feel free to revise or delete them to suit +; your preferences. + +VolUp: +SoundSet +5 ; Increase master volume by 5%. On Vista, replace this line with: Send {Volume_Up} +return + +VolDown: +SoundSet -5 ; Reduce master volume by 5%. On Vista, replace this line with: Send {Volume_Down} +return + +ChUp: +WinGetClass, ActiveClass, A +if ActiveClass in Winamp v1.x,Winamp PE ; Winamp is active. + Send {right} ; Send a right-arrow keystroke. +else ; Some other type of window is active. + Send {WheelUp} ; Rotate the mouse wheel up by one notch. +return + +ChDown: +WinGetClass, ActiveClass, A +if ActiveClass in Winamp v1.x,Winamp PE ; Winamp is active. + Send {left} ; Send a left-arrow keystroke. +else ; Some other type of window is active. + Send {WheelDown} ; Rotate the mouse wheel down by one notch. +return + +Menu: +IfWinExist, Untitled - Notepad +{ + WinActivate +} +else +{ + Run, Notepad + WinWait, Untitled - Notepad + WinActivate +} +Send Here are some keystrokes sent to Notepad.{Enter} +return + +; The examples above give a feel for how to accomplish common tasks. +; To learn the basics of AutoHotkey, check out the Quick-start Tutorial +; at http://www.autohotkey.com/docs/Tutorial.htm + +; ---------------------------- +; END OF CONFIGURATION SECTION +; ---------------------------- +; Do not make changes below this point unless you want to change the core +; functionality of the script. + +WinLIRC_Init: +OnExit, ExitSub ; For connection cleanup purposes. + +; Launch WinLIRC if it isn't already running: +Process, Exist, winlirc.exe +if not ErrorLevel ; No PID for WinLIRC was found. +{ + IfNotExist, %WinLIRC_Path% + { + MsgBox The file "%WinLIRC_Path%" does not exist. Please edit this script to specify its location. + ExitApp + } + Run %WinLIRC_Path% + Sleep 200 ; Give WinLIRC a little time to initialize (probably never needed, just for peace of mind). +} + +; Connect to WinLIRC (or any type of server for that matter): +socket := ConnectToAddress(WinLIRC_Address, WinLIRC_Port) +if socket = -1 ; Connection failed (it already displayed the reason). + ExitApp + +; Find this script's main window: +Process, Exist ; This sets ErrorLevel to this script's PID (it's done this way to support compiled scripts). +DetectHiddenWindows On +ScriptMainWindowId := WinExist("ahk_class AutoHotkey ahk_pid " . ErrorLevel) +DetectHiddenWindows Off + +; When the OS notifies the script that there is incoming data waiting to be received, +; the following causes a function to be launched to read the data: +NotificationMsg = 0x5555 ; An arbitrary message number, but should be greater than 0x1000. +OnMessage(NotificationMsg, "ReceiveData") + +; Set up the connection to notify this script via message whenever new data has arrived. +; This avoids the need to poll the connection and thus cuts down on resource usage. +FD_READ = 1 ; Received when data is available to be read. +FD_CLOSE = 32 ; Received when connection has been closed. +if DllCall("Ws2_32\WSAAsyncSelect", "UInt", socket, "UInt", ScriptMainWindowId, "UInt", NotificationMsg, "Int", FD_READ|FD_CLOSE) +{ + MsgBox % "WSAAsyncSelect() indicated Winsock error " . DllCall("Ws2_32\WSAGetLastError") + ExitApp +} +return + + + +ConnectToAddress(IPAddress, Port) +; This can connect to most types of TCP servers, not just WinLIRC. +; Returns -1 (INVALID_SOCKET) upon failure or the socket ID upon success. +{ + VarSetCapacity(wsaData, 400) + result := DllCall("Ws2_32\WSAStartup", "UShort", 0x0002, "UInt", &wsaData) ; Request Winsock 2.0 (0x0002) + ; Since WSAStartup() will likely be the first Winsock function called by this script, + ; check ErrorLevel to see if the OS has Winsock 2.0 available: + if ErrorLevel + { + MsgBox WSAStartup() could not be called due to error %ErrorLevel%. Winsock 2.0 or higher is required. + return -1 + } + if result ; Non-zero, which means it failed (most Winsock functions return 0 upon success). + { + MsgBox % "WSAStartup() indicated Winsock error " . DllCall("Ws2_32\WSAGetLastError") + return -1 + } + + AF_INET = 2 + SOCK_STREAM = 1 + IPPROTO_TCP = 6 + socket := DllCall("Ws2_32\socket", "Int", AF_INET, "Int", SOCK_STREAM, "Int", IPPROTO_TCP) + if socket = -1 + { + MsgBox % "socket() indicated Winsock error " . DllCall("Ws2_32\WSAGetLastError") + return -1 + } + + ; Prepare for connection: + SizeOfSocketAddress = 16 + VarSetCapacity(SocketAddress, SizeOfSocketAddress) + InsertInteger(2, SocketAddress, 0, AF_INET) ; sin_family + InsertInteger(DllCall("Ws2_32\htons", "UShort", Port), SocketAddress, 2, 2) ; sin_port + InsertInteger(DllCall("Ws2_32\inet_addr", "Str", IPAddress), SocketAddress, 4, 4) ; sin_addr.s_addr + + ; Attempt connection: + if DllCall("Ws2_32\connect", "UInt", socket, "UInt", &SocketAddress, "Int", SizeOfSocketAddress) + { + MsgBox % "connect() indicated Winsock error " . DllCall("Ws2_32\WSAGetLastError") . ". Is WinLIRC running?" + return -1 + } + return socket ; Indicate success by returning a valid socket ID rather than -1. +} + + + +ReceiveData(wParam, lParam) +; By means of OnMessage(), this function has been set up to be called automatically whenever new data +; arrives on the connection. It reads the data from WinLIRC and takes appropriate action depending +; on the contents. +{ + Critical ; Prevents another of the same message from being discarded due to thread-already-running. + socket := wParam + ReceivedDataSize = 4096 ; Large in case a lot of data gets buffered due to delay in processing previous data. + + VarSetCapacity(ReceivedData, ReceivedDataSize, 0) ; 0 for last param terminates string for use with recv(). + ReceivedDataLength := DllCall("Ws2_32\recv", "UInt", socket, "Str", ReceivedData, "Int", ReceivedDataSize, "Int", 0) + if ReceivedDataLength = 0 ; The connection was gracefully closed, probably due to exiting WinLIRC. + ExitApp ; The OnExit routine will call WSACleanup() for us. + if ReceivedDataLength = -1 + { + WinsockError := DllCall("Ws2_32\WSAGetLastError") + if WinsockError = 10035 ; WSAEWOULDBLOCK, which means "no more data to be read". + return 1 + if WinsockError <> 10054 ; WSAECONNRESET, which happens when WinLIRC closes via system shutdown/logoff. + ; Since it's an unexpected error, report it. Also exit to avoid infinite loop. + MsgBox % "recv() indicated Winsock error " . WinsockError + ExitApp ; The OnExit routine will call WSACleanup() for us. + } + ; Otherwise, process the data received. Testing shows that it's possible to get more than one line + ; at a time (even for explicitly-sent IR signals), which the following method handles properly. + ; Data received from WinLIRC looks like the following example (see the WinLIRC docs for details): + ; 0000000000eab154 00 NameOfButton NameOfRemote + Loop, parse, ReceivedData, `n, `r + { + if A_LoopField in ,BEGIN,SIGHUP,END ; Ignore blank lines and WinLIRC's start-up messages. + continue + ButtonName = ; Init to blank in case there are less than 3 fields found below. + Loop, parse, A_LoopField, %A_Space% ; Extract the button name, which is the third field. + if A_Index = 3 + ButtonName := A_LoopField + global DelayBetweenButtonRepeats ; Declare globals to make them available to this function. + static PrevButtonName, PrevButtonTime, RepeatCount ; These variables remember their values between calls. + if (ButtonName != PrevButtonName || A_TickCount - PrevButtonTime > DelayBetweenButtonRepeats) + { + if IsLabel(ButtonName) ; There is a subroutine associated with this button. + Gosub %ButtonName% ; Launch the subroutine. + else ; Since there is no associated subroutine, briefly display which button was pressed. + { + if (ButtonName == PrevButtonName) + RepeatCount += 1 + else + RepeatCount = 1 + SplashTextOn, 150, 20, Button from WinLIRC, %ButtonName% (%RepeatCount%) + SetTimer, SplashOff, 3000 ; This allows more signals to be processed while displaying the window. + } + PrevButtonName := ButtonName + PrevButtonTime := A_TickCount + } + } + return 1 ; Tell the program that no further processing of this message is needed. +} + + + +SplashOff: +SplashTextOff +SetTimer, SplashOff, Off +return + + + +InsertInteger(pInteger, ByRef pDest, pOffset = 0, pSize = 4) +; The caller must ensure that pDest has sufficient capacity. To preserve any existing contents in pDest, +; only pSize number of bytes starting at pOffset are altered in it. +{ + Loop %pSize% ; Copy each byte in the integer into the structure as raw binary data. + DllCall("RtlFillMemory", "UInt", &pDest + pOffset + A_Index-1, "UInt", 1, "UChar", pInteger >> 8*(A_Index-1) & 0xFF) +} + + + +ExitSub: ; This subroutine is called automatically when the script exits for any reason. +; MSDN: "Any sockets open when WSACleanup is called are reset and automatically +; deallocated as if closesocket was called." +DllCall("Ws2_32\WSACleanup") +ExitApp diff --git a/src/docs/scripts/WinLIRC.htm b/src/docs/scripts/WinLIRC.htm new file mode 100644 index 0000000..f3dd29c --- /dev/null +++ b/src/docs/scripts/WinLIRC.htm @@ -0,0 +1,292 @@ + + +WinLIRC Client + + + + + + + + +

WinLIRC Ŭ¶óÀ̾ðÆ®

+ +

+ÀÌ ½ºÅ©¸³Æ®´Â ¸®¸ðÆ® ÄÜÆ®·Ñ¿¡ ¹öÆ°À» ´©¸¦ ¶§¸¶´Ù WinLIRC ·ÎºÎÅÍ °íÁö¸¦ ¹Þ½À´Ï´Ù. Winamp, Windows Media Player, µîµîÀ» ÀÚµ¿È­ ÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ½±°Ô ȯ°æÀ» ±¸¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î WinLIRC°¡ ¸®¸ðÆ® ÄÜÆ®·Ñ¿¡¼­ À̸§ÀÌ "VolUp"ÀÎ ¹öÆ°À» ÀÎÁöÇϸé, À̸§ÀÌ VolUpÀÎ ¶óº§À» »ý¼ºÇÏ°í ±× ¾Æ·¡¿¡ ¸í·É¾î SoundSet +5¸¦ »ç¿ëÇÏ¿© »ç¿îµåÄ«µåÀÇ º¼·ýÀ» 5%¸¸Å­ ³ôÀÔ´Ï´Ù. +

+

ÀÌ ½ºÅ©¸³Æ® ³»·Á¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

+ +
; ´ÙÀ½Àº ÀÌ ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù:
+; 1) ¸®¸ðÆ® ÄÜÆ®·Ñ°ú ¹öÆ°À» ÀνÄÇϵµ·Ï WinLIRC¸¦ ±¸¼ºÇÕ´Ï´Ù.
+;    WinLIRC´Â ´ÙÀ½¿¡ ÀÖ½À´Ï´Ù: http://winlirc.sourceforge.net
+; 2) ¾Æ·¡ÀÇ CONFIG ¼½¼Ç¿¡¼­ WinLIRC °æ·Î, ÁÖ¼Ò, ±×¸®°í Æ÷Æ® ¹øÈ£¸¦ ÆíÁýÇÕ´Ï´Ù.
+; 3) ÀÌ ½ºÅ©¸³Æ®¸¦ ±âµ¿½Ãŵ´Ï´Ù. ÇÊ¿äÇϸé WinLIRC ¼­¹ö°¡ ÀÚµ¿À¸·Î ±âµ¿µË´Ï´Ù.
+; 4) ¸®¸ðÆ® ÄÜÆ®·Ñ¿¡¼­ ¹öÆ°À» ´­·¯ º¾´Ï´Ù. ¹öÆ°À» ´©¸¦ ¶§¸¶´Ù 
+;    ÀÛÀº âÀÌ ³ªÅ¸³ª ±× ¹öÆ°ÀÇ À̸§À» º¸¿©ÁÝ´Ï´Ù.
+; 5) ¹öÆ°À» ±¸¼ºÇØ Winamp, Media Player, µîµî°ú °°Àº â¿¡
+;     Å°´­¸²°ú ¸¶¿ì½º Ŭ¸¯À» Àü¼ÛÇÕ´Ï´Ù. ¾Æ·¡ ¿¹Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ.
+
+; ÀÌ ½ºÅ©¸³Æ®´Â AutoHotkey 1.0.38.04 ÀÌ»óÀ» ¿ä±¸ÇÕ´Ï´Ù.
+; º¯°æ ÀÌ·Â
+; March 2, 2007:
+; - ReceiveData()¿¡ "Critical"¸¦ ÅëÇÏ¿© ½Å·Ú¼º °³¼±.
+; October 5, 2005:
+; - ½Ã½ºÅÛÀÌ ¼Ë´Ù¿î/·Î±×¿ÀÇÁÇÒ ¶§ Winsock °æ°í ´ëÈ­»óÀÚ "10054"°¡ ³ªÅ¸³ª´Â °ÍÀ» Á¦°Å.
+; - ¹Ýº¹ ¼Óµµ¸¦ °¨¼Ò½ÃÅ°±â À§ÇØ ¿É¼Ç "DelayBetweenButtonRepeats"¸¦ Ãß°¡.
+
+; -------------------------------------------------------------
+; CONFIGURATION SECTION: ¿©±â¿¡ ¿øÇÏ´Â ´ë·Î ¼³Á¤ÇÕ´Ï´Ù.
+; -------------------------------------------------------------
+; ¾î¶² ¸®¸ðÄÜÀº ¹öÆ°À» ´©¸£°í ÀÖ´Â µ¿¾È ½ÅÈ£¸¦ ºü¸£°Ô ¹Ýº¹ÇØ º¸³À´Ï´Ù.
+; ÀÌ ¶§¹®¿¡ ¸®¸ðÆ® ÄÜÆ®·ÑÀÌ ¿ÀÁ÷ ÇϳªÀÇ ½ÅÈ£¸¸ Àü¼ÛÇϵµ·Ï ¸¸µé±â°¡ ¾î·Æ½À´Ï´Ù
+; ´ÙÀ½ ¼³Á¤Àº  ÁöÁ¤µÈ ½Ã°£ÀÌ °æ°úÇÒ ¶§±îÁö ¹Ýº¹µÈ ½ÅÈ£¸¦ ¹«½ÃÇÔÀ¸·Î½á
+; ÀÌ ¹®Á¦¸¦ ÇØ°áÇÕ´Ï´Ù. 200ÀÌ¸é º¸Åë ÁÁÀº ¼³Á¤ÀÔ´Ï´Ù.
+; 0À¸·Î ¼³Á¤Çϸé ÀÌ Æ¯Â¡À» ºÒ´ÉÀ¸·Î ¸¸µì´Ï´Ù.
+DelayBetweenButtonRepeats = 200
+
+; °æ·Î¸¦ WinLIRC¿¡ ÁöÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î C:\WinLIRC\winlirc.exe
+WinLIRC_Path = %A_ProgramFiles%\WinLIRC\winlirc.exe
+
+; WinLIRCÀÇ ÁÖ¼Ò¿Í Æ÷Æ®¸¦ ÁöÁ¤ÇÕ´Ï´Ù. º¸Åë 127.0.0.1 (localhost)°ú 8765ÀÔ´Ï´Ù.
+WinLIRC_Address = 127.0.0.1
+WinLIRC_Port = 8765
+
+; ´ÙÀ½ µÎ ÁÙÀº º¯°æÇÏÁö ¸¶½Ê½Ã¿À. °Ç³Ê¶Ù°í ¾Æ·¡¿¡¼­ °è¼ÓÇϽʽÿÀ.
+Gosub WinLIRC_Init
+return
+
+; --------------------------------------------
+; ASSIGN ACTIONS TO THE BUTTONS ON YOUR REMOTE
+; --------------------------------------------
+; ¾Æ·¡¿¡¼­ ¸®¸ðÆ® ÄÜÆ®·Ñ ¹öÆ°À» ±¸¼ºÇϽʽÿÀ. ¹öÆ°¿¡ WinLIRCÀÇ À̸§À» »ç¿ëÇÕ´Ï´Ù.
+; À̸§Àº WinLIRC ȯ°æ±¸¼º ÆÄÀÏ(.cf)¿¡¼­ º¸½Ç ¼ö ÀÖ½À´Ï´Ù.
+;  -- ¾Æ´Ï¸é ¸®¸ðÆ® ÄÜÆ®·Ñ¿¡ ¹öÆ°À» ¸¶¿ì°Í³ª ´©¸£¸é
+; ½ºÅ©¸³Æ®°¡ ÀÛÀº â¿¡ ±× ¹öÆ°ÀÇ À̸§À» Àá½Ã º¸¿©ÁÝ´Ï´Ù.
+; 
+; ¾Æ·¡´Â ¸î °¡Áö ¿¹Á¦ÀÔ´Ï´Ù.
+;  ÀÚÀ¯·Ó°Ô ¿©·¯ºÐÀÇ ±âÈ£¿¡ ¸Â°Ô °³Á¶Çϰųª Áö¿øµµ µË´Ï´Ù.
+
+VolUp:
+SoundSet +5  ; ¸¶½ºÅÍ º¼·ýÀ» 5%¸¸Å­ ´Ã¸³´Ï´Ù. Vista¿¡¼­´Â ÀÌ ÁÙÀ» ´ÙÀ½À¸·Î ±³Ã¼ÇϽʽÿÀ: Send {Volume_Up}
+return
+
+VolDown:
+SoundSet -5  ; ¸¶½ºÅÍ º¼·ýÀ» 5%¸¸Å­ ÁÙÀÔ´Ï´Ù. Vista¿¡¼­´Â ÀÌ ÁÙÀ» ´ÙÀ½À¸·Î ±³Ã¼ÇϽʽÿÀ: Send {Volume_Down}
+return
+
+ChUp:
+WinGetClass, ActiveClass, A
+if ActiveClass in Winamp v1.x,Winamp PE  ; Winamp°¡ È°¼ºÈ­ µÇ¾î ÀÖ½À´Ï´Ù.
+    Send {right}  ; ¿À¸¥ÂÊ-È­»ìÇ¥ Å°´­¸²À» Àü¼ÛÇÕ´Ï´Ù.
+else  ; ´Ù¸¥ À¯ÇüÀÇ Ã¢ÀÌ È°¼ºÈ­ µÇ¾î ÀÖ½À´Ï´Ù.
+    Send {WheelUp}  ; ¸¶¿ì½º ÈÙÀ» ÇÑ ´«±Ý À§·Î µ¹¸³´Ï´Ù.
+return
+
+ChDown:
+WinGetClass, ActiveClass, A
+if ActiveClass in Winamp v1.x,Winamp PE  ; Winamp°¡ È°¼ºÈ­ µÇ¾î ÀÖ½À´Ï´Ù.
+    Send {left}  ; ¿ÞÂÊ-È­»ìÇ¥ Å°´­¸²À» Àü¼ÛÇÕ´Ï´Ù.
+else  ; ´Ù¸¥ À¯ÇüÀÇ Ã¢ÀÌ È°¼ºÈ­ µÇ¾î ÀÖ½À´Ï´Ù.
+    Send {WheelDown}  ; ¸¶¿ì½º ÈÙÀ» ÇÑ ´«±Ý ¾Æ·¡·Î µ¹¸³´Ï´Ù.
+return
+
+Menu:
+IfWinExist, Untitled - Notepad
+{
+    WinActivate
+}
+else
+{
+    Run, Notepad
+    WinWait, Untitled - Notepad
+    WinActivate
+}
+Send Here are some keystrokes sent to Notepad.{Enter}
+return
+
+; À§ÀÇ ¿¹Á¦¿¡¼­ ¾î¶»°Ô ÀϹÝÀûÀÎ °ú¾÷À» ´Þ¼ºÇÏ´ÂÁö °¨À» ÀâÀ» ¼ö ÀÖ½À´Ï´Ù.
+; ¿ÀÅäÇÖÅ°ÀÇ ±âº» Áö½ÄÀ» ½ÀµæÇÏ·Á¸é »¡Áö ½ÃÀÛÇϱâ ÀÚ½À¼­¸¦ ã¾Æ º¸½Ã±â ¹Ù¶ø´Ï´Ù:
+; http://www.autohotkey.com/docs/Tutorial.htm
+
+; ----------------------------
+; END OF CONFIGURATION SECTION
+; ----------------------------
+; ÀÌ ½ÃÁ¡ ÀÌÈÄ·Î º¯°æÇÏÁö ¸¶½Ê½Ã¿À.
+; ´Ü, ½ºÅ©¸³Æ®ÀÇ ÇÙ½É ±â´ÉÀ» ¹Ù²Ù°í ½Í´Ù¸é ¿¹¿ÜÀÔ´Ï´Ù.
+
+WinLIRC_Init:
+OnExit, ExitSub  ; Á¢¼Ó û¼Ò ¸ñÀûÀ» À§ÇØ.
+
+; ¾ÆÁ÷ ½ÇÇàµÇÁö ¾Ê¾Ò´Ù¸é WinLIRC¸¦ ±âµ¿ÇÕ´Ï´Ù:
+Process, Exist, winlirc.exe
+if not ErrorLevel  ; WinLIRC¿¡ ´ëÇÑ PID°¡ ¹ß°ßµÇÁö ¾Ê¾Ò½À´Ï´Ù.
+{
+    IfNotExist, %WinLIRC_Path%
+    {
+        MsgBox ÆÄÀÏ "%WinLIRC_Path%"°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ½ºÅ©¸³Æ®¸¦ ÆíÁýÇØ ±× À§Ä¡¸¦ ÁöÁ¤ÇϽʽÿÀ.
+        ExitApp
+    }
+    Run %WinLIRC_Path%
+    Sleep 200  ; WinLIRC¿¡ ÃʱâÈ­ ÇÒ ½Ã°£À» ÁÝ´Ï´Ù (¾Æ¸¶µµ °ÅÀÇ ÇÊ¿äÇÏÁö ¾ÊÀ» °Ì´Ï´Ù. ½Å°æ¾²Áö ¸¶½Ê½Ã¿À).
+}
+
+; WinLIRC¿¡ Á¢¼ÓÇÕ´Ï´Ù (¶Ç´Â ±×¸¦ ´ë½ÅÇÏ¸é ¾î¶² Á¾·ùÀÇ ¼­¹öÀ̵ç Á¢¼ÓÇÕ´Ï´Ù):
+socket := ConnectToAddress(WinLIRC_Address, WinLIRC_Port)
+if socket = -1  ; Á¢¼Ó ½ÇÆÐ (ÀÌ¹Ì ÀÌÀ¯´Â º¸¿©ÁÖ¾ú½À´Ï´Ù).
+    ExitApp
+
+; ÀÌ ½ºÅ©¸³Æ®ÀÇ ¸ÞÀΠâÀ» ã½À´Ï´Ù:
+Process, Exist  ; ÀÌ·¸°Ô Çϸé ErrorLevel¿¡ ÀÌ ½ºÅ©¸³Æ®ÀÇ PID°¡ ¼³Á¤µË´Ï´Ù (ÀÌ·±½ÄÀ¸·Î Çϸé ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®¸¦ Áö¿øÇÒ ¼ö ÀÖ½À´Ï´Ù).
+DetectHiddenWindows On
+ScriptMainWindowId := WinExist("ahk_class AutoHotkey ahk_pid " . ErrorLevel)
+DetectHiddenWindows Off
+
+; OS°¡ ½ºÅ©¸³Æ®¿¡°Ô µé¾î¿À´Â µ¥ÀÌÅÍ°¡ ¼ö½ÅµÇ±â¸¦ ±â´Ù¸®°í ÀÖ´Ù°í °íÁöÇÒ ¶§,
+; ´ÙÀ½Àº ±× µ¥ÀÌÅ͸¦ Àбâ À§ÇÏ¿© ÇÔ¼ö¸¦ ±âµ¿½Ãŵ´Ï´Ù:
+NotificationMsg = 0x5555  ; ÀÓÀÇÀÇ ¸Þ½ÃÁö ¹øÈ£, ±×·¯³ª 0x1000 º¸´Ù´Â Ä¿¾ß ÇÕ´Ï´Ù.
+OnMessage(NotificationMsg, "ReceiveData")
+
+; Á¢¼ÓÀ» ¼³Á¤ÇØ ÀÌ ½ºÅ©¸³Æ®¿¡°Ô »õ·Î µ¥ÀÌÅÍ°¡ µµÂøÇÒ ¶§¸¶´Ù ¸Þ½ÃÁö¸¦ ÅëÇÏ¿© °íÁöÇÕ´Ï´Ù.
+; ÀÌ·¸°Ô Çϸé Á¢¼ÓÀ» ÆúÇÒ ÇÊ¿ä°¡ ¾øÀ¸¹Ç·Î, ÀÚ¿ø ³¶ºñ°¡ °¨¼ÒÇÕ´Ï´Ù.
+FD_READ = 1     ; µ¥ÀÌÅ͸¦ ÀÐÀ» ¼ö ÀÖÀ» ¶§ ¼ö½ÅµË´Ï´Ù.
+FD_CLOSE = 32   ; Á¢¼ÓÀÌ ´ÝÈú ¶§ ¼ö½ÅµË´Ï´Ù.
+if DllCall("Ws2_32\WSAAsyncSelect", "UInt", socket, "UInt", ScriptMainWindowId, "UInt", NotificationMsg, "Int", FD_READ|FD_CLOSE)
+{
+    MsgBox % "WSAAsyncSelect() indicated Winsock error " . DllCall("Ws2_32\WSAGetLastError")
+    ExitApp
+}
+return
+
+
+
+ConnectToAddress(IPAddress, Port)
+; ´ëºÎºÐÀÇ À¯ÇüÀÇ TCP ¼­¹ö¿¡ Á¢¼ÓÇÒ ¼ö ÀÖ½À´Ï´Ù. WinLIRC ¸¸À¸·Î Á¦ÇѵÇÁö ¾Ê½À´Ï´Ù.
+; ½ÇÆÐÇϸé -1 (INVALID_SOCKET)À» µ¹·ÁÁÖ°í ¼º°øÇÏ¸é ¼ÒÄÏ ID¸¦ µ¹·ÁÁÝ´Ï´Ù.
+{
+    VarSetCapacity(wsaData, 400)
+    result := DllCall("Ws2_32\WSAStartup", "UShort", 0x0002, "UInt", &wsaData) ; Winsock 2.0 (0x0002)À» ¿ä±¸ÇÕ´Ï´Ù
+    ; WSAStartup()ÀÌ À̽ºÅ©¸³Æ®°¡ ù ¹ø°·Î È£ÃâÇÑ Winsock ÇÔ¼öÀÏ °¡´É¼ºÀÌ ³ôÀ¸¹Ç·Î,
+    ; ErrorLevelÀ» Á¡°ËÇØ OS¿¡ Winsock 2.0ÀÌ ÀÖ´ÂÁö ¾Ë¾Æ º¾´Ï´Ù:
+    if ErrorLevel
+    {
+        MsgBox WSAStartup() could not be called due to error %ErrorLevel%. Winsock 2.0 or higher is required.
+        return -1
+    }
+    if result  ; 0ÀÌ ¾Æ´Ï¶ó¸é, ½ÇÆÐÇß´Ù´Â ¶æÀÔ´Ï´Ù (´ëºÎºÐÀÇ Winsock ÇÔ¼ö´Â ¼º°øÇϸé 0À» µ¹·ÁÁÝ´Ï´Ù).
+    {
+        MsgBox % "WSAStartup() indicated Winsock error " . DllCall("Ws2_32\WSAGetLastError")
+        return -1
+    }
+
+    AF_INET = 2
+    SOCK_STREAM = 1
+    IPPROTO_TCP = 6
+    socket := DllCall("Ws2_32\socket", "Int", AF_INET, "Int", SOCK_STREAM, "Int", IPPROTO_TCP)
+    if socket = -1
+    {
+        MsgBox % "socket() indicated Winsock error " . DllCall("Ws2_32\WSAGetLastError")
+        return -1
+    }
+
+    ; Á¢¼ÓÀ» ÁغñÇÕ´Ï´Ù:
+    SizeOfSocketAddress = 16
+    VarSetCapacity(SocketAddress, SizeOfSocketAddress)
+    InsertInteger(2, SocketAddress, 0, AF_INET)   ; sin_family
+    InsertInteger(DllCall("Ws2_32\htons", "UShort", Port), SocketAddress, 2, 2)   ; sin_port
+    InsertInteger(DllCall("Ws2_32\inet_addr", "AStr", IPAddress), SocketAddress, 4, 4)   ; sin_addr.s_addr
+
+    ; Á¢¼ÓÀ» ½ÃµµÇÕ´Ï´Ù:
+    if DllCall("Ws2_32\connect", "UInt", socket, "UInt", &SocketAddress, "Int", SizeOfSocketAddress)
+    {
+        MsgBox % "connect() indicated Winsock error " . DllCall("Ws2_32\WSAGetLastError") . ". Is WinLIRC running?"
+        return -1
+    }
+    return socket  ; -1 ¸»°í À¯È¿ÇÑ ¼ÒÄÏ ID¸¦ µ¹·ÁÁÖ¾î ¼º°øÀ» ¾Ë¸³´Ï´Ù.
+}
+
+
+
+ReceiveData(wParam, lParam)
+; OnMessage()¸¦ ¼ö´ÜÀ¸·Î, ÀÌ ÇÔ¼ö´Â »õ µ¥ÀÌÅÍ°¡ Á¢¼Ó¿¡ µµÂøÇÒ ¶§¸¶´Ù
+; ÀÚµ¿À¸·Î È£ÃâµÇµµ·Ï ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù. µ¥ÀÌÅ͸¦ WinLIRC·ÎºÎÅÍ Àо
+; ±× ³»¿ë¿¡ µû¶ó ÀûÀýÇÏ°Ô Á¶Ä¡¸¦ ÃëÇÕ´Ï´Ù.
+{
+    Critical  ; ÀÌ¹Ì ¾²·¹µå°¡ ½ÇÇàµÇ¾î Àֱ⠶§¹®¿¡ ¶Ç´Ù¸¥ °°Àº ¸Þ½ÃÁö°¡ Æó±âµÇÁö ¾Êµµ·Ï ¸·½À´Ï´Ù.
+    socket := wParam
+    ReceivedDataSize = 4096  ; ÀÌÀü µ¥ÀÌÅ͸¦ ó¸®Çϴµ¥ Áö¿¬ ½Ã°£ÀÌ À־ ¸¹Àº µ¥ÀÌÅÍ°¡ ¹öÆÛ¿¡ Âû °æ¿ì¸¦ ´ëºñÇØ Å©°Ô Àâ½À´Ï´Ù.
+
+    VarSetCapacity(ReceivedData, ReceivedDataSize, 0)  ; recv()¿¡ »ç¿ëÇϱâ À§ÇØ 0À» ¸¶Áö¸· ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇØ ¹®ÀÚ¿­À» Á¾·áÇÕ´Ï´Ù.
+    ReceivedDataLength := DllCall("Ws2_32\recv", "UInt", socket, "Str", ReceivedData, "Int", ReceivedDataSize, "Int", 0)
+    if ReceivedDataLength = 0  ; Á¢¼ÓÀÌ ¿ì¾ÆÇÏ°Ô ´ÝÇû½À´Ï´Ù. ¾Æ¸¶µµ WinLIRC¸¦ ³¡³Â±â ¶§¹®ÀÏ °ÍÀÔ´Ï´Ù.
+        ExitApp  ; OnExit ·çƾÀÌ ¿ì¸®¸¦ ´ë½ÅÇÏ¿© WSACleanup()À» È£ÃâÇØ ÁÝ´Ï´Ù.
+    if ReceivedDataLength = -1
+    {
+        WinsockError := DllCall("Ws2_32\WSAGetLastError")
+        if WinsockError = 10035  ; WSAEWOULDBLOCK, "´õ ÀÌ»ó ÀÐÀ» µ¥ÀÌÅÍ°¡ ¾ø´Ù"´Â ¶æÀÔ´Ï´Ù.
+            return 1
+        if WinsockError <> 10054 ; WSAECONNRESET, WinLIRC°¡ ½Ã½ºÅÛ ¼Ë´Ù¿î/·Î±×¿ÀÇÁ¸¦ ÅëÇÏ¿© ´ÝÈú ¶§ ÀϾ´Ï´Ù.
+            ; ¿¹Ãø ÇÏÁö ¸øÇÑ ¿¡·¯À̹ǷΠº¸°íÇÕ´Ï´Ù.  ¶Ç ¹«ÇÑ È¸µ¹À̸¦ ÇÇÇϱâ À§ÇØ Á¾·áÇÕ´Ï´Ù.
+            MsgBox % "recv() indicated Winsock error " . WinsockError
+        ExitApp  ; OnExit ·çƾÀÌ ¿ì¸®¸¦ ´ë½Å¿¡ WSACleanup()¸¦ È£ÃâÇÕ´Ï´Ù.
+    }
+    ; ±×·¸Áö ¾ÊÀ¸¸é, ¼ö½ÅµÈ µ¥ÀÌÅ͸¦ ó¸®ÇÕ´Ï´Ù. Å×½ºÆ®¿¡ ÀÇÇϸé ÇÑ ¹ø¿¡ ÇÑ ÁÙ ÀÌ»óÀ» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù
+    ; (¸í½ÃÀûÀ¸·Î-Àü¼ÛµÈ IR ½ÅÈ£¿¡ ´ëÇؼ­µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù), ´ÙÀ½ ¸Þ½îµå°¡ ÀûÀýÇÏ°Ô Ã³¸®ÇÕ´Ï´Ù.
+    ; WinLIRC·ÎºÎÅÍ ¾òÀº µ¥ÀÌÅÍ´Â ´ÙÀ½ ¿¹Á¦¿Í ºñ½ÁÇÕ´Ï´Ù (ÀÚ¼¼ÇÑ °ÍÀº WinLIRC ¹®¼­¸¦ ÂüÁ¶ÇϽʽÿÀ):
+    ; 0000000000eab154 00 NameOfButton NameOfRemote
+    Loop, parse, ReceivedData, `n, `r
+    {
+        if A_LoopField in ,BEGIN,SIGHUP,END  ; ºó ÁÙ°ú WinLIRCÀÇ ½ÃÀÛ ¸Þ½ÃÁö¸¦ ¹«½ÃÇÕ´Ï´Ù.
+            continue
+        ButtonName =  ; ¾Æ·¡¿¡¼­ 3 °³ º¸´Ù Àû°Ô Çʵ尡 ¹ß°ßµÉ °æ¿ì¸¦ ´ëºñÇØ ºñ¿ö¼­ ÃʱâÈ­ÇÕ´Ï´Ù.
+        Loop, parse, A_LoopField, %A_Space%  ; ¹öÆ° À̸§À» ÃßÃâÇÕ´Ï´Ù. ¼¼ ¹ø° ÇʵåÀÔ´Ï´Ù.
+            if A_Index = 3
+                ButtonName := A_LoopField
+        global DelayBetweenButtonRepeats  ; Àü¿ª º¯¼ö¸¦ ¼±¾ðÇØ ÀÌ ÇÔ¼ö¿¡ Àû¿ëÇÕ´Ï´Ù.
+        static PrevButtonName, PrevButtonTime, RepeatCount  ; ÀÌ º¯¼öµéÀº È£Ãâ »çÀÌ¿¡ °ªÀ» ±â¾ïÇÕ´Ï´Ù.
+        if (ButtonName != PrevButtonName || A_TickCount - PrevButtonTime > DelayBetweenButtonRepeats)
+        {
+            if IsLabel(ButtonName)  ; ÀÌ ¹öÆ°¿¡ ¿¬°üµÈ ¼­ºê·çƾÀÌ ÀÖ½À´Ï´Ù.
+                Gosub %ButtonName%  ; ±× ¼­ºê·çƾÀ» ±âµ¿½Ãŵ´Ï´Ù.
+            else ; ¿¬°üµÈ ¼­ºê·çƾÀÌ ¾øÀ¸¹Ç·Î, °£·«ÇÏ°Ô ¾î´À ¹öÆ°ÀÌ ´­·È´ÂÁö º¸¿©ÁÝ´Ï´Ù.
+            {
+                if (ButtonName == PrevButtonName)
+                    RepeatCount += 1
+                else
+                    RepeatCount = 1
+                SplashTextOn, 150, 20, Button from WinLIRC, %ButtonName% (%RepeatCount%)
+                SetTimer, SplashOff, 3000  ; ÀÌ·¸°Ô Çϸé âÀÌ º¸ÀÌ´Â µ¿¾È¿¡ ´õ ¸¹Àº ½ÅÈ£¸¦ ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+            }
+            PrevButtonName := ButtonName
+            PrevButtonTime := A_TickCount
+        }
+    }
+    return 1  ; ÇÁ·Î±×·¥¿¡°Ô ´õ ÀÌ»ó ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇÒ ÇÊ¿ä°¡ ¾ø´Ù°í ¾Ë¸³´Ï´Ù.
+}
+
+
+
+SplashOff:
+SplashTextOff
+SetTimer, SplashOff, Off
+return
+
+
+
+InsertInteger(pInteger, ByRef pDest, pOffset = 0, pSize = 4)
+; È£ÃâÀÚ´Â pDestÀÇ °¡¿ë ´É·ÂÀÌ ÃæºÐÇÑÁö È®ÀÎÇØ¾ß ÇÕ´Ï´Ù. ±âÁ¸ÀÇ ³»¿ëÀ» pDest¿¡ º¸Á¸Çϱâ À§ÇØ,
+; pOffset¿¡¼­ ½ÃÀÛÇؼ­ ¿ÀÁ÷ pSize °³¼öÀÇ ¹ÙÀÌÆ®¸¸ º¯°æµË´Ï´Ù.
+{
+    Loop %pSize%  ; °¢ ¹ÙÀÌÆ®¸¦ ±¸Á¶Ã¼ ¾ÈÀ¸·Î ³¯ ÀÌÁø µ¥ÀÌÅÍ·Î º¹»çÇÕ´Ï´Ù.
+        DllCall("RtlFillMemory", "UInt", &pDest + pOffset + A_Index-1, "UInt", 1, "UChar", pInteger >> 8*(A_Index-1) & 0xFF)
+}
+
+
+
+ExitSub:  ; ÀÌ ¼­ºê·çƾÀº ½ºÅ©¸³Æ®°¡ ¾î¶² ÀÌÀ¯·Î Á¾·áµÉ ¶§ ÀÚµ¿À¸·Î È£ÃâµË´Ï´Ù.
+; MSDN¿¡ ÀÇÇϸé: "WSACleanupÀÌ È£ÃâµÉ ¶§ ¿­¸° ¼ÒÄÏÀº ¸ðµÎ ¸®¼ÂµÇ°í 
+; ¸¶Ä¡ closesocket ÀÌ È£ÃâµÉ °Íó·³ ÀÚµ¿À¸·Î ÇÒ´çÀÌ ÇØÁ¦µË´Ï´Ù."
+DllCall("Ws2_32\WSACleanup")
+ExitApp
+
+ + diff --git a/src/docs/scripts/WindowShading.ahk b/src/docs/scripts/WindowShading.ahk new file mode 100644 index 0000000..693ccbf --- /dev/null +++ b/src/docs/scripts/WindowShading.ahk @@ -0,0 +1,53 @@ +; Window Shading (roll up a window to its title bar) -- by Rajat +; http://www.autohotkey.com +; This script reduces a window to its title bar and then back to its +; original size by pressing a single hotkey. Any number of windows +; can be reduced in this fashion (the script remembers each). If the +; script exits for any reason, all "rolled up" windows will be +; automatically restored to their original heights. + +; Set the height of a rolled up window here. The operating system +; probably won't allow the title bar to be hidden regardless of +; how low this number is: +ws_MinHeight = 25 + +; This line will unroll any rolled up windows if the script exits +; for any reason: +OnExit, ExitSub +return ; End of auto-execute section + +#z:: ; Change this line to pick a different hotkey. +; Below this point, no changes should be made unless you want to +; alter the script's basic functionality. +; Uncomment this next line if this subroutine is to be converted +; into a custom menu item rather than a hotkey. The delay allows +; the active window that was deactivated by the displayed menu to +; become active again: +;Sleep, 200 +WinGet, ws_ID, ID, A +Loop, Parse, ws_IDList, | +{ + IfEqual, A_LoopField, %ws_ID% + { + ; Match found, so this window should be restored (unrolled): + StringTrimRight, ws_Height, ws_Window%ws_ID%, 0 + WinMove, ahk_id %ws_ID%,,,,, %ws_Height% + StringReplace, ws_IDList, ws_IDList, |%ws_ID% + return + } +} +WinGetPos,,,, ws_Height, A +ws_Window%ws_ID% = %ws_Height% +WinMove, ahk_id %ws_ID%,,,,, %ws_MinHeight% +ws_IDList = %ws_IDList%|%ws_ID% +return + +ExitSub: +Loop, Parse, ws_IDList, | +{ + if A_LoopField = ; First field in list is normally blank. + continue ; So skip it. + StringTrimRight, ws_Height, ws_Window%A_LoopField%, 0 + WinMove, ahk_id %A_LoopField%,,,,, %ws_Height% +} +ExitApp ; Must do this for the OnExit subroutine to actually Exit the script. diff --git a/src/docs/scripts/WindowShading.htm b/src/docs/scripts/WindowShading.htm new file mode 100644 index 0000000..80b880a --- /dev/null +++ b/src/docs/scripts/WindowShading.htm @@ -0,0 +1,64 @@ + + +Window Shading (roll up a window to its title bar) -- by Rajat + + + + + + + +

Window Shading (âÀ» Á¦¸ñ ¹Ù±îÁö ¸»¾Æ ¿Ã¸®±â) -- by Rajat

+ +

ÀÌ ½ºÅ©¸³Æ®´Â âÀ» Á¦¸ñ ¹Ù±îÁö ¸»¾Æ ¿Ã¸®°í ÇÖÅ°¸¦ ´©¸£¸é ´Ù½Ã ¿ø·¡ Å©±â·Î µ¹¾Æ¿É´Ï´Ù. âÀÇ °³¼ö¿¡ »ó°ü¾øÀÌ ÀÌ·± ½ÄÀ¸·Î ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù (½ºÅ©¸³Æ®°¡ °¢°¢ ±â¾ïÇÕ´Ï´Ù). ½ºÅ©¸³Æ®°¡ ¾î¶² ÀÌÀ¯·Î Á¾·áÇϸé "¸»·Á ¿Ã¶ó°£" ¸ðµç âÀÌ ÀÚµ¿À¸·Î ¿ø·¡ ³ôÀÌ·Î º¹±¸µË´Ï´Ù. +

+

ÀÌ ½ºÅ©¸³Æ® ³»·Á¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

+ +
; ¸»¸° âÀÇ ³ôÀ̸¦ ¿©±â¿¡¼­ ¼³Á¤ÇÕ´Ï´Ù.
+; ¾Æ¸¶µµ ÀÌ ¼ýÀÚ°¡ ¾ó¸¶³ª ³·Àº°¡¿¡ »ó°ü ¾øÀÌ ¿î¿µÃ¼Á¦´Â 
+; Á¦¸ñ¹Ù°¡ ¼û´Â °ÍÀ» Çã¿ëÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù:
+ws_MinHeight = 25
+
+; ÀÌ ÁÙÀº ¾î¶² ÀÌÀ¯·Î ½ºÅ©¸³Æ®°¡ Á¾·áÇϸé
+; ¸»·Á ¿Ã¶ó°£ âÀ» º¹±¸ÇÕ´Ï´Ù:
+OnExit, ExitSub
+return  ; ÀÚµ¿ ½ÇÇà ¼½¼ÇÀÇ ³¡
+
+#z::  ; ÀÌ ÁÙÀ» ¹Ù²ã ´Ù¸¥ ÇÖÅ°¸¦ °ñ¶óµµ µË´Ï´Ù.
+; ÀÌ ½ÃÁ¡ ÀÌÈÄ·Î, ¾î¶² º¯°æµµ Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù
+; ´Ü, ½ºÅ©¸³Æ®ÀÇ ±âº» ±â´ÉÀ» º¯°æÇÏ°í ½ÍÀº °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.
+; ´ÙÀ½ ÁÙÀ» ÁÖ¼® ÇØÁ¦Çϸé ÀÌ ¼­ºê·çƾÀ» ÇÖÅ°°¡ ¾Æ´Ï¶ó
+; ¸ÂÃã ¸Þ´º Ç׸ñÀ¸·Î º¯È¯ÇÒ ¼ö ÀÖ½À´Ï´Ù.  
+; Áö¿¬ ½Ã°£ ´öºÐ¿¡ ¸Þ´º ¶§¹®¿¡ ²¨Á³´ø
+; È°¼º âÀº ´Ù½Ã ÄÑÁý´Ï´Ù:
+;Sleep, 200
+WinGet, ws_ID, ID, A
+Loop, Parse, ws_IDList, |
+{
+    IfEqual, A_LoopField, %ws_ID%
+    {
+        ; ºÎÇÕÀÌ ¹ß°ßµÇ¾úÀ¸¹Ç·Î, ÀÌ Ã¢Àº º¹±¸µË´Ï´Ù (´Ù½Ã ÆìÁü):
+        StringTrimRight, ws_Height, ws_Window%ws_ID%, 0
+        WinMove, ahk_id %ws_ID%,,,,, %ws_Height%
+        StringReplace, ws_IDList, ws_IDList, |%ws_ID%
+        return
+    }
+}
+WinGetPos,,,, ws_Height, A
+ws_Window%ws_ID% = %ws_Height%
+WinMove, ahk_id %ws_ID%,,,,, %ws_MinHeight%
+ws_IDList = %ws_IDList%|%ws_ID%
+return
+
+ExitSub:
+Loop, Parse, ws_IDList, |
+{
+    if A_LoopField =  ; ¸®½ºÆ®ÀÇ Ã¹ Çʵå´Â º¸Åë ºñ¾î ÀÖ½À´Ï´Ù.
+        continue      ; ±×·¡¼­ °Ç³Ê ¶Ý´Ï´Ù.
+    StringTrimRight, ws_Height, ws_Window%A_LoopField%, 0
+    WinMove, ahk_id %A_LoopField%,,,,, %ws_Height%
+}
+ExitApp  ; OnExit ¼­ºê·çƾ¿¡ ´ëÇÏ¿© ¹Ýµå½Ã ÀÌ·¸°Ô Çؾ߸¸ ½ºÅ©¸³Æ®¸¦ ½ÇÁ¦·Î Á¾·áÇÒ ¼ö ÀÖ½À´Ï´Ù.
+
+ + diff --git a/src/docs/scripts/index.htm b/src/docs/scripts/index.htm new file mode 100644 index 0000000..2d87d16 --- /dev/null +++ b/src/docs/scripts/index.htm @@ -0,0 +1,100 @@ + + +AutoHotkey Script Showcase + + + + + + + +

¿ÀÅäÇÖÅ° ½ºÅ©¸³Æ® ¸ð¹ü ¿¹Á¦

+ +

NiftyWindows -- by Enovatic-Solutions: ÀÌ ½ºÅ©¸³Æ®´Â ²ø±â, Å©±â ¹Ù²Ù±â, ÃÖ´ëÈ­, ÃÖ¼ÒÈ­ ±×¸®°í ´Ý±âµî ±âº»ÀûÀÎ ¸ðµç âÀÇ ÀÛµ¿À» ½±°Ô Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù. °¡Àå °­·ÂÇÑ Æ¯Â¡Àº ¿À¸¥ÂÊ ¸¶¿ì½º ¹öÆ°À¸·Î ²ø¸é È°¼ºÈ­ µË´Ï´Ù. °¢ âÀ» °¡»óÀÇ 3Çà 3¿­ ¾ÆÈ© °³ÀÇ ¼¿ °ÝÀÚ¿¡ ³ª´©¾î º¸¿©ÁÝ´Ï´Ù. °¡¿îµ¥ ¼¿ÀÌ °¡Àå Å®´Ï´Ù: ¿À¸¥ÂÊ ¹öÆ°À¸·Î ±× âÀÇ ¸ð¼­¸®¸¦ Ŭ¸¯ÇØ ²ø¾î À̵¿ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¿©´ü °³ÀÇ ¼¿Àº °°Àº ¹æ½ÄÀ¸·Î âÀÇ Å©±â¸¦ ¹Ù²Ù´Â µ¥ »ç¿ëµË´Ï´Ù. NiftyWindows´Â ¶ÇÇÑ ÀÚ¼® °ÝÀÚ(snap-to-grid), "â ºñÀ² À¯Áö", âÀ» ŸÀÌƲ¹Ù±îÁö °¨¾Æ¿Ã¸®±â, Åõ¸íµµ Á¦¾î, ±âŸ À¯¿ëÇÑ ´ÜÃàÅ°µéÀ» Á¦°øÇÕ´Ï´Ù. +

+

È­¸é È®´ë±â -- by Holomind: ÀÌ È­¸é È®´ë±â´Â ¿î¿µ üÁ¦¿¡ Æ÷ÇÔµÈ È®´ë±â¿¡ ºñÇØ ¿©·¯ ÀåÁ¡ÀÌ ÀÖ½À´Ï´Ù: °»½Å °£°Ý º¯°æ°ú È®´ë ¼öÁØ (Ãà¼Ò Æ÷ÇÔ); ´õ ³ªÀº Ãâ·ÂÀ» Á¦°øÇÏ´Â ¾ØƼ¿¤¸®¾î½Ì; ±×¸®°í ¿ÀÇ ¼Ò½ºÀÔ´Ï´Ù (°á·ÐÀûÀ¸·Î, ¿©·¯ º¯Çü Áß¿¡¼­ °í¸¦ ¼ö ÀÖÀ¸¸ç, ¿©·¯ºÐ¿¡°Ô ¸Â°Ô ½ºÅ©¸³Æ®¸¦ Àç´ÜÇÒ ¼ö ÀÖ½À´Ï´Ù). +

+

LiveWindows: Watch Dialog-boxes in Thumbnail -- by Holomind: ÀÌ ½ºÅ©¸³Æ®·Î ³»·Á¹Þ±â, ÆÄÀÏ º¹»ç, ±âŸ ´ëÈ­»óÀÚÀÇ ÁøÇà »óȲÀ» °üÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù. °¢ ´ëÈ­»óÀÚ¿Í ÇÁ·Î±×·¹½º ¹Ù¿¡ ÀÛÀº ¹Ýº¹ Ç¥½ÄÀ» º¸¿©ÁÝ´Ï´Ù (´ëÈ­»óÀÚ´Â ÀÚµ¿À¸·Î ŽÁöµË´Ï´Ù. ´Ù¸¥ â µÚ¿¡ À־ ŽÁöµË´Ï´Ù). ¹Ì¸® º¸±â âÀº ¾ðÁ¦³ª »óÀ§¿¡ ÀÖÁö¸¸ È­¸é ±¸¿ªÀ» ¾ÆÁÖ Á¶±Ý¸¸ Â÷ÁöÇÕ´Ï´Ù (¸ð¼­¸®¸¦ ²ø¾î Å©±â¸¦ ¹Ù²Ü ¼öµµ ÀÖ½À´Ï´Ù). ¾î¶² âÀÌµç °üÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼±Åà ³×¸ð¸¦ °ü½É ±¸¿ª ±Ùó¿¡ ²ø¾î ³õÀº ´ÙÀ½ (control-shift-drag), Win+W¸¦ ´­·¯ ½Ç½Ã°£À¸·Î °»½ÅÇØ ¹Ì¸®º¸±â â¿¡ ±× ±¸¿ªÀ» º¸¿©ÁÝ´Ï´Ù. +

+

Mouse Gestures -- by deguix: ÀÌ ½ºÅ©¸³Æ®´Â ¸¶¿ì½º ¿ìÃø ¹öÆ°ÀÌ ´­·Á ÀÖ´Â µ¿¾È ¾î¶»°Ô ¸¶¿ì½º¸¦ À̵¿ÇÏ´ÂÁö ÁöÄÑ º¾´Ï´Ù. ¾Ë°í ÀÖ´Â ¸ð¾çÀ̳ª ½Éº¼À» "±×¸®¸é", ÇÁ·Î±×·¥À» ±âµ¿Çϰųª ¿©·¯ºÐÀÌ ÁöÁ¤ÇÑ ¸ÂÃã ÇàÀ§¸¦ ¼öÇàÇÕ´Ï´Ù (¸¶Ä¡ ÇÖŰó·³). Á¦½ºÃ³¸¦ Á¤ÀÇÇÏ´Â ¹ýÀº ¾È¿¡ Æ÷ÇÔµÈ README ÆÄÀÏÀ» ÂüÁ¶ÇϽʽÿÀ. +

+

ÆíÁý±â¿¡ ¹®¸Æ °¨Áö µµ¿ò¸» ¼³Ä¡Çϱâ - by Rajat: +ÀÌ ½ºÅ©¸³Æ®´Â¼±ÅÃµÈ ¿ÀÅäÇÖÅ° ¸í·É¾î³ª Å°¿öµå¿¡ ´ëÇÏ¿© Ctrl+2 (¶Ç¸¥ ¿©·¯ºÐÀÌ ¼±ÅÃÇÑ Å°)¸¦ µµ¿ò¸» ÆÄÀÏÀ» º¸¿©ÁÖµµ·Ï ¸¸µì´Ï´Ù. ¾Æ¹«°Íµµ ¼±ÅõǾî ÀÖÁö ¾ÊÀ¸¸é, ¸í·É¾î À̸§ÀÌ ÇöÀç ÁÙÀÇ Ã³À½¿¡¼­ ÃßÃâµË´Ï´Ù. +

+

½±°Ô â ²ø±â (XP/2k/NT ¿ä±¸): º¸Åë, âÀº ŸÀÌƲ ¹Ù¸¦ Ŭ¸¯Çؾ߸¸ ²ø ¼ö ÀÖ½À´Ï´Ù. ÀÌ ½ºÅ©¸³Æ®´Â â ¾ÈÀÇ ¾Æ¹« °÷À̳ª ²ø ¼ö ÀÖµµ·Ï È®ÀåµÇ¾ú½À´Ï´Ù. ÀÌ ¸ðµå¸¦ È°¼ºÈ­ÇÏ·Á¸é, Ŭ¸¯ÇÏ´Â µ¿¾È CapsLock³ª °¡¿îµ¥ ¸¶¿ì½º ¹öÆ°À» Ŭ¸¯ÇÑ ´ÙÀ½, âÀ» »õ À§Ä¡·Î ²ü´Ï´Ù. +

+

½±°Ô â ²ø±â -- KDE ½ºÅ¸ÀÏ (XP/2k/NT ¿ä±¸) -- by Jonny: ÀÌ ½ºÅ©¸³Æ®´Â ÈξÀ ´õ ½±°Ô âÀ» À̵¿Çϰųª Å©±â¸¦ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù: +1) ALT Å°¸¦ ´©¸¥ ä·Î â ¾È ¾Æ¹«°÷À̳ª ¿Þ-Ŭ¸¯ÇØ Ã¢À» »õ À§Ä¡·Î ²ø ¼ö ÀÖ½À´Ï´Ù; +2) ALT Å°¸¦ ´©¸¥ ä·Î â ¾È ¾Æ¹«°÷À̳ª ¿ì-Ŭ¸¯ÇØ ²ø¸é Å©±â¸¦ ½±°Ô ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù; +3) ALT¸¦ µÎ¹ø ´©¸£µÇ, µÎ ¹ø°´Â ±×³É ´©¸¥ ä·Î, ¿ÞŬ¸¯Çϸé âÀÌ ¸¶¿ì½º Ä¿¼­ ¾Æ·¡·Î ÃÖ¼ÒÈ­µÇ°í ¿ìŬ¸¯Çϸé ÃÖ´ëÈ­µÇ¸ç, °¡¿îµ¥¸¦ Ŭ¸¯ÇÏ¸é ´ÝÈü´Ï´Ù. +

+

ÀÚÁÖ °¡´Â Æú´õ¿¡ ½±°Ô Á¢±ÙÇϱâ -- by Savage: +¾î¶² À¯ÇüÀÇ Ã¢ÀÌ È°¼ºÈ­µÇ¾î ÀÖ´Â µ¿¾È °¡¿îµ¥ ¹öÆ°À» Ŭ¸¯Çϸé, ÀÌ ½ºÅ©¸³Æ®´Â ÀÚÁÖ °¡´Â Æú´õ À̸§ÀÇ ¸Þ´º¸¦ º¸¿©ÁÝ´Ï´Ù. ÀÚÁÖ °¡´Â Æú´õ¸¦ ¼±ÅÃÇÒ ¶§, ½ºÅ©¸³Æ®´Â Áï½Ã È°¼º ⠾ȿ¡¼­ ±× Æú´õ·Î ÀüȯÇÕ´Ï´Ù. ´ÙÀ½ â À¯ÇüÀ» Áö¿øÇÕ´Ï´Ù: 1) Ç¥ÁØ ÆÄÀÏ-¿­±â ¶Ç´Â ÆÄÀÏ-ÀúÀå ´ëÈ­»óÀÚ; 2) Ž»ö±â â; 3) ÄÜ¼Ö (¸í·É¾î ÇÁ·ÒÇÁÆ®) â. +¸Þ´º´Â ¶Ç Áö¿øµÇÁö ¾Ê´Â â À¯Çü¿¡ ´ëÇÏ¿© ¼±ÅÃÀûÀ¸·Î ³ªÅ¸³¯ ¼öµµ ÀÖ½À´Ï´Ù. ±× °æ¿ì ÀÚÁÖ°¡´Â Æú´õ°¡ »õ Ž»ö âÀ¸·Î ¿­¸³´Ï´Ù. +

+

IntelliSense -- by Rajat (requires XP/2k/NT): +ÀÌ ½ºÅ©¸³Æ®´Â AutoHotkey ½ºÅ©¸³Æ®¸¦ ÆíÁýÇÏ´Â µ¿¾È °¨½ÃÇÏ´Ù°¡ ¸í·É¾î ´ÙÀ½¿¡ ½°Ç¥³ª ½ºÆäÀ̽º¸¦ ŸÀÚÇÏ´Â °ÍÀ» º¸¸é, ±× ¸í·É¾îÀÇ ¸Å°³º¯¼ö ¸®½ºÆ®¸¦ º¸¿©ÁÖ¾î ¿©·¯ºÐÀ» ¾È³»ÇÕ´Ï´Ù. °Ô´Ù°¡, Ctrl+F1 (¶Ç´Â ¼±Åÿ¡ µû¶ó ´Ù¸¥ ÇÖÅ°)¸¦ ¼±ÅÃÇÏ¸é ±× ¸í·É¾îÀÇ µµ¿ò¸»À» º¸¿©ÁÝ´Ï´Ù. ¸Å°³º¯¼ö ¸®½ºÆ®¸¦ Ãë¼ÒÇÏ·Á¸é, Escape ¶Ç´Â Enter¸¦ Ä¡¸é µË´Ï´Ù. +

+

Á¶À̽ºÆ½À» ¸¶¿ìó·³ »ç¿ëÇϱâ: ÀÌ ½ºÅ©¸³Æ®´Â Á¶À̽ºÆ½À» ¹öÆ° ¼¼ °³Â¥¸® ¸¶¿ì½º·Î º¯½Å½Ãŵ´Ï´Ù. °¢ ¹öÆ°Àº ¸¶Ä¡ ¸¶¿ì½º ¹öưó·³ ²ø ¼ö ÀÖ½À´Ï´Ù. »ç½Ç»ó °ÅÀÇ CPU ½Ã°£À» »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. ¶ÇÇÑ, Á¶À̽ºÆ½À» °¡¿îµ¥·ÎºÎÅÍ ¾ó¸¶³ª ¸Ö¸® ¹Ì´Â°¡¿¡ µû¶ó Ä¿¼­¸¦ ´õ ºü¸£°Ô À̵¿½Ãŵ´Ï´Ù. ½ºÅ©¸³Æ®ÀÇ »ó´Ü¿¡¼­ ±âÈ£¿¡ ¸Â°Ô ´Ù¾çÇÏ°Ô ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. +

+

Á¶À̽ºÆ½ Å×½ºÆ® ½ºÅ©¸³Æ®: +ÀÌ ½ºÅ©¸³Æ®´Â Á¶À̽ºÆ½ ¹öÆ°ÀÇ °³¼ö¿Í ±âŸ ¼Ó¼ºÀ» ¾Ë¾Æ³»´Â µ¥ µµ¿òÀ» ÁÝ´Ï´Ù. + +Á¶À̽ºÆ½ÀÌ ´«±Ý Á¶Á¤ÀÌ ÇÊ¿äÇÑÁö ³ëÃâ½ÃÄÑ Áֱ⵵ ÇÕ´Ï´Ù; Áï, °¢ ÃàÀÇ À̵¿ ¹üÀ§´Â 0 ºÎÅÍ 100 ÆÛ¼¾Æ® »çÀÌÀÔ´Ï´Ù. ´«±Ý Á¶Á¤ÀÌ ÇÊ¿äÇϸé, ¿î¿µ üÁ¦ÀÇ Á¦¾îÆÇ ¶Ç´Â Á¶À̽ºÆ½¿¡ µû¶ó¿À´Â ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÌ¿ëÇϽʽÿÀ. +

+

È­¸é-À§ Å°º¸µå (XP/2k/NT ¿ä±¸) -- by Jon: +ÀÌ ½ºÅ©¸³Æ®´Â È­¸é ¾Æ·¡¿¡ °¡»ó Å°º¸µå¸¦ ¸¸µì´Ï´Ù. ´©¸£´Â Å°¸¦ ½Ç½Ã°£À¸·Î È­¸é¿¡ º¸¿©ÁÝ´Ï´Ù. ÇÊÀÚ°¡ ¼Õ °¨°¢À¸·Î ŸÀÚÇÏ´Â ¹ýÀ» ÀÍÈ÷±â À§ÇØ (Å°º¸µå¸¦ º¸Áö ¾Ê´Â ½À°üÀ» µéÀ̱â À§ÇØ) ¸¸µé¾ú½À´Ï´Ù. È­¸é À§ Å°º¸µåÀÇ Å©±â´Â ½ºÅ©¸³Æ® »ó´Ü¿¡¼­ Àç´ÜÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ, Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ» ´õºíŬ¸¯ Çϸé Å°º¸µå¸¦ ¼û±â°Å³ª º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. +

+

âÀ» Æ®·¹ÀÌ ¸Þ´º·Î ÃÖ¼Ò È­Çϱâ: +ÀÌ ½ºÅ©¸³Æ®´Â ¿©·¯ºÐ ¼±ÅÃÇÑ ÇÖÅ°¸¦ âÀ» °¨Ãß´Â µ¥ ÇÒ´çÇÕ´Ï´Ù. +âÀº ½ºÅ©¸³Æ®ÀÇ Æ®·¹ÀÌ ¸Þ´º ¾Æ·¡¿¡ ¿£Æ®¸®°¡ µË´Ï´Ù. ¼ûÀº âÀº ±×·¯¸é °³º°ÀûÀ¸·Î ¶Ç´Â ¸ðµÎ ÇѲ¨¹ø¿¡ ´Ù½Ã º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. ¸Þ´º¿¡¼­ »óÀÀÇÏ´Â ¸Þ´º¸¦ ¼±ÅÃÇÏ¸é µË´Ï´Ù. ½ºÅ©¸³Æ®°¡ ¾î¶² ÀÌÀ¯·Î Á¾·áÇϸé, ¼û°ÜÁö ¸ðµç âµéÀÌ ÀÚµ¿À¸·Î º¸¿©Áý´Ï´Ù. +

+

MsgBoxÀÇ ¹öÆ° À̸§ ¹Ù²Ù±â: +ÀÌ ¿¹Á¦ ½ºÅ©¸³Æ®´Â ŸÀ̸Ӹ¦ »ç¿ëÇÏ¿© MsgBox ´ëÈ­»óÀÚ¿¡ ÀÖ´Â ¹öÆ°ÀÇ À̸§À» ¹Ù²ß´Ï´Ù. ¹öÆ° À̸§Àº ¹Ù²îÁö¸¸, IfMsgBox ¸í·É¾îÀº ¿©ÀüÈ÷ ±× ¹öÆ°ÀÌ ¿ø·¡ À̸§À¸·Î ÂüÁ¶µÇ±â¸¦ ¿ä±¸ÇÕ´Ï´Ù. +

+

Numpad 000 Key: +ÀÌ ¿¹Á¦ ½ºÅ©¸³Æ®´Â ¾î¶² Å°Æе忡 ³ªÅ¸³ª´Â Ư¼ö 000 Å°¸¦ µîÈ£ Å°·Î ¸¸µì´Ï´Ù. Send, = ÁÙÀ» ¿©·¯ºÐÀÇ ¼±Åÿ¡ µû¶ó ¹Ù²Ù¸é ÇàÀ§¸¦ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. +

+

Å°º¸µåÀÇ ³ÑÆе带 ¸¶¿ì½ºÃ³·³ »ç¿ëÇϱâ -- by deguix: +ÀÌ ½ºÅ©¸³Æ®´Â ÁøÂ¥ ¸¶¿ì½º¸¦ »ç¿ëÇÏ´Â °Í °°ÀÌ Å°º¸µå¸¦ ½±°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù (¾î¶² ÀÛ¾÷¿¡´Â ÈξÀ ´õ ½±½À´Ï´Ù). ¸¶¿ì½º ¹öÆ°À» ´Ù¼¸ °³±îÁö Áö¿øÇÏ°í ¸¶¿ì½º È٠ȸÀüÀ» Áö¿øÇÕ´Ï´Ù. ¶ÇÇÑ À̵¿ ¼Óµµ¸¦ Á¶ÀýÇÒ ¼ö ÀÖ°í °¡¼Ó ±â´É°ú "Ãà Àüµµ"µµ Áö¿øÇÕ´Ï´Ù. +

+

Seek -- by Phi: +½ÃÀÛ ¸Þ´º¸¦ Ç×ÇØÇÏ´Â °ÍÀº ¾à°£ ³­»ðÇÒ ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ½Ã°£ÀÌ Áö³ª¸é¼­ ¸¹Àº ÇÁ·Î±×·¥À» ¼³Ä¡Çß´Ù¸é Á¤¸» ³­»ðÇÕ´Ï´Ù.. 'Seek'À¸·Î ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê´Â Å° ´Ü¾î/¹®±¸¸¦ ÁöÁ¤ÇÏ¸é ½ÃÀÛ ¸Þ´º¿¡¼­ ±×¿¡ ºÎÇÕÇÏ´Â ÇÁ·Î±×·¥°ú µð·ºÅ丮¸¸ ¿©°úÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¸é ºÎÇÕÇÏ´Â ¸î ¾ÈµÇ´Â ¿£Æ®¸® Áß¿¡¼­ ½±°Ô ¸ñÇ¥ ÇÁ·Î±×·¥À» ¿­ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ½ÃÀÛ ¸Þ´º¸¦ °Ë»öÇÏ°í ¼øȸÇÏ´Â Áö°Ü¿î ÀÏÀ» ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. +

+

ÅøÆÁ ¸¶¿ì½º ¸Þ´º (XP/2k/NT ¿ä±¸) -- by Rajat: +ÀÌ ½ºÅ©¸³Æ®´Â °¡¿îµ¥ ¹öÆ°À» Àá±ñ ´©¸£´Âµ¥ ¹ÝÀÀÇÏ¿© Æ˾÷ ¸Þ´º¸¦ º¸¿©ÁÝ´Ï´Ù. ¸Þ´º Ç׸ñÀº ¿Þ-Ŭ¸¯ÇØ ¼±ÅÃÇÕ´Ï´Ù. ¹Ù±ùÀ» ¿ÞŬ¸¯ÇÏ¸é ¸Þ´º°¡ Ãë¼ÒµË´Ï´Ù. ÃÖ±Ù¿¡ ¾î´À À¯ÇüÀÇ Ã¢ÀÌ È°¼ºÈ­ µÇ¾î Àִ°¡¿¡ µû¶ó ¸Þ´ºÀÇ ³»¿ëÀÌ ¹Ù²îµµ·Ï °³¼±µÇ¾ú½À´Ï´Ù (Notepad ±×¸®°í Word°¡ ¿¹Á¦¿¡¼­ »ç¿ëµË´Ï´Ù). +

+

Volume On-Screen-Display (OSD) -- by Rajat: +ÀÌ ½ºÅ©¸³Æ®´Â ¿©·¯ºÐÀÇ ÇÖÅ°¸¦ ¸¶½ºÅÍ ºÒ·ý°ú ¿þÀÌºê º¼·ýÀ» ¿Ã¸®°Å³ª ³»¸®´Â µ¥ ÇÒ´çÇÕ´Ï´Ù. µÎ º¼·ý ¸ðµÎ °¢°¢ ´Ù¸¥ ¹Ù ±×·¡ÇÁ·Î º¸¿©ÁÝ´Ï´Ù. +

+

Window Shading (âÀ» Á¦¸ñ ¹Ù±îÁö ¸»¾Æ ¿Ã¸®±â) -- by Rajat: ÀÌ ½ºÅ©¸³Æ®´Â ÇÖÅ°¸¦ ´©·Á¸é âÀ» ±×ÀÇ Á¦¸ñ ¹Ù±îÁö ÁÙÀÌ°í ´Ù½Ã ±×ÀÇ ¿ø·¡ Å©±â·Î µ¹¾Æ¿É´Ï´Ù. âÀÇ °³¼ö¿¡ »ó°ü¾øÀÌ ÀÌ·± ½ÄÀ¸·Î ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù (½ºÅ©¸³Æ®°¡ °¢°¢À» µû·Îµû·Î ±â¾ïÇÕ´Ï´Ù). ½ºÅ©¸³Æ®°¡ ¾î¶² ÀÌÀ¯·Î Á¾·áÇϸé, "¸»·Á ¿Ã¶ó°£" ¸ðµç âÀÌ ¿ø·¡ÀÇ ³ôÀÌ·Î º¹±¸µË´Ï´Ù. +

+

+WinLIRC Ŭ¶óÀ̾ðÆ®: +ÀÌ ½ºÅ©¸³Æ®´Â ¸®¸ðÆ® ÄÜÆ®·Ñ¿¡ ¹öÆ°À» ´©¸¦ ¶§¸¶´Ù WinLIRCÀ¸·ÎºÎÅÍ °íÁö¸¦ ¹Þ½À´Ï´Ù. ÀÌ°ÍÀ» ÀÌ¿ëÇØ Winamp, Windows Media Player, µîµîÀ» ÀÚµ¿È­ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ½±°Ô ȯ°æÀ» ±¸¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, WinLIRC°¡ ¸®¸ðÆ® ÄÜÆ®·Ñ¿¡¼­ À̸§ÀÌ "VolUp"ÀÎ ¹öÆ°À» ÀÎÁöÇϸé, À̸§ÀÌ VolUpÀÎ ¶óº§À» »ý¼ºÇÏ°í ±× ¾Æ·¡¿¡ ¸í·É¾î SoundSet +5¸¦ »ç¿ëÇØ »ç¿îµåÄ«µåÀÇ º¼·ýÀ» 5%¸¸Å­ Å°¿ó´Ï´Ù. +

+

1 Hour Software -- by skrommel: ÀÌ°ÍÀº À¯¿ëÇÑ ½ºÅ©¸³Æ® ¸ðÀ½ÀÔ´Ï´Ù. ªÀº ¼³¸í°ú ÂûĬ ±×¸²°ú ÇÔ²² ¼Ò°³ÇÕ´Ï´Ù. +

+

Åä¶öÇÁ(Toralf)ÀÇ ½ºÅ©¸³Æ® ¸ðÀ½: +ÀÌ ¸ðÀ½ÁýÀº ´ÙÀ½°ú °°Àº À¯¿ëÇÑ ½ºÅ©¸³Æ®°¡ µé¾î ÀÖ½À´Ï´Ù:
+1) AHK Window Info: â, ÄÜÆ®·Ñ, µîµî¿¡ °üÇÑ Á¤º¸¸¦ ³ëÃâ½Ãŵ´Ï´Ù.
+2) Electronic Program Guide: ¿©·¯ºÐÀÌ »ç´Â Áö¿ªÀÇ TV ÇÁ·Î±×·¥/Æí¼ºÇ¥¸¦ ¿­¶÷ÇÕ´Ï´Ù. (¿©·¯ ±¹°¡ Áö¿ø).
+3) Auto-Syntax-Tidy: ½ºÅ©¸³Æ®¿¡¼­ ¸í·É¾îÀÇ ´ë¼Ò¹®ÀÚ¿Í µé¿©¾²±â¸¦ º¯°æÇØ ÀÏ°ü¼º ÀÖ´Â ½ºÅ¸ÀÏ·Î Æ÷¸ËÇÕ´Ï´Ù. +

+

¼¼¾ð(Sean)ÀÇ ½ºÅ©¸³Æ® ¸ðÀ½: ´ÙÀ½°ú °°Àº À¯¿ëÇÑ ½ºÅ©¸³Æ®°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù:
+1) Network Download/Upload Meter: ³×Æ®¿öÅ© ³»·Á¹Þ±â/¿Ã¸®±â¸¦ ¾ðÁ¦³ª À§ ÇÁ·Î±×·¹½º ¹Ù¿¡ º¸¿©ÁÝ´Ï´Ù.
+2) StdoutToVar: +¸í·É¾î³ª ¾îÇø®ÄÉÀ̼ÇÀÇ Ãâ·ÂÀ» ½ºÅ©¸³Æ®ÀÇ º¯¼ö·Î ¹æÇâÀüȯÇÕ´Ï´Ù.
+3) Capture a Screen Rectangle: +È­¸é ÀϺθ¦ Àâ¾Æ ±×°ÍÀ» ÆÄÀÏ·Î ÀúÀåÇÏ´Â ÇÔ¼ö (BMP/JPG/PNG/GIF/TIF). ¶ÇÇÑ Åõ¸í â°ú ¸¶¿ì½º Ä¿¼­µµ ÀâÀ» ¼ö ÀÖ½À´Ï´Ù.
+4) Color Zoomer/Picker: +Ä¿¼­ ÁÖÀ§ÀÇ ±¸¿ªÀ» È®´ëÇÕ´Ï´Ù. Çȼ¿ Çϳª¸¦ ¼±ÅÃÇØ ±×ÀÇ »öÀ» ½Äº°ÇÒ ¼ö ÀÖ½À´Ï´Ù.

+ +

SKAN's Tips N Tricks: Á¾Á¾ ÀÚÁÖ ¿ä±¸µÇ´Â Ư¡°ú À¯¿ëÇÑ È¿°ú¸¦ ´Þ¼ºÇϱâ À§ÇÑ »ùÇà ÄÚµå¿Í Å×Å©´ÐÀÌ µé¾î ÀÖ½À´Ï´Ù. +

+

½ºÅ©¸³Æ® & ÇÔ¼ö Æ÷·³ (autohotkey.com): ÀÌ°÷Àº °ÅÀÇ 1000°³³ª µÇ´Â, Áï½Ã ½ÇÇà °¡´ÉÇÑ ½ºÅ©¸³Æ®¿Í ÇÔ¼ö ¸ðÀ½ÁýÀÔ´Ï´Ù. ¿ÀÅäÇÖÅ° »ç¿ëÀÚµéÀÌ ¸¸µé°í °ü¸®ÇÏ´Â ÀÌ º¸°ü¼Ò´Â ³ª³¯ÀÌ Ä¿Áö°í °³¼±µÇ°í ÀÖ½À´Ï´Ù. ¶ÇÇÑ ¿¹ÀüÀÇ Æó±âµÈ ½ºÅ©¸³Æ®µµ ¸¹ÀÌ ÀÖ½À´Ï´Ù (AutoHotkey v1.0). +

+

½ºÅ©¸³Æ® & ÇÔ¼ö Æ÷·³ (ahkscript.org): ½ºÅ©¸³Æ®·Î °¡µæÇÑ ¶Ç´Ù¸¥ Æ÷·³, ´ëºÎºÐ AutoHotkey v1.1 ±×¸®°í v2 ¿ëÀÔ´Ï´Ù.

+

-- ȨÀ¸·Î À̵¿ --

+ + diff --git a/src/docs/static/ahk_logo.png b/src/docs/static/ahk_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..841c614a5357308d77322cad383c5f718b11c368 GIT binary patch literal 6820 zcmY*ec{o&W`yazBW~`a)8A^;LgZPql#u|wU(PEdSl*m|%*(_ykwUl8diL#a=OU6#J zj4hF}X5aVSkMH~b{&>%GUC(u{b3ONcf6nJ#&vhQ*%#Ar=!Y}{;z-e;cz!Cref)4M^ zq2R;4Fx4#v01);vF~C{}_0LkPz4>erkzccU^knsp!?R6m%U+qfMO^z9O7YH?rJGie zVw`#|iqR8>Y>9~=*l|m6&i)I-@#bgZgf%jn3R;X7Z=C5 zP!h3|<+6zO*O@l0V#o(g&LcI!9AH=FrSG4;9JTX$UjF*^OQ+krgwwg9xTM5mdLfk8 z;d*~4AMN*WfAH6tlRKh!Q^S?MqFpOSSg-y3e66*>TDCREmawnoS|9!`G^}V&>o}M1r{ufUlDqi4qmMS`EXC&J3eVAO!myo>dF&z4K zfNv>>YJa}}b3<}HBzG=9FK;VtVoNT;R_^ES_#`s?M!Fl41vI*j-VqBZ1F}JOj)-@S z&v3|;eN`4)HxTM3>70>VIXnLlhmfZ;xuAE3o%NLQmzlw2oxsKZ*f;SrNE@d3ZLmIk zqnZKW}nj(n(~GE;OAg z&AqmOq*Ob_Dwz*d77>Nmf1poGNGzEiGrE9amxDjLlHd0fzyjlwOo%$88!~2_bNOJr z^;OvLq%_jR(q{MB%HK9)c~*?lW|A#8_wGI~OfYuy^``wh&+N_74!t&3_VK#B>m`q$ z?>rUyGykU&dZwR4%EeX7^U`&Uc;59-B@^T0yEReL2?9Dh>rCkWw^+5iIxgpR}RZci&sfBbK>9#_@#MA7jnU(UK=6PrLG2iyc#nuQj_Y=|J<3iF4>J zaBO^;Z{L0U;7uWm%Dsuvl>msC!J0+5*SA+uK?Ng@+pmN6m$|=&YkE!UO|1Z3<%=A< zX1)uYOuOs8_=gwvksFl!#A)xC-qWH0YY%N+#w7kjm&h^X8-KWv$<-AL_vSnsh0xgV zx)`jOcAalDVG4#gE@^i?^Bzfwi{WuG9o=di#j$dzNtp|DrJydBtw)I(O77PpB| zP5i=uz}f7wPu&}!_6|A2i@VQijJ`yVJ63An4y=RMGgi->037Qq3n!9S_CNE%-mX;g zz(y!QN#BRK#r$mNMEBNi#KApB=E-eiR1gGoNYXV89suTvu$`V$P703a@8NluNOEcE zIX!F;ibx0tf?$XPC`c$AST5%?W$M!*`+^-54%B0z6LA=nIN}BvwwlQr?4aYxPWtzO znE*n3i3e7r&k`?zNCt7onNqmWD0EwVXAoOW`Z!x6PhyJbJ!z zJ%X3<*d&a9UBgGdfs3fO#QzO_qQ>7H1RI*T-rlTij!*FU+I-A1cf&9WxVQ4cFGu90 zlKV6ZR)3qHHr$ zKIySU(>Na%1ERkKWH!}@IO0*vuT_E9^RJSa$_?4Ufb5QaN1>;qRN_w^2;B*fs+zz1 z|7574aJv_Nb&{xG6y-i1<2&ZXMZ;A19@jGCLkxvQF5-r0>UVHNa;%ph7`W+CVId$M z{4;ndg|)GFK%#Y@VSGr~QT#lTKY_XcO^Ed>K@`=wo;=i=ZFnLqDm0w0pfu}0E|4t5(^`_Bq#g?= z``$Ixe;Sy=JF;u}5D{dGfZ;bg7PzC|fFMC}E=g5J`fggCt;xQCQ$4JJaB%ZIZS}U} z{C~f~9;BG`|$qpLcqd-9{`31&H7v7Pq+G{^_F?4NDqHuSow6(JtL-G$(;UQw|!;B%V$V zP)HI6lDT-cc8m_#uu7jQW3@hpBf8|WkQ^SYk@EuKrfzp?>7rSI)Y%1z|Avla1)heM zxWNirZA706fJb+ML8!^?y}$*2Gk(}=$`^+R{zSjY;_iX;lgtDGC+UA(8BPvQ;#xf& z&VeE6R8IbBlPc}Nq1_Lq)Gd51am4n7Yuh}%haTpEaS_Q8 z5umd&zYgm%neJqLm}LBj?ETZokXIFvk~t>92C{27nwAd#-vXAzEDl)out(GO==*16 zU{djJ_WtOg-5B$@tk=dhfZmks6%(NZZRd#%!Ymc*dE8jA(eJTM43E~Q&nGYGP0^iX zRy~<%uk_k4a<63{zb8`%{d&zJt$Uqk@nkinNxxGx!cJ5i?yMjXj#(1;68JaQb-#WAa-tYEH|7A=TE8Lsfl7f&3H6PBHhB@u!2 zbS!oR2Z)-Qz^t9WrCy{$#{@1!dbOMzU(+XXnGaKBS*X9@An*5pZEyjoYDf82$0#U> zt3u)LTn7#SxxvbLf#x(7rFp{BAWMFg(x=?0os*q@#!r6L>)tf6?d+ddzdDhgg0#5g z`Q8Ciq^QU-jU6J^yPQsZ87Y6)Y){`ESqC<V#?4U&$7Iu4`nD+;0tVHGPp=YkSgm@&-TIH!MCVMY5w-nl0r)ZRs(#g-c}3Lg_eQmU$u z@6Q(ZP5EBJ`K*jzRCjARu7;Xq1vTB*H1F$ar&W=F=tH1TkRAhJ1sRrM|7v(0!^3lT6GAp^NX9WjjP{ z_8RJw%qKjF!|QE(v%v+CT$nO8Me;}u;NWB>BXEaCWAuuLR&!+@?x=6 zdxi{_MFQHm!A_pm2zN}{gj*{0NX$=}r7;NYj}LN1IYIZiim&B);(XlKZ+p17y!M+P z*s3OzBR~Vz_~!Vq%XDJEbhiNWBKT8=v9yM?MVcuHMqcd_zP0C>q+tK2bH3}H4BKxu z8fMCtfF+*66T}i!oud6a1ra@Av++{m;<&=^!VJx71wyL6&Ja0dYSLFrRKR@KZKgV) zetmp;BzWieM#ZYtYws+F09%Nqnj7nP+9^D zK!u~e^NBkvkz{5Xu)n}-#>ejZKN=buDmWgd6-FPUzXyXAa*}^xuvm-*sXGBf9E=w| z*SY1UdKOjaQg8a&kTo^!-Rmw$2W@C(Wuhb%ePXpIXN3X=?OZ5haKa=Jo_izuBsg16 zpD@t78CN(+tBO7@=X`Q7}d~@Z34vhso6n+=| zn+4%Slh}`ICsB@y-cjjugd)^2kN3FQz#yC4D<&0_DQY3Y1qwcjKFtz$P3i#pZ#W<8 z0C=i!+^K?x6bt6S3r8J;1{ zuQudJ;I4qhtu!2lQcEt9z29tTo)j;%QVZezw>kU=5diwrDBf$>>97sS+2l%IT?HB@ zM`v4s%c`m?G&IBjAW^4>7GqT>T$48HV+0@o*t%%AyWzhTa&t<+pGyArEuruF3zehJ zMjn6OMQy9hkK-OIrRs#{cu5NnRJsILsP8uRLhkM1Z88W0=briA~k z{5X>Xbo8whEQqkC0H;g3aKt`{;B4~}h+V;9Y&r>pNtx+?%ON`jX|w75=N2^b)u#N` zoZK$|l=`de0@BNL;CfhvE%%HJl}bzEnWq814cZ4aGk3@8jX0u@TRos`_4Z^V@h~qnq+pN99t$P# z)77`jN?N5@GMRG~(Pc2MFpB@^-F=0AKe!Flz%Mr@og-ubawpO#J7x|`jD>>Aw6_N~ z)hHX_X<0T!&z=Tp)iWItzbrDiL`BB!jBiO2tuiyOsI`CYt(+pS-OXG_h@%q^I>I(g=7B}}I`I+67v72q+-4pBCXb78OmX@yWAa=hz zr?-gq!&n#m`S2RC$c5Rs zZsy_RBp%k@Ls|G;_1kjJc~K5uTkuigL1(qVI`;lsI1BwRJLryBx)IN^XTq$^K4DMCUsupG)eECkJv4`3z&dlo} z&!C1eNz@pAYWkxggF%=H>S}tNOg`w^<1*0aN38KRL)CGgDw!D2lo% z_bw>&)=+GNt`$za;EC&Bbs@y0+j^t&=no2cF|=l5LeOn5rI@>nX$*(;d)r)~>zlLm z_R(0~WgNhIxk30rdDKVm2;=In^G&uI_E`|nw%;kd4Zc-B4F+=xTAaG(?lmznQS0*X z$#0idERj#ea(;I9d{$x`l4KUB9^BG~%mLRn(c2u^Bl;vbPFGt#;3ktpqG&YgX%sO` z{#@2{hRDYIk?@>z5Kx&;2#)DugG6N-U*nT#^mWwz`!Z3Dp)ke3QZGN&0fW|VV@dgb zOW5kkNqa#zL9s+1cKl85FA@z}ij{UnfVk!L_4Naztsk1B*&hKgg37G=#k)rs2AO_> zBivYQN(tBV<>01o2GM+PS$R);%s=sf!N!t})UYI`p^b$?onR)GXQs8^GkYfEE>aQd zbeB9U1cf)UTsuV{bL8f!5PK9EQcRBR4{yfo@N z+tSpzc!Gjesq@Sp)93=|kd1_Jn|{=OpXFpKgFc}c$M{(3&!aqmA5W{+ypVcD?lj8t z!}5^e2v}s`N(8N_SrB0$?^<-hq1RYL2yB#_sJ`76z=v3L5F!IFBk$Z1oj5m`Sb`24 z-sM*n&#V~aQ2!aC>|O6yy!NRX` z1-LvsW#*kx!QCu;k%J>nx$0Ox;AOf~xA#X0DFrmT<9GaLpscxth2h&6N}%<=fPkZ?g|;xD${B1XG<8X%USH+yw2Q;4(=*ZYzpjRa68_- zXs_9@lvZKhHh6Em;H_`^M;oxEo#Qhv_;1K#zlei;Ej76ZZ%gN-(jJM5a5@JuXF+d- zrG;OdR=INRatcIg5TGzKGgE~$ zSGjA=gu0>uoos=CAl_JI4(=jV!M8drMhx4k2f+ZY7?1Wr(ka%!hV&&{1c4us{QT-q zyQaJoaM)Xs?WoIXem|D}_g`|!?(fk8~r*7{6L%%H*vQPCrad%uc4-g%Sc9-CLPou{>@t(qsf(E@3bR|Jjdage^vekux*@O7He%J-cXT zwrzh#kU=;on)>OJjzl6I`EE8SMZeY}-gh&!7&o|iKQM5kV}e`kL6g+En$5HOu;KQ) zy1F;%j;031{Dl3@oV>g|#-h;m=W?pFkIXY+dwHiU7YvPug|F<3_~P-B;^Upe@y3zs z?T3@SzWBSnd&k>*pLbzz-)mQhpgppnF}`4tr29)lQAz3B)Qwt! zthZTNy43XagWx-JN$>}^_&rsGfjK!jdq#_uUS3`bbq5>3nVG|WR6j6a7wYal{wz6N z%_Wv3H`=}__gFXQSaNdms(te3xW?pIU$utY95p+;*qC0os&ebek%sLyT)(yfMY z>6CR0X+U!qwvygIvI-HQ{$Uqz^=_qlfpkF*zanVFd_3zTfZs~ig8g725!U8lfqyeAgzUphK*Z@e7{ zn_BrR9A=uei>=%?0oyMHz;v!{%Ii7z2*8(Ay7sI%? zgt~VR?*8B>KEO?>a5Lv{`(WSjNYBtKTy~!RLE-8)W*6ilwAFRhHIc~8&~h#=QFANP z(-)%LSBvMf945v4gQd>gRW2)66Dbn$E=PO_}M*Bz0fbTM7BHgA&Wnad|2DD6WjSn0}~AGGk;pUq#W-#_>j z&qu0;QK$p@ym_~OxPQ_9(n2v}QzfrS&YZ8fQqT~=+z4=S86HrcHS7o-VXBP(qOylZ z`gb_g+;zeLG*8`4(A>h}`Dn2$Ve);QpF~4_QD0wQJb^%fewX=u`Rx3@1pTS?hk6u^ zoaH<>7aOy!N&X$Z`mKuf^&L`L9^$bEg>UTZ*Xv03r%NVbVQC&kStRL$3`XO!h!;SQQOCVT1INU4(`q{)U)CB@zGma0lm%Y zM>;ZnEcr_~%Q@l@$Q7DXRbZ3%`?a+-xuE&b@@hU2$JDCdTfwGDoszeG@A>%KjW1+! z`-dIURy_5Rv70Bc3eoctZ18K1JISNT$q5ske@S&R3$;1W3AtgISHq4mA9i zBe9xSF5+^_3tG-V!rqkz2K=I)^gWcd-3Z~bZ+^NQ z5`sj9E?C;Rl6DZ?LrG6Ive%#WiOzc6d^v-_Ir!w)?R*6X#N528W@_m;wx!~9uq*cw z^cB`<`eidezwq@dFFqKAuh`kOc&>h)>0@s-AIUA9I|m>{jz(-$DVxylc2USj8y2gk zXpSd!blx_JB&?Z4ig%XFe&bW{jC&3df>C3>s2OIPrrFUHlkiF9*QC)UCH^5wLli9? z(uEB9nvvHOGQTNGh8+w#Jzzz|E5@O?gsdMP{fHO{E%&*rm#L@G--``1%JcJGwURp` z?W4l`NL-$oZ6IoW$t-h~t_b#=gg@{w$B{4Mr-QrKo%hSn5vurwdKIfmL;mCvQB1Hh zTiM9Qig-_=9(c5{JS`Gg&t8l0!=Q?5b;1bw@uSZBX}DXQ=Yt=eqhtooCk_i6b35M9ye@&JAn%t3V(^c(<&06H z)mo@G9|_Q0Fty)W&6uv3P*)s9nMT+EZrKT5Sxw#y6>$4d*e%sO{k#Jexh?h z-rtaE+Sr*-&-AhOg@m*XCcX!oQ-S z`j1BT)>**2Gp*7R{UcjBTAD_>ywT9cLKbVCQIKlK8u;t}!jt?aCG^l35k)8sd@k~( zpF`~_4<+VP5l>b7wGa`kEdwk!lwq=RM<1&R1*4m(!IjK{=|vz8YR}-`z-6)$!V8!= z<^Mkn20gBo;M%+E+`k+W)6zVFG!3TPdC|T5GmpZ`hiq$pB81XjD0Mv33da<6?kY~& zo8coO5d%#b^!8fXN6Q08LH+beeYMXZLj_G}PJvA@JswfR%vRV$jQV?}l)fA4N)QuneROn+P-eOx`0$UNpl-)8@G#c#M5>tmJlG)rb7Dh(jFJ>)u2 z8h~sv(xb__&P3FJx0|BM@PyjmGfr&;6M$&j2ZS)7_Pd>-7Fz|d_K%qBiMUIKcFzdj zK;Ef6$ISA(0212>_y0C^8m%t#n%Ly9CzYuG=*N~D>d}b%PHhX+US}ATg2+K1qztzf z?C`G>-aO8!i=S50eS7J;H?+EM8+^%$qWv#>v!zbn~E$W-)3y}9pcbxWAJ{N z=!J8-k(P`cM4)t}JD!oc2=}A&a5j+X48@q8EeX|@(i@Sk*;kLJ>6rVE_Z=Iw(6XqzWmb!a9pX1Ff>OnQ#z&XbrvuN{#6EV zn3K=2FRaJTMayTZM^V*;$SdJVV{+sMSfnb;BMV1i)fT+Hg#0+*FC~JxQ?r(MK z?1hJMR@r(&6vaUvA%Ic2-kyL5d(qs4TBIT+It(EU7AX#xoGuBfUeLyky5~ZquMsY9 zCnv9b@8nHTRBO6P4h;A|fF^qyTpogENyRnkgs`=tZac=ZRDRf-P?&%E_`{5DCIQus zN+uwDab#}#%Y!Xn&s;r0kAHw53sd=>BY*O~S}eE-7K-ifUx9UhP5}}rLWHMV8@*Au zu$Rpd1=TJMVUxUha4f50yT$ji<;$6-Ti#LDouY zuB;mPV$u`TIEOq8J^;wl36`$n1 zRGA-AmK3N%o)&la*CG@ zRumTv7es3!6QKcbALORx)>(S*Dj<-m3eg41qi)1FacC&txl=$#GAvg+n5C$)d1lP8};@V*DA8(@)jny7bshZB81}o&sY|>I(dPYSW@EzU5O@yZZfbXgf`PRC6qfRZciCe|f9h!!Wlk7h8O-AAP z9FJuyy7H*%Av=r~Ge7$S?x8+Awv;B=1}u$eX1ri0sdNJb}5CSbAleA8Hc%I`!aS1I~yS>h}aa zv1WdgWz0vPp6F7w~zc)a8>{<~2p4sU@UCV!aU#Hl~B+@2TyWqI;9IImL*S50Kpza<0|eW$)Lp<8jW@>wE8zs)Ds9WoqD>G z4he{L*HXJyb=+C}nYD{hZIO?*7|abr6bz=$-OrQNcjhV?cf;3H6tM=yU@%T;74HY? zvppsy`_=;LVbF@hI5CKXr*6-0ODFM=rkiqpn9K1AEgxDU6?doZ0@dnSA4wIx8g%Js zvH<5g7}Fa5$sGJ9JVz}9R2fw)B*fr?Esq?)*S2n)0j)oFb((fd|LSvqHK5N^3VWv9 zAF)=YWpdvmjj$dchyPi|_W*pLO3rBC2g1jYKl_`n@npgAXUADsQOEn#AV2$Jzo3vWn^W|PS`FKnzgmHy)h6ldU7YB6r}hL|MZOX?11nyscuk5 zGU1AWeJtX%g|zyqnNtd<>J?K)X(mOiI}GMMSc;`1`$+R~*^@Cj!Z4S{gyUNTRg0tT zDF0~n`g)Y9l>S}f7vr^r6ZgxBeu<^tUTj|jxd#>1$upg+_ik0p$Om$gLG3JmQrM5_cBMoKLRk_u6?EDgubGh@K%wPG3hdCUbRv+MoEdn1E6W_`E(Z>E! zOh)G%g1NJ-m$x1bGF2-1a2aH=4u_pr`(k%QcBXW>{XO3~^+tfJ&fG)s=f0B&W&4Na ziuUQa7G%ldqS&?p`qgfM`Q>X5L3yAK-hD#W8a~nr8Qf{!m;GRz;)}o>Qx8+hc&Q*>7xj zhF$XF)=|JM{l|k8f12&R{K*$B>^QauZfmiQMMBQCPb3;dy3?j+5LU!}_kvY`q)m(AmQ*M#l5mPnurTtk!rzwU^Yg1eF z_GbK9V&qhfo7(uVoXI+hkxHyl>~eAB&JuYxh+R%g@DNY+yZc)CYT>fQ250ao7kbvm zq34aROp(6Sb|>gt?AVHgc}MjZlFKT%W88uLSA&|GZ|;b2bHu^z>8mP6_{;4zPdoG_ z8U+>%rZA~8h@qYSUSr}^#k{@OJnP@(*H*;w!(rVsgfqtoMq(K8G*~~Mi z_TvcBCr;eXhVKTxM0R0o5xUGHzC3l6OCSmTnQytavo3Wj)%7^IW7)55+d;ng!HcV= zT#e7vJG)`#V)MWkeeIK(S6MDA5!JwkyH6{?A+Yxs@q}X&^wbE4$+O8Z?4T=CvI?tH zX-2m$dXI&C96hl7ZkWVpII;UTpbFLKo4Lq3mwhtIo~Lm_Y^34P$e{`5(A1pf$&Osd cs%_yFA=R%o;nj1%e-|z*GaJ(yk}@P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0j)_yK~y+Tm66FWLs1lm{aJQaw)QrxL@Y!i zLSkbh54~JbIl^h{BOk4SGpv?^*!3Q@QftAd|{+7NU$-PcP z!Mj%)ftAcdquD?xF0kPZVQg?o-E}t^*dciPQX{aEd03fUfby(-ROJ-ISyHF&T#W{{ z2wuN1e-~KEJnX1$$6h#TOYU?SSR;5PtPyZBe`Ox_(EILR3tMt~gMnp&7eX3A;9jV& z>?o>17r$>*q>^h3YtUM6D0t>XBRIPK`inT(OYmkyq>>lUOw65{m?n5Kpb?}eGrW3k zrjlnF4w{%Cc=T8!NKalNc!{=J$x{T6`%R1x?D72~;EVqr02!YuDkqmp`Fg7W0000< KMNUMnLSTZkC+lSZ literal 0 HcmV?d00001 diff --git a/src/docs/static/content.js b/src/docs/static/content.js new file mode 100644 index 0000000..d183a16 --- /dev/null +++ b/src/docs/static/content.js @@ -0,0 +1,443 @@ +/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="
",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f +}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML="
a",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/\s*$/g,sb={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:l.htmlSerialize?[0,"",""]:[1,"X
","
"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?""!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("

¿¹Àü º¯°æ »çÇ×Àº º¯°æ »çÇ× º¸°ü¼Ò¸¦ ÂüÁ¶ÇϽʽÿÀ.