This page is a repositry for undocumented shell information. It is also the home of shlext.h a header file defines all the undocuemtned structures functions and constants that I have been able to find and or reverse engineer myself.
The functionality of the undocuemnted shell functions can be broken down into several groups:
IDList Helper Functions.
Since November of 1997 there have been 6 releases of the Platform SDK each one defining a few more of the previously undocumented structures and functions I have defined in shlext.h. This leaves shlext.h with a bit of a problem. If I leave it as is, users of the newer platform sdks' cannot compile due to duplicate definition errors. If I delete the newly defined information, users of older platform sdk's will not have critical structures documented at all! To get around this, I have defined some MACROS that allow shlext.h to be successfully used with many versions of the platform SDK.
Before including shlext.h in a source file you should define the version of the platform SDK you are using. Following is a table outlining the last 6 releases of the platform SDK, and what value to #define _PLATFORM_SDK as:
Edition | _PLATFORM_SDK | Products |
---|---|---|
September 1999 | 0x0500 | October 1999 Microsoft Developer Network |
July 1999 | 0x0450 | |
June 1999 | 0x0400 | |
September 1998 | 0x0300 | Visual C++ 6.0 |
January 1998 | 0x0200 | |
November 1997 | 0x0100 |
In addition to the _PLATFORM_SDK MACRO it is also necessary to define (or not define) _WIN32_WINNT correctly to indicate the intended target OS. This is a standard MACRO, and documentation should be available in your compilers help regarding setting it correctly. shelext.h uses it to decide whether to define string parameters as ANSI or UNICODE. In addition, some functions are available only on one platform. Functions that are not available on the target platform will not be defined.
The shell32lib project can be used to create an addition import library for shell32.dll that contains import descriptors for the undocumented functions. Using this import library is NOT recommended if you wish to target both 9X and NT platforms, as many of the undocumented functions exist at the same ordinal on both platform, but accept diffrent parameters. All string parameters are UNICODE on NT and ANSI on 9X.