Seek is a nice script, but it has some problems on none-english systems where the commandline codepage is not equal to the GUI codepage. (It was done some decade ago to support already outdated codepages of DOS era).
One of the examples of such systems can be Russian language system.
Even on systems without such problems it can speed up start menu caching significantly.
The problem was solved by substituting the original external call to "DIR" command by the following Autohotkey code:
/
The beginning and ending comments left intentionally - so you can easily track where to place this fragment /
Code:
;=== BEGIN ScanStartMenu SUBROUTINE ========================
; SCAN THE START-MENU AND STORE THE DIRECTORY/PROGRAM
; LISTINGS IN A CACHE FILE
ScanStartMenu:
FileList = ; Initialize to be blank.
; DEFINE THE DIRECTORY PATHS TO RETRIEVE
scanPath = %USERPROFILE%\Start Menu
GoSub, addPathToFilelist
SplitPath, USERPROFILE, name, dir, ext, name_no_ext, drive
scanPath = %dir%\All Users\Start Menu
GoSub, addPathToFilelist
; 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 = %A_LoopReadLine%
GoSub, addPathToFilelist
}
}
; DELETE EXISTING FILE BEFORE CREATING A NEW VERSION
FileDelete, %dirListing%
; WRITE FILELIST
FileAppend, %FileList%, %dirListing%
; HIDE THE FEEDBACK TOOLTIP WHEN SCANNING IS DONE
Tooltip
Return
;... END ScanStartMenu SUBROUTINE ..........................
;=== BEGIN addPathToFilelist SUBROUTINE =================================
; SCAN DIRECTORY FROM %scanPath% AND ADD ALL RESULTS TO %FileList%
addPathToFilelist:
Loop, %scanPath%\*.*, 1, 1 ; Recurse into subfolders.
{
; TODO:: get rid of all System/Hidden files if any are present at all ?
if A_LoopFileName != desktop.ini
FileList = %FileList%%A_LoopFileFullPath%`n
}
Return
;... END addPathToFilelist SUBROUTINE ..........................
;=== BEGIN FindMatches SUBROUTINE ==========================
; SEARCH AND DISPLAY ALL MATCHING RECORDS IN THE LISTBOX