Geoff Chappell - Software Analyst
The CCommonBrowser class is one of many that BROWSEUI exposes through its exported DllGetClassObject function. Instances can therefore be created using such well-documented COM functions as CoCreateInstance, by anyone who knows the CLSID:
Instances are also created internally, as the base of a class named CShellBrowser2, which is in turn the base of a class named CExplorerBrowser.
The CCommonBrowser class can be aggregated.
The CCommonBrowser class implements the following interfaces:
Note that the class has at different times implemented two distinct interfaces named IShellBrowserService. Builds before Windows Vista implement the large documented IBrowserService3 and the small undocumented IShellBrowserService. For Windows Vista, these are combined into a large undocumented IShellBrowserService4. The IShellBrowserService among this interface’s bases has the same name but a different IID from the original IShellBrowserService, and its methods elaborate those of IBrowserService. As if this is not enough complication, a third IShellBrowserService is defined for SHELL32 in Windows 7—and, would you believe it, the original IShellBrowserService reappears (with a new IID and name but the same methods) as IIEBrowserService in IEFRAME version 7.0.
The creatable CCommonBrowser class is implemented in BROWSEUI version 5.0 to 6.0.
IEFRAME version 7.0 has CCommonBrowser but not as a creatable class. It appears to be retained just a base for the internal class CShellBrowser2. IEFRAME version 8.0 does not implement CCommonBrowser even internally. Its CShellBrowser2 class is instead based on CBaseBrowser2, as brought in from SHDOCVW.