Registration Format for Application Shortcut Menu Extensions

4/19/2010

The registration format for application shortcut menu extensions is as follows:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shell\Extensions\ContextMenus\<Context>\<Class>\<CLSID>
   @ = "DefaultStringVal"
   DelayLoad = dword:DLoad
  • Context
    The application you want to add the shortcut menu extension to. For details, see the Context column in each of the tables in Menu Overview.
  • Class
    The type of object the shortcut menu extension is for. For details, see the Class column in each of the tables in Menu Overview.
  • CLSID
    The Class Identifier (CLSID) of your shortcut menu extension component.
  • DefaultStringVal
    A string used as the registry key place holder for the default value.

Note

This string value is not used as the menu text, and can be anything at all. It is important that a string value exists for this registry key.

  • Dload
    Specifies whether to delay-load the shortcut menu extension. When delay-loaded, the IContextMenu object is neither initialized nor called until the menu item is invoked. Only one shortcut menu extension can be delay-loaded at a time.

    To delay-load the shortcut menu extension, include the DelayLoad value name and give it the value DelayLoad=dword:1. If DelayLoad is missing or set to 0, the shell calls IContextMenu::QueryContextMenu during the call to SHLoadContextMenuExtensions and enumerates the shortcut menu items to add.

Remarks

The default value of an InprocServer32 registry key contains the name of the DLL file that implements the menu extension. For example:

HKEY_CLASSES_ROOT\CLSID\{D25FCDF9-6FD9-48fd-83E4-6ABA454300F4}\InprocServer32
   @=menuext.dll

The menu extension itself is defined using a second registry key. For example:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shell\Extensions\ContextMenus\Tasks\Main_ContextMenu\{D25FCDF9-6FD9-48fd-83E4-6ABA454300F4}
   @=necessary_placeholder_value

Backward compatibility issues exist for Outlook Mobile menu extensions registered using the older registration format. In some instances, the new menu items are prevented from appearing in the user interface. In others, the menu extension is unable to retrieve the correct item type (see IItem::get_DefaultItemType) or OID (see IItem::get_Oid) — which can result in Shared Property ID's not being returned from IItem::GetProps on the items returned from IPOutlookApp::GetItemFromOid. For information on the deprecated registration format, see the topic Menu Extensibility in the Windows CE .NET 4.2 documentation on MSDN.

See Also

Tasks

How to Extend Shortcut Menus

Concepts

How to Register a File System Shortcut Menu
Registration Format for File System Shortcut Menu Extensions
Menu Overview