In the script below two easy examples are provided: at the top of the screen a list of programs is shown, which can also contain documents or Internet shortcuts. Clicking on one, or pressing the Up/Down arrow keys and Enter, runs the associated program. Clicking outside of the menu or pressing Esc cancels.
The other example is more interesting. A menu pops up on the left edge of the screen, showing a list of document types I often work with. The bottommost entry is CleanUp, which checks the entries in the Windows Recent Documents list, end deletes the broken shortcuts (linking to files not there any more). There are also menu items for deleting a link, or showing all links pointing to recently used documents, and selecting one opens it with its default application.
This menu also contains items named by often used file extensions, like DOC, TXT. Activating one of them pops up another menu, with the files of this type, referenced in the Windows Recent Documents folder. Activating one starts a specified application with the selected file.
There are many possible extensions. For example, the list of programs, the boundaries of the regions could be read from an ini file, dynamically updated.
Version 1.2
#Persistent CoordMode Mouse, Screen CoordMode Menu, Screen Recent = %HOME%\Recent ; = %USERPROFILE%\Recent XX := 0 "," 190 "," A_ScreenWidth -185 "," A_ScreenWidth -2 "," 9999 StringSplit XX, XX, `, ; Region boundaries YY := 0 "," 190 "," A_ScreenHeight-185 "," A_ScreenHeight-2 "," 9999 StringSplit YY, YY, `, Loop 5 ; MenuXY <- desired menu. Menu1%A_Index% = LeftMenu ; 11 21 31 41 51 Left 1Y Loop 5 ; 12 22 32 42 52 Right 5Y Menu%A_Index%1 = TopMenu ; : .... : Top X1 ; 15 25 35 45 55 Botm X5 Menu TopMenu, Add, WinWord, RUN Menu TopMenu, Add, NotePad, RUN Menu TopMenu, Add, CMD, RUN Menu TopMenu, Add, Calc, RUN Menu TopMenu, Add, www.autohotkey.com, RUN ; ... further menu items ; EDIT BELOW: ,FileType>Application Path Types= AHK>C:\Program Files\Multi-Edit 9.10\Mew32.exe ,DOC>C:\Program Files\Microsoft Office\OFFICE11\WinWord.exe ,MHT>C:\Program Files\Internet Explorer\IEXPLORE.EXE ,PDF>C:\Program Files\Adobe\Acrobat 6.0\Acrobat\Acrobat.exe ,PPT>C:\Program Files\Microsoft Office\OFFICE11\POWERPNT.EXE ,RTF>C:\Program Files\Microsoft Office\OFFICE11\WinWord.exe ,TXT>C:\WINDOWS\NOTEPAD.EXE ,XLS>C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE Menu LeftMenu,Add,[recent],LeftAgain ; Item1 = title Menu LeftMenu,Add ; Separator Loop Parse, Types, `, { StringSplit t, A_LoopField, > Menu LeftMenu, Add, %t1%, ShowRecent App%t1% = %t2% ; Setup AppXXX vars for fast call } Menu LeftMenu,Add ; Separator Menu LeftMenu,Add,ShowAll>, ShowAll ; After extensions, other menu items Menu LeftMenu,Add,DelLink>, DelLink Menu LeftMenu,Add,CleanUp>, CleanUp ; ... further menu items Menu DocMenu, Add ; Dummy entry for 1st DeleteAll Pcount = 1 SetTimer Edge, 250 Return Edge: MouseGetPos X, Y P0 = %Pos% ; Previous mouse position Loop 5 If (X <= XX%A_Index%) { Pos = %A_Index% ; X region Break } Loop 5 If (Y <= YY%A_Index%) { Pos = %Pos%%A_Index% ; Position = XregionYregion Break } Pcount := Pcount*(P0=Pos) + 1 ; How long in this region If (Pcount <> 4 or Menu%Pos% = "") Return Menu % Menu%Pos%, Show Return RUN: Run %A_ThisMenuItem% Return LeftAgain: ; No real selection: re-show menu Menu leftMenu, Show, %X%, %Y% Return DelLink: Action = DeleteLink Goto Show ShowAll: Action = RunLink Show: Menu DocMenu, DeleteAll Loop %Recent%\*.lnk { StringTrimRight file,A_LoopFileName,4 ; remove .lnk Menu DocMenu, Add, %file%, %Action% } Menu DocMenu, Show, 0 ; Show still on the left Return RunLink: ; Run default application with document FileGetShortcut %Recent%\%A_ThisMenuItem%.lnk, file Run "%file%" Return DeleteLink: ; Delete selected link FileGetShortcut %Recent%\%A_ThisMenuItem%.lnk, file MsgBox 4,,Delete Shortcut to`n%file% IfMsgBox Yes FileDelete %Recent%\%A_ThisMenuItem%.lnk GoTo LeftAgain ; Re-show Left menu ShowRecent: Menu DocMenu, DeleteAll type = %A_ThisMenuItem% ; Used in Open: Loop %Recent%\*.%type%.lnk { StringTrimRight file,A_LoopFileName,4 ; remove .lnk Menu DocMenu, Add, %file%, Open } Menu DocMenu, Show, 0 ; Show still on the left Return Open: ; Open linked file FileGetShortcut %Recent%\%A_ThisMenuItem%.lnk, file Run % App%type% " """ file """" Return CleanUp: ; Remove broken links Loop %Recent%\*.lnk { FileGetShortcut %A_LoopFileFullPath%, file If !FileExist(file) { ToolTip Deleting %A_LoopFileFullPath% FileDelete %A_LoopFileFullPath% Sleep 100 } ToolTip ; Remove last tooltip } Return
Edit 20060320: Single place for changes
Edit 20060320:
- Added "ShowAll" to Recent Documents menu, which shows all the links, and opens the selected document with its default application.
- Added "DelLink" to Recent Documents menu, which shows all the links. Selecting one removes the shortcut to the selected document.
- Defined 25 regions, where the mouse cursor is detected, 12 are on the edges of the screen. If the mouse is there for 4 timer periods (1…1.25 second), the menu pops up with the name MenuXY, with X and Y = 1…5. 1 corresponds the left/top edge, 5 corresponds to the right/bottom edge of the screen. The numbers in between denote left/mid/right or top/mid/low regions.
- The boundaries between the regions are defined in the strings assigned initially to XX and YY. They contain 5 numbers separated by commas, starting with 0, ending with a large number.