1/* 2 * COM interfaces for shell objects 3 * 4 * Copyright (C) 1999 Juergen Schmied 5 * Copyright (C) 2003 Alexandre Julliard 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public 9 * License as published by the Free Software Foundation; either 10 * version 2.1 of the License, or (at your option) any later version. 11 * 12 * This library is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with this library; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 20 */ 21 22import "objidl.idl"; 23import "oleidl.idl"; 24import "oaidl.idl"; 25import "docobj.idl"; 26import "shtypes.idl"; 27import "servprov.idl"; 28import "comcat.idl"; 29import "propidl.idl"; 30/* FIXME: import "prsht.idl";*/ 31import "msxml.idl"; 32import "wtypes.idl"; 33import "propsys.idl"; 34import "objectarray.idl"; 35/* FIXME: import "structuredquery.idl"; */ 36 37cpp_quote("/* FIXME: #include <sherrors.h> */") 38 39 40/***************************************************************************** 41 * IPersistFolder interface 42 */ 43[ 44 object, 45 uuid(000214ea-0000-0000-c000-000000000046), 46 pointer_default(unique) 47] 48interface IPersistFolder : IPersist 49{ 50 typedef IPersistFolder *LPPERSISTFOLDER; 51 52 HRESULT Initialize( [in] LPCITEMIDLIST pidl ); 53} 54 55 56/***************************************************************************** 57 * IPersistFolder2 interface 58 */ 59[ 60 object, 61 uuid(1ac3d9f0-175c-11d1-95be-00609797ea4f), 62 pointer_default(unique) 63] 64interface IPersistFolder2 : IPersistFolder 65{ 66 typedef IPersistFolder2 *LPPERSISTFOLDER2; 67 68 HRESULT GetCurFolder( [out] LPITEMIDLIST *ppidl ); 69} 70 71 72/***************************************************************************** 73 * IPersistIDList interface 74 */ 75[ 76 object, 77 uuid(1079acfc-29bd-11d3-8e0d-00c04f6837d5), 78 pointer_default(unique) 79] 80interface IPersistIDList : IPersist 81{ 82 HRESULT SetIDList( [in] LPCITEMIDLIST pidl ); 83 HRESULT GetIDList( [out] LPITEMIDLIST *ppidl ); 84} 85 86 87/***************************************************************************** 88 * IEnumIDList interface 89 */ 90[ 91 object, 92 uuid(000214f2-0000-0000-c000-000000000046), 93 pointer_default(unique) 94] 95interface IEnumIDList : IUnknown 96{ 97 typedef IEnumIDList *LPENUMIDLIST; 98 99 HRESULT Next( 100 [in] ULONG celt, 101 [out, size_is(celt), length_is(*pceltFetched)] LPITEMIDLIST *rgelt, 102 [out] ULONG *pceltFetched); 103 104 HRESULT Skip( [in] ULONG celt ); 105 HRESULT Reset(); 106 HRESULT Clone( [out] IEnumIDList **ppenum ); 107} 108 109/***************************************************************************** 110 * IShellPropSheetExt interface 111 */ 112cpp_quote("#if 0") 113 typedef LPARAM LPFNSVADDPROPSHEETPAGE; 114cpp_quote("#else") 115cpp_quote("#include <prsht.h>") 116cpp_quote("typedef LPFNADDPROPSHEETPAGE LPFNSVADDPROPSHEETPAGE;") 117cpp_quote("#endif") 118 119[ 120 object, 121 uuid(000214E9-0000-0000-C000-000000000046), 122 pointer_default(unique), 123 local 124] 125interface IShellPropSheetExt : IUnknown 126{ 127 enum tagSHELLPROPSHEETEXTPAGEID { 128 EXPPS_FILETYPES = 0x1 129 }; 130 131 typedef UINT EXPPS; 132 133 HRESULT AddPages( 134 [in] LPFNSVADDPROPSHEETPAGE pfnAddPage, 135 [in] LPARAM lParam); 136 HRESULT ReplacePage( 137 [in] EXPPS uPageID, 138 [in] LPFNSVADDPROPSHEETPAGE pfnReplaceWith, 139 [in] LPARAM lParam); 140} 141typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT; 142 143/***************************************************************************** 144 * IShellFolder interface 145 */ 146[ 147 object, 148 uuid(000214e6-0000-0000-c000-000000000046), 149 pointer_default(unique) 150] 151interface IShellFolder : IUnknown 152{ 153 typedef IShellFolder * LPSHELLFOLDER; 154 155 typedef enum tagSHGDN 156 { 157 SHGDN_NORMAL = 0, 158 SHGDN_INFOLDER = 1, 159 SHGDN_FOREDITING = 0x1000, 160 SHGDN_INCLUDE_NONFILESYS = 0x2000, 161 SHGDN_FORADDRESSBAR = 0x4000, 162 SHGDN_FORPARSING = 0x8000 163 } SHGNO; 164 165 typedef DWORD SHGDNF; 166 167 enum tagSHCONTF 168 { 169 SHCONTF_FOLDERS = 32, 170 SHCONTF_NONFOLDERS = 64, 171 SHCONTF_INCLUDEHIDDEN = 128, 172 SHCONTF_INIT_ON_FIRST_NEXT = 256, 173 SHCONTF_NETPRINTERSRCH = 512, 174 SHCONTF_SHAREABLE = 1024, 175 SHCONTF_STORAGE = 2048 176 }; 177 178 typedef DWORD SHCONTF; 179 180 cpp_quote("#define SFGAO_CANCOPY DROPEFFECT_COPY") 181 cpp_quote("#define SFGAO_CANMOVE DROPEFFECT_MOVE") 182 cpp_quote("#define SFGAO_CANLINK DROPEFFECT_LINK") 183 cpp_quote("#define SFGAO_STORAGE 0x00000008L") 184 cpp_quote("#define SFGAO_CANRENAME 0x00000010L") 185 cpp_quote("#define SFGAO_CANDELETE 0x00000020L") 186 cpp_quote("#define SFGAO_HASPROPSHEET 0x00000040L") 187 cpp_quote("#define SFGAO_DROPTARGET 0x00000100L") 188 cpp_quote("#define SFGAO_CAPABILITYMASK 0x00000177L") 189 cpp_quote("#define SFGAO_ENCRYPTED 0x00002000L") 190 cpp_quote("#define SFGAO_ISSLOW 0x00004000L") 191 cpp_quote("#define SFGAO_GHOSTED 0x00008000L") 192 cpp_quote("#define SFGAO_LINK 0x00010000L") 193 cpp_quote("#define SFGAO_SHARE 0x00020000L") 194 cpp_quote("#define SFGAO_READONLY 0x00040000L") 195 cpp_quote("#define SFGAO_HIDDEN 0x00080000L") 196 cpp_quote("#define SFGAO_DISPLAYATTRMASK 0x000FC000L") 197 cpp_quote("#define SFGAO_FILESYSANCESTOR 0x10000000L") 198 cpp_quote("#define SFGAO_FOLDER 0x20000000L") 199 cpp_quote("#define SFGAO_FILESYSTEM 0x40000000L") 200 cpp_quote("#define SFGAO_HASSUBFOLDER 0x80000000L") 201 cpp_quote("#define SFGAO_CONTENTSMASK 0x80000000L") 202 cpp_quote("#define SFGAO_VALIDATE 0x01000000L") 203 cpp_quote("#define SFGAO_REMOVABLE 0x02000000L") 204 cpp_quote("#define SFGAO_COMPRESSED 0x04000000L") 205 cpp_quote("#define SFGAO_BROWSABLE 0x08000000L") 206 cpp_quote("#define SFGAO_NONENUMERATED 0x00100000L") 207 cpp_quote("#define SFGAO_NEWCONTENT 0x00200000L") 208 cpp_quote("#define SFGAO_STREAM 0x00400000L") 209 cpp_quote("#define SFGAO_STORAGEANCESTOR 0x00800000L") 210 211 typedef ULONG SFGAOF; 212 213 HRESULT ParseDisplayName( 214 [in] HWND hwndOwner, 215 [in] LPBC pbcReserved, 216 [in, string] LPOLESTR lpszDisplayName, 217 [out] ULONG *pchEaten, 218 [out] PIDLIST_RELATIVE *ppidl, 219 [in, out, unique] ULONG *pdwAttributes); 220 221 HRESULT EnumObjects( 222 [in] HWND hwndOwner, 223 [in] SHCONTF grfFlags, 224 [out] IEnumIDList **ppenumIDList); 225 226 HRESULT BindToObject( 227 [in] PCUIDLIST_RELATIVE pidl, 228 [in] LPBC pbcReserved, 229 [in] REFIID riid, 230 [out, iid_is(riid)] void **ppvOut); 231 232 HRESULT BindToStorage( 233 [in] PCUIDLIST_RELATIVE pidl, 234 [in] LPBC pbcReserved, 235 [in] REFIID riid, 236 [out, iid_is(riid)] void **ppvObj); 237 238 HRESULT CompareIDs( 239 [in] LPARAM lParam, 240 [in] PCUIDLIST_RELATIVE pidl1, 241 [in] PCUIDLIST_RELATIVE pidl2); 242 243 HRESULT CreateViewObject( 244 [in] HWND hwndOwner, 245 [in] REFIID riid, 246 [out, iid_is(riid)] void **ppvOut); 247 248 HRESULT GetAttributesOf( 249 [in] UINT cidl, 250 [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl, 251 [in, out] SFGAOF *rgfInOut); 252 253 HRESULT GetUIObjectOf( 254 [in] HWND hwndOwner, 255 [in] UINT cidl, 256 [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl, 257 [in] REFIID riid, 258 [in, out, unique] UINT *prgfInOut, 259 [out, iid_is(riid)] void **ppvOut); 260 261 HRESULT GetDisplayNameOf( 262 [in] PCUITEMID_CHILD pidl, 263 [in] SHGDNF uFlags, 264 [out] STRRET *lpName); 265 266 HRESULT SetNameOf( 267 [in] HWND hwnd, 268 [in] PCUITEMID_CHILD pidl, 269 [in, string] LPCOLESTR lpszName, 270 [in] SHGDNF uFlags, 271 [out] PITEMID_CHILD *ppidlOut); 272} 273 274 275/***************************************************************************** 276 * IEnumExtraSearch interface 277 */ 278[ 279 object, 280 uuid(0e700be1-9db6-11d1-a1ce-00c04fd75d13), 281 pointer_default(unique) 282] 283interface IEnumExtraSearch : IUnknown 284{ 285 typedef IEnumExtraSearch *LPENUMEXTRASEARCH; 286 287 typedef struct 288 { 289 GUID guidSearch; 290 WCHAR wszFriendlyName[80]; 291 /* 292 *WCHAR wszMenuText[80]; 293 *WCHAR wszHelpText[MAX_PATH]; 294 */ 295 WCHAR wszUrl[2084]; 296 /* 297 *WCHAR wszIcon[MAX_PATH+10]; 298 *WCHAR wszGreyIcon[MAX_PATH+10]; 299 *WCHAR wszClrIcon[MAX_PATH+10]; 300 */ 301 } EXTRASEARCH, *LPEXTRASEARCH; 302 303 HRESULT Next( 304 [in] ULONG celt, 305 [out, size_is(celt), length_is(*pceltFetched)] EXTRASEARCH *rgelt, 306 [out] ULONG *pceltFetched); 307 308 HRESULT Skip( [in] ULONG celt ); 309 HRESULT Reset(); 310 HRESULT Clone( [out] IEnumExtraSearch **ppenum ); 311} 312 313 314/***************************************************************************** 315 * IShellFolder2 interface 316 */ 317[ 318 object, 319 uuid(93f2f68c-1d1b-11d3-a30e-00c04f79abd1), 320 pointer_default(unique) 321] 322interface IShellFolder2 : IShellFolder 323{ 324 typedef struct 325 { 326 GUID fmtid; 327 DWORD pid; 328 } SHCOLUMNID, *LPSHCOLUMNID; 329 typedef const SHCOLUMNID *LPCSHCOLUMNID; 330 331 HRESULT GetDefaultSearchGUID( [out] GUID *lpguid ); 332 HRESULT EnumSearches( [out] IEnumExtraSearch **ppenum ); 333 HRESULT GetDefaultColumn( [in] DWORD dwReserved, [out] ULONG *pSort, [out] ULONG *pDisplay ); 334 HRESULT GetDefaultColumnState( [in] UINT iColumn, [out] SHCOLSTATEF *pcsFlags ); 335 HRESULT GetDetailsEx( [in] PCUITEMID_CHILD pidl, [in] const SHCOLUMNID *pscid, [out] VARIANT *pv); 336 HRESULT GetDetailsOf( [in] PCUITEMID_CHILD pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd); 337 HRESULT MapColumnToSCID( [in] UINT iColumn, [in] SHCOLUMNID *pscid ); 338} 339 340/***************************************************************************** 341 * IShellItem interface 342 */ 343[ 344 object, 345 uuid(43826d1e-e718-42ee-bc55-a1e261c37bfe), 346 pointer_default(unique) 347] 348interface IShellItem : IUnknown 349{ 350 typedef [v1_enum] enum { 351 SIGDN_NORMALDISPLAY = 0, 352 SIGDN_PARENTRELATIVEPARSING = 0x80018001, 353 SIGDN_DESKTOPABSOLUTEPARSING = 0x80028000, 354 SIGDN_PARENTRELATIVEEDITING = 0x80031001, 355 SIGDN_DESKTOPABSOLUTEEDITING = 0x8004c000, 356 SIGDN_FILESYSPATH = 0x80058000, 357 SIGDN_URL = 0x80068000, 358 SIGDN_PARENTRELATIVEFORADDRESSBAR = 0x8007c001, 359 SIGDN_PARENTRELATIVE = 0x80080001 360 } SIGDN; /* & 0xFFFF => SHGDN */ 361 362 [v1_enum] enum _SICHINTF 363 { 364 SICHINT_DISPLAY = 0x00000000, 365 SICHINT_CANONICAL = 0x10000000, 366 SICHINT_TEST_FILESYSPATH_IF_NOT_EQUAL = 0x20000000, 367 SICHINT_ALLFIELDS = 0x80000000 368 }; 369 typedef DWORD SICHINTF; 370 371 HRESULT BindToHandler( 372 [in] IBindCtx *pbc, 373 [in] REFGUID rbhid, 374 [in] REFIID riid, 375 [out, iid_is(riid)] void **ppvOut); 376 377 HRESULT GetParent( [out] IShellItem **ppsi ); 378 379 HRESULT GetDisplayName( 380 [in] SIGDN sigdnName, 381 [out] LPWSTR *ppszName); 382 383 HRESULT GetAttributes( 384 [in] SFGAOF sfgaoMask, 385 [out] SFGAOF *psfgaoAttribs); 386 387 HRESULT Compare( 388 [in] IShellItem *psi, 389 [in] SICHINTF hint, 390 [out] int *piOrder); 391} 392 393/***************************************************************************** 394 * IShellItem2 interface 395 */ 396[ 397 object, 398 uuid(7E9FB0D3-919F-4307-AB2E-9B1860310C93), 399 pointer_default(unique) 400] 401interface IShellItem2 : IShellItem 402{ 403 HRESULT GetPropertyStore( 404 [in] GETPROPERTYSTOREFLAGS flags, 405 [in] REFIID riid, 406 [out, iid_is(riid)] void **ppv); 407 408 HRESULT GetPropertyStoreWithCreateObject( 409 [in] GETPROPERTYSTOREFLAGS flags, 410 [in] IUnknown *punkCreateObject, 411 [in] REFIID riid, 412 [out, iid_is(riid)] void **ppv); 413 414 HRESULT GetPropertyStoreForKeys( 415 [in, size_is(cKeys)] const PROPERTYKEY *rgKeys, 416 [in] UINT cKeys, 417 [in] GETPROPERTYSTOREFLAGS flags, 418 [in] REFIID riid, 419 [out, iid_is(riid)] void **ppv); 420 421 HRESULT GetPropertyDescriptionList( 422 [in] REFPROPERTYKEY keyType, 423 [in] REFIID riid, 424 [out, iid_is(riid)] void **ppv); 425 426 HRESULT Update( 427 [in, unique] IBindCtx *pbc); 428 429 HRESULT GetProperty( 430 [in] REFPROPERTYKEY key, 431 [out] PROPVARIANT *ppropvar); 432 433 HRESULT GetCLSID( 434 [in] REFPROPERTYKEY key, 435 [out] CLSID *pclsid); 436 437 HRESULT GetFileTime ( 438 [in] REFPROPERTYKEY key, 439 [out] FILETIME *pft); 440 441 HRESULT GetInt32( 442 [in] REFPROPERTYKEY key, 443 [out] int *pi); 444 445 HRESULT GetString( 446 [in] REFPROPERTYKEY key, 447 [out, string] LPWSTR *ppsz); 448 449 HRESULT GetUInt32( 450 [in] REFPROPERTYKEY key, 451 [out] ULONG *pui); 452 453 HRESULT GetUInt64( 454 [in] REFPROPERTYKEY key, 455 [out] ULONGLONG *pull); 456 457 HRESULT GetBool( 458 [in] REFPROPERTYKEY key, 459 [out] BOOL *pf); 460} 461 462typedef enum tagNWMF { 463 NWMF_UNLOADING = 0x0001, 464 NWMF_USERINITED = 0x0002, 465 NWMF_FIRST = 0x0004, 466 NWMF_OVERRIDEKEY = 0x0008, 467 NWMF_SHOWHELP = 0x0010, 468 NWMF_HTMLDIALOG = 0x0020, 469 NWMF_FROMDIALOGCHILD = 0x0040, 470 NWMF_USERREQUESTED = 0x0080, 471 NWMF_USERALLOWED = 0x0100 472} NWMF; 473 474[ 475 uuid(d2bc4c84-3f72-4a52-a604-7bcbf3982cbb), 476 object, 477 pointer_default(unique) 478] 479interface INewWindowManager : IUnknown 480{ 481 HRESULT EvaluateNewWindow( 482 [in, string] LPCWSTR pszUrl, 483 [in, string] LPCWSTR pszName, 484 [in, string] LPCWSTR pszUrlContext, 485 [in, string] LPCWSTR pszFeatures, 486 [in] BOOL fReplace, 487 [in] DWORD dwFlags, 488 [in] DWORD dwUserActionTime); 489} 490 491cpp_quote("#define SID_SNewWindowManager IID_INewWindowManager") 492 493/***************************************************************************** 494 * IEnumShellItems interface 495 */ 496[ 497 object, 498 uuid(70629033-E363-4A28-A567-0DB78006E6D7), 499 pointer_default(unique) 500] 501interface IEnumShellItems : IUnknown 502{ 503 [local] HRESULT Next( 504 [in] ULONG celt, 505 [out, size_is(celt), length_is(*pceltFetched)] IShellItem **rgelt, 506 [out] ULONG *pceltFetched); 507 508 [call_as(Next)] HRESULT RemoteNext( 509 [in] ULONG celt, 510 [out, size_is(celt), length_is(*pceltFetched)] IShellItem **rgelt, 511 [out] ULONG *pceltFetched); 512 513 HRESULT Skip( 514 [in] ULONG celt); 515 516 HRESULT Reset(); 517 518 HRESULT Clone( 519 [out] IEnumShellItems **ppenum); 520} 521 522/***************************************************************************** 523 * IShellItemArray interface 524 */ 525[ 526 object, 527 uuid(B63EA76D-1F85-456F-A19C-48159EFA858B), 528 pointer_default(unique) 529] 530interface IShellItemArray : IUnknown 531{ 532 typedef [v1_enum] enum SIATTRIBFLAGS { 533 SIATTRIBFLAGS_AND = 0x0001, 534 SIATTRIBFLAGS_OR = 0x0002, 535 SIATTRIBFLAGS_APPCOMPAT = 0x0003, 536 SIATTRIBFLAGS_MASK = 0x0003, 537 SIATTRIBFLAGS_ALLITEMS = 0x4000 538 } SIATTRIBFLAGS; 539 cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(SIATTRIBFLAGS)") 540 541 HRESULT BindToHandler( 542 [in, unique] IBindCtx *pbc, 543 [in] REFGUID bhid, 544 [in] REFIID riid, 545 [out, iid_is(riid)] void **ppvOut); 546 547 HRESULT GetPropertyStore( 548 [in] GETPROPERTYSTOREFLAGS flags, 549 [in] REFIID riid, 550 [out, iid_is(riid)] void **ppv); 551 552 HRESULT GetPropertyDescriptionList( 553 [in] REFPROPERTYKEY keyType, 554 [in] REFIID riid, 555 [out, iid_is(riid)] void **ppv); 556 557 HRESULT GetAttributes( 558 [in] SIATTRIBFLAGS AttribFlags, 559 [in] SFGAOF sfgaoMask, 560 [out] SFGAOF *psfgaoAttribs); 561 562 HRESULT GetCount( 563 [out] DWORD *pdwNumItems); 564 565 HRESULT GetItemAt( 566 [in] DWORD dwIndex, 567 [out] IShellItem **ppsi); 568 569 HRESULT EnumItems( 570 [out] IEnumShellItems **ppenumShellItems); 571 572} 573 574typedef [v1_enum] enum DATAOBJ_GET_ITEM_FLAGS 575{ 576 DOGIF_DEFAULT = 0x0, 577 DOGIF_TRAVERSE_LINK = 0x1, 578 DOGIF_NO_HDROP = 0x2, 579 DOGIF_NO_URL = 0x4, 580 DOGIF_ONLY_IF_ONE = 0x8 581} DATAOBJ_GET_ITEM_FLAGS; 582cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(DATAOBJ_GET_ITEM_FLAGS)") 583 584cpp_quote("HRESULT WINAPI SHGetNameFromIDList(PCIDLIST_ABSOLUTE pidl, SIGDN sigdnName, PWSTR *ppszName);") 585cpp_quote("HRESULT WINAPI SHCreateItemFromParsingName(PCWSTR pszPath, IBindCtx *pbc, REFIID riid, void **ppv);") 586cpp_quote("HRESULT WINAPI SHCreateItemFromIDList(PCIDLIST_ABSOLUTE pidl, REFIID riid, void **ppv);") 587cpp_quote("HRESULT WINAPI SHGetItemFromDataObject(IDataObject *pdtobj, DATAOBJ_GET_ITEM_FLAGS dwFlags, REFIID riid, void **ppv);") 588cpp_quote("HRESULT WINAPI SHGetIDListFromObject(IUnknown *punk, PIDLIST_ABSOLUTE *ppidl);") 589cpp_quote("HRESULT WINAPI SHGetItemFromObject(IUnknown *punk, REFIID riid, void **ppv);") 590cpp_quote("HRESULT WINAPI SHCreateShellItemArray(PCIDLIST_ABSOLUTE pidlParent, IShellFolder* psf, UINT cidl, PCUITEMID_CHILD_ARRAY ppidl, IShellItemArray **ppsiItemArray);") 591cpp_quote("HRESULT WINAPI SHCreateShellItemArrayFromShellItem(IShellItem *psi, REFIID riid, void **ppv);") 592cpp_quote("HRESULT WINAPI SHCreateShellItemArrayFromIDLists(UINT cidl, PCIDLIST_ABSOLUTE_ARRAY pidl_array, IShellItemArray **psia);") 593cpp_quote("HRESULT WINAPI SHCreateShellItemArrayFromDataObject(IDataObject *pdo, REFIID riid, void **ppv);") 594 595/***************************************************************************** 596 * IShellItemFilter interface 597 */ 598[ 599 object, 600 uuid(2659B475-EEB8-48B7-8F07-B378810F48CF), 601 pointer_default(unique) 602] 603interface IShellItemFilter : IUnknown 604{ 605 HRESULT IncludeItem( 606 [in] IShellItem *psi); 607 608 HRESULT GetEnumFlagsForItem( 609 [in] IShellItem *psi, 610 [out] SHCONTF *pgrfFlags); 611} 612 613/***************************************************************************** 614 * FOLDERSETTINGS 615 */ 616typedef char *LPVIEWSETTINGS; 617 618typedef enum 619{ 620 FWF_AUTOARRANGE = 0x00000001, 621 FWF_ABBREVIATEDNAMES = 0x00000002, 622 FWF_SNAPTOGRID = 0x00000004, 623 FWF_OWNERDATA = 0x00000008, 624 FWF_BESTFITWINDOW = 0x00000010, 625 FWF_DESKTOP = 0x00000020, 626 FWF_SINGLESEL = 0x00000040, 627 FWF_NOSUBFOLDERS = 0x00000080, 628 FWF_TRANSPARENT = 0x00000100, 629 FWF_NOCLIENTEDGE = 0x00000200, 630 FWF_NOSCROLL = 0x00000400, 631 FWF_ALIGNLEFT = 0x00000800, 632 FWF_NOICONS = 0x00001000, 633 FWF_SHOWSELALWAYS = 0x00002000, 634 FWF_NOVISIBLE = 0x00004000, 635 FWF_SINGLECLICKACTIVATE = 0x00008000, 636 FWF_NOWEBVIEW = 0x00010000, 637 FWF_HIDEFILENAMES = 0x00020000, 638 FWF_CHECKSELECT = 0x00040000, 639 FWF_NOENUMREFRESH = 0x00080000, 640 FWF_NOGROUPING = 0x00100000, 641 FWF_FULLROWSELECT = 0x00200000, 642 FWF_NOFILTERS = 0x00400000, 643 FWF_NOCOLUMNHEADER = 0x00800000, 644 FWF_NOHEADERINALLVIEWS = 0x01000000, 645 FWF_EXTENDEDTILES = 0x02000000, 646 FWF_TRICHECKSELECT = 0x04000000, 647 FWF_AUTOCHECKSELECT = 0x08000000, 648 FWF_NOBROWSERVIEWSTATE = 0x10000000, 649 FWF_SUBSETGROUPS = 0x20000000, 650 FWF_USESEARCHFOLDER = 0x40000000, 651 FWF_ALLOWRTLREADING = 0x80000000 652} FOLDERFLAGS; 653 654typedef enum 655{ 656 FVM_AUTO =-1, 657 FVM_ICON = 1, 658 FVM_FIRST = FVM_ICON, 659 FVM_SMALLICON = 2, 660 FVM_LIST = 3, 661 FVM_DETAILS = 4, 662 FVM_THUMBNAIL = 5, 663 FVM_TILE = 6, 664 FVM_THUMBSTRIP = 7, 665 FVM_CONTENT = 8, 666 FVM_LAST = FVM_CONTENT 667} FOLDERVIEWMODE; 668 669typedef struct 670{ 671 UINT ViewMode; 672 UINT fFlags; 673} FOLDERSETTINGS, *PFOLDERSETTINGS, *LPFOLDERSETTINGS; 674typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS; 675 676/***************************************************************************** 677 * IShellIcon interface 678 */ 679[ 680 uuid(000214e5-0000-0000-c000-000000000046), 681 object, 682 pointer_default(unique) 683] 684interface IShellIcon : IUnknown 685{ 686 HRESULT GetIconOf( 687 [in] PCUITEMID_CHILD pidl, 688 [in] UINT flags, 689 [out] int *pIconIndex); 690} 691 692/***************************************************************************** 693 * IShellView interface 694 */ 695interface IShellBrowser; /* forward declaration */ 696[ 697 object, 698 uuid(000214e3-0000-0000-c000-000000000046), 699 pointer_default(unique) 700] 701interface IShellView : IOleWindow 702{ 703 typedef IShellView *LPSHELLVIEW; 704 705 cpp_quote("#define SVSI_DESELECT 0x00000000") 706 cpp_quote("#define SVSI_SELECT 0x00000001") 707 cpp_quote("#define SVSI_EDIT 0x00000003") 708 cpp_quote("#define SVSI_DESELECTOTHERS 0x00000004") 709 cpp_quote("#define SVSI_ENSUREVISIBLE 0x00000008") 710 cpp_quote("#define SVSI_FOCUSED 0x00000010") 711 cpp_quote("#define SVSI_TRANSLATEPT 0x00000020") 712 cpp_quote("#define SVSI_SELECTIONMARK 0x00000040") 713 cpp_quote("#define SVSI_POSITIONITEM 0x00000080") 714 cpp_quote("#define SVSI_CHECK 0x00000100") 715 cpp_quote("#define SVSI_NOSTATECHANGE 0x80000000") 716 717 typedef UINT SVSIF; 718 719 typedef enum 720 { 721 SVGIO_BACKGROUND = 0x00000000, 722 SVGIO_SELECTION = 0x00000001, 723 SVGIO_ALLVIEW = 0x00000002, 724 SVGIO_CHECKED = 0x00000003, 725 SVGIO_TYPE_MASK = 0x0000000f, 726 SVGIO_FLAG_VIEWORDER = 0x80000000, 727 } SVGIO; 728 729 typedef enum 730 { 731 SVUIA_DEACTIVATE = 0, 732 SVUIA_ACTIVATE_NOFOCUS = 1, 733 SVUIA_ACTIVATE_FOCUS = 2, 734 SVUIA_INPLACEACTIVATE = 3 735 } SVUIA_STATUS; 736 737 HRESULT TranslateAccelerator( [in] MSG *pmsg ); 738 HRESULT EnableModeless( [in] BOOL fEnable ); 739 HRESULT UIActivate( [in] UINT uState ); 740 HRESULT Refresh(); 741 HRESULT CreateViewWindow( 742 [in] IShellView *psvPrevious, 743 [in] LPCFOLDERSETTINGS lpfs, 744 [in] IShellBrowser *psb, 745 [out] RECT *prcView, 746 [out] HWND *phWnd); 747 748 HRESULT DestroyViewWindow(); 749 HRESULT GetCurrentInfo( [out] LPFOLDERSETTINGS lpfs ); 750 751 [local] HRESULT AddPropertySheetPages( 752 [in] DWORD dwReserved, 753 [in] LPFNSVADDPROPSHEETPAGE pfn, 754 [in] LPARAM lparam); 755 756 HRESULT SaveViewState(); 757 HRESULT SelectItem( 758 [in] LPCITEMIDLIST pidlItem, 759 [in] SVSIF uFlags); 760 HRESULT GetItemObject( 761 [in] UINT uItem, 762 [in] REFIID riid, 763 [out, iid_is(riid)] void **ppv); 764} 765 766[ 767 object, 768 uuid(88e39e80-3578-11cf-ae69-08002b2e1262), 769 pointer_default(unique) 770] 771interface IShellView2 : IShellView 772{ 773 typedef GUID SHELLVIEWID; 774cpp_quote("#include <pshpack8.h>") 775 typedef struct _SV2CVW2_PARAMS 776 { 777 DWORD cbSize; 778 IShellView *psvPrev; 779 LPCFOLDERSETTINGS pfs; 780 IShellBrowser *psbOwner; 781 RECT *prcView; 782 SHELLVIEWID const *pvid; 783 HWND hwndView; 784 } SV2CVW2_PARAMS, *LPSV2CVW2_PARAMS; 785cpp_quote("#include <poppack.h>") 786 787 HRESULT GetView( 788 [in, out] SHELLVIEWID *view_guid, 789 [in] ULONG view_type 790 ); 791 HRESULT CreateViewWindow2( 792 [in] LPSV2CVW2_PARAMS view_params 793 ); 794 HRESULT HandleRename( 795 [in] LPCITEMIDLIST new_pidl 796 ); 797 HRESULT SelectAndPositionItem( 798 [in] LPCITEMIDLIST item, 799 [in] UINT flags, 800 [in] POINT *point 801 ); 802} 803 804[ 805 object, 806 uuid(ec39fa88-f8af-41c5-8421-38bed28f4673), 807 pointer_default(unique) 808] 809interface IShellView3 : IShellView2 810{ 811 [v1_enum] enum _SV3CVW3_FLAGS 812 { 813 SV3CVW3_DEFAULT = 0x00000000, 814 SV3CVW3_NONINTERACTIVE = 0x00000001, 815 SV3CVW3_FORCEVIEWMODE = 0x00000002, 816 SV3CVW3_FORCEFOLDERFLAGS = 0x00000004 817 }; 818 819 typedef DWORD SV3CVW3_FLAGS; 820 821 HRESULT CreateViewWindow3( 822 [in] IShellBrowser *owner, 823 [in, unique] IShellView *prev_view, 824 [in] SV3CVW3_FLAGS view_flags, 825 [in] FOLDERFLAGS mask, 826 [in] FOLDERFLAGS flags, 827 [in] FOLDERVIEWMODE mode, 828 [in, unique] const SHELLVIEWID *view_id, 829 [in] const RECT *rect, 830 [out] HWND *hwnd); 831} 832 833/***************************************************************************** 834 * IFolderView interface 835 */ 836[ 837 uuid(cde725b0-ccc9-4519-917e-325d72fab4ce), 838 object, 839 pointer_default(unique) 840] 841interface IFolderView : IUnknown 842{ 843 HRESULT GetCurrentViewMode( [out] UINT *mode ); 844 HRESULT SetCurrentViewMode( [in] UINT mode ); 845 HRESULT GetFolder( [in] REFIID riid, [out, iid_is(riid)] void **ppv ); 846 HRESULT Item( 847 [in] int index, 848 [out] PITEMID_CHILD *ppidl 849 ); 850 HRESULT ItemCount( 851 [in] UINT flags, 852 [out] int *items 853 ); 854 HRESULT Items( 855 [in] UINT flags, 856 [in] REFIID riid, 857 [out, iid_is(riid)] void **ppv 858 ); 859 HRESULT GetSelectionMarkedItem( [out] int *item ); 860 HRESULT GetFocusedItem( [out] int *item ); 861 HRESULT GetItemPosition( 862 [in] PCUITEMID_CHILD pidl, 863 [out] POINT* ppt 864 ); 865 HRESULT GetSpacing( [in, out, unique] POINT* pt ); 866 HRESULT GetDefaultSpacing( [out] POINT* pt ); 867 HRESULT GetAutoArrange(); 868 HRESULT SelectItem( 869 [in] int item, 870 [in] DWORD flags 871 ); 872 HRESULT SelectAndPositionItems( 873 [in] UINT cidl, 874 [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl, 875 [in, unique, size_is(cidl)] POINT* apt, 876 [in] DWORD flags 877 ); 878} 879 880[v1_enum] enum tagSORTDIRECTION 881{ 882 SORT_DESCENDING = -1, 883 SORT_ASCENDING = 1 884}; 885typedef int SORTDIRECTION; 886 887typedef struct SORTCOLUMN 888{ 889 PROPERTYKEY propkey; 890 SORTDIRECTION direction; 891} SORTCOLUMN; 892 893typedef [v1_enum] enum FVTEXTTYPE 894{ 895 FVST_EMPTYTEXT = 0 896} FVTEXTTYPE; 897 898[ 899 uuid(1af3a467-214f-4298-908e-06b03e0b39f9), 900 object, 901 pointer_default(unique) 902] 903interface IFolderView2 : IFolderView 904{ 905 HRESULT SetGroupBy( 906 [in] REFPROPERTYKEY key, 907 [in] BOOL ascending); 908 909 [local] 910 HRESULT GetGroupBy( 911 [out] PROPERTYKEY *pkey, 912 [out] BOOL *ascending); 913 914 [call_as(GetGroupBy)] 915 HRESULT RemoteGetGroupBy( 916 [out] PROPERTYKEY *pkey, 917 [out] BOOL *ascending); 918 919 HRESULT SetViewProperty( 920 [in] PCUITEMID_CHILD pidl, 921 [in] REFPROPERTYKEY propkey, 922 [in] REFPROPVARIANT propvar); 923 924 HRESULT GetViewProperty( 925 [in] PCUITEMID_CHILD pidl, 926 [in] REFPROPERTYKEY propkey, 927 [out] PROPVARIANT *propvar); 928 929 HRESULT SetTileViewProperties( 930 [in] PCUITEMID_CHILD pidl, 931 [in, string] LPCWSTR prop_list); 932 933 HRESULT SetExtendedTileViewProperties( 934 [in] PCUITEMID_CHILD pidl, 935 [in, string] LPCWSTR prop_list); 936 937 HRESULT SetText( 938 [in] FVTEXTTYPE type, 939 [in] LPCWSTR text); 940 941 HRESULT SetCurrentFolderFlags( 942 [in] DWORD mask, 943 [in] DWORD flags); 944 945 HRESULT GetCurrentFolderFlags([out] DWORD *flags); 946 947 HRESULT GetSortColumnCount([out] int *columns); 948 949 HRESULT SetSortColumns( 950 [in, size_is(count)] const SORTCOLUMN *columns, 951 [in] int count); 952 953 HRESULT GetSortColumns( 954 [out, size_is(count)] SORTCOLUMN *columns, 955 [in] int count); 956 957 HRESULT GetItem( 958 [in] int ittem, 959 [in] REFIID riid, 960 [out, iid_is(riid)] void **ppv); 961 962 HRESULT GetVisibleItem( 963 [in] int start, 964 [in] BOOL previous, 965 [out] int *item); 966 967 HRESULT GetSelectedItem( 968 [in] int start, 969 [out] int *item); 970 971 HRESULT GetSelection( 972 [in] BOOL none_implies_folder, 973 [out] IShellItemArray **array); 974 975 HRESULT GetSelectionState( 976 [in] PCUITEMID_CHILD pidl, 977 [out] DWORD *flags); 978 979 HRESULT InvokeVerbOnSelection([in, unique, string] LPCSTR verb); 980 981 HRESULT SetViewModeAndIconSize( 982 [in] FOLDERVIEWMODE mode, 983 [in] int size); 984 985 HRESULT GetViewModeAndIconSize( 986 [out] FOLDERVIEWMODE *mode, 987 [out] int *size); 988 989 HRESULT SetGroupSubsetCount([in] UINT visible_rows); 990 991 HRESULT GetGroupSubsetCount([out] UINT *visible_rows); 992 993 HRESULT SetRedraw([in] BOOL redraw); 994 995 HRESULT IsMoveInSameFolder(); 996 997 HRESULT DoRename(); 998} 999 1000/***************************************************************************** 1001 * IShellBrowser interface 1002 */ 1003[ 1004 object, 1005 uuid(000214e2-0000-0000-c000-000000000046), 1006 pointer_default(unique) 1007] 1008interface IShellBrowser : IOleWindow 1009{ 1010 typedef IShellBrowser *LPSHELLBROWSER; 1011 1012cpp_quote("#define SBSP_DEFBROWSER 0x00000000") 1013cpp_quote("#define SBSP_SAMEBROWSER 0x00000001") 1014cpp_quote("#define SBSP_NEWBROWSER 0x00000002") 1015cpp_quote("#define SBSP_DEFMODE 0x00000000") 1016cpp_quote("#define SBSP_OPENMODE 0x00000010") 1017cpp_quote("#define SBSP_EXPLOREMODE 0x00000020") 1018cpp_quote("#define SBSP_HELPMODE 0x00000040") 1019cpp_quote("#define SBSP_NOTRANSFERHIST 0x00000080") 1020cpp_quote("#define SBSP_ABSOLUTE 0x00000000") 1021cpp_quote("#define SBSP_RELATIVE 0x00001000") 1022cpp_quote("#define SBSP_PARENT 0x00002000") 1023cpp_quote("#define SBSP_NAVIGATEBACK 0x00004000") 1024cpp_quote("#define SBSP_NAVIGATEFORWARD 0x00008000") 1025cpp_quote("#define SBSP_ALLOW_AUTONAVIGATE 0x00010000") 1026cpp_quote("#define SBSP_KEEPSAMETEMPLATE 0x00020000") 1027cpp_quote("#define SBSP_KEEPWORDWHEELTEXT 0x00040000") 1028cpp_quote("#define SBSP_ACTIVATE_NOFOCUS 0x00080000") 1029cpp_quote("#define SBSP_CREATENOHISTORY 0x00100000") 1030cpp_quote("#define SBSP_PLAYNOSOUND 0x00200000") 1031cpp_quote("#define SBSP_CALLERUNTURUSTED 0x00800000") 1032cpp_quote("#define SBSP_TRUSTFIRSTDOWNLOAD 0x01000000") 1033cpp_quote("#define SBSP_UNTRUSTEDFORDOWNLOAD 0x02000000") 1034cpp_quote("#define SBSP_NOAUTOSELECT 0x04000000") 1035cpp_quote("#define SBSP_WRITENOHISTORY 0x08000000") 1036cpp_quote("#define SBSP_TRUSTEDFORACTIVEX 0x10000000") 1037cpp_quote("#define SBSP_FEEDNAVIGATION 0x20000000") 1038cpp_quote("#define SBSP_REDIRECT 0x40000000") 1039cpp_quote("#define SBSP_INITIATEDBYHLINKFRAME 0x80000000") 1040 1041cpp_quote("#define FCW_STATUS 0x0001") 1042cpp_quote("#define FCW_TOOLBAR 0x0002") 1043cpp_quote("#define FCW_TREE 0x0003") 1044cpp_quote("#define FCW_INTERNETBAR 0x0006") 1045cpp_quote("#define FCW_PROGRESS 0x0008") 1046 1047cpp_quote("#define FCT_MERGE 0x0001") 1048cpp_quote("#define FCT_CONFIGABLE 0x0002") 1049cpp_quote("#define FCT_ADDTOEND 0x0004") 1050 1051cpp_quote("#if 0") 1052 typedef LPARAM LPTBBUTTONSB; 1053cpp_quote("#else") 1054cpp_quote("#include <commctrl.h>") 1055cpp_quote("typedef LPTBBUTTON LPTBBUTTONSB;") 1056cpp_quote("#endif") 1057 1058 HRESULT InsertMenusSB( 1059 [in] HMENU hmenuShared, 1060 [in, out] LPOLEMENUGROUPWIDTHS lpMenuWidths); 1061 1062 HRESULT SetMenuSB( 1063 [in] HMENU hmenuShared, 1064 [in] HOLEMENU holemenuReserved, 1065 [in] HWND hwndActiveObject); 1066 1067 HRESULT RemoveMenusSB( [in] HMENU hmenuShared ); 1068 HRESULT SetStatusTextSB( [in, unique] LPCOLESTR pszStatusText ); 1069 HRESULT EnableModelessSB( [in] BOOL fEnable ); 1070 HRESULT TranslateAcceleratorSB( [in] MSG *pmsg, [in] WORD wID ); 1071 1072 HRESULT BrowseObject( 1073 [in] LPCITEMIDLIST pidl, 1074 [in] UINT wFlags); 1075 1076 HRESULT GetViewStateStream( 1077 [in] DWORD grfMode, 1078 [out] IStream **ppStrm); 1079 1080 HRESULT GetControlWindow( 1081 [in] UINT id, 1082 [out] HWND *phwnd); 1083 1084 [local] HRESULT SendControlMsg( 1085 [in] UINT id, 1086 [in] UINT uMsg, 1087 [in] WPARAM wParam, 1088 [in] LPARAM lParam, 1089 [in] LRESULT *pret); 1090 1091 HRESULT QueryActiveShellView( [out] IShellView **ppshv ); 1092 HRESULT OnViewWindowActive( [in] IShellView *pshv ); 1093 1094 [local] 1095 HRESULT SetToolbarItems( 1096 [in] LPTBBUTTONSB lpButtons, 1097 [in] UINT nButtons, 1098 [in] UINT uFlags); 1099} 1100 1101 1102/***************************************************************************** 1103 * IShellLinkA interface 1104 */ 1105[ 1106 object, 1107 uuid(000214ee-0000-0000-c000-000000000046), 1108 pointer_default(unique) 1109] 1110interface IShellLinkA : IUnknown 1111{ 1112 typedef enum 1113 { 1114 SLR_NO_UI = 0x0001, 1115 SLR_ANY_MATCH = 0x0002, 1116 SLR_UPDATE = 0x0004, 1117 SLR_NOUPDATE = 0x0008, 1118 SLR_NOSEARCH = 0x0010, 1119 SLR_NOTRACK = 0x0020, 1120 SLR_NOLINKINFO = 0x0040, 1121 SLR_INVOKE_MSI = 0x0080, 1122 SLR_NO_UI_WITH_MSG_PUMP = 0x0101, 1123 } SLR_FLAGS; 1124 1125 typedef enum 1126 { 1127 SLGP_SHORTPATH = 0x0001, 1128 SLGP_UNCPRIORITY = 0x0002, 1129 SLGP_RAWPATH = 0x0004, 1130 } SLGP_FLAGS; 1131 1132 HRESULT GetPath( 1133 [out, size_is(cch)] LPSTR pszFile, 1134 [in] int cch, 1135 [in, out, unique] WIN32_FIND_DATAA *pfd, 1136 [in] DWORD fFlags); 1137 1138 HRESULT GetIDList( [out] LPITEMIDLIST * ppidl ); 1139 1140 HRESULT SetIDList( [in] LPCITEMIDLIST pidl ); 1141 1142 HRESULT GetDescription( 1143 [out, size_is(cch)] LPSTR pszName, 1144 [in] int cch); 1145 1146 HRESULT SetDescription( [in] LPCSTR pszName ); 1147 1148 HRESULT GetWorkingDirectory( 1149 [out, size_is(cch)] LPSTR pszDir, 1150 [in] int cch); 1151 1152 HRESULT SetWorkingDirectory( [in] LPCSTR pszDir ); 1153 1154 HRESULT GetArguments( 1155 [out, size_is(cch)] LPSTR pszArgs, 1156 [in] int cch); 1157 1158 HRESULT SetArguments( [in] LPCSTR pszArgs ); 1159 1160 HRESULT GetHotkey( [out] WORD *pwHotkey ); 1161 1162 HRESULT SetHotkey( [in] WORD wHotkey ); 1163 1164 HRESULT GetShowCmd( [out] int *piShowCmd ); 1165 1166 HRESULT SetShowCmd( [in] int iShowCmd ); 1167 1168 HRESULT GetIconLocation( 1169 [out, size_is(cch)] LPSTR pszIconPath, 1170 [in] int cch, 1171 [out] int *piIcon); 1172 1173 HRESULT SetIconLocation( 1174 [in] LPCSTR pszIconPath, 1175 [in] int iIcon); 1176 1177 HRESULT SetRelativePath( 1178 [in] LPCSTR pszPathRel, 1179 [in] DWORD dwReserved); 1180 1181 HRESULT Resolve( 1182 [in] HWND hwnd, 1183 [in] DWORD fFlags); 1184 1185 HRESULT SetPath( [in] LPCSTR pszFile ); 1186} 1187 1188 1189/***************************************************************************** 1190 * IShellLinkW interface 1191 */ 1192[ 1193 object, 1194 uuid(000214f9-0000-0000-c000-000000000046), 1195 pointer_default(unique) 1196] 1197interface IShellLinkW : IUnknown 1198{ 1199 HRESULT GetPath( 1200 [out, size_is(cch)] LPWSTR pszFile, 1201 [in] int cch, 1202 [in, out] WIN32_FIND_DATAW *pfd, 1203 [in] DWORD fFlags); 1204 1205 HRESULT GetIDList( [out] LPITEMIDLIST * ppidl ); 1206 1207 HRESULT SetIDList( [in] LPCITEMIDLIST pidl ); 1208 1209 HRESULT GetDescription( 1210 [out, size_is(cch)] LPWSTR pszName, 1211 [in] int cch); 1212 1213 HRESULT SetDescription( [in] LPCWSTR pszName ); 1214 1215 HRESULT GetWorkingDirectory( 1216 [out, size_is(cch)] LPWSTR pszDir, 1217 [in] int cch); 1218 1219 HRESULT SetWorkingDirectory( [in] LPCWSTR pszDir ); 1220 1221 HRESULT GetArguments( 1222 [out, size_is(cch)] LPWSTR pszArgs, 1223 [in] int cch); 1224 1225 HRESULT SetArguments( [in] LPCWSTR pszArgs ); 1226 1227 HRESULT GetHotkey( [out] WORD *pwHotkey ); 1228 1229 HRESULT SetHotkey( [in] WORD wHotkey ); 1230 1231 HRESULT GetShowCmd( [out] int *piShowCmd ); 1232 1233 HRESULT SetShowCmd( [in] int iShowCmd ); 1234 1235 HRESULT GetIconLocation( 1236 [out, size_is(cch)] LPWSTR pszIconPath, 1237 [in] int cch, 1238 [out] int *piIcon); 1239 1240 HRESULT SetIconLocation( 1241 [in] LPCWSTR pszIconPath, 1242 [in] int iIcon); 1243 1244 HRESULT SetRelativePath( 1245 [in] LPCWSTR pszPathRel, 1246 [in] DWORD dwReserved); 1247 1248 HRESULT Resolve( 1249 [in] HWND hwnd, 1250 [in] DWORD fFlags); 1251 1252 HRESULT SetPath( [in] LPCWSTR pszFile ); 1253} 1254 1255cpp_quote("#define IShellLink WINELIB_NAME_AW(IShellLink)") 1256 1257 1258/***************************************************************************** 1259 * IShellExtInit interface 1260 */ 1261[ 1262 object, 1263 uuid(000214e8-0000-0000-c000-000000000046), 1264 pointer_default(unique), 1265 local 1266] 1267interface IShellExtInit : IUnknown 1268{ 1269 typedef IShellExtInit *LPSHELLEXTINIT; 1270 1271 HRESULT Initialize( 1272 [in] LPCITEMIDLIST pidlFolder, 1273 [in] IDataObject *pdtobj, 1274 [in] HKEY hkeyProgID); 1275} 1276 1277 1278/*******************************************************************************/ 1279/* Note: the following interfaces are not in shobjidl.idl under Windows, they */ 1280/* are declared directly in shlobj.h. It hopefully won't break anything to put */ 1281/* them here anyway. */ 1282/*******************************************************************************/ 1283 1284#ifndef MAX_PATH 1285#define MAX_PATH 260 1286#endif 1287 1288 1289/***************************************************************************** 1290 * IPersistFolder3 interface 1291 */ 1292[ 1293 object, 1294 uuid(cef04fdf-fe72-11d2-87a5-00c04f6837cf), 1295 pointer_default(unique) 1296] 1297interface IPersistFolder3 : IPersistFolder2 1298{ 1299 typedef struct 1300 { 1301 LPITEMIDLIST pidlTargetFolder; 1302 WCHAR szTargetParsingName[MAX_PATH]; 1303 WCHAR szNetworkProvider[MAX_PATH]; 1304 DWORD dwAttributes; 1305 int csidl; 1306 } PERSIST_FOLDER_TARGET_INFO; 1307 1308 HRESULT InitializeEx( 1309 [in] IBindCtx *pbc, 1310 [in] LPCITEMIDLIST pidlRoot, 1311 [in] const PERSIST_FOLDER_TARGET_INFO *ppfti); 1312 1313 HRESULT GetFolderTargetInfo( [out] PERSIST_FOLDER_TARGET_INFO *ppfti ); 1314} 1315 1316 1317/***************************************************************************** 1318 * IExtractIconA interface 1319 */ 1320[ 1321 object, 1322 uuid(000214eb-0000-0000-c000-000000000046), 1323 pointer_default(unique), 1324 local 1325] 1326interface IExtractIconA : IUnknown 1327{ 1328cpp_quote("#define GIL_OPENICON 0x0001") 1329cpp_quote("#define GIL_FORSHELL 0x0002") 1330cpp_quote("#define GIL_ASYNC 0x0020") 1331cpp_quote("#define GIL_DEFAULTICON 0x0040") 1332cpp_quote("#define GIL_FORSHORTCUT 0x0080") 1333 1334cpp_quote("#define GIL_SIMULATEDOC 0x0001") 1335cpp_quote("#define GIL_PERINSTANCE 0x0002") 1336cpp_quote("#define GIL_PERCLASS 0x0004") 1337cpp_quote("#define GIL_NOTFILENAME 0x0008") 1338cpp_quote("#define GIL_DONTCACHE 0x0010") 1339 1340 typedef IExtractIconA *LPEXTRACTICONA; 1341 1342 HRESULT GetIconLocation( 1343 [in] UINT uFlags, 1344 [out, size_is(cchMax)] LPSTR szIconFile, 1345 [in] UINT cchMax, 1346 [out] INT *piIndex, 1347 [out] UINT *pwFlags); 1348 1349 HRESULT Extract( 1350 [in] LPCSTR pszFile, 1351 [in] UINT nIconIndex, 1352 [out] HICON *phiconLarge, 1353 [out] HICON *phiconSmall, 1354 [in] UINT nIconSize ); 1355} 1356 1357 1358/***************************************************************************** 1359 * IExtractIconW interface 1360 */ 1361[ 1362 object, 1363 uuid(000214fa-0000-0000-c000-000000000046), 1364 pointer_default(unique), 1365 local 1366] 1367interface IExtractIconW : IUnknown 1368{ 1369 typedef IExtractIconW *LPEXTRACTICONW; 1370 1371 HRESULT GetIconLocation( 1372 [in] UINT uFlags, 1373 [out, size_is(cchMax)] LPWSTR szIconFile, 1374 [in] UINT cchMax, 1375 [out] INT *piIndex, 1376 [out] UINT *pwFlags); 1377 1378 HRESULT Extract( 1379 [in] LPCWSTR pszFile, 1380 [in] UINT nIconIndex, 1381 [out] HICON *phiconLarge, 1382 [out] HICON *phiconSmall, 1383 [in] UINT nIconSize ); 1384} 1385 1386cpp_quote("#define LPEXTRACTICON WINELIB_NAME_AW(LPEXTRACTICON)") 1387cpp_quote("#define IExtractIcon WINELIB_NAME_AW(IExtractIcon)") 1388 1389 1390/***************************************************************************** 1391 * ICommDlgBrowser interface 1392 */ 1393[ 1394 object, 1395 uuid(000214f1-0000-0000-c000-000000000046), 1396 pointer_default(unique) 1397] 1398interface ICommDlgBrowser : IUnknown 1399{ 1400cpp_quote("#define CDBOSC_SETFOCUS 0x00000000") 1401cpp_quote("#define CDBOSC_KILLFOCUS 0x00000001") 1402cpp_quote("#define CDBOSC_SELCHANGE 0x00000002") 1403cpp_quote("#define CDBOSC_RENAME 0x00000003") 1404cpp_quote("#define CDBOSC_STATECHANGE 0x00000004") 1405 1406 typedef ICommDlgBrowser *LPCOMMDLGBROWSER; 1407 1408 HRESULT OnDefaultCommand( [in] IShellView *shv ); 1409 HRESULT OnStateChange( [in] IShellView *shv, [in] ULONG uChange ); 1410 HRESULT IncludeObject( [in] IShellView *shv, [in] LPCITEMIDLIST pidl ); 1411} 1412 1413 1414/***************************************************************************** 1415 * ICommDlgBrowser2 interface 1416 */ 1417[ 1418 object, 1419 uuid(10339516-2894-11D2-9039-00C04F8EEB3E), 1420 pointer_default(unique) 1421] 1422interface ICommDlgBrowser2 : ICommDlgBrowser 1423{ 1424 1425 HRESULT Notify( 1426 [in] IShellView *ppshv, 1427 [in] DWORD dwNotifyType); 1428 1429 HRESULT GetDefaultMenuText( 1430 [in] IShellView *ppshv, 1431 [out, string, size_is(cchMax)] LPWSTR pszText, 1432 [in] int cchMax); 1433 1434 HRESULT GetViewFlags( 1435 [out] DWORD *pdwFlags); 1436} 1437 1438 1439/***************************************************************************** 1440 * ICommDlgBrowser3 interface 1441 */ 1442[ 1443 object, 1444 uuid(C8AD25A1-3294-41EE-8165-71174BD01C57), 1445 pointer_default(unique) 1446] 1447interface ICommDlgBrowser3 : ICommDlgBrowser2 1448{ 1449 1450 HRESULT OnColumnClicked( 1451 [in] IShellView *ppshv, 1452 [in] int iColumn); 1453 1454 HRESULT GetCurrentFilter( 1455 [out, string, size_is(cchFileSpec)] LPWSTR pszFileSpec, 1456 [in] int cchFileSpec); 1457 1458 HRESULT OnPreviewCreated( 1459 [in] IShellView *ppshv); 1460} 1461 1462/***************************************************************************** 1463 * IDockingWindow interface 1464 */ 1465[ 1466 object, 1467 uuid(012dd920-7b26-11d0-8ca9-00a0c92dbfe8) 1468] 1469interface IDockingWindow : IOleWindow 1470{ 1471 HRESULT ShowDW( 1472 [in] BOOL fShow); 1473 1474 HRESULT CloseDW( 1475 [in] DWORD dwReserved); 1476 1477 HRESULT ResizeBorderDW( 1478 [in] LPCRECT prcBorder, 1479 [in] IUnknown *punkToolbarSite, 1480 [in] BOOL fReserved); 1481}; 1482 1483 1484/***************************************************************************** 1485 * IDockingWindowFrame interface 1486 */ 1487[ 1488 object, 1489 uuid(47d2657a-7b27-11d0-8ca9-00a0c92dbfe8), 1490 pointer_default(unique), 1491 local 1492] 1493interface IDockingWindowFrame : IOleWindow 1494{ 1495cpp_quote("#define DWFRF_NORMAL 0x0000") 1496cpp_quote("#define DWFRF_DELETECONFIGDATA 0x0001") 1497cpp_quote("#define DWFAF_HIDDEN 0x0001") 1498 1499 HRESULT AddToolbar( 1500 [in] IUnknown *punkSrc, 1501 [in] LPCWSTR pwszItem, 1502 [in] DWORD dwAddFlags); 1503 1504 HRESULT RemoveToolbar( 1505 [in] IUnknown *punkSrc, 1506 [in] DWORD dwRemoveFlags); 1507 1508 HRESULT FindToolbar( 1509 [in] LPCWSTR pwszItem, 1510 [in] REFIID riid, 1511 [out] LPVOID *ppvObj); 1512} 1513 1514 1515/***************************************************************************** 1516 * IDragSourceHelper interface 1517 */ 1518[ 1519 object, 1520 uuid(de5bf786-477a-11d2-839d-00c04fd918d0), 1521 pointer_default(unique), 1522 local 1523] 1524interface IDragSourceHelper : IUnknown 1525{ 1526 typedef struct 1527 { 1528 SIZE sizeDragImage; 1529 POINT ptOffset; 1530 HBITMAP hbmpDragImage; 1531 COLORREF crColorKey; 1532 } SHDRAGIMAGE, *LPSHDRAGIMAGE; 1533 1534 HRESULT InitializeFromBitmap( 1535 [in] LPSHDRAGIMAGE pshdi, 1536 [in] IDataObject *pDataObject); 1537 1538 HRESULT InitializeFromWindow( 1539 [in] HWND hwnd, 1540 [in] POINT *ppt, 1541 [in] IDataObject *pDataObject); 1542} 1543 1544 1545/***************************************************************************** 1546 * IDropTargetHelper interface 1547 */ 1548[ 1549 object, 1550 uuid(4657278b-411b-11d2-839a-00c04fd918d0), 1551 pointer_default(unique), 1552 local 1553] 1554interface IDropTargetHelper : IUnknown 1555{ 1556 HRESULT DragEnter( 1557 [in] HWND hwndTarget, 1558 [in] IDataObject *pDataObject, 1559 [in] POINT *ppt, 1560 [in] DWORD dwEffect); 1561 1562 HRESULT DragLeave(); 1563 1564 HRESULT DragOver( 1565 [in] POINT *ppt, 1566 [in] DWORD dwEffect); 1567 1568 HRESULT Drop( 1569 [in] IDataObject *pDataObject, 1570 [in] POINT *ppt, 1571 [in] DWORD dwEffect); 1572 1573 HRESULT Show( [in] BOOL fShow ); 1574} 1575 1576 1577/***************************************************************************** 1578 * IContextMenu interface 1579 */ 1580[ 1581 object, 1582 uuid(000214e4-0000-0000-c000-000000000046), 1583 pointer_default(unique), 1584 local 1585] 1586interface IContextMenu : IUnknown 1587{ 1588cpp_quote("#define CMF_NORMAL 0x00000000") 1589cpp_quote("#define CMF_DEFAULTONLY 0x00000001") 1590cpp_quote("#define CMF_VERBSONLY 0x00000002") 1591cpp_quote("#define CMF_EXPLORE 0x00000004") 1592cpp_quote("#define CMF_NOVERBS 0x00000008") 1593cpp_quote("#define CMF_CANRENAME 0x00000010") 1594cpp_quote("#define CMF_NODEFAULT 0x00000020") 1595cpp_quote("#define CMF_INCLUDESTATIC 0x00000040") 1596cpp_quote("#define CMF_EXTENDEDVERBS 0x00000100") 1597cpp_quote("#define CMF_RESERVED 0xffff0000") 1598 1599cpp_quote("#define GCS_VERBA 0x00000000") 1600cpp_quote("#define GCS_HELPTEXTA 0x00000001") 1601cpp_quote("#define GCS_VALIDATEA 0x00000002") 1602cpp_quote("#define GCS_VERBW 0x00000004") 1603cpp_quote("#define GCS_HELPTEXTW 0x00000005") 1604cpp_quote("#define GCS_VALIDATEW 0x00000006") 1605cpp_quote("#define GCS_UNICODE 0x00000004") 1606cpp_quote("#define GCS_VERB WINELIB_NAME_AW(GCS_VERB)") 1607cpp_quote("#define GCS_HELPTEXT WINELIB_NAME_AW(GCS_HELPTEXT)") 1608cpp_quote("#define GCS_VALIDATE WINELIB_NAME_AW(GCS_VALIDATE)") 1609 1610cpp_quote("#define CMDSTR_NEWFOLDERA \"NewFolder\"") 1611cpp_quote("#define CMDSTR_VIEWLISTA \"ViewList\"") 1612cpp_quote("#define CMDSTR_VIEWDETAILSA \"ViewDetails\"") 1613cpp_quote("#if defined(__GNUC__)") 1614cpp_quote("# define CMDSTR_NEWFOLDERW (const WCHAR []){ 'N','e','w','F','o','l','d','e','r',0 }") 1615cpp_quote("# define CMDSTR_VIEWLISTW (const WCHAR []){ 'V','i','e','w','L','i','s','t',0 }") 1616cpp_quote("# define CMDSTR_VIEWDETAILSW (const WCHAR []){ 'V','i','e','w','D','e','t','a','i','l','s',0 }") 1617cpp_quote("#elif defined(_MSC_VER)") 1618cpp_quote("# define CMDSTR_NEWFOLDERW L\"NewFolder\"") 1619cpp_quote("# define CMDSTR_VIEWLISTW L\"ViewList\"") 1620cpp_quote("# define CMDSTR_VIEWDETAILSW L\"ViewDetails\"") 1621cpp_quote("#else") 1622cpp_quote("static const WCHAR CMDSTR_NEWFOLDERW[] = {'N','e','w','F','o','l','d','e','r',0};") 1623cpp_quote("static const WCHAR CMDSTR_VIEWLISTW [] = {'V','i','e','w','L','i','s','t',0};") 1624cpp_quote("static const WCHAR CMDSTR_VIEWDETAILSW[] = {'V','i','e','w','D','e','t','a','i','l','s',0};") 1625cpp_quote("#endif") 1626cpp_quote("#define CMDSTR_NEWFOLDER WINELIB_NAME_AW(CMDSTR_NEWFOLDER)") 1627cpp_quote("#define CMDSTR_VIEWLIST WINELIB_NAME_AW(CMDSTR_VIEWLIST)") 1628cpp_quote("#define CMDSTR_VIEWDETAILS WINELIB_NAME_AW(CMDSTR_VIEWDETAILS)") 1629 1630cpp_quote("#define CMIC_MASK_HOTKEY SEE_MASK_HOTKEY") 1631cpp_quote("#define CMIC_MASK_ICON SEE_MASK_ICON") 1632cpp_quote("#define CMIC_MASK_FLAG_NO_UI SEE_MASK_FLAG_NO_UI") 1633cpp_quote("#define CMIC_MASK_UNICODE SEE_MASK_UNICODE") 1634cpp_quote("#define CMIC_MASK_NO_CONSOLE SEE_MASK_NO_CONSOLE") 1635cpp_quote("#define CMIC_MASK_HASLINKNAME SEE_MASK_HASLINKNAME") 1636cpp_quote("#define CMIC_MASK_FLAG_SEP_VDM SEE_MASK_FLAG_SEPVDM") 1637cpp_quote("#define CMIC_MASK_HASTITLE SEE_MASK_HASTITLE") 1638cpp_quote("#define CMIC_MASK_ASYNCOK SEE_MASK_ASYNCOK") 1639cpp_quote("#define CMIC_MASK_NOASYNC SEE_MASK_NOASYNC") 1640cpp_quote("#define CMIC_MASK_SHIFT_DOWN 0x10000000") 1641cpp_quote("#define CMIC_MASK_PTINVOKE 0x20000000") 1642cpp_quote("#define CMIC_MASK_CONTROL_DOWN 0x40000000") 1643cpp_quote("#define CMIC_MASK_FLAG_LOG_USAGE SEE_MASK_FLAG_LOG_USAGE") 1644cpp_quote("#define CMIC_MASK_NOZONECHECKS SEE_MASK_NOZONECHECKS") 1645 1646 typedef IContextMenu *LPCONTEXTMENU; 1647 1648 typedef struct tagCMINVOKECOMMANDINFO 1649 { 1650 DWORD cbSize; 1651 DWORD fMask; 1652 HWND hwnd; 1653 LPCSTR lpVerb; 1654 LPCSTR lpParameters; 1655 LPCSTR lpDirectory; 1656 INT nShow; 1657 DWORD dwHotKey; 1658 HANDLE hIcon; 1659 } CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO; 1660 1661 typedef struct tagCMInvokeCommandInfoEx 1662 { 1663 DWORD cbSize; 1664 DWORD fMask; 1665 HWND hwnd; 1666 LPCSTR lpVerb; 1667 LPCSTR lpParameters; 1668 LPCSTR lpDirectory; 1669 INT nShow; 1670 DWORD dwHotKey; 1671 HANDLE hIcon; 1672 LPCSTR lpTitle; 1673 LPCWSTR lpVerbW; 1674 LPCWSTR lpParametersW; 1675 LPCWSTR lpDirectoryW; 1676 LPCWSTR lpTitleW; 1677 POINT ptInvoke; 1678 } CMINVOKECOMMANDINFOEX, *LPCMINVOKECOMMANDINFOEX; 1679 1680 HRESULT QueryContextMenu( 1681 [in] HMENU hmenu, 1682 [in] UINT indexMenu, 1683 [in] UINT idCmdFirst, 1684 [in] UINT idCmdLast, 1685 [in] UINT uFlags); 1686 1687 HRESULT InvokeCommand( [in] LPCMINVOKECOMMANDINFO lpici ); 1688 1689 HRESULT GetCommandString( 1690 [in] UINT_PTR idCmd, 1691 [in] UINT uType, 1692 [out] UINT *pwReserved, 1693 [out, size_is(cchMax)] LPSTR pszName, 1694 [in] UINT cchMax); 1695} 1696 1697 1698/***************************************************************************** 1699 * IContextMenu2 interface 1700 */ 1701[ 1702 object, 1703 uuid(000214f4-0000-0000-c000-000000000046), 1704 pointer_default(unique), 1705 local 1706] 1707interface IContextMenu2 : IContextMenu 1708{ 1709 typedef IContextMenu2 *LPCONTEXTMENU2; 1710 1711 HRESULT HandleMenuMsg( 1712 [in] UINT uMsg, 1713 [in] WPARAM wParam, 1714 [in] LPARAM lParam); 1715} 1716 1717 1718/***************************************************************************** 1719 * IContextMenu3 interface 1720 */ 1721[ 1722 object, 1723 uuid(bcfce0a0-ec17-11d0-8d10-00a0c90f2719), 1724 pointer_default(unique), 1725 local 1726] 1727interface IContextMenu3 : IContextMenu2 1728{ 1729 typedef IContextMenu3 *LPCONTEXTMENU3; 1730 1731 HRESULT HandleMenuMsg2( 1732 [in] UINT uMsg, 1733 [in] WPARAM wParam, 1734 [in] LPARAM lParam, 1735 [out] LRESULT *plResult); 1736} 1737 1738/***************************************************************************** 1739 * IContextMenuCB interface 1740 */ 1741 1742[ 1743 object, 1744 uuid(3409e930-5a39-11d1-83fa-00a0c90dc849), 1745 pointer_default(unique), 1746 local 1747] 1748interface IContextMenuCB : IUnknown 1749{ 1750 HRESULT CallBack( 1751 [in] IShellFolder *psf, 1752 [in] HWND hwndOwner, 1753 [in] IDataObject *pdtobj, 1754 [in] UINT uMsg, 1755 [in] WPARAM wParam, 1756 [in] LPARAM lParam); 1757} 1758 1759/***************************************************************************** 1760 * IShellExecuteHookA interface 1761 */ 1762[ 1763 object, 1764 uuid(000214f5-0000-0000-c000-000000000046), 1765 pointer_default(unique), 1766 local 1767] 1768interface IShellExecuteHookA : IUnknown 1769{ 1770 cpp_quote("struct _SHELLEXECUTEINFOA;") 1771 HRESULT Execute( 1772 [in, out] struct _SHELLEXECUTEINFOA* pei); 1773} 1774 1775 1776/***************************************************************************** 1777 * IShellExecuteHookW interface 1778 */ 1779[ 1780 object, 1781 uuid(000214fb-0000-0000-c000-000000000046), 1782 pointer_default(unique), 1783 local 1784] 1785interface IShellExecuteHookW : IUnknown 1786{ 1787 cpp_quote("struct _SHELLEXECUTEINFOW;") 1788 HRESULT Execute( 1789 [in, out] struct _SHELLEXECUTEINFOW* pei); 1790} 1791 1792/***************************************************************************** 1793 * IShellLinkDataList interface 1794 */ 1795[ 1796 object, 1797 uuid(45e2b4ae-b1c3-11d0-b92f-00a0c90312e1), 1798 pointer_default(unique) 1799] 1800interface IShellLinkDataList : IUnknown 1801{ 1802 [local] HRESULT AddDataBlock( 1803 [in] void *pDataBlock); 1804 [local] HRESULT CopyDataBlock( 1805 [in] DWORD dwSig, 1806 [out] void **ppDataBlock); 1807 HRESULT RemoveDataBlock( 1808 [in] DWORD dwSig); 1809 HRESULT GetFlags( 1810 [out] DWORD *pdwFlags); 1811 HRESULT SetFlags( 1812 [in] DWORD dwFlags); 1813} 1814 1815 1816/***************************************************************************** 1817 * IResolveShellLink interface 1818 */ 1819[ 1820 object, 1821 uuid(5cd52983-9449-11d2-963a-00c04f79adf0), 1822 pointer_default(unique) 1823] 1824interface IResolveShellLink : IUnknown 1825{ 1826 HRESULT ResolveShellLink( 1827 [in] IUnknown *punk, 1828 [in] HWND hwnd, 1829 [in] DWORD fFlags); 1830} 1831 1832 1833/***************************************************************************** 1834 * IURLSearchHook interface 1835 */ 1836[ 1837 object, 1838 uuid(ac60f6a0-0fd9-11d0-99cb-00c04fd64497), 1839 pointer_default(unique), 1840 local 1841] 1842interface IURLSearchHook : IUnknown 1843{ 1844 HRESULT Translate( 1845 [in, out] LPWSTR lpwszSearchURL, 1846 [in] DWORD cchBufferSize); 1847} 1848 1849 1850/***************************************************************************** 1851 * ISearchContext interface 1852 */ 1853[ 1854 object, 1855 uuid(09f656a2-41af-480c-88f7-16cc0d164615), 1856 pointer_default(unique), 1857 local 1858] 1859interface ISearchContext : IUnknown 1860{ 1861 HRESULT GetSearchUrl( 1862 [in] BSTR *pbstrSearchUrl); 1863 HRESULT GetSearchText( 1864 [in] BSTR *pbstrSearchText); 1865 HRESULT GetSearchStyle( 1866 [in] BSTR *pdwSearchStyle); 1867} 1868 1869 1870/***************************************************************************** 1871 * IURLSearchHook2 interface 1872 */ 1873[ 1874 object, 1875 uuid(5ee44da4-6d32-46e3-86bc-07540dedd0e0), 1876 pointer_default(unique), 1877 local 1878] 1879interface IURLSearchHook2 : IURLSearchHook 1880{ 1881 HRESULT TranslateWithSearchContext( 1882 [in, out] LPWSTR lpwszSearchURL, 1883 [in] DWORD cchBufferSize, 1884 [in] ISearchContext *pSearchContext); 1885} 1886 1887 1888cpp_quote("#define INewShortcutHook WINELIB_NAME_AW(INewShortcutHook)") 1889 1890/***************************************************************************** 1891 * INewShortcutHookA interface 1892 */ 1893[ 1894 object, 1895 uuid(000214e1-0000-0000-c000-000000000046), 1896 pointer_default(unique), 1897 local 1898] 1899interface INewShortcutHookA : IUnknown 1900{ 1901 HRESULT SetReferent( 1902 [in] LPCSTR pcszReferent, 1903 [in] HWND hwnd); 1904 HRESULT GetReferent( 1905 [out] LPSTR pcszReferent, 1906 [in] int cchReferent); 1907 HRESULT SetFolder( 1908 [in] LPCSTR pcszReferent); 1909 HRESULT GetFolder( 1910 [out] LPSTR pcszReferent, 1911 [in] int cchFolder); 1912 HRESULT GetName( 1913 [out] LPSTR pszName, 1914 [in] int cchName); 1915 HRESULT GetExtension( 1916 [out] LPSTR pszExtension, 1917 [in] int cchExtension); 1918} 1919 1920 1921/***************************************************************************** 1922 * INewShortcutHookW interface 1923 */ 1924[ 1925 object, 1926 uuid(000214f7-0000-0000-c000-000000000046), 1927 pointer_default(unique), 1928 local 1929] 1930interface INewShortcutHookW : IUnknown 1931{ 1932 HRESULT SetReferent( 1933 [in] LPCWSTR pcszReferent, 1934 [in] HWND hwnd); 1935 HRESULT GetReferent( 1936 [out] LPWSTR pcszReferent, 1937 [in] int cchReferent); 1938 HRESULT SetFolder( 1939 [in] LPCWSTR pcszReferent); 1940 HRESULT GetFolder( 1941 [out] LPWSTR pcszReferent, 1942 [in] int cchFolder); 1943 HRESULT GetName( 1944 [out] LPWSTR pszName, 1945 [in] int cchName); 1946 HRESULT GetExtension( 1947 [out] LPWSTR pszExtension, 1948 [in] int cchExtension); 1949} 1950 1951/***************************************************************************** 1952 * IRunnableTask interface 1953 */ 1954[ 1955 object, 1956 uuid(85788d00-6807-11d0-b810-00c04fd706ec), 1957 pointer_default(unique), 1958 local 1959] 1960interface IRunnableTask : IUnknown 1961{ 1962 HRESULT Run(); 1963 HRESULT Kill([in] BOOL fWait); 1964 HRESULT Suspend(); 1965 HRESULT Resume(); 1966 ULONG IsRunning(); 1967} 1968 1969/***************************************************************************** 1970 * IShellChangeNotify interface 1971 */ 1972[ 1973 object, 1974 uuid(d82be2b1-5764-11d0-a96e-00c04fd705a2), 1975 pointer_default(unique), 1976 local 1977] 1978interface IShellChangeNotify : IUnknown 1979{ 1980 HRESULT OnChange( 1981 [in] LONG lEvent, 1982 [in] LPCITEMIDLIST pidl1, 1983 [in] LPCITEMIDLIST pidl2); 1984} 1985 1986cpp_quote("#define STR_FILE_SYS_BIND_DATA L\"File System Bind Data\"") 1987 1988/***************************************************************************** 1989 * IFileSystemBindData interface 1990 */ 1991[ 1992 object, 1993 uuid(01e18d10-4d8b-11d2-855d-006008059367), 1994 pointer_default(unique), 1995 local 1996] 1997interface IFileSystemBindData : IUnknown 1998{ 1999 HRESULT SetFindData( 2000 [in] const WIN32_FIND_DATAW *pfd); 2001 HRESULT GetFindData( 2002 [out] WIN32_FIND_DATAW *pfd); 2003} 2004 2005/***************************************************************************** 2006 * ITaskbarList interface 2007 */ 2008[ 2009 object, 2010 uuid(56FDF342-FD6D-11d0-958A-006097C9A090), 2011 pointer_default(unique) 2012] 2013interface ITaskbarList : IUnknown 2014{ 2015 HRESULT HrInit(); 2016 2017 HRESULT AddTab( 2018 [in] HWND hwnd); 2019 2020 HRESULT DeleteTab( 2021 [in] HWND hwnd); 2022 2023 HRESULT ActivateTab( 2024 [in] HWND hwnd); 2025 2026 HRESULT SetActiveAlt( 2027 [in] HWND hwnd); 2028} 2029 2030/***************************************************************************** 2031 * ITaskbarList2 interface 2032 */ 2033[ 2034 object, 2035 uuid(602D4995-B13A-429B-A66E-1935E44F4317), 2036 pointer_default(unique) 2037] 2038interface ITaskbarList2 : ITaskbarList 2039{ 2040 HRESULT MarkFullscreenWindow( 2041 [in] HWND hwnd, 2042 [in] BOOL fullscreen); 2043} 2044 2045cpp_quote("#ifdef MIDL_PASS") 2046typedef IUnknown* HIMAGELIST; 2047cpp_quote("#endif") 2048 2049typedef [v1_enum] enum THUMBBUTTONFLAGS { 2050 THBF_ENABLED = 0x0000, 2051 THBF_DISABLED = 0x0001, 2052 THBF_DISMISSONCLICK = 0x0002, 2053 THBF_NOBACKGROUND = 0x0004, 2054 THBF_HIDDEN = 0x0008, 2055 THBF_NONINTERACTIVE = 0x0010 2056} THUMBBUTTONFLAGS; 2057 2058cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONFLAGS)") 2059 2060typedef [v1_enum] enum THUMBBUTTONMASK { 2061 THB_BITMAP = 0x0001, 2062 THB_ICON = 0x0002, 2063 THB_TOOLTIP = 0x0004, 2064 THB_FLAGS = 0x0008 2065} THUMBBUTTONMASK; 2066 2067cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONMASK)") 2068 2069cpp_quote("#include <pshpack8.h>") 2070typedef struct THUMBBUTTON { 2071 THUMBBUTTONMASK dwMask; 2072 UINT iId; 2073 UINT iBitmap; 2074 HICON hIcon; 2075 WCHAR szTip[260]; 2076 THUMBBUTTONFLAGS dwFlags; 2077} THUMBBUTTON, *LPTHUMBBUTTON; 2078cpp_quote("#include <poppack.h>") 2079 2080[ 2081 uuid(ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf), 2082 object 2083] 2084interface ITaskbarList3 : ITaskbarList2 2085{ 2086 typedef [v1_enum] enum TBPFLAG { 2087 TBPF_NOPROGRESS = 0x0000, 2088 TBPF_INDETERMINATE = 0x0001, 2089 TBPF_NORMAL = 0x0002, 2090 TBPF_ERROR = 0x0004, 2091 TBPF_PAUSED = 0x0008 2092 } TBPFLAG; 2093 2094 cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(TBPFLAG)") 2095 2096 HRESULT SetProgressValue( 2097 [in] HWND hwnd, 2098 [in] ULONGLONG ullCompleted, 2099 [in] ULONGLONG ullTotal); 2100 2101 HRESULT SetProgressState( 2102 [in] HWND hwnd, 2103 [in] TBPFLAG tbpFlags); 2104 2105 HRESULT RegisterTab( 2106 [in] HWND hwndTab, 2107 [in] HWND hwndMDI); 2108 2109 HRESULT UnregisterTab([in] HWND hwndTab); 2110 2111 HRESULT SetTabOrder( 2112 [in] HWND hwndTab, 2113 [in] HWND hwndInsertBefore); 2114 2115 HRESULT SetTabActive( 2116 [in] HWND hwndTab, 2117 [in] HWND hwndMDI, 2118 [in] DWORD dwReserved); 2119 2120 HRESULT ThumbBarAddButtons( 2121 [in] HWND hwnd, 2122 [in] UINT cButtons, 2123 [in, size_is(cButtons)] LPTHUMBBUTTON pButton); 2124 2125 HRESULT ThumbBarUpdateButtons( 2126 [in] HWND hwnd, 2127 [in] UINT cButtons, 2128 [in, size_is(cButtons)] LPTHUMBBUTTON pButton); 2129 2130 HRESULT ThumbBarSetImageList( 2131 [in] HWND hwnd, 2132 [in] HIMAGELIST himl); 2133 2134 HRESULT SetOverlayIcon( 2135 [in] HWND hwnd, 2136 [in] HICON hIcon, 2137 [in, unique, string] LPCWSTR pszDescription); 2138 2139 HRESULT SetThumbnailTooltip( 2140 [in] HWND hwnd, 2141 [in, unique, string] LPCWSTR pszTip); 2142 2143 HRESULT SetThumbnailClip( 2144 [in] HWND hwnd, 2145 [in] RECT *prcClip); 2146} 2147 2148[ 2149 uuid(c43dc798-95d1-4bea-9030-bb99e2983a1a), 2150 object 2151] 2152interface ITaskbarList4 : ITaskbarList3 2153{ 2154 typedef [v1_enum] enum STPFLAG { 2155 STPF_NONE = 0x0000, 2156 STPF_USEAPPTHUMBNAILALWAYS = 0x0001, 2157 STPF_USEAPPTHUMBNAILWHENACTIVE = 0x0002, 2158 STPF_USEAPPPEEKALWAYS = 0x0004, 2159 STPF_USEAPPPEEKWHENACTIVE = 0x0008 2160 } STPFLAG; 2161 2162 cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(STPFLAG)") 2163 2164 HRESULT SetTabProperties( 2165 [in] HWND hwndTab, 2166 [in] STPFLAG stpFlags); 2167} 2168 2169/***************************************************************************** 2170 * IDefaultExtractIconInit interface 2171 */ 2172 2173[ 2174 object, 2175 uuid(800AB0B8-F5FA-4e72-8FF3-B1A243B87BD9), /* FIXME: wrong value! */ 2176 pointer_default(unique), 2177 local 2178] 2179interface IDefaultExtractIconInit : IUnknown 2180{ 2181 HRESULT SetDefaultIcon( 2182 [in] LPCWSTR pszFile, 2183 [in] int iIcon); 2184 HRESULT SetFlags( 2185 [in] UINT uFlags); 2186 HRESULT SetKey( 2187 [in] HKEY hkey); 2188 HRESULT SetNormalIcon( 2189 [in] LPCWSTR pszFile, 2190 [in] int iIcon); 2191 HRESULT SetOpenIcon( 2192 [in] LPCWSTR pszFile, 2193 [in] int iIcon); 2194 HRESULT SetShortcutIcon( 2195 [in] LPCWSTR pszFile, 2196 [in] int iIcon); 2197} 2198 2199 2200#ifdef __REACTOS__ 2201/***************************************************************************** 2202 * IExplorerCommand interface (Vista+) 2203 */ 2204 2205interface IEnumExplorerCommand; 2206 2207[ 2208 uuid(A08CE4D0-FA25-44AB-B57C-C7B1C323E0B9), 2209 pointer_default(unique) 2210] 2211interface IExplorerCommand : IUnknown 2212{ 2213 cpp_quote("// GetIcon(ppszIcon) Receives resource string that identifies icon source") 2214 typedef [v1_enum] enum _EXPCMDSTATE 2215 { 2216 ECS_ENABLED = 0x000, 2217 ECS_DISABLED = 0x001, 2218 ECS_HIDDEN = 0x002, 2219 ECS_CHECKBOX = 0x004, 2220 ECS_CHECKED = 0x008, 2221 ECS_RADIOCHECK = 0x010, // Windows 7 2222 } EXPCMDSTATE; 2223 2224 typedef [v1_enum] enum _EXPCMDFLAGS 2225 { 2226 ECF_DEFAULT = 0x000, 2227 ECF_HASSUBCOMMANDS = 0x001, 2228 ECF_HASSPLITBUTTON = 0x002, 2229 ECF_HIDELABEL = 0x004, 2230 ECF_ISSEPARATOR = 0x008, 2231 ECF_HASLUASHIELD = 0x010, 2232 ECF_SEPARATORBEFORE = 0x020, // Windows 7 2233 ECF_SEPARATORAFTER = 0x040, // Windows 7 2234 ECF_ISDROPDOWN = 0x080, // Windows 7 2235 ECF_TOGGLEABLE = 0x100, // Windows 8 2236 ECF_AUTOMENUICONS = 0x200, // Windows 8 2237 } EXPCMDFLAGS; 2238 2239 HRESULT GetTitle( 2240 [in, unique] IShellItemArray *psiItemArray, 2241 [out, string] LPWSTR *ppszName); 2242 HRESULT GetIcon( 2243 [in, unique] IShellItemArray *psiItemArray, 2244 [out, string] LPWSTR *ppszIcon); 2245 HRESULT GetToolTip( 2246 [in, unique] IShellItemArray *psiItemArray, 2247 [out, string] LPWSTR *ppszInfotip); 2248 HRESULT GetCanonicalName( 2249 [out] GUID* pguidCommandName); 2250 HRESULT GetState( 2251 [in] IShellItemArray *psiItemArray, 2252 [in] BOOL fOkToBeSlow, 2253 [out] EXPCMDSTATE *pCmdState); 2254 HRESULT Invoke( 2255 [in] IShellItemArray *psiItemArray, 2256 [in, unique] IBindCtx *pbc); 2257 HRESULT GetFlags( 2258 [out] EXPCMDFLAGS *pFlags); 2259 HRESULT EnumSubCommands( 2260 [out] IEnumExplorerCommand **ppEnum); 2261}; 2262 2263 2264/***************************************************************************** 2265 * IExplorerCommandState interface (Vista+) 2266 */ 2267[ 2268 object, 2269 uuid(BDDACB60-7657-47AE-8445-D23E1ACF82AE), 2270 pointer_default(unique) 2271] 2272interface IExplorerCommandState : IUnknown 2273{ 2274 HRESULT GetState( 2275 [in] IShellItemArray *psiItemArray, 2276 [in] BOOL fOkToBeSlow, 2277 [out] EXPCMDSTATE *pCmdState); 2278} 2279 2280 2281/***************************************************************************** 2282 * IInitializeCommand interface (Vista+) 2283 */ 2284[ 2285 object, 2286 uuid(85075ACF-231F-40EA-9610-D26B7B58F638), 2287 pointer_default(unique) 2288] 2289interface IInitializeCommand : IUnknown 2290{ 2291 HRESULT Initialize( 2292 [in, string] LPCWSTR pszCommandName, 2293 [in] IPropertyBag *ppb); 2294} 2295 2296 2297/***************************************************************************** 2298 * IEnumExplorerCommand interface (Vista+) 2299 */ 2300[ 2301 object, 2302 uuid(A88826F8-186F-4987-AADE-EA0CEF8FBFE8), 2303 pointer_default(unique) 2304] 2305interface IEnumExplorerCommand : IUnknown 2306{ 2307 [local] 2308 HRESULT Next( 2309 [in] ULONG celt, 2310 [out] IExplorerCommand** pUICommand, 2311 [out, optional] ULONG *pceltFetched); 2312 [call_as(Next)] 2313 HRESULT RemoteNext( 2314 [in] ULONG celt, 2315 [out] IExplorerCommand** pUICommand, 2316 [out, optional] ULONG *pceltFetched); 2317 HRESULT Skip( 2318 [in] ULONG celt); 2319 HRESULT Reset(); 2320 HRESULT Clone( 2321 [out] IEnumExplorerCommand **ppenum); 2322}; 2323 2324 2325/***************************************************************************** 2326 * IExplorerCommandProvider interface (Vista+) 2327 */ 2328[ 2329 uuid(64961751-0835-43C0-8FFE-D57686530E64), 2330 pointer_default(unique) 2331] 2332interface IExplorerCommandProvider : IUnknown 2333{ 2334 cpp_quote("// GetCommands usually creates an IEnumExplorerCommand") 2335 cpp_quote("// GetCommand usually creates an IExplorerCommand") 2336 2337 HRESULT GetCommands( 2338 [in] IUnknown *punkSite, 2339 [in] REFIID riid, 2340 [out, iid_is(riid)] void **ppv); 2341 HRESULT GetCommand( 2342 [in] REFGUID rguidCommandId, 2343 [in] REFIID riid, 2344 [out, iid_is(riid)] void **ppv); 2345}; 2346 2347#endif // __REACTOS__ 2348 2349/***************************************************************************** 2350 * IDeskBand interface 2351 */ 2352cpp_quote("#define DBIM_MINSIZE 0x0001") 2353cpp_quote("#define DBIM_MAXSIZE 0x0002") 2354cpp_quote("#define DBIM_INTEGRAL 0x0004") 2355cpp_quote("#define DBIM_ACTUAL 0x0008") 2356cpp_quote("#define DBIM_TITLE 0x0010") 2357cpp_quote("#define DBIM_MODEFLAGS 0x0020") 2358cpp_quote("#define DBIM_BKCOLOR 0x0040") 2359 2360cpp_quote("#include <pshpack8.h>") 2361 2362typedef struct tagDESKBANDINFO 2363{ 2364 DWORD dwMask; 2365 POINTL ptMinSize; 2366 POINTL ptMaxSize; 2367 POINTL ptIntegral; 2368 POINTL ptActual; 2369 WCHAR wszTitle[256]; 2370 DWORD dwModeFlags; 2371 COLORREF crBkgnd; 2372} DESKBANDINFO; 2373 2374cpp_quote("#include <poppack.h>") 2375 2376cpp_quote("#define DBIMF_NORMAL 0x0000") 2377cpp_quote("#define DBIMF_FIXED 0x0001") 2378cpp_quote("#define DBIMF_FIXEDBMP 0x0004 // a fixed background bitmap (if supported)") 2379cpp_quote("#define DBIMF_VARIABLEHEIGHT 0x0008") 2380cpp_quote("#define DBIMF_UNDELETEABLE 0x0010") 2381cpp_quote("#define DBIMF_DEBOSSED 0x0020") 2382cpp_quote("#define DBIMF_BKCOLOR 0x0040") 2383cpp_quote("#define DBIMF_USECHEVRON 0x0080") 2384cpp_quote("#define DBIMF_BREAK 0x0100") 2385cpp_quote("#define DBIMF_ADDTOFRONT 0x0200") 2386cpp_quote("#define DBIMF_TOPALIGN 0x0400") 2387cpp_quote("#if (NTDDI_VERSION >= NTDDI_LONGHORN)") 2388cpp_quote("#define DBIMF_NOGRIPPER 0x0800") 2389cpp_quote("#define DBIMF_ALWAYSGRIPPER 0x1000") 2390cpp_quote("#define DBIMF_NOMARGINS 0x2000") 2391cpp_quote("#endif // NTDDI_LONGHORN") 2392 2393cpp_quote("#define DBIF_VIEWMODE_NORMAL 0x0000") 2394cpp_quote("#define DBIF_VIEWMODE_VERTICAL 0x0001") 2395cpp_quote("#define DBIF_VIEWMODE_FLOATING 0x0002") 2396cpp_quote("#define DBIF_VIEWMODE_TRANSPARENT 0x0004") 2397 2398enum tagDESKBANDCID { 2399 DBID_BANDINFOCHANGED = 0, 2400 DBID_SHOWONLY = 1, 2401 DBID_MAXIMIZEBAND = 2, 2402 DBID_PUSHCHEVRON = 3, 2403 DBID_DELAYINIT = 4, 2404 DBID_FINISHINIT = 5, 2405 DBID_SETWINDOWTHEME = 6, 2406 DBID_PERMITAUTOHIDE = 7, 2407}; 2408 2409cpp_quote("#define DBPC_SELECTFIRST (DWORD)-1") 2410cpp_quote("#define DBPC_SELECTLAST (DWORD)-2") 2411 2412cpp_quote("#define CGID_DeskBand IID_IDeskBand") 2413 2414[ 2415 uuid(EB0FE172-1A3A-11D0-89B3-00A0C90A90AC), 2416 object, 2417] 2418interface IDeskBand : IDockingWindow 2419{ 2420 HRESULT GetBandInfo( 2421 [in] DWORD dwBandID, 2422 [in] DWORD dwViewMode, 2423 [in, out] DESKBANDINFO* pdbi); 2424} 2425 2426cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60)") 2427 2428[ 2429 uuid(EB0FE173-1A3A-11D0-89B3-00A0C90A90AC), 2430 object, 2431 pointer_default(unique), 2432 local 2433] 2434interface IDeskBar : IOleWindow 2435{ 2436 HRESULT SetClient([in] IUnknown* punkClient); 2437 2438 HRESULT GetClient([out] IUnknown** ppunkClient); 2439 2440 HRESULT OnPosRectChangeDB([in] RECT *prc); 2441} 2442 2443 2444/***************************************************************************** 2445 * IMenuPopup interface 2446 */ 2447[ 2448 uuid(D1E7AFEB-6A2E-11d0-8C78-00C04FD918B4), 2449 object, 2450 pointer_default(unique), 2451 local 2452] 2453interface IMenuPopup : IDeskBar 2454{ 2455 enum tagMENUPOPUPSELECT 2456 { 2457 MPOS_EXECUTE = 0, 2458 MPOS_FULLCANCEL, 2459 MPOS_CANCELLEVEL, 2460 MPOS_SELECTLEFT, 2461 MPOS_SELECTRIGHT, 2462 MPOS_CHILDTRACKING 2463 }; 2464 2465 enum tagMENUPOPUPPOPUPFLAGS 2466 { 2467 MPPF_SETFOCUS = 0x00000001, 2468 MPPF_INITIALSELECT = 0x00000002, 2469 MPPF_NOANIMATE = 0x00000004, 2470 MPPF_KEYBOARD = 0x00000010, 2471 MPPF_REPOSITION = 0x00000020, 2472 MPPF_FORCEZORDER = 0x00000040, 2473 MPPF_FINALSELECT = 0x00000080, 2474 MPPF_TOP = 0x20000000, 2475 MPPF_LEFT = 0x40000000, 2476 MPPF_RIGHT = 0x60000000, 2477 MPPF_BOTTOM = 0x80000000, 2478 MPPF_POS_MASK = 0xE0000000, 2479 MPPF_ALIGN_LEFT = 0x02000000, 2480 MPPF_ALIGN_RIGHT = 0x04000000 2481 }; 2482 typedef int MP_POPUPFLAGS; 2483 2484 HRESULT Popup( 2485 [in] POINTL *ppt, 2486 [in] RECTL *prcExclude, 2487 [in] MP_POPUPFLAGS dwFlags); 2488 2489 HRESULT OnSelect([in] DWORD dwSelectType); 2490 2491 HRESULT SetSubMenu( 2492 [in] IMenuPopup* pmp, 2493 [in] BOOL fSet); 2494} 2495 2496cpp_quote("#endif /* _WIN32_IE_IE60 */") 2497 2498cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE40)") 2499 2500/***************************************************************************** 2501 * IBandSite interface 2502 */ 2503cpp_quote("#include <pshpack8.h>") 2504 2505typedef struct tagBANDSITEINFO 2506{ 2507 DWORD dwMask; 2508 DWORD dwState; 2509 DWORD dwStyle; 2510} BANDSITEINFO; 2511 2512cpp_quote("#include <poppack.h>") 2513 2514 2515enum tagBANDSITECID { 2516 BSID_BANDADDED, 2517 BSID_BANDREMOVED, 2518}; 2519 2520cpp_quote("#define BSIM_STATE 0x00000001") 2521cpp_quote("#define BSIM_STYLE 0x00000002") 2522 2523cpp_quote("#define BSSF_VISIBLE 0x00000001") 2524cpp_quote("#define BSSF_NOTITLE 0x00000002") 2525cpp_quote("#define BSSF_UNDELETEABLE 0x00001000") 2526 2527cpp_quote("#define BSIS_AUTOGRIPPER 0x00000000") 2528cpp_quote("#define BSIS_NOGRIPPER 0x00000001") 2529cpp_quote("#define BSIS_ALWAYSGRIPPER 0x00000002") 2530cpp_quote("#define BSIS_LEFTALIGN 0x00000004") 2531cpp_quote("#define BSIS_SINGLECLICK 0x00000008") 2532cpp_quote("#define BSIS_NOCONTEXTMENU 0x00000010") 2533cpp_quote("#define BSIS_NODROPTARGET 0x00000020") 2534cpp_quote("#define BSIS_NOCAPTION 0x00000040") 2535cpp_quote("#define BSIS_PREFERNOLINEBREAK 0x00000080") 2536cpp_quote("#define BSIS_LOCKED 0x00000100") 2537cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)") 2538cpp_quote("#define BSIS_PRESERVEORDERDURINGLAYOUT 0x00000200") 2539cpp_quote("#endif /* _WIN32_IE_IE70 */") 2540 2541cpp_quote("#define SID_SBandSite IID_IBandSite") 2542cpp_quote("#define CGID_BandSite IID_IBandSite") 2543 2544[ 2545 object, 2546 uuid(4CF504B0-DE96-11D0-8B3F-00A0C911E8E5) 2547] 2548interface IBandSite : IUnknown 2549{ 2550 HRESULT AddBand([in] IUnknown* punk); 2551 2552 HRESULT EnumBands( 2553 [in] UINT uBand, 2554 [out] DWORD* pdwBandID); 2555 2556 HRESULT QueryBand( 2557 [in] DWORD dwBandID, 2558 [out] IDeskBand** ppstb, 2559 [out] DWORD* pdwState, 2560 [out, string, size_is(cchName)] LPWSTR pszName, 2561 [in] int cchName); 2562 2563 HRESULT SetBandState( 2564 [in] DWORD dwBandID, 2565 [in] DWORD dwMask, 2566 [in] DWORD dwState); 2567 2568 HRESULT RemoveBand([in] DWORD dwBandID); 2569 2570 HRESULT GetBandObject( 2571 [in] DWORD dwBandID, 2572 [in] REFIID riid, 2573 [out, iid_is(riid)] void **ppv); 2574 2575 HRESULT SetBandSiteInfo([in] const BANDSITEINFO *pbsinfo); 2576 2577 HRESULT GetBandSiteInfo([in, out] BANDSITEINFO *pbsinfo); 2578} 2579 2580cpp_quote("#endif /* _WIN32_IE_IE40 */") 2581 2582/***************************************************************************** 2583 * IMenuBand interface 2584 */ 2585[ 2586 uuid(568804CD-CBD7-11d0-9816-00C04FD91972), 2587 object, 2588 pointer_default(unique), 2589 local 2590] 2591interface IMenuBand : IUnknown 2592{ 2593 enum tagMENUBANDHANDLERCID { 2594 MBHANDCID_PIDLSELECT = 0, 2595 }; 2596 2597 HRESULT IsMenuMessage([in] MSG* pmsg); 2598 2599 HRESULT TranslateMenuMessage( 2600 [in, out] MSG* pmsg, 2601 [out] LRESULT* plRet); 2602} 2603 2604/***************************************************************************** 2605 * IShellMenuCallback interface 2606 */ 2607cpp_quote("#include <pshpack8.h>") 2608 2609typedef struct tagSMDATA 2610{ 2611 DWORD dwMask; 2612 DWORD dwFlags; 2613 HMENU hmenu; 2614 HWND hwnd; 2615 UINT uId; 2616 UINT uIdParent; 2617 UINT uIdAncestor; 2618 IUnknown *punk; 2619 LPITEMIDLIST pidlFolder; 2620 LPITEMIDLIST pidlItem; 2621 IShellFolder *psf; 2622 void *pvUserData; 2623} SMDATA, *LPSMDATA; 2624 2625cpp_quote("#define SMDM_SHELLFOLDER 0x00000001") 2626cpp_quote("#define SMDM_HMENU 0x00000002") 2627cpp_quote("#define SMDM_TOOLBAR 0x00000004") 2628 2629typedef struct tagSMINFO 2630{ 2631 DWORD dwMask; 2632 DWORD dwType; 2633 DWORD dwFlags; 2634 int iIcon; 2635} SMINFO, *PSMINFO; 2636 2637typedef struct tagSHCSCHANGENOTIFYSTRUCT 2638{ 2639 LONG lEvent; 2640 LPCITEMIDLIST pidl1; 2641 LPCITEMIDLIST pidl2; 2642} SMCSHCHANGENOTIFYSTRUCT, *PSMCSHCHANGENOTIFYSTRUCT; 2643 2644cpp_quote("#include <poppack.h>") 2645 2646enum 2647{ 2648 SMIM_TYPE = 0x00000001, 2649 SMIM_FLAGS = 0x00000002, 2650 SMIM_ICON = 0x00000004 2651}; 2652 2653enum 2654{ 2655 SMIT_SEPARATOR = 0x00000001, 2656 SMIT_STRING = 0x00000002 2657}; 2658 2659enum 2660{ 2661 SMIF_ICON = 0x00000001, 2662 SMIF_ACCELERATOR = 0x00000002, 2663 SMIF_DROPTARGET = 0x00000004, 2664 SMIF_SUBMENU = 0x00000008, 2665 SMIF_CHECKED = 0x00000020, 2666 SMIF_DROPCASCADE = 0x00000040, 2667 SMIF_HIDDEN = 0x00000080, 2668 SMIF_DISABLED = 0x00000100, 2669 SMIF_TRACKPOPUP = 0x00000200, 2670 SMIF_DEMOTED = 0x00000400, 2671 SMIF_ALTSTATE = 0x00000800, 2672 SMIF_DRAGNDROP = 0x00001000, 2673 SMIF_NEW = 0x00002000, 2674}; 2675 2676 2677cpp_quote("#define SMC_INITMENU 0x00000001") 2678cpp_quote("#define SMC_CREATE 0x00000002") 2679cpp_quote("#define SMC_EXITMENU 0x00000003") 2680cpp_quote("#define SMC_GETINFO 0x00000005") 2681cpp_quote("#define SMC_GETSFINFO 0x00000006") 2682cpp_quote("#define SMC_GETOBJECT 0x00000007") 2683cpp_quote("#define SMC_GETSFOBJECT 0x00000008") 2684cpp_quote("#define SMC_SFEXEC 0x00000009") 2685cpp_quote("#define SMC_SFSELECTITEM 0x0000000A") 2686cpp_quote("#define SMC_REFRESH 0x00000010") 2687cpp_quote("#define SMC_DEMOTE 0x00000011") 2688cpp_quote("#define SMC_PROMOTE 0x00000012") 2689cpp_quote("#define SMC_DEFAULTICON 0x00000016") 2690cpp_quote("#define SMC_NEWITEM 0x00000017") 2691cpp_quote("#define SMC_CHEVRONEXPAND 0x00000019") 2692cpp_quote("#define SMC_DISPLAYCHEVRONTIP 0x0000002A") 2693cpp_quote("#define SMC_SETSFOBJECT 0x0000002D") 2694cpp_quote("#define SMC_SHCHANGENOTIFY 0x0000002E") 2695cpp_quote("#define SMC_CHEVRONGETTIP 0x0000002F") 2696cpp_quote("#define SMC_SFDDRESTRICTED 0x00000030") 2697 2698[ 2699 uuid(4CA300A1-9B8D-11d1-8B22-00C04FD918D0), 2700 object, 2701 pointer_default(unique), 2702 local 2703] 2704interface IShellMenuCallback : IUnknown 2705{ 2706 HRESULT CallbackSM( 2707 [in, out] LPSMDATA psmd, 2708 [in] UINT uMsg, 2709 [in] WPARAM wParam, 2710 [in] LPARAM lParam); 2711} 2712 2713 2714/***************************************************************************** 2715 * IShellMenu interface 2716 */ 2717 2718cpp_quote("#define SMINIT_DEFAULT 0x00000000") 2719cpp_quote("#define SMINIT_RESTRICT_DRAGDROP 0x00000002") 2720cpp_quote("#define SMINIT_TOPLEVEL 0x00000004") 2721cpp_quote("#define SMINIT_CACHED 0x00000010") 2722cpp_quote("#define SMINIT_VERTICAL 0x10000000") 2723cpp_quote("#define SMINIT_HORIZONTAL 0x20000000") 2724cpp_quote("") 2725cpp_quote("#define ANCESTORDEFAULT (UINT)-1") 2726cpp_quote("") 2727cpp_quote("#define SMSET_TOP 0x10000000") 2728cpp_quote("#define SMSET_BOTTOM 0x20000000") 2729cpp_quote("#define SMSET_DONTOWN 0x00000001") 2730cpp_quote("") 2731cpp_quote("#define SMINV_REFRESH 0x00000001") 2732cpp_quote("#define SMINV_ID 0x00000008") 2733 2734[ 2735 uuid(EE1F7637-E138-11d1-8379-00C04FD918D0), 2736 object, 2737 pointer_default(unique), 2738 local 2739] 2740interface IShellMenu : IUnknown 2741{ 2742 HRESULT Initialize( 2743 [in] IShellMenuCallback *psmc, 2744 [in] UINT uId, 2745 [in] UINT uIdAncestor, 2746 [in] DWORD dwFlags); 2747 2748 HRESULT GetMenuInfo( 2749 [out] IShellMenuCallback **ppsmc, 2750 [out] UINT *puId, 2751 [out] UINT *puIdAncestor, 2752 [out] DWORD *pdwFlags); 2753 2754 HRESULT SetShellFolder( 2755 [in] IShellFolder *psf, 2756 [in] LPCITEMIDLIST pidlFolder, 2757 [in] HKEY hKey, 2758 [in] DWORD dwFlags); 2759 2760 HRESULT GetShellFolder( 2761 [out] DWORD *pdwFlags, 2762 [out] LPITEMIDLIST *ppidl, 2763 [in] REFIID riid, 2764 [out] void **ppv); 2765 2766 HRESULT SetMenu( 2767 [in] HMENU hmenu, 2768 [in] HWND hwnd, 2769 [in] DWORD dwFlags); 2770 2771 HRESULT GetMenu( 2772 [out] HMENU *phmenu, 2773 [out] HWND *phwnd, 2774 [out] DWORD *pdwFlags); 2775 2776 HRESULT InvalidateItem( 2777 [in] LPSMDATA psmd, 2778 [in] DWORD dwFlags); 2779 2780 HRESULT GetState( 2781 [out] LPSMDATA psmd); 2782 2783 HRESULT SetMenuToolbar( 2784 [in] IUnknown *punk, 2785 [in] DWORD dwFlags); 2786} 2787 2788cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60)") 2789 2790/***************************************************************************** 2791 * ITrackShellMenu interface 2792 */ 2793[ 2794 uuid(8278F932-2A3E-11d2-838F-00C04FD918D0), 2795 object, 2796 pointer_default(unique), 2797 local 2798] 2799interface ITrackShellMenu : IShellMenu 2800{ 2801 HRESULT SetObscured( 2802 [in] HWND hwndTB, 2803 [in] IUnknown *punkBand, 2804 DWORD dwSMSetFlags); 2805 2806 HRESULT Popup( 2807 [in] HWND hwnd, 2808 [in] POINTL *ppt, 2809 [in] RECTL *prcExclude, 2810 MP_POPUPFLAGS dwFlags); 2811}; 2812 2813cpp_quote("#endif /* _WIN32_IE_IE60 */") 2814 2815/***************************************************************************** 2816 * IAutoCompleteDropDown interface 2817 */ 2818[ 2819 object, 2820 uuid(3CD141F4-3C6A-11d2-BCAA-00C04FD929DB), 2821 pointer_default(unique) 2822] 2823interface IAutoCompleteDropDown : IUnknown 2824{ 2825cpp_quote("#define ACDD_VISIBLE 0x0001") 2826 2827 HRESULT GetDropDownStatus( 2828 [out] DWORD *pdwFlags, 2829 [out, string] LPWSTR *ppwszString); 2830 2831 HRESULT ResetEnumerator(); 2832} 2833 2834/***************************************************************************** 2835 * IProfferService interface 2836 */ 2837[ 2838 object, 2839 uuid(cb728b20-f786-11ce-92ad-00aa00a74cd0), 2840 pointer_default(unique) 2841] 2842interface IProfferService : IUnknown 2843{ 2844 HRESULT ProfferService( 2845 [in] REFGUID service, 2846 [in] IServiceProvider *pService, 2847 [out] DWORD *pCookie); 2848 2849 HRESULT RevokeService([in] DWORD cookie); 2850} 2851 2852/***************************************************************************** 2853 * IExplorerBrowserEvents interface 2854 */ 2855[ 2856 object, 2857 uuid(361BBDC7-E6EE-4E13-BE58-58E2240C810F) 2858] 2859interface IExplorerBrowserEvents : IUnknown 2860{ 2861 HRESULT OnNavigationPending( 2862 [in] PCIDLIST_ABSOLUTE pidlFolder); 2863 2864 HRESULT OnViewCreated( 2865 [in] IShellView *psv); 2866 2867 HRESULT OnNavigationComplete( 2868 [in] PCIDLIST_ABSOLUTE pidlFolder); 2869 2870 HRESULT OnNavigationFailed( 2871 [in] PCIDLIST_ABSOLUTE pidlFolder); 2872} 2873 2874typedef GUID EXPLORERPANE; 2875typedef EXPLORERPANE *REFEXPLORERPANE; 2876 2877cpp_quote("#define SID_ExplorerPaneVisibility IID_IExplorerPaneVisibility") 2878 2879/***************************************************************************** 2880 * IExplorerPaneVisibility interface 2881 */ 2882[ 2883 object, 2884 uuid(E07010EC-BC17-44C0-97B0-46C7C95B9EDC) 2885] 2886interface IExplorerPaneVisibility : IUnknown 2887{ 2888 typedef enum tagEXPLORERPANESTATE { 2889 EPS_DONTCARE = 0x0, 2890 EPS_DEFAULT_ON = 0x1, 2891 EPS_DEFAULT_OFF = 0x2, 2892 EPS_STATE_MASK = 0xffff, 2893 EPS_INITIALSTATE = 0x10000, 2894 EPS_FORCE = 0x20000 2895 } EXPLORERPANESTATE; 2896 2897 HRESULT GetPaneState( 2898 [in] REFEXPLORERPANE ep, 2899 [out] EXPLORERPANESTATE *peps); 2900} 2901 2902typedef [v1_enum] enum tagEXPLORER_BROWSER_FILL_FLAGS { 2903 EBF_NONE = 0, 2904 EBF_SELECTFROMDATAOBJECT = 0x100, 2905 EBF_NODROPTARGET = 0x200 2906} EXPLORER_BROWSER_FILL_FLAGS; 2907 2908typedef [v1_enum] enum tagEXPLORER_BROWSER_OPTIONS { 2909 EBO_NONE = 0x00, 2910 EBO_NAVIGATEONCE = 0x01, 2911 EBO_SHOWFRAMES = 0x02, 2912 EBO_ALWAYSNAVIGATE = 0x04, 2913 EBO_NOTRAVELLOG = 0x08, 2914 EBO_NOWRAPPERWINDOW = 0x10, 2915 EBO_HTMLSHAREPOINTVIEW = 0x20, 2916 EBO_NOBORDER = 0x40, 2917 EBO_NOPERSISTVIEWSTATE = 0x80, 2918} EXPLORER_BROWSER_OPTIONS; 2919 2920cpp_quote("#define SID_SExplorerBrowserFrame IID_ICommDlgBrowser") 2921 2922/***************************************************************************** 2923 * IExplorerBrowser interface 2924 */ 2925[ 2926 object, 2927 uuid(DFD3B6B5-C10C-4BE9-85F6-A66969F402F6), 2928 pointer_default(unique) 2929] 2930interface IExplorerBrowser : IUnknown 2931{ 2932 2933 [local] HRESULT Initialize( 2934 [in] HWND hwndParent, 2935 [in] const RECT *prc, 2936 [in, unique] const FOLDERSETTINGS *pfs); 2937 2938 HRESULT Destroy(); 2939 2940 [local] HRESULT SetRect( 2941 [in,out,unique] HDWP *phdwp, 2942 [in] RECT rcBrowser); 2943 2944 HRESULT SetPropertyBag( 2945 [in, string] LPCWSTR pszPropertyBag); 2946 2947 HRESULT SetEmptyText( 2948 [in, string] LPCWSTR pszEmptyText); 2949 2950 HRESULT SetFolderSettings( 2951 [in] const FOLDERSETTINGS *pfs); 2952 2953 HRESULT Advise( 2954 [in] IExplorerBrowserEvents *psbe, 2955 [out] DWORD *pdwCookie); 2956 2957 HRESULT Unadvise( 2958 [in] DWORD dwCookie); 2959 2960 HRESULT SetOptions( 2961 [in] EXPLORER_BROWSER_OPTIONS dwFlag); 2962 2963 HRESULT GetOptions( 2964 [out] EXPLORER_BROWSER_OPTIONS *pdwFlag); 2965 2966 HRESULT BrowseToIDList( 2967 [in] PCUIDLIST_RELATIVE pidl, 2968 [in] UINT uFlags); 2969 2970 HRESULT BrowseToObject( 2971 [in] IUnknown *punk, 2972 [in] UINT uFlags); 2973 2974 HRESULT FillFromObject( 2975 [in] IUnknown *punk, 2976 [in] EXPLORER_BROWSER_FILL_FLAGS dwFlags); 2977 2978 HRESULT RemoveAll(); 2979 2980 HRESULT GetCurrentView( 2981 [in] REFIID riid, 2982 [out, iid_is(riid)] void **ppv); 2983} 2984 2985/***************************************************************************** 2986 * INameSpaceTreeControl interface 2987 */ 2988[ 2989 object, 2990 uuid(028212A3-B627-47E9-8856-C14265554E4F) 2991] 2992interface INameSpaceTreeControl : IUnknown 2993{ 2994 [v1_enum] enum _NSTCSTYLE { 2995 NSTCS_HASEXPANDOS = 0x00000001, 2996 NSTCS_HASLINES = 0x00000002, 2997 NSTCS_SINGLECLICKEXPAND = 0x00000004, 2998 NSTCS_FULLROWSELECT = 0x00000008, 2999 NSTCS_SPRINGEXPAND = 0x00000010, 3000 NSTCS_HORIZONTALSCROLL = 0x00000020, 3001 NSTCS_ROOTHASEXPANDO = 0x00000040, 3002 NSTCS_SHOWSELECTIONALWAYS = 0x00000080, 3003 NSTCS_NOINFOTIP = 0x00000200, 3004 NSTCS_EVENHEIGHT = 0x00000400, 3005 NSTCS_NOREPLACEOPEN = 0x00000800, 3006 NSTCS_DISABLEDRAGDROP = 0x00001000, 3007 NSTCS_NOORDERSTREAM = 0x00002000, 3008 NSTCS_RICHTOOLTIP = 0x00004000, 3009 NSTCS_BORDER = 0x00008000, 3010 NSTCS_NOEDITLABELS = 0x00010000, 3011 NSTCS_TABSTOP = 0x00020000, 3012 NSTCS_FAVORITESMODE = 0x00080000, 3013 NSTCS_AUTOHSCROLL = 0x00100000, 3014 NSTCS_FADEINOUTEXPANDOS = 0x00200000, 3015 NSTCS_EMPTYTEXT = 0x00400000, 3016 NSTCS_CHECKBOXES = 0x00800000, 3017 NSTCS_PARTIALCHECKBOXES = 0x01000000, 3018 NSTCS_EXCLUSIONCHECKBOXES = 0x02000000, 3019 NSTCS_DIMMEDCHECKBOXES = 0x04000000, 3020 NSTCS_NOINDENTCHECKS = 0x08000000, 3021 NSTCS_ALLOWJUNCTIONS = 0x10000000, 3022 NSTCS_SHOWTABSBUTTON = 0x20000000, 3023 NSTCS_SHOWDELETEBUTTON = 0x40000000, 3024 NSTCS_SHOWREFRESHBUTTON = (int)0x80000000 3025 }; 3026 typedef DWORD NSTCSTYLE; 3027 3028 [v1_enum] enum _NSTCROOTSTYLE { 3029 NSTCRS_VISIBLE = 0x0000, 3030 NSTCRS_HIDDEN = 0x0001, 3031 NSTCRS_EXPANDED = 0x0002 3032 }; 3033 typedef DWORD NSTCROOTSTYLE; 3034 3035 [v1_enum] enum _NSTCITEMSTATE { 3036 NSTCIS_NONE = 0x0000, 3037 NSTCIS_SELECTED = 0x0001, 3038 NSTCIS_EXPANDED = 0x0002, 3039 NSTCIS_BOLD = 0x0004, 3040 NSTCIS_DISABLED = 0x0008, 3041 NSTCIS_SELECTEDNOEXPAND = 0x0010 3042 }; 3043 typedef DWORD NSTCITEMSTATE; 3044 3045 typedef [v1_enum] enum NSTCGNI { 3046 NSTCGNI_NEXT = 0, 3047 NSTCGNI_NEXTVISIBLE = 1, 3048 NSTCGNI_PREV = 2, 3049 NSTCGNI_PREVVISIBLE = 3, 3050 NSTCGNI_PARENT = 4, 3051 NSTCGNI_CHILD = 5, 3052 NSTCGNI_FIRSTVISIBLE = 6, 3053 NSTCGNI_LASTVISIBLE = 7 3054 } NSTCGNI; 3055 3056 HRESULT Initialize( 3057 [in] HWND hwndParent, 3058 [in, unique] RECT *prc, 3059 [in] NSTCSTYLE nstcsFlags); 3060 3061 HRESULT TreeAdvise( 3062 [in] IUnknown *punk, 3063 [out] DWORD *pdwCookie); 3064 3065 HRESULT TreeUnadvise( 3066 [in] DWORD dwCookie); 3067 3068 HRESULT AppendRoot( 3069 [in] IShellItem *psiRoot, 3070 [in] SHCONTF grfEnumFlags, 3071 [in] NSTCROOTSTYLE grfRootStyle, 3072 [in, unique] IShellItemFilter *pif); 3073 3074 HRESULT InsertRoot( 3075 [in] int iIndex, 3076 [in] IShellItem *psiRoot, 3077 [in] SHCONTF grfEnumFlags, 3078 [in] NSTCROOTSTYLE grfRootStyle, 3079 [in, unique] IShellItemFilter *pif); 3080 3081 HRESULT RemoveRoot( 3082 [in] IShellItem *psiRoot); 3083 3084 HRESULT RemoveAllRoots(); 3085 3086 HRESULT GetRootItems( 3087 [out] IShellItemArray **ppsiaRootItems); 3088 3089 HRESULT SetItemState( 3090 [in] IShellItem *psi, 3091 [in] NSTCITEMSTATE nstcisMask, 3092 [in] NSTCITEMSTATE nstcisFlags); 3093 3094 HRESULT GetItemState( 3095 [in] IShellItem *psi, 3096 [in] NSTCITEMSTATE nstcismask, 3097 [out] NSTCITEMSTATE *pnstcisFlags); 3098 3099 HRESULT GetSelectedItems( 3100 [out] IShellItemArray **psiaItems); 3101 3102 HRESULT GetItemCustomState( 3103 [in] IShellItem *psi, 3104 [out] int *piStateNumber); 3105 3106 HRESULT SetItemCustomState( 3107 [in] IShellItem *psi, 3108 [in] int iStateNumber); 3109 3110 HRESULT EnsureItemVisible( 3111 [in] IShellItem *psi); 3112 3113 HRESULT SetTheme( 3114 [in, string] LPCWSTR pszTheme); 3115 3116 HRESULT GetNextItem( 3117 [in, unique] IShellItem *psi, 3118 [in] NSTCGNI nstcgi, 3119 [out] IShellItem **ppsiNext); 3120 3121 HRESULT HitTest( 3122 [in] POINT *ppt, 3123 [out] IShellItem **ppsiOut); 3124 3125 HRESULT GetItemRect( 3126 [in] IShellItem *psi, 3127 [out] RECT *prect); 3128 3129 HRESULT CollapseAll(); 3130} 3131 3132/***************************************************************************** 3133 * INameSpaceTreeControl2 interface 3134 */ 3135[ 3136 object, 3137 uuid(7CC7AED8-290E-49BC-8945-C1401CC9306C) 3138] 3139interface INameSpaceTreeControl2 : INameSpaceTreeControl 3140{ 3141 typedef [v1_enum] enum NSTCSTYLE2 { 3142 NSTCS2_DEFAULT = 0x00, 3143 NSTCS2_INTERRUPTNOTIFICATIONS = 0x01, 3144 NSTCS2_SHOWNULLSPACEMENU = 0x02, 3145 NSTCS2_DISPLAYPADDING = 0x04, 3146 NSTCS2_DISPLAYPINNEDONLY = 0x08, 3147 NTSCS2_NOSINGLETONAUTOEXPAND = 0x10, /* The apparent typo here is */ 3148 NTSCS2_NEVERINSERTNONENUMERATED = 0x20 /* present also in the Win SDK */ 3149 } NSTCSTYLE2; 3150 cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(NSTCSTYLE2)") 3151 3152 HRESULT SetControlStyle( 3153 [in] NSTCSTYLE nstcsMask, 3154 [in] NSTCSTYLE nstcsStyle); 3155 3156 HRESULT GetControlStyle( 3157 [in] NSTCSTYLE nstcsMask, 3158 [out] NSTCSTYLE *pnstcsStyle); 3159 3160 HRESULT SetControlStyle2( 3161 [in] NSTCSTYLE2 nstcsMask, 3162 [in] NSTCSTYLE2 nstcsStyle); 3163 3164 HRESULT GetControlStyle2( 3165 [in] NSTCSTYLE2 nstcsMask, 3166 [out] NSTCSTYLE2 *pnstcsStyle); 3167} 3168 3169/***************************************************************************** 3170 * INameSpaceTreeControlEvents interface 3171 */ 3172 3173[ 3174 object, 3175 uuid(93D77985-B3D8-4484-8318-672CDDA002CE), 3176 local 3177] 3178interface INameSpaceTreeControlEvents : IUnknown 3179{ 3180 [v1_enum] enum _NSTCEHITTEST { 3181 NSTCEHT_NOWHERE = 0x0001, 3182 NSTCEHT_ONITEMICON = 0x0002, 3183 NSTCEHT_ONITEMLABEL = 0x0004, 3184 NSTCEHT_ONITEMIDENT = 0x0008, 3185 NSTCEHT_ONITEMBUTTON = 0x0010, 3186 NSTCEHT_ONITEMRIGHT = 0x0020, 3187 NSTCEHT_ONITEMSTATEICON = 0x0040, 3188 NSTCEHT_ONITEM = 0x0046, 3189 NSTCEHT_ONITEMTABBUTTON = 0x1000 3190 }; 3191 typedef DWORD NSTCEHITTEST; 3192 3193 [v1_enum] enum _NSTCECLICKTYPE { 3194 NSTCECT_LBUTTON = 0x1, 3195 NSTCECT_MBUTTON = 0x2, 3196 NSTCECT_RBUTTON = 0x3, 3197 NSTCECT_BUTTON = 0x3, 3198 NSTCECT_DBLCLICK = 0x4 3199 }; 3200 typedef DWORD NSTCECLICKTYPE; 3201 3202 HRESULT OnItemClick( 3203 [in] IShellItem *psi, 3204 [in] NSTCEHITTEST nstceHitTest, 3205 [in] NSTCECLICKTYPE nstceClickType); 3206 3207 HRESULT OnPropertyItemCommit( 3208 [in] IShellItem *psi); 3209 3210 HRESULT OnItemStateChanging( 3211 [in] IShellItem *psi, 3212 [in] NSTCITEMSTATE nstcisMask, 3213 [in] NSTCITEMSTATE nstcisState); 3214 3215 HRESULT OnItemStateChanged( 3216 [in] IShellItem *psi, 3217 [in] NSTCITEMSTATE nstcisMask, 3218 [in] NSTCITEMSTATE nstcisState); 3219 3220 HRESULT OnSelectionChanged( 3221 [in] IShellItemArray *psiaSelection); 3222 3223 HRESULT OnKeyboardInput( 3224 [in] UINT uMsg, 3225 [in] WPARAM wParam, 3226 [in] LPARAM lParam); 3227 3228 HRESULT OnBeforeExpand( 3229 [in] IShellItem *psi); 3230 3231 HRESULT OnAfterExpand( 3232 [in] IShellItem *psi); 3233 3234 HRESULT OnBeginLabelEdit( 3235 [in] IShellItem *psi); 3236 3237 HRESULT OnEndLabelEdit( 3238 [in] IShellItem *psi); 3239 3240 HRESULT OnGetToolTip( 3241 [in] IShellItem *psi, 3242 [out, string, size_is(cchTip)] LPWSTR pszTip, 3243 [in] int cchTip); 3244 3245 HRESULT OnBeforeItemDelete( 3246 [in] IShellItem *psi); 3247 3248 HRESULT OnItemAdded( 3249 [in] IShellItem *psi, 3250 [in] BOOL fIsRoot); 3251 3252 HRESULT OnItemDeleted( 3253 [in] IShellItem *psi, 3254 [in] BOOL fIsRoot); 3255 3256 HRESULT OnBeforeContextMenu( 3257 [in, unique] IShellItem *psi, 3258 [in] REFIID riid, 3259 [out, iid_is(riid)] void **ppv); 3260 3261 HRESULT OnAfterContextMenu( 3262 [in] IShellItem *psi, 3263 [in] IContextMenu *pcmIn, 3264 [in] REFIID riid, 3265 [out, iid_is(riid)] void **ppv); 3266 3267 HRESULT OnBeforeStateImageChange( 3268 [in] IShellItem *psi); 3269 3270 HRESULT OnGetDefaultIconIndex( 3271 [in] IShellItem *psi, 3272 [out] int *piDefaultIcon, 3273 [out] int *piOpenIcon); 3274} 3275 3276/***************************************************************************** 3277 * INameSpaceTreeControlCustomDraw interface 3278 */ 3279[ 3280 object, 3281 uuid(2D3BA758-33EE-42D5-BB7B-5F3431D86C78), 3282 local 3283] 3284 3285interface INameSpaceTreeControlCustomDraw : IUnknown 3286{ 3287 typedef struct NSTCCUSTOMDRAW 3288 { 3289 IShellItem *psi; 3290 UINT uItemState; 3291 NSTCITEMSTATE nstcis; 3292 LPCWSTR pszText; 3293 int iImage; 3294 HIMAGELIST himl; 3295 int iLevel; 3296 int iIndent; 3297 } NSTCCUSTOMDRAW; 3298 3299 HRESULT PrePaint( 3300 [in] HDC hdc, 3301 [in] RECT *prc, 3302 [out] LRESULT *plres); 3303 3304 HRESULT PostPaint( 3305 [in] HDC hdc, 3306 [in] RECT *prc); 3307 3308 HRESULT ItemPrePaint( 3309 [in] HDC hdc, 3310 [in] RECT *prc, 3311 [in, out] COLORREF *pclrText, 3312 [in, out] COLORREF *pclrTextBk, 3313 [out] LRESULT *plres); 3314 3315 HRESULT ItemPostPaint( 3316 [in] HDC hdc, 3317 [in] RECT *prc, 3318 [in] NSTCCUSTOMDRAW *pnstccdItem); 3319} 3320 3321/***************************************************************************** 3322 * INameSpaceTreeControlDropHandler interface 3323 */ 3324[ 3325 object, 3326 uuid(F9C665D6-C2F2-4C19-BF33-8322D7352F51), 3327 local 3328] 3329interface INameSpaceTreeControlDropHandler : IUnknown 3330{ 3331 HRESULT OnDragEnter( 3332 [in, unique] IShellItem *psiOver, 3333 [in] IShellItemArray *psiaData, 3334 [in] BOOL fOutsideSource, 3335 [in] DWORD grfKeyState, 3336 [in, out] DWORD *pdwEffect); 3337 3338 HRESULT OnDragOver( 3339 [in, unique] IShellItem *psiOver, 3340 [in] IShellItemArray *psiaData, 3341 [in] DWORD grfKeyState, 3342 [in, out] DWORD *pdwEffect); 3343 3344 HRESULT OnDragPosition( 3345 [in, unique] IShellItem *psiOver, 3346 [in] IShellItemArray *psiaData, 3347 [in] int iNewPosition, 3348 [in] int iOldPosition); 3349 3350 HRESULT OnDrop( 3351 [in, unique] IShellItem *psiOver, 3352 [in] IShellItemArray *psiaData, 3353 [in] int iPosition, 3354 [in] DWORD grfKeyState, 3355 [in, out] DWORD *pdwEffect); 3356 3357 HRESULT OnDropPosition( 3358 [in, unique] IShellItem *psiOver, 3359 [in] IShellItemArray *psiaData, 3360 [in] int iNewPosition, 3361 [in] int iOldPosition); 3362 3363 HRESULT OnDragLeave( 3364 [in, unique] IShellItem *psiOver); 3365} 3366cpp_quote("#define NSTCDHPOS_ONTOP -1") 3367 3368interface IFileDialog; 3369 3370typedef [v1_enum] enum FDE_OVERWRITE_RESPONSE 3371{ 3372 FDEOR_DEFAULT = 0, 3373 FDEOR_ACCEPT = 1, 3374 FDEOR_REFUSE = 2 3375} FDE_OVERWRITE_RESPONSE; 3376 3377typedef [v1_enum] enum FDE_SHAREVIOLATION_RESPONSE 3378{ 3379 FDESVR_DEFAULT = 0, 3380 FDESVR_ACCEPT = 1, 3381 FDESVR_REFUSE = 2 3382} FDE_SHAREVIOLATION_RESPONSE; 3383 3384/***************************************************************************** 3385 * IFileDialogEvents interface 3386 */ 3387[ 3388 object, 3389 uuid(973510DB-7D7F-452B-8975-74A85828D354), 3390 pointer_default(unique) 3391] 3392interface IFileDialogEvents : IUnknown 3393{ 3394 HRESULT OnFileOk( 3395 [in] IFileDialog *pfd); 3396 3397 HRESULT OnFolderChanging( 3398 [in] IFileDialog *pfd, 3399 [in] IShellItem *psiFolder); 3400 3401 HRESULT OnFolderChange( 3402 [in] IFileDialog *pfd); 3403 3404 HRESULT OnSelectionChange( 3405 [in] IFileDialog *pfd); 3406 3407 HRESULT OnShareViolation( 3408 [in] IFileDialog *pfd, 3409 [in] IShellItem *psi, 3410 [out] FDE_SHAREVIOLATION_RESPONSE *pResponse); 3411 3412 HRESULT OnTypeChange( 3413 [in] IFileDialog *pfd); 3414 3415 HRESULT OnOverwrite( 3416 [in] IFileDialog *pfd, 3417 [in] IShellItem *psi, 3418 [out] FDE_OVERWRITE_RESPONSE *pResponse); 3419} 3420 3421/***************************************************************************** 3422 * IModalWindow interface 3423 */ 3424[ 3425 object, 3426 uuid(B4DB1657-70D7-485E-8E3E-6FCB5A5C1802), 3427 pointer_default(unique) 3428] 3429interface IModalWindow : IUnknown 3430{ 3431 [local] 3432 HRESULT Show( 3433 [in, unique, annotation("__in_opt")] HWND hwndOwner); 3434 3435 [call_as(Show)] 3436 HRESULT RemoteShow( 3437 [in, unique] HWND hwndOwner); 3438} 3439 3440typedef [v1_enum] enum FDAP 3441{ 3442 FDAP_BOTTOM = 0, 3443 FDAP_TOP = 1 3444} FDAP; 3445 3446/***************************************************************************** 3447 * IFileDialog interface 3448 */ 3449[ 3450 object, 3451 uuid(42F85136-DB7E-439C-85F1-E4075D135FC8), 3452 pointer_default(unique) 3453] 3454interface IFileDialog : IModalWindow 3455{ 3456 [v1_enum] enum _FILEOPENDIALOGOPTIONS 3457 { 3458 FOS_OVERWRITEPROMPT = 0x00000002, 3459 FOS_STRICTFILETYPES = 0x00000004, 3460 FOS_NOCHANGEDIR = 0x00000008, 3461 FOS_PICKFOLDERS = 0x00000020, 3462 FOS_FORCEFILESYSTEM = 0x00000040, 3463 FOS_ALLNONSTORAGEITEMS = 0x00000080, 3464 FOS_NOVALIDATE = 0x00000100, 3465 FOS_ALLOWMULTISELECT = 0x00000200, 3466 FOS_PATHMUSTEXIST = 0x00000800, 3467 FOS_FILEMUSTEXIST = 0x00001000, 3468 FOS_CREATEPROMPT = 0x00002000, 3469 FOS_SHAREAWARE = 0x00004000, 3470 FOS_NOREADONLYRETURN = 0x00008000, 3471 FOS_NOTESTFILECREATE = 0x00010000, 3472 FOS_HIDEMRUPLACES = 0x00020000, 3473 FOS_HIDEPINNEDPLACES = 0x00040000, 3474 FOS_NODEREFERENCELINKS = 0x00100000, 3475 FOS_DONTADDTORECENT = 0x02000000, 3476 FOS_FORCESHOWHIDDEN = 0x10000000, 3477 FOS_DEFAULTNOMINIMODE = 0x20000000, 3478 FOS_FORCEPREVIEWPANEON = 0x40000000 3479 }; 3480 typedef DWORD FILEOPENDIALOGOPTIONS; 3481 3482 HRESULT SetFileTypes( 3483 [in] UINT cFileTypes, 3484 [in, size_is(cFileTypes)] const COMDLG_FILTERSPEC *rgFilterSpec); 3485 3486 HRESULT SetFileTypeIndex( 3487 [in] UINT iFileType); 3488 3489 HRESULT GetFileTypeIndex( 3490 [out] UINT *piFileType); 3491 3492 HRESULT Advise( 3493 [in] IFileDialogEvents *pfde, 3494 [out] DWORD *pdwCookie); 3495 3496 HRESULT Unadvise( 3497 [in] DWORD dwCookie); 3498 3499 HRESULT SetOptions( 3500 [in] FILEOPENDIALOGOPTIONS fos); 3501 3502 HRESULT GetOptions( 3503 [in] FILEOPENDIALOGOPTIONS *pfos); 3504 3505 HRESULT SetDefaultFolder( 3506 [in] IShellItem *psi); 3507 3508 HRESULT SetFolder( 3509 [in] IShellItem *psi); 3510 3511 HRESULT GetFolder( 3512 [out] IShellItem **ppsi); 3513 3514 HRESULT GetCurrentSelection( 3515 [out] IShellItem **ppsi); 3516 3517 HRESULT SetFileName( 3518 [in, string] LPCWSTR pszName); 3519 3520 HRESULT GetFileName( 3521 [out, string] LPWSTR *pszName); 3522 3523 HRESULT SetTitle( 3524 [in, string] LPCWSTR pszTitle); 3525 3526 HRESULT SetOkButtonLabel( 3527 [in, string] LPCWSTR pszText); 3528 3529 HRESULT SetFileNameLabel( 3530 [in, string] LPCWSTR pszLabel); 3531 3532 HRESULT GetResult( 3533 [out] IShellItem **ppsi); 3534 3535 HRESULT AddPlace( 3536 [in] IShellItem *psi, 3537 [in] FDAP fdap); 3538 3539 HRESULT SetDefaultExtension( 3540 [in, string] LPCWSTR pszDefaultExtension); 3541 3542 HRESULT Close( 3543 [in] HRESULT hr); 3544 3545 HRESULT SetClientGuid( 3546 [in] REFGUID guid); 3547 3548 HRESULT ClearClientData(); 3549 3550 HRESULT SetFilter( 3551 [in] IShellItemFilter *pFilter); 3552} 3553 3554/***************************************************************************** 3555 * IFileDialog2 interface 3556 */ 3557[ 3558 object, 3559 uuid(61744FC7-85B5-4791-A9B0-272276309B13), 3560 pointer_default(unique) 3561] 3562interface IFileDialog2 : IFileDialog 3563{ 3564 HRESULT SetCancelButtonLabel( 3565 [in] LPCWSTR pszLabel); 3566 3567 HRESULT SetNavigationRoot( 3568 [in] IShellItem *psi); 3569} 3570 3571/***************************************************************************** 3572 * IFileOperationProgressSink interface 3573 */ 3574[ 3575 object, 3576 uuid(04B0F1A7-9490-44BC-96E1-4296A31252E2), 3577 pointer_default(unique) 3578] 3579interface IFileOperationProgressSink : IUnknown 3580{ 3581 HRESULT StartOperations(); 3582 3583 HRESULT FinishOperations( 3584 [in] HRESULT hrResult); 3585 3586 HRESULT PreRenameItem( 3587 [in] DWORD dwFlags, 3588 [in] IShellItem *psiItem, 3589 [in, unique, string] LPCWSTR pszNewName); 3590 3591 HRESULT PostRenameItem( 3592 [in] DWORD dwFlags, 3593 [in] IShellItem *psiItem, 3594 [in, string] LPCWSTR pszNewName, 3595 [in] HRESULT hrRename, 3596 [in] IShellItem *psiNewlyCreated); 3597 3598 HRESULT PreMoveItem( 3599 [in] DWORD dwFlags, 3600 [in] IShellItem *psiItem, 3601 [in] IShellItem *psiDestinationFolder, 3602 [in, unique, string] LPCWSTR pszNewName); 3603 3604 HRESULT PostMoveItem( 3605 [in] DWORD dwFlags, 3606 [in] IShellItem *psiItem, 3607 [in] IShellItem *psiDestinationFolder, 3608 [in, unique, string] LPCWSTR pszNewName, 3609 [in] HRESULT hrMove, 3610 [in] IShellItem *psiNewlyCreated); 3611 3612 HRESULT PreCopyItem( 3613 [in] DWORD dwFlags, 3614 [in] IShellItem *psiItem, 3615 [in] IShellItem *psiDestinationFolder, 3616 [in, unique, string] LPCWSTR pszNewName); 3617 3618 HRESULT PostCopyItem( 3619 [in] DWORD dwFlags, 3620 [in] IShellItem *psiItem, 3621 [in] IShellItem *psiDestinationFolder, 3622 [in, unique, string] LPCWSTR pszNewName, 3623 [in] HRESULT hrCopy, 3624 [in] IShellItem *psiNewlyCreated); 3625 3626 HRESULT PreDeleteItem( 3627 [in] DWORD dwFlags, 3628 [in] IShellItem *psiItem); 3629 3630 HRESULT PostDeleteItem( 3631 [in] DWORD dwFlags, 3632 [in] IShellItem *psiItem, 3633 [in] HRESULT hrDelete, 3634 [in] IShellItem *psiNewlyCreated); 3635 3636 HRESULT PreNewItem( 3637 [in] DWORD dwFlags, 3638 [in] IShellItem *psiDestinationFolder, 3639 [in, unique, string] LPCWSTR pszNewName); 3640 3641 HRESULT PostNewItem( 3642 [in] DWORD dwFlags, 3643 [in] IShellItem *psiDestinationFolder, 3644 [in, unique, string] LPCWSTR pszNewName, 3645 [in, unique, string] LPCWSTR pszTemplateName, 3646 [in] DWORD dwFileAttributes, 3647 [in] HRESULT hrNew, 3648 [in] IShellItem *psiNewItem); 3649 3650 HRESULT UpdateProgress( 3651 [in] UINT iWorkTotal, 3652 [in] UINT iWorkSoFar); 3653 3654 HRESULT ResetTimer(); 3655 3656 HRESULT PauseTimer(); 3657 3658 HRESULT ResumeTimer(); 3659} 3660 3661/***************************************************************************** 3662 * IFileSaveDialog interface 3663 */ 3664[ 3665 object, 3666 uuid(84BCCD23-5FDE-4CDB-AEA4-AF64B83D78AB), 3667 pointer_default(unique) 3668] 3669interface IFileSaveDialog : IFileDialog 3670{ 3671 HRESULT SetSaveAsItem( 3672 [in] IShellItem *psi); 3673 3674 HRESULT SetProperties( 3675 [in] IPropertyStore *pStore); 3676 3677 HRESULT SetCollectedProperties( 3678 [in] IPropertyDescriptionList *pList, 3679 [in] BOOL fAppendDefault); 3680 3681 HRESULT GetProperties( 3682 [in] IPropertyStore **ppStore); 3683 3684 HRESULT ApplyProperties( 3685 [in] IShellItem *psi, 3686 [in] IPropertyStore *pStore, 3687 [in, unique] HWND hwnd, 3688 [in, unique] IFileOperationProgressSink *pSink); 3689} 3690 3691 3692/***************************************************************************** 3693 * IFileOpenDialog interface 3694 */ 3695[ 3696 object, 3697 uuid(D57C7288-D4AD-4768-BE02-9D969532D960), 3698 pointer_default(unique) 3699] 3700interface IFileOpenDialog : IFileDialog 3701{ 3702 HRESULT GetResults( 3703 [out] IShellItemArray **ppenum); 3704 3705 HRESULT GetSelectedItems( 3706 [out] IShellItemArray **ppsai); 3707} 3708 3709typedef [v1_enum] enum CDCONTROLSTATEF 3710{ 3711 CDCS_INACTIVE = 0x0, 3712 CDCS_ENABLED = 0x1, 3713 CDCS_VISIBLE = 0x2, 3714 CDCS_ENABLEDVISIBLE = 0x3 3715} CDCONTROLSTATEF; 3716cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(CDCONTROLSTATEF)") 3717/***************************************************************************** 3718 * IFileDialogCustomize interface 3719 */ 3720[ 3721 object, 3722 uuid(E6FDD21A-163F-4975-9C8C-A69F1BA37034), 3723 pointer_default(unique) 3724] 3725interface IFileDialogCustomize : IUnknown 3726{ 3727 HRESULT EnableOpenDropDown( 3728 [in] DWORD dwIDCtl); 3729 3730 HRESULT AddMenu( 3731 [in] DWORD dwIDCtl, 3732 [in, string] LPCWSTR pszLabel); 3733 3734 HRESULT AddPushButton( 3735 [in] DWORD dwIDCtl, 3736 [in, string] LPCWSTR pszLabel); 3737 3738 HRESULT AddComboBox( 3739 [in] DWORD dwIDCtl); 3740 3741 HRESULT AddRadioButtonList( 3742 [in] DWORD dwIDCtl); 3743 3744 HRESULT AddCheckButton( 3745 [in] DWORD dwIDCtl, 3746 [in, string] LPCWSTR pszLabel, 3747 [in] BOOL bChecked); 3748 3749 HRESULT AddEditBox( 3750 [in] DWORD dwIDCtl, 3751 [in, string] LPCWSTR pszText); 3752 3753 HRESULT AddSeparator( 3754 [in] DWORD dwIDCtl); 3755 3756 HRESULT AddText( 3757 [in] DWORD dwIDCtl, 3758 [in, string] LPCWSTR pszText); 3759 3760 HRESULT SetControlLabel( 3761 [in] DWORD dwIDCtl, 3762 [in, string] LPCWSTR pszLabel); 3763 3764 HRESULT GetControlState( 3765 [in] DWORD dwIDCtl, 3766 [out] CDCONTROLSTATEF *pdwState); 3767 3768 HRESULT SetControlState( 3769 [in] DWORD dwIDCtl, 3770 [in] CDCONTROLSTATEF dwState); 3771 3772 HRESULT GetEditBoxText( 3773 [in] DWORD dwIDCtl, 3774 [out, string] WCHAR **ppszText); 3775 3776 HRESULT SetEditBoxText( 3777 [in] DWORD dwIDCtl, 3778 [in, string] LPCWSTR pszText); 3779 3780 HRESULT GetCheckButtonState( 3781 [in] DWORD dwIDCtl, 3782 [out] BOOL *pbChecked); 3783 3784 HRESULT SetCheckButtonState( 3785 [in] DWORD dwIDCtl, 3786 [in] BOOL bChecked); 3787 3788 HRESULT AddControlItem( 3789 [in] DWORD dwIDCtl, 3790 [in] DWORD dwIDItem, 3791 [in] LPCWSTR pszLabel); 3792 3793 HRESULT RemoveControlItem( 3794 [in] DWORD dwIDCtl, 3795 [in] DWORD dwIDItem); 3796 3797 HRESULT RemoveAllControlItems( 3798 [in] DWORD dwIDCtl); 3799 3800 HRESULT GetControlItemState( 3801 [in] DWORD dwIDCtl, 3802 [in] DWORD dwIDItem, 3803 [out] CDCONTROLSTATEF *pdwState); 3804 3805 HRESULT SetControlItemState( 3806 [in] DWORD dwIDCtl, 3807 [in] DWORD dwIDItem, 3808 [in] CDCONTROLSTATEF dwState); 3809 3810 HRESULT GetSelectedControlItem( 3811 [in] DWORD dwIDCtl, 3812 [out] DWORD *pdwIDItem); 3813 3814 HRESULT SetSelectedControlItem( 3815 [in] DWORD dwIDCtl, 3816 [in] DWORD dwIDItem); 3817 3818 HRESULT StartVisualGroup( 3819 [in] DWORD dwIDCtl, 3820 [in, string] LPCWSTR pszLabel); 3821 3822 HRESULT EndVisualGroup(); 3823 3824 HRESULT MakeProminent( 3825 [in] DWORD dwIDCtl); 3826 3827 HRESULT SetControlItemText( 3828 [in] DWORD dwIDCtl, 3829 [in] DWORD dwIDItem, 3830 [in, string] LPCWSTR pszLabel); 3831} 3832 3833/***************************************************************************** 3834 * IFileDialogControlEvents interface 3835 */ 3836[ 3837 object, 3838 uuid(36116642-D713-4B97-9B83-7484A9D00433), 3839 pointer_default(unique) 3840] 3841interface IFileDialogControlEvents : IUnknown 3842{ 3843 HRESULT OnItemSelected( 3844 [in] IFileDialogCustomize *pfdc, 3845 [in] DWORD dwIDCtl, 3846 [in] DWORD dwIDItem); 3847 3848 HRESULT OnButtonClicked( 3849 [in] IFileDialogCustomize *pfdc, 3850 [in] DWORD dwIDCtl); 3851 3852 HRESULT OnCheckButtonToggled( 3853 [in] IFileDialogCustomize *pfdc, 3854 [in] BOOL dwIDCtl, 3855 [in] BOOL bChecked); 3856 3857 HRESULT OnControlActivating( 3858 [in] IFileDialogCustomize *pfdc, 3859 [in] DWORD dwIDCtl); 3860} 3861 3862typedef [v1_enum] enum tagKF_CATEGORY 3863{ 3864 KF_CATEGORY_VIRTUAL = 0x00000001, 3865 KF_CATEGORY_FIXED = 0x00000002, 3866 KF_CATEGORY_COMMON = 0x00000003, 3867 KF_CATEGORY_PERUSER = 0x00000004 3868} KF_CATEGORY; 3869 3870typedef [v1_enum] enum tagKF_REDIRECTION_CAPABILITIES 3871{ 3872 KF_REDIRECTION_CAPABILITIES_ALLOW_ALL = 0x000000ff, 3873 KF_REDIRECTION_CAPABILITIES_REDIRECTABLE = 0x00000001, 3874 KF_REDIRECTION_CAPABILITIES_DENY_ALL = 0x000fff00, 3875 KF_REDIRECTION_CAPABILITIES_DENY_POLICY_REDIRECTED = 0x00000100, 3876 KF_REDIRECTION_CAPABILITIES_DENY_POLICY = 0x00000200, 3877 KF_REDIRECTION_CAPABILITIES_DENY_PERMISSIONS = 0x00000400 3878} KF_REDIRECTION_CAPABILITIES; 3879 3880typedef [v1_enum] enum tagKF_DEFINITION_FLAGS 3881{ 3882 KFDF_LOCAL_REDIRECT_ONLY = 0x00000002, 3883 KFDF_ROAMABLE = 0x00000004, 3884 KFDF_PRECREATE = 0x00000008, 3885 KFDF_STREAM = 0x00000010, 3886 KFDF_PUBLISHEXPANDEDPATH = 0x00000020 3887} KF_DEFINITION_FLAGS; 3888 3889typedef struct tagKNOWNFOLDER_DEFINITION 3890{ 3891 KF_CATEGORY category; 3892 LPWSTR pszName; 3893 LPWSTR pszDescription; 3894 KNOWNFOLDERID fidParent; 3895 LPWSTR pszRelativePath; 3896 LPWSTR pszParsingName; 3897 LPWSTR pszTooltip; 3898 LPWSTR pszLocalizedName; 3899 LPWSTR pszIcon; 3900 LPWSTR pszSecurity; 3901 DWORD dwAttributes; 3902 KF_DEFINITION_FLAGS kfdFlags; 3903 FOLDERTYPEID ftidType; 3904} KNOWNFOLDER_DEFINITION; 3905 3906[ 3907 object, 3908 uuid(3aa7af7e-9b36-420C-a8e3-f77d4674a488), 3909 pointer_default(ref) 3910] 3911interface IKnownFolder : IUnknown 3912{ 3913 HRESULT GetId( 3914 [out] KNOWNFOLDERID *pkfid); 3915 3916 HRESULT GetCategory( 3917 [out] KF_CATEGORY *pCategory); 3918 3919 HRESULT GetShellItem( 3920 [in] DWORD dwFlags, 3921 [in] REFIID riid, 3922 [out, iid_is(riid)] void **ppv); 3923 3924 HRESULT GetPath( 3925 [in] DWORD dwFlags, 3926 [out, string] LPWSTR *ppszPath); 3927 3928 HRESULT SetPath( 3929 [in] DWORD dwFlags, 3930 [in, string] LPCWSTR pszPath); 3931 3932 HRESULT GetIDList( 3933 [in] DWORD dwFlags, 3934 [out] PIDLIST_ABSOLUTE *ppidl); 3935 3936 HRESULT GetFolderType( 3937 [out] FOLDERTYPEID *pftid); 3938 3939 HRESULT GetRedirectionCapabilities( 3940 [out] KF_REDIRECTION_CAPABILITIES *pCapabilities); 3941 3942 HRESULT GetFolderDefinition( 3943 [out] KNOWNFOLDER_DEFINITION *pKFD); 3944} 3945 3946typedef [v1_enum] enum tagKF_REDIRECT_FLAGS 3947{ 3948 KF_REDIRECT_USER_EXCLUSIVE = 0x00000001, 3949 KF_REDIRECT_COPY_SOURCE_DACL = 0x00000002, 3950 KF_REDIRECT_OWNER_USER = 0x00000004, 3951 KF_REDIRECT_SET_OWNER_EXPLICIT = 0x00000008, 3952 KF_REDIRECT_CHECK_ONLY = 0x00000010, 3953 KF_REDIRECT_WITH_UI = 0x00000020, 3954 KF_REDIRECT_UNPIN = 0x00000040, 3955 KF_REDIRECT_PIN = 0x00000080, 3956 KF_REDIRECT_COPY_CONTENTS = 0x00000200, 3957 KF_REDIRECT_DEL_SOURCE_CONTENTS = 0x00000400, 3958 KF_REDIRECT_EXCLUDE_ALL_KNOWN_SUBFOLDERS = 0x00000800 3959} KF_REDIRECT_FLAGS; 3960 3961[ 3962 object, 3963 uuid(8BE2D872-86AA-4d47-B776-32CCA40C7018), 3964 pointer_default(ref) 3965] 3966interface IKnownFolderManager : IUnknown 3967{ 3968 typedef [v1_enum] enum tagFFFP_MODE 3969 { 3970 FFFP_EXACTMATCH, 3971 FFFP_NEARESTPARENTMATCH 3972 } FFFP_MODE; 3973 3974 HRESULT FolderIdFromCsidl( 3975 [in] int nCsidl, 3976 [out] KNOWNFOLDERID *pfid); 3977 3978 HRESULT FolderIdToCsidl( 3979 [in] REFKNOWNFOLDERID rfid, 3980 [out] int *pnCsidl); 3981 3982 HRESULT GetFolderIds( 3983 [out, size_is(, *pCount)] KNOWNFOLDERID **ppKFId, 3984 [in, out] UINT *pCount); 3985 3986 HRESULT GetFolder( 3987 [in] REFKNOWNFOLDERID rfid, 3988 [out] IKnownFolder **ppkf); 3989 3990 HRESULT GetFolderByName( 3991 [in, string] LPCWSTR pszCanonicalName, 3992 [out] IKnownFolder **ppkf); 3993 3994 HRESULT RegisterFolder( 3995 [in] REFKNOWNFOLDERID rfid, 3996 [in] KNOWNFOLDER_DEFINITION const *pKFD); 3997 3998 HRESULT UnregisterFolder( 3999 [in] REFKNOWNFOLDERID rfid); 4000 4001 HRESULT FindFolderFromPath( 4002 [in, string] LPCWSTR pszPath, 4003 [in] FFFP_MODE mode, 4004 [out] IKnownFolder **ppkf); 4005 4006 HRESULT FindFolderFromIDList( 4007 [in] PCIDLIST_ABSOLUTE pidl, 4008 [out] IKnownFolder **ppkf); 4009 4010 HRESULT Redirect( 4011 [in] REFKNOWNFOLDERID rfid, 4012 [in, unique] HWND hwnd, 4013 [in] KF_REDIRECT_FLAGS flags, 4014 [in, unique, string] LPCWSTR pszTargetPath, 4015 [in] UINT cFolders, 4016 [in, size_is(cFolders), unique] KNOWNFOLDERID const *pExclusion, 4017 [out, string] LPWSTR *ppszError); 4018} 4019 4020/* function for releasing structure returned from IKnownFolder::GetFolderDefinition */ 4021cpp_quote("static inline void FreeKnownFolderDefinitionFields(KNOWNFOLDER_DEFINITION *pKFD)") 4022cpp_quote("{") 4023cpp_quote(" CoTaskMemFree(pKFD->pszName);") 4024cpp_quote(" CoTaskMemFree(pKFD->pszDescription);") 4025cpp_quote(" CoTaskMemFree(pKFD->pszRelativePath);") 4026cpp_quote(" CoTaskMemFree(pKFD->pszParsingName);") 4027cpp_quote(" CoTaskMemFree(pKFD->pszTooltip);") 4028cpp_quote(" CoTaskMemFree(pKFD->pszLocalizedName);") 4029cpp_quote(" CoTaskMemFree(pKFD->pszIcon);") 4030cpp_quote(" CoTaskMemFree(pKFD->pszSecurity);") 4031cpp_quote("}") 4032 4033typedef [v1_enum] enum ASSOCIATIONLEVEL { 4034 AL_MACHINE, 4035 AL_EFFECTIVE, 4036 AL_USER 4037} ASSOCIATIONLEVEL; 4038 4039typedef [v1_enum] enum ASSOCIATIONTYPE { 4040 AT_FILEEXTENSION, 4041 AT_URLPROTOCOL, 4042 AT_STARTMENUCLIENT, 4043 AT_MIMETYPE 4044} ASSOCIATIONTYPE; 4045 4046[ 4047 object, 4048 uuid(4e530b0a-e611-4c77-a3ac-9031d022281b), 4049 pointer_default(unique) 4050] 4051interface IApplicationAssociationRegistration : IUnknown 4052{ 4053 HRESULT QueryCurrentDefault( 4054 [in, string] LPCWSTR pszQuery, 4055 [in] ASSOCIATIONTYPE atQueryType, 4056 [in] ASSOCIATIONLEVEL alQueryLevel, 4057 [out, string] LPWSTR *ppszAssociation); 4058 4059 HRESULT QueryAppIsDefault( 4060 [in, string] LPCWSTR pszQuery, 4061 [in] ASSOCIATIONTYPE atQueryType, 4062 [in] ASSOCIATIONLEVEL alQueryLevel, 4063 [in, string] LPCWSTR pszAppRegistryName, 4064 [out] BOOL *pfDefault); 4065 4066 HRESULT QueryAppIsDefaultAll( 4067 [in] ASSOCIATIONLEVEL alQueryLevel, 4068 [in, string] LPCWSTR pszAppRegistryName, 4069 [out] BOOL* pfDefault); 4070 4071 HRESULT SetAppAsDefault( 4072 [in, string] LPCWSTR pszAppRegistryName, 4073 [in, string] LPCWSTR pszSet, 4074 [in] ASSOCIATIONTYPE atSetType); 4075 4076 HRESULT SetAppAsDefaultAll( 4077 [in, string] LPCWSTR pszAppRegistryName); 4078 4079 HRESULT ClearUserAssociations(); 4080} 4081 4082[ 4083 uuid(6332debf-87b5-4670-90c0-5e57b408a49e), 4084 object, 4085 pointer_default(unique) 4086] 4087interface ICustomDestinationList : IUnknown 4088{ 4089 typedef [v1_enum] enum KNOWNDESTCATEGORY { 4090 KDC_FREQUENT = 1, 4091 KDC_RECENT 4092 } KNOWNDESTCATEGORY; 4093 4094 HRESULT SetAppID([in, string] LPCWSTR pszAppID); 4095 4096 HRESULT BeginList( 4097 [out] UINT *pcMinSlots, 4098 [in] REFIID riid, 4099 [out, iid_is(riid)] void **ppv); 4100 4101 HRESULT AppendCategory( 4102 [in, string] LPCWSTR pszCategory, 4103 [in] IObjectArray *poa); 4104 4105 HRESULT AppendKnownCategory([in] KNOWNDESTCATEGORY category); 4106 HRESULT AddUserTasks([in] IObjectArray *poa); 4107 HRESULT CommitList(); 4108 4109 HRESULT GetRemovedDestinations( 4110 [in] REFIID riid, 4111 [out, iid_is(riid)] void **ppv); 4112 4113 HRESULT DeleteList([in, unique, string] LPCWSTR pszAppID); 4114 HRESULT AbortList(); 4115} 4116 4117[ 4118 uuid(ddefe873-6997-4e68-be26-39b633adbe12), 4119 object, 4120 pointer_default(unique) 4121] 4122interface IQueryCancelAutoPlay : IUnknown 4123{ 4124 HRESULT AllowAutoPlay([in, string] LPCWSTR path, 4125 [in] DWORD content_type, 4126 [in, string] LPCWSTR label, 4127 [in] DWORD serial_number); 4128} 4129 4130[ 4131 uuid(d594d0d8-8da7-457b-b3b4-ce5dbaac0b88), 4132 pointer_default(unique) 4133] 4134interface ITransferAdviseSink : IUnknown 4135{ 4136 [v1_enum] enum _TRANSFER_ADVISE_STATE 4137 { 4138 TS_NONE = 0, 4139 TS_PERFORMING = 1, 4140 TS_PREPARING = 2, 4141 TS_INDETERMINATE = 4 4142 }; 4143 typedef DWORD TRANSFER_ADVISE_STATE; 4144 4145 HRESULT UpdateProgress([in] ULONGLONG size_current, 4146 [in] ULONGLONG size_total, 4147 [in] INT files_current, 4148 [in] INT files_total, 4149 [in] INT folders_current, 4150 [in] INT folders_total); 4151 HRESULT UpdateTransferState([in] TRANSFER_ADVISE_STATE state); 4152 HRESULT ConfirmOverwrite([in] IShellItem *source, 4153 [in] IShellItem *dest_parent, 4154 [in, string] LPCWSTR name); 4155 HRESULT ConfirmEncryptLoss([in] IShellItem *source); 4156 HRESULT FileFailure([in] IShellItem *item, 4157 [in, unique, string] LPCWSTR itemname, 4158 [in] HRESULT hr, 4159 [in, out, unique, size_is(crename)] LPWSTR rename, 4160 [in] ULONG crename); 4161 HRESULT SubStreamFailure([in] IShellItem *item, 4162 [in, string] LPCWSTR stream, 4163 [in] HRESULT hr); 4164 HRESULT PropertyFailure([in] IShellItem *item, 4165 [in, unique] const PROPERTYKEY *key, 4166 [in] HRESULT hr); 4167} 4168 4169[v1_enum] enum _TRANSFER_SOURCE_FLAGS 4170{ 4171 TSF_NORMAL = 0, 4172 TSF_FAIL_EXIST = 0, 4173 TSF_RENAME_EXIST = 0x1, 4174 TSF_OVERWRITE_EXIST = 0x2, 4175 TSF_ALLOW_DECRYPTION = 0x4, 4176 TSF_NO_SECURITY = 0x8, 4177 TSF_COPY_CREATION_TIME = 0x10, 4178 TSF_COPY_WRITE_TIME = 0x20, 4179 TSF_USE_FULL_ACCESS = 0x40, 4180 TSF_DELETE_RECYCLE_IF_POSSIBLE = 0x80, 4181 TSF_COPY_HARD_LINK = 0x100, 4182 TSF_COPY_LOCALIZED_NAME = 0x200, 4183 TSF_MOVE_AS_COPY_DELETE = 0x400, 4184 TSF_SUSPEND_SHELLEVENTS = 0x800 4185}; 4186typedef DWORD TRANSFER_SOURCE_FLAGS; 4187 4188[ 4189 uuid(00adb003-bde9-45c6-8e29-d09f9353e108), 4190 object, 4191 pointer_default(unique) 4192] 4193interface ITransferSource : IUnknown 4194{ 4195 HRESULT Advise([in] ITransferAdviseSink *sink, [out] DWORD *cookie); 4196 HRESULT Unadvise([in] DWORD cookie); 4197 HRESULT SetProperties([in] IPropertyChangeArray *array); 4198 HRESULT OpenItem([in] IShellItem *item, 4199 [in] TRANSFER_SOURCE_FLAGS flags, 4200 [in] REFIID riid, 4201 [out, iid_is(riid)] void **ppv); 4202 HRESULT MoveItem([in] IShellItem *item, 4203 [in] IShellItem *parent_dest, 4204 [in, string] LPCWSTR name_dest, 4205 [in] TRANSFER_SOURCE_FLAGS flags, 4206 [out] IShellItem **newitem); 4207 HRESULT RecycleItem([in] IShellItem *source, 4208 [in] IShellItem *parent_dest, 4209 [in] TRANSFER_SOURCE_FLAGS flags, 4210 [out] IShellItem **new_dest); 4211 HRESULT RemoveItem([in] IShellItem *source, [in] TRANSFER_SOURCE_FLAGS flags); 4212 HRESULT RenameItem([in] IShellItem *source, 4213 [in, string] LPCWSTR newname, 4214 [in] TRANSFER_SOURCE_FLAGS flags, 4215 [out] IShellItem **new_dest); 4216 HRESULT LinkItem([in] IShellItem *source, 4217 [in] IShellItem *parent_dest, 4218 [in, unique, string] LPCWSTR new_name, 4219 [in] TRANSFER_SOURCE_FLAGS flags, 4220 [out] IShellItem **new_dest); 4221 HRESULT ApplyPropertiesToItem([in] IShellItem *source, [out] IShellItem **newitem); 4222 HRESULT GetDefaultDestinationName([in] IShellItem *source, 4223 [in] IShellItem *parent_dest, 4224 [out, string] LPWSTR *dest_name); 4225 HRESULT EnterFolder([in] IShellItem *child_folder); 4226 HRESULT LeaveFolder([in] IShellItem *child_folder); 4227} 4228 4229[ 4230 uuid(48addd32-3ca5-4124-abe3-b5a72531b207), 4231 object, 4232 pointer_default(unique) 4233] 4234interface ITransferDestination : IUnknown 4235{ 4236 HRESULT Advise([in] ITransferAdviseSink *sink, [out] DWORD *cookie); 4237 HRESULT Unadvise([in] DWORD cookie); 4238 HRESULT CreateItem([in, string] LPCWSTR name, 4239 [in] DWORD attr, 4240 [in] ULONGLONG size, 4241 [in] TRANSFER_SOURCE_FLAGS flags, 4242 [in] REFIID riid, 4243 [out, iid_is(riid)] void **ppv, 4244 [in] REFIID resources, 4245 [out, iid_is(riid)] void **presources); 4246} 4247 4248[ 4249 uuid(92218cab-ecaa-4335-8133-807fd234c2ee), 4250 object, 4251 pointer_default(unique) 4252] 4253interface IAssocHandlerInvoker : IUnknown 4254{ 4255 HRESULT SupportsSelection(); 4256 HRESULT Invoke(); 4257} 4258 4259[ 4260 uuid(f04061ac-1659-4a3f-a954-775aa57fc083), 4261 object, 4262 pointer_default(unique) 4263] 4264interface IAssocHandler : IUnknown 4265{ 4266 HRESULT GetName([out, string] LPWSTR *name); 4267 HRESULT GetUIName([out, string] LPWSTR *uiname); 4268 HRESULT GetIconLocation([out, string] LPWSTR *path, 4269 [out] int *index); 4270 HRESULT IsRecommended(); 4271 HRESULT MakeDefault([in, string] LPCWSTR description); 4272 HRESULT Invoke([in] IDataObject *object); 4273 HRESULT CreateInvoker([in] IDataObject *object, 4274 [out] IAssocHandlerInvoker **invoker); 4275} 4276 4277[ 4278 uuid(973810ae-9599-4b88-9e4d-6ee98c9552da), 4279 object, 4280 pointer_default(unique) 4281] 4282interface IEnumAssocHandlers : IUnknown 4283{ 4284 HRESULT Next([in] ULONG count, 4285 [out, size_is(count), length_is(*fetched)] IAssocHandler **handlers, 4286 [out] ULONG *fetched); 4287} 4288 4289typedef enum ASSOC_FILTER 4290{ 4291 ASSOC_FILTER_NONE = 0, 4292 ASSOC_FILTER_RECOMMENDED 4293} ASSOC_FILTER; 4294cpp_quote("HRESULT WINAPI SHAssocEnumHandlers(PCWSTR extra, ASSOC_FILTER filter, IEnumAssocHandlers **handlersenum);") 4295 4296typedef [v1_enum] enum ACTIVATEOPTIONS 4297{ 4298 AO_NONE = 0x00000000, 4299 AO_DESIGNMODE = 0x00000001, 4300 AO_NOERRORUI = 0x00000002, 4301 AO_NOSPLASHSCREEN = 0x00000004 4302} ACTIVATEOPTIONS; 4303 4304[ 4305 uuid(2e941141-7f97-4756-ba1d-9decde894a3d), 4306 object, 4307 pointer_default(unique) 4308] 4309interface IApplicationActivationManager : IUnknown 4310{ 4311 HRESULT ActivateApplication([in] LPCWSTR appusermodelid, 4312 [in, unique] LPCWSTR arguments, 4313 [in] ACTIVATEOPTIONS options, 4314 [out] DWORD *processid); 4315 HRESULT ActivateForFile([in] LPCWSTR appusermodelid, 4316 [in] IShellItemArray *itemarray, 4317 [in, unique] LPCWSTR verb, 4318 [out] DWORD *processid); 4319 HRESULT ActivateForProtocol([in] LPCWSTR appusermodelid, 4320 [in] IShellItemArray *itemarray, 4321 [out] DWORD *processid); 4322} 4323 4324/***************************************************************************** 4325 * ShellObjects typelibrary 4326 */ 4327[ 4328 uuid(50A7E9B1-70EF-11D1-B75A-00A0C90564FE), 4329 lcid(0x0000), 4330 version(1.0) 4331] 4332library ShellObjects 4333{ 4334 [ 4335 uuid(71F96385-DDD6-48D3-A0C1-AE06E8B055FB) 4336 ] 4337 coclass ExplorerBrowser 4338 { 4339 interface IExplorerBrowser; 4340 } 4341 4342 [ 4343 uuid(DC1C5A9C-E88A-4DDE-A5A1-60F82A20AEF7) 4344 ] 4345 coclass FileOpenDialog 4346 { 4347 interface IFileOpenDialog; 4348 } 4349 4350 [ 4351 uuid(C0B4E2F3-BA21-4773-8DBA-335EC946EB8B) 4352 ] 4353 coclass FileSaveDialog 4354 { 4355 interface IFileSaveDialog; 4356 } 4357 4358 [ 4359 uuid(AE054212-3535-4430-83ED-D501AA6680E6) 4360 ] 4361 coclass NamespaceTreeControl 4362 { 4363 interface INameSpaceTreeControl2; 4364 } 4365 4366 [ 4367 uuid(4df0c730-df9d-4ae3-9153-aa6b82e9795a) 4368 ] 4369 coclass KnownFolderManager 4370 { 4371 interface IKnownFolderManager; 4372 } 4373 4374 [ 4375 uuid(591209c7-767b-42b2-9fba-44ee4615f2c7) 4376 ] 4377 coclass ApplicationAssociationRegistration 4378 { 4379 interface IApplicationAssociationRegistration; 4380 } 4381 4382 [ 4383 uuid(00021401-0000-0000-c000-000000000046) 4384 ] 4385 coclass ShellLink 4386 { 4387 interface IShellLinkW; 4388 } 4389 4390 [ 4391 uuid(56fdf344-fd6d-11d0-958a-006097c9a090) 4392 ] 4393 coclass TaskbarList 4394 { 4395 interface ITaskbarList4; 4396 } 4397 4398 [ 4399 uuid(77f10cf0-3db5-4966-b520-b7c54fd35ed6) 4400 ] 4401 coclass DestinationList { 4402 interface ICustomDestinationList; 4403 } 4404 4405 [ 4406 uuid(2d3468c1-36a7-43b6-ac24-d3f02fd9607a) 4407 ] 4408 coclass EnumerableObjectCollection 4409 { 4410 interface IEnumObjects; 4411 } 4412 4413 [ 4414 uuid(331f1768-05a9-4ddd-b86e-dae34ddc998a) 4415 ] 4416 coclass QueryCancelAutoPlay 4417 { 4418 interface IQueryCancelAutoPlay; 4419 } 4420 4421 [ 4422 uuid(9ac9fbe1-e0a2-4ad6-b4ee-e212013ea917) 4423 ] 4424 coclass ShellItem { 4425 interface IShellItem2; 4426 } 4427 4428 [ 4429 uuid(45ba127d-10a8-46ea-8ab7-56ea9078943c) 4430 ] 4431 coclass ApplicationActivationManager 4432 { 4433 interface IApplicationActivationManager; 4434 } 4435} 4436 4437enum _OPPROGDLGF 4438{ 4439 OPPROGDLG_DEFAULT = 0, 4440 OPPROGDLG_ENABLEPAUSE = 0x80, 4441 OPPROGDLG_ALLOWUNDO = 0x100, 4442 OPPROGDLG_DONTDISPLAYSOURCEPATH = 0x200, 4443 OPPROGDLG_DONTDISPLAYDESTPATH = 0x400, 4444 OPPROGDLG_NOMULTIDAYESTIMATES = 0x800, 4445 OPPROGDLG_DONTDISPLAYLOCATIONS = 0x1000 4446}; 4447typedef DWORD OPPROGDLGF; 4448 4449enum _PDMODE 4450{ 4451 PDM_DEFAULT = 0, 4452 PDM_RUN = 0x1, 4453 PDM_PREFLIGHT = 0x2, 4454 PDM_UNDOING = 0x4, 4455 PDM_ERRORSBLOCKING = 0x8, 4456 PDM_INDETERMINATE = 0x10 4457}; 4458typedef DWORD PDMODE; 4459 4460typedef enum PDOPSTATUS 4461{ 4462 PDOPS_RUNNING = 1, 4463 PDOPS_PAUSED = 2, 4464 PDOPS_CANCELLED = 3, 4465 PDOPS_STOPPED = 4, 4466 PDOPS_ERRORS = 5 4467} PDOPSTATUS; 4468 4469typedef enum _SPACTION 4470{ 4471 SPACTION_NONE = 0, 4472 SPACTION_MOVING = 1, 4473 SPACTION_COPYING = 2, 4474 SPACTION_RECYCLING = 3, 4475 SPACTION_APPLYINGATTRIBS = 4, 4476 SPACTION_DOWNLOADING = 5, 4477 SPACTION_SEARCHING_INTERNET = 6, 4478 SPACTION_CALCULATING = 7, 4479 SPACTION_UPLOADING = 8, 4480 SPACTION_SEARCHING_FILES = 9, 4481 SPACTION_DELETING = 10, 4482 SPACTION_RENAMING = 11, 4483 SPACTION_FORMATTING = 12, 4484 SPACTION_COPY_MOVING = 13 4485} SPACTION; 4486 4487[ 4488 uuid(0C9FB851-E5C9-43EB-A370-F0677B13874C), 4489 object, 4490 pointer_default(unique) 4491] 4492interface IOperationsProgressDialog : IUnknown 4493{ 4494 HRESULT StartProgressDialog( 4495 [in] HWND hwndOwner, 4496 [in] OPPROGDLGF flags); 4497 HRESULT StopProgressDialog(); 4498 HRESULT SetOperation( 4499 [in] SPACTION action); 4500 HRESULT SetMode( 4501 [in] PDMODE mode); 4502 HRESULT UpdateProgress( 4503 [in] ULONGLONG ullPointsCurrent, 4504 [in] ULONGLONG ullPointsTotal, 4505 [in] ULONGLONG ullSizeCurrent, 4506 [in] ULONGLONG ullSizeTotal, 4507 [in] ULONGLONG ullItemsCurrent, 4508 [in] ULONGLONG ullItemsTotal); 4509 HRESULT UpdateLocations( 4510 [in, optional] IShellItem *psiSource, 4511 [in, optional] IShellItem *psiTarget, 4512 [in, optional] IShellItem *psiItem); 4513 HRESULT ResetTimer(); 4514 HRESULT PauseTimer(); 4515 HRESULT ResumeTimer(); 4516 HRESULT GetMilliseconds( 4517 [out] ULONGLONG *pullElapsed, 4518 [out] ULONGLONG *pullRemaining); 4519 HRESULT GetOperationStatus( 4520 [out] PDOPSTATUS *popstatus); 4521}; 4522 4523[ 4524 uuid(947aab5f-0a5c-4c13-b4d6-4bf7836fc9f8), 4525 object, 4526 pointer_default(unique) 4527] 4528interface IFileOperation : IUnknown 4529{ 4530 HRESULT Advise( 4531 [in] IFileOperationProgressSink *pfops, 4532 [out] DWORD *pdwCookie); 4533 HRESULT Unadvise( 4534 [in] DWORD dwCookie); 4535 HRESULT SetOperationFlags( 4536 [in] DWORD dwOperationFlags); 4537 HRESULT SetProgressMessage( 4538 [in] LPCWSTR pszMessage); 4539 HRESULT SetProgressDialog( 4540 [in] IOperationsProgressDialog *popd); 4541 HRESULT SetProperties( 4542 [in] IPropertyChangeArray *pproparray); 4543 HRESULT SetOwnerWindow( 4544 [in] HWND hwndOwner); 4545 HRESULT ApplyPropertiesToItem( 4546 [in] IShellItem *psiItem); 4547 HRESULT ApplyPropertiesToItems( 4548 [in] IUnknown *punkItems); 4549 HRESULT RenameItem( 4550 [in] IShellItem *psiItem, 4551 [in] LPCWSTR pszNewName, 4552 [in] IFileOperationProgressSink *pfopsItem); 4553 HRESULT RenameItems( 4554 [in] IUnknown *pUnkItems, 4555 [in] LPCWSTR pszNewName); 4556 HRESULT MoveItem( 4557 [in] IShellItem *psiItem, 4558 [in] IShellItem *psiDestinationFolder, 4559 [in] LPCWSTR pszNewName, 4560 [in] IFileOperationProgressSink *pfopsItem); 4561 HRESULT MoveItems( 4562 [in] IUnknown *punkItems, 4563 [in] IShellItem *psiDestinationFolder); 4564 HRESULT CopyItem( 4565 [in] IShellItem *psiItem, 4566 [in] IShellItem *psiDestinationFolder, 4567 [in] LPCWSTR pszCopyName, 4568 [in] IFileOperationProgressSink *pfopsItem); 4569 HRESULT CopyItems( 4570 [in] IUnknown *punkItems, 4571 [in] IShellItem *psiDestinationFolder); 4572 HRESULT DeleteItem( 4573 [in] IShellItem *psiItem, 4574 [in] IFileOperationProgressSink *pfopsItem); 4575 HRESULT DeleteItems( 4576 [in] IUnknown *punkItems); 4577 HRESULT NewItem( 4578 [in] IShellItem *psiDestinationFolder, 4579 [in] DWORD dwFileAttributes, 4580 [in] LPCWSTR pszName, 4581 [in] LPCWSTR pszTemplateName, 4582 [in] IFileOperationProgressSink *pfopsItem); 4583 HRESULT PerformOperations(); 4584 HRESULT GetAnyOperationsAborted( 4585 [out] BOOL *pfAnyOperationsAborted); 4586}; 4587 4588[ 4589 uuid(6CCB7BE0-6807-11d0-B810-00C04FD706EC), 4590 object, 4591 local, 4592 pointer_default(unique) 4593] 4594interface IShellTaskScheduler : IUnknown 4595{ 4596 HRESULT AddTask( 4597 [in] IRunnableTask *pTask, 4598 [in] REFGUID rtoid, 4599 [in] DWORD_PTR lParam, 4600 [in] DWORD dwPriority); 4601 HRESULT RemoveTasks( 4602 [in] REFGUID rtoid, 4603 [in] DWORD_PTR lParam, 4604 [in] BOOL fWaitIfRunning); 4605 UINT CountTasks( 4606 [in] REFGUID rtoid); 4607 HRESULT Status( 4608 [in] DWORD dwReleaseStatus, 4609 [in] DWORD dwThreadTimeout); 4610} 4611 4612 4613[ 4614 uuid(47c01f95-e185-412c-b5c5-4f27df965aea), 4615 object, 4616 pointer_default(unique) 4617] 4618interface IFolderBandPriv : IUnknown 4619{ 4620 HRESULT SetCascade([in] BOOL fCascade); 4621 4622 HRESULT SetAccelerators([in] BOOL fAccelerators); 4623 4624 HRESULT SetNoIcons([in] BOOL fNoIcons); 4625 4626 HRESULT SetNoText([in] BOOL fNoText); 4627} 4628