Windows Help

In early versions of Windows, the help for Windows itself is no different from help for other programs in terms of how it gets displayed. Windows has its own content, of course, but developers of other software can write their content in the same file format and have it displayed by the same program. There are points against, and there have always been programs that don’t use the standard help, but points in favour seem significant enough that software developers tend not to go their own way unless they see a good reason. First, as many users at least suspect, software companies see themselves as being in the business of writing software not user manuals. The more that there is a ready-made platform for showing a program’s help, the more attention that software companies can give to writing something that’s useful to show. Second, users benefit from a common presentation for help in all programs that run on Windows. After all, many users consult a program’s help only because they are in difficulty: the less new is their experience of seeking help, the faster they are likely to get out of their difficulty.

The established format for help content since Windows 98 is the Compiled HTML Help file, typically with the CHM extension. This one file is a compression of any number of HTML files for the help topics, together with supporting files such as images, and optionally some more HTML files to provide an index and table of contents. The CHM file is all that needs to be distributed as the content for its program’s help. It opens with the HTML Help program, HH.EXE, which is supplied with Windows (and has a -decompile switch for extracting the component files, if you’re curious).

The Help and Support Center

That Windows might present its own help differently from the standard for Windows programs seems to have started with Windows Me but did not take hold in the NT versions until Windows XP. In both Windows XP and Windows Server 2003, the programs that come with Windows, whether lowly accessories such as the Calculator and Notepad, or advanced tools such as the Device Manager and Registry Editor, or bundled products such as Internet Explorer and Windows Media Player, still use CHM files for their help, but the entry for Help and Support on the Start Menu runs a dedicated program, HELPCTR.EXE, which calls itself the Help and Support Center.

The Help Pane

This is all taken much further in Windows Vista. CHM files are used for only a small proportion of the programs that come with Windows, and these are arguably all advanced tools. A new program, HELPPANE.EXE, displays the help for Windows itself, i.e., when invoked from the Windows Help and Support entry on the Start Menu, and also for all the accessories, games, programs, etc, that come with Windows. Moreover, this program for Windows Help and Support runs as only one instance at a time: if you call up the help for different programs one after another without closing the Windows Help and Support, you just keep changing the topic in the one help window.

This integrated machinery for help in Windows Vista is special to Windows and to the programs that Microsoft includes with Windows, and Microsoft plainly means it to stay this way. What little documentation Microsoft offers to programmers (by way of a Windows Vista Help SDK) is very clear:

The Help Pane API can only be used to display the Windows Help content set. Displaying content that is not part of the Windows Help content set is not supported.

In this context, the wonder is that Microsoft has published any programming documentation at all for the new Windows Help. The official reason for the documentation’s existence is so that programmers can “call the Help Pane API from Windows applications”. Perhaps the intended scenario is that a non-Microsoft program might want to present topics from Windows Help and Support as a convenience to the program’s own users, e.g., to ease their path through some Windows operation that must be performed on the way to using some feature of interest in the non-Microsoft program. Microsoft’s documentation gives just enough information for doing this. For instance, if you wanted your program’s Help to advise how to see your program’s hidden files in the Windows Explorer, you could follow Microsoft’s programming sample to load the Windows Help and Support and then ask it to display the topic represented by the URL

mshelp://windows/?id=27e9a81a-fac7-457f-896b-e0017a04a59f

If this really is the sort of use that Microsoft has in mind, then I look forward to seeing Microsoft’s published list of URLs for Windows Help topics and an assurance that Microsoft means to keep supporting both the topics and the URLs that select them.

Anti-Competitive Advantage

Meanwhile, I wonder if there is something more going on. To me, this documentation’s existence has the look of Microsoft keeping very narrowly to the terms of a legal settlement while continuing its practice of leveraging its operating system to help establish its applications.

Microsoft distributes with Windows various applications that compete with non-Microsoft products in a supposedly open market. One example is Internet Explorer, whose competition with other applications for web browsing was thought by many to be unfair and even unlawful because Internet Explorer is developed with access to system functionality that Microsoft does not document for the manufacturers of competing web browsers. Since Microsoft’s operating system, Windows, is a monopoly product in its market (of operating systems for the sort of hardware that it works on), Microsoft has obligations not to behave anti-competitively in dependent markets (such as those for web browsers). Concern about this led eventually to a prominent anti-trust case. As a condition of the Final Judgment in United States v. Microsoft, CA No. 98-1232, Microsoft is required to disclose “the APIs and related Documentation that are used by Microsoft Middleware to interoperate with a Windows Operating System Product”.

Now look at the presentation of help by Microsoft Middleware such as Windows Media Player and Windows Movie Maker (and Internet Explorer, for that matter). They all use the Windows Help and Support, but this does more than provide their users with a common presentation of help. It also communicates to those users a sense that these programs act as one with Windows. Their help is presented not just with the same look-and-feel as Windows Help and Support but as part of it.

The effect of this integrated look-and-feel for help is all the greater for being unavailable to the competition. But see that Microsoft has kept to the condition. The API that Microsoft Middleware calls to get Windows Help and Support to display help is documented. A non-Microsoft program in competition with Microsoft Middleware can also call Windows Help and Support to display help. But to what end? The privileged access of Microsoft Middleware to Windows Help and Support does not come much at all from the API but from the content that Windows Help and Support knows to display. What matters are the details of file format and installation—and these Microsoft discloses to the Microsoft Middleware but keeps from the non-Microsoft competition.