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