Introduction

MenuApp displays the contents of folders as menus and can also display system folders and the current task list.

It's a small, efficient app and is (fairly) easy to configure.

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.

Parameters

You can control what menuApp displays and how the menus are rendered by passing parameters to the application.

The basic format of the parameters looks like this:

menuApp.exe "Location" "Control Options"

Location
Can be either a path like "c:\temp", enclosed in double quotes if it contains space, or a special menu code, in the format -X where X is one of the following:

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

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

You can also pass one of the following control codes, using the same format:

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

Control Options
Can be one or more of the following, semi-colon separated:

MWThe maximum width of the menu, e.g. 'MW:300'
If omitted, the menu autosizes.
FLA comma separated list of file types, e.g. 'FL:txt,doc'
Only files with the extensions specified are included in the menu.
If omitted, all files are displayed.
SNIf 'Yes' then file names are sorted in numeric order i.e., 1 before 10, e.g. 'SN:yes'
If omitted, standard alphabetical sorting is used.
DIIf 'No' then icons do not appear on the menus, e.g. 'DI:No'
If omitted icons are displayed.
DSIf 'No' only the contents of the specified folder are displayed and sub folders are not displayed, e.g. 'DS:No'
If omitted sub folders are displayed.
CTIf 'No', similar tasks appear on the task list individually.
If omitted 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).
SHIf 'No' hidden or system files and folders do not appear on the menus.
If omitted hidden fileas and folders do appear.
FFIf 'No' the folders (submenus) are sorted by name along with the files.
If omitted folders always precede files (ordinary menu items) when the menu contents are displayed.
SCIf 'Yes' this disables right click functionality on each menu item and also prevents Explorer opening when folder items are double clicked.
If omitted, right click is enabled.
 

How to use menuApp

From a desktop shortcut

The easiest way to use menuApp is to create a desktop shortcut to menuApp and set the Location parameter to be a folder you want to display as a menu.

This could be an existing folder, like "c:\Program Files" or a folder containing videos or mp3s, or you could create a new folder containing links to anything you're interested in.

When the link is set up double click it, menuApp will run and the folder will be displayed.

These examples can be pasted into the target field of a shortcut:

"c:\program files\menuapp\menuapp.exe" c:\temp

"c:\program files\menuapp\menuapp.exe" -A

"c:\program files\menuapp\menuapp.exe" "c:\program files" DI:No;FL:exe,dll;MW:150

From a hotkey

menuApp can be launched from a hotkey, which enables you to display menus directly from the keyboard.

Full details in the hotkey section.

Using desktop double-click

menuApp can be launched by double clicking on the desktop background.

Details of how to set this up are also in the hotkey section.

Menu 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.

The "!MA" menu item naming scheme

Item Ordering

If you set up a folder full of of your favourite shortcuts it would be useful to be able to order and group them.

menuApp supports a simple mechanism for doing this, which works as follows:

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".

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.

Special items

menuApp recognises some special name formats when you are using !MAxxxx_ items.

Any file called "!MAxxxx_bar" will appear as a grey separator bar on the menu and if you create a file called "!MAxxxx_bar_blah" then the separator bar will appear with the text "blah" in the middle.

(Note: this text on bar option does not work on Vista / Windows 7 because it looks terrible).

A file called "!MAxxxx_ignore_TheActualFileName" will not appear on the menu at all.

Finally, a file called "!MAxxxx_space" will put an empty item on the menu, while one called "!MAxxxx_space_yyy" where yyy is a number will be rendered as an empty space on the menu yyy times the height of a standard entry.

Using special codes in menus

The "!MA" syntax is also used to add the menuApp special codes into custom menus.

For example, to create a task list as a submenu 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', containing the current task list.

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.

Merging Menus

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

Merging from a shortcut

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:\somefolder\somesubfolder"

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

The menuApp ini file

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

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 you can 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 ini file holds details of the following configuration items:

  • Server Settings
  • Hotkeys
  • Preload Items
  • Merged Menus

Configuration: Server Mode and Server Settings

How it works

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 more or less 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.

Configuration Settings

The server section in the menuApp incontrols 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

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 are 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):

CANCELControl-break processing
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
DBLCLCKMouse left button double click on desktop
TRAYSGLSingle click on the tray icon
TRAYDBLDouble click on the tray icon

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 you 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 in the center of the left hand screen in a two screen setup.
CENTERRIGHTMenu appears in the center of the right hand screen in a two screen setup.
CENTERBYMOUSEMenu appears centered in the screen in which the mouse pointer is curently located.

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,H|W HotKey4=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.

Hotkey1sends the recycle command to the Server when you press CTRL, ALT and Z, holding each key down.
Hotkey2sends the stop server command when you press ALT and X.
Hotkey3turns off hotkeys when you press CTRL, ALT and H, except for this hotkey (so you can turn hotkeys back on again).

This is useful in a very specific scenario: if you are using computer A and are connected through to computer B using Terminal Server or something similar, and have menuApp set up on both machines, you can use this hotkey to turn off hotkeys on A so that subsequent hotkeys are actioned on B.
Hotkey4opens 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.

Tray Icon

menuApp can display an icon in the Notification Area more commonly known as the Tray in the bottom right hand corner of the screen.

You can access a control menu by right clicking on the icon.

You can launch menus by left clicking on the icon and you can use the usual CTRL, SHIFT and ALT keys to control which menus appear.

To set this up you will need to use the TRAYSGL or TRAYDBL keywords for single or double click.

For example:

HotKey11=TRAYSGL|"C:\ProgramData\Shortcuts"|CENTER
HotKey12=CTRL,TRAYDBL|K|CENTER

Hotkey11 uses a single click on the tray icon to display the contents of the Shortcuts folder while Hotkey12 uses a double click on the icon with the CTRL button held down to launch the Drives menu.

The icon will appear automatically when Tray hotkeys are configured.

You can make it appear even if there are no Tray hotkeys by setting "AlwaysDisplayTrayIcon=Yes" in the Server section of the ini file.

Desktop Double Click

The DBLCLCK keyword allows you to launch a menu when you double click on the desktop or background with the left mouse button.

You can also use an extended version of the DBLCLK format to configure individual menus from specific areas of the desktop.

The format for this is DBLCLCK_YY where YY is one of the following:

"TL" "TM" "TR"
"CL" "CM" "CR"
"BL" "BM" "BR"


"TT" "TT" "TT"
"CC" "CC" "CC"
"BB" "BB" "BB"


"LL" "MM" "RR"
"LL" "MM" "RR"
"LL" "MM" "RR"

The screen is split into 9 areas, and the codes map to the individual areas, plus the three horizontal and vertical areas.

Where an area is covered by more than one DBLCLCK definition, the smaller wins. So, if you set up hotkeys for the top of the screen (DBLCLCK_TT) and the top left block (DBLCLCK_TL) then the TL entry will take precedence.

The standard hotkey format is used, which means that you can use CTRL, SHIFT and ALT keys to setup various different menus based on the double click feature.

For example:

HotKey11=DBLCLCK|"C:\ProgramData\Shortcuts"|CENTER
HotKey12=CTRL,DBLCLCK_BB|K|CENTER

Hotkey11 uses a simple double click to display the contents of the Shortcuts folder while Hotkey12 uses a double click on the bottom of the scren with the CTRL button held down to launch the Drives menu.

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.

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.

Deleting items

If you display a menu using menuApp then right click on an item, selecting the "Delete" option will delete the item from the menu and from the underlying folder. Careful...

How To

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

Display all .txt files in the temp directory

Centered in a single screen, linked to a hotkey.

[Hotkeys]
HotkeyN=CTRL,ALT,T|c:\temp,FL:tmp;DS:no|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.

[Hotkeys]
HotkeyN=CTRL,ALT,L|C|CENTER
HotkeyN=CTRL,ALT,K|C:\Windows\system32,FL:cpl;DS:no|CENTER