ÀÚÁÖ °¡´Â Æú´õ¿¡ ½±°Ô Á¢±ÙÇÏ´Â ¹ý -- 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