ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

shobjidl.idl
Go to the documentation of this file.
00001 /*
00002  * COM interfaces for shell objects
00003  *
00004  * Copyright (C) 1999 Juergen Schmied
00005  * Copyright (C) 2003 Alexandre Julliard
00006  *
00007  * This library is free software; you can redistribute it and/or
00008  * modify it under the terms of the GNU Lesser General Public
00009  * License as published by the Free Software Foundation; either
00010  * version 2.1 of the License, or (at your option) any later version.
00011  *
00012  * This library is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015  * Lesser General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU Lesser General Public
00018  * License along with this library; if not, write to the Free Software
00019  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00020  */
00021 
00022 import "objidl.idl";
00023 import "oleidl.idl";
00024 import "oaidl.idl";
00025 import "docobj.idl";
00026 import "shtypes.idl";
00027 import "servprov.idl";
00028 import "comcat.idl";
00029 import "propidl.idl";
00030 /* FIXME: import "prsht.idl";*/
00031 import "msxml.idl";
00032 import "wtypes.idl";
00033 import "propsys.idl";
00034 import "objectarray.idl";
00035 /* FIXME: import "structuredquery.idl"; */
00036 
00037 cpp_quote("/* FIXME: #include <sherrors.h> */")
00038 
00039 
00040 /*****************************************************************************
00041  * IPersistFolder interface
00042  */
00043 [
00044     object,
00045     uuid(000214ea-0000-0000-c000-000000000046),
00046     pointer_default(unique)
00047 ]
00048 interface IPersistFolder : IPersist
00049 {
00050     typedef IPersistFolder *LPPERSISTFOLDER;
00051 
00052     HRESULT Initialize( [in] LPCITEMIDLIST pidl );
00053 }
00054 
00055 
00056 /*****************************************************************************
00057  * IPersistFolder2 interface
00058  */
00059 [
00060     object,
00061     uuid(1ac3d9f0-175c-11d1-95be-00609797ea4f),
00062     pointer_default(unique)
00063 ]
00064 interface IPersistFolder2 : IPersistFolder
00065 {
00066     typedef IPersistFolder2 *LPPERSISTFOLDER2;
00067 
00068     HRESULT GetCurFolder( [out] LPITEMIDLIST *ppidl );
00069 }
00070 
00071 
00072 /*****************************************************************************
00073  * IPersistIDList interface
00074  */
00075 [
00076     object,
00077     uuid(1079acfc-29bd-11d3-8e0d-00c04f6837d5),
00078     pointer_default(unique)
00079 ]
00080 interface IPersistIDList : IPersist
00081 {
00082     HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
00083     HRESULT GetIDList( [out] LPITEMIDLIST *ppidl );
00084 }
00085 
00086 
00087 /*****************************************************************************
00088  * IEnumIDList interface
00089  */
00090 [
00091     object,
00092     uuid(000214f2-0000-0000-c000-000000000046),
00093     pointer_default(unique)
00094 ]
00095 interface IEnumIDList : IUnknown
00096 {
00097     typedef IEnumIDList *LPENUMIDLIST;
00098 
00099     HRESULT Next(
00100         [in] ULONG celt,
00101         [out, size_is(celt), length_is(*pceltFetched)] LPITEMIDLIST *rgelt,
00102         [out] ULONG *pceltFetched);
00103 
00104     HRESULT Skip( [in] ULONG celt );
00105     HRESULT Reset();
00106     HRESULT Clone( [out] IEnumIDList **ppenum );
00107 }
00108 
00109 /*****************************************************************************
00110  * IShellPropSheetExt interface
00111  */
00112 cpp_quote("#if 0")
00113     typedef LPARAM LPFNSVADDPROPSHEETPAGE;
00114 cpp_quote("#else")
00115 cpp_quote("#include <prsht.h>")
00116 cpp_quote("typedef LPFNADDPROPSHEETPAGE LPFNSVADDPROPSHEETPAGE;")
00117 cpp_quote("#endif")
00118 
00119 [
00120     object,
00121     uuid(000214E9-0000-0000-C000-000000000046),
00122     pointer_default(unique),
00123     local
00124 ]
00125 interface IShellPropSheetExt : IUnknown
00126 {
00127     enum tagSHELLPROPSHEETEXTPAGEID {
00128         EXPPS_FILETYPES = 0x1
00129     };
00130 
00131     typedef UINT EXPPS;
00132 
00133     HRESULT AddPages(
00134         [in] LPFNSVADDPROPSHEETPAGE pfnAddPage,
00135         [in] LPARAM lParam);
00136     HRESULT ReplacePage(
00137         [in] EXPPS uPageID,
00138         [in] LPFNSVADDPROPSHEETPAGE pfnReplaceWith,
00139         [in] LPARAM lParam);
00140 }
00141 typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT;
00142 
00143 /*****************************************************************************
00144  * IShellFolder interface
00145  */
00146 [
00147     object,
00148     uuid(000214e6-0000-0000-c000-000000000046),
00149     pointer_default(unique)
00150 ]
00151 interface IShellFolder : IUnknown
00152 {
00153     typedef IShellFolder * LPSHELLFOLDER;
00154 
00155     typedef enum tagSHGDN
00156     {
00157         SHGDN_NORMAL = 0,
00158         SHGDN_INFOLDER = 1,
00159         SHGDN_FOREDITING = 0x1000,
00160         SHGDN_INCLUDE_NONFILESYS = 0x2000,
00161         SHGDN_FORADDRESSBAR = 0x4000,
00162         SHGDN_FORPARSING = 0x8000
00163     } SHGNO;
00164 
00165     typedef DWORD SHGDNF;
00166 
00167     enum tagSHCONTF
00168     {
00169         SHCONTF_FOLDERS = 32,
00170         SHCONTF_NONFOLDERS = 64,
00171         SHCONTF_INCLUDEHIDDEN = 128,
00172         SHCONTF_INIT_ON_FIRST_NEXT = 256,
00173         SHCONTF_NETPRINTERSRCH = 512,
00174         SHCONTF_SHAREABLE = 1024,
00175         SHCONTF_STORAGE = 2048
00176     };
00177 
00178     typedef DWORD SHCONTF;
00179 
00180     cpp_quote("#define SFGAO_CANCOPY           DROPEFFECT_COPY")
00181     cpp_quote("#define SFGAO_CANMOVE           DROPEFFECT_MOVE")
00182     cpp_quote("#define SFGAO_CANLINK           DROPEFFECT_LINK")
00183     cpp_quote("#define SFGAO_STORAGE           0x00000008L")
00184     cpp_quote("#define SFGAO_CANRENAME         0x00000010L")
00185     cpp_quote("#define SFGAO_CANDELETE         0x00000020L")
00186     cpp_quote("#define SFGAO_HASPROPSHEET      0x00000040L")
00187     cpp_quote("#define SFGAO_DROPTARGET        0x00000100L")
00188     cpp_quote("#define SFGAO_CAPABILITYMASK    0x00000177L")
00189     cpp_quote("#define SFGAO_ENCRYPTED         0x00002000L")
00190     cpp_quote("#define SFGAO_ISSLOW            0x00004000L")
00191     cpp_quote("#define SFGAO_GHOSTED           0x00008000L")
00192     cpp_quote("#define SFGAO_LINK              0x00010000L")
00193     cpp_quote("#define SFGAO_SHARE             0x00020000L")
00194     cpp_quote("#define SFGAO_READONLY          0x00040000L")
00195     cpp_quote("#define SFGAO_HIDDEN            0x00080000L")
00196     cpp_quote("#define SFGAO_DISPLAYATTRMASK   0x000FC000L")
00197     cpp_quote("#define SFGAO_FILESYSANCESTOR   0x10000000L")
00198     cpp_quote("#define SFGAO_FOLDER            0x20000000L")
00199     cpp_quote("#define SFGAO_FILESYSTEM        0x40000000L")
00200     cpp_quote("#define SFGAO_HASSUBFOLDER      0x80000000L")
00201     cpp_quote("#define SFGAO_CONTENTSMASK      0x80000000L")
00202     cpp_quote("#define SFGAO_VALIDATE          0x01000000L")
00203     cpp_quote("#define SFGAO_REMOVABLE         0x02000000L")
00204     cpp_quote("#define SFGAO_COMPRESSED        0x04000000L")
00205     cpp_quote("#define SFGAO_BROWSABLE         0x08000000L")
00206     cpp_quote("#define SFGAO_NONENUMERATED     0x00100000L")
00207     cpp_quote("#define SFGAO_NEWCONTENT        0x00200000L")
00208     cpp_quote("#define SFGAO_STREAM            0x00400000L")
00209     cpp_quote("#define SFGAO_STORAGEANCESTOR   0x00800000L")
00210 
00211     typedef ULONG SFGAOF;
00212 
00213     HRESULT ParseDisplayName(
00214         [in] HWND hwndOwner,
00215         [in] LPBC pbcReserved,
00216         [in, string] LPOLESTR lpszDisplayName,
00217         [out] ULONG *pchEaten,
00218         [out] LPITEMIDLIST *ppidl,
00219         [in, out, unique] ULONG *pdwAttributes);
00220 
00221     HRESULT EnumObjects(
00222         [in] HWND hwndOwner,
00223         [in] SHCONTF grfFlags,
00224         [out] IEnumIDList **ppenumIDList);
00225 
00226     HRESULT BindToObject(
00227         [in] LPCITEMIDLIST pidl,
00228         [in] LPBC pbcReserved,
00229         [in] REFIID riid,
00230         [out, iid_is(riid)] void **ppvOut);
00231 
00232     HRESULT BindToStorage(
00233         [in] LPCITEMIDLIST pidl,
00234         [in] LPBC pbcReserved,
00235         [in] REFIID riid,
00236         [out, iid_is(riid)] void **ppvObj);
00237 
00238     HRESULT CompareIDs(
00239         [in] LPARAM lParam,
00240         [in] LPCITEMIDLIST pidl1,
00241         [in] LPCITEMIDLIST pidl2);
00242 
00243     HRESULT CreateViewObject(
00244         [in] HWND hwndOwner,
00245         [in] REFIID riid,
00246         [out, iid_is(riid)] void **ppvOut);
00247 
00248     HRESULT GetAttributesOf(
00249         [in] UINT cidl,
00250         [in, size_is(cidl)] LPCITEMIDLIST *apidl,
00251         [in, out] SFGAOF *rgfInOut);
00252 
00253     HRESULT GetUIObjectOf(
00254         [in] HWND hwndOwner,
00255         [in] UINT cidl,
00256         [in, size_is(cidl)] LPCITEMIDLIST *apidl,
00257         [in] REFIID riid,
00258         [in, out, unique] UINT *prgfInOut,
00259         [out, iid_is(riid)] void **ppvOut);
00260 
00261     HRESULT GetDisplayNameOf(
00262         [in] LPCITEMIDLIST pidl,
00263         [in] SHGDNF uFlags,
00264         [out] STRRET *lpName);
00265 
00266     HRESULT SetNameOf(
00267         [in] HWND hwnd,
00268         [in] LPCITEMIDLIST pidl,
00269         [in, string] LPCOLESTR lpszName,
00270         [in] SHGDNF uFlags,
00271         [out] LPITEMIDLIST *ppidlOut);
00272 }
00273 
00274 
00275 /*****************************************************************************
00276  * IEnumExtraSearch interface
00277  */
00278 [
00279     object,
00280     uuid(0e700be1-9db6-11d1-a1ce-00c04fd75d13),
00281     pointer_default(unique)
00282 ]
00283 interface IEnumExtraSearch : IUnknown
00284 {
00285     typedef IEnumExtraSearch *LPENUMEXTRASEARCH;
00286 
00287     typedef struct
00288     {
00289         GUID guidSearch;
00290         WCHAR wszFriendlyName[80];
00291         /*
00292          *WCHAR wszMenuText[80];
00293          *WCHAR wszHelpText[MAX_PATH];
00294          */
00295         WCHAR wszUrl[2084];
00296         /*
00297          *WCHAR wszIcon[MAX_PATH+10];
00298          *WCHAR wszGreyIcon[MAX_PATH+10];
00299          *WCHAR wszClrIcon[MAX_PATH+10];
00300          */
00301     } EXTRASEARCH, *LPEXTRASEARCH;
00302 
00303     HRESULT Next(
00304         [in] ULONG celt,
00305         [out, size_is(celt), length_is(*pceltFetched)] EXTRASEARCH *rgelt,
00306         [out] ULONG *pceltFetched);
00307 
00308     HRESULT Skip( [in] ULONG celt );
00309     HRESULT Reset();
00310     HRESULT Clone( [out] IEnumExtraSearch **ppenum );
00311 }
00312 
00313 
00314 /*****************************************************************************
00315  * IShellFolder2 interface
00316  */
00317 [
00318     object,
00319     uuid(93f2f68c-1d1b-11d3-a30e-00c04f79abd1),
00320     pointer_default(unique)
00321 ]
00322 interface IShellFolder2 : IShellFolder
00323 {
00324     typedef struct
00325     {
00326         GUID    fmtid;
00327         DWORD   pid;
00328     } SHCOLUMNID, *LPSHCOLUMNID;
00329     typedef const SHCOLUMNID *LPCSHCOLUMNID;
00330 
00331     HRESULT GetDefaultSearchGUID( [out] GUID *lpguid );
00332     HRESULT EnumSearches( [out] IEnumExtraSearch **ppenum );
00333     HRESULT GetDefaultColumn( [in] DWORD dwReserved, [out] ULONG *pSort, [out] ULONG *pDisplay );
00334     HRESULT GetDefaultColumnState( [in] UINT iColumn, [out] SHCOLSTATEF *pcsFlags );
00335     HRESULT GetDetailsEx( [in] LPCITEMIDLIST pidl, [in] const SHCOLUMNID *pscid, [out] VARIANT *pv);
00336     HRESULT GetDetailsOf( [in] LPCITEMIDLIST pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd);
00337     HRESULT MapColumnToSCID( [in] UINT iColumn, [in] SHCOLUMNID *pscid );
00338 }
00339 
00340 /*****************************************************************************
00341  * IShellItem interface
00342  */
00343 [
00344     object,
00345     uuid(43826d1e-e718-42ee-bc55-a1e261c37bfe),
00346     pointer_default(unique)
00347 ]
00348 interface IShellItem : IUnknown
00349 {
00350     typedef [v1_enum] enum {
00351         SIGDN_NORMALDISPLAY                = 0,
00352         SIGDN_PARENTRELATIVEPARSING        = 0x80018001,
00353         SIGDN_DESKTOPABSOLUTEPARSING       = 0x80028000,
00354         SIGDN_PARENTRELATIVEEDITING        = 0x80031001,
00355         SIGDN_DESKTOPABSOLUTEEDITING       = 0x8004c000,
00356         SIGDN_FILESYSPATH                  = 0x80058000,
00357         SIGDN_URL                          = 0x80068000,
00358         SIGDN_PARENTRELATIVEFORADDRESSBAR  = 0x8007c001,
00359         SIGDN_PARENTRELATIVE               = 0x80080001
00360     } SIGDN; /* & 0xFFFF => SHGDN */
00361 
00362     [v1_enum] enum _SICHINTF
00363     {
00364         SICHINT_DISPLAY                       = 0x00000000,
00365         SICHINT_CANONICAL                     = 0x10000000,
00366         SICHINT_TEST_FILESYSPATH_IF_NOT_EQUAL = 0x20000000,
00367         SICHINT_ALLFIELDS                     = 0x80000000
00368     };
00369     typedef DWORD SICHINTF;
00370 
00371     HRESULT BindToHandler(
00372         [in] IBindCtx *pbc,
00373         [in] REFGUID rbhid,
00374         [in] REFIID riid,
00375         [out, iid_is(riid)] void **ppvOut);
00376 
00377     HRESULT GetParent( [out] IShellItem **ppsi );
00378 
00379     HRESULT GetDisplayName(
00380         [in] SIGDN sigdnName,
00381         [out] LPWSTR *ppszName);
00382 
00383     HRESULT GetAttributes(
00384         [in] SFGAOF sfgaoMask,
00385         [out] SFGAOF *psfgaoAttribs);
00386 
00387     HRESULT Compare(
00388         [in] IShellItem *psi,
00389         [in] SICHINTF hint,
00390         [out] int *piOrder);
00391 }
00392 
00393 /*****************************************************************************
00394  * IShellItem2 interface
00395  */
00396 [
00397     object,
00398     uuid(7E9FB0D3-919F-4307-AB2E-9B1860310C93),
00399     pointer_default(unique)
00400 ]
00401 interface IShellItem2 : IShellItem
00402 {
00403     HRESULT GetPropertyStore(
00404         [in] GETPROPERTYSTOREFLAGS flags,
00405         [in] REFIID riid,
00406         [out, iid_is(riid)] void **ppv);
00407 
00408     HRESULT GetPropertyStoreWithCreateObject(
00409         [in] GETPROPERTYSTOREFLAGS flags,
00410         [in] IUnknown *punkCreateObject,
00411         [in] REFIID riid,
00412         [out, iid_is(riid)] void **ppv);
00413 
00414     HRESULT GetPropertyStoreForKeys(
00415         [in, size_is(cKeys)] const PROPERTYKEY *rgKeys,
00416         [in] UINT cKeys,
00417         [in] GETPROPERTYSTOREFLAGS flags,
00418         [in] REFIID riid,
00419         [out, iid_is(riid)] void **ppv);
00420 
00421     HRESULT GetPropertyDescriptionList(
00422         [in] REFPROPERTYKEY keyType,
00423         [in] REFIID riid,
00424         [out, iid_is(riid)] void **ppv);
00425 
00426     HRESULT Update(
00427         [in, unique] IBindCtx *pbc);
00428 
00429     HRESULT GetProperty(
00430         [in] REFPROPERTYKEY key,
00431         [out] PROPVARIANT *ppropvar);
00432 
00433     HRESULT GetCLSID(
00434         [in] REFPROPERTYKEY key,
00435         [out] CLSID *pclsid);
00436 
00437     HRESULT GetFileTime (
00438         [in] REFPROPERTYKEY key,
00439         [out] FILETIME *pft);
00440 
00441     HRESULT GetInt32(
00442         [in] REFPROPERTYKEY key,
00443         [out] int *pi);
00444 
00445     HRESULT GetString(
00446         [in] REFPROPERTYKEY key,
00447         [out, string] LPWSTR *ppsz);
00448 
00449     HRESULT GetUInt32(
00450         [in] REFPROPERTYKEY key,
00451         [out] ULONG *pui);
00452 
00453     HRESULT GetUInt64(
00454         [in] REFPROPERTYKEY key,
00455         [out] ULONGLONG *pull);
00456 
00457     HRESULT GetBool(
00458         [in] REFPROPERTYKEY key,
00459         [out] BOOL *pf);
00460 }
00461 
00462 typedef enum tagNWMF {
00463     NWMF_UNLOADING        = 0x0001,
00464     NWMF_USERINITED       = 0x0002,
00465     NWMF_FIRST            = 0x0004,
00466     NWMF_OVERRIDEKEY      = 0x0008,
00467     NWMF_SHOWHELP         = 0x0010,
00468     NWMF_HTMLDIALOG       = 0x0020,
00469     NWMF_FROMDIALOGCHILD  = 0x0040,
00470     NWMF_USERREQUESTED    = 0x0080,
00471     NWMF_USERALLOWED      = 0x0100
00472 } NWMF;
00473 
00474 [
00475     uuid(d2bc4c84-3f72-4a52-a604-7bcbf3982cbb),
00476     object,
00477     pointer_default(unique)
00478 ]
00479 interface INewWindowManager : IUnknown
00480 {
00481     HRESULT EvaluateNewWindow(
00482         [in, string] LPCWSTR pszUrl,
00483         [in, string] LPCWSTR pszName,
00484         [in, string] LPCWSTR pszUrlContext,
00485         [in, string] LPCWSTR pszFeatures,
00486         [in]         BOOL fReplace,
00487         [in]         DWORD dwFlags,
00488         [in]         DWORD dwUserActionTime);
00489 }
00490 
00491 cpp_quote("#define SID_SNewWindowManager IID_INewWindowManager")
00492 
00493 /*****************************************************************************
00494  * IEnumShellItems interface
00495  */
00496 [
00497  object,
00498  uuid(70629033-E363-4A28-A567-0DB78006E6D7),
00499  pointer_default(unique)
00500 ]
00501 interface IEnumShellItems : IUnknown
00502 {
00503     [local] HRESULT Next(
00504         [in] ULONG celt,
00505         [out, size_is(celt), length_is(*pceltFetched)] IShellItem **rgelt,
00506         [out] ULONG *pceltFetched);
00507 
00508     [call_as(Next)] HRESULT RemoteNext(
00509         [in] ULONG celt,
00510         [out, size_is(celt), length_is(*pceltFetched)] IShellItem **rgelt,
00511         [out] ULONG *pceltFetched);
00512 
00513     HRESULT Skip(
00514         [in] ULONG celt);
00515 
00516     HRESULT Reset();
00517 
00518     HRESULT Clone(
00519         [out] IEnumShellItems **ppenum);
00520 }
00521 
00522 /*****************************************************************************
00523  * IShellItemArray interface
00524  */
00525 [
00526  object,
00527  uuid(B63EA76D-1F85-456F-A19C-48159EFA858B),
00528  pointer_default(unique)
00529 ]
00530 interface IShellItemArray : IUnknown
00531 {
00532     typedef [v1_enum] enum SIATTRIBFLAGS {
00533         SIATTRIBFLAGS_AND            = 0x0001,
00534         SIATTRIBFLAGS_OR             = 0x0002,
00535         SIATTRIBFLAGS_APPCOMPAT      = 0x0003,
00536         SIATTRIBFLAGS_MASK           = 0x0003,
00537         SIATTRIBFLAGS_ALLITEMS       = 0x4000
00538     } SIATTRIBFLAGS;
00539     cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(SIATTRIBFLAGS)")
00540 
00541     HRESULT BindToHandler(
00542         [in, unique] IBindCtx *pbc,
00543         [in] REFGUID bhid,
00544         [in] REFIID riid,
00545         [out, iid_is(riid)] void **ppvOut);
00546 
00547     HRESULT GetPropertyStore(
00548         [in] GETPROPERTYSTOREFLAGS flags,
00549         [in] REFIID riid,
00550         [out, iid_is(riid)] void **ppv);
00551 
00552     HRESULT GetPropertyDescriptionList(
00553         [in] REFPROPERTYKEY keyType,
00554         [in] REFIID riid,
00555         [out, iid_is(riid)] void **ppv);
00556 
00557     HRESULT GetAttributes(
00558         [in] SIATTRIBFLAGS AttribFlags,
00559         [in] SFGAOF sfgaoMask,
00560         [out] SFGAOF *psfgaoAttribs);
00561 
00562     HRESULT GetCount(
00563         [out] DWORD *pdwNumItems);
00564 
00565     HRESULT GetItemAt(
00566         [in] DWORD dwIndex,
00567         [out] IShellItem **ppsi);
00568 
00569     HRESULT EnumItems(
00570         [out] IEnumShellItems **ppenumShellItems);
00571 
00572 }
00573 
00574 typedef [v1_enum] enum DATAOBJ_GET_ITEM_FLAGS
00575 {
00576     DOGIF_DEFAULT       = 0x0,
00577     DOGIF_TRAVERSE_LINK = 0x1,
00578     DOGIF_NO_HDROP      = 0x2,
00579     DOGIF_NO_URL        = 0x4,
00580     DOGIF_ONLY_IF_ONE   = 0x8
00581 } DATAOBJ_GET_ITEM_FLAGS;
00582 cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(DATAOBJ_GET_ITEM_FLAGS)")
00583 
00584 cpp_quote("HRESULT WINAPI SHGetNameFromIDList(PCIDLIST_ABSOLUTE pidl, SIGDN sigdnName, PWSTR *ppszName);")
00585 cpp_quote("HRESULT WINAPI SHCreateItemFromParsingName(PCWSTR pszPath, IBindCtx *pbc, REFIID riid, void **ppv);")
00586 cpp_quote("HRESULT WINAPI SHCreateItemFromIDList(PCIDLIST_ABSOLUTE pidl, REFIID riid, void **ppv);")
00587 cpp_quote("HRESULT WINAPI SHGetItemFromDataObject(IDataObject *pdtobj, DATAOBJ_GET_ITEM_FLAGS dwFlags, REFIID riid, void **ppv);")
00588 cpp_quote("HRESULT WINAPI SHGetIDListFromObject(IUnknown *punk, PIDLIST_ABSOLUTE *ppidl);")
00589 cpp_quote("HRESULT WINAPI SHGetItemFromObject(IUnknown *punk, REFIID riid, void **ppv);")
00590 cpp_quote("HRESULT WINAPI SHCreateShellItemArray(PCIDLIST_ABSOLUTE pidlParent, IShellFolder* psf, UINT cidl, PCUITEMID_CHILD_ARRAY ppidl, IShellItemArray **ppsiItemArray);")
00591 cpp_quote("HRESULT WINAPI SHCreateShellItemArrayFromShellItem(IShellItem *psi, REFIID riid, void **ppv);")
00592 cpp_quote("HRESULT WINAPI SHCreateShellItemArrayFromDataObject(IDataObject *pdo, REFIID riid, void **ppv);")
00593 
00594 /*****************************************************************************
00595  * IShellItemFilter interface
00596  */
00597 [
00598  object,
00599  uuid(2659B475-EEB8-48B7-8F07-B378810F48CF),
00600  pointer_default(unique)
00601 ]
00602 interface IShellItemFilter : IUnknown
00603 {
00604     HRESULT IncludeItem(
00605         [in] IShellItem *psi);
00606 
00607     HRESULT GetEnumFlagsForItem(
00608         [in] IShellItem *psi,
00609         [out] SHCONTF *pgrfFlags);
00610 }
00611 
00612 /*****************************************************************************
00613  * FOLDERSETTINGS
00614  */
00615 typedef char *LPVIEWSETTINGS;
00616 
00617 typedef enum
00618 {
00619     FWF_AUTOARRANGE         = 0x00000001,
00620     FWF_ABBREVIATEDNAMES    = 0x00000002,
00621     FWF_SNAPTOGRID          = 0x00000004,
00622     FWF_OWNERDATA           = 0x00000008,
00623     FWF_BESTFITWINDOW       = 0x00000010,
00624     FWF_DESKTOP             = 0x00000020,
00625     FWF_SINGLESEL           = 0x00000040,
00626     FWF_NOSUBFOLDERS        = 0x00000080,
00627     FWF_TRANSPARENT         = 0x00000100,
00628     FWF_NOCLIENTEDGE        = 0x00000200,
00629     FWF_NOSCROLL            = 0x00000400,
00630     FWF_ALIGNLEFT           = 0x00000800,
00631     FWF_NOICONS             = 0x00001000,
00632     FWF_SHOWSELALWAYS       = 0x00002000,
00633     FWF_NOVISIBLE           = 0x00004000,
00634     FWF_SINGLECLICKACTIVATE = 0x00008000,
00635     FWF_NOWEBVIEW           = 0x00010000,
00636     FWF_HIDEFILENAMES       = 0x00020000,
00637     FWF_CHECKSELECT         = 0x00040000,
00638     FWF_NOENUMREFRESH       = 0x00080000,
00639     FWF_NOGROUPING          = 0x00100000,
00640     FWF_FULLROWSELECT       = 0x00200000,
00641     FWF_NOFILTERS           = 0x00400000,
00642     FWF_NOCOLUMNHEADER      = 0x00800000,
00643     FWF_NOHEADERINALLVIEWS  = 0x01000000,
00644     FWF_EXTENDEDTILES       = 0x02000000,
00645     FWF_TRICHECKSELECT      = 0x04000000,
00646     FWF_AUTOCHECKSELECT     = 0x08000000,
00647     FWF_NOBROWSERVIEWSTATE  = 0x10000000,
00648     FWF_SUBSETGROUPS        = 0x20000000,
00649     FWF_USESEARCHFOLDER     = 0x40000000,
00650     FWF_ALLOWRTLREADING     = 0x80000000
00651 } FOLDERFLAGS;
00652 
00653 typedef enum
00654 {
00655     FVM_AUTO       =-1,
00656     FVM_ICON       = 1,
00657     FVM_FIRST      = FVM_ICON,
00658     FVM_SMALLICON  = 2,
00659     FVM_LIST       = 3,
00660     FVM_DETAILS    = 4,
00661     FVM_THUMBNAIL  = 5,
00662     FVM_TILE       = 6,
00663     FVM_THUMBSTRIP = 7,
00664     FVM_CONTENT    = 8,
00665     FVM_LAST       = FVM_CONTENT
00666 } FOLDERVIEWMODE;
00667 
00668 typedef struct
00669 {
00670     UINT ViewMode;
00671     UINT fFlags;
00672 } FOLDERSETTINGS, *PFOLDERSETTINGS, *LPFOLDERSETTINGS;
00673 typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
00674 
00675 /*****************************************************************************
00676  * IShellIcon interface
00677  */
00678 [
00679     uuid(000214e5-0000-0000-c000-000000000046),
00680     object,
00681     pointer_default(unique)
00682 ]
00683 interface IShellIcon : IUnknown
00684 {
00685     HRESULT GetIconOf(
00686         [in] PCUITEMID_CHILD pidl,
00687         [in] UINT flags,
00688         [out] int *pIconIndex);
00689 }
00690 
00691 /*****************************************************************************
00692  * IShellView interface
00693  */
00694 interface IShellBrowser;  /* forward declaration */
00695 [
00696     object,
00697     uuid(000214e3-0000-0000-c000-000000000046),
00698     pointer_default(unique)
00699 ]
00700 interface IShellView : IOleWindow
00701 {
00702     typedef IShellView *LPSHELLVIEW;
00703 
00704     cpp_quote("#define SVSI_DESELECT       0x00000000")
00705     cpp_quote("#define SVSI_SELECT         0x00000001")
00706     cpp_quote("#define SVSI_EDIT           0x00000003")
00707     cpp_quote("#define SVSI_DESELECTOTHERS 0x00000004")
00708     cpp_quote("#define SVSI_ENSUREVISIBLE  0x00000008")
00709     cpp_quote("#define SVSI_FOCUSED        0x00000010")
00710     cpp_quote("#define SVSI_TRANSLATEPT    0x00000020")
00711     cpp_quote("#define SVSI_SELECTIONMARK  0x00000040")
00712     cpp_quote("#define SVSI_POSITIONITEM   0x00000080")
00713     cpp_quote("#define SVSI_CHECK          0x00000100")
00714     cpp_quote("#define SVSI_NOSTATECHANGE  0x80000000")
00715 
00716     typedef UINT SVSIF;
00717 
00718     typedef enum
00719     {
00720         SVGIO_BACKGROUND     = 0x00000000,
00721         SVGIO_SELECTION      = 0x00000001,
00722         SVGIO_ALLVIEW        = 0x00000002,
00723         SVGIO_CHECKED        = 0x00000003,
00724         SVGIO_TYPE_MASK      = 0x0000000f,
00725         SVGIO_FLAG_VIEWORDER = 0x80000000,
00726     } SVGIO;
00727 
00728     typedef enum
00729     {
00730         SVUIA_DEACTIVATE       = 0,
00731         SVUIA_ACTIVATE_NOFOCUS = 1,
00732         SVUIA_ACTIVATE_FOCUS   = 2,
00733         SVUIA_INPLACEACTIVATE  = 3
00734     } SVUIA_STATUS;
00735 
00736     HRESULT TranslateAccelerator( [in] MSG *pmsg );
00737     HRESULT EnableModeless( [in] BOOL fEnable );
00738     HRESULT UIActivate( [in] UINT uState );
00739     HRESULT Refresh();
00740     HRESULT CreateViewWindow(
00741         [in] IShellView *psvPrevious,
00742         [in] LPCFOLDERSETTINGS lpfs,
00743         [in] IShellBrowser *psb,
00744         [out] RECT *prcView,
00745         [out] HWND *phWnd);
00746 
00747     HRESULT DestroyViewWindow();
00748     HRESULT GetCurrentInfo( [out] LPFOLDERSETTINGS lpfs );
00749 
00750     [local] HRESULT AddPropertySheetPages(
00751         [in] DWORD dwReserved,
00752         [in] LPFNSVADDPROPSHEETPAGE pfn,
00753         [in] LPARAM lparam);
00754 
00755     HRESULT SaveViewState();
00756     HRESULT SelectItem(
00757         [in] LPCITEMIDLIST pidlItem,
00758         [in] SVSIF uFlags);
00759     HRESULT GetItemObject(
00760         [in] UINT uItem,
00761         [in] REFIID riid,
00762         [out, iid_is(riid)] void **ppv);
00763 }
00764 
00765 [
00766     object,
00767     uuid(88e39e80-3578-11cf-ae69-08002b2e1262),
00768     pointer_default(unique)
00769 ]
00770 interface IShellView2 : IShellView
00771 {
00772     typedef GUID SHELLVIEWID;
00773 cpp_quote("#include <pshpack8.h>")
00774     typedef struct _SV2CVW2_PARAMS
00775     {
00776         DWORD cbSize;
00777         IShellView *psvPrev;
00778         LPCFOLDERSETTINGS pfs;
00779         IShellBrowser *psbOwner;
00780         RECT *prcView;
00781         SHELLVIEWID const *pvid;
00782         HWND hwndView;
00783     } SV2CVW2_PARAMS, *LPSV2CVW2_PARAMS;
00784 cpp_quote("#include <poppack.h>")
00785 
00786     HRESULT GetView(
00787         [in, out] SHELLVIEWID *view_guid,
00788         [in] ULONG view_type
00789     );
00790     HRESULT CreateViewWindow2(
00791         [in] LPSV2CVW2_PARAMS view_params
00792     );
00793     HRESULT HandleRename(
00794         [in] LPCITEMIDLIST new_pidl
00795     );
00796     HRESULT SelectAndPositionItem(
00797         [in] LPCITEMIDLIST item,
00798         [in] UINT flags,
00799         [in] POINT *point
00800     );
00801 }
00802 
00803 /*****************************************************************************
00804  * IFolderView interface
00805  */
00806 [
00807     uuid(cde725b0-ccc9-4519-917e-325d72fab4ce),
00808     object,
00809     pointer_default(unique)
00810 ]
00811 interface IFolderView : IUnknown
00812 {
00813     HRESULT GetCurrentViewMode( [out] UINT *mode );
00814     HRESULT SetCurrentViewMode( [in] UINT mode );
00815     HRESULT GetFolder( [in] REFIID riid, [out, iid_is(riid)] void **ppv );
00816     HRESULT Item(
00817         [in] int index,
00818         [out] PITEMID_CHILD *ppidl
00819     );
00820     HRESULT ItemCount(
00821         [in] UINT flags,
00822         [out] int *items
00823     );
00824     HRESULT Items(
00825         [in] UINT flags,
00826         [in] REFIID riid,
00827         [out, iid_is(riid)] void **ppv
00828     );
00829     HRESULT GetSelectionMarkedItem( [out] int *item );
00830     HRESULT GetFocusedItem( [out] int *item );
00831     HRESULT GetItemPosition(
00832         [in] PCUITEMID_CHILD pidl,
00833         [out] POINT* ppt
00834     );
00835     HRESULT GetSpacing( [in, out, unique] POINT* pt );
00836     HRESULT GetDefaultSpacing( [out] POINT* pt );
00837     HRESULT GetAutoArrange();
00838     HRESULT SelectItem(
00839         [in] int item,
00840         [in] DWORD flags
00841     );
00842     HRESULT SelectAndPositionItems(
00843         [in] UINT cidl,
00844         [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl,
00845         [in, unique, size_is(cidl)] POINT* apt,
00846         [in] DWORD flags
00847     );
00848 }
00849 
00850 /*****************************************************************************
00851  * IShellBrowser interface
00852  */
00853 [
00854     object,
00855     uuid(000214e2-0000-0000-c000-000000000046),
00856     pointer_default(unique)
00857 ]
00858 interface IShellBrowser : IOleWindow
00859 {
00860     typedef IShellBrowser *LPSHELLBROWSER;
00861 
00862 cpp_quote("#define SBSP_DEFBROWSER            0x00000000")
00863 cpp_quote("#define SBSP_SAMEBROWSER           0x00000001")
00864 cpp_quote("#define SBSP_NEWBROWSER            0x00000002")
00865 cpp_quote("#define SBSP_DEFMODE               0x00000000")
00866 cpp_quote("#define SBSP_OPENMODE              0x00000010")
00867 cpp_quote("#define SBSP_EXPLOREMODE           0x00000020")
00868 cpp_quote("#define SBSP_HELPMODE              0x00000040")
00869 cpp_quote("#define SBSP_NOTRANSFERHIST        0x00000080")
00870 cpp_quote("#define SBSP_ABSOLUTE              0x00000000")
00871 cpp_quote("#define SBSP_RELATIVE              0x00001000")
00872 cpp_quote("#define SBSP_PARENT                0x00002000")
00873 cpp_quote("#define SBSP_NAVIGATEBACK          0x00004000")
00874 cpp_quote("#define SBSP_NAVIGATEFORWARD       0x00008000")
00875 cpp_quote("#define SBSP_ALLOW_AUTONAVIGATE    0x00010000")
00876 cpp_quote("#define SBSP_KEEPSAMETEMPLATE      0x00020000")
00877 cpp_quote("#define SBSP_KEEPWORDWHEELTEXT     0x00040000")
00878 cpp_quote("#define SBSP_ACTIVATE_NOFOCUS      0x00080000")
00879 cpp_quote("#define SBSP_CREATENOHISTORY       0x00100000")
00880 cpp_quote("#define SBSP_PLAYNOSOUND           0x00200000")
00881 cpp_quote("#define SBSP_CALLERUNTURUSTED      0x00800000")
00882 cpp_quote("#define SBSP_TRUSTFIRSTDOWNLOAD    0x01000000")
00883 cpp_quote("#define SBSP_UNTRUSTEDFORDOWNLOAD  0x02000000")
00884 cpp_quote("#define SBSP_NOAUTOSELECT          0x04000000")
00885 cpp_quote("#define SBSP_WRITENOHISTORY        0x08000000")
00886 cpp_quote("#define SBSP_TRUSTEDFORACTIVEX     0x10000000")
00887 cpp_quote("#define SBSP_FEEDNAVIGATION        0x20000000")
00888 cpp_quote("#define SBSP_REDIRECT              0x40000000")
00889 cpp_quote("#define SBSP_INITIATEDBYHLINKFRAME 0x80000000")
00890 
00891 cpp_quote("#define FCW_STATUS      0x0001")
00892 cpp_quote("#define FCW_TOOLBAR     0x0002")
00893 cpp_quote("#define FCW_TREE        0x0003")
00894 cpp_quote("#define FCW_INTERNETBAR 0x0006")
00895 cpp_quote("#define FCW_PROGRESS    0x0008")
00896 
00897 cpp_quote("#define FCT_MERGE       0x0001")
00898 cpp_quote("#define FCT_CONFIGABLE  0x0002")
00899 cpp_quote("#define FCT_ADDTOEND    0x0004")
00900 
00901 cpp_quote("#if 0")
00902     typedef LPARAM LPTBBUTTONSB;
00903 cpp_quote("#else")
00904 cpp_quote("#include <commctrl.h>")
00905 cpp_quote("typedef LPTBBUTTON LPTBBUTTONSB;")
00906 cpp_quote("#endif")
00907 
00908     HRESULT InsertMenusSB(
00909         [in] HMENU hmenuShared,
00910         [in, out] LPOLEMENUGROUPWIDTHS lpMenuWidths);
00911 
00912     HRESULT SetMenuSB(
00913         [in] HMENU hmenuShared,
00914         [in] HOLEMENU holemenuReserved,
00915         [in] HWND hwndActiveObject);
00916 
00917     HRESULT RemoveMenusSB( [in] HMENU hmenuShared );
00918     HRESULT SetStatusTextSB( [in, unique] LPCOLESTR pszStatusText );
00919     HRESULT EnableModelessSB( [in] BOOL fEnable );
00920     HRESULT TranslateAcceleratorSB( [in] MSG *pmsg, [in] WORD wID );
00921 
00922     HRESULT BrowseObject(
00923         [in] LPCITEMIDLIST pidl,
00924         [in] UINT wFlags);
00925 
00926     HRESULT GetViewStateStream(
00927         [in] DWORD grfMode,
00928         [out] IStream **ppStrm);
00929 
00930     HRESULT GetControlWindow(
00931         [in] UINT id,
00932         [out] HWND *phwnd);
00933 
00934     [local] HRESULT SendControlMsg(
00935         [in] UINT id,
00936         [in] UINT uMsg,
00937         [in] WPARAM wParam,
00938         [in] LPARAM lParam,
00939         [in] LRESULT *pret);
00940 
00941     HRESULT QueryActiveShellView( [out] IShellView **ppshv );
00942     HRESULT OnViewWindowActive( [in] IShellView *pshv );
00943 
00944     [local]
00945     HRESULT SetToolbarItems(
00946         [in] LPTBBUTTONSB lpButtons,
00947         [in] UINT nButtons,
00948         [in] UINT uFlags);
00949 }
00950 
00951 
00952 /*****************************************************************************
00953  * IShellLinkA interface
00954  */
00955 [
00956     object,
00957     uuid(000214ee-0000-0000-c000-000000000046),
00958     pointer_default(unique)
00959 ]
00960 interface IShellLinkA : IUnknown
00961 {
00962     typedef enum
00963     {
00964         SLR_NO_UI               = 0x0001,
00965         SLR_ANY_MATCH           = 0x0002,
00966         SLR_UPDATE              = 0x0004,
00967         SLR_NOUPDATE            = 0x0008,
00968         SLR_NOSEARCH            = 0x0010,
00969         SLR_NOTRACK             = 0x0020,
00970         SLR_NOLINKINFO          = 0x0040,
00971         SLR_INVOKE_MSI          = 0x0080,
00972         SLR_NO_UI_WITH_MSG_PUMP = 0x0101,
00973     } SLR_FLAGS;
00974 
00975     typedef enum
00976     {
00977         SLGP_SHORTPATH   = 0x0001,
00978         SLGP_UNCPRIORITY = 0x0002,
00979         SLGP_RAWPATH     = 0x0004,
00980     } SLGP_FLAGS;
00981 
00982     HRESULT GetPath(
00983         [out, size_is(cch)] LPSTR pszFile,
00984         [in] int cch,
00985         [in, out, unique] WIN32_FIND_DATAA *pfd,
00986         [in] DWORD fFlags);
00987 
00988     HRESULT GetIDList( [out] LPITEMIDLIST * ppidl );
00989 
00990     HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
00991 
00992     HRESULT GetDescription(
00993         [out, size_is(cch)] LPSTR pszName,
00994         [in] int cch);
00995 
00996     HRESULT SetDescription( [in] LPCSTR pszName );
00997 
00998     HRESULT GetWorkingDirectory(
00999         [out, size_is(cch)] LPSTR pszDir,
01000         [in] int cch);
01001 
01002     HRESULT SetWorkingDirectory( [in] LPCSTR pszDir );
01003 
01004     HRESULT GetArguments(
01005         [out, size_is(cch)] LPSTR pszArgs,
01006         [in] int cch);
01007 
01008     HRESULT SetArguments( [in] LPCSTR pszArgs );
01009 
01010     HRESULT GetHotkey( [out] WORD *pwHotkey );
01011 
01012     HRESULT SetHotkey( [in] WORD wHotkey );
01013 
01014     HRESULT GetShowCmd( [out] int *piShowCmd );
01015 
01016     HRESULT SetShowCmd( [in] int iShowCmd );
01017 
01018     HRESULT GetIconLocation(
01019         [out, size_is(cch)] LPSTR pszIconPath,
01020         [in] int cch,
01021         [out] int *piIcon);
01022 
01023     HRESULT SetIconLocation(
01024         [in] LPCSTR pszIconPath,
01025         [in] int iIcon);
01026 
01027     HRESULT SetRelativePath(
01028         [in] LPCSTR pszPathRel,
01029         [in] DWORD dwReserved);
01030 
01031     HRESULT Resolve(
01032         [in] HWND hwnd,
01033         [in] DWORD fFlags);
01034 
01035     HRESULT SetPath( [in] LPCSTR pszFile );
01036 }
01037 
01038 
01039 /*****************************************************************************
01040  * IShellLinkW interface
01041  */
01042 [
01043     object,
01044     uuid(000214f9-0000-0000-c000-000000000046),
01045     pointer_default(unique)
01046 ]
01047 interface IShellLinkW : IUnknown
01048 {
01049     HRESULT GetPath(
01050         [out, size_is(cch)] LPWSTR pszFile,
01051         [in] int cch,
01052         [in, out] WIN32_FIND_DATAW *pfd,
01053         [in] DWORD fFlags);
01054 
01055     HRESULT GetIDList( [out] LPITEMIDLIST * ppidl );
01056 
01057     HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
01058 
01059     HRESULT GetDescription(
01060         [out, size_is(cch)] LPWSTR pszName,
01061         [in] int cch);
01062 
01063     HRESULT SetDescription( [in] LPCWSTR pszName );
01064 
01065     HRESULT GetWorkingDirectory(
01066         [out, size_is(cch)] LPWSTR pszDir,
01067         [in] int cch);
01068 
01069     HRESULT SetWorkingDirectory( [in] LPCWSTR pszDir );
01070 
01071     HRESULT GetArguments(
01072         [out, size_is(cch)] LPWSTR pszArgs,
01073         [in] int cch);
01074 
01075     HRESULT SetArguments( [in] LPCWSTR pszArgs );
01076 
01077     HRESULT GetHotkey( [out] WORD *pwHotkey );
01078 
01079     HRESULT SetHotkey( [in] WORD wHotkey );
01080 
01081     HRESULT GetShowCmd( [out] int *piShowCmd );
01082 
01083     HRESULT SetShowCmd( [in] int iShowCmd );
01084 
01085     HRESULT GetIconLocation(
01086         [out, size_is(cch)] LPWSTR pszIconPath,
01087         [in] int cch,
01088         [out] int *piIcon);
01089 
01090     HRESULT SetIconLocation(
01091         [in] LPCWSTR pszIconPath,
01092         [in] int iIcon);
01093 
01094     HRESULT SetRelativePath(
01095         [in] LPCWSTR pszPathRel,
01096         [in] DWORD dwReserved);
01097 
01098     HRESULT Resolve(
01099         [in] HWND hwnd,
01100         [in] DWORD fFlags);
01101 
01102     HRESULT SetPath( [in] LPCWSTR pszFile );
01103 }
01104 
01105 cpp_quote("#define IShellLink WINELIB_NAME_AW(IShellLink)")
01106 
01107 
01108 /*****************************************************************************
01109  * IShellExtInit interface
01110  */
01111 [
01112     object,
01113     uuid(000214e8-0000-0000-c000-000000000046),
01114     pointer_default(unique),
01115     local
01116 ]
01117 interface IShellExtInit : IUnknown
01118 {
01119     typedef IShellExtInit *LPSHELLEXTINIT;
01120 
01121     HRESULT Initialize(
01122         [in] LPCITEMIDLIST pidlFolder,
01123         [in] IDataObject *pdtobj,
01124         [in] HKEY hkeyProgID);
01125 }
01126 
01127 
01128 /*******************************************************************************/
01129 /* Note: the following interfaces are not in shobjidl.idl under Windows, they  */
01130 /* are declared directly in shlobj.h. It hopefully won't break anything to put */
01131 /* them here anyway.                                                           */
01132 /*******************************************************************************/
01133 
01134 #ifndef MAX_PATH
01135 #define MAX_PATH 260
01136 #endif
01137 
01138 
01139 /*****************************************************************************
01140  * IPersistFolder3 interface
01141  */
01142 [
01143     object,
01144     uuid(cef04fdf-fe72-11d2-87a5-00c04f6837cf),
01145     pointer_default(unique)
01146 ]
01147 interface IPersistFolder3 : IPersistFolder2
01148 {
01149     typedef struct
01150     {
01151         LPITEMIDLIST    pidlTargetFolder;
01152     WCHAR       szTargetParsingName[MAX_PATH];
01153     WCHAR       szNetworkProvider[MAX_PATH];
01154     DWORD       dwAttributes;
01155     int     csidl;
01156     } PERSIST_FOLDER_TARGET_INFO;
01157 
01158     HRESULT InitializeEx(
01159         [in] IBindCtx *pbc,
01160         [in] LPCITEMIDLIST pidlRoot,
01161         [in] const PERSIST_FOLDER_TARGET_INFO *ppfti);
01162 
01163     HRESULT GetFolderTargetInfo( [out] PERSIST_FOLDER_TARGET_INFO *ppfti );
01164 }
01165 
01166 
01167 /*****************************************************************************
01168  * IExtractIconA interface
01169  */
01170 [
01171     object,
01172     uuid(000214eb-0000-0000-c000-000000000046),
01173     pointer_default(unique),
01174     local
01175 ]
01176 interface IExtractIconA : IUnknown
01177 {
01178 cpp_quote("#define GIL_OPENICON     0x0001")
01179 cpp_quote("#define GIL_FORSHELL     0x0002")
01180 cpp_quote("#define GIL_ASYNC        0x0020")
01181 cpp_quote("#define GIL_DEFAULTICON  0x0040")
01182 cpp_quote("#define GIL_FORSHORTCUT  0x0080")
01183 
01184 cpp_quote("#define GIL_SIMULATEDOC  0x0001")
01185 cpp_quote("#define GIL_PERINSTANCE  0x0002")
01186 cpp_quote("#define GIL_PERCLASS     0x0004")
01187 cpp_quote("#define GIL_NOTFILENAME  0x0008")
01188 cpp_quote("#define GIL_DONTCACHE    0x0010")
01189 
01190     typedef IExtractIconA *LPEXTRACTICONA;
01191 
01192     HRESULT GetIconLocation(
01193         [in] UINT uFlags,
01194         [out, size_is(cchMax)] LPSTR szIconFile,
01195         [in] UINT cchMax,
01196         [out] INT *piIndex,
01197         [out] UINT *pwFlags);
01198 
01199     HRESULT Extract(
01200         [in] LPCSTR pszFile,
01201         [in] UINT nIconIndex,
01202         [out] HICON *phiconLarge,
01203         [out] HICON *phiconSmall,
01204         [in] UINT nIconSize );
01205 }
01206 
01207 
01208 /*****************************************************************************
01209  * IExtractIconW interface
01210  */
01211 [
01212     object,
01213     uuid(000214fa-0000-0000-c000-000000000046),
01214     pointer_default(unique),
01215     local
01216 ]
01217 interface IExtractIconW : IUnknown
01218 {
01219     typedef IExtractIconW *LPEXTRACTICONW;
01220 
01221     HRESULT GetIconLocation(
01222         [in] UINT uFlags,
01223         [out, size_is(cchMax)] LPWSTR szIconFile,
01224         [in] UINT cchMax,
01225         [out] INT *piIndex,
01226         [out] UINT *pwFlags);
01227 
01228     HRESULT Extract(
01229         [in] LPCWSTR pszFile,
01230         [in] UINT nIconIndex,
01231         [out] HICON *phiconLarge,
01232         [out] HICON *phiconSmall,
01233         [in] UINT nIconSize );
01234 }
01235 
01236 cpp_quote("#define LPEXTRACTICON WINELIB_NAME_AW(LPEXTRACTICON)")
01237 cpp_quote("#define IExtractIcon WINELIB_NAME_AW(IExtractIcon)")
01238 
01239 
01240 /*****************************************************************************
01241  * ICommDlgBrowser interface
01242  */
01243 [
01244     object,
01245     uuid(000214f1-0000-0000-c000-000000000046),
01246     pointer_default(unique)
01247 ]
01248 interface ICommDlgBrowser : IUnknown
01249 {
01250 cpp_quote("#define CDBOSC_SETFOCUS     0x00000000")
01251 cpp_quote("#define CDBOSC_KILLFOCUS    0x00000001")
01252 cpp_quote("#define CDBOSC_SELCHANGE    0x00000002")
01253 cpp_quote("#define CDBOSC_RENAME       0x00000003")
01254 cpp_quote("#define CDBOSC_STATECHANGE  0x00000004")
01255 
01256     typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
01257 
01258     HRESULT OnDefaultCommand( [in] IShellView *shv );
01259     HRESULT OnStateChange( [in] IShellView *shv, [in] ULONG uChange );
01260     HRESULT IncludeObject( [in] IShellView *shv, [in] LPCITEMIDLIST pidl );
01261 }
01262 
01263 
01264 /*****************************************************************************
01265  * ICommDlgBrowser2 interface
01266  */
01267 [
01268  object,
01269  uuid(10339516-2894-11D2-9039-00C04F8EEB3E),
01270  pointer_default(unique)
01271 ]
01272 interface ICommDlgBrowser2 : ICommDlgBrowser
01273 {
01274 
01275     HRESULT Notify(
01276         [in] IShellView *ppshv,
01277         [in] DWORD dwNotifyType);
01278 
01279     HRESULT GetDefaultMenuText(
01280         [in] IShellView *ppshv,
01281         [out, string, size_is(cchMax)] LPWSTR pszText,
01282         [in] int cchMax);
01283 
01284     HRESULT GetViewFlags(
01285         [out] DWORD *pdwFlags);
01286 }
01287 
01288 
01289 /*****************************************************************************
01290  * ICommDlgBrowser3 interface
01291  */
01292 [
01293  object,
01294  uuid(C8AD25A1-3294-41EE-8165-71174BD01C57),
01295  pointer_default(unique)
01296 ]
01297 interface ICommDlgBrowser3 : ICommDlgBrowser2
01298 {
01299 
01300     HRESULT OnColumnClicked(
01301         [in] IShellView *ppshv,
01302         [in] int iColumn);
01303 
01304     HRESULT GetCurrentFilter(
01305         [out, string, size_is(cchFileSpec)] LPWSTR pszFileSpec,
01306         [in] int cchFileSpec);
01307 
01308     HRESULT OnPreviewCreated(
01309         [in] IShellView *ppshv);
01310 }
01311 
01312 /*****************************************************************************
01313  * IDockingWindow interface
01314  */
01315 [
01316     object,
01317     uuid(012dd920-7b26-11d0-8ca9-00a0c92dbfe8)
01318 ]
01319 interface IDockingWindow : IOleWindow
01320 {
01321     HRESULT ShowDW(
01322         [in] BOOL fShow);
01323 
01324     HRESULT CloseDW(
01325         [in] DWORD dwReserved);
01326 
01327     HRESULT ResizeBorderDW(
01328         [in] LPCRECT prcBorder,
01329         [in] IUnknown *punkToolbarSite,
01330         [in] BOOL fReserved);
01331 };
01332 
01333 
01334 /*****************************************************************************
01335  * IDockingWindowFrame interface
01336  */
01337 [
01338     object,
01339     uuid(47d2657a-7b27-11d0-8ca9-00a0c92dbfe8),
01340     pointer_default(unique),
01341     local
01342 ]
01343 interface IDockingWindowFrame : IOleWindow
01344 {
01345 cpp_quote("#define DWFRF_NORMAL           0x0000")
01346 cpp_quote("#define DWFRF_DELETECONFIGDATA 0x0001")
01347 cpp_quote("#define DWFAF_HIDDEN           0x0001")
01348 
01349     HRESULT AddToolbar(
01350         [in] IUnknown *punkSrc,
01351         [in] LPCWSTR pwszItem,
01352         [in] DWORD dwAddFlags);
01353 
01354     HRESULT RemoveToolbar(
01355         [in] IUnknown *punkSrc,
01356         [in] DWORD dwRemoveFlags);
01357 
01358     HRESULT FindToolbar(
01359         [in] LPCWSTR pwszItem,
01360         [in] REFIID riid,
01361         [out] LPVOID *ppvObj);
01362 }
01363 
01364 
01365 /*****************************************************************************
01366  * IDragSourceHelper interface
01367  */
01368 [
01369     object,
01370     uuid(de5bf786-477a-11d2-839d-00c04fd918d0),
01371     pointer_default(unique),
01372     local
01373 ]
01374 interface IDragSourceHelper : IUnknown
01375 {
01376     typedef struct
01377     {
01378         SIZE     sizeDragImage;
01379         POINT    ptOffset;
01380         HBITMAP  hbmpDragImage;
01381         COLORREF crColorKey;
01382     } SHDRAGIMAGE, *LPSHDRAGIMAGE;
01383 
01384   HRESULT InitializeFromBitmap(
01385       [in] LPSHDRAGIMAGE pshdi,
01386       [in] IDataObject *pDataObject);
01387 
01388   HRESULT InitializeFromWindow(
01389       [in] HWND hwnd,
01390       [in] POINT *ppt,
01391       [in] IDataObject *pDataObject);
01392 }
01393 
01394 
01395 /*****************************************************************************
01396  * IDropTargetHelper interface
01397  */
01398 [
01399     object,
01400     uuid(4657278b-411b-11d2-839a-00c04fd918d0),
01401     pointer_default(unique),
01402     local
01403 ]
01404 interface IDropTargetHelper : IUnknown
01405 {
01406     HRESULT DragEnter(
01407         [in] HWND hwndTarget,
01408         [in] IDataObject *pDataObject,
01409         [in] POINT *ppt,
01410         [in] DWORD dwEffect);
01411 
01412     HRESULT DragLeave();
01413 
01414     HRESULT DragOver(
01415         [in] POINT *ppt,
01416         [in] DWORD dwEffect);
01417 
01418     HRESULT Drop(
01419         [in] IDataObject *pDataObject,
01420         [in] POINT *ppt,
01421         [in] DWORD dwEffect);
01422 
01423     HRESULT Show( [in] BOOL fShow );
01424 }
01425 
01426 
01427 /*****************************************************************************
01428  * IContextMenu interface
01429  */
01430 [
01431     object,
01432     uuid(000214e4-0000-0000-c000-000000000046),
01433     pointer_default(unique),
01434     local
01435 ]
01436 interface IContextMenu : IUnknown
01437 {
01438 cpp_quote("#define CMF_NORMAL        0x00000000")
01439 cpp_quote("#define CMF_DEFAULTONLY   0x00000001")
01440 cpp_quote("#define CMF_VERBSONLY     0x00000002")
01441 cpp_quote("#define CMF_EXPLORE       0x00000004")
01442 cpp_quote("#define CMF_NOVERBS       0x00000008")
01443 cpp_quote("#define CMF_CANRENAME     0x00000010")
01444 cpp_quote("#define CMF_NODEFAULT     0x00000020")
01445 cpp_quote("#define CMF_INCLUDESTATIC 0x00000040")
01446 cpp_quote("#define CMF_EXTENDEDVERBS 0x00000100")
01447 cpp_quote("#define CMF_RESERVED      0xffff0000")
01448 
01449 cpp_quote("#define GCS_VERBA         0x00000000")
01450 cpp_quote("#define GCS_HELPTEXTA     0x00000001")
01451 cpp_quote("#define GCS_VALIDATEA     0x00000002")
01452 cpp_quote("#define GCS_VERBW         0x00000004")
01453 cpp_quote("#define GCS_HELPTEXTW     0x00000005")
01454 cpp_quote("#define GCS_VALIDATEW     0x00000006")
01455 cpp_quote("#define GCS_UNICODE       0x00000004")
01456 cpp_quote("#define GCS_VERB          WINELIB_NAME_AW(GCS_VERB)")
01457 cpp_quote("#define GCS_HELPTEXT      WINELIB_NAME_AW(GCS_HELPTEXT)")
01458 cpp_quote("#define GCS_VALIDATE      WINELIB_NAME_AW(GCS_VALIDATE)")
01459 
01460 cpp_quote("#define CMDSTR_NEWFOLDERA   \"NewFolder\"")
01461 cpp_quote("#define CMDSTR_VIEWLISTA    \"ViewList\"")
01462 cpp_quote("#define CMDSTR_VIEWDETAILSA \"ViewDetails\"")
01463 cpp_quote("#if defined(__GNUC__)")
01464 cpp_quote("# define CMDSTR_NEWFOLDERW (const WCHAR []){ 'N','e','w','F','o','l','d','e','r',0 }")
01465 cpp_quote("# define CMDSTR_VIEWLISTW (const WCHAR []){ 'V','i','e','w','L','i','s','t',0 }")
01466 cpp_quote("# define CMDSTR_VIEWDETAILSW (const WCHAR []){ 'V','i','e','w','D','e','t','a','i','l','s',0 }")
01467 cpp_quote("#elif defined(_MSC_VER)")
01468 cpp_quote("# define CMDSTR_NEWFOLDERW   L\"NewFolder\"")
01469 cpp_quote("# define CMDSTR_VIEWLISTW    L\"ViewList\"")
01470 cpp_quote("# define CMDSTR_VIEWDETAILSW L\"ViewDetails\"")
01471 cpp_quote("#else")
01472 cpp_quote("static const WCHAR CMDSTR_NEWFOLDERW[] = {'N','e','w','F','o','l','d','e','r',0};")
01473 cpp_quote("static const WCHAR CMDSTR_VIEWLISTW [] = {'V','i','e','w','L','i','s','t',0};")
01474 cpp_quote("static const WCHAR CMDSTR_VIEWDETAILSW[] = {'V','i','e','w','D','e','t','a','i','l','s',0};")
01475 cpp_quote("#endif")
01476 cpp_quote("#define CMDSTR_NEWFOLDER    WINELIB_NAME_AW(CMDSTR_NEWFOLDER)")
01477 cpp_quote("#define CMDSTR_VIEWLIST     WINELIB_NAME_AW(CMDSTR_VIEWLIST)")
01478 cpp_quote("#define CMDSTR_VIEWDETAILS  WINELIB_NAME_AW(CMDSTR_VIEWDETAILS)")
01479 
01480 cpp_quote("#define CMIC_MASK_HOTKEY         SEE_MASK_HOTKEY")
01481 cpp_quote("#define CMIC_MASK_ICON           SEE_MASK_ICON")
01482 cpp_quote("#define CMIC_MASK_FLAG_NO_UI     SEE_MASK_FLAG_NO_UI")
01483 cpp_quote("#define CMIC_MASK_UNICODE        SEE_MASK_UNICODE")
01484 cpp_quote("#define CMIC_MASK_NO_CONSOLE     SEE_MASK_NO_CONSOLE")
01485 cpp_quote("#define CMIC_MASK_HASLINKNAME    SEE_MASK_HASLINKNAME")
01486 cpp_quote("#define CMIC_MASK_FLAG_SEP_VDM   SEE_MASK_FLAG_SEPVDM")
01487 cpp_quote("#define CMIC_MASK_HASTITLE       SEE_MASK_HASTITLE")
01488 cpp_quote("#define CMIC_MASK_ASYNCOK        SEE_MASK_ASYNCOK")
01489 cpp_quote("#define CMIC_MASK_NOASYNC        SEE_MASK_NOASYNC")
01490 cpp_quote("#define CMIC_MASK_SHIFT_DOWN     0x10000000")
01491 cpp_quote("#define CMIC_MASK_PTINVOKE       0x20000000")
01492 cpp_quote("#define CMIC_MASK_CONTROL_DOWN   0x40000000")
01493 cpp_quote("#define CMIC_MASK_FLAG_LOG_USAGE SEE_MASK_FLAG_LOG_USAGE")
01494 cpp_quote("#define CMIC_MASK_NOZONECHECKS   SEE_MASK_NOZONECHECKS")
01495 
01496     typedef IContextMenu *LPCONTEXTMENU;
01497 
01498     typedef struct tagCMINVOKECOMMANDINFO
01499     {
01500         DWORD cbSize;
01501         DWORD fMask;
01502         HWND hwnd;
01503         LPCSTR lpVerb;
01504         LPCSTR lpParameters;
01505         LPCSTR lpDirectory;
01506         INT nShow;
01507         DWORD dwHotKey;
01508         HANDLE hIcon;
01509     } CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO;
01510 
01511     typedef struct tagCMInvokeCommandInfoEx
01512     {
01513         DWORD cbSize;
01514         DWORD fMask;
01515         HWND hwnd;
01516         LPCSTR lpVerb;
01517         LPCSTR lpParameters;
01518         LPCSTR lpDirectory;
01519         INT nShow;
01520         DWORD dwHotKey;
01521         HANDLE hIcon;
01522         LPCSTR lpTitle;
01523         LPCWSTR lpVerbW;
01524         LPCWSTR lpParametersW;
01525         LPCWSTR lpDirectoryW;
01526         LPCWSTR lpTitleW;
01527         POINT ptInvoke;
01528     } CMINVOKECOMMANDINFOEX, *LPCMINVOKECOMMANDINFOEX;
01529 
01530     HRESULT QueryContextMenu(
01531         [in] HMENU hmenu,
01532         [in] UINT indexMenu,
01533         [in] UINT idCmdFirst,
01534         [in] UINT idCmdLast,
01535         [in] UINT uFlags);
01536 
01537     HRESULT InvokeCommand( [in] LPCMINVOKECOMMANDINFO lpici );
01538 
01539     HRESULT GetCommandString(
01540         [in] UINT_PTR idCmd,
01541         [in] UINT uType,
01542         [out] UINT *pwReserved,
01543         [out, size_is(cchMax)] LPSTR pszName,
01544         [in] UINT cchMax);
01545 }
01546 
01547 
01548 /*****************************************************************************
01549  * IContextMenu2 interface
01550  */
01551 [
01552     object,
01553     uuid(000214f4-0000-0000-c000-000000000046),
01554     pointer_default(unique),
01555     local
01556 ]
01557 interface IContextMenu2 : IContextMenu
01558 {
01559     typedef IContextMenu2 *LPCONTEXTMENU2;
01560 
01561     HRESULT HandleMenuMsg(
01562         [in] UINT uMsg,
01563         [in] WPARAM wParam,
01564         [in] LPARAM lParam);
01565 }
01566 
01567 
01568 /*****************************************************************************
01569  * IContextMenu3 interface
01570  */
01571 [
01572     object,
01573     uuid(bcfce0a0-ec17-11d0-8d10-00a0c90f2719),
01574     pointer_default(unique),
01575     local
01576 ]
01577 interface IContextMenu3 : IContextMenu2
01578 {
01579     typedef IContextMenu3 *LPCONTEXTMENU3;
01580 
01581     HRESULT HandleMenuMsg2(
01582         [in] UINT uMsg,
01583         [in] WPARAM wParam,
01584         [in] LPARAM lParam,
01585         [out] LRESULT *plResult);
01586 }
01587 
01588 /*****************************************************************************
01589  * IContextMenuCB interface
01590  */
01591 
01592 [
01593     object,
01594     uuid(3409e930-5a39-11d1-83fa-00a0c90dc849),
01595     pointer_default(unique),
01596     local
01597 ]
01598 interface IContextMenuCB : IUnknown
01599 {
01600     HRESULT CallBack(
01601         [in] IShellFolder *psf,
01602         [in] HWND hwndOwner,
01603         [in] IDataObject *pdtobj,
01604         [in] UINT uMsg,
01605         [in] WPARAM wParam,
01606         [in] LPARAM lParam);
01607 }
01608 
01609 /*****************************************************************************
01610  * IShellExecuteHookA interface
01611  */
01612 [
01613     object,
01614     uuid(000214f5-0000-0000-c000-000000000046),
01615     pointer_default(unique),
01616     local
01617 ]
01618 interface IShellExecuteHookA : IUnknown
01619 {
01620     cpp_quote("struct _SHELLEXECUTEINFOA;")
01621     HRESULT Execute(
01622         [in, out] struct _SHELLEXECUTEINFOA* pei);
01623 }
01624 
01625 
01626 /*****************************************************************************
01627  * IShellExecuteHookW interface
01628  */
01629 [
01630     object,
01631     uuid(000214fb-0000-0000-c000-000000000046),
01632     pointer_default(unique),
01633     local
01634 ]
01635 interface IShellExecuteHookW : IUnknown
01636 {
01637     cpp_quote("struct _SHELLEXECUTEINFOW;")
01638     HRESULT Execute(
01639         [in, out] struct _SHELLEXECUTEINFOW* pei);
01640 }
01641 
01642 /*****************************************************************************
01643  * IShellLinkDataList interface
01644  */
01645 [
01646     object,
01647     uuid(45e2b4ae-b1c3-11d0-b92f-00a0c90312e1),
01648     pointer_default(unique)
01649 ]
01650 interface IShellLinkDataList : IUnknown
01651 {
01652     [local] HRESULT AddDataBlock(
01653                 [in] void *pDataBlock);
01654     [local] HRESULT CopyDataBlock(
01655                 [in] DWORD dwSig,
01656                 [out] void **ppDataBlock);
01657     HRESULT RemoveDataBlock(
01658                 [in] DWORD dwSig);
01659     HRESULT GetFlags(
01660                 [out] DWORD *pdwFlags);
01661     HRESULT SetFlags(
01662                 [in] DWORD dwFlags);
01663 }
01664 
01665 
01666 /*****************************************************************************
01667  * IResolveShellLink interface
01668  */
01669 [
01670     object,
01671     uuid(5cd52983-9449-11d2-963a-00c04f79adf0),
01672     pointer_default(unique)
01673 ]
01674 interface IResolveShellLink : IUnknown
01675 {
01676     HRESULT ResolveShellLink(
01677                 [in] IUnknown *punk,
01678                 [in] HWND hwnd,
01679                 [in] DWORD fFlags);
01680 }
01681 
01682 
01683 /*****************************************************************************
01684  * IURLSearchHook interface
01685  */
01686 [
01687     object,
01688     uuid(ac60f6a0-0fd9-11d0-99cb-00c04fd64497),
01689     pointer_default(unique),
01690     local
01691 ]
01692 interface IURLSearchHook : IUnknown
01693 {
01694     HRESULT Translate(
01695                 [in, out] LPWSTR lpwszSearchURL,
01696                 [in] DWORD cchBufferSize);
01697 }
01698 
01699 
01700 /*****************************************************************************
01701  * ISearchContext interface
01702  */
01703 [
01704     object,
01705     uuid(09f656a2-41af-480c-88f7-16cc0d164615),
01706     pointer_default(unique),
01707     local
01708 ]
01709 interface ISearchContext : IUnknown
01710 {
01711     HRESULT GetSearchUrl(
01712                 [in] BSTR *pbstrSearchUrl);
01713     HRESULT GetSearchText(
01714                 [in] BSTR *pbstrSearchText);
01715     HRESULT GetSearchStyle(
01716                 [in] BSTR *pdwSearchStyle);
01717 }
01718 
01719 
01720 /*****************************************************************************
01721  * IURLSearchHook2 interface
01722  */
01723 [
01724     object,
01725     uuid(5ee44da4-6d32-46e3-86bc-07540dedd0e0),
01726     pointer_default(unique),
01727     local
01728 ]
01729 interface IURLSearchHook2 : IURLSearchHook
01730 {
01731     HRESULT TranslateWithSearchContext(
01732                 [in, out] LPWSTR lpwszSearchURL,
01733                 [in] DWORD cchBufferSize,
01734                 [in] ISearchContext *pSearchContext);
01735 }
01736 
01737 
01738 cpp_quote("#define INewShortcutHook WINELIB_NAME_AW(INewShortcutHook)")
01739 
01740 /*****************************************************************************
01741  * INewShortcutHookA interface
01742  */
01743 [
01744     object,
01745     uuid(000214e1-0000-0000-c000-000000000046),
01746     pointer_default(unique),
01747     local
01748 ]
01749 interface INewShortcutHookA : IUnknown
01750 {
01751     HRESULT SetReferent(
01752                 [in] LPCSTR pcszReferent,
01753                 [in] HWND hwnd);
01754     HRESULT GetReferent(
01755                 [out] LPSTR pcszReferent,
01756                 [in] int cchReferent);
01757     HRESULT SetFolder(
01758                 [in] LPCSTR pcszReferent);
01759     HRESULT GetFolder(
01760                 [out] LPSTR pcszReferent,
01761                 [in] int cchFolder);
01762     HRESULT GetName(
01763                 [out] LPSTR pszName,
01764                 [in] int cchName);
01765     HRESULT GetExtension(
01766                 [out] LPSTR pszExtension,
01767                 [in] int cchExtension);
01768 } 
01769 
01770 
01771 /*****************************************************************************
01772  * INewShortcutHookW interface
01773  */
01774 [
01775     object,
01776     uuid(000214f7-0000-0000-c000-000000000046),
01777     pointer_default(unique),
01778     local
01779 ]
01780 interface INewShortcutHookW : IUnknown
01781 {
01782     HRESULT SetReferent(
01783                 [in] LPCWSTR pcszReferent,
01784                 [in] HWND hwnd);
01785     HRESULT GetReferent(
01786                 [out] LPWSTR pcszReferent,
01787                 [in] int cchReferent);
01788     HRESULT SetFolder(
01789                 [in] LPCWSTR pcszReferent);
01790     HRESULT GetFolder(
01791                 [out] LPWSTR pcszReferent,
01792                 [in] int cchFolder);
01793     HRESULT GetName(
01794                 [out] LPWSTR pszName,
01795                 [in] int cchName);
01796     HRESULT GetExtension(
01797                 [out] LPWSTR pszExtension,
01798                 [in] int cchExtension);
01799 } 
01800 
01801 /*****************************************************************************
01802  * IRunnableTask interface
01803  */
01804 [
01805     object,
01806     uuid(85788d00-6807-11d0-b810-00c04fd706ec),
01807     pointer_default(unique),
01808     local
01809 ]
01810 interface IRunnableTask : IUnknown
01811 {
01812     HRESULT Run();
01813     HRESULT Kill([in] BOOL fWait);
01814     HRESULT Suspend();
01815     HRESULT Resume();
01816     ULONG IsRunning();
01817 }
01818 
01819 /*****************************************************************************
01820  * IShellChangeNotify interface
01821  */
01822 [
01823     object,
01824     uuid(d82be2b1-5764-11d0-a96e-00c04fd705a2),
01825     pointer_default(unique),
01826     local
01827 ]
01828 interface IShellChangeNotify : IUnknown
01829 {
01830     HRESULT OnChange(
01831                 [in] LONG lEvent,
01832                 [in] LPCITEMIDLIST pidl1,
01833                 [in] LPCITEMIDLIST pidl2);
01834 }
01835 
01836 /*****************************************************************************
01837  * IFileSystemBindData interface
01838  */
01839 [
01840     object,
01841     uuid(01e18d10-4d8b-11d2-855d-006008059367),
01842     pointer_default(unique),
01843     local
01844 ]
01845 interface IFileSystemBindData : IUnknown
01846 {
01847     HRESULT SetFindData(
01848                 [in] const WIN32_FIND_DATAW *pfd);
01849     HRESULT GetFindData(
01850                 [out] WIN32_FIND_DATAW *pfd);
01851 }
01852 
01853 /*****************************************************************************
01854  *    ITaskbarList interface
01855  */
01856 [
01857     object,
01858     uuid(56FDF342-FD6D-11d0-958A-006097C9A090),
01859     pointer_default(unique)
01860 ]
01861 interface ITaskbarList : IUnknown
01862 {
01863     HRESULT HrInit();
01864 
01865     HRESULT AddTab(
01866         [in] HWND hwnd);
01867 
01868     HRESULT DeleteTab(
01869         [in] HWND hwnd);
01870 
01871     HRESULT ActivateTab(
01872         [in] HWND hwnd);
01873 
01874     HRESULT SetActiveAlt(
01875         [in] HWND hwnd);
01876 }
01877 
01878 /*****************************************************************************
01879  * IDefaultExtractIconInit interface
01880  */
01881 
01882 [
01883     object,
01884     uuid(800AB0B8-F5FA-4e72-8FF3-B1A243B87BD9), /* FIXME: wrong value! */
01885     pointer_default(unique),
01886     local
01887 ]
01888 interface IDefaultExtractIconInit : IUnknown
01889 {
01890     HRESULT SetDefaultIcon(
01891                        [in] LPCWSTR pszFile,
01892                        [in] int iIcon);
01893     HRESULT SetFlags(
01894                        [in] UINT uFlags);
01895     HRESULT SetKey(
01896                        [in] HKEY hkey);
01897     HRESULT SetNormalIcon(
01898                        [in] LPCWSTR pszFile,
01899                        [in] int iIcon);
01900     HRESULT SetOpenIcon(
01901                        [in] LPCWSTR pszFile,
01902                        [in] int iIcon);
01903     HRESULT SetShortcutIcon(
01904                        [in] LPCWSTR pszFile,
01905                        [in] int iIcon);
01906 }
01907 
01908 /*****************************************************************************
01909  * IDeskBand interface
01910  */
01911 cpp_quote("#define DBIM_MINSIZE    0x0001")
01912 cpp_quote("#define DBIM_MAXSIZE    0x0002")
01913 cpp_quote("#define DBIM_INTEGRAL   0x0004")
01914 cpp_quote("#define DBIM_ACTUAL     0x0008")
01915 cpp_quote("#define DBIM_TITLE      0x0010")
01916 cpp_quote("#define DBIM_MODEFLAGS  0x0020")
01917 cpp_quote("#define DBIM_BKCOLOR    0x0040")
01918 
01919 cpp_quote("#include <pshpack8.h>")
01920 
01921 typedef struct tagDESKBANDINFO
01922 {
01923     DWORD       dwMask;
01924     POINTL      ptMinSize;
01925     POINTL      ptMaxSize;
01926     POINTL      ptIntegral;
01927     POINTL      ptActual;
01928     WCHAR       wszTitle[256];
01929     DWORD       dwModeFlags;
01930     COLORREF    crBkgnd;
01931 } DESKBANDINFO;
01932 
01933 cpp_quote("#include <poppack.h>")
01934 
01935 cpp_quote("#define DBIMF_NORMAL            0x0000")
01936 cpp_quote("#define DBIMF_FIXED             0x0001")
01937 cpp_quote("#define DBIMF_FIXEDBMP          0x0004   // a fixed background bitmap (if supported)")
01938 cpp_quote("#define DBIMF_VARIABLEHEIGHT    0x0008")
01939 cpp_quote("#define DBIMF_UNDELETEABLE      0x0010")
01940 cpp_quote("#define DBIMF_DEBOSSED          0x0020")
01941 cpp_quote("#define DBIMF_BKCOLOR           0x0040")
01942 cpp_quote("#define DBIMF_USECHEVRON        0x0080")
01943 cpp_quote("#define DBIMF_BREAK             0x0100")
01944 cpp_quote("#define DBIMF_ADDTOFRONT        0x0200")
01945 cpp_quote("#define DBIMF_TOPALIGN          0x0400")
01946 cpp_quote("#if (NTDDI_VERSION >= NTDDI_LONGHORN)")
01947 cpp_quote("#define DBIMF_NOGRIPPER         0x0800")
01948 cpp_quote("#define DBIMF_ALWAYSGRIPPER     0x1000")
01949 cpp_quote("#define DBIMF_NOMARGINS         0x2000")
01950 cpp_quote("#endif  // NTDDI_LONGHORN")
01951 
01952 cpp_quote("#define DBIF_VIEWMODE_NORMAL         0x0000")
01953 cpp_quote("#define DBIF_VIEWMODE_VERTICAL       0x0001")
01954 cpp_quote("#define DBIF_VIEWMODE_FLOATING       0x0002")
01955 cpp_quote("#define DBIF_VIEWMODE_TRANSPARENT    0x0004")
01956 
01957 enum tagDESKBANDCID {
01958     DBID_BANDINFOCHANGED    = 0,
01959     DBID_SHOWONLY           = 1,
01960     DBID_MAXIMIZEBAND       = 2,
01961     DBID_PUSHCHEVRON        = 3,
01962     DBID_DELAYINIT          = 4,
01963     DBID_FINISHINIT         = 5,
01964     DBID_SETWINDOWTHEME     = 6,
01965     DBID_PERMITAUTOHIDE     = 7,
01966 };
01967 
01968 cpp_quote("#define DBPC_SELECTFIRST    (DWORD)-1")
01969 cpp_quote("#define DBPC_SELECTLAST     (DWORD)-2")
01970 
01971 cpp_quote("#define CGID_DeskBand IID_IDeskBand")
01972 
01973 [
01974     uuid(EB0FE172-1A3A-11D0-89B3-00A0C90A90AC),
01975     object,
01976 ]
01977 interface IDeskBand : IDockingWindow
01978 {
01979     HRESULT GetBandInfo(
01980         [in] DWORD dwBandID,
01981         [in] DWORD dwViewMode,
01982         [in, out] DESKBANDINFO* pdbi);
01983 }
01984 
01985 cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60)")
01986 
01987 [
01988     uuid(EB0FE173-1A3A-11D0-89B3-00A0C90A90AC),
01989     object,
01990     pointer_default(unique),
01991     local
01992 ]
01993 interface IDeskBar : IOleWindow
01994 {
01995     HRESULT SetClient([in] IUnknown* punkClient);
01996 
01997     HRESULT GetClient([out] IUnknown** ppunkClient);
01998 
01999     HRESULT OnPosRectChangeDB([in] RECT *prc);
02000 }
02001 
02002 
02003 /*****************************************************************************
02004  * IMenuPopup interface
02005  */
02006 [
02007     uuid(D1E7AFEB-6A2E-11d0-8C78-00C04FD918B4),
02008     object,
02009     pointer_default(unique),
02010     local
02011 ]
02012 interface IMenuPopup : IDeskBar
02013 {
02014     enum tagMENUPOPUPSELECT
02015     {
02016         MPOS_EXECUTE = 0,
02017         MPOS_FULLCANCEL,
02018         MPOS_CANCELLEVEL,
02019         MPOS_SELECTLEFT,
02020         MPOS_SELECTRIGHT,
02021         MPOS_CHILDTRACKING
02022     };
02023 
02024     enum tagMENUPOPUPPOPUPFLAGS
02025     {
02026         MPPF_SETFOCUS      = 0x00000001,
02027         MPPF_INITIALSELECT = 0x00000002,
02028         MPPF_NOANIMATE     = 0x00000004,
02029         MPPF_KEYBOARD      = 0x00000010,
02030         MPPF_REPOSITION    = 0x00000020,
02031         MPPF_FORCEZORDER   = 0x00000040,
02032         MPPF_FINALSELECT   = 0x00000080,
02033         MPPF_TOP           = 0x20000000,
02034         MPPF_LEFT          = 0x40000000,
02035         MPPF_RIGHT         = 0x60000000,
02036         MPPF_BOTTOM        = 0x80000000,
02037         MPPF_POS_MASK      = 0xE0000000,
02038         MPPF_ALIGN_LEFT    = 0x02000000,
02039         MPPF_ALIGN_RIGHT   = 0x04000000
02040     };
02041     typedef int MP_POPUPFLAGS;
02042 
02043     HRESULT Popup(
02044         [in] POINTL *ppt,
02045         [in] RECTL *prcExclude,
02046         [in] MP_POPUPFLAGS dwFlags);
02047 
02048     HRESULT OnSelect([in] DWORD dwSelectType);
02049 
02050     HRESULT SetSubMenu(
02051         [in] IMenuPopup* pmp,
02052         [in] BOOL fSet);
02053 }
02054 
02055 cpp_quote("#endif /* _WIN32_IE_IE60 */")
02056 
02057 cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE40)")
02058 
02059 /*****************************************************************************
02060  * IBandSite interface
02061  */
02062 cpp_quote("#include <pshpack8.h>")
02063 
02064 typedef struct tagBANDSITEINFO
02065 {
02066     DWORD dwMask;
02067     DWORD dwState;
02068     DWORD dwStyle;
02069 } BANDSITEINFO;
02070 
02071 cpp_quote("#include <poppack.h>")
02072 
02073 
02074 enum tagBANDSITECID {
02075     BSID_BANDADDED,
02076     BSID_BANDREMOVED,
02077 };
02078 
02079 cpp_quote("#define BSIM_STATE        0x00000001")
02080 cpp_quote("#define BSIM_STYLE        0x00000002")
02081 
02082 cpp_quote("#define BSSF_VISIBLE      0x00000001")
02083 cpp_quote("#define BSSF_NOTITLE      0x00000002")
02084 cpp_quote("#define BSSF_UNDELETEABLE 0x00001000")
02085 
02086 cpp_quote("#define BSIS_AUTOGRIPPER       0x00000000")
02087 cpp_quote("#define BSIS_NOGRIPPER         0x00000001")
02088 cpp_quote("#define BSIS_ALWAYSGRIPPER     0x00000002")
02089 cpp_quote("#define BSIS_LEFTALIGN         0x00000004")
02090 cpp_quote("#define BSIS_SINGLECLICK       0x00000008")
02091 cpp_quote("#define BSIS_NOCONTEXTMENU     0x00000010")
02092 cpp_quote("#define BSIS_NODROPTARGET      0x00000020")
02093 cpp_quote("#define BSIS_NOCAPTION         0x00000040")
02094 cpp_quote("#define BSIS_PREFERNOLINEBREAK 0x00000080")
02095 cpp_quote("#define BSIS_LOCKED            0x00000100")
02096 cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
02097 cpp_quote("#define BSIS_PRESERVEORDERDURINGLAYOUT 0x00000200")
02098 cpp_quote("#endif  /* _WIN32_IE_IE70 */")
02099 
02100 cpp_quote("#define SID_SBandSite IID_IBandSite")
02101 cpp_quote("#define CGID_BandSite IID_IBandSite")
02102 
02103 [
02104     object,
02105     uuid(4CF504B0-DE96-11D0-8B3F-00A0C911E8E5)
02106 ]
02107 interface IBandSite : IUnknown
02108 {
02109     HRESULT AddBand([in] IUnknown* punk);
02110 
02111     HRESULT EnumBands(
02112         [in] UINT uBand,
02113         [out] DWORD* pdwBandID);
02114 
02115     HRESULT QueryBand(
02116         [in] DWORD dwBandID,
02117         [out] IDeskBand** ppstb,
02118         [out] DWORD* pdwState,
02119         [out, string, size_is(cchName)] LPWSTR pszName,
02120         [in] int cchName);
02121 
02122     HRESULT SetBandState(
02123         [in] DWORD dwBandID,
02124         [in] DWORD dwMask,
02125         [in] DWORD dwState);
02126 
02127     HRESULT RemoveBand([in] DWORD dwBandID);
02128 
02129     HRESULT GetBandObject(
02130         [in] DWORD dwBandID,
02131         [in] REFIID riid,
02132         [out, iid_is(riid)] void **ppv);
02133 
02134     HRESULT SetBandSiteInfo([in] const BANDSITEINFO *pbsinfo);
02135 
02136     HRESULT GetBandSiteInfo([in, out] BANDSITEINFO *pbsinfo);
02137 }
02138 
02139 cpp_quote("#endif /* _WIN32_IE_IE40 */")
02140 
02141 /*****************************************************************************
02142  * IMenuBand interface
02143  */
02144 [
02145     uuid(568804CD-CBD7-11d0-9816-00C04FD91972),
02146     object,
02147     pointer_default(unique),
02148     local
02149 ]
02150 interface IMenuBand : IUnknown
02151 {
02152     enum tagMENUBANDHANDLERCID {
02153         MBHANDCID_PIDLSELECT = 0,
02154     };
02155 
02156     HRESULT IsMenuMessage([in] MSG* pmsg);
02157 
02158     HRESULT TranslateMenuMessage(
02159         [in, out] MSG* pmsg,
02160         [out] LRESULT* plRet);
02161 }
02162 
02163 /*****************************************************************************
02164  * IProfferService interface
02165  */
02166 [
02167     uuid(cb728b20-f786-11ce-92ad-00aa00a74cd0),
02168     object,
02169     pointer_default(unique),
02170     local
02171 ]
02172 interface IProfferService : IUnknown
02173 {
02174     HRESULT ProfferService(
02175         [in] REFGUID service,
02176         [in] IServiceProvider *pService,
02177         [out] DWORD *pCookie);
02178 
02179     HRESULT RevokeService([in] DWORD cookie);
02180 }
02181 
02182 /*****************************************************************************
02183  * IShellMenuCallback interface
02184  */
02185 cpp_quote("#include <pshpack8.h>")
02186 
02187 typedef struct tagSMDATA
02188 {
02189     DWORD           dwMask;
02190     DWORD           dwFlags;
02191     HMENU           hmenu;
02192     HWND            hwnd;
02193     UINT            uId;
02194     UINT            uIdParent;
02195     UINT            uIdAncestor;
02196     IUnknown        *punk;
02197     LPITEMIDLIST    pidlFolder;
02198     LPITEMIDLIST    pidlItem;
02199     IShellFolder    *psf;
02200     void            *pvUserData;
02201 } SMDATA, *LPSMDATA;
02202 
02203 cpp_quote("#define SMDM_SHELLFOLDER     0x00000001")
02204 cpp_quote("#define SMDM_HMENU           0x00000002")
02205 cpp_quote("#define SMDM_TOOLBAR         0x00000004")
02206 
02207 typedef struct tagSMINFO
02208 {
02209     DWORD           dwMask;
02210     DWORD           dwType;
02211     DWORD           dwFlags;
02212     int             iIcon;
02213 } SMINFO, *PSMINFO;
02214 
02215 typedef struct tagSHCSCHANGENOTIFYSTRUCT
02216 {
02217     LONG            lEvent;
02218     LPCITEMIDLIST   pidl1;
02219     LPCITEMIDLIST   pidl2;
02220 } SMCSHCHANGENOTIFYSTRUCT, *PSMCSHCHANGENOTIFYSTRUCT;
02221 
02222 cpp_quote("#include <poppack.h>")
02223 
02224 enum
02225 {
02226     SMIM_TYPE           = 0x00000001,
02227     SMIM_FLAGS          = 0x00000002,
02228     SMIM_ICON           = 0x00000004
02229 };
02230 
02231 enum
02232 {
02233     SMIT_SEPARATOR      = 0x00000001,
02234     SMIT_STRING         = 0x00000002
02235 };
02236 
02237 enum
02238 {
02239     SMIF_ICON           = 0x00000001,
02240     SMIF_ACCELERATOR    = 0x00000002,
02241     SMIF_DROPTARGET     = 0x00000004,
02242     SMIF_SUBMENU        = 0x00000008,
02243     SMIF_CHECKED        = 0x00000020,
02244     SMIF_DROPCASCADE    = 0x00000040,
02245     SMIF_HIDDEN         = 0x00000080,
02246     SMIF_DISABLED       = 0x00000100,
02247     SMIF_TRACKPOPUP     = 0x00000200,
02248     SMIF_DEMOTED        = 0x00000400,
02249     SMIF_ALTSTATE       = 0x00000800,
02250     SMIF_DRAGNDROP      = 0x00001000,
02251     SMIF_NEW            = 0x00002000,
02252 };
02253 
02254 
02255 cpp_quote("#define SMC_INITMENU             0x00000001")
02256 cpp_quote("#define SMC_CREATE               0x00000002")
02257 cpp_quote("#define SMC_EXITMENU             0x00000003")
02258 cpp_quote("#define SMC_GETINFO              0x00000005")
02259 cpp_quote("#define SMC_GETSFINFO            0x00000006")
02260 cpp_quote("#define SMC_GETOBJECT            0x00000007")
02261 cpp_quote("#define SMC_GETSFOBJECT          0x00000008")
02262 cpp_quote("#define SMC_SFEXEC               0x00000009")
02263 cpp_quote("#define SMC_SFSELECTITEM         0x0000000A")
02264 cpp_quote("#define SMC_REFRESH              0x00000010")
02265 cpp_quote("#define SMC_DEMOTE               0x00000011")
02266 cpp_quote("#define SMC_PROMOTE              0x00000012")
02267 cpp_quote("#define SMC_DEFAULTICON          0x00000016")
02268 cpp_quote("#define SMC_NEWITEM              0x00000017")
02269 cpp_quote("#define SMC_CHEVRONEXPAND        0x00000019")
02270 cpp_quote("#define SMC_DISPLAYCHEVRONTIP    0x0000002A")
02271 cpp_quote("#define SMC_SETSFOBJECT          0x0000002D")
02272 cpp_quote("#define SMC_SHCHANGENOTIFY       0x0000002E")
02273 cpp_quote("#define SMC_CHEVRONGETTIP        0x0000002F")
02274 cpp_quote("#define SMC_SFDDRESTRICTED       0x00000030")
02275 
02276 [
02277     uuid(4CA300A1-9B8D-11d1-8B22-00C04FD918D0),
02278     object,
02279     pointer_default(unique),
02280     local
02281 ]
02282 interface IShellMenuCallback : IUnknown
02283 {
02284     HRESULT CallbackSM( 
02285         [in, out] LPSMDATA psmd,
02286         [in] UINT uMsg,
02287         [in] WPARAM wParam,
02288         [in] LPARAM lParam);
02289 }
02290 
02291 
02292 /*****************************************************************************
02293  * IShellMenu interface
02294  */
02295 
02296 cpp_quote("#define SMINIT_DEFAULT               0x00000000")
02297 cpp_quote("#define SMINIT_RESTRICT_DRAGDROP     0x00000002")
02298 cpp_quote("#define SMINIT_TOPLEVEL              0x00000004")
02299 cpp_quote("#define SMINIT_CACHED                0x00000010")
02300 cpp_quote("#define SMINIT_VERTICAL              0x10000000")
02301 cpp_quote("#define SMINIT_HORIZONTAL            0x20000000")
02302 cpp_quote("")
02303 cpp_quote("#define ANCESTORDEFAULT              (UINT)-1")
02304 cpp_quote("")
02305 cpp_quote("#define SMSET_TOP                    0x10000000")
02306 cpp_quote("#define SMSET_BOTTOM                 0x20000000")
02307 cpp_quote("#define SMSET_DONTOWN                0x00000001")
02308 cpp_quote("")
02309 cpp_quote("#define SMINV_REFRESH                0x00000001")
02310 cpp_quote("#define SMINV_ID                     0x00000008")
02311 
02312 [
02313     uuid(EE1F7637-E138-11d1-8379-00C04FD918D0),
02314     object,
02315     pointer_default(unique),
02316     local
02317 ]
02318 interface IShellMenu : IUnknown
02319 {
02320     HRESULT Initialize( 
02321         [in] IShellMenuCallback *psmc,
02322         [in] UINT uId,
02323         [in] UINT uIdAncestor,
02324         [in] DWORD dwFlags);
02325         
02326     HRESULT GetMenuInfo( 
02327         [out] IShellMenuCallback **ppsmc,
02328         [out] UINT *puId,
02329         [out] UINT *puIdAncestor,
02330         [out] DWORD *pdwFlags);
02331         
02332     HRESULT SetShellFolder( 
02333         [in] IShellFolder *psf,
02334         [in] LPCITEMIDLIST pidlFolder,
02335         [in] HKEY hKey,
02336         [in] DWORD dwFlags);
02337         
02338     HRESULT GetShellFolder( 
02339         [out] DWORD *pdwFlags,
02340         [out] LPITEMIDLIST *ppidl,
02341         [in] REFIID riid,
02342         [out] void **ppv);
02343         
02344     HRESULT SetMenu( 
02345         [in] HMENU hmenu,
02346         [in] HWND hwnd,
02347         [in] DWORD dwFlags);
02348         
02349     HRESULT GetMenu( 
02350         [out] HMENU *phmenu,
02351         [out] HWND *phwnd,
02352         [out] DWORD *pdwFlags);
02353         
02354     HRESULT InvalidateItem( 
02355         [in] LPSMDATA psmd,
02356         [in] DWORD dwFlags);
02357         
02358     HRESULT GetState( 
02359         [out] LPSMDATA psmd);
02360         
02361     HRESULT SetMenuToolbar( 
02362         [in] IUnknown *punk,
02363         [in] DWORD dwFlags);
02364 }
02365 
02366 
02367 typedef struct _WINDOWDATA
02368 {
02369     DWORD     dwWindowID;
02370     UINT      uiCP;
02371     LPITEMIDLIST  pidl;
02372     [string]  LPWSTR lpszUrl;
02373     [string]  LPWSTR lpszUrlLocation;
02374     [string]  LPWSTR lpszTitle;
02375 } WINDOWDATA;
02376 
02377 typedef WINDOWDATA *LPWINDOWDATA;
02378 typedef const WINDOWDATA *LPCWINDOWDATA;
02379 
02380 
02381 /*****************************************************************************
02382  * ITravelEntry interface
02383  */
02384 [
02385     uuid(F46EDB3B-BC2F-11d0-9412-00AA00A3EBD3),
02386     object,
02387     pointer_default(unique),
02388     local
02389 ]
02390 interface ITravelEntry : IUnknown
02391 {
02392     HRESULT Invoke(
02393         [in] IUnknown *punk);
02394 
02395     HRESULT Update(
02396         [in] IUnknown *punk,
02397         BOOL fIsLocalAnchor);
02398 
02399     HRESULT GetPidl(
02400         [in] LPITEMIDLIST *ppidl);
02401 };
02402 
02403 
02404 /*****************************************************************************
02405  * ITravelLogClient interface
02406  */
02407 [
02408     uuid(241c033e-e659-43da-aa4d-4086dbc4758d),
02409     object,
02410     pointer_default(unique),
02411     local
02412 ]
02413 interface ITravelLogClient : IUnknown
02414 {
02415     HRESULT FindWindowByIndex(
02416         [in] DWORD dwID,
02417         [out] IUnknown **ppunk);
02418     
02419     HRESULT GetWindowData(
02420         [out] LPWINDOWDATA pWinData);
02421 
02422     HRESULT LoadHistoryPosition(
02423         [in] LPWSTR pszUrlLocation,
02424         [in] DWORD dwPosition);
02425 };
02426 
02427 
02428 /*****************************************************************************
02429  * ITravelLog interface
02430  */
02431 [
02432     uuid(66A9CB08-4802-11d2-A561-00A0C92DBFE8),
02433     object,
02434     pointer_default(unique),
02435     local
02436 ]
02437 interface ITravelLog : IUnknown
02438 {
02439     enum tagTLENUMF
02440     {
02441         TLEF_RELATIVE_INCLUDE_CURRENT   = 0x00000001,
02442         TLEF_RELATIVE_BACK              = 0x00000010,
02443         TLEF_RELATIVE_FORE              = 0x00000020,
02444         TLEF_INCLUDE_UNINVOKEABLE       = 0x00000040,
02445         TLEF_ABSOLUTE                   = 0x00000031,
02446     };
02447     typedef DWORD TLENUMF;
02448 
02449     HRESULT AddEntry(
02450         [in] IUnknown *punk,
02451         BOOL fIsLocalAnchor);
02452 
02453     HRESULT UpdateEntry(
02454         [in] IUnknown *punk,
02455         BOOL fIsLocalAnchor);
02456 
02457     HRESULT UpdateExternal(
02458         [in] IUnknown *punk,
02459         [in] IUnknown *punkHLBrowseContext);
02460 
02461     HRESULT Travel(
02462         [in] IUnknown *punk,
02463         int iOffset);
02464 
02465     HRESULT GetTravelEntry(
02466         [in] IUnknown *punk,
02467         int iOffset,
02468         [out] ITravelEntry **ppte);
02469 
02470     HRESULT FindTravelEntry(
02471         [in] IUnknown *punk,
02472         [in] LPCITEMIDLIST pidl,
02473         [out] ITravelEntry **ppte);
02474 
02475     HRESULT GetToolTipText(
02476         [in] IUnknown *punk,
02477         int iOffset,
02478         int idsTemplate,
02479         [out] LPWSTR pwzText,
02480         DWORD cchText);
02481 
02482     HRESULT InsertMenuEntries(
02483         [in] IUnknown *punk,
02484         [in, out] HMENU hmenu,
02485         int nPos,
02486         int idFirst,
02487         int idLast,
02488         DWORD dwFlags);
02489 
02490     HRESULT Clone(
02491         [out] ITravelLog **pptl);
02492 
02493     DWORD CountEntries(
02494         [in] IUnknown *punk);
02495 
02496     HRESULT Revert();
02497 };
02498 
02499 /*****************************************************************************
02500  * IShellService interface
02501  */
02502 [
02503     object,
02504     uuid(5836FB00-8187-11CF-A12B-00AA004AE837),
02505     pointer_default(unique),
02506     local
02507 ]
02508 interface IShellService : IUnknown
02509 {
02510     HRESULT SetOwner(
02511         [in] IUnknown *owner);
02512 };
02513 
02514 /*****************************************************************************
02515  * IShellBrowser interface
02516  */
02517 [
02518     object,
02519     uuid(02BA3B52-0547-11D1-B833-00C04FC9B31F),
02520     pointer_default(unique),
02521     local
02522 ]
02523 interface IBrowserService : IUnknown
02524 {
02525     typedef enum tagBNSTATE
02526     {
02527         BNS_NORMAL  = 0,
02528         BNS_BEGIN_NAVIGATE  = 1,
02529         BNS_NAVIGATE    = 2
02530     } BNSTATE;
02531 
02532     cpp_quote("#include <pshpack8.h>")
02533     typedef struct basebrowserdataxp
02534     {
02535         HWND                _hwnd;
02536         ITravelLog          *_ptl;
02537         IUnknown            *_phlf;
02538         IUnknown            *_pautoWB2;
02539         IUnknown            *_pautoEDS;
02540         IShellService       *_pautoSS;
02541         int                 _eSecureLockIcon;
02542         DWORD               _fCreatingViewWindow;
02543         UINT                _uActivateState;
02544         LPITEMIDLIST        _pidlViewState;
02545         IOleCommandTarget   *_pctView;
02546         LPITEMIDLIST        _pidlCur;
02547         IShellView          *_psv;
02548         IShellFolder        *_psf;
02549         HWND                _hwndView;
02550         LPWSTR              _pszTitleCur;
02551         LPITEMIDLIST        _pidlPending;
02552         IShellView          *_psvPending;
02553         IShellFolder        *_psfPending;
02554         HWND                _hwndViewPending;
02555         LPWSTR              _pszTitlePending;
02556         BOOL                _fIsViewMSHTML;
02557         BOOL                _fPrivacyImpacted;
02558         CLSID               _clsidView;
02559         CLSID               _clsidViewPending;
02560         HWND                _hwndFrame;
02561     } BASEBROWSERDATAXP;
02562     typedef struct basebrowserdataxp *LPBASEBROWSERDATAXP;
02563 
02564     typedef struct basebrowserdatalh
02565     {
02566         HWND                _hwnd;
02567         ITravelLog          *_ptl;
02568         IUnknown            *_phlf;
02569         IUnknown            *_pautoWB2;
02570         IUnknown            *_pautoEDS;
02571         IShellService       *_pautoSS;
02572         int                 _eSecureLockIcon;
02573         DWORD               _fCreatingViewWindow;
02574         UINT                _uActivateState;
02575         LPITEMIDLIST        _pidlViewState;
02576         IOleCommandTarget   *_pctView;
02577         LPITEMIDLIST        _pidlCur;
02578         IShellView          *_psv;
02579         IShellFolder        *_psf;
02580         HWND                _hwndView;
02581         LPWSTR              _pszTitleCur;
02582         LPITEMIDLIST        _pidlPending;
02583         IShellView          *_psvPending;
02584         IShellFolder        *_psfPending;
02585         HWND                _hwndViewPending;
02586         LPWSTR              _pszTitlePending;
02587         BOOL                _fIsViewMSHTML;
02588         BOOL                _fPrivacyImpacted;
02589         CLSID               _clsidView;
02590         CLSID               _clsidViewPending;
02591         HWND                _hwndFrame;
02592         LONG                _lPhishingFilterStatus;
02593     } BASEBROWSERDATALH;
02594     cpp_quote("#include <poppack.h>")
02595     typedef struct basebrowserdatalh *LPBASEBROWSERDATALH;
02596 
02597     typedef BASEBROWSERDATAXP BASEBROWSERDATA;
02598 
02599     typedef const BASEBROWSERDATA *LPCBASEBROWSERDATA;
02600 
02601     typedef BASEBROWSERDATA *LPBASEBROWSERDATA;
02602 
02603 cpp_quote("#if 0")
02604 typedef HANDLE HMONITOR;
02605 cpp_quote("#endif /* 0 */")
02606 
02607     typedef struct SToolbarItem
02608     {
02609         IDockingWindow      *ptbar;
02610         BORDERWIDTHS        rcBorderTool;
02611         LPWSTR              pwszItem;
02612         BOOL                fShow;
02613         HMONITOR            hMon;
02614     } TOOLBARITEM;
02615 
02616     typedef struct SToolbarItem *LPTOOLBARITEM;
02617 
02618     HRESULT GetParentSite(
02619         [out] IOleInPlaceSite **ppipsite);
02620 
02621     HRESULT SetTitle(
02622         [in] IShellView *psv,
02623         [in] LPCWSTR pszName);
02624 
02625     HRESULT GetTitle(
02626         [in] IShellView *psv,
02627         [out] LPWSTR pszName,
02628         DWORD cchName);
02629 
02630     HRESULT GetOleObject(
02631         [out] IOleObject **ppobjv);
02632 
02633     HRESULT GetTravelLog(
02634         [out] ITravelLog **pptl);
02635 
02636     HRESULT ShowControlWindow(
02637         UINT id,
02638         BOOL fShow);
02639 
02640     HRESULT IsControlWindowShown(
02641         UINT id,
02642         [out] BOOL *pfShown);
02643 
02644     HRESULT IEGetDisplayName(
02645         [in] LPCITEMIDLIST pidl,
02646         [out] LPWSTR pwszName,
02647         UINT uFlags);
02648 
02649     HRESULT IEParseDisplayName(
02650         UINT uiCP,
02651         [in] LPCWSTR pwszPath,
02652         [out] LPCITEMIDLIST *ppidlOut);
02653 
02654     HRESULT DisplayParseError(
02655         HRESULT hres,
02656         [in] LPCWSTR pwszPath);
02657 
02658     HRESULT NavigateToPidl(
02659         [in] LPCITEMIDLIST pidl,
02660         DWORD grfHLNF);
02661 
02662     HRESULT SetNavigateState(
02663         BNSTATE bnstate);
02664 
02665     HRESULT GetNavigateState(
02666         [out] BNSTATE *pbnstate);
02667 
02668     HRESULT NotifyRedirect(
02669         [in] IShellView *psv,
02670         [in] LPCITEMIDLIST pidl,
02671         [out] BOOL *pfDidBrowse);
02672 
02673     HRESULT UpdateWindowList();
02674 
02675     HRESULT UpdateBackForwardState();
02676 
02677     HRESULT SetFlags(
02678         DWORD dwFlags,
02679         DWORD dwFlagMask);
02680 
02681     HRESULT GetFlags(
02682         [out] DWORD *pdwFlags);
02683 
02684     HRESULT CanNavigateNow();
02685 
02686     HRESULT GetPidl(
02687         [out] LPCITEMIDLIST *ppidl);
02688 
02689     HRESULT SetReferrer(
02690         [in] LPCITEMIDLIST pidl);
02691 
02692     DWORD GetBrowserIndex();
02693 
02694     HRESULT GetBrowserByIndex(
02695         DWORD dwID,
02696         [out] IUnknown **ppunk);
02697 
02698     HRESULT GetHistoryObject(
02699         [out] IOleObject **ppole,
02700         [out] IStream **pstm,
02701         [out] IBindCtx **ppbc);
02702 
02703     HRESULT SetHistoryObject(
02704         [in] IOleObject *pole,
02705         BOOL fIsLocalAnchor);
02706 
02707     HRESULT CacheOLEServer(
02708         [in] IOleObject *pole);
02709 
02710     HRESULT GetSetCodePage(
02711         [in] VARIANT *pvarIn,
02712         [out] VARIANT *pvarOut);
02713 
02714     HRESULT OnHttpEquiv(
02715         [in] IShellView *psv,
02716         BOOL fDone,
02717         [in] VARIANT *pvarargIn,
02718         [out] VARIANT *pvarargOut);
02719 
02720     HRESULT GetPalette(
02721         [out] HPALETTE *hpal);
02722 
02723     HRESULT RegisterWindow(
02724         BOOL fForceRegister,
02725         int swc);
02726 }
02727 
02728 
02729 /*****************************************************************************
02730  * IShellBrowser2 interface
02731  */
02732 [
02733     uuid(68BD21CC-438B-11D2-A560-00A0C92DBFE8),
02734     object,
02735     pointer_default(unique),
02736     local
02737 ]
02738 interface IBrowserService2 : IBrowserService
02739 {
02740     typedef struct tagFolderSetData
02741     {
02742         FOLDERSETTINGS      _fs;
02743         SHELLVIEWID         _vidRestore;
02744         DWORD               _dwViewPriority;
02745     } FOLDERSETDATA;
02746 
02747     typedef struct tagFolderSetData *LPFOLDERSETDATA;
02748 
02749     LRESULT WndProcBS(
02750         [in] HWND hwnd,
02751         UINT uMsg,
02752         WPARAM wParam,
02753         LPARAM lParam);
02754 
02755     HRESULT SetAsDefFolderSettings();
02756 
02757     HRESULT GetViewRect(
02758         [out] RECT *prc);
02759 
02760     HRESULT OnSize(
02761         WPARAM wParam);
02762 
02763     HRESULT OnCreate(
02764         [in] struct tagCREATESTRUCTW *pcs);
02765 
02766     LRESULT OnCommand(
02767         WPARAM wParam,
02768         LPARAM lParam);
02769 
02770     HRESULT OnDestroy();
02771 
02772     LRESULT OnNotify(
02773         [in] struct tagNMHDR *pnm);
02774 
02775     HRESULT OnSetFocus();
02776 
02777     HRESULT OnFrameWindowActivateBS(
02778         BOOL fActive);
02779 
02780     HRESULT ReleaseShellView();
02781 
02782     HRESULT ActivatePendingView();
02783 
02784     HRESULT CreateViewWindow(
02785         [in] IShellView *psvNew,
02786         [in] IShellView *psvOld,
02787         [in] LPRECT prcView,
02788         [out] HWND *phwnd);
02789 
02790     HRESULT CreateBrowserPropSheetExt(
02791         [in] REFIID riid,
02792         [out] void **ppv);
02793 
02794     HRESULT GetViewWindow(
02795         [out] HWND *phwndView);
02796 
02797     HRESULT GetBaseBrowserData(
02798         [out] LPCBASEBROWSERDATA *pbbd);
02799 
02800     LPBASEBROWSERDATA PutBaseBrowserData();
02801 
02802     HRESULT InitializeTravelLog(
02803         [in] ITravelLog *ptl,
02804         DWORD dw);
02805 
02806     HRESULT SetTopBrowser();
02807 
02808     HRESULT Offline(
02809         int iCmd);
02810 
02811     HRESULT AllowViewResize(
02812         BOOL f);
02813 
02814     HRESULT SetActivateState(
02815         UINT u);
02816 
02817     HRESULT UpdateSecureLockIcon(
02818         int eSecureLock);
02819 
02820     HRESULT InitializeDownloadManager();
02821 
02822     HRESULT InitializeTransitionSite();
02823 
02824     HRESULT _Initialize(
02825         [in] HWND hwnd,
02826         [in] IUnknown *pauto);
02827 
02828     HRESULT _CancelPendingNavigationAsync();
02829 
02830     HRESULT _CancelPendingView();
02831 
02832     HRESULT _MaySaveChanges();
02833 
02834     HRESULT _PauseOrResumeView(
02835         BOOL fPaused);
02836 
02837     HRESULT _DisableModeless();
02838 
02839     HRESULT _NavigateToPidl(
02840         [in] LPCITEMIDLIST pidl,
02841         DWORD grfHLNF,
02842         DWORD dwFlags);
02843 
02844     HRESULT _TryShell2Rename(
02845         [in] IShellView *psv,
02846         [in] LPCITEMIDLIST pidlNew);
02847 
02848     HRESULT _SwitchActivationNow();
02849 
02850     HRESULT _ExecChildren(
02851         [in] IUnknown *punkBar,
02852         BOOL fBroadcast,
02853         [in] const GUID *pguidCmdGroup,
02854         DWORD nCmdID,
02855         DWORD nCmdexecopt,
02856         [in] VARIANTARG *pvarargIn,
02857         [in, out] VARIANTARG *pvarargOut);
02858 
02859     HRESULT _SendChildren(
02860         [in] HWND hwndBar,
02861         BOOL fBroadcast,
02862         UINT uMsg,
02863         WPARAM wParam,
02864         LPARAM lParam);
02865 
02866     HRESULT GetFolderSetData(
02867         [out] struct tagFolderSetData *pfsd);
02868 
02869     HRESULT _OnFocusChange(
02870         UINT itb);
02871 
02872     HRESULT v_ShowHideChildWindows(
02873         BOOL fChildOnly);
02874 
02875     UINT _get_itbLastFocus();
02876 
02877     HRESULT _put_itbLastFocus(
02878         UINT itbLastFocus);
02879 
02880     HRESULT _UIActivateView(
02881         UINT uState);
02882 
02883     HRESULT _GetViewBorderRect(
02884         [out] RECT *prc);
02885 
02886     HRESULT _UpdateViewRectSize();
02887 
02888     HRESULT _ResizeNextBorder(
02889         UINT itb);
02890 
02891     HRESULT _ResizeView();
02892 
02893     HRESULT _GetEffectiveClientArea(
02894         [out] LPRECT lprectBorder,
02895         [in] HMONITOR hmon);
02896 
02897     IStream *v_GetViewStream(
02898         [in] LPCITEMIDLIST pidl,
02899         DWORD grfMode,
02900         [in] LPCWSTR pwszName);
02901 
02902     LRESULT ForwardViewMsg(
02903         UINT uMsg,
02904         WPARAM wParam,
02905         LPARAM lParam);
02906 
02907     HRESULT SetAcceleratorMenu(
02908         [in] HACCEL hacc);
02909 
02910     int _GetToolbarCount();
02911 
02912     LPTOOLBARITEM _GetToolbarItem(
02913         int itb);
02914 
02915     HRESULT _SaveToolbars(
02916         [in] IStream *pstm);
02917 
02918     HRESULT _LoadToolbars(
02919         [in] IStream *pstm);
02920 
02921     HRESULT _CloseAndReleaseToolbars(
02922         BOOL fClose);
02923 
02924     HRESULT v_MayGetNextToolbarFocus(
02925         [in] LPMSG lpMsg,
02926         UINT itbNext,
02927         int citb,
02928         [out] LPTOOLBARITEM *pptbi,
02929         [out] HWND *phwnd);
02930 
02931     HRESULT _ResizeNextBorderHelper(
02932         UINT itb,
02933         BOOL bUseHmonitor);
02934 
02935     UINT _FindTBar(
02936         [in] IUnknown *punkSrc);
02937 
02938     HRESULT _SetFocus(
02939         [in] LPTOOLBARITEM ptbi,
02940         [in] HWND hwnd,
02941         [in] LPMSG lpMsg);
02942 
02943     HRESULT v_MayTranslateAccelerator(
02944         [in] MSG *pmsg);
02945 
02946     HRESULT _GetBorderDWHelper(
02947         [in] IUnknown *punkSrc,
02948         [out] LPRECT lprectBorder,
02949         BOOL bUseHmonitor);
02950 
02951     HRESULT v_CheckZoneCrossing(
02952         [in] LPCITEMIDLIST pidl);
02953 }
02954 
02955 
02956 /*****************************************************************************
02957  * IShellBrowser3 interface
02958  */
02959 [
02960     uuid(27D7CE21-762D-48F3-86F3-40E2FD3749C4),
02961     object,
02962     pointer_default(unique),
02963     local
02964 ]
02965 interface IBrowserService3 : IBrowserService2
02966 {
02967     HRESULT _PositionViewWindow(
02968         [in] HWND hwnd,
02969         [in] LPRECT prc);
02970 
02971     HRESULT IEParseDisplayNameEx(
02972         UINT uiCP,
02973         [in] LPCWSTR pwszPath,
02974         DWORD dwFlags,
02975         [out] LPITEMIDLIST *ppidlOut);
02976 }
02977 
02978 
02979 /*****************************************************************************
02980  * IShellBrowser4 interface
02981  */
02982 [
02983     uuid(639f1bff-e135-4096-abd8-e0f504d649a4),
02984     object,
02985     pointer_default(unique),
02986     local
02987 ]
02988 interface IBrowserService4 : IBrowserService3
02989 {
02990     HRESULT ActivateView(
02991         BOOL fPendingView);
02992 
02993     HRESULT SaveViewState();
02994 
02995     HRESULT _ResizeAllBorders();
02996 }
02997 
02998 cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60)")
02999 
03000 /*****************************************************************************
03001  * ITrackShellMenu interface
03002  */
03003 [
03004     uuid(8278F932-2A3E-11d2-838F-00C04FD918D0),
03005     object,
03006     pointer_default(unique),
03007     local
03008 ]
03009 interface ITrackShellMenu : IShellMenu
03010 {
03011     HRESULT SetObscured( 
03012         [in] HWND hwndTB,
03013         [in] IUnknown *punkBand,
03014         DWORD dwSMSetFlags);
03015 
03016     HRESULT Popup( 
03017         [in] HWND hwnd,
03018         [in] POINTL *ppt,
03019         [in] RECTL *prcExclude,
03020         MP_POPUPFLAGS dwFlags);
03021 };
03022 
03023 cpp_quote("#endif /* _WIN32_IE_IE60 */")
03024 
03025 cpp_quote("#ifdef MIDL_PASS")
03026 typedef IUnknown* HIMAGELIST;
03027 cpp_quote("#endif")
03028 
03029 typedef [v1_enum] enum THUMBBUTTONFLAGS {
03030     THBF_ENABLED         = 0x0000,
03031     THBF_DISABLED        = 0x0001,
03032     THBF_DISMISSONCLICK  = 0x0002,
03033     THBF_NOBACKGROUND    = 0x0004,
03034     THBF_HIDDEN          = 0x0008,
03035     THBF_NONINTERACTIVE  = 0x0010
03036 } THUMBBUTTONFLAGS;
03037 
03038 cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONFLAGS)")
03039 
03040 typedef [v1_enum] enum THUMBBUTTONMASK {
03041     THB_BITMAP   = 0x0001,
03042     THB_ICON     = 0x0002,
03043     THB_TOOLTIP  = 0x0004,
03044     THB_FLAGS    = 0x0008
03045 } THUMBBUTTONMASK;
03046 
03047 cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONMASK)")
03048 
03049 cpp_quote("#include <pshpack8.h>")
03050 typedef struct THUMBBUTTON {
03051     THUMBBUTTONMASK dwMask;
03052     UINT iId;
03053     UINT iBitmap;
03054     HICON hIcon;
03055     WCHAR szTip[260];
03056     THUMBBUTTONFLAGS dwFlags;
03057 } THUMBBUTTON, *LPTHUMBBUTTON;
03058 cpp_quote("#include <poppack.h>")
03059 
03060 /*****************************************************************************
03061  *    ITaskbarList2 interface
03062  */
03063 [
03064     object,
03065     uuid(602D4995-B13A-429B-A66E-1935E44F4317),
03066     pointer_default(unique)
03067 ]
03068 interface ITaskbarList2 : ITaskbarList
03069 {
03070     HRESULT MarkFullscreenWindow(
03071         [in] HWND hwnd,
03072         [in] BOOL fullscreen);
03073 }
03074 
03075 [
03076     uuid(ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf),
03077     object
03078 ]
03079 interface ITaskbarList3 : ITaskbarList2
03080 {
03081     typedef [v1_enum] enum TBPFLAG {
03082         TBPF_NOPROGRESS     = 0x0000,
03083         TBPF_INDETERMINATE  = 0x0001,
03084         TBPF_NORMAL         = 0x0002,
03085         TBPF_ERROR          = 0x0004,
03086         TBPF_PAUSED         = 0x0008
03087     } TBPFLAG;
03088 
03089     cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(TBPFLAG)")
03090 
03091     HRESULT SetProgressValue(
03092             [in] HWND hwnd,
03093             [in] ULONGLONG ullCompleted,
03094             [in] ULONGLONG ullTotal);
03095 
03096     HRESULT SetProgressState(
03097             [in] HWND hwnd,
03098             [in] TBPFLAG tbpFlags);
03099 
03100     HRESULT RegisterTab(
03101             [in] HWND hwndTab,
03102             [in] HWND hwndMDI);
03103 
03104     HRESULT UnregisterTab([in] HWND hwndTab);
03105 
03106     HRESULT SetTabOrder(
03107             [in] HWND hwndTab,
03108             [in] HWND hwndInsertBefore);
03109 
03110     HRESULT SetTabActive(
03111             [in] HWND hwndTab,
03112             [in] HWND hwndMDI,
03113             [in] DWORD dwReserved);
03114 
03115     HRESULT ThumbBarAddButtons(
03116             [in] HWND hwnd,
03117             [in] UINT cButtons,
03118             [in, size_is(cButtons)] LPTHUMBBUTTON pButton);
03119 
03120     HRESULT ThumbBarUpdateButtons(
03121             [in] HWND hwnd,
03122             [in] UINT cButtons,
03123             [in, size_is(cButtons)] LPTHUMBBUTTON pButton);
03124 
03125     HRESULT ThumbBarSetImageList(
03126             [in] HWND hwnd,
03127             [in] HIMAGELIST himl);
03128 
03129     HRESULT SetOverlayIcon(
03130             [in] HWND hwnd,
03131             [in] HICON hIcon,
03132             [in, unique, string] LPCWSTR pszDescription);
03133 
03134     HRESULT SetThumbnailTooltip(
03135             [in] HWND hwnd,
03136             [in, unique, string] LPCWSTR pszTip);
03137 
03138     HRESULT SetThumbnailClip(
03139             [in] HWND hwnd,
03140             [in] RECT *prcClip);
03141 }
03142 
03143 [
03144     uuid(c43dc798-95d1-4bea-9030-bb99e2983a1a),
03145     object
03146 ]
03147 interface ITaskbarList4 : ITaskbarList3
03148 {
03149     typedef [v1_enum] enum STPFLAG {
03150         STPF_NONE                       = 0x0000,
03151         STPF_USEAPPTHUMBNAILALWAYS      = 0x0001,
03152         STPF_USEAPPTHUMBNAILWHENACTIVE  = 0x0002,
03153         STPF_USEAPPPEEKALWAYS           = 0x0004,
03154         STPF_USEAPPPEEKWHENACTIVE       = 0x0008
03155     } STPFLAG;
03156 
03157     cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(STPFLAG)")
03158 
03159     HRESULT SetTabProperties(
03160             [in] HWND hwndTab,
03161             [in] STPFLAG stpFlags);
03162 }
03163 
03164 /*****************************************************************************
03165  *    IAutoCompleteDropDown interface
03166  */
03167 [
03168     object,
03169     uuid(3CD141F4-3C6A-11d2-BCAA-00C04FD929DB),
03170     pointer_default(unique)
03171 ]
03172 interface IAutoCompleteDropDown : IUnknown
03173 {
03174 cpp_quote("#define ACDD_VISIBLE   0x0001")
03175 
03176     HRESULT GetDropDownStatus(
03177         [out] DWORD *pdwFlags,
03178         [out, string] LPWSTR *ppwszString);
03179 
03180     HRESULT ResetEnumerator();
03181 }
03182 
03183 /*****************************************************************************
03184  * IExplorerBrowserEvents interface
03185  */
03186 [
03187  object,
03188  uuid(361BBDC7-E6EE-4E13-BE58-58E2240C810F)
03189 ]
03190 interface IExplorerBrowserEvents : IUnknown
03191 {
03192     HRESULT OnNavigationPending(
03193         [in] PCIDLIST_ABSOLUTE pidlFolder);
03194 
03195     HRESULT OnViewCreated(
03196         [in] IShellView *psv);
03197 
03198     HRESULT OnNavigationComplete(
03199         [in] PCIDLIST_ABSOLUTE pidlFolder);
03200 
03201     HRESULT OnNavigationFailed(
03202         [in] PCIDLIST_ABSOLUTE pidlFolder);
03203 }
03204 
03205 typedef GUID EXPLORERPANE;
03206 typedef EXPLORERPANE *REFEXPLORERPANE;
03207 
03208 cpp_quote("#define SID_ExplorerPaneVisibility IID_IExplorerPaneVisibility")
03209 
03210 /*****************************************************************************
03211  * IExplorerPaneVisibility interface
03212  */
03213 [
03214  object,
03215  uuid(E07010EC-BC17-44C0-97B0-46C7C95B9EDC)
03216 ]
03217 interface IExplorerPaneVisibility : IUnknown
03218 {
03219     typedef enum tagEXPLORERPANESTATE {
03220         EPS_DONTCARE     = 0x0,
03221         EPS_DEFAULT_ON   = 0x1,
03222         EPS_DEFAULT_OFF  = 0x2,
03223         EPS_STATE_MASK   = 0xffff,
03224         EPS_INITIALSTATE = 0x10000,
03225         EPS_FORCE        = 0x20000
03226     } EXPLORERPANESTATE;
03227 
03228     HRESULT GetPaneState(
03229         [in] REFEXPLORERPANE ep,
03230         [out] EXPLORERPANESTATE *peps);
03231 }
03232 
03233 typedef [v1_enum] enum tagEXPLORER_BROWSER_FILL_FLAGS {
03234     EBF_NONE                     = 0,
03235     EBF_SELECTFROMDATAOBJECT     = 0x100,
03236     EBF_NODROPTARGET             = 0x200
03237 } EXPLORER_BROWSER_FILL_FLAGS;
03238 
03239 typedef [v1_enum] enum tagEXPLORER_BROWSER_OPTIONS {
03240     EBO_NONE               = 0x00,
03241     EBO_NAVIGATEONCE       = 0x01,
03242     EBO_SHOWFRAMES         = 0x02,
03243     EBO_ALWAYSNAVIGATE     = 0x04,
03244     EBO_NOTRAVELLOG        = 0x08,
03245     EBO_NOWRAPPERWINDOW    = 0x10,
03246     EBO_HTMLSHAREPOINTVIEW = 0x20
03247 } EXPLORER_BROWSER_OPTIONS;
03248 
03249 cpp_quote("#define SID_SExplorerBrowserFrame IID_ICommDlgBrowser")
03250 
03251 /*****************************************************************************
03252  * IExplorerBrowser interface
03253  */
03254 [
03255  object,
03256  uuid(DFD3B6B5-C10C-4BE9-85F6-A66969F402F6),
03257  pointer_default(unique)
03258 ]
03259 interface IExplorerBrowser : IUnknown
03260 {
03261 
03262     [local] HRESULT Initialize(
03263         [in] HWND hwndParent,
03264         [in] const RECT *prc,
03265         [in, unique] const FOLDERSETTINGS *pfs);
03266 
03267     HRESULT Destroy();
03268 
03269     [local] HRESULT SetRect(
03270         [in,out,unique] HDWP *phdwp,
03271         [in] RECT rcBrowser);
03272 
03273     HRESULT SetPropertyBag(
03274         [in, string] LPCWSTR pszPropertyBag);
03275 
03276     HRESULT SetEmptyText(
03277         [in, string] LPCWSTR pszEmptyText);
03278 
03279     HRESULT SetFolderSettings(
03280         [in] const FOLDERSETTINGS *pfs);
03281 
03282     HRESULT Advise(
03283         [in] IExplorerBrowserEvents *psbe,
03284         [out] DWORD *pdwCookie);
03285 
03286     HRESULT Unadvise(
03287         [in] DWORD dwCookie);
03288 
03289     HRESULT SetOptions(
03290         [in] EXPLORER_BROWSER_OPTIONS dwFlag);
03291 
03292     HRESULT GetOptions(
03293         [out] EXPLORER_BROWSER_OPTIONS *pdwFlag);
03294 
03295     HRESULT BrowseToIDList(
03296         [in] PCUIDLIST_RELATIVE pidl,
03297         [in] UINT uFlags);
03298 
03299     HRESULT BrowseToObject(
03300         [in] IUnknown *punk,
03301         [in] UINT uFlags);
03302 
03303     HRESULT FillFromObject(
03304         [in] IUnknown *punk,
03305         [in] EXPLORER_BROWSER_FILL_FLAGS dwFlags);
03306 
03307     HRESULT RemoveAll();
03308 
03309     HRESULT GetCurrentView(
03310         [in] REFIID riid,
03311         [out, iid_is(riid)] void **ppv);
03312 }
03313 
03314 /*****************************************************************************
03315  * INameSpaceTreeControl interface
03316  */
03317 [
03318  object,
03319  uuid(028212A3-B627-47E9-8856-C14265554E4F)
03320 ]
03321 interface INameSpaceTreeControl : IUnknown
03322 {
03323     [v1_enum] enum _NSTCSTYLE {
03324         NSTCS_HASEXPANDOS                 = 0x00000001,
03325         NSTCS_HASLINES                    = 0x00000002,
03326         NSTCS_SINGLECLICKEXPAND           = 0x00000004,
03327         NSTCS_FULLROWSELECT               = 0x00000008,
03328         NSTCS_SPRINGEXPAND                = 0x00000010,
03329         NSTCS_HORIZONTALSCROLL            = 0x00000020,
03330         NSTCS_ROOTHASEXPANDO              = 0x00000040,
03331         NSTCS_SHOWSELECTIONALWAYS         = 0x00000080,
03332         NSTCS_NOINFOTIP                   = 0x00000200,
03333         NSTCS_EVENHEIGHT                  = 0x00000400,
03334         NSTCS_NOREPLACEOPEN               = 0x00000800,
03335         NSTCS_DISABLEDRAGDROP             = 0x00001000,
03336         NSTCS_NOORDERSTREAM               = 0x00002000,
03337         NSTCS_RICHTOOLTIP                 = 0x00004000,
03338         NSTCS_BORDER                      = 0x00008000,
03339         NSTCS_NOEDITLABELS                = 0x00010000,
03340         NSTCS_TABSTOP                     = 0x00020000,
03341         NSTCS_FAVORITESMODE               = 0x00080000,
03342         NSTCS_AUTOHSCROLL                 = 0x00100000,
03343         NSTCS_FADEINOUTEXPANDOS           = 0x00200000,
03344         NSTCS_EMPTYTEXT                   = 0x00400000,
03345         NSTCS_CHECKBOXES                  = 0x00800000,
03346         NSTCS_PARTIALCHECKBOXES           = 0x01000000,
03347         NSTCS_EXCLUSIONCHECKBOXES         = 0x02000000,
03348         NSTCS_DIMMEDCHECKBOXES            = 0x04000000,
03349         NSTCS_NOINDENTCHECKS              = 0x08000000,
03350         NSTCS_ALLOWJUNCTIONS              = 0x10000000,
03351         NSTCS_SHOWTABSBUTTON              = 0x20000000,
03352         NSTCS_SHOWDELETEBUTTON            = 0x40000000,
03353         NSTCS_SHOWREFRESHBUTTON      = (int)0x80000000
03354     };
03355     typedef DWORD NSTCSTYLE;
03356 
03357     [v1_enum] enum _NSTCROOTSTYLE {
03358         NSTCRS_VISIBLE                    = 0x0000,
03359         NSTCRS_HIDDEN                     = 0x0001,
03360         NSTCRS_EXPANDED                   = 0x0002
03361     };
03362     typedef DWORD NSTCROOTSTYLE;
03363 
03364     [v1_enum] enum _NSTCITEMSTATE {
03365         NSTCIS_NONE                       = 0x0000,
03366         NSTCIS_SELECTED                   = 0x0001,
03367         NSTCIS_EXPANDED                   = 0x0002,
03368         NSTCIS_BOLD                       = 0x0004,
03369         NSTCIS_DISABLED                   = 0x0008,
03370         NSTCIS_SELECTEDNOEXPAND           = 0x0010
03371     };
03372     typedef DWORD NSTCITEMSTATE;
03373 
03374     typedef [v1_enum] enum NSTCGNI {
03375         NSTCGNI_NEXT                      = 0,
03376         NSTCGNI_NEXTVISIBLE               = 1,
03377         NSTCGNI_PREV                      = 2,
03378         NSTCGNI_PREVVISIBLE               = 3,
03379         NSTCGNI_PARENT                    = 4,
03380         NSTCGNI_CHILD                     = 5,
03381         NSTCGNI_FIRSTVISIBLE              = 6,
03382         NSTCGNI_LASTVISIBLE               = 7
03383     } NSTCGNI;
03384 
03385     HRESULT Initialize(
03386         [in] HWND hwndParent,
03387         [in, unique] RECT *prc,
03388         [in] NSTCSTYLE nstcsFlags);
03389 
03390     HRESULT TreeAdvise(
03391         [in] IUnknown *punk,
03392         [out] DWORD *pdwCookie);
03393 
03394     HRESULT TreeUnadvise(
03395         [in] DWORD dwCookie);
03396 
03397     HRESULT AppendRoot(
03398         [in] IShellItem *psiRoot,
03399         [in] SHCONTF grfEnumFlags,
03400         [in] NSTCROOTSTYLE grfRootStyle,
03401         [in, unique] IShellItemFilter *pif);
03402 
03403     HRESULT InsertRoot(
03404         [in] int iIndex,
03405         [in] IShellItem *psiRoot,
03406         [in] SHCONTF grfEnumFlags,
03407         [in] NSTCROOTSTYLE grfRootStyle,
03408         [in, unique] IShellItemFilter *pif);
03409 
03410     HRESULT RemoveRoot(
03411         [in] IShellItem *psiRoot);
03412 
03413     HRESULT RemoveAllRoots();
03414 
03415     HRESULT GetRootItems(
03416         [out] IShellItemArray **ppsiaRootItems);
03417 
03418     HRESULT SetItemState(
03419         [in] IShellItem *psi,
03420         [in] NSTCITEMSTATE nstcisMask,
03421         [in] NSTCITEMSTATE nstcisFlags);
03422 
03423     HRESULT GetItemState(
03424         [in] IShellItem *psi,
03425         [in] NSTCITEMSTATE nstcismask,
03426         [out] NSTCITEMSTATE *pnstcisFlags);
03427 
03428     HRESULT GetSelectedItems(
03429         [out] IShellItemArray **psiaItems);
03430 
03431     HRESULT GetItemCustomState(
03432         [in] IShellItem *psi,
03433         [out] int *piStateNumber);
03434 
03435     HRESULT SetItemCustomState(
03436         [in] IShellItem *psi,
03437         [in] int iStateNumber);
03438 
03439     HRESULT EnsureItemVisible(
03440         [in] IShellItem *psi);
03441 
03442     HRESULT SetTheme(
03443         [in, string] LPCWSTR pszTheme);
03444 
03445     HRESULT GetNextItem(
03446         [in, unique] IShellItem *psi,
03447         [in] NSTCGNI nstcgi,
03448         [out] IShellItem **ppsiNext);
03449 
03450     HRESULT HitTest(
03451         [in] POINT *ppt,
03452         [out] IShellItem **ppsiOut);
03453 
03454     HRESULT GetItemRect(
03455         [in] IShellItem *psi,
03456         [out] RECT *prect);
03457 
03458     HRESULT CollapseAll();
03459 }
03460 
03461 /*****************************************************************************
03462  * INameSpaceTreeControl2 interface
03463  */
03464 [
03465  object,
03466  uuid(7CC7AED8-290E-49BC-8945-C1401CC9306C)
03467 ]
03468 interface INameSpaceTreeControl2 : INameSpaceTreeControl
03469 {
03470     typedef [v1_enum] enum NSTCSTYLE2 {
03471         NSTCS2_DEFAULT                     = 0x00,
03472         NSTCS2_INTERRUPTNOTIFICATIONS      = 0x01,
03473         NSTCS2_SHOWNULLSPACEMENU           = 0x02,
03474         NSTCS2_DISPLAYPADDING              = 0x04,
03475         NSTCS2_DISPLAYPINNEDONLY           = 0x08,
03476         NTSCS2_NOSINGLETONAUTOEXPAND       = 0x10,  /* The apparent typo here is   */
03477         NTSCS2_NEVERINSERTNONENUMERATED    = 0x20   /* present also in the Win SDK */
03478     } NSTCSTYLE2;
03479     cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(NSTCSTYLE2)")
03480 
03481     HRESULT SetControlStyle(
03482         [in] NSTCSTYLE nstcsMask,
03483         [in] NSTCSTYLE nstcsStyle);
03484 
03485     HRESULT GetControlStyle(
03486         [in] NSTCSTYLE nstcsMask,
03487         [out] NSTCSTYLE *pnstcsStyle);
03488 
03489     HRESULT SetControlStyle2(
03490         [in] NSTCSTYLE2 nstcsMask,
03491         [in] NSTCSTYLE2 nstcsStyle);
03492 
03493     HRESULT GetControlStyle2(
03494         [in] NSTCSTYLE2 nstcsMask,
03495         [out] NSTCSTYLE2 *pnstcsStyle);
03496 }
03497 
03498 /*****************************************************************************
03499  * INameSpaceTreeControlEvents interface
03500  */
03501 
03502 [
03503  object,
03504  uuid(93D77985-B3D8-4484-8318-672CDDA002CE),
03505  local
03506 ]
03507 interface INameSpaceTreeControlEvents : IUnknown
03508 {
03509     [v1_enum] enum _NSTCEHITTEST {
03510         NSTCEHT_NOWHERE                    = 0x0001,
03511         NSTCEHT_ONITEMICON                 = 0x0002,
03512         NSTCEHT_ONITEMLABEL                = 0x0004,
03513         NSTCEHT_ONITEMIDENT                = 0x0008,
03514         NSTCEHT_ONITEMBUTTON               = 0x0010,
03515         NSTCEHT_ONITEMRIGHT                = 0x0020,
03516         NSTCEHT_ONITEMSTATEICON            = 0x0040,
03517         NSTCEHT_ONITEM                     = 0x0046,
03518         NSTCEHT_ONITEMTABBUTTON            = 0x1000
03519     };
03520     typedef DWORD NSTCEHITTEST;
03521 
03522     [v1_enum] enum _NSTCECLICKTYPE {
03523         NSTCECT_LBUTTON                    = 0x1,
03524         NSTCECT_MBUTTON                    = 0x2,
03525         NSTCECT_RBUTTON                    = 0x3,
03526         NSTCECT_BUTTON                     = 0x3,
03527         NSTCECT_DBLCLICK                   = 0x4
03528     };
03529     typedef DWORD NSTCECLICKTYPE;
03530 
03531     HRESULT OnItemClick(
03532         [in] IShellItem *psi,
03533         [in] NSTCEHITTEST nstceHitTest,
03534         [in] NSTCECLICKTYPE nstceClickType);
03535 
03536     HRESULT OnPropertyItemCommit(
03537         [in] IShellItem *psi);
03538 
03539     HRESULT OnItemStateChanging(
03540         [in] IShellItem *psi,
03541         [in] NSTCITEMSTATE nstcisMask,
03542         [in] NSTCITEMSTATE nstcisState);
03543 
03544     HRESULT OnItemStateChanged(
03545         [in] IShellItem *psi,
03546         [in] NSTCITEMSTATE nstcisMask,
03547         [in] NSTCITEMSTATE nstcisState);
03548 
03549     HRESULT OnSelectionChanged(
03550         [in] IShellItemArray *psiaSelection);
03551 
03552     HRESULT OnKeyboardInput(
03553         [in] UINT uMsg,
03554         [in] WPARAM wParam,
03555         [in] LPARAM lParam);
03556 
03557     HRESULT OnBeforeExpand(
03558         [in] IShellItem *psi);
03559 
03560     HRESULT OnAfterExpand(
03561         [in] IShellItem *psi);
03562 
03563     HRESULT OnBeginLabelEdit(
03564         [in] IShellItem *psi);
03565 
03566     HRESULT OnEndLabelEdit(
03567         [in] IShellItem *psi);
03568 
03569     HRESULT OnGetToolTip(
03570         [in] IShellItem *psi,
03571         [out, string, size_is(cchTip)] LPWSTR pszTip,
03572         [in] int cchTip);
03573 
03574     HRESULT OnBeforeItemDelete(
03575         [in] IShellItem *psi);
03576 
03577     HRESULT OnItemAdded(
03578         [in] IShellItem *psi,
03579         [in] BOOL fIsRoot);
03580 
03581     HRESULT OnItemDeleted(
03582         [in] IShellItem *psi,
03583         [in] BOOL fIsRoot);
03584 
03585     HRESULT OnBeforeContextMenu(
03586         [in, unique] IShellItem *psi,
03587         [in] REFIID riid,
03588         [out, iid_is(riid)] void **ppv);
03589 
03590     HRESULT OnAfterContextMenu(
03591         [in] IShellItem *psi,
03592         [in] IContextMenu *pcmIn,
03593         [in] REFIID riid,
03594         [out, iid_is(riid)] void **ppv);
03595 
03596     HRESULT OnBeforeStateImageChange(
03597         [in] IShellItem *psi);
03598 
03599     HRESULT OnGetDefaultIconIndex(
03600         [in] IShellItem *psi,
03601         [out] int *piDefaultIcon,
03602         [out] int *piOpenIcon);
03603 }
03604 
03605 /*****************************************************************************
03606  * INameSpaceTreeControlCustomDraw interface
03607  */
03608 [
03609  object,
03610  uuid(2D3BA758-33EE-42D5-BB7B-5F3431D86C78),
03611  local
03612 ]
03613 
03614 interface INameSpaceTreeControlCustomDraw : IUnknown
03615 {
03616     typedef struct NSTCCUSTOMDRAW
03617     {
03618         IShellItem *psi;
03619         UINT uItemState;
03620         NSTCITEMSTATE nstcis;
03621         LPCWSTR pszText;
03622         int iImage;
03623         HIMAGELIST himl;
03624         int iLevel;
03625         int iIndent;
03626     } NSTCCUSTOMDRAW;
03627 
03628     HRESULT PrePaint(
03629         [in] HDC hdc,
03630         [in] RECT *prc,
03631         [out] LRESULT *plres);
03632 
03633     HRESULT PostPaint(
03634         [in] HDC hdc,
03635         [in] RECT *prc);
03636 
03637     HRESULT ItemPrePaint(
03638         [in] HDC hdc,
03639         [in] RECT *prc,
03640         [in, out] COLORREF *pclrText,
03641         [in, out] COLORREF *pclrTextBk,
03642         [out] LRESULT *plres);
03643 
03644     HRESULT ItemPostPaint(
03645         [in] HDC hdc,
03646         [in] RECT *prc,
03647         [in] NSTCCUSTOMDRAW *pnstccdItem);
03648 }
03649 
03650 /*****************************************************************************
03651  * INameSpaceTreeControlDropHandler interface
03652  */
03653 [
03654  object,
03655  uuid(F9C665D6-C2F2-4C19-BF33-8322D7352F51),
03656  local
03657 ]
03658 interface INameSpaceTreeControlDropHandler : IUnknown
03659 {
03660     HRESULT OnDragEnter(
03661         [in, unique] IShellItem *psiOver,
03662         [in] IShellItemArray *psiaData,
03663         [in] BOOL fOutsideSource,
03664         [in] DWORD grfKeyState,
03665         [in, out] DWORD *pdwEffect);
03666 
03667     HRESULT OnDragOver(
03668         [in, unique] IShellItem *psiOver,
03669         [in] IShellItemArray *psiaData,
03670         [in] DWORD grfKeyState,
03671         [in, out] DWORD *pdwEffect);
03672 
03673     HRESULT OnDragPosition(
03674         [in, unique] IShellItem *psiOver,
03675         [in] IShellItemArray *psiaData,
03676         [in] int iNewPosition,
03677         [in] int iOldPosition);
03678 
03679     HRESULT OnDrop(
03680         [in, unique] IShellItem *psiOver,
03681         [in] IShellItemArray *psiaData,
03682         [in] int iPosition,
03683         [in] DWORD grfKeyState,
03684         [in, out] DWORD *pdwEffect);
03685 
03686     HRESULT OnDropPosition(
03687         [in, unique] IShellItem *psiOver,
03688         [in] IShellItemArray *psiaData,
03689         [in] int iNewPosition,
03690         [in] int iOldPosition);
03691 
03692     HRESULT OnDragLeave(
03693         [in, unique] IShellItem *psiOver);
03694 }
03695 cpp_quote("#define NSTCDHPOS_ONTOP -1")
03696 
03697 interface IFileDialog;
03698 
03699 typedef [v1_enum] enum FDE_OVERWRITE_RESPONSE
03700 {
03701     FDEOR_DEFAULT  = 0,
03702     FDEOR_ACCCEP   = 1,
03703     FDEOR_REFUSE   = 2
03704 } FDE_OVERWRITE_RESPONSE;
03705 
03706 typedef [v1_enum] enum FDE_SHAREVIOLATION_RESPONSE
03707 {
03708     FDESVR_DEFAULT = 0,
03709     FDESVR_ACCEPT  = 1,
03710     FDESVR_REFUSE  = 2
03711 } FDE_SHAREVIOLATION_RESPONSE;
03712 
03713 /*****************************************************************************
03714  * IFileDialogEvents interface
03715  */
03716 [
03717  object,
03718  uuid(973510DB-7D7F-452B-8975-74A85828D354),
03719  pointer_default(unique)
03720 ]
03721 interface IFileDialogEvents : IUnknown
03722 {
03723     HRESULT OnFileOk(
03724         [in] IFileDialog *pfd);
03725 
03726     HRESULT OnFolderChanging(
03727         [in] IFileDialog *pfd,
03728         [in] IShellItem *psiFolder);
03729 
03730     HRESULT OnFolderChange(
03731         [in] IFileDialog *pfd);
03732 
03733     HRESULT OnSelectionChange(
03734         [in] IFileDialog *pfd);
03735 
03736     HRESULT OnShareViolation(
03737         [in] IFileDialog *pfd,
03738         [in] IShellItem *psi,
03739         [out] FDE_SHAREVIOLATION_RESPONSE *pResponse);
03740 
03741     HRESULT OnTypeChange(
03742         [in] IFileDialog *pfd);
03743 
03744     HRESULT OnOverwrite(
03745         [in] IFileDialog *pfd,
03746         [in] IShellItem *psi,
03747         [out] FDE_OVERWRITE_RESPONSE *pResponse);
03748 }
03749 
03750 /*****************************************************************************
03751  * IModalWindow interface
03752  */
03753 [
03754  object,
03755  uuid(B4DB1657-70D7-485E-8E3E-6FCB5A5C1802),
03756  pointer_default(unique)
03757 ]
03758 interface IModalWindow : IUnknown
03759 {
03760     [local]
03761     HRESULT Show(
03762         [in, unique, annotation("__in_opt")] HWND hwndOwner);
03763 
03764     [call_as(Show)]
03765     HRESULT RemoteShow(
03766         [in, unique] HWND hwndOwner);
03767 }
03768 
03769 typedef [v1_enum] enum FDAP
03770 {
03771     FDAP_BOTTOM    = 0,
03772     FDAP_TOP       = 1
03773 } FDAP;
03774 
03775 /*****************************************************************************
03776  * IFileDialog interface
03777  */
03778 [
03779  object,
03780  uuid(42F85136-DB7E-439C-85F1-E4075D135FC8),
03781  pointer_default(unique)
03782 ]
03783 interface IFileDialog : IModalWindow
03784 {
03785     [v1_enum] enum _FILEOPENDIALOGOPTIONS
03786     {
03787         FOS_OVERWRITEPROMPT     = 0x00000002,
03788         FOS_STRICTFILETYPES     = 0x00000004,
03789         FOS_NOCHANGEDIR         = 0x00000008,
03790         FOS_PICKFOLDERS         = 0x00000020,
03791         FOS_FORCEFILESYSTEM     = 0x00000040,
03792         FOS_ALLNONSTORAGEITEMS  = 0x00000080,
03793         FOS_NOVALIDATE          = 0x00000100,
03794         FOS_ALLOWMULTISELECT    = 0x00000200,
03795         FOS_PATHMUSTEXIST       = 0x00000800,
03796         FOS_FILEMUSTEXIST       = 0x00001000,
03797         FOS_CREATEPROMPT        = 0x00002000,
03798         FOS_SHAREAWARE          = 0x00004000,
03799         FOS_NOREADONLYRETURN    = 0x00008000,
03800         FOS_NOTESTFILECREATE    = 0x00010000,
03801         FOS_HIDEMRUPLACES       = 0x00020000,
03802         FOS_HIDEPINNEDPLACES    = 0x00040000,
03803         FOS_NODEREFERENCELINKS  = 0x00100000,
03804         FOS_DONTADDTORECENT     = 0x02000000,
03805         FOS_FORCESHOWHIDDEN     = 0x10000000,
03806         FOS_DEFAULTNOMINIMODE   = 0x20000000,
03807         FOS_FORCEPREVIEWPANEON  = 0x40000000
03808     };
03809     typedef DWORD FILEOPENDIALOGOPTIONS;
03810 
03811     HRESULT SetFileTypes(
03812         [in] UINT cFileTypes,
03813         [in, size_is(cFileTypes)] const COMDLG_FILTERSPEC *rgFilterSpec);
03814 
03815     HRESULT SetFileTypeIndex(
03816         [in] UINT iFileType);
03817 
03818     HRESULT GetFileTypeIndex(
03819         [out] UINT *piFileType);
03820 
03821     HRESULT Advise(
03822         [in] IFileDialogEvents *pfde,
03823         [out] DWORD *pdwCookie);
03824 
03825     HRESULT Unadvise(
03826         [in] DWORD dwCookie);
03827 
03828     HRESULT SetOptions(
03829         [in] FILEOPENDIALOGOPTIONS fos);
03830 
03831     HRESULT GetOptions(
03832         [in] FILEOPENDIALOGOPTIONS *pfos);
03833 
03834     HRESULT SetDefaultFolder(
03835         [in] IShellItem *psi);
03836 
03837     HRESULT SetFolder(
03838         [in] IShellItem *psi);
03839 
03840     HRESULT GetFolder(
03841         [out] IShellItem **ppsi);
03842 
03843     HRESULT GetCurrentSelection(
03844         [out] IShellItem **ppsi);
03845 
03846     HRESULT SetFileName(
03847         [in, string] LPCWSTR pszName);
03848 
03849     HRESULT GetFileName(
03850         [out, string] LPWSTR *pszName);
03851 
03852     HRESULT SetTitle(
03853         [in, string] LPCWSTR pszTitle);
03854 
03855     HRESULT SetOkButtonLabel(
03856         [in, string] LPCWSTR pszText);
03857 
03858     HRESULT SetFileNameLabel(
03859         [in, string] LPCWSTR pszLabel);
03860 
03861     HRESULT GetResult(
03862         [out] IShellItem **ppsi);
03863 
03864     HRESULT AddPlace(
03865         [in] IShellItem *psi,
03866         [in] FDAP fdap);
03867 
03868     HRESULT SetDefaultExtension(
03869         [in, string] LPCWSTR pszDefaultExtension);
03870 
03871     HRESULT Close(
03872         [in] HRESULT hr);
03873 
03874     HRESULT SetClientGuid(
03875         [in] REFGUID guid);
03876 
03877     HRESULT ClearClientData();
03878 
03879     HRESULT SetFilter(
03880         [in] IShellItemFilter *pFilter);
03881 }
03882 
03883 /*****************************************************************************
03884  * IFileDialog2 interface
03885  */
03886 [
03887  object,
03888  uuid(61744FC7-85B5-4791-A9B0-272276309B13),
03889  pointer_default(unique)
03890 ]
03891 interface IFileDialog2 : IFileDialog
03892 {
03893     HRESULT SetCancelButtonLabel(
03894         [in] LPCWSTR pszLabel);
03895 
03896     HRESULT SetNavigationRoot(
03897         [in] IShellItem *psi);
03898 }
03899 
03900 /*****************************************************************************
03901  * IFileOperationProgressSink interface
03902  */
03903 [
03904  object,
03905  uuid(04B0F1A7-9490-44BC-96E1-4296A31252E2),
03906  pointer_default(unique)
03907 ]
03908 interface IFileOperationProgressSink : IUnknown
03909 {
03910     HRESULT StartOperations();
03911 
03912     HRESULT FinishOperations(
03913         [in] HRESULT hrResult);
03914 
03915     HRESULT PreRenameItem(
03916         [in] DWORD dwFlags,
03917         [in] IShellItem *psiItem,
03918         [in, unique, string] LPCWSTR pszNewName);
03919 
03920     HRESULT PostRenameItem(
03921         [in] DWORD dwFlags,
03922         [in] IShellItem *psiItem,
03923         [in, string] LPCWSTR pszNewName,
03924         [in] HRESULT hrRename,
03925         [in] IShellItem *psiNewlyCreated);
03926 
03927     HRESULT PreMoveItem(
03928         [in] DWORD dwFlags,
03929         [in] IShellItem *psiItem,
03930         [in] IShellItem *psiDestinationFolder,
03931         [in, unique, string] LPCWSTR pszNewName);
03932 
03933     HRESULT PostMoveItem(
03934         [in] DWORD dwFlags,
03935         [in] IShellItem *psiItem,
03936         [in] IShellItem *psiDestinationFolder,
03937         [in, unique, string] LPCWSTR pszNewName,
03938         [in] HRESULT hrMove,
03939         [in] IShellItem *psiNewlyCreated);
03940 
03941     HRESULT PreCopyItem(
03942         [in] DWORD dwFlags,
03943         [in] IShellItem *psiItem,
03944         [in] IShellItem *psiDestinationFolder,
03945         [in, unique, string] LPCWSTR pszNewName);
03946 
03947     HRESULT PostCopyItem(
03948         [in] DWORD dwFlags,
03949         [in] IShellItem *psiItem,
03950         [in] IShellItem *psiDestinationFolder,
03951         [in, unique, string] LPCWSTR pszNewName,
03952         [in] HRESULT hrCopy,
03953         [in] IShellItem *psiNewlyCreated);
03954 
03955     HRESULT PreDeleteItem(
03956         [in] DWORD dwFlags,
03957         [in] IShellItem *psiItem);
03958 
03959     HRESULT PostDeleteItem(
03960         [in] DWORD dwFlags,
03961         [in] IShellItem *psiItem,
03962         [in] HRESULT hrDelete,
03963         [in] IShellItem *psiNewlyCreated);
03964 
03965     HRESULT PreNewItem(
03966         [in] DWORD dwFlags,
03967         [in] IShellItem *psiDestinationFolder,
03968         [in, unique, string] LPCWSTR pszNewName);
03969 
03970     HRESULT PostNewItem(
03971         [in] DWORD dwFlags,
03972         [in] IShellItem *psiDestinationFolder,
03973         [in, unique, string] LPCWSTR pszNewName,
03974         [in, unique, string] LPCWSTR pszTemplateName,
03975         [in] DWORD dwFileAttributes,
03976         [in] HRESULT hrNew,
03977         [in] IShellItem *psiNewItem);
03978 
03979     HRESULT UpdateProgress(
03980         [in] UINT iWorkTotal,
03981         [in] UINT iWorkSoFar);
03982 
03983     HRESULT ResetTimer();
03984 
03985     HRESULT PauseTimer();
03986 
03987     HRESULT ResumeTimer();
03988 }
03989 
03990 /*****************************************************************************
03991  * IFileSaveDialog interface
03992  */
03993 [
03994  object,
03995  uuid(84BCCD23-5FDE-4CDB-AEA4-AF64B83D78AB),
03996  pointer_default(unique)
03997 ]
03998 interface IFileSaveDialog : IFileDialog
03999 {
04000     HRESULT SetSaveAsItem(
04001         [in] IShellItem *psi);
04002 
04003     HRESULT SetProperties(
04004         [in] IPropertyStore *pStore);
04005 
04006     HRESULT SetCollectedProperties(
04007         [in] IPropertyDescriptionList *pList,
04008         [in] BOOL fAppendDefault);
04009 
04010     HRESULT GetProperties(
04011         [in] IPropertyStore **ppStore);
04012 
04013     HRESULT ApplyProperties(
04014         [in] IShellItem *psi,
04015         [in] IPropertyStore *pStore,
04016         [in, unique] HWND hwnd,
04017         [in, unique] IFileOperationProgressSink *pSink);
04018 }
04019 
04020 
04021 /*****************************************************************************
04022  * IFileOpenDialog interface
04023  */
04024 [
04025  object,
04026  uuid(D57C7288-D4AD-4768-BE02-9D969532D960),
04027  pointer_default(unique)
04028 ]
04029 interface IFileOpenDialog : IFileDialog
04030 {
04031     HRESULT GetResults(
04032         [out] IShellItemArray **ppenum);
04033 
04034     HRESULT GetSelectedItems(
04035         [out] IShellItemArray **ppsai);
04036 }
04037 
04038 typedef [v1_enum] enum CDCONTROLSTATEF
04039 {
04040     CDCS_INACTIVE       = 0x0,
04041     CDCS_ENABLED        = 0x1,
04042     CDCS_VISIBLE        = 0x2,
04043     CDCS_ENABLEDVISIBLE = 0x3
04044 } CDCONTROLSTATEF;
04045 cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(CDCONTROLSTATEF)")
04046 /*****************************************************************************
04047  * IFileDialogCustomize interface
04048  */
04049 [
04050  object,
04051  uuid(E6FDD21A-163F-4975-9C8C-A69F1BA37034),
04052  pointer_default(unique)
04053 ]
04054 interface IFileDialogCustomize : IUnknown
04055 {
04056     HRESULT EnableOpenDropDown(
04057         [in] DWORD dwIDCtl);
04058 
04059     HRESULT AddMenu(
04060         [in] DWORD dwIDCtl,
04061         [in, string] LPCWSTR pszLabel);
04062 
04063     HRESULT AddPushButton(
04064         [in] DWORD dwIDCtl,
04065         [in, string] LPCWSTR pszLabel);
04066 
04067     HRESULT AddComboBox(
04068         [in] DWORD dwIDCtl);
04069 
04070     HRESULT AddRadioButtonList(
04071         [in] DWORD dwIDCtl);
04072 
04073     HRESULT AddCheckButton(
04074         [in] DWORD dwIDCtl,
04075         [in, string] LPCWSTR pszLabel,
04076         [in] BOOL bChecked);
04077 
04078     HRESULT AddEditBox(
04079         [in] DWORD dwIDCtl,
04080         [in, string] LPCWSTR pszText);
04081 
04082     HRESULT AddSeparator(
04083         [in] DWORD dwIDCtl);
04084 
04085     HRESULT AddText(
04086         [in] DWORD dwIDCtl,
04087         [in, string] LPCWSTR pszText);
04088 
04089     HRESULT SetControlLabel(
04090         [in] DWORD dwIDCtl,
04091         [in, string] LPCWSTR pszLabel);
04092 
04093     HRESULT GetControlState(
04094         [in] DWORD dwIDCtl,
04095         [out] CDCONTROLSTATEF *pdwState);
04096 
04097     HRESULT SetControlState(
04098         [in] DWORD dwIDCtl,
04099         [in] CDCONTROLSTATEF dwState);
04100 
04101     HRESULT GetEditBoxText(
04102         [in] DWORD dwIDCtl,
04103         [out, string] WCHAR **ppszText);
04104 
04105     HRESULT SetEditBoxText(
04106         [in] DWORD dwIDCtl,
04107         [in, string] LPCWSTR pszText);
04108 
04109     HRESULT GetCheckButtonState(
04110         [in] DWORD dwIDCtl,
04111         [out] BOOL *pbChecked);
04112 
04113     HRESULT SetCheckButtonState(
04114         [in] DWORD dwIDCtl,
04115         [in] BOOL bChecked);
04116 
04117     HRESULT AddControlItem(
04118         [in] DWORD dwIDCtl,
04119         [in] DWORD dwIDItem,
04120         [in] LPCWSTR pszLabel);
04121 
04122     HRESULT RemoveControlItem(
04123         [in] DWORD dwIDCtl,
04124         [in] DWORD dwIDItem);
04125 
04126     HRESULT RemoveAllControlItems(
04127         [in] DWORD dwIDCtl);
04128 
04129     HRESULT GetControlItemState(
04130         [in] DWORD dwIDCtl,
04131         [in] DWORD dwIDItem,
04132         [out] CDCONTROLSTATEF *pdwState);
04133 
04134     HRESULT SetControlItemState(
04135         [in] DWORD dwIDCtl,
04136         [in] DWORD dwIDItem,
04137         [in] CDCONTROLSTATEF dwState);
04138 
04139     HRESULT GetSelectedControlItem(
04140         [in] DWORD dwIDCtl,
04141         [out] DWORD *pdwIDItem);
04142 
04143     HRESULT SetSelectedControlItem(
04144         [in] DWORD dwIDCtl,
04145         [in] DWORD dwIDItem);
04146 
04147     HRESULT StartVisualGroup(
04148         [in] DWORD dwIDCtl,
04149         [in, string] LPCWSTR pszLabel);
04150 
04151     HRESULT EndVisualGroup();
04152 
04153     HRESULT MakeProminent(
04154         [in] DWORD dwIDCtl);
04155 
04156     HRESULT SetControlItemText(
04157         [in] DWORD dwIDCtl,
04158         [in] DWORD dwIDItem,
04159         [in, string] LPCWSTR pszLabel);
04160 }
04161 
04162 /*****************************************************************************
04163  * IFileDialogControlEvents interface
04164  */
04165 [
04166  object,
04167  uuid(36116642-D713-4B97-9B83-7484A9D00433),
04168  pointer_default(unique)
04169 ]
04170 interface IFileDialogControlEvents : IUnknown
04171 {
04172     HRESULT OnItemSelected(
04173         [in] IFileDialogCustomize *pfdc,
04174         [in] DWORD dwIDCtl,
04175         [in] DWORD dwIDItem);
04176 
04177     HRESULT OnButtonClicked(
04178         [in] IFileDialogCustomize *pfdc,
04179         [in] DWORD dwIDCtl);
04180 
04181     HRESULT OnCheckButtonToggled(
04182         [in] IFileDialogCustomize *pfdc,
04183         [in] BOOL dwIDCtl,
04184         [in] BOOL bChecked);
04185 
04186     HRESULT OnControlActivating(
04187         [in] IFileDialogCustomize *pfdc,
04188         [in] DWORD dwIDCtl);
04189 }
04190 
04191 typedef [v1_enum] enum tagKF_CATEGORY
04192 {
04193     KF_CATEGORY_VIRTUAL = 0x00000001,
04194     KF_CATEGORY_FIXED   = 0x00000002,
04195     KF_CATEGORY_COMMON  = 0x00000003,
04196     KF_CATEGORY_PERUSER = 0x00000004
04197 } KF_CATEGORY;
04198 
04199 typedef [v1_enum] enum tagKF_REDIRECTION_CAPABILITIES
04200 {
04201     KF_REDIRECTION_CAPABILITIES_ALLOW_ALL               = 0x000000ff,
04202     KF_REDIRECTION_CAPABILITIES_REDIRECTABLE            = 0x00000001,
04203     KF_REDIRECTION_CAPABILITIES_DENY_ALL                = 0x000fff00,
04204     KF_REDIRECTION_CAPABILITIES_DENY_POLICY_REDIRECTED  = 0x00000100,
04205     KF_REDIRECTION_CAPABILITIES_DENY_POLICY             = 0x00000200,
04206     KF_REDIRECTION_CAPABILITIES_DENY_PERMISSIONS        = 0x00000400
04207 } KF_REDIRECTION_CAPABILITIES;
04208 
04209 typedef [v1_enum] enum tagKF_DEFINITION_FLAGS
04210 {
04211     KFDF_LOCAL_REDIRECT_ONLY    = 0x00000002,
04212     KFDF_ROAMABLE               = 0x00000004,
04213     KFDF_PRECREATE              = 0x00000008,
04214     KFDF_STREAM                 = 0x00000010,
04215     KFDF_PUBLISHEXPANDEDPATH    = 0x00000020
04216 } KF_DEFINITION_FLAGS;
04217 
04218 typedef struct tagKNOWNFOLDER_DEFINITION
04219 {
04220     KF_CATEGORY         category;
04221     LPWSTR              pszName;
04222     LPWSTR              pszDescription;
04223     KNOWNFOLDERID       fidParent;
04224     LPWSTR              pszRelativePath;
04225     LPWSTR              pszParsingName;
04226     LPWSTR              pszTooltip;
04227     LPWSTR              pszLocalizedName;
04228     LPWSTR              pszIcon;
04229     LPWSTR              pszSecurity;
04230     DWORD               dwAttributes;
04231     KF_DEFINITION_FLAGS kfdFlags;
04232     FOLDERTYPEID        ftidType;
04233 } KNOWNFOLDER_DEFINITION;
04234 
04235 [
04236  object,
04237  uuid(3aa7af7e-9b36-420C-a8e3-f77d4674a488),
04238  pointer_default(ref)
04239 ]
04240 interface IKnownFolder : IUnknown
04241 {
04242     HRESULT GetId(
04243         [out] KNOWNFOLDERID *pkfid);
04244 
04245     HRESULT GetCategory(
04246         [out] KF_CATEGORY *pCategory);
04247 
04248     HRESULT GetShellItem(
04249         [in] DWORD dwFlags,
04250         [in] REFIID riid,
04251         [out, iid_is(riid)] void **ppv);
04252 
04253     HRESULT GetPath(
04254         [in] DWORD dwFlags,
04255         [out, string] LPWSTR *ppszPath);
04256 
04257     HRESULT SetPath(
04258         [in] DWORD dwFlags,
04259         [in, string] LPCWSTR pszPath);
04260 
04261     HRESULT GetIDList(
04262         [in] DWORD dwFlags,
04263         [out] PIDLIST_ABSOLUTE *ppidl);
04264 
04265     HRESULT GetFolderType(
04266         [out] FOLDERTYPEID *pftid);
04267 
04268     HRESULT GetRedirectionCapabilities(
04269         [out] KF_REDIRECTION_CAPABILITIES *pCapabilities);
04270 
04271     HRESULT GetFolderDefinition(
04272         [out] KNOWNFOLDER_DEFINITION *pKFD);
04273 }
04274 
04275 typedef [v1_enum] enum tagKF_REDIRECT_FLAGS
04276 {
04277     KF_REDIRECT_USER_EXCLUSIVE      = 0x00000001,
04278     KF_REDIRECT_COPY_SOURCE_DACL    = 0x00000002,
04279     KF_REDIRECT_OWNER_USER          = 0x00000004,
04280     KF_REDIRECT_SET_OWNER_EXPLICIT  = 0x00000008,
04281     KF_REDIRECT_CHECK_ONLY          = 0x00000010,
04282     KF_REDIRECT_WITH_UI             = 0x00000020,
04283     KF_REDIRECT_UNPIN               = 0x00000040,
04284     KF_REDIRECT_PIN                 = 0x00000080,
04285     KF_REDIRECT_COPY_CONTENTS       = 0x00000200,
04286     KF_REDIRECT_DEL_SOURCE_CONTENTS = 0x00000400,
04287     KF_REDIRECT_EXCLUDE_ALL_KNOWN_SUBFOLDERS = 0x00000800
04288 } KF_REDIRECT_FLAGS;
04289 
04290 [
04291     object,
04292     uuid(8BE2D872-86AA-4d47-B776-32CCA40C7018),
04293     pointer_default(ref)
04294 ]
04295 interface IKnownFolderManager : IUnknown
04296 {
04297     typedef [v1_enum] enum tagFFFP_MODE
04298     {
04299         FFFP_EXACTMATCH,
04300         FFFP_NEARESTPARENTMATCH
04301     } FFFP_MODE;
04302 
04303     HRESULT FolderIdFromCsidl(
04304         [in] int nCsidl,
04305         [out] KNOWNFOLDERID *pfid);
04306 
04307     HRESULT FolderIdToCsidl(
04308         [in] REFKNOWNFOLDERID rfid,
04309         [out] int *pnCsidl);
04310 
04311     HRESULT GetFolderIds(
04312         [out, size_is(, *pCount)] KNOWNFOLDERID **ppKFId,
04313         [in, out] UINT *pCount);
04314 
04315     HRESULT GetFolder(
04316         [in] REFKNOWNFOLDERID rfid,
04317         [out] IKnownFolder **ppkf);
04318 
04319     HRESULT GetFolderByName(
04320         [in, string] LPCWSTR pszCanonicalName,
04321         [out] IKnownFolder **ppkf);
04322 
04323     HRESULT RegisterFolder(
04324         [in] REFKNOWNFOLDERID rfid,
04325         [in] KNOWNFOLDER_DEFINITION const *pKFD);
04326 
04327     HRESULT UnregisterFolder(
04328         [in] REFKNOWNFOLDERID rfid);
04329 
04330     HRESULT FindFolderFromPath(
04331         [in, string] LPCWSTR pszPath,
04332         [in] FFFP_MODE mode,
04333         [out] IKnownFolder **ppkf);
04334 
04335     HRESULT FindFolderFromIDList(
04336         [in] PCIDLIST_ABSOLUTE pidl,
04337         [out] IKnownFolder **ppkf);
04338 
04339     HRESULT Redirect(
04340         [in] REFKNOWNFOLDERID rfid,
04341         [in, unique] HWND hwnd,
04342         [in] KF_REDIRECT_FLAGS flags,
04343         [in, unique, string] LPCWSTR pszTargetPath,
04344         [in] UINT cFolders,
04345         [in, size_is(cFolders), unique] KNOWNFOLDERID const *pExclusion,
04346         [out, string] LPWSTR *ppszError);
04347 }
04348 
04349 /* function for releasing structure returned from IKnownFolder::GetFolderDefinition */
04350 cpp_quote("static inline void FreeKnownFolderDefinitionFields(KNOWNFOLDER_DEFINITION *pKFD)")
04351 cpp_quote("{")
04352 cpp_quote("    CoTaskMemFree(pKFD->pszName);")
04353 cpp_quote("    CoTaskMemFree(pKFD->pszDescription);")
04354 cpp_quote("    CoTaskMemFree(pKFD->pszRelativePath);")
04355 cpp_quote("    CoTaskMemFree(pKFD->pszParsingName);")
04356 cpp_quote("    CoTaskMemFree(pKFD->pszTooltip);")
04357 cpp_quote("    CoTaskMemFree(pKFD->pszLocalizedName);")
04358 cpp_quote("    CoTaskMemFree(pKFD->pszIcon);")
04359 cpp_quote("    CoTaskMemFree(pKFD->pszSecurity);")
04360 cpp_quote("}")
04361 
04362 typedef [v1_enum] enum ASSOCIATIONLEVEL {
04363     AL_MACHINE,
04364     AL_EFFECTIVE,
04365     AL_USER
04366 } ASSOCIATIONLEVEL;
04367 
04368 typedef [v1_enum] enum ASSOCIATIONTYPE {
04369     AT_FILEEXTENSION,
04370     AT_URLPROTOCOL,
04371     AT_STARTMENUCLIENT,
04372     AT_MIMETYPE
04373 } ASSOCIATIONTYPE;
04374 
04375 [
04376     object,
04377     uuid(4e530b0a-e611-4c77-a3ac-9031d022281b),
04378     pointer_default(unique)
04379 ]
04380 interface IApplicationAssociationRegistration : IUnknown
04381 {
04382     HRESULT QueryCurrentDefault(
04383         [in, string] LPCWSTR pszQuery,
04384         [in] ASSOCIATIONTYPE atQueryType,
04385         [in] ASSOCIATIONLEVEL alQueryLevel,
04386         [out, string] LPWSTR *ppszAssociation);
04387 
04388     HRESULT QueryAppIsDefault(
04389         [in, string] LPCWSTR pszQuery,
04390         [in] ASSOCIATIONTYPE atQueryType,
04391         [in] ASSOCIATIONLEVEL alQueryLevel,
04392         [in, string] LPCWSTR pszAppRegistryName,
04393         [out] BOOL *pfDefault);
04394 
04395     HRESULT QueryAppIsDefaultAll(
04396         [in] ASSOCIATIONLEVEL alQueryLevel,
04397         [in, string] LPCWSTR pszAppRegistryName,
04398         [out] BOOL* pfDefault);
04399 
04400     HRESULT SetAppAsDefault(
04401         [in, string] LPCWSTR pszAppRegistryName,
04402         [in, string] LPCWSTR pszSet,
04403         [in] ASSOCIATIONTYPE atSetType);
04404 
04405     HRESULT SetAppAsDefaultAll(
04406         [in, string] LPCWSTR pszAppRegistryName);
04407 
04408     HRESULT ClearUserAssociations();
04409 }
04410 
04411 [
04412     uuid(6332debf-87b5-4670-90c0-5e57b408a49e),
04413     object,
04414     pointer_default(unique)
04415 ]
04416 interface ICustomDestinationList : IUnknown
04417 {
04418     typedef [v1_enum] enum KNOWNDESTCATEGORY {
04419         KDC_FREQUENT = 1,
04420         KDC_RECENT
04421     } KNOWNDESTCATEGORY;
04422 
04423     HRESULT SetAppID([in, string] LPCWSTR pszAppID);
04424 
04425     HRESULT BeginList(
04426             [out] UINT *pcMinSlots,
04427             [in] REFIID riid,
04428             [out, iid_is(riid)] void **ppv);
04429 
04430     HRESULT AppendCategory(
04431             [in, string] LPCWSTR pszCategory,
04432             [in] IObjectArray *poa);
04433 
04434     HRESULT AppendKnownCategory([in] KNOWNDESTCATEGORY category);
04435     HRESULT AddUserTasks([in] IObjectArray *poa);
04436     HRESULT CommitList();
04437 
04438     HRESULT GetRemovedDestinations(
04439             [in] REFIID riid,
04440             [out, iid_is(riid)] void **ppv);
04441 
04442     HRESULT DeleteList([in, unique, string] LPCWSTR pszAppID);
04443     HRESULT AbortList();
04444 }
04445 
04446 /*****************************************************************************
04447  * ShellObjects typelibrary
04448  */
04449 [
04450  uuid(50A7E9B1-70EF-11D1-B75A-00A0C90564FE),
04451  lcid(0x0000),
04452  version(1.0)
04453 ]
04454 library ShellObjects
04455 {
04456     [
04457         uuid(71F96385-DDD6-48D3-A0C1-AE06E8B055FB)
04458     ]
04459     coclass ExplorerBrowser
04460     {
04461         interface IExplorerBrowser;
04462     }
04463 
04464     [
04465         uuid(DC1C5A9C-E88A-4DDE-A5A1-60F82A20AEF7)
04466     ]
04467     coclass FileOpenDialog
04468     {
04469         interface IFileOpenDialog;
04470     }
04471 
04472     [
04473         uuid(C0B4E2F3-BA21-4773-8DBA-335EC946EB8B)
04474     ]
04475     coclass FileSaveDialog
04476     {
04477         interface IFileSaveDialog;
04478     }
04479 
04480     [
04481         uuid(AE054212-3535-4430-83ED-D501AA6680E6)
04482     ]
04483     coclass NamespaceTreeControl
04484     {
04485         interface INameSpaceTreeControl2;
04486     }
04487 
04488     [
04489         uuid(4df0c730-df9d-4ae3-9153-aa6b82e9795a)
04490     ]
04491     coclass KnownFolderManager
04492     {
04493         interface IKnownFolderManager;
04494     }
04495 
04496     [
04497         uuid(591209c7-767b-42b2-9fba-44ee4615f2c7)
04498     ]
04499     coclass ApplicationAssociationRegistration
04500     {
04501         interface IApplicationAssociationRegistration;
04502     }
04503 
04504     [
04505          uuid(00021401-0000-0000-c000-000000000046)
04506     ]
04507     coclass ShellLink
04508     {
04509         interface IShellLinkW;
04510     }
04511 
04512     [
04513         uuid(56fdf344-fd6d-11d0-958a-006097c9a090)
04514     ]
04515     coclass TaskbarList
04516     {
04517         interface ITaskbarList4;
04518     }
04519 
04520     [
04521         uuid(77f10cf0-3db5-4966-b520-b7c54fd35ed6)
04522     ]
04523     coclass DestinationList {
04524         interface ICustomDestinationList;
04525     }
04526 }

Generated on Sat May 26 2012 04:31:11 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.