home *** CD-ROM | disk | FTP | other *** search
- Custom Command Extentions
-
-
- SUMMARY
- =======
-
- The Command.Ext sample demonstrates how to implement custom command extensions
- for the Microsoft Exchange Client. In particular, it demonstrates:
-
- - adding a menu command
- - adding a toolbar button
- - disabling/enabling the menu item and toolbar item depending what object
- is selected in the viewer
- - making MAPI calls from an extension
- - extending a command in the Main Viewer and the Search Viewer dialog
- - F1 response for context help on the menu item
- - Implementing custom Tooltip and Status Bar text
-
- The custom command displays the number of subfolders, read messages, and
- unread messages in a selected folder.
-
- MORE INFORMATION
- ================
-
- This sample requires Microsoft Windows NT 3.51 or Windows 95, the MAPI 1.0
- PDK, Microsoft Visual C++ version 2.0 (or later), and the Win32 SDK.
-
-
- To configure Microsoft Exchange to use the client extension, place the
- following REG_SZ entry in the system registry in
- HKEY_LOCAL_MACHINE\Software\Microsoft\Exchange\Client\Extensions:
-
- Sample Command Extension=4.0;c:\<path>\CMDEXT32.dll;1;01010000000000
-
- You can leave out an explicit path to CMDEXT32.DLL if it resides in a
- directory listed in the system PATH.
-
- Exchange client extensions are designed using OLE's Component Object Model.
- The client calls methods which are provided in the extension. In some
- calls to the extension interface, a pointer to a callback interface
- (IExchExtCallback) for the extension to call back into the Exchange client.
- For more information read "Extending the Microsoft Exchange Client" in the
- MAPI PDK documentation.
-
- This sample implements three interface objects: IExchExt, IExchExtCommands,
- and IExchExtUserEvents. To extend the command set of Exchange, it is
- necessary to provide implementations for IExchExt and IExchExtCommands.
- It is optional to provide implementation for IExchExtUserEvents. This sample
- implements IExchExtUserEvents to enable or disable the custom command,
- depending on what object the user is selecting in the Exchange main viewer.
- The menu item is always enabled in the Search Folder Dialog.
-
- The custom command is available in both the Main viewer and the Search
- Folder Dialog. The IExchExtCommands provides an interface for the client to
- display context help on the custom menu item and to display tooltip text and
- status window text. Select the custom menu item and press F1 to pop-up an
- About dialog box.
-
- This extension works in two different contexts, main viewer and search dialog.
- For each context an extension supports, a complete set of interface objects
- is created. In this sample, the MyExchExt, MyExchExtCommands and
- MyExchExtUserEvents objects are created once for the main viewer context and
- once for the search dialog. However, because there is only one
- implementation for all contexts, there is a context flag data member which
- indicates which context Exchange is calling from.
-
- A context in many cases corresponds to a user interface. For example, the
- search viewer is one context and the main viewer is another. QueryInterface
- is called for each IID for each context. In this example, QueryInterface is
- called each time for all IIDs in the main viewer context when
- Exchange first starts. QueryInterface is called again each time for all
- IIDs in the search viewer context. For each of the contexts, a unique pointer
- to the MyExchExtCommands and MyExchExtUserEvents objects is returned to
- Exchange in the QueryInterface call. Then when Exchange is calling
- DoCommands from the search viewer, it is calling the one using the interface
- pointer returned to it through QueryInterface in the search viewer context.
- And when Exchange is calling DoCommands from the main viewer, it is calling
- the one using the interface pointer returned to it through QueryInterface in
- the main viewer context.
-