[PSDK]
[reactos.git] / include / psdk / shobjidl.idl
index 76725ab..a12004e 100644 (file)
@@ -68,6 +68,21 @@ interface IPersistFolder2 : IPersistFolder
 }
 
 
+/*****************************************************************************
+ * IPersistIDList interface
+ */
+[
+    object,
+    uuid(1079acfc-29bd-11d3-8e0d-00c04f6837d5),
+    pointer_default(unique)
+]
+interface IPersistIDList : IPersist
+{
+    HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
+    HRESULT GetIDList( [out] LPITEMIDLIST *ppidl );
+}
+
+
 /*****************************************************************************
  * IEnumIDList interface
  */
@@ -103,7 +118,8 @@ cpp_quote("#endif")
 [
     object,
     uuid(000214E9-0000-0000-C000-000000000046),
-    pointer_default(unique)
+    pointer_default(unique),
+    local
 ]
 interface IShellPropSheetExt : IUnknown
 {
@@ -160,10 +176,6 @@ interface IShellFolder : IUnknown
 
     typedef DWORD SHCONTF;
 
-    cpp_quote("#define SHCIDS_ALLFIELDS        0x80000000L")
-    cpp_quote("#define SHCIDS_CANONICALONLY    0x10000000L")
-    cpp_quote("#define SHCIDS_BITMASK          0xFFFF0000L")
-    cpp_quote("#define SHCIDS_COLUMNMASK       0x0000FFFFL")
     cpp_quote("#define SFGAO_CANCOPY           DROPEFFECT_COPY")
     cpp_quote("#define SFGAO_CANMOVE           DROPEFFECT_MOVE")
     cpp_quote("#define SFGAO_CANLINK           DROPEFFECT_LINK")
@@ -308,22 +320,6 @@ interface IEnumExtraSearch : IUnknown
 ]
 interface IShellFolder2 : IShellFolder
 {
-    typedef enum
-    {
-        SHCOLSTATE_TYPE_STR = 0x00000001,
-        SHCOLSTATE_TYPE_INT = 0x00000002,
-        SHCOLSTATE_TYPE_DATE = 0x00000003,
-        SHCOLSTATE_TYPEMASK = 0x0000000f,
-        SHCOLSTATE_ONBYDEFAULT = 0x00000010,
-        SHCOLSTATE_SLOW = 0x00000020,
-        SHCOLSTATE_EXTENDED = 0x00000040,
-        SHCOLSTATE_SECONDARYUI = 0x00000080,
-        SHCOLSTATE_HIDDEN = 0x00000100,
-        SHCOLSTATE_PREFER_VARCMP = 0x00000200
-    } SHCOLSTATE;
-
-    typedef DWORD SHCOLSTATEF;
-
     typedef struct
     {
         GUID    fmtid;
@@ -340,7 +336,72 @@ interface IShellFolder2 : IShellFolder
     HRESULT MapColumnToSCID( [in] UINT iColumn, [in] SHCOLUMNID *pscid );
 }
 
+/*****************************************************************************
+ * IShellItem interface
+ */
+[
+    object,
+    uuid(43826d1e-e718-42ee-bc55-a1e261c37bfe),
+    pointer_default(unique)
+]
+interface IShellItem : IUnknown
+{
+    typedef DWORD SIGDN;
+
+    typedef DWORD SICHINTF;
+
+    HRESULT BindToHandler(
+        [in] IBindCtx *pbc,
+        [in] REFGUID rbhid,
+        [in] REFIID riid,
+        [out, iid_is(riid)] void **ppvOut);
+
+    HRESULT GetParent( [out] IShellItem **ppsi );
+
+    HRESULT GetDisplayName(
+        [in] SIGDN sigdnName,
+        [out] LPWSTR *ppszName);
+
+    HRESULT GetAttributes(
+        [in] SFGAOF sfgaoMask,
+        [out] SFGAOF *psfgaoAttribs);
+
+    HRESULT Compare(
+        [in] IShellItem *psi,
+        [in] SICHINTF hint,
+        [out] int *piOrder);
+}
+
+typedef enum tagNWMF {
+    NWMF_UNLOADING        = 0x0001,
+    NWMF_USERINITED       = 0x0002,
+    NWMF_FIRST            = 0x0004,
+    NWMF_OVERRIDEKEY      = 0x0008,
+    NWMF_SHOWHELP         = 0x0010,
+    NWMF_HTMLDIALOG       = 0x0020,
+    NWMF_FROMDIALOGCHILD  = 0x0040,
+    NWMF_USERREQUESTED    = 0x0080,
+    NWMF_USERALLOWED      = 0x0100
+} NWMF;
+
+[
+    uuid(d2bc4c84-3f72-4a52-a604-7bcbf3982cbb),
+    object,
+    pointer_default(unique)
+]
+interface INewWindowManager : IUnknown
+{
+    HRESULT EvaluateNewWindow(
+        [in, string] LPCWSTR pszUrl,
+        [in, string] LPCWSTR pszName,
+        [in, string] LPCWSTR pszUrlContext,
+        [in, string] LPCWSTR pszFeatures,
+        [in]         BOOL fReplace,
+        [in]         DWORD dwFlags,
+        [in]         DWORD dwUserActionTime);
+}
 
+cpp_quote("#define SID_SNewWindowManager IID_INewWindowManager")
 
 /*****************************************************************************
  * FOLDERSETTINGS
@@ -367,11 +428,25 @@ typedef enum
     FWF_SINGLECLICKACTIVATE = 0x00008000,
     FWF_NOWEBVIEW           = 0x00010000,
     FWF_HIDEFILENAMES       = 0x00020000,
-    FWF_CHECKSELECT         = 0x00040000
+    FWF_CHECKSELECT         = 0x00040000,
+    FWF_NOENUMREFRESH       = 0x00080000,
+    FWF_NOGROUPING          = 0x00100000,
+    FWF_FULLROWSELECT       = 0x00200000,
+    FWF_NOFILTERS           = 0x00400000,
+    FWF_NOCOLUMNHEADER      = 0x00800000,
+    FWF_NOHEADERINALLVIEWS  = 0x01000000,
+    FWF_EXTENDEDTILES       = 0x02000000,
+    FWF_TRICHECKSELECT      = 0x04000000,
+    FWF_AUTOCHECKSELECT     = 0x08000000,
+    FWF_NOBROWSERVIEWSTATE  = 0x10000000,
+    FWF_SUBSETGROUPS        = 0x20000000,
+    FWF_USESEARCHFOLDER     = 0x40000000,
+    FWF_ALLOWRTLREADING     = 0x80000000
 } FOLDERFLAGS;
 
 typedef enum
 {
+    FVM_AUTO       =-1,
     FVM_ICON       = 1,
     FVM_FIRST      = FVM_ICON,
     FVM_SMALLICON  = 2,
@@ -380,7 +455,8 @@ typedef enum
     FVM_THUMBNAIL  = 5,
     FVM_TILE       = 6,
     FVM_THUMBSTRIP = 7,
-    FVM_LAST       = FVM_THUMBSTRIP
+    FVM_CONTENT    = 8,
+    FVM_LAST       = FVM_CONTENT
 } FOLDERVIEWMODE;
 
 typedef struct
@@ -390,6 +466,21 @@ typedef struct
 } FOLDERSETTINGS, *PFOLDERSETTINGS, *LPFOLDERSETTINGS;
 typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
 
+/*****************************************************************************
+ * IShellIcon interface
+ */
+[
+    uuid(000214e5-0000-0000-c000-000000000046),
+    object,
+    pointer_default(unique)
+]
+interface IShellIcon : IUnknown
+{
+    HRESULT GetIconOf(
+        [in] PCUITEMID_CHILD pidl,
+        [in] UINT flags,
+        [out] int *pIconIndex);
+}
 
 /*****************************************************************************
  * IShellView interface
@@ -465,81 +556,91 @@ interface IShellView : IOleWindow
         [out, iid_is(riid)] void **ppv);
 }
 
-
 [
-    uuid(88E39E80-3578-11CF-AE69-08002B2E1262),
     object,
+    uuid(88e39e80-3578-11cf-ae69-08002b2e1262),
     pointer_default(unique)
 ]
-interface IShellView2 :  IShellView
+interface IShellView2 : IShellView
 {
     typedef GUID SHELLVIEWID;
-
-    cpp_quote("#define SV2GV_CURRENTVIEW ((UINT)-1)")
-    cpp_quote("#define SV2GV_DEFAULTVIEW ((UINT)-2)")
-
-    cpp_quote("#include <pshpack8.h>")
+cpp_quote("#include <pshpack8.h>")
     typedef struct _SV2CVW2_PARAMS
     {
         DWORD cbSize;
-
         IShellView *psvPrev;
         LPCFOLDERSETTINGS pfs;
         IShellBrowser *psbOwner;
         RECT *prcView;
         SHELLVIEWID const *pvid;
         HWND hwndView;
-
     } SV2CVW2_PARAMS, *LPSV2CVW2_PARAMS;
-
-    cpp_quote("#include <poppack.h>")
+cpp_quote("#include <poppack.h>")
 
     HRESULT GetView(
-        [in, out] SHELLVIEWID* pvid,
-        [in] ULONG uView);
-
+        [in, out] SHELLVIEWID *view_guid,
+        [in] ULONG view_type
+    );
     HRESULT CreateViewWindow2(
-        [in] LPSV2CVW2_PARAMS lpParams);
-
+        [in] LPSV2CVW2_PARAMS view_params
+    );
     HRESULT HandleRename(
-        [in, unique] PCUITEMID_CHILD pidlNew);
-
+        [in] LPCITEMIDLIST new_pidl
+    );
     HRESULT SelectAndPositionItem(
-        [in] PCUITEMID_CHILD pidlItem,
-        [in] UINT uFlags,
-        [in, unique] POINT *ppt);
+        [in] LPCITEMIDLIST item,
+        [in] UINT flags,
+        [in] POINT *point
+    );
 }
 
-
+/*****************************************************************************
+ * IFolderView interface
+ */
 [
-    uuid(ec39fa88-f8af-41c5-8421-38bed28f4673),
+    uuid(cde725b0-ccc9-4519-917e-325d72fab4ce),
     object,
     pointer_default(unique)
 ]
-interface IShellView3 :  IShellView2
+interface IFolderView : IUnknown
 {
-    enum tagSV3CVW3
-    {
-        SV3CVW3_DEFAULT             = 0x00000000,
-        SV3CVW3_NONINTERACTIVE      = 0x00000001,
-        SV3CVW3_FORCEVIEWMODE       = 0x00000002,
-        SV3CVW3_FORCEFOLDERFLAGS    = 0x00000004,
-    };
-    typedef DWORD SV3CVW3_FLAGS;
-
-    HRESULT CreateViewWindow3(
-        [in] IShellBrowser *psbOwner,
-        [in, unique] IShellView *psvPrev,
-        [in] SV3CVW3_FLAGS dwViewFlags,
-        [in] FOLDERFLAGS dwMask,
-        [in] FOLDERFLAGS dwFlags,
-        [in] FOLDERVIEWMODE fvMode,
-        [in, unique] const SHELLVIEWID *pvid,
-        [in] const RECT *prcView,
-        [out] HWND *phwndView);
+    HRESULT GetCurrentViewMode( [out] UINT *mode );
+    HRESULT SetCurrentViewMode( [in] UINT mode );
+    HRESULT GetFolder( [in] REFIID riid, [out, iid_is(riid)] void **ppv );
+    HRESULT Item(
+        [in] int index,
+        [out] PITEMID_CHILD *ppidl
+    );
+    HRESULT ItemCount(
+        [in] UINT flags,
+        [out] int *items
+    );
+    HRESULT Items(
+        [in] UINT flags,
+        [in] REFIID riid,
+        [out, iid_is(riid)] void **ppv
+    );
+    HRESULT GetSelectionMarkedItem( [out] int *item );
+    HRESULT GetFocusedItem( [out] int *item );
+    HRESULT GetItemPosition(
+        [in] PCUITEMID_CHILD pidl,
+        [out] POINT* ppt
+    );
+    HRESULT GetSpacing( [in, out, unique] POINT* pt );
+    HRESULT GetDefaultSpacing( [out] POINT* pt );
+    HRESULT GetAutoArrange();
+    HRESULT SelectItem(
+        [in] int item,
+        [in] DWORD flags
+    );
+    HRESULT SelectAndPositionItems(
+        [in] UINT cidl,
+        [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl,
+        [in, unique, size_is(cidl)] POINT* apt,
+        [in] DWORD flags
+    );
 }
 
-
 /*****************************************************************************
  * IShellBrowser interface
  */
@@ -566,8 +667,18 @@ cpp_quote("#define SBSP_PARENT                0x00002000")
 cpp_quote("#define SBSP_NAVIGATEBACK          0x00004000")
 cpp_quote("#define SBSP_NAVIGATEFORWARD       0x00008000")
 cpp_quote("#define SBSP_ALLOW_AUTONAVIGATE    0x00010000")
+cpp_quote("#define SBSP_KEEPSAMETEMPLATE      0x00020000")
+cpp_quote("#define SBSP_KEEPWORDWHEELTEXT     0x00040000")
+cpp_quote("#define SBSP_ACTIVATE_NOFOCUS      0x00080000")
+cpp_quote("#define SBSP_CREATENOHISTORY       0x00100000")
+cpp_quote("#define SBSP_PLAYNOSOUND           0x00200000")
+cpp_quote("#define SBSP_CALLERUNTURUSTED      0x00800000")
+cpp_quote("#define SBSP_TRUSTFIRSTDOWNLOAD    0x01000000")
+cpp_quote("#define SBSP_UNTRUSTEDFORDOWNLOAD  0x02000000")
 cpp_quote("#define SBSP_NOAUTOSELECT          0x04000000")
 cpp_quote("#define SBSP_WRITENOHISTORY        0x08000000")
+cpp_quote("#define SBSP_TRUSTEDFORACTIVEX     0x10000000")
+cpp_quote("#define SBSP_FEEDNAVIGATION        0x20000000")
 cpp_quote("#define SBSP_REDIRECT              0x40000000")
 cpp_quote("#define SBSP_INITIATEDBYHLINKFRAME 0x80000000")
 
@@ -665,7 +776,7 @@ interface IShellLinkA : IUnknown
     HRESULT GetPath(
         [out, size_is(cch)] LPSTR pszFile,
         [in] int cch,
-        [in, out] WIN32_FIND_DATAA *pfd,
+        [in, out, unique] WIN32_FIND_DATAA *pfd,
         [in] DWORD fFlags);
 
     HRESULT GetIDList( [out] LPITEMIDLIST * ppidl );
@@ -853,7 +964,8 @@ interface IPersistFolder3 : IPersistFolder2
 [
     object,
     uuid(000214eb-0000-0000-c000-000000000046),
-    pointer_default(unique)
+    pointer_default(unique),
+    local
 ]
 interface IExtractIconA : IUnknown
 {
@@ -893,7 +1005,8 @@ cpp_quote("#define GIL_DONTCACHE    0x0010")
 [
     object,
     uuid(000214fa-0000-0000-c000-000000000046),
-    pointer_default(unique)
+    pointer_default(unique),
+    local
 ]
 interface IExtractIconW : IUnknown
 {
@@ -942,6 +1055,55 @@ cpp_quote("#define CDBOSC_STATECHANGE  0x00000004")
 }
 
 
+/*****************************************************************************
+ * ICommDlgBrowser2 interface
+ */
+[
+ object,
+ uuid(10339516-2894-11D2-9039-00C04F8EEB3E),
+ pointer_default(unique)
+]
+interface ICommDlgBrowser2 : ICommDlgBrowser
+{
+
+    HRESULT Notify(
+        [in] IShellView *ppshv,
+        [in] DWORD dwNotifyType);
+
+    HRESULT GetDefaultMenuText(
+        [in] IShellView *ppshv,
+        [out, string, size_is(cchMax)] LPWSTR pszText,
+        [in] int cchMax);
+
+    HRESULT GetViewFlags(
+        [out] DWORD *pdwFlags);
+}
+
+
+/*****************************************************************************
+ * ICommDlgBrowser3 interface
+ */
+[
+ object,
+ uuid(C8AD25A1-3294-41EE-8165-71174BD01C57),
+ pointer_default(unique)
+]
+interface ICommDlgBrowser3 : ICommDlgBrowser2
+{
+
+    HRESULT OnColumnClicked(
+        [in] IShellView *ppshv,
+        [in] int iColumn);
+
+    HRESULT GetCurrentFilter(
+        [out, string, size_is(cchFileSpec)] LPWSTR pszFileSpec,
+        [in] int cchFileSpec);
+
+    HRESULT OnPreviewCreated(
+        [in] IShellView *ppshv);
+}
+
+
 /*****************************************************************************
  * IDockingWindowFrame interface
  */
@@ -979,7 +1141,8 @@ cpp_quote("#define DWFAF_HIDDEN           0x0001")
 [
     object,
     uuid(de5bf786-477a-11d2-839d-00c04fd918d0),
-    pointer_default(unique)
+    pointer_default(unique),
+    local
 ]
 interface IDragSourceHelper : IUnknown
 {
@@ -1008,7 +1171,8 @@ interface IDragSourceHelper : IUnknown
 [
     object,
     uuid(4657278b-411b-11d2-839a-00c04fd918d0),
-    pointer_default(unique)
+    pointer_default(unique),
+    local
 ]
 interface IDropTargetHelper : IUnknown
 {
@@ -1159,7 +1323,8 @@ cpp_quote("#define CMIC_MASK_NOZONECHECKS   SEE_MASK_NOZONECHECKS")
 [
     object,
     uuid(000214f4-0000-0000-c000-000000000046),
-    pointer_default(unique)
+    pointer_default(unique),
+    local
 ]
 interface IContextMenu2 : IContextMenu
 {
@@ -1178,7 +1343,8 @@ interface IContextMenu2 : IContextMenu
 [
     object,
     uuid(bcfce0a0-ec17-11d0-8d10-00a0c90f2719),
-    pointer_default(unique)
+    pointer_default(unique),
+    local
 ]
 interface IContextMenu3 : IContextMenu2
 {
@@ -1272,7 +1438,8 @@ interface IResolveShellLink : IUnknown
 [
     object,
     uuid(ac60f6a0-0fd9-11d0-99cb-00c04fd64497),
-    pointer_default(unique)
+    pointer_default(unique),
+       local
 ]
 interface IURLSearchHook : IUnknown
 {
@@ -1288,7 +1455,8 @@ interface IURLSearchHook : IUnknown
 [
     object,
     uuid(09f656a2-41af-480c-88f7-16cc0d164615),
-    pointer_default(unique)
+    pointer_default(unique),
+    local
 ]
 interface ISearchContext : IUnknown
 {
@@ -1307,7 +1475,8 @@ interface ISearchContext : IUnknown
 [
     object,
     uuid(5ee44da4-6d32-46e3-86bc-07540dedd0e0),
-    pointer_default(unique)
+    pointer_default(unique),
+       local
 ]
 interface IURLSearchHook2 : IURLSearchHook
 {
@@ -1326,7 +1495,8 @@ cpp_quote("#define INewShortcutHook WINELIB_NAME_AW(INewShortcutHook)")
 [
     object,
     uuid(000214e1-0000-0000-c000-000000000046),
-    pointer_default(unique)
+    pointer_default(unique),
+       local
 ]
 interface INewShortcutHookA : IUnknown
 {
@@ -1334,7 +1504,7 @@ interface INewShortcutHookA : IUnknown
                 [in] LPCSTR pcszReferent,
                 [in] HWND hwnd);
     HRESULT GetReferent(
-                [out] LPCSTR pcszReferent,
+                [out] LPSTR pcszReferent,
                 [in] int cchReferent);
     HRESULT SetFolder(
                 [in] LPCSTR pcszReferent);
@@ -1356,7 +1526,8 @@ interface INewShortcutHookA : IUnknown
 [
     object,
     uuid(000214f7-0000-0000-c000-000000000046),
-    pointer_default(unique)
+    pointer_default(unique),
+       local
 ]
 interface INewShortcutHookW : IUnknown
 {
@@ -1364,7 +1535,7 @@ interface INewShortcutHookW : IUnknown
                 [in] LPCWSTR pcszReferent,
                 [in] HWND hwnd);
     HRESULT GetReferent(
-                [out] LPCWSTR pcszReferent,
+                [out] LPWSTR pcszReferent,
                 [in] int cchReferent);
     HRESULT SetFolder(
                 [in] LPCWSTR pcszReferent);
@@ -1385,7 +1556,8 @@ interface INewShortcutHookW : IUnknown
 [
     object,
     uuid(85788d00-6807-11d0-b810-00c04fd706ec),
-    pointer_default(unique)
+    pointer_default(unique),
+    local
 ]
 interface IRunnableTask : IUnknown
 {
@@ -1402,7 +1574,8 @@ interface IRunnableTask : IUnknown
 [
     object,
     uuid(d82be2b1-5764-11d0-a96e-00c04fd705a2),
-    pointer_default(unique)
+    pointer_default(unique),
+    local
 ]
 interface IShellChangeNotify : IUnknown
 {
@@ -1418,7 +1591,8 @@ interface IShellChangeNotify : IUnknown
 [
     object,
     uuid(01e18d10-4d8b-11d2-855d-006008059367),
-    pointer_default(unique)
+    pointer_default(unique),
+    local
 ]
 interface IFileSystemBindData : IUnknown
 {
@@ -1428,6 +1602,33 @@ interface IFileSystemBindData : IUnknown
                 [out] WIN32_FIND_DATAW *pfd);
 }
 
+/*****************************************************************************
+ *    ITaskbarList interface
+ */
+[
+    object,
+    uuid(56FDF342-FD6D-11d0-958A-006097C9A090),
+    pointer_default(unique)
+]
+interface ITaskbarList : IUnknown
+{
+    HRESULT HrInit();
+
+    HRESULT AddTab(
+        [in] HWND hwnd);
+
+    HRESULT DeleteTab(
+        [in] HWND hwnd);
+
+    HRESULT ActivateTab(
+        [in] HWND hwnd);
+
+    HRESULT SetActiveAlt(
+        [in] HWND hwnd);
+}
+
+cpp_quote("EXTERN_C const CLSID CLSID_TaskbarList;")
+
 /*****************************************************************************
  * IContextMenuCB interface
  */
@@ -1576,44 +1777,6 @@ interface IDeskBand : IDockingWindow
         [in, out] DESKBANDINFO* pdbi);
 }
 
-cpp_quote("#if (NTDDI_VERSION >= NTDDI_LONGHORN)")
-
-/*****************************************************************************
- * IDeskBandInfo interface
- */
-[
-    uuid(77E425FC-CBF9-4307-BA6A-BB5727745661),
-    object,
-]
-interface IDeskBandInfo : IUnknown
-{
-    HRESULT GetDefaultBandWidth(
-        [in] DWORD dwBandID,
-        [in] DWORD dwViewMode,
-        [out] int *pnWidth);
-}
-
-
-/*****************************************************************************
- * IDeskBand2 interface
- */
-[
-    uuid(79D16DE4-ABEE-4021-8D9D-9169B261D657),
-    object,
-]
-interface IDeskBand2 : IDeskBand
-{
-    HRESULT CanRenderComposited([out] BOOL *pfCanRenderComposited);
-
-    HRESULT SetCompositionState([in] BOOL fCompositionEnabled);
-
-    HRESULT GetCompositionState([out] BOOL *pfCompositionEnabled);
-}
-
-cpp_quote("#endif  // NTDDI_LONGHORN")
-
-
-
 cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60)")
 
 [
@@ -1792,4 +1955,1014 @@ interface IMenuBand : IUnknown
         [out] LRESULT* plRet);
 }
 
+/*****************************************************************************
+ * IProfferService interface
+ */
+[
+    uuid(cb728b20-f786-11ce-92ad-00aa00a74cd0),
+    object,
+    pointer_default(unique),
+    local
+]
+interface IProfferService : IUnknown
+{
+    HRESULT ProfferService(
+        [in] REFGUID service,
+        [in] IServiceProvider *pService,
+        [out] DWORD *pCookie);
+
+    HRESULT RevokeService([in] DWORD cookie);
+}
 
+/*****************************************************************************
+ * IShellMenuCallback interface
+ */
+cpp_quote("#include <pshpack8.h>")
+
+typedef struct tagSMDATA
+{
+       DWORD                   dwMask;
+       DWORD                   dwFlags;
+       HMENU                   hmenu;
+       HWND                    hwnd;
+       UINT                    uId;
+       UINT                    uIdParent;
+       UINT                    uIdAncestor;
+       IUnknown                *punk;
+       LPITEMIDLIST    pidlFolder;
+       LPITEMIDLIST    pidlItem;
+       IShellFolder    *psf;
+       void                    *pvUserData;
+} SMDATA, *LPSMDATA;
+
+cpp_quote("#define SMDM_SHELLFOLDER            0x00000001")
+cpp_quote("#define SMDM_HMENU                  0x00000002")
+cpp_quote("#define SMDM_TOOLBAR                        0x00000004")
+
+typedef struct tagSMINFO
+{
+       DWORD                   dwMask;
+       DWORD                   dwType;
+       DWORD                   dwFlags;
+       int                             iIcon;
+} SMINFO, *PSMINFO;
+
+typedef struct tagSHCSCHANGENOTIFYSTRUCT
+{
+       LONG                    lEvent;
+       LPCITEMIDLIST   pidl1;
+       LPCITEMIDLIST   pidl2;
+} SMCSHCHANGENOTIFYSTRUCT, *PSMCSHCHANGENOTIFYSTRUCT;
+
+cpp_quote("#include <poppack.h>")
+
+enum
+{
+       SMIM_TYPE                       = 0x00000001,
+       SMIM_FLAGS                      = 0x00000002,
+       SMIM_ICON                       = 0x00000004
+};
+
+enum
+{
+       SMIT_SEPARATOR      = 0x00000001,
+       SMIT_STRING         = 0x00000002
+};
+
+enum
+{
+       SMIF_ICON                       = 0x00000001,
+       SMIF_ACCELERATOR        = 0x00000002,
+       SMIF_DROPTARGET         = 0x00000004,
+       SMIF_SUBMENU            = 0x00000008,
+       SMIF_CHECKED            = 0x00000020,
+       SMIF_DROPCASCADE        = 0x00000040,
+       SMIF_HIDDEN                     = 0x00000080,
+       SMIF_DISABLED           = 0x00000100,
+       SMIF_TRACKPOPUP         = 0x00000200,
+       SMIF_DEMOTED            = 0x00000400,
+       SMIF_ALTSTATE           = 0x00000800,
+       SMIF_DRAGNDROP          = 0x00001000,
+       SMIF_NEW                        = 0x00002000,
+};
+
+
+cpp_quote("#define SMC_INITMENU                                0x00000001")
+cpp_quote("#define SMC_CREATE                          0x00000002")
+cpp_quote("#define SMC_EXITMENU                                0x00000003")
+cpp_quote("#define SMC_GETINFO                         0x00000005")
+cpp_quote("#define SMC_GETSFINFO                       0x00000006")
+cpp_quote("#define SMC_GETOBJECT                       0x00000007")
+cpp_quote("#define SMC_GETSFOBJECT                     0x00000008")
+cpp_quote("#define SMC_SFEXEC                          0x00000009")
+cpp_quote("#define SMC_SFSELECTITEM                    0x0000000A")
+cpp_quote("#define SMC_REFRESH                         0x00000010")
+cpp_quote("#define SMC_DEMOTE                          0x00000011")
+cpp_quote("#define SMC_PROMOTE                         0x00000012")
+cpp_quote("#define SMC_DEFAULTICON                     0x00000016")
+cpp_quote("#define SMC_NEWITEM                         0x00000017")
+cpp_quote("#define SMC_CHEVRONEXPAND           0x00000019")
+cpp_quote("#define SMC_DISPLAYCHEVRONTIP       0x0000002A")
+cpp_quote("#define SMC_SETSFOBJECT                     0x0000002D")
+cpp_quote("#define SMC_SHCHANGENOTIFY          0x0000002E")
+cpp_quote("#define SMC_CHEVRONGETTIP           0x0000002F")
+cpp_quote("#define SMC_SFDDRESTRICTED          0x00000030")
+
+[
+    uuid(4CA300A1-9B8D-11d1-8B22-00C04FD918D0),
+    object,
+    pointer_default(unique),
+    local
+]
+interface IShellMenuCallback : IUnknown
+{
+       HRESULT CallbackSM( 
+               [in, out] LPSMDATA psmd,
+        [in] UINT uMsg,
+        [in] WPARAM wParam,
+        [in] LPARAM lParam);
+}
+
+
+/*****************************************************************************
+ * IShellMenu interface
+ */
+
+cpp_quote("#define SMINIT_DEFAULT               0x00000000")
+cpp_quote("#define SMINIT_RESTRICT_DRAGDROP     0x00000002")
+cpp_quote("#define SMINIT_TOPLEVEL              0x00000004")
+cpp_quote("#define SMINIT_CACHED                0x00000010")
+cpp_quote("#define SMINIT_VERTICAL              0x10000000")
+cpp_quote("#define SMINIT_HORIZONTAL            0x20000000")
+cpp_quote("")
+cpp_quote("#define ANCESTORDEFAULT              (UINT)-1")
+cpp_quote("")
+cpp_quote("#define SMSET_TOP                    0x10000000")
+cpp_quote("#define SMSET_BOTTOM                 0x20000000")
+cpp_quote("#define SMSET_DONTOWN                0x00000001")
+cpp_quote("")
+cpp_quote("#define SMINV_REFRESH                0x00000001")
+cpp_quote("#define SMINV_ID                     0x00000008")
+
+[
+    uuid(EE1F7637-E138-11d1-8379-00C04FD918D0),
+    object,
+    pointer_default(unique),
+    local
+]
+interface IShellMenu : IUnknown
+{
+       HRESULT Initialize( 
+               [in] IShellMenuCallback *psmc,
+        [in] UINT uId,
+        [in] UINT uIdAncestor,
+        [in] DWORD dwFlags);
+        
+       HRESULT GetMenuInfo( 
+               [out] IShellMenuCallback **ppsmc,
+               [out] UINT *puId,
+               [out] UINT *puIdAncestor,
+               [out] DWORD *pdwFlags);
+        
+       HRESULT SetShellFolder( 
+        [in] IShellFolder *psf,
+               [in] LPCITEMIDLIST pidlFolder,
+        [in] HKEY hKey,
+        [in] DWORD dwFlags);
+        
+       HRESULT GetShellFolder( 
+               [out] DWORD *pdwFlags,
+               [out] LPITEMIDLIST *ppidl,
+               [in] REFIID riid,
+               [out] void **ppv);
+        
+       HRESULT SetMenu( 
+               [in] HMENU hmenu,
+               [in] HWND hwnd,
+        [in] DWORD dwFlags);
+        
+       HRESULT GetMenu( 
+               [out] HMENU *phmenu,
+               [out] HWND *phwnd,
+               [out] DWORD *pdwFlags);
+        
+       HRESULT InvalidateItem( 
+               [in] LPSMDATA psmd,
+        [in] DWORD dwFlags);
+        
+       HRESULT GetState( 
+               [out] LPSMDATA psmd);
+        
+       HRESULT SetMenuToolbar( 
+               [in] IUnknown *punk,
+        [in] DWORD dwFlags);
+}
+
+
+typedef struct _WINDOWDATA
+{
+    DWORD     dwWindowID;
+    UINT      uiCP;
+    LPITEMIDLIST  pidl;
+    [string]  LPWSTR lpszUrl;
+    [string]  LPWSTR lpszUrlLocation;
+    [string]  LPWSTR lpszTitle;
+} WINDOWDATA;
+
+typedef WINDOWDATA *LPWINDOWDATA;
+typedef const WINDOWDATA *LPCWINDOWDATA;
+
+
+/*****************************************************************************
+ * ITravelEntry interface
+ */
+[
+    uuid(F46EDB3B-BC2F-11d0-9412-00AA00A3EBD3),
+    object,
+    pointer_default(unique),
+    local
+]
+interface ITravelEntry : IUnknown
+{
+    HRESULT Invoke(
+               [in] IUnknown *punk);
+
+    HRESULT Update(
+               [in] IUnknown *punk,
+               BOOL fIsLocalAnchor);
+
+    HRESULT GetPidl(
+               [in] LPITEMIDLIST *ppidl);
+};
+
+
+/*****************************************************************************
+ * ITravelLogClient interface
+ */
+[
+    uuid(241c033e-e659-43da-aa4d-4086dbc4758d),
+    object,
+    pointer_default(unique),
+    local
+]
+interface ITravelLogClient : IUnknown
+{
+    HRESULT FindWindowByIndex(
+        [in] DWORD dwID,
+        [out] IUnknown **ppunk);
+    
+    HRESULT GetWindowData(
+        [out] LPWINDOWDATA pWinData);
+
+    HRESULT LoadHistoryPosition(
+        [in] LPWSTR pszUrlLocation,
+        [in] DWORD dwPosition);
+};
+
+
+/*****************************************************************************
+ * ITravelLog interface
+ */
+[
+    uuid(66A9CB08-4802-11d2-A561-00A0C92DBFE8),
+    object,
+    pointer_default(unique),
+    local
+]
+interface ITravelLog : IUnknown
+{
+    enum tagTLENUMF
+    {
+        TLEF_RELATIVE_INCLUDE_CURRENT   = 0x00000001,
+        TLEF_RELATIVE_BACK              = 0x00000010,
+        TLEF_RELATIVE_FORE              = 0x00000020,
+        TLEF_INCLUDE_UNINVOKEABLE       = 0x00000040,
+        TLEF_ABSOLUTE                   = 0x00000031,
+    };
+    typedef DWORD TLENUMF;
+
+       HRESULT AddEntry(
+               [in] IUnknown *punk,
+               BOOL fIsLocalAnchor);
+
+       HRESULT UpdateEntry(
+               [in] IUnknown *punk,
+               BOOL fIsLocalAnchor);
+
+       HRESULT UpdateExternal(
+               [in] IUnknown *punk,
+               [in] IUnknown *punkHLBrowseContext);
+
+       HRESULT Travel(
+               [in] IUnknown *punk,
+               int iOffset);
+
+       HRESULT GetTravelEntry(
+               [in] IUnknown *punk,
+               int iOffset,
+               [out] ITravelEntry **ppte);
+
+       HRESULT FindTravelEntry(
+               [in] IUnknown *punk,
+               [in] LPCITEMIDLIST pidl,
+               [out] ITravelEntry **ppte);
+
+       HRESULT GetToolTipText(
+               [in] IUnknown *punk,
+               int iOffset,
+               int idsTemplate,
+               [out] LPWSTR pwzText,
+               DWORD cchText);
+
+       HRESULT InsertMenuEntries(
+               [in] IUnknown *punk,
+               [in, out] HMENU hmenu,
+               int nPos,
+               int idFirst,
+               int idLast,
+               DWORD dwFlags);
+
+       HRESULT Clone(
+               [out] ITravelLog **pptl);
+
+       DWORD CountEntries(
+               [in] IUnknown *punk);
+
+       HRESULT Revert();
+};
+
+/*****************************************************************************
+ * IShellService interface
+ */
+[
+    object,
+    uuid(5836FB00-8187-11CF-A12B-00AA004AE837),
+    pointer_default(unique),
+    local
+]
+interface IShellService : IUnknown
+{
+       HRESULT SetOwner(
+               [in] IUnknown *owner);
+};
+
+/*****************************************************************************
+ * IShellBrowser interface
+ */
+[
+    object,
+    uuid(02BA3B52-0547-11D1-B833-00C04FC9B31F),
+    pointer_default(unique),
+    local
+]
+interface IBrowserService : IUnknown
+{
+    typedef enum tagBNSTATE
+    {
+               BNS_NORMAL      = 0,
+               BNS_BEGIN_NAVIGATE      = 1,
+               BNS_NAVIGATE    = 2
+    } BNSTATE;
+
+    cpp_quote("#include <pshpack8.h>")
+    typedef struct basebrowserdataxp
+    {
+               HWND                            _hwnd;
+               ITravelLog                      *_ptl;
+               IUnknown                        *_phlf;
+               IUnknown                        *_pautoWB2;
+               IUnknown                        *_pautoEDS;
+               IShellService           *_pautoSS;
+               int                                     _eSecureLockIcon;
+               DWORD                           _fCreatingViewWindow;
+               UINT                            _uActivateState;
+               LPITEMIDLIST            _pidlViewState;
+               IOleCommandTarget       *_pctView;
+               LPITEMIDLIST            _pidlCur;
+               IShellView                      *_psv;
+               IShellFolder            *_psf;
+               HWND                            _hwndView;
+               LPWSTR                          _pszTitleCur;
+               LPITEMIDLIST            _pidlPending;
+               IShellView                      *_psvPending;
+               IShellFolder            *_psfPending;
+               HWND                            _hwndViewPending;
+               LPWSTR                          _pszTitlePending;
+               BOOL                            _fIsViewMSHTML;
+               BOOL                            _fPrivacyImpacted;
+               CLSID                           _clsidView;
+               CLSID                           _clsidViewPending;
+               HWND                            _hwndFrame;
+    } BASEBROWSERDATAXP;
+       typedef struct basebrowserdataxp *LPBASEBROWSERDATAXP;
+
+       typedef struct basebrowserdatalh
+       {
+               HWND                            _hwnd;
+               ITravelLog                      *_ptl;
+               IUnknown                        *_phlf;
+               IUnknown                        *_pautoWB2;
+               IUnknown                        *_pautoEDS;
+               IShellService           *_pautoSS;
+               int                                     _eSecureLockIcon;
+               DWORD                           _fCreatingViewWindow;
+               UINT                            _uActivateState;
+               LPITEMIDLIST            _pidlViewState;
+               IOleCommandTarget       *_pctView;
+               LPITEMIDLIST            _pidlCur;
+               IShellView                      *_psv;
+               IShellFolder            *_psf;
+               HWND                            _hwndView;
+               LPWSTR                          _pszTitleCur;
+               LPITEMIDLIST            _pidlPending;
+               IShellView                      *_psvPending;
+               IShellFolder            *_psfPending;
+               HWND                            _hwndViewPending;
+               LPWSTR                          _pszTitlePending;
+               BOOL                            _fIsViewMSHTML;
+               BOOL                            _fPrivacyImpacted;
+               CLSID                           _clsidView;
+               CLSID                           _clsidViewPending;
+               HWND                            _hwndFrame;
+               LONG                            _lPhishingFilterStatus;
+       } BASEBROWSERDATALH;
+    cpp_quote("#include <poppack.h>")
+       typedef struct basebrowserdatalh *LPBASEBROWSERDATALH;
+
+       typedef BASEBROWSERDATAXP BASEBROWSERDATA;
+
+       typedef const BASEBROWSERDATA *LPCBASEBROWSERDATA;
+
+       typedef BASEBROWSERDATA *LPBASEBROWSERDATA;
+
+cpp_quote("#if 0")
+typedef HANDLE HMONITOR;
+cpp_quote("#endif /* 0 */")
+
+       typedef struct SToolbarItem
+       {
+               IDockingWindow          *ptbar;
+               BORDERWIDTHS            rcBorderTool;
+               LPWSTR                          pwszItem;
+               BOOL                            fShow;
+               HMONITOR                        hMon;
+       } TOOLBARITEM;
+
+       typedef struct SToolbarItem *LPTOOLBARITEM;
+
+       HRESULT GetParentSite(
+               [out] IOleInPlaceSite **ppipsite);
+
+       HRESULT SetTitle(
+               [in] IShellView *psv,
+               [in] LPCWSTR pszName);
+
+       HRESULT GetTitle(
+               [in] IShellView *psv,
+               [out] LPWSTR pszName,
+               DWORD cchName);
+
+       HRESULT GetOleObject(
+               [out] IOleObject **ppobjv);
+
+       HRESULT GetTravelLog(
+               [out] ITravelLog **pptl);
+
+       HRESULT ShowControlWindow(
+               UINT id,
+               BOOL fShow);
+
+       HRESULT IsControlWindowShown(
+               UINT id,
+               [out] BOOL *pfShown);
+
+       HRESULT IEGetDisplayName(
+               [in] LPCITEMIDLIST pidl,
+               [out] LPWSTR pwszName,
+               UINT uFlags);
+
+       HRESULT IEParseDisplayName(
+               UINT uiCP,
+               [in] LPCWSTR pwszPath,
+               [out] LPCITEMIDLIST *ppidlOut);
+
+       HRESULT DisplayParseError(
+               HRESULT hres,
+               [in] LPCWSTR pwszPath);
+
+       HRESULT NavigateToPidl(
+               [in] LPCITEMIDLIST pidl,
+               DWORD grfHLNF);
+
+       HRESULT SetNavigateState(
+               BNSTATE bnstate);
+
+       HRESULT GetNavigateState(
+               [out] BNSTATE *pbnstate);
+
+       HRESULT NotifyRedirect(
+               [in] IShellView *psv,
+               [in] LPCITEMIDLIST pidl,
+               [out] BOOL *pfDidBrowse);
+
+       HRESULT UpdateWindowList();
+
+       HRESULT UpdateBackForwardState();
+
+       HRESULT SetFlags(
+               DWORD dwFlags,
+               DWORD dwFlagMask);
+
+       HRESULT GetFlags(
+               [out] DWORD *pdwFlags);
+
+       HRESULT CanNavigateNow();
+
+       HRESULT GetPidl(
+               [out] LPCITEMIDLIST *ppidl);
+
+       HRESULT SetReferrer(
+               [in] LPCITEMIDLIST pidl);
+
+       DWORD GetBrowserIndex();
+
+       HRESULT GetBrowserByIndex(
+               DWORD dwID,
+               [out] IUnknown **ppunk);
+
+       HRESULT GetHistoryObject(
+               [out] IOleObject **ppole,
+               [out] IStream **pstm,
+               [out] IBindCtx **ppbc);
+
+       HRESULT SetHistoryObject(
+               [in] IOleObject *pole,
+               BOOL fIsLocalAnchor);
+
+       HRESULT CacheOLEServer(
+               [in] IOleObject *pole);
+
+       HRESULT GetSetCodePage(
+               [in] VARIANT *pvarIn,
+               [out] VARIANT *pvarOut);
+
+       HRESULT OnHttpEquiv(
+               [in] IShellView *psv,
+               BOOL fDone,
+               [in] VARIANT *pvarargIn,
+               [out] VARIANT *pvarargOut);
+
+       HRESULT GetPalette(
+               [out] HPALETTE *hpal);
+
+       HRESULT RegisterWindow(
+               BOOL fForceRegister,
+               int swc);
+}
+
+
+/*****************************************************************************
+ * IShellBrowser2 interface
+ */
+[
+    uuid(68BD21CC-438B-11D2-A560-00A0C92DBFE8),
+    object,
+    pointer_default(unique),
+    local
+]
+interface IBrowserService2 : IBrowserService
+{
+       typedef struct tagFolderSetData
+       {
+               FOLDERSETTINGS          _fs;
+               SHELLVIEWID                     _vidRestore;
+               DWORD                           _dwViewPriority;
+       } FOLDERSETDATA;
+
+       typedef struct tagFolderSetData *LPFOLDERSETDATA;
+
+       LRESULT WndProcBS(
+               [in] HWND hwnd,
+               UINT uMsg,
+               WPARAM wParam,
+               LPARAM lParam);
+
+       HRESULT SetAsDefFolderSettings();
+
+       HRESULT GetViewRect(
+               [out] RECT *prc);
+
+       HRESULT OnSize(
+               WPARAM wParam);
+
+       HRESULT OnCreate(
+               [in] struct tagCREATESTRUCTW *pcs);
+
+       LRESULT OnCommand(
+               WPARAM wParam,
+               LPARAM lParam);
+
+       HRESULT OnDestroy();
+
+       LRESULT OnNotify(
+               [in] struct tagNMHDR *pnm);
+
+       HRESULT OnSetFocus();
+
+       HRESULT OnFrameWindowActivateBS(
+               BOOL fActive);
+
+       HRESULT ReleaseShellView();
+
+       HRESULT ActivatePendingView();
+
+       HRESULT CreateViewWindow(
+               [in] IShellView *psvNew,
+               [in] IShellView *psvOld,
+               [in] LPRECT prcView,
+               [out] HWND *phwnd);
+
+       HRESULT CreateBrowserPropSheetExt(
+               [in] REFIID riid,
+               [out] void **ppv);
+
+       HRESULT GetViewWindow(
+               [out] HWND *phwndView);
+
+       HRESULT GetBaseBrowserData(
+               [out] LPCBASEBROWSERDATA *pbbd);
+
+       LPBASEBROWSERDATA PutBaseBrowserData();
+
+       HRESULT InitializeTravelLog(
+               [in] ITravelLog *ptl,
+               DWORD dw);
+
+       HRESULT SetTopBrowser();
+
+       HRESULT Offline(
+               int iCmd);
+
+       HRESULT AllowViewResize(
+               BOOL f);
+
+       HRESULT SetActivateState(
+               UINT u);
+
+       HRESULT UpdateSecureLockIcon(
+               int eSecureLock);
+
+       HRESULT InitializeDownloadManager();
+
+       HRESULT InitializeTransitionSite();
+
+       HRESULT _Initialize(
+               [in] HWND hwnd,
+               [in] IUnknown *pauto);
+
+       HRESULT _CancelPendingNavigationAsync();
+
+       HRESULT _CancelPendingView();
+
+       HRESULT _MaySaveChanges();
+
+       HRESULT _PauseOrResumeView(
+               BOOL fPaused);
+
+       HRESULT _DisableModeless();
+
+       HRESULT _NavigateToPidl(
+               [in] LPCITEMIDLIST pidl,
+               DWORD grfHLNF,
+               DWORD dwFlags);
+
+       HRESULT _TryShell2Rename(
+               [in] IShellView *psv,
+               [in] LPCITEMIDLIST pidlNew);
+
+       HRESULT _SwitchActivationNow();
+
+       HRESULT _ExecChildren(
+               [in] IUnknown *punkBar,
+               BOOL fBroadcast,
+               [in] const GUID *pguidCmdGroup,
+               DWORD nCmdID,
+               DWORD nCmdexecopt,
+               [in] VARIANTARG *pvarargIn,
+               [in, out] VARIANTARG *pvarargOut);
+
+       HRESULT _SendChildren(
+               [in] HWND hwndBar,
+               BOOL fBroadcast,
+               UINT uMsg,
+               WPARAM wParam,
+               LPARAM lParam);
+
+       HRESULT GetFolderSetData(
+               [out] struct tagFolderSetData *pfsd);
+
+       HRESULT _OnFocusChange(
+               UINT itb);
+
+       HRESULT v_ShowHideChildWindows(
+               BOOL fChildOnly);
+
+       UINT _get_itbLastFocus();
+
+       HRESULT _put_itbLastFocus(
+               UINT itbLastFocus);
+
+       HRESULT _UIActivateView(
+               UINT uState);
+
+       HRESULT _GetViewBorderRect(
+               [out] RECT *prc);
+
+       HRESULT _UpdateViewRectSize();
+
+       HRESULT _ResizeNextBorder(
+               UINT itb);
+
+       HRESULT _ResizeView();
+
+       HRESULT _GetEffectiveClientArea(
+               [out] LPRECT lprectBorder,
+               [in] HMONITOR hmon);
+
+       IStream *v_GetViewStream(
+               [in] LPCITEMIDLIST pidl,
+               DWORD grfMode,
+               [in] LPCWSTR pwszName);
+
+       LRESULT ForwardViewMsg(
+               UINT uMsg,
+               WPARAM wParam,
+               LPARAM lParam);
+
+       HRESULT SetAcceleratorMenu(
+               [in] HACCEL hacc);
+
+       int _GetToolbarCount();
+
+       LPTOOLBARITEM _GetToolbarItem(
+               int itb);
+
+       HRESULT _SaveToolbars(
+               [in] IStream *pstm);
+
+       HRESULT _LoadToolbars(
+               [in] IStream *pstm);
+
+       HRESULT _CloseAndReleaseToolbars(
+               BOOL fClose);
+
+       HRESULT v_MayGetNextToolbarFocus(
+               [in] LPMSG lpMsg,
+               UINT itbNext,
+               int citb,
+               [out] LPTOOLBARITEM *pptbi,
+               [out] HWND *phwnd);
+
+       HRESULT _ResizeNextBorderHelper(
+               UINT itb,
+               BOOL bUseHmonitor);
+
+       UINT _FindTBar(
+               [in] IUnknown *punkSrc);
+
+       HRESULT _SetFocus(
+               [in] LPTOOLBARITEM ptbi,
+               [in] HWND hwnd,
+               [in] LPMSG lpMsg);
+
+       HRESULT v_MayTranslateAccelerator(
+               [in] MSG *pmsg);
+
+       HRESULT _GetBorderDWHelper(
+               [in] IUnknown *punkSrc,
+               [out] LPRECT lprectBorder,
+               BOOL bUseHmonitor);
+
+       HRESULT v_CheckZoneCrossing(
+               [in] LPCITEMIDLIST pidl);
+}
+
+
+/*****************************************************************************
+ * IShellBrowser3 interface
+ */
+[
+    uuid(27D7CE21-762D-48F3-86F3-40E2FD3749C4),
+    object,
+    pointer_default(unique),
+    local
+]
+interface IBrowserService3 : IBrowserService2
+{
+       HRESULT _PositionViewWindow(
+               [in] HWND hwnd,
+               [in] LPRECT prc);
+
+       HRESULT IEParseDisplayNameEx(
+               UINT uiCP,
+               [in] LPCWSTR pwszPath,
+               DWORD dwFlags,
+               [out] LPITEMIDLIST *ppidlOut);
+}
+
+
+/*****************************************************************************
+ * IShellBrowser4 interface
+ */
+[
+    uuid(639f1bff-e135-4096-abd8-e0f504d649a4),
+    object,
+    pointer_default(unique),
+    local
+]
+interface IBrowserService4 : IBrowserService3
+{
+       HRESULT ActivateView(
+               BOOL fPendingView);
+
+       HRESULT SaveViewState();
+
+       HRESULT _ResizeAllBorders();
+}
+
+cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60)")
+
+/*****************************************************************************
+ * ITrackShellMenu interface
+ */
+[
+    uuid(8278F932-2A3E-11d2-838F-00C04FD918D0),
+    object,
+    pointer_default(unique),
+    local
+]
+interface ITrackShellMenu : IShellMenu
+{
+       HRESULT SetObscured( 
+               [in] HWND hwndTB,
+               [in] IUnknown *punkBand,
+               DWORD dwSMSetFlags);
+
+       HRESULT Popup( 
+               [in] HWND hwnd,
+               [in] POINTL *ppt,
+               [in] RECTL *prcExclude,
+               MP_POPUPFLAGS dwFlags);
+};
+
+cpp_quote("#endif /* _WIN32_IE_IE60 */")
+
+/*****************************************************************************
+ *    IAutoCompleteDropDown interface
+ */
+[
+    object,
+    uuid(3CD141F4-3C6A-11d2-BCAA-00C04FD929DB),
+    pointer_default(unique)
+]
+interface IAutoCompleteDropDown : IUnknown
+{
+cpp_quote("#define ACDD_VISIBLE   0x0001")
+
+    HRESULT GetDropDownStatus(
+        [out] DWORD *pdwFlags,
+        [out, string] LPWSTR *ppwszString);
+
+    HRESULT ResetEnumerator();
+}
+
+/*****************************************************************************
+ * IExplorerBrowserEvents interface
+ */
+[
+ object,
+ uuid(361BBDC7-E6EE-4E13-BE58-58E2240C810F)
+]
+interface IExplorerBrowserEvents : IUnknown
+{
+    HRESULT OnNavigationPending(
+        [in] PCIDLIST_ABSOLUTE pidlFolder);
+
+    HRESULT OnViewCreated(
+        [in] IShellView *psv);
+
+    HRESULT OnNavigationComplete(
+        [in] PCIDLIST_ABSOLUTE pidlFolder);
+
+    HRESULT OnNavigationFailed(
+        [in] PCIDLIST_ABSOLUTE pidlFolder);
+}
+
+typedef GUID EXPLORERPANE;
+typedef EXPLORERPANE *REFEXPLORERPANE;
+
+cpp_quote("#define SID_ExplorerPaneVisibility IID_IExplorerPaneVisibility")
+
+/*****************************************************************************
+ * IExplorerPaneVisibility interface
+ */
+[
+ object,
+ uuid(E07010EC-BC17-44C0-97B0-46C7C95B9EDC)
+]
+interface IExplorerPaneVisibility : IUnknown
+{
+    typedef enum tagEXPLORERPANESTATE {
+        EPS_DONTCARE     = 0x0,
+        EPS_DEFAULT_ON   = 0x1,
+        EPS_DEFAULT_OFF  = 0x2,
+        EPS_STATE_MASK   = 0xffff,
+        EPS_INITIALSTATE = 0x10000,
+        EPS_FORCE        = 0x20000
+    } EXPLORERPANESTATE;
+
+    HRESULT GetPaneState(
+        [in] REFEXPLORERPANE ep,
+        [out] EXPLORERPANESTATE *peps);
+}
+
+typedef [v1_enum] enum tagEXPLORER_BROWSER_FILL_FLAGS {
+    EBF_NONE                     = 0,
+    EBF_SELECTFROMDATAOBJECT     = 0x100,
+    EBF_NODROPTARGET             = 0x200
+} EXPLORER_BROWSER_FILL_FLAGS;
+
+typedef [v1_enum] enum tagEXPLORER_BROWSER_OPTIONS {
+    EBO_NONE               = 0x00,
+    EBO_NAVIGATEONCE       = 0x01,
+    EBO_SHOWFRAMES         = 0x02,
+    EBO_ALWAYSNAVIGATE     = 0x04,
+    EBO_NOTRAVELLOG        = 0x08,
+    EBO_NOWRAPPERWINDOW    = 0x10,
+    EBO_HTMLSHAREPOINTVIEW = 0x20
+} EXPLORER_BROWSER_OPTIONS;
+
+cpp_quote("#define SID_SExplorerBrowserFrame IID_ICommDlgBrowser")
+
+/*****************************************************************************
+ * IExplorerBrowser interface
+ */
+[
+ object,
+ uuid(DFD3B6B5-C10C-4BE9-85F6-A66969F402F6),
+ pointer_default(unique)
+]
+interface IExplorerBrowser : IUnknown
+{
+
+    [local] HRESULT Initialize(
+        [in] HWND hwndParent,
+        [in] const RECT *prc,
+        [in, unique] const FOLDERSETTINGS *pfs);
+
+    HRESULT Destroy();
+
+    [local] HRESULT SetRect(
+        [in,out,unique] HDWP *phdwp,
+        [in] RECT rcBrowser);
+
+    HRESULT SetPropertyBag(
+        [in, string] LPCWSTR pszPropertyBag);
+
+    HRESULT SetEmptyText(
+        [in, string] LPCWSTR pszEmptyText);
+
+    HRESULT SetFolderSettings(
+        [in] const FOLDERSETTINGS *pfs);
+
+    HRESULT Advise(
+        [in] IExplorerBrowserEvents *psbe,
+        [out] DWORD *pdwCookie);
+
+    HRESULT Unadvise(
+        [in] DWORD dwCookie);
+
+    HRESULT SetOptions(
+        [in] EXPLORER_BROWSER_OPTIONS dwFlag);
+
+    HRESULT GetOptions(
+        [out] EXPLORER_BROWSER_OPTIONS *pdwFlag);
+
+    HRESULT BrowseToIDList(
+        [in] PCUIDLIST_RELATIVE pidl,
+        [in] UINT uFlags);
+
+    HRESULT BrowseToObject(
+        [in] IUnknown *punk,
+        [in] UINT uFlags);
+
+    HRESULT FillFromObject(
+        [in] IUnknown *punk,
+        [in] EXPLORER_BROWSER_FILL_FLAGS dwFlags);
+
+    HRESULT RemoveAll();
+
+    HRESULT GetCurrentView(
+        [in] REFIID riid,
+        [out, iid_is(riid)] IUnknown **ppv);
+}