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: */