Chapter 4 - Customizing MS Outlook 98 Features

Archived content. No warranty is made as to technical accuracy. Content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

Read this chapter to learn about customizing important Microsoft® Outlook™98 features. System administrators can install these customized features as part of their Outlook deployment.

Outlook Toolbars and Menus

Outlook toolbars and menus are combined into a single collection called CommandBars. The CommandBars collection is included in the Microsoft Office 97 object model, making it fully programmable. Also, like other Microsoft Office applications, Microsoft Outlook toolbars and menus can be modified through the user interface. With the Customize dialog box open (on the View menu, click Toolbars, and then click Customize), users can right-click any toolbar and change it, including the text, the access key, and the icon.

Some common commands affect multiple modules, and other commands are module-specific (a change only applies to a single module). For example, if a user moves the Print command to the Help menu, the command moves for both the Calendar and the Inbox. If a user moves the Go to Today button to the File menu for the Calendar, this change only affects the Calendar module. User-defined toolbars are not module-specific, and always appear in all modules (if turned on). Note that shortcut (context) menus cannot be customized.

Outlook toolbars and menus are defined in the Outcmd.dat file, which is located in the Application Data folder. You can customize this file and include it as part of your installation package by using the Outlook 98 Deployment Wizard (ODW). The following sections describes the syntax for referencing your custom toolbars and menus. For more information about the wizard, see Chapter 2, "Installation and Configuration."

If a custom Outcmd.dat file is installed during setup, users can still modify their toolbars and menus. If you want to prevent users from changing custom toolbar and menu settings, you can remove access to the Toolbars menu (the command will still appear on the context menu, though). Also, you can make the Outcmd.dat file read-only. Deleting this file will reset the toolbars and menus to the system defaults.

Syntax for Referencing Toolbars and Menus

From a developer's point of view, the main window in Outlook (the "application window") is referred to as "Explorer" and the form windows are referred to as "Inspectors." Both types of windows include a set of menus and toolbars, so it is important to make sure you are working with the correct set.

Use the Explorer objects to refer to the main application window in Outlook; these objects use the ActiveExplorer method to reference an open window and GetExplorer to create a new window. Use the Inspector objects to refer to an Outlook item or form window; these objects use the ActiveInspector method to reference an open window and GetInspector to create a new window.

You can use the following simplified syntax to reference toolbars and menus for both Microsoft Visual Basic for Applications and Microsoft Visual Basic Scripting Edition (VBScript):

Set MyCB = <Inspector object>.CommandBars.Item("Menu Bar")

Warning Microsoft provides programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose.

For example, the following Visual Basic for Applications subroutine will not generate an error:

Sub TestCommandBars()
Dim ol As New Outlook.Application
Dim myInspector As Inspector
Set myInspector = ol.ActiveInspector
Set MyCB = myInspector.CommandBars("Menu Bar")
End Sub

Using the FindControl Method

You can use the FindControl method to reference Outlook commands (or controls, in relation to the CommandBars object model) if you know the internal value that Outlook has assigned for the command. Using the internal value means that you can use more concise syntax when running CommandBar commands.

For example, consider a custom Outlook form that uses a custom command button to print the form. Assuming the command button is named cmdPrint, the following VBScript code examples display the File Print dialog box:

Sub cmdPrint_Click()
Item.GetInspector.CommandBars.FindControl(,4).Execute
End Sub

Sub cmdPrint_Click()
Item.GetInspector.CommandBars.Item("Menu Bar").Controls("File") _
.Controls("Print...").Execute
End Sub

You can obtain the Outlook command values for the CommandBars collection by using the following sample Automation code. This code must be run from Microsoft Word 97; it will create a new document and insert a tab-delimited listing of the information into the document.

Sub GetIDsForInspector()

' The Outlook object library must be referenced.
Dim objOL As New Outlook.Application
Dim objCommand As Object
Set cb = objOL.ActiveExplorer.CommandBars

' Create a new Word document.
Documents.Add
With Selection
' 3500 is the maximum # of Controls Outlook has defined.
For I = 1 To 3500
Set lbl = cb.FindControl(, I)
If lbl Is Nothing Then
' Do nothing.
Else
' Insert CommandBar name, Command name, and ID.
.TypeText lbl.Parent.Name & Chr(9) _
& lbl.Caption & Chr(9) & I
.TypeParagraph
End If
Next
End With

End Sub

Note If you need to determine the commands that are available for each type of Outlook item or the application window, you can use the code example to create a listing for that particular item.

Outlook Bar

The Outlook Bar is defined as the complete set of Outlook Bar Groups attached to the Outlook window. Outlook Bar Groups are stored in a .fav file, which is located in the Application Data folder. When Outlook detects that the Outlook Bar needs to be refreshed (at setup or based on a command-line switch), it follows directives in the Outlbar.inf file and installs Outlook Bar Groups and shortcuts accordingly. Typically, the Outlbar.inf file is located in the same folder as Outlook (\Program Files\Microsoft Office\Office by default). You can customize the Outlbar.inf file and include it as part of your custom installation by using the Outlook 98 Deployment Wizard. For more information about the wizard, see Chapter 2, "Installation and Configuration."

If the Outlbar.inf file is not located, users will receive an error message. Administrators may want to install a backup copy of the original Outlbar.bar file with a different file name in the installation directory to aid product support efforts. To review a sample Outlbar.inf file, see Appendix A, "Sample Outlbar.inf File."

Outlbar.inf File Format

Outlbar.inf is similar to any other .ini or .inf file. It is a text file that consists of a set of sections. Each section begins with a section heading and may contain various commands or properties. A section name may contain any combination of alphanumeric characters, but may not contain any spaces. The following table describes the sections of a basic Outlbar.inf file.

Section

Description

[Version]

Required. Provides basic version information for validating the Outlbar.inf file.

[DefaultOutlookBar]

Required. This section runs whenever the default Outlook Bar is being constructed. It contains pointers to other sections, which specify the groups and shortcuts to create.

[DefaultOutlookBarPIMOnly]

Used in place of [DefaultOutlookBar], if Outlook is set up in PIM Only mode.

[DefaultOutlookBarNoIFM]

Used in place of [DefaultOutlookBar], if Outlook is set up without installing Integrated File Management (IFM).

[DefaultOutlookBarPIMOnlyNoIFM]

Used in place of [DefaultOutlookBar], if Outlook is set up in PIM Only mode and Integrated File Management (IFM) is not installed.

[UpgradeOutlookBar]

Used in place of [DefaultOutlookBar], if you are upgrading from Outlook 97. If [UpgradeOutlookBar] is used, [UpgradeGroupSections] applies rather than [GroupSections].

[GroupSections]

Represents an Outlook Bar Group. This section contains pointers to collections of shortcuts represented by [ShortcutsSections].

[UpgradeGroupSections]

Used in place of [GroupSections], if you are upgrading from Outlook 97. If [UpgradeOutlookBar] is used, [UpgradeGroupSections] applies rather than [GroupSections].

[ShortcutsSections]

Represents a collection of shortcuts. This section contains pointers to shortcuts described by [ShortcutSections].

[ShortcutSections]

Specifies properties for a single shortcut.

[Strings]

Optional. Lists localizable strings used throughout the Outlbar.inf file.

[Version]

This following format defines the standard header for all Outlbar.inf files:

[Version]
Signature="$Chicago$"
OutlookInfVersion=1

If the signature is not $Chicago$ or if the OutlookInfVersion is not specified, Outlook will not accept the .inf file as valid. The signature string recognition is not case-sensitive.

[DefaultOutlookBar]

The [DefaultOutlookBar] sections create groups of shortcuts for [GroupSections] that you specify. These sections use the following basic format:

AddGroups=
<group-section>[,<group-section>]…

Each listed section must correspond to a section in the Outlbar.inf file. The following example shows a typical [DefaultOutlookBar] section that creates three groups of shortcuts:

[DefaultOutlookBar]
AddGroups=OutlookGroup,MailGroup,OtherGroup

In this example, the Outlbar.inf file would contain at least three other sections that defined the contents of each group.

[GroupSections]

[GroupSections] contain three parts:

  • Name=<group name> 

    Specifies a name for the Outlook Bar Group represented by this section. If this property is omitted, the section name is used. 

  • Shortcuts=<shortcuts-section >
    [,<shortcuts-section>]… 

    Lists pointers to other sections in the Outlbar.inf file that describe sets of shortcuts in the group. Each section of this type represents an Outlook Bar Group. 

  • ViewType=<integer> 

    If set to a value of 1, creates the group in small icon mode. 

If you are upgrading from Outlook 97 and using [UpgradeGroupSections], the commands specify the values that you want to change for the group. Also, the OldName command specifies the name of the previous group that you want to change; the ShortcutsGroupIndex command (integer value) specifies that the shortcuts should be added to a group at a particular index, rather than the group specified by the OldName command.

The following example shows a typical [GroupSection]:

[OutlookGroup]
Name=Outlook
Shortcuts=OutlookShortcuts

If the name of the section is used as a parameter to a command in an [DefaultOutlookBar] section, the command affects that section and its contents. For example, if this sample section were referred to by the AddGroup command in the [DefaultOutlookBar] section, a group with a display name of "Outlook" would be created and would contain all of the shortcuts listed in the "OutlookShortcuts" section.

The following example describes an empty group named OBG:

[OBG]
; I'm a lonely, empty group since my
; author left out the Shortcuts property.
;
; I also have an ugly name, OBG,
; since my Name property was forgotten.

If this section was listed in an AddGroup command, an empty group named OBG would be created.

[ShortcutsSections]

The following syntax lets you list a shortcut as part of the [ShortcutsSections] collection:

<shortcut-section-reference>
[=<target-namespace>{,<rootid> | ,[<rootid>],<path>}]

The properties for the shortcut are specified in the [ShortcutSection] pointed to by this line. Optionally, you can also set the Target property, and the [ShortcutSection] of the same name will be ignored; all other properties will use their default values.

[ShortcutsSections] list a sequence of shortcuts. If a section is referred to by a Shortcuts command in [GroupSections], it is considered an element of that group. Therefore, any commands will also affect the shortcuts in that group. For example, consider the following segment from Outlbar.inf:

[DefaultOutlookBar]
AddGroup=OutlookBarGroup

[OutlookBarGroup]
Shortcuts=OutlookShortcuts

[OutlookShortcuts]
Inbox

If Outlook processes this segment, an Outlook Bar Group named OutlookBarGroup is created. A single icon, Inbox, is installed in that group.

This example shows a typical [ShortcutsSection]:

[OutlookShortcuts]
Inbox=1,1 ; Special syntax. No need for an [Inbox] section.
Calendar
Contacts=1,3 ; Also uses special syntax.
Tasks
Journal
Notes
DeletedItems

Note the use of the optional syntax to specify the Target property for both the Inbox and the Contacts shortcut. Because the other shortcuts use the standard syntax, the following [ShortcutSections] would be expected from this example: [Calendar], [Tasks], [Journal], [Notes], and [DeletedItems].

[ShortcutSections]

[ShortcutSections] contain two parts:

  • Target=<target-namespace>
    {,<rootid> | ,[<rootid>],<path>} 

    Required. Specifies the shortcut target. 

  • Name=<name> 

    Optional. Overrides the default name for the shortcut, which is determined by the <namespace> field. 

Each [ShortcutSection] describes a single shortcut and must have a target. Optionally, you can override the display name by setting the Name property. You can specify the target with either the <rootid> or the <path> field. If you use the <path> field, the <rootid> field must have a value of 0 (as a placeholder), and the <path> field must be either a full path (for example, \\Public Folders\All Public Folders\Office), or a path relative to the default store root (for example, Inbox\subfoldername).

The following are available values for the <namespace> field:

  • MAPI namespace — Integer value of 1. Shortcuts point to MAPI folders. For a list of valid codes, see "MAPI Namespace <Rootid> Codes" in this chapter.

  • File System namespace — Integer value of 2. Shortcuts point to file system objects (files). For a list of valid codes, see "File System Namespace <Rootid> Codes" in this chapter.

The following example shows a possible [ShortcutSections] for a default MAPI calendar folder:

[Calendar]
; See REF _Ref387687560
; \* MERGEFORMAT Appendix A for MAPI <rootid> codes
Target=1,1 ; 1 is Calendar
[Strings]

This section must be named [Strings]. Use the following format for this section:

<Strings-key>=<value>

This section defines one or more <Strings-key> fields. <Strings-key> must be a unique name consisting of letters and digits. <Value> is a string consisting of letters, digits, or other printable characters. It should be enclosed in double quotation marks if the corresponding <Strings-key> is used for an item that requires double quotation marks.

Although the [Strings] section is generally the last section in the Outlbar.inf file, a <Strings-key> defined in this section may be used anywhere in the Outlbar.inf file that the corresponding string would be used. Outlook expands the <Strings-key> to the given string and uses it for further processing. A <Strings-key> used in another section must be enclosed in percent signs (%). Also, the [Strings] section makes it easier to translate strings for international markets by placing all strings that can be displayed by the Outlook Bar in a single section of the Outlbar.inf file.

The following example shows the [Strings] section for a sample Outlbar.inf file:

[Strings]
OUTLGRP="Outlook"
MAILGRP="Mail"
OTHRGRP="Other"

This example shows how to use a string from the [Strings] section:

[OutlookGroup]
Name=%OUTLGRP% Group ; Names the group "Outlook Group"
Tasks
String Substitution

The Outlbar.inf file provides support for a table of localizable strings. The Outlbar.inf file can contain a [Strings] section that provides a table of strings for substitution. Generally, the Outlbar.inf string table should include all of the strings that appear in the Outlook Bar user interface.

The following example shows a typical substitution string:

[MyGroup]
Name=%GROUPNAME% ; %GROUPNAME% is expanded to "Microsoft Ren"

[Strings]
GROUPNAME="Microsoft Ren"
Comments

Comments may appear on any line in the Outlbar.inf file. A comment is preceded by a semicolon (;). Comment text appears between the semicolon and the end of a line. Note that semicolons within quotation marks do not begin comments.

In this example, the bold text is a comment:

[Inbox]
Name="Hello;World" ; This also sets the display name

MAPI Namespace <Rootid> Codes

The following table defines the values for the <rootid> codes used for [ShortcutsSections] and [ShortcutSections].

Value

Special Folder

Icon

0

Inbox

Inbox

1

Calendar

Calendar

2

Contacts

Contacts

3

Tasks

Tasks

4

Journal

Journal

5

Notes

Notes

6

Deleted Items

Trash can

7

Sent Items

Sent Items folder

8

Outbox

Outbox Tray

9

Drafts

Drafts folder

10

Outlook Today

Outlook Today

11

Public Folders Root

Generic store

12

Public Folder Favorites folder

Mail folder

13

News

News

14

User Public Folder Favorites

None

15

User Store folders

None

File System Namespace <Rootid> Codes

The following table lists the <rootid> values that you can use with the File System namespace. The values are derived from constants documented in the Win32® Software Developer's Kit (SDK). Consult this SDK for more information about these constants.

Value

Win32 Constant (from SHLOBJ.H)

Interpretation

0

CSIDL_DESKTOP

Desktop folder

1

CSIDL_INTERNET

The Internet

2

CSIDL_PROGRAMS

Start Menu Programs folder

3

CSIDL_CONTROLS

Control Panel

4

CSIDL_PRINTERS

Printers

5

CSIDL_PERSONAL

My Documents

6

CSIDL_FAVORITES

Internet Favorites Bookmarks folder

7

CSIDL_STARTUP

Start Menu Programs Startup folder

8

CSIDL_RECENT

Recent Documents; contains links

9

CSIDL_SENDTO

Contains items placed on Send To shortcut menu

10

CSIDL_BITBUCKET

Recycle Bin

11

CSIDL_STARTMENU

Start Menu folder

16

CSIDL_DESKTOPDIRECTORY

Desktop folder

17

CSIDL_DRIVES

My Computer

18

CSIDL_NETWORK

Network Neighborhood

19

CSIDL_NETHOOD

Consult Win32 documentation

20

CSIDL_FONTS

Fonts folder

21

CSIDL_TEMPLATES

Consult Win32 documentation

22

CSIDL_COMMON_STARTMENU

Common Start Menu folder

23

CSIDL_COMMON_PROGRAMS

Common Start Menu Programs folder

24

CSIDL_COMMON_STARTUP

Common Start Menu Programs Startup folder

25

CSIDL_COMMON_DESKTOPDIRECTORY

Common Desktop folder

26

CSIDL_APPDATA

Consult Win32 documentation

27

CSIDL_PRINTHOOD

Consult Win32 documentation

28

None

Outlook Installation Directory

29

CSIDL_ALTSTARTUP

Consult Win32 documentation

30

CSIDL_COMMON_ALTSTARTUP

Consult Win32 documentation

31

CSIDL_COMMON_FAVORITES

Consult Win32 documentation

32

CSIDL_INTERNET_CACHE

Internet Explorer Cache folder

33

CSIDL_COOKIES

Internet Explorer Cookies folder

34

CSIDL_HISTORY

Internet Explorer History folder

Predefined Substitution Strings

Outlook includes several predefined strings that you can use in the Outlbar.inf file. These strings expand as paths to various directory locations based on the end-user setup. You cannot use these strings in the [Strings] section.

The following example shows a predefined substitution string:

[Notepad]
%11%\NOTEPAD.EXE ; %11% is the user's Windows System directory

The following table lists the available substitution strings.

ID

Location

01

Location of the operating system

10

Machine directory (maps to the Windows directory on a server-based setup)

11

Windows System directory

12

Windows System Drivers directory

13

Windows Command directory (Windows 95 only)

17

Windows INF directory

18

Windows Help directory

20

Windows Fonts directory

21

Windows Viewers directory

22

Windows VMM32 directory (Windows 95 only)

23

Windows Color directory (Windows 95 only)

24

Root of the drive containing the Windows directory

25

Windows directory

26

Guaranteed boot device for Windows Winboot (Windows 95 only)

28

Host Winboot (Windows 95 only)

30

Root directory of boot drive

31

Root directory for the host drive of a virtual boot drive - compressed volume (Windows 95 only)

Outlook Today

Microsoft Outlook 98 includes a unique "at a glance" view called Outlook Today. This view displays information about the user's calendar, tasks, e-mail, and contacts, using the familiar and attractive style of a Web page. Outlook Today lists upcoming appointments, indicates what tasks are due, lets users search Outlook for contacts, and shows the number of unread e-mail messages in the user's Inbox. Each item on the Outlook Today page is a hyperlink to an Outlook item or view, so users can gain access to more specific information about a meeting or check off a completed task. And end user can easily customize his or her Outlook Today page by using the Outlook Today Options page. For example, the Options page lets end users change how many days of meetings to display.

Outlook Today displays information in HTML, which allows limited customization by enterprise developers and solution providers. Outlook Today can be thought of as a "home page" of information available to Outlook users; therefore, it provides an excellent opportunity to deliver corporate intranet or public Internet content, in addition to Outlook information. For example, you might create a standard Outlook Today page that shows a bulletin of corporate news and a stock ticker tied to real-time market data taken from the Web. A customized version of Outlook Today might also contain information drawn from other enterprise applications (such as account tracking or financial management software), enabling an Outlook Today page that is targeted to a specific job function within an organization. For example, you might create an Outlook Today page for sales and marketing employees, the accounting department, or senior management.

Outlook Today uses databinding, a new feature of Microsoft Internet Explorer 4.0, to link an HTML table on the page to a datasource—Outlook 98, in this case—via an ActiveX® datasource control. The page has separate databinding tables for the Calendar, Mail, and Tasks sections. After the page loads, the datasource controls collect the appropriate Outlook information and display it in the databinding tables. Whenever the source information is updated or new items are created, the databinding controls update their tables dynamically without refreshing the page. (For more information about databinding, see the Internet Client SDK). You can customize the Outlook Today page in the following ways:

  • Adding text, links, and images 

  • Adding script 

  • Adding ActiveX components 

  • Changing styles (backgrounds, fonts, etc 

Customizing Outlook Today is an advanced developer feature. Therefore, keep in mind the following limitations when you add content and functionality to the Outlook Today page:

  • Although Outlook Today provides users with a powerful time-saving summary view, it is not intended to replace the Inbox, Calendar, or Task modules. Nor is Outlook Today intended to replace a Web browser. You should consider Outlook Today as a summary and starting point for personal, intranet, and Internet information delivery. 

  • Modifying the Outlook Today page may result in reduced performance when information is retrieved and rendered on the page. Again, you should consider the Outlook Today page as a starting point, which users read at startup or check into periodically during the day or week.

  • Outlook Today is expected to change in future releases of the product. Therefore, any changes to Outlook Today pages that work in Outlook 98 may require additional updates or rewriting in future versions of Outlook. 

  • You can modify Outlook Today by adding links or controls that connect to untrusted, external Web sites or content providers. Outlook Today does not verify the security of the URL you assign to Outlook Today in the registry or the pages you browse within the Outlook Today frame. Outlook Today pages that contain unsafe content can expose individual users and entire organizations to the risks associated with that content, including viruses and data destruction. 

    Note If you must include links to untrusted, external sites on your customized page, make sure that the links launch the URLs in a new browser window to take advantage of browser security. For instructions, see "Customization Details" in this chapter. 

  • You cannot add Outlook Today as an Active Desktop® item. The Outlook Today functionality only works when it is hosted within the Outlook window. 

Distributing Your Customized Outlook Today Page

There are three ways to distribute a customized Outlook Today page:

  • Customized .dll file. You can save your customized Outlook Today page as a .dll file and view it in place of the default Outlook Today page; for more information, see "Advanced Customization" in this chapter. This method uses the res:// protocol. For example, the protocol for the default page is res://Outlwvw.dll/Outlook.htm. For an arbitrary path, use the following format: 

    "Url" = "res://C:\Program Files\Microsoft Office\Office\Outlwvw.dll/Outlook.htm" 

    -or-

    "Url" = "res://<path to .dll file>/<resource within the .dll file>" 

  • Web server. Because Outlook Today hosts the Internet Explorer 4.01 browser, you can save your customized Outlook Today page as an .htm or .asp file on a personal or corporate Web server; for more information, see "Basic Customization" in this chapter. This method uses the http:// protocol (for example, "Url" = "http://corpweb/users/outlook.htm"). 

  • File/Network. You can save your customized Outlook Today page as an .htm file on your local hard disk or corporate network; for more information, see "Basic Customization" in this chapter. This method uses the file:// protocol (for example, "Url" = "file://C:\myfile.htm").

Because advanced customization takes advantage of performance enhancements, Microsoft recommends that you save your customized page as a .dll file. It will load much faster than if you use the "Web Server" or "File/Network" scenarios. You can distribute your customized .dll file and also change the Outlook Today registry key to point to your customized page by using the Outlook 98 Deployment wizard. For more information about adding your customized .dll file to the installation package, see "Stage 2: Specify Custom Active Setup Components" in Chapter 2; for more information about adding registry keys during the installation process, see "Stage 5: Add Registry Entries" in Chapter 2.

Basic Customization

With Basic customization, you can customize and save your Outlook Today page as an .htm file on your hard disk, network, or Web server using a simple, three-part process. You will need a working knowledge of HTML and the Windows registry; the tools and ability to edit a custom .dll file are not required.

If you are proficient with Microsoft Developer Studio or a similar resource editor, Microsoft recommends that you go to "Advanced Customization" in this chapter. With advanced customization, you can save your customized Outlook Today page as a .dll file for better performance.

PART 1: To obtain the Outlook Today source

Important If you copy the Outlook.htm source file directly from the Outlook 98 Deployment Kit CD, you can skip these steps and go to Part 2.

  1. In Internet Explorer, go to the following URL: 

    res://C:\Program Files\Microsoft Office\Office\Outlwvw.dll/Outlook.htm 

    Note the forward slash after the .dll file name. If you installed Outlook to a non-default directory, you may need to change the file path to the URL.

  2. Outlook.htm will generate a script error because it is not being hosted within the Outlook window. When you receive an error message, click No. The Outlook Today HTML page displays (without the graphics and data tables).

  3. On the View menu, click Source to open a copy of the Outlook.htm source file in Notepad. 

  4. On the File menu, click Save As, and save this file to your hard disk. 

    Note Because Outlook Today uses specialized layout properties, it will not appear correctly in Microsoft FrontPage®98 or other HTML editors.

  5. The text display:none appears three times in the file. Search for and replace all three instances with the text display:. This change is necessary because the source file was designed to be saved as a .dll file and loaded with the res:// protocol. Instead, you are saving it as an .htm file, and loading it with the http:// or file:// protocol. 

PART 2: To add the correct settings to your registry
  1. Locate the following registry key:

    HKCU\Software\Microsoft\Office\8.0\Outlook\Today 

  2. If this key does not exist, add it. 

  3. In this key, add the string value Url (this value is case sensitive). For its value data, enter the path to the Outlook.htm file that you saved in Part 1, step 4. For example, Url might contain the following data: 

    file://C:\My Documents\Outlook.htm 

Note If at any time you want to reset the registry and return to your original Outlook Today page, just delete the Url registry key. Then, Outlook will point to the original Outlook Today page.

PART 3: To modify your new Outlook Today page
  1. Start Outlook, and go to Outlook Today. 

    The three data tables (Calendar, Mail, and Tasks) will render more slowly, line-by-line rather than all at once. This is because the page you are viewing has been loaded with the http:// or file:// protocol.

  2. Modify the HTML. 

For more information about the types of changes you can make, such as adding a link or graphic, see "Customization Details" in this chapter.

Note On the Outlook Today page, you cannot customize the existing data, sorting, or filtering in any of the Calendar, Mail, and Tasks data tables (although you can remove the Mail table and add your own).

Advanced Customization

With a resource editor, such as Microsoft Developer Studio, you can save your customized Outlook Today page as a resource .dll file by using a five-part process. Advanced customization allows you to take advantage of performance enhancements, described in "Performance Impact" in this chapter.

Important The following instructions are for Microsoft Developer Studio 5.0 only. You must use Microsoft Developer Studio 5.0 (earlier versions may also work) or a similarly capable resource editor. Also, you must use Windows NT. Developer Studio does not support the ability to replace resources in executable files on Windows 95.

PART 1: To copy the original Outlwvw.dll resource file
  1. Locate the Outlwvw.dll resource file, which is installed in the C:\Program Files\Microsoft Office\Office folder by default. 

  2. Make a working copy of Outlwvw.dll (for example, Outlwvw_custom.dll). 

Warning Do not modify or remove Outlwvw.dll. This file contains both the Outlook Today source files and the source files for the Find and Organize features. If you want to create a custom .dll file, give the new file a different name, and update the URL setting in the registry accordingly.

PART 2: To add the correct settings to your registry
  1. Locate the following registry key:

    HKCU\Software\Microsoft\Office\8.0\Outlook\Today 

    If this key does not exist, add it. 

  2. In this key, add the string value Url. For its value data, enter the path to the Outlook.htm resource within your Outlwvw_custom.dll file that you saved in Part 1, step 2. Make sure that you use the res:// protocol. For example, Url might contain the data: 

    res://C:\My Documents\Outlwvw_custom.dll/Outlook.htm 

    Note the forward slash after the .dll file name. 

Note If at any time you want to reset the registry and return to your original Outlook Today page, just delete the Url registry key. Then Outlook will point to the original Outlook Today page.

PART 3: To open the resource .dll file
  1. In Windows NT, start Microsoft Developer Studio. 

  2. On the File menu, click Open

  3. Select the Outlwvw_custom.dll that you saved in Part 1, step 2. 

  4. In the Open as box, click Resources

  5. Click Open to open Outlwvw_custom.dll. 

  6. Double-click the tree-node 2110 to open it. 

  7. Double-click the Outlook.htm node. 

You should now be in Developer Studio's binary editor, with text on the right side of the window and hex-numbers on the left side.

PART 4: To modify the HTML

You can modify the HTML file by editing the text directly in the Developer Studio binary editor, but this is a fairly difficult editor to work in. It is much easier to modify the HTML in a separate text editor, copy it, and then paste it into the Developer Studio editor.

  1. In Developer Studio, select all of the .dll file text, and copy it. 

  2. Open a text editor, such as Notepad, and paste in the text. 

  3. Modify the HTML. 

    For more information about the types of changes you can make, such as adding a link or graphic, see "Customization Details" in this chapter. 

  4. When you are done, select all of the file text, copy it, and paste it back into the .dll file in Developer Studio. 

  5. Save your Outlwvw_custom.dll file. 

  6. View the Outlook Today page in Outlook. You will see your modified page. 

Important In the HTML, you may notice three commented <RENSTATICTABLE> sections. If you change the layout of the Calendar, Mail, or Tasks databinding tables, you will also need to make parallel changes to their associated RENSTATICTABLEs. For more information, see "About the RENSTATICTABLE" in this chapter.

If you are making and testing a large number of changes, you may prefer to use this alternate method to modify the HTML:

  1. In Developer Studio, select all of the .dll file text, and copy it. 

  2. Open a text editor, such as Notepad, and paste in the text. 

  3. Save this file to your hard disk. 

  4. Point the Outlook Today registry setting to this saved file by using the file:// protocol. 

  5. Search for and replace the three instances of display:none with display:. (Because you are using the file:// protocol, the live databinding tables will not be visible without this step.)

  6. Make changes to this file.

    For more information about the types of changes you can make, such as adding a link or graphic, see "Customization Details" in this chapter. 

  7. Undo the search and replace changes you made in step 5 to prepare the file for res:// protocol format. 

  8. When you are done, select all of the text, copy it, and paste it back into the .dll file in Developer Studio. 

  9. Save your Outlwvw_custom.dll file. 

  10. Set the registry setting appropriately (res://<path to Outlwvw_custom.dll>/Outlook.htm). 

Go to Outlook Today to see your modified page.

Note On the Outlook Today page, you cannot customize the existing data, sorting, or filtering in any of the Calendar, Mail, and Tasks data tables (although you can remove the Mail table and add your own).

PART 5: To add images to your .dll file

If your new HTML file makes references to images outside the original Outlwvw.dll resource, you can include these images in the Outlwvw_custom.dll resource file to take advantage of the resource file's performance advantages. You can include a .gif, .jpeg, or other type of image file. (This is optional—you can always save the images as regular files on your hard disk.)

  1. Using an image editor, create the .gif file that you want. 

  2. With Outlwvw_custom.dll open in Developer Studio, double-click the tree node 2110

  3. Select any existing .gif resource. 

  4. On the Edit menu, click Copy, and then click Paste to create a duplicate of this .gif resource under the 2110 tree node. (For example: if you copy Calhdr.gif and then paste it, you will have a duplicate called Calhdr.gif1.) 

  5. Right-click this duplicate resource, click Properties, and then change the name to whatever you like (for example, "Whatever.gif"). 

    Remember that you must include the quotation marks around the name. 

  6. In Developer Studio, open your .gif file from step 1. 

  7. On the File menu, click Open

  8. In the Open as box, click Binary

  9. On the Edit menu, click Select All to select all of the file text. 

  10. On the File menu, click Copy

  11. Close this file. 

  12. Double-click the new Whatever.gif resource to open it, and replace the data in the file with the data you copied in step 10.

  13. Close the Whatever.gif window, and save your Outlwvw_custom.dll file. 

Your .gif file is now embedded as a resource in Outlwvw_custom.dll. You can refer to it in your Outlook.htm file as res://Outlwvw_custom.dll/Whatever.gif to take advantage of the resource file's performance optimizations.

Customization Details

This section describes the different ways that you can modify your Outlook Today page.

Adding Text and Images

The Outlook Today page is an HTML page that uses cascading style sheets (CSS). It is laid out with standard HTML tags and CSS properties. You can add text and images just as you would on any other HTML page. For more information about how to use CSS properties, see the Internet Client SDK.

Note The original page uses the res:// protocol to point to its images (for example: res://Outlwvw.dll/Calhdr.gif). If you supply your own image files, you can use the file:// or http:// protocols (for example: file://C:\My Documents\myimage.gif).

To link to an external Web site, you must not use a simple HTML hyperlink. Instead, you must use the following syntax to launch that link in a new browser window, which allows you to take advantage of browser security.

Warning You must take special care when adding links to external, untrusted Web sites. If you add a simple hyperlink to your page, by default Outlook will follow that link within the Outlook Today window. Because security is always disabled in Outlook Today, there are no security safeguards to protect you from viewing a site that contains unsafe content.

To link to a local Outlook folder, use the following syntax:

<a href="" onclick="window.location='outlook:Sent Items';">Sent Items</a>

To link to an Exchange Server Public folder, use the following syntax:

<a href="" onclick="window.location='outlook:\\Public Folders\\Favorites';">Favorites</a>
Changing Font Styles

You can change the styles of most fonts on the page by modifying their style sheet definitions at the top of the page. For example, the following lines define the text styles for a completed task, an important item, and the date at the top of the page:

.TskDone {font-size:8pt; color:gray; text-decoration:line-through; }

.itemImportant {color:red}

.date {font-size:11pt;font-family:arial;text-decoration:none;
font-style:normal;color:white;font-weight:bold; }

In some cases these styles are referenced directly in later lines of the page. But in other cases, such as "TskDone" and "itemImportant" above, the lines that reference these styles are dynamically generated within the three main databinding tables (Calendar, Mail, and Tasks), and you will never see them used literally in the code.

For example, when you check a task as complete in the Tasks table, the databinding table automatically applies the "TskDone" style to the text. Because the "TskDone" style is defined as gray strike-through, the completed task's text will also use this same style. However, you can change the style to whatever you like.

Adding Additional ActiveX Controls

You can add ActiveX controls to the page, just as you would any other HTML page. However, the security safeguards have been disabled in Outlook Today, so you must be sure about a control's trustworthiness before adding it to your page. It's a fun exercise, for example, to add the Microsoft Investor stock ticker ( http://investor.msn.com ) to your page.

For more information about how to create your own ActiveX controls, including databinding controls, see the Internet Client SDK.

Adding Script

With script, you can also take full advantage of the Outlook object model. Be aware, however, that as with any interpreted scripting language, performance will not be at its best. This sample JavaScript exposes Outlook's Application object, and then uses it to open the Inbox in a new Outlook window:

<html>

<script language=JavaScript>
var theApp = window.external.OutlookApplication
var theOLNS = theApp.GetNameSpace("MAPI")
var myInbox = theOLNS.GetDefaultFolder(6) //olFolderInbox
myInbox.Display()
</script>

</html>

Disabling Outlook Today

You can turn off Outlook Today and instead show the contents of your root folder (similar to Outlook 97).

To turn off Outlook Today
  1. In regedit, go to the following registry key: 

    HKEY_CURRENT_USER \Software \Microsoft \Office \8.0\Outlook\Today\ 

  2. Add the new DWORD Value, Disable

  3. Modify the Disable Value, and give it a value data of 1

You can enable Outlook Today again by either deleting the Disable registry value or setting it to 0.

Performance Impact

With advanced customization, there is no performance degradation between your customized page and the original, even if you add a link or graphic to the page. With Basic customization, the only performance difference is that your Outlook data (Calendar, Mail, Tasks) will appear more slowly, line-by-line, as the page loads. By comparison, in the original page, your data appears almost immediately. After it is loaded in the view, though, there is no performance difference between your customized page and the original page.

As with any Web page, the more elements that you add, such as images, script, or ActiveX controls, the longer the page will take to load. Also, performance depends on your mail support and on the number of items in your store. Using a Corporate/Workgroup configuration will decrease performance (constructing the page requires many calls to the server). The more items in your store, the longer it takes to display. For example, on a Pentium 120 with 32 MB of RAM, using an Internet Only configuration and a moderate store size, the performance difference is approximately four seconds.

To improve the performance of HTML rendering and databinding, Microsoft made the following enhancements:

  • Files are compiled into a resource .dll file. The Outlook Today source HTML and .gif files are compiled into a resource file—Outlwvw.dll—allowing Outlook to load the page faster. This file is installed in the ...\Program Files\Microsoft Office\Office directory. 

  • res:// streaming and processing. When you specify a URL with the res:// protocol, Outlook performs special streaming and preprocessing on the page. This does not take place when you use the http:// or file:// protocols. 

    When the page first loads, it takes some time for the databinding tables to collect and render all of their data. To avoid this delay and display your information more quickly at load-time, Outlook initially hides the three databinding tables and replaces them with temporary, raw HTML tables. As it streams the HTML from the resource .dll file, Outlook builds temporary static tables (containing the same information as the live databinding tables) and inserts them directly into the stream (at the RENSTATICTABLE tags). As a result, your Outlook information appears faster than if you had to wait for the databinding to complete. 

    After the page is loaded, the hidden databinding tables activate and gather their data. When they finish, Outlook hides the temporary static tables and makes the live databinding tables visible. This switch from static to live tables is not noticeable in the Calendar and Mail tables, but you will see it in the Tasks table (when the column of check boxes appears).

Note These performance enhancements apply only to pages loaded via the res:// protocol, not via http:// or file:// protocols.

About the RENSTATICTABLE

In the HTML, you'll see three commented RENSTATICTABLE blocks. When Outlook reads the page through the res:// protocol, it uses these blocks to determine how to insert the temporary static tables.

For example, review the block that defines the Calendar (both live and static tables):

<table border=0 name="ItemCol" id=CalendarLiveTable datasrc="#CalList" style="margin-top:0px;margin-left:0px; display:none">
<tbody>
<tr>
<td width=23px></td>
<td valign=top width=10><div datafld="Next"
DATAFORMATAS="html"></DIV></TD>
<td valign=top nowrap ><DIV DATAFLD="StartEnd" 
DATAFORMATAS="html"></DIV></TD>
<td valign=top><div class=CalendarSubjectLocation 
datafld="SubjectLocation" DATAFORMATAS="html"></DIV></TD>
</tr>
</tbody>
</table>

 

<table border=0 id=CalendarStaticTable style="margin-top:0px;margin-left:27px;"><br>
StartEnd=valign=top nowrap~SubjectLocation=valign=top~ -->
</table>

The block includes two sections, the Live Databinding Table and the Temporary Static Table. Relevant elements include the following:

  • display:none 

    This is a CSS attribute that tells the page to hide the table. When the page loads, this table stays hidden and the temporary static table is visible instead. After the live databinding table gathers all of its information, however, Outlook overrides the display:none attribute automatically and removes the static table. In most cases, this switch is imperceptible. 

  •  

    This element tells Outlook to "insert a temporary static table here." The properties that follow this tag describe how to construct the table, giving you a necessary degree of control over how Outlook constructs its temporary static tables. In most cases, you may want to make the static table look like the live table so that the switch is imperceptible. 

    Notice that each section of the RENSTATICTABLE syntax corresponds to a section in the live table definition. 

  • ~Calendar 

    This element identifies the static table that contains the data for the Calendar. 

  • ~Next=valign=top width=10 

    This element tells Outlook to add a first column (<TD>) to the table for each row, with the following syntax: 

<td valign=top width=10 class="CalendarNext"> ... {inserts "Next" data here for each row} ... </td>

This column contains the triangular "Next/Current Appointment" indicator. 
  • ~StartEnd=valign=top nowrap 

    This element tells Outlook to add another column to each row: 

<td valign=top nowrap class="CalendarStartEnd"> ... {inserts "StartEnd" data here for each row} ... </td>

This column contains the start and end times for each appointment. 
  • ~SubjectLocation=valign=top 

    This element tells Outlook to add a final column to each row: 

<td valign=top class="CalendarSubjectLocation"> ... {inserts "SubjectLocation" data here for each row} ... </td>

This column contains the Subject and Location for each appointment. 
  • ~ 

    The final "~" is required. It signals the end of the command. 

  • CalendarSubjectLocation style, InboxCount styles, etc. 

    When Outlook constructs the cells, it adds a class property to the cell tag that is a combination of the table name and the column name: 

    <tablename> + <columnname> 

    This allows you to set the styles of the table cells for each column. Then you can define these styles at the top of the Outlook.htm file, among the CSS style definitions. You will notice that two definitions already exist: 

CalendarSubjectLocation {margin-left:10px;color:windowtext;} .InboxCount {margin-left:13px;}

Outlook Security

Outlook 98 uses a security model that is different from that of Outlook 97 and previous Microsoft Exchange clients. In addition to the previous Microsoft Exchange Server security, Outlook 98 supports S/MIME. S/MIME security can be used to send and receive secure e-mail messages over the Internet as well as within an organization.

The Outlook 98 security model helps ensure the security of Outlook 98 e-mail messages by using public and private keys to send and receive signed and encrypted mail. This feature includes digital signing, which allows users to verify the identity of the sender and the integrity of messages, and digital encryption, which protects the contents of messages from being read by anyone except their intended recipient(s). Users can exchange signed and encrypted mail with other mail clients that supports S/MIME.

Outlook 98 uses a secure store to store a user's private key information. A user's certificate contains his or her public key and other required information, such as e-mail address. Mail encrypted by the user's public key can be decrypted using only the associated private key and vice versa. Therefore, when you send encrypted mail, you use the receiver's certificate (public key) to encrypt it; likewise, when you read encrypted mail, your private key is used to decrypt it.

Note For Corporate or Workgroup configuration users, the Microsoft Exchange Key Management Server (KMS) 5.5 issues keys for Microsoft Exchange Server security only. Microsoft Exchange Key Management Server 5.5, Service Pack 1 will provide S/MIME keys for corporate users.

Registry Settings for Security

Set the following registry keys for Outlook 98 security options:

  • HKCU\Software\Microsoft\Office\8.0\Outlook\Security\Options 

    Each time a user attempts to read a signed message that has an invalid signature, a dialog box appears warning the user about the signature and listing the cause of the failure. You can choose not to show this dialog box. Only the last bit of the registry key is used, and it is set to a value of 0 by default. 

  • HKCU\Software\Microsoft\Office\8.0\Outlook\Security\MinEncKey 

    This registry key (type=DWORD) sets a minimum key length for encrypted mail. You can set a minimum key length for your users based on the desired security level. Outlook displays a warning message if this minimum key length is not met. Standard key sizes are 40, 64, 128, and 168. International users will not be able to read mail encrypted using a key greater than 40 bits. 

  • HKCU\Software\Microsoft\Office\8.0\Outlook\Security\RequiredCA 

    This registry key (type=STRING) limits users to certificates from a specific certificate authority only (for example, only the Microsoft Exchange KMS). Specify the certificate authority name as the registry key value.

    Note To disable S/MIME, set this registry key to the name of the Microsoft Exchange KMS. Then, in KMS, use the Issue V1 certificates only option to disable the ability to issue S/MIME (V3) certificates.

Upgrading Security Users from Outlook 97 and MS Exchange Client

The first time a user attempts to send or read secure e-mail, Outlook triggers a security upgrade feature. To upgrade to Outlook 98 security, the old .epf file should exist on the user's computer, and the user should know the password.

During the upgrade process, the user selects a keyset name for his or her security keys, which includes one signing key and one encryption key. The user can accept the default name or choose a unique name (for example, "my security keys"). Also, the user must choose one of the following security levels, which will be associated with the user's keys:

  • High. Each time the keys are accessed, the user must enter a password.

  • Medium. A dialog box appears notifying the user that his or her keys are being accessed; no password is required. 

  • Low. No dialog box appears and no password is required. 

The Outlook upgrade feature attempts to save the security information in a secure (protected) store. If the .epf file cannot be found or the user cannot remember the password, the upgrade feature can be canceled. Then, the user should recover his or her security keys (that is, enroll again) by asking for a new security token from the administrator. The upgrade process must occur before the user can become security-enabled, with the ability to send and receive secure e-mail.

To enroll in security or obtain a certificate using the Microsoft Exchange Key Management Server
  1. Contact the system administrator for a security token. The request for security enrollment uses this token. After receiving the token, continue with step 2. 

  2. On the Tools menu, click Options

  3. Click the Security tab. 

  4. Click Get a Digital ID, and then select Enroll in Exchange Server Security.

  5. Type your token, and then click OK. A message is sent to the Microsoft Exchange KMS. After you receive a reply, Outlook attempts to store your security keys in the secure store. 

    Select a security level for your keys (High, Medium, or Low), and then click OK. The default security level is Medium. To change the level, click Set Security Level. The levels are as follows:

    • High. Each time the keys are accessed, the user must enter a password.

    • Medium. A dialog box appears notifying the user that his or her keys are being accessed; no password is required. 

    • Low. No dialog box appears and no password is required. 

    If you do not want to receive a prompt each time you send signed mail or read encrypted mail, you should select low security. Microsoft recommends that you set your keys to a high security level. At any time, you can change the security level associated with an Exchange security setting by clicking the Tools menu, clicking Options, and then clicking Security

  6. Click OK to save your changes. 

  7. To add the certificate to the Root Store, click Yes. The dialog box provides the required information about the certificate. If you click No, you will experience problems when you attempt to read and send secure messages. 

To enroll in security or obtain a certificate using external Certificate Authorities
  1. On the Tools menu, click Options

  2. Click the Security tab. 

  3. Click Get a Digital ID, and then select Get an S/MIME certificate from an External Authority. A Microsoft Web page provides information for obtaining a certificate. The page lists various Certificate Authorities. Select the link to the Certificate Authority that you want to use to obtain a certificate. 

    Note To send S/MIME messages to users on the same corporate server, you should use the S/MIME certificates issued by the Microsoft Exchange KMS.

    While your Web browser (Internet Explorer) is storing your certificate and keys on your computer, you may be prompted to select the security level associated with your keys. The default security level is Medium. To change this level while storing the keys, click Set Security Level. The levels are as follows:

    • High. Each time the keys are accessed, the user must enter a password.

    • Medium. A dialog box appears notifying the user that his or her keys are being accessed; no password is required. 

    • Low. No dialog box appears and no password is required. 

    If you do not want to receive a prompt each time you send signed mail or read encrypted mail, you should select low security.

  4. While storing the certificates, you may be prompted to save the root certificate. To add this certificate to the Root Store, click Yes. The dialog box provides the required information about the certificate. If you click No, you will experience problems when you attempt to read and send secure messages.

After the certificate and keys have been installed, Outlook can access and use them.

Configuring Security Settings

The following procedures describe how users can configure Outlook security settings.

Viewing and Changing Security Settings

If the user enrolls in Microsoft Exchange Server security, Outlook creates security settings for the user.

To view or change Outlook security settings
  1. On the Tools menu, click Options

  2. Click the Security tab. 

  3. Under the default security setting, select the setting you want to view or change. 

  4. Click Change Settings to view or change a particular setting. 

  5. Click OK

Creating Outlook Security Settings

If the user obtains a certificate using an external Certificate Authority, Outlook creates a security setting for a single certificate. For multiple certificates, users may want to create their own settings.

To create an Outlook security setting
  1. On the Tools menu, click Options. 

  2. Click the Security tab. 

  3. Click Change Settings

  4. Click Create New

  5. Click Choose to choose a signing certificate. A default encryption certificate and default signing and encryption algorithms are shown. You can change the encryption certificate by choosing another one. Also, you can change the default algorithms by selecting a different value from the drop-down list.

    You may want to make this setting the default setting for all secure mail or for this particular message format (S/MIME or Microsoft Exchange Server security) by using the check boxes provided. Also, for an S/MIME security setting, you may want to send your certificates with secure mail. 

  6. Click OK

Moving Certificates and Keys Between Computers

Users with more than one computer can duplicate their security information using the Outlook Digital IDs Import/Export feature.

To move certificates and keys between computers
  1. On the Tools menu, click Options

  2. Click the Security tab. 

  3. From the Digital IDs section, click Import/Export

  4. On the computer that has your keys and certificates, click Export

  5. On the other computer where you want to import the security information, repeat steps 1 through 3, and then click Import

Outlook exports Microsoft Exchange Server security settings to an .epf file; Outlook exports S/MIME certificates and keys from external certificate authorities to a .pfx file. Users should provide a password to protect this information file.

Users should provide a friendly name, also referred to as the "keyset name" for the keys and certificates they are importing. A password is required before the file can be exported. After importing the security information, users can read and send secure messages.

Renewing Keys and Certificates

A time-out period is associated with each certificate and private key. When the keys given by the Microsoft Exchange KMS approach the end of the time-out period, Outlook warns the user and offers to renew the keys. Outlook sends the renewal message to the server on the user's behalf.

Troubleshooting

The following table describes possible security-related problems that may occur and some troubleshooting techniques.

Problem

Troubleshooting techniques

When attempting to read signed e-mail, the user receives an error message about an invalid signature.

This problem can occur for a variety of reasons, which are listed in the invalid signature dialog box. The most common reason is that a sender's certificate is not trusted. Outlook 98 security uses trust-based certificates. If the user's security does not trust the sender's certificate or the certificate authority that issued the sender's certificate, the signature is considered invalid.
To correct the problem by editing the trust for the certificate, click Edit Trust in the invalid signature dialog box. The trust status of the certificate is displayed. Then, click Explicitly trust this certificate to identify this particular certificate as trusted. Also, you can trust the Certifying Authority's certificate by selecting it from the displayed hierarchy and changing its trust status.

The user is unable to see secure messages in the preview pane.

This feature is not currently supported; a future version of Outlook may support display of signed messages.

While sending a secure message, the user receives an error message—either the user's e-mail address does not match the address on the certificate or there is a problem with the user's certificate.

The user can view the certificate from the security setting chosen for the current e-mail message. If the user has more than one e-mail account, it is possible that the account being used has a different e-mail address than the one on the certificate. Other possible reasons for the problem could be that the certificate is not trusted, or the certificate is expired or revoked.

Cc750169.spacer(en-us,TechNet.10).gif