WinHelp

Microsoft WinHelp is a proprietary format for online help files that can be displayed by the Microsoft Help browser winhelp.exe or winhlp32.exe. The file format is based on Rich Text Format (RTF). It remained a popular Help platform from Windows 3.0 through Windows XP. WinHelp was removed in Windows Vista purportedly to discourage software developers from using the obsolete format and encourage use of newer help formats. Support for WinHelp files would eventually be removed entirely in Windows 10.

History

 * 1990 – WinHelp 1.0 shipped with Windows 3.0.
 * 1995 – WinHelp 4.0 shipped with Windows 95 / Windows NT.
 * 2006 – Microsoft announced its intentions to phase out WinHelp as a supported platform. WinHelp is not part of Windows Vista out of the box. WinHelp files come in 16 bit and 32 bit types. Vista treats these files types differently. When starting an application that uses the 32 bit .hlp format, Windows warns that the format is no longer supported. A downloadable viewer for 32 bit .hlp files is available from the Microsoft Download Center. The 16 bit WinHelp files continue to display in Windows Vista (32 bit only) without the viewer download.
 * January 9, 2009 – Microsoft announced the availability of Windows Help program (WinHlp32.exe) for Windows Server 2008 at the Microsoft Download Center.
 * October 14, 2009 – Microsoft announced the availability of Windows Help program (WinHlp32.exe) for Windows 7 and Windows Server 2008 R2 at the Microsoft Download Center.
 * October 26, 2012 – Microsoft announced the availability of Windows Help program (WinHlp32.exe) for Windows 8 at the Microsoft Download Center.
 * November 5, 2013 – Microsoft announced the availability of Windows Help program (WinHlp32.exe) for Windows 8.1 at the Microsoft Download Center.
 * July 15, 2015 - Microsoft completely removed Windows Help from Windows 10. Attempting to open a .hlp file just brings users to a help page detailing that it was removed.

File format
A WinHelp file has a ".hlp" suffix. It can be accompanied by an optional table of contents (.cnt) file if the help developer created one. When Windows opens a WinHelp file, it creates a .gid file in the same directory or in " ", containing information about the .hlp file such as the window size and location. If the user clicks the "Find" tab and enables keyword indexing, Windows creates an index file with a .fts (full text search) extension. Annotations and bookmarks for each Windows help file have the extension ".ann" and ".bmk".

A number of software tools can decompile a WinHelp file into its source documents: HPJ, CNT, RTF, BMP, and SHG. An HPJ file is the project file that is created and edited in the Help Workshop (or a third party help authoring tool). The HPJ contains information about what RTF files to compile into the help, the MAP IDs and Aliases that provide links from a calling application to the help file, and help file appearance (window size, default buttons, color schemes, etc.). The CNT file provides the table of contents for the help file. An SHG file is a "SHED" graphics file that essentially creates an image map of help calls for a graphic file (e.g., a BMP).

A number of tools can read and explore these files. (See, for example, Help to RTF and winhelpcgi.)

Source files and compilation
Source files required to compile a .hlp file consist of one or more documents in Rich Text Format and a help project file with the extension .hpj, along with any image files (.bmp, .wmf, or .shg) that are used within the Help file. An optional table of contents file with the extension .cnt can also be created for use with the .hlp file.

Within the .rtf files, topics are separated by page breaks. Each topic has a series of footnotes that contain information for the help compiler:
 * # footnotes contain the topic ID (used to create links to that topic).
 * $ footnotes contain the topic name as it displays in the table of contents, index, and other locations.
 * K footnotes contain keywords for the index.
 * A footnotes contain See Also keywords.
 * * footnotes contain build tags.
 * + footnotes contain browse sequence information.
 * ! footnotes contain topic entry macros.

Only the # footnote is required. All others are optional.

Text in each topic can contain limited formatting, including bold text, italics, and colors. Superscript and subscript are not allowed. Jumps between topics in the same Help file usually appear in the source document as double-underlined text (green by default, though this can be overridden) followed by a topic ID in hidden text. Popup links appear in the source document as text with a single underline (also green by default) followed by a topic ID in hidden text. (In the .hlp file, the jumps show up as green text with a single underline, and popups show up as green text with a dotted underline.)

Images can be added using codes such as {bmc image.bmp}. Supported image formats include .bmp, .wmf, and .shg (used for image maps, which can contain jumps or popups that are triggered by clicking on specific parts of the image).

After the source files have been created, the help file can be compiled using a WinHelp compiler such as HCW.exe or by using a commercial software program such as RoboHelp or HelpBreeze, most of which (included the two cited here) also use hcw.exe as the backend compiler.

WinHelp appearance and features
Depending on how it has launched and what settings the Help author chose, a WinHelp file opens either to its default topic, its table of contents, or its index.

A topic in a WinHelp file opens in a separate window, in a size and initial position that the Help author may choose. Users can resize or reposition the window. The Help author can control whether the Help file stores the user's settings between sessions, or always opens in the default size and position.

When a topic is open, a title bar at the top of the Help window displays the topic title. Below that is a row of menus (File, Edit, Bookmark, Options, and Help), which control various aspects of the file. A row of buttons usually appears below the menus. The Help author controls which buttons, if any, appear. Typical buttons include Contents, Index, Back, and Print, along with << and >> buttons to browse through the file. Help authors can also create custom buttons to jump to specific topics or perform other actions.

Below the buttons is the main text area of the window. Typically, the text begins with a heading, often bold or in a larger font than the rest of the text. This heading may sometimes be in a non-scrolling region—an area of the window that does not move up or down via the scrollbar at the side of the window. Non-scrolling regions can only be used at the beginning of a topic. The Help author can control size and background color of a non-scrolling region.

Help authors can also control the background color of the main text area, where the actual text of the topic appears. This text can be formatted and arranged in many ways. Within the text, jumps appear as green text with a single underline. Single-clicking on a jump opens a different topic. Some jumps may open secondary Help windows to display information. Popups appear in the text as green text with a dotted underline. Single-clicking on a popup opens a small window with no menus, buttons, or scrollbars, sized to fit the text. Often, popups provide short definitions of key terms or other supplemental information about the main text. The popup automatically disappears the next time the user clicks or presses a key.

Many, though not all Help topics have See Also jumps at the end of the text. Depending on the Help author's preference, this feature may be a simple list of jumps under the heading See Also, or it may be a small button that, when clicked, brings up a dialog box displaying all the relevant topics. Clicking on the name of a topic in that dialog box then clicking Display opens that topic.

Most Help files also contain a table of contents and an index to help users locate information. These appear in a separate, tabbed window. Clicking on the Contents tab opens the table of contents, in which users can click on headings to see the topics. Often, headings are marked with icons that look like small books and the topics have icons that look like pages. Double-clicking on a topic (or clicking on a topic then clicking Display) opens that topic. Clicking on the Index tab opens the index, which has a typing field and an alphabetical keyword list. Typing in the typing field automatically scrolls the list of keywords to the closest match. Double-clicking on a keyword (or clicking on a keyword then clicking Display) displays the topic associated with that keyword (if only one) or brings up a list of all topics associated with it. The index is important in helping users locate information. Sometimes Help files also have a Find tab, which lets the user search for any word used in the text of the file, not just for keywords.

WinHelp also supports a feature known as context-sensitive help. Context-sensitive help is assistance that is appropriate to where the user is in the software application, and what they are trying to do.

A rather security critical feature is that one can also include a DLL file containing custom code and associating it with WinHelp topics. Effectively this makes .HLP files equivalent to executables.

End of support
At the 2006 WritersUA conference, Microsoft announced its intentions to phase out WinHelp as a supported platform. Ted Dworkin (Partner Director of WinHelp Experience) stated, "WinHelp does not meet the code standards established for Vista. These standards include security, reliability, and performance." He went on to say that WinHelp is designed in such a way that, "...we would have to rewrite it from the ground up to meet the Vista code standards. And that approach doesn't make sense given that we have two other Help systems in Vista."

The updated licensing agreement prohibits application developers from packaging the WinHelp libraries with their installers. This means that WinHelp manuals for legacy applications are not readable on a new Windows Vista (or higher version) installation. To read them, the end-user must obtain the 32-bit WinHelp viewer from Microsoft's website and manually install it.

In Windows 10 and later, Microsoft does not offer a WinHelp viewer for the operating system. The last version of Windows on which it was possible to open and read WinHelp files, using an official downloadable component by Microsoft, is Windows 8.1. The open-source version of winhlp32 from Wine also works on Windows 10. It is included as part of WineVDM. Also on Windows 10 WinHelp works with winhlp32.exe from older version of Windows.

Other documentation file formats
Although documentation can be maintained entirely in a vendor-specific presentation format such as WinHelp, it is more often the case that documentation must be published in multiple presentation formats at once: Microsoft Compiled HTML Help (CHM), WinHelp, HTML pages, Java Help, PDF, etc. It would be very expensive and error-prone to maintain each format separately.

For this reason, authors often maintain documentation in an industry-standard, vendor-neutral authoring format—such as DocBook or FrameMaker—that can be used to generate several different presentation formats (including WinHelp). Various presentation files thus produced (with WinHelp or other tools) contain consistent content because they were generated from the same source.