Organize Favorites by Opening as a Folder

Internet Explorer has long arranged that each user has a special folder, named Favorites, in which to keep shortcuts to favourite web pages. The links represented by these shortcut files are made readily accessible by mapping the folder to the browser’s main menu, under Favorites. If the shortcuts are organised in subfolders, then they show in cascading submenus of the Favorites menu. As if this is not handy enough, the browser can also be asked to present the same Favorites in an Explorer Bar as a left pane in the browser’s main window, with the links now shown as an expandable multi-level indented list.

The Favorites menu also can call up dialog boxes for adding a link to the Favorites and for organising whatever links are already there. Again, the emphasis is on easy access to the user’s favourite links. Indeed, there is too much accessibility for some tastes: both these dialog boxes can be opened for you by script on a web page!

There would ordinarily be controls here for running the script that shows in the box immediately below. To proceed with the demonstration, enable scripts and then refresh this page.

function AddFavorite ()
{
    window.external.AddFavorite (window.location.href, window.document.title);
}

There would ordinarily be controls here for running the script that shows in the box immediately below. To proceed with the demonstration, enable scripts and then refresh this page.

function OrganizeFavorites ()
{
    window.external.ShowBrowserUI ("OrganizeFavorites", null);
}

This user interface for organising favourites does have the merit of sparing users from grappling with their links as shortcut files in some folder that is who knows where within a possibly very large file system. However, not all users are frightened by exposure to files and directories, and some may even resent having to work through somebody else’s idea of a helpful layer of user-interface crud.

It happens that there does exist a facility for getting quickly to whatever directory Internet Explorer treats as your Favorites folder and from there to work with your favourites exactly as you might with any other files in any other folder. As so often however, Microsoft seems not to have documented this alternative user interface until long after its introduction and even now documents it only obscurely.

Directions

When selecting “Organize Favorites...” from the browser’s Favorites menu, hold down the Shift key. Then, instead of presenting the usual dialog box, as described above, the browser simply opens your Favorites folder, and you may operate on the shortcut files with whatever practices you have developed for files in any other folder.

Applicability

This feature dates from at least 1996 (certainly with Windows 95 OSR2) and continues into Windows Vista.

Documentation Status

The only documentation I yet know from Microsoft is among the tips listed by Microsoft’s Tweak UI for Windows XP program.

Technical Reference

For most of the relevant history, the Organize Favorites dialog box is implemented in SHDOCVW.DLL and is opened programmatically by calling the exported function DoOrganizeFavDlg. The dialog box and function are both present in most builds of SHDOCVW version 4.70, specifically from Windows 95 OSR2 and Internet Explorer 3.01 and 3.02, but not an Internet Explorer 3.00 from earlier in 1996. The function was still undocumented at least as late as the January 2004 edition of the MSDN Library on CD, but has got documented since. In the SDK for Windows Vista, dated January 2007, Microsoft puts the function’s “minimum availability” as “Internet Explorer 4.0”.

Dependence on the Shift key comes from the sequence of routines that handle the WM_COMMAND message that Internet Explorer’s main window receives when the “Organize Favorites...” menu entry is selected. The routine at the end calls DoOrganizeFavDlg if the Shift key is not down, else it opens the Favorites folder. These routines, which Microsoft’s symbol files tell us are the OnCommand, _FavoriteOnCommand and _OrganizeFavorites member functions of a class named CShellBrowser2, originated in SHDOCVW but were moved to BROWSEUI.DLL in version 5.0, i.e., for Internet Explorer 5.0, Windows 98 SE and Windows 2000.

In Windows Vista, all the code cited above is moved to IEFRAME.DLL. As far as concerns the “Organize Favorites...” menu entry, the Shift key and the choice of opening the dialog box or the folder, this has all been the same code all the while, even keeping the same resource ID for the menu entry. It’s just that the code has been split, moved and regathered according to Microsoft’s whim about how Windows and Internet Explorer are integrated, separated or whatever.