Installation

MenuApp is supplied in a zip file. We recommend creating a new folder under "Program Files" to install menuApp into, like this:

"c:\Program Files\MenuApp".

However, if you want to install the files somewhere else, that's fine. MenuApp isn't fussy.

Basic Usage

MenuApp displays the contents of the folder in which it is run. That's it!

The easiest way to see this in action is to create a shortcut pointing to MenuApp.exe and set the "Start in" value in the shortcut properties to the folder you want to display.

When you click on the shortcut the contents of the folder is displayed.

You can point MenuApp to an existing folder or you can create a new one containing shortcuts to all your favorite programs.

MenuApp displays sub-folders as sub-menus (unless you tell it not too - see the configuration section below).

If your folder contains a link to another folder, MenuApp displays that as a sub-menu too.

Shortcuts appear on menus without the shortcut identification arrow (because this makes the menus look nicer).

Navigation

You can use the mouse and keyboard to select menu items in the normal way, but you can also go directly to an item by keying the first character of it's name.

If there are multiple items starting with the same character then repeatedly keying that character will select each item in turn.

If you hold down the shift key while keying the character then items will be selected in reverse order.

Special Folders

MenuApp knows about some special folders which are displayed using a command line parameter.

The format for this is:

"C:\Program Files\MenuApp\MenuApp.exe" -X

where X is one of the following values:

AAdmin Tools
CControls
DDesktop
FFavorites
HHistory
IMy Pictures
KDrives
LMy Profile
NPrinters
OMy Documents
PPrograms
QQuickLaunch
RRecent
SStartMenu
TTaskList

If you use one of these parameters in a shortcut the "Start in" location is ignored.

Note that only a subset of the above list may work on your system, depending on the version of Windows you're using.

Embedding special folders in a menu

Using a special folder via a shortcut as discussed above is all well and good, but what if you want to embed a special folder in a custom menu?

Well, you have to use the following filename syntax:

!MAXXXX_-Y_The name as it appears on the menu

Where XXXX is whatever number you like, so that the entry appears on the menu in your preferred location, and Y is the special folder code.

So, if you wanted to create a submenu displaying the current tasks, you would first create a new text file and then change it's name to:

!MA0000_-t_Current Tasks

(NB: without the '.txt' file-type suffix)

menuApp then renders this as a submenu item with the title 'Current Tasks', pointing to the task list.

(The "!MAXXXX" file name format is used to control the order in which items appear on the menu. This is discussed in detail here.)

If you want to be able to change the icon which is displayed for an embedded special folder you can. Instead of creating a text file and renaming it create a shortcut (doesn't matter what to) and rename that using the above format. menuApp will ignore the fact that it is a shortcut and create the embedded folder but will use the icon associated with the shortcut. You can set this to whatever you like using the standard shortcut properties dialogs.

Other command line options

If you don't use the special Special Folder format described above you can pass the target folder on the command line like this:

"C:\Program Files\MenuApp\MenuApp.exe" c:\temp

With both the special folder and target folder format you can pass an additional custom config parameter, like this

"C:\Program Files\MenuApp\MenuApp.exe" c:\temp ConfigName

or this:

"C:\Program Files\MenuApp\MenuApp.exe" -X ConfigName

The custom config controls how the menu appears and is discussed here.

Server Mode

The first time you run MenuApp it will display the specified menu and will then stay running in the background, in Server Mode.

If you run MenuApp again to display another menu, details of the required menu are passed to the original Server Mode instance of the program, which displays it.

This technique allows the Server to remember the contents of any menu it has already displayed, which makes it much quicker to display it a second time.

You may notice that there is slight pause the first time you display a menu but from then on the menu displays instantaneously - that's the server at work.

The MenuApp server detects any changes to the folders it has displayed (for instance a file added or deleted) to ensure that it always displays up-to-date menus.

If necessary Server Mode can be disabled via the ini file (see below). With Server Mode off there is no caching of menus and each one is drawn from scratch.

Control Characters

There are some additional characters, used to control the program, which you can pass to MenuApp on the command line.

The format for this is:

"C:\Program Files\MenuApp\MenuApp.exe" -X

where X is one of the following values:

UStart Server without displaying a menu (useful for launching menuApp at startup)
VStart screensaver
XStop Server
YRecycle Server (clear folder cache) and re-read configuration

These control commands are most convenient when launched via a shortcut or a hotkey.

Configuration: Basics

MenuApp configuration is controlled by an "ini" file called MenuApp.ini, which is created automatically when you first run the program.

The file lives in your LOCAL_APP folder in a subfolder called MenuApp.

On Windows XP this will be:

"C:\Documents and Settings\username\Local Settings\Application Data\MenuApp".

If your system does not have a LOCAL_APP folder the file will be created in the Windows folder.

You can edit the ini file by typing CTRL ALT A, when the background server is running. (This is an example of a hotkey. Hotkeys are described in more detail below).

The ini file is broken up into sections, each of which begins with a title in square brackets. (To make it easier to read the file I like to add a blank line before each title. It's safe to make this change because blank lines are ignored when MenuApp reads the file.)

In each section there are a series of attributes and values, like this:

[Title]
Attribute1=SomeValue
Attribute2=SomeOtherValue
Attribute3=SomeValue3

You can edit the ini file while menuApp is running, then save your changes and type CTRL ALT Z to recycle.

The contents of the MenuApp ini file are described below...

Configuration: Default and customized Sections

The Default section controls how the menus drawn by MenuApp actually appear. The attributes are as follows:

FilterA comma separated list of file types, e.g. txt,doc. Only files with the extensions specified are included in the menu.
If blank, all files are displayed.
SortNumericIf 'Yes' then file names are sorted in numeric order i.e., 1 before 10.
If 'No' standard alphabetical sorting is used.
DisplayIconsIf 'No' icons do not appear on the menus.
This can speed up menu creation on slow systems.
DisplaySubDirsIf 'No' only the contents of the specified folder are displayed.
Any sub-folders are ignored.
DisplayModeDefault - Flat Menus
XP1 - XP style menus
XP2 - XP style menus with drop shadows

Note: Windows XP draws its own drop shadow so use XP1.
XP2 mode does not work too well on Win 2000; XP1 is recommended.
CombineTasksIf 'Yes', when displaying the current task list, similar tasks are displayed under sub-menus (i.e. if you are running 3 copies of notepad then the task list will contain a 'Notepad' submenu which will expand to show the 3 items).
ShowHiddenIf 'Yes' hidden or system files and folders appear on the menus.
FoldersFirstIf 'Yes' folders (submenus) always precede files (ordinary menu items) when the menu contents are displayed. Otherwise the folders are sorted by name along with the files.

By default all menus use the display settings listed in the Default section. If you want to you can create a new section (call it whatever you like) and use it for specific menus. This can be useful if you want to set up various different filters, for instance. The syntax for specifying which display style to use is discussed here and here.

Configuration: Server Section

The server section controls if and how the background server works:

EnableServerIf 'Yes' the first time MenuApp runs, the server is launched.
If 'No' there is no server and each instance of MenuApp runs independently.
AlertOnShutdownIf 'Yes' a confirmation message is displayed when the server is about to shut down.
AlertOnRecycleIf 'Yes' a warning message is displayed when the server is recycling.
AutoStartIf 'Yes' the server is configured to start when you logon.

Configuration: HotKeys Section

Hotkeys allow menus to be launched using combinations of keystrokes.

The hotkey section contains the following attributes:

HotKeyCount=n
HotKey1=Value
.
.
HotKeyn=Value

where n is a the number of hotkeys.

The hotkey value must be in the format "XX|YY|ZZ" where:

XX is the key sequence
YY is the target
ZZ is the (optional) coordinates

Key Sequence

The key sequence is in the format MOD,MOD,Key where MOD is one of WIN, CTRL, SHIFT and ALT and Key is the key itself.

The key can be a simple character like 'A' or it can be one of the following special keyboard characters (note: these may not all be present on your keyboard):

LBUTTONLeft mouse button
RBUTTONRight mouse button
CANCELControl-break processing
MBUTTONMiddle mouse button (three-button mouse)
BACKBACKSPACE key
TABTAB key
CLEARCLEAR key
RETURNENTER key
SHIFTSHIFT key
CONTROLCTRL key
MENUALT key
PAUSEPAUSE key
CAPITALCAPS LOCK key
KANAIME Kana mode
JUNJAIME Junja mode
FINALIME final mode
HANJAIME Hanja mode
KANJIIME Kanji mode
ESCAPEESC key
CONVERTIME convert
NONCONVERTIME nonconvert
ACCEPTIME accept
MODECHANGEIME mode change request
SPACESPACEBAR
PRIORPAGE UP key
NEXTPAGE DOWN key
ENDEND key
HOMEHOME key
LEFTLEFT ARROW key
UPUP ARROW key
RIGHTRIGHT ARROW key
DOWNDOWN ARROW key
SELECTSELECT key
PRINTPRINT key
EXECUTEEXECUTE key
SNAPSHOTPRINT SCREEN key
INSERTINS key
DELETEDEL key
HELPHELP key
LWINLeft Windows key
RWINRight Windows key
APPSApplications key
MULTIPLYMultiply key
ADDAdd key
SEPARATORSeparator key
SUBTRACTSubtract key
DECIMALDecimal key
DIVIDEDivide key
NUMLOCKNUM LOCK key
SCROLLSCROLL LOCK key
LSHIFTLeft SHIFT key
RSHIFTRight SHIFT key
LCONTROLLeft CONTROL key
RCONTROLRight CONTROL key
LMENULeft MENU key
RMENURight MENU key
PROCESSKEYWindows 95/98, Windows NT 4.0, Windows 2000: IME PROCESS key
ATTNAttn key
CRSELCrSel key
EXSELExSel key
EREOFErase EOF key
PLAYPlay key
ZOOMZoom key
PA1PA1 key
OEM_CLEARClear key

Target

The target contains the full pathname to the folder you want to display, or one of the special codes listed above.

You can also specify an application or a single file in which case MenuApp will run the application or open the file.

The pathname of the target must be enclosed in double quotes if it contains spaces.

Optionally if the target will be displayed as a menu you can add a custom config name to control how it is displayed. To do this add ",SectionName" to the target where SectionName is the name of your custom config section in the ini file.

Coordinates

This part of the Hotkey configuration allows you to control where the menu is displayed.

If your omit this the menu is displayed at the current cursor position.

Alternatively you specify a specific location in the format x,y.

Or you can use one of the following predefined locations:

CENTERmenu appears in the center of the screen.
CENTERLEFTmenu appears 1/3 of the way across the screen.
This corresponds to the center of the left hand screen in a two screen setup.
CENTERRIGHTmenu appears 2/3 of the way across the screen.
This corresponds to the center of the right hand screen in a two screen setup.

Hotkeys may be used by other applications on your computer, and only one application can use each combination of keys.

If you try to register a hotkey which is already in use, MenuApp will display an error message.

Default Hotkeys

MenuApp creates some default hotkeys when it first runs which we can look at to illustrate how hotkeys work. This is how they appear in the ini file:

HotKey1=CTRL,ALT,Z|Y
HotKey2=ALT,X|X
HotKey3=CTRL,ALT,A|"C:\Documents and Settings\username\Local Settings\Application Data\MenuApp\MenuApp.ini"

The first thing to note is that none of the hotkeys have position parameters. This is because they are all commands and do not display menus.

Hotkey1 sends the recycle command to the Server when you press CTRL, ALT and Z, holding each key down.

Hotkey2 sends the stop server command when you press ALT and X.

Hotkey3 opens the MenuApp.ini file when you press CTRL,ALT and A.

If you delete any of the default hotkeys, menuApp will put them back next time it starts up. You can turn this behaviour off by setting the SetDefaultKeys config item to "No".

There are more example Hotkeys in the HowTo section of the help.

Configuration: PreLoad

Menus can take an appreciable time to appear the first time you run them. This is particularly true if you are accessing folders and files across a network, but there can also be a slight delay even for local folders if they contain large numbers of files or files which are very large.

Once the menus have been loaded into the MenuApp cache they appear almost instantaneously but if you want to avoid the "first time pause" you can use the PreLoad feature.

This tells the server to load the specified menus into cache (but not display them) when the server first starts so they are already loaded when you come to display them.

An empty PreLoad section is created in the ini file when you first run MenuApp. The PreLoad section uses the same attribute layout as the Hotkeys; a Count attribute and a set of PreLoad attributes to the value specified in the count.

The value format is simply the pathname to the menu you want to preload. This is exactly the same value as you would put in the target section of the Hotkey section. If the path contains spaces it must be enclosed in double quotes. You are also allowed to use special codes.

Item Ordering

menuApp supports a simple mechanism for specifying the order in which items appear on a menu.

It works like this:

Any item whose name begins with the characters !MAxxxx_ where x is a digit (0-9) will have those characters removed when the menu is constructed.

For example, a file called "!MA0010_Photoshop" will appear on the menu as "Photoshop".

Also any file called "!MAxxxx_bar" will appear as a grey separator bar on the menu.

Using this mechanism you can put together a folder of shortcuts all with names using the "!MA" start codes. The numeric part of the codes can then be used to control the display order of the items.

So, the links and files shown in the Explorer screenshot on the left are rendered by menuApp as the menu on the right:

Explorer screenshot Menu example

Note that when you use item ordering, folders (submenus) are always sorted by name, regardless of the FoldersFirst config setting.

Merging Menus

menuApp can take the items in two folders (and any subfolders), merge them and display them on a single menu (and submenus).

To do this you need to first set up menuApp to display a folder using the shortcut mechanism described in the Basic Usage section.

Then you need to specify the second menu on the command line using the -M option, so the Target entry in the shortcut properties might look like this:

"C:\Program Files\MenuApp\MenuApp.exe" -M "C:\somfolder\somesubfolder"

Then launch menuApp from the shortcut and the resulting menu will display the merged contents of the folders.

Running from a USB drive

menuApp can be run from removable media like a USB drive.

To get this to work you need to put the menuApp ini file in the same folder on the USB drive as the menuApp.exe. menuApp will use this rather than the ini file in the LOCAL_APP folder.

In some circumstances it's easier to start menuApp using a ".bat" file containing a command something like "start menuapp.exe". This should work without any problem.

If you want menuApp to display folders on the USB drive you can do this using the shorthand [].

So, for example, if you have a folder on the USB drive which you want to hook up to a hotkey you can use an ini file entry like this:

HotkeyXX=CTRL,T|[]\foldername\CENTER

Other features of menuApp should be unchanged.

Miscellaneous

Opening folders

If you have a menu with submenus, you can double click (with the left mouse button) on the submen item, which represents a folder in the file system, and Explorer will be launched, opening on the submenu folder.

How To

Some configuration examples, chosen more for their coverage of the config options than their actual usefulness.

Display all .tmp files in the temp directory

Centered in a single screen, linked to a hotkey.

[Tmp]
Filter=tmp
SortNumeric=No
DisplayIcons=Yes
DisplaySubDirs=No
DisplayMode=XP1
CombineTasks=No
ShowHidden=Yes

[Hotkeys]
HotkeyN=CTRL,ALT,T|c:\temp,Tmp|CENTER

Display currently running processes

Centered in a single screen, linked to a hotkey.

[Hotkeys]
HotKeyN=CTRL,DOWN|T|CENTER

Display control panel items

There are two ways round this. The first uses the special code "C" to load the control items directly, while the second (slow) method reads everything in the system32 directory then filters it.

[Cpl]
Filter=cpl
SortNumeric=No
DisplayIcons=Yes
DisplaySubDirs=No
DisplayMode=XP1
CombineTasks=No
ShowHidden=Yes

[Hotkeys]
HotkeyN=CTRL,ALT,L|C|CENTER
HotkeyN=CTRL,ALT,K|C:\Windows\system32,Cpl|CENTER