Reactos
at master 2844 lines 94 kB view raw
1/* 2 * Copyright (C) the Wine project 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19#ifndef __WINE_SHLOBJ_H 20#define __WINE_SHLOBJ_H 21 22#include <ole2.h> 23#include <commctrl.h> 24#include <prsht.h> 25 26#ifndef INITGUID 27#include <shlguid.h> 28#endif 29 30#ifdef WINE_NO_UNICODE_MACROS 31#undef GetObject 32#endif 33 34#ifdef __cplusplus 35extern "C" { 36#endif /* defined(__cplusplus) */ 37 38/* Except for specific structs, this header is byte packed */ 39#include <pshpack1.h> 40 41#include <shtypes.h> 42#include <shobjidl.h> 43 44#include <pshpack8.h> 45 46typedef struct 47{ 48 DWORD dwSize; 49 DWORD dwMask; 50 SHELLVIEWID* pvid; 51 LPSTR pszWebViewTemplate; 52 DWORD cchWebViewTemplate; 53 LPSTR pszWebViewTemplateVersion; 54 LPSTR pszInfoTip; 55 DWORD cchInfoTip; 56 CLSID* pclsid; 57 DWORD dwFlags; 58 LPSTR pszIconFile; 59 DWORD cchIconFile; 60 int iIconIndex; 61 LPSTR pszLogo; 62 DWORD cchLogo; 63} SHFOLDERCUSTOMSETTINGSA, *LPSHFOLDERCUSTOMSETTINGSA; 64 65typedef struct 66{ 67 DWORD dwSize; 68 DWORD dwMask; 69 SHELLVIEWID* pvid; 70 LPWSTR pszWebViewTemplate; 71 DWORD cchWebViewTemplate; 72 LPWSTR pszWebViewTemplateVersion; 73 LPWSTR pszInfoTip; 74 DWORD cchInfoTip; 75 CLSID* pclsid; 76 DWORD dwFlags; 77 LPWSTR pszIconFile; 78 DWORD cchIconFile; 79 int iIconIndex; 80 LPWSTR pszLogo; 81 DWORD cchLogo; 82} SHFOLDERCUSTOMSETTINGSW, *LPSHFOLDERCUSTOMSETTINGSW; 83 84#include <poppack.h> 85 86#define FCS_READ 0x00000001 87#define FCS_FORCEWRITE 0x00000002 88 89#define FCSM_ICONFILE 0x00000010 90 91#ifndef HPSXA_DEFINED 92#define HPSXA_DEFINED 93DECLARE_HANDLE(HPSXA); 94#endif 95 96typedef enum 97{ 98 KF_FLAG_DEFAULT = 0x00000000, 99 KF_FLAG_SIMPLE_IDLIST = 0x00000100, 100 KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200, 101 KF_FLAG_DEFAULT_PATH = 0x00000400, 102 KF_FLAG_INIT = 0x00000800, 103 KF_FLAG_NO_ALIAS = 0x00001000, 104 KF_FLAG_DONT_UNEXPAND = 0x00002000, 105 KF_FLAG_DONT_VERIFY = 0x00004000, 106 KF_FLAG_CREATE = 0x00008000, 107 KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000, 108 KF_FLAG_ALIAS_ONLY = 0x80000000 109} KNOWN_FOLDER_FLAG; 110 111typedef int GPFIDL_FLAGS; 112 113typedef struct _SFVM_PROPPAGE_DATA 114{ 115 DWORD dwReserved; 116 LPFNADDPROPSHEETPAGE pfn; 117 LPARAM lParam; 118} SFVM_PROPPAGE_DATA, *LPSFVM_PROPPAGE_DATA; 119 120UINT 121WINAPI 122SHAddFromPropSheetExtArray( 123 _In_ HPSXA, 124 _In_ LPFNADDPROPSHEETPAGE, 125 LPARAM); 126 127LPVOID WINAPI SHAlloc(SIZE_T) __WINE_ALLOC_SIZE(1); 128 129HRESULT 130WINAPI 131SHCoCreateInstance( 132 _In_opt_ LPCWSTR, 133 _In_opt_ const CLSID*, 134 _In_opt_ IUnknown*, 135 _In_ REFIID, 136 _Outptr_ LPVOID*); 137 138HPSXA WINAPI SHCreatePropSheetExtArray(_In_ HKEY, _In_opt_ LPCWSTR, UINT); 139HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY,LPCWSTR,UINT,IDataObject*); 140HRESULT WINAPI SHCreateQueryCancelAutoPlayMoniker(IMoniker**); 141 142HRESULT 143WINAPI 144SHCreateShellItem( 145 _In_opt_ PCIDLIST_ABSOLUTE, 146 _In_opt_ IShellFolder*, 147 _In_ PCUITEMID_CHILD, 148 _Outptr_ IShellItem**); 149 150DWORD WINAPI SHCLSIDFromStringA(_In_ LPCSTR, _Out_ CLSID*); 151DWORD WINAPI SHCLSIDFromStringW(_In_ LPCWSTR, _Out_ CLSID*); 152#define SHCLSIDFromString WINELIB_NAME_AW(SHCLSIDFromString) 153 154HRESULT 155WINAPI 156SHCreateStdEnumFmtEtc( 157 _In_ UINT cfmt, 158 _In_reads_(cfmt) const FORMATETC *, 159 _Outptr_ IEnumFORMATETC**); 160 161void WINAPI SHDestroyPropSheetExtArray(_In_ HPSXA); 162BOOL WINAPI SHFindFiles(_In_opt_ PCIDLIST_ABSOLUTE, _In_opt_ PCIDLIST_ABSOLUTE); 163DWORD WINAPI SHFormatDrive(_In_ HWND, UINT, UINT, UINT); 164void WINAPI SHFree(_In_opt_ LPVOID); 165 166BOOL 167WINAPI 168GetFileNameFromBrowse( 169 _In_opt_ HWND, 170 _Inout_updates_(cchFilePath) LPWSTR, 171 UINT cchFilePath, 172 _In_opt_ LPCWSTR, 173 _In_ LPCWSTR, 174 _In_opt_ LPCWSTR, 175 _In_opt_ LPCWSTR); 176 177_Check_return_ HRESULT WINAPI SHGetInstanceExplorer(_Outptr_ IUnknown**); 178 179VOID WINAPI SHSetInstanceExplorer(_In_opt_ IUnknown*); 180 181HRESULT 182WINAPI 183SHGetFolderPathAndSubDirA( 184 _Reserved_ HWND, 185 _In_ int, 186 _In_opt_ HANDLE, 187 _In_ DWORD, 188 _In_opt_ LPCSTR, _Out_writes_(MAX_PATH) LPSTR); 189 190HRESULT 191WINAPI 192SHGetFolderPathAndSubDirW( 193 _Reserved_ HWND, 194 _In_ int, 195 _In_opt_ HANDLE, 196 _In_ DWORD, 197 _In_opt_ LPCWSTR, 198 _Out_writes_(MAX_PATH) LPWSTR); 199 200#define SHGetFolderPathAndSubDir WINELIB_NAME_AW(SHGetFolderPathAndSubDir) 201 202HRESULT WINAPI 203SHSetFolderPathA( 204 _In_ INT csidl, 205 _In_ HANDLE hToken, 206 _In_ DWORD dwFlags, 207 _In_ LPCSTR pszPath); 208 209HRESULT WINAPI 210SHSetFolderPathW( 211 _In_ INT csidl, 212 _In_ HANDLE hToken, 213 _In_ DWORD dwFlags, 214 _In_ LPCWSTR pszPath); 215 216#define SHSetFolderPath WINELIB_NAME_AW(SHSetFolderPath) 217 218BOOL WINAPI 219PathIsSlowA( 220 _In_ LPCSTR pszFile, 221 _In_ DWORD dwAttr); 222 223BOOL WINAPI 224PathIsSlowW( 225 _In_ LPCWSTR pszFile, 226 _In_ DWORD dwAttr); 227 228#define PathIsSlow WINELIB_NAME_AW(PathIsSlow) 229 230_Success_(return != 0) 231BOOL 232WINAPI 233SHGetPathFromIDListA( 234 _In_ PCIDLIST_ABSOLUTE, 235 _Out_writes_(MAX_PATH) LPSTR); 236 237_Success_(return != 0) 238BOOL 239WINAPI 240SHGetPathFromIDListW( 241 _In_ PCIDLIST_ABSOLUTE, 242 _Out_writes_(MAX_PATH) LPWSTR); 243 244#define SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList) 245 246INT WINAPI SHHandleUpdateImage(_In_ PCIDLIST_ABSOLUTE); 247 248HRESULT 249WINAPI 250SHILCreateFromPath( 251 _In_ PCWSTR, 252 _Outptr_ PIDLIST_ABSOLUTE*, 253 _Inout_opt_ DWORD*); 254 255HRESULT WINAPI SHLoadOLE(LPARAM); 256 257HRESULT 258WINAPI 259SHParseDisplayName( 260 _In_ PCWSTR pszName, 261 _In_opt_ IBindCtx* pbc, 262 _Outptr_ PIDLIST_ABSOLUTE* ppidl, 263 _In_ SFGAOF sfgaoIn, 264 _Out_opt_ SFGAOF* psfgaoOut); 265 266HRESULT 267WINAPI 268SHPathPrepareForWriteA( 269 _In_opt_ HWND, 270 _In_opt_ IUnknown*, 271 _In_ LPCSTR, DWORD); 272 273HRESULT 274WINAPI 275SHPathPrepareForWriteW( 276 _In_opt_ HWND, 277 _In_opt_ IUnknown*, 278 _In_ LPCWSTR, DWORD); 279 280#define SHPathPrepareForWrite WINELIB_NAME_AW(SHPathPrepareForWrite) 281 282UINT 283WINAPI 284SHReplaceFromPropSheetExtArray( 285 _In_ HPSXA, 286 UINT, 287 _In_ LPFNADDPROPSHEETPAGE, 288 LPARAM); 289 290PIDLIST_ABSOLUTE WINAPI SHSimpleIDListFromPath(PCWSTR); 291 292int 293WINAPI 294SHMapPIDLToSystemImageListIndex( 295 _In_ IShellFolder*, 296 _In_ PCUITEMID_CHILD, 297 _Out_opt_ int*); 298 299HRESULT WINAPI SHStartNetConnectionDialog(HWND,LPCSTR,DWORD); 300VOID WINAPI SHUpdateImageA(_In_ LPCSTR, INT, UINT, INT); 301VOID WINAPI SHUpdateImageW(_In_ LPCWSTR, INT, UINT, INT); 302#define SHUpdateImage WINELIB_NAME_AW(SHUpdateImage) 303 304INT 305WINAPI 306PickIconDlg( 307 _In_opt_ HWND, 308 _Inout_updates_(cchIconPath) LPWSTR, 309 UINT cchIconPath, 310 _Inout_opt_ int *); 311 312HRESULT 313WINAPI 314SHLimitInputEdit( 315 _In_ HWND hwnd, 316 _In_ IShellFolder *folder); 317 318int WINAPI RestartDialog(_In_opt_ HWND, _In_opt_ LPCWSTR, DWORD); 319int WINAPI RestartDialogEx(_In_opt_ HWND, _In_opt_ LPCWSTR, DWORD, DWORD); 320int WINAPI DriveType(int); 321int WINAPI RealDriveType(int, BOOL); 322int WINAPI IsNetDrive(int); 323BOOL WINAPI IsUserAnAdmin(void); 324 325#define KF_FLAG_DEFAULT_PATH 0x00000400 326 327#define SHFMT_ERROR 0xFFFFFFFFL /* Error on last format, drive may be formattable */ 328#define SHFMT_CANCEL 0xFFFFFFFEL /* Last format was cancelled */ 329#define SHFMT_NOFORMAT 0xFFFFFFFDL /* Drive is not formattable */ 330 331/* SHFormatDrive flags */ 332#define SHFMT_ID_DEFAULT 0xFFFF 333#define SHFMT_OPT_FULL 1 334#define SHFMT_OPT_SYSONLY 2 335 336/* SHPathPrepareForWrite flags */ 337#define SHPPFW_NONE 0x00000000 338#define SHPPFW_DIRCREATE 0x00000001 339#define SHPPFW_DEFAULT SHPPFW_DIRCREATE 340#define SHPPFW_ASKDIRCREATE 0x00000002 341#define SHPPFW_IGNOREFILENAME 0x00000004 342#define SHPPFW_NOWRITECHECK 0x00000008 343#define SHPPFW_MEDIACHECKONLY 0x00000010 344 345/* SHObjectProperties flags */ 346#define SHOP_PRINTERNAME 0x01 347#define SHOP_FILEPATH 0x02 348#define SHOP_VOLUMEGUID 0x04 349 350BOOL 351WINAPI 352SHObjectProperties( 353 _In_opt_ HWND, 354 _In_ DWORD, 355 _In_ LPCWSTR, 356 _In_opt_ LPCWSTR); 357 358HRESULT 359WINAPI 360SHOpenFolderAndSelectItems( 361 _In_ PCIDLIST_ABSOLUTE pidlFolder, 362 _In_ UINT cidl, 363 _In_reads_opt_(cidl) PCUITEMID_CHILD_ARRAY, 364 _In_ DWORD); 365 366#define PCS_FATAL 0x80000000 367#define PCS_REPLACEDCHAR 0x00000001 368#define PCS_REMOVEDCHAR 0x00000002 369#define PCS_TRUNCATED 0x00000004 370#define PCS_PATHTOOLONG 0x00000008 371 372int WINAPI PathCleanupSpec(_In_opt_ LPCWSTR, _Inout_ LPWSTR); 373 374#if (_WIN32_WINNT >= _WIN32_WINNT_WINXP) && (_WIN32_WINNT <= _WIN32_WINNT_WS03) 375HINSTANCE WINAPI SHGetShellStyleHInstance(VOID); 376#endif 377 378BOOL WINAPI 379SHOpenPropSheetA( 380 _In_opt_ LPCSTR pszCaption, 381 _In_opt_ HKEY *ahKeys, 382 _In_ UINT cKeys, 383 _In_ const CLSID *pclsidDefault, 384 _In_ IDataObject *pDataObject, 385 _In_opt_ IShellBrowser *pShellBrowser, 386 _In_opt_ LPCSTR pszStartPage); 387 388BOOL WINAPI 389SHOpenPropSheetW( 390 _In_opt_ LPCWSTR pszCaption, 391 _In_opt_ HKEY *ahKeys, 392 _In_ UINT cKeys, 393 _In_ const CLSID *pclsidDefault, 394 _In_ IDataObject *pDataObject, 395 _In_opt_ IShellBrowser *pShellBrowser, 396 _In_opt_ LPCWSTR pszStartPage); 397 398#define SHOpenPropSheet WINELIB_NAME_AW(SHOpenPropSheet) 399 400HRESULT WINAPI 401SHStartNetConnectionDialogA( 402 _In_ HWND hwnd, 403 _In_ LPCSTR pszRemoteName, 404 _In_ DWORD dwType); 405 406HRESULT WINAPI 407SHStartNetConnectionDialogW( 408 _In_ HWND hwnd, 409 _In_ LPCWSTR pszRemoteName, 410 _In_ DWORD dwType); 411 412BOOL WINAPI 413PathMakeUniqueName( 414 _Out_ PWSTR pszUniqueName, 415 _In_ UINT cchMax, 416 _In_ PCWSTR pszTemplate, 417 _In_opt_ PCWSTR pszLongPlate, 418 _In_opt_ PCWSTR pszDir); 419 420HRESULT WINAPI SHMultiFileProperties(_In_ IDataObject *pDataObject, _In_ DWORD dwFlags); 421 422/***************************************************************************** 423 * IContextMenu interface 424 */ 425 426 427/* DATAOBJECT_InitShellIDList*/ 428#define CFSTR_SHELLIDLISTA "Shell IDList Array" /* CF_IDLIST */ 429#define CFSTR_SHELLIDLISTOFFSETA "Shell Object Offsets" /* CF_OBJECTPOSITIONS */ 430#define CFSTR_NETRESOURCESA "Net Resource" /* CF_NETRESOURCE */ 431/* DATAOBJECT_InitFileGroupDesc */ 432#define CFSTR_FILEDESCRIPTORA "FileGroupDescriptor" /* CF_FILEGROUPDESCRIPTORA */ 433/* DATAOBJECT_InitFileContents*/ 434#define CFSTR_FILECONTENTSA "FileContents" /* CF_FILECONTENTS */ 435#define CFSTR_FILENAMEA "FileName" /* CF_FILENAMEA */ 436#define CFSTR_FILENAMEMAPA "FileNameMap" /* CF_FILENAMEMAPA */ 437#define CFSTR_PRINTERGROUPA "PrinterFriendlyName" /* CF_PRINTERS */ 438#define CFSTR_SHELLURLA "UniformResourceLocator" 439#define CFSTR_INETURLA CFSTR_SHELLURLA 440#define CFSTR_PREFERREDDROPEFFECTA "Preferred DropEffect" 441#define CFSTR_PERFORMEDDROPEFFECTA "Performed DropEffect" 442#define CFSTR_PASTESUCCEEDEDA "Paste Succeeded" 443#define CFSTR_INDRAGLOOPA "InShellDragLoop" 444#define CFSTR_DRAGCONTEXTA "DragContext" 445#define CFSTR_MOUNTEDVOLUMEA "MountedVolume" 446#define CFSTR_PERSISTEDDATAOBJECTA "PersistedDataObject" 447#define CFSTR_TARGETCLSIDA "TargetCLSID" 448#define CFSTR_AUTOPLAY_SHELLIDLISTSA "Autoplay Enumerated IDList Array" 449#define CFSTR_LOGICALPERFORMEDDROPEFFECTA "Logical Performed DropEffect" 450 451#if defined(__GNUC__) 452# define CFSTR_SHELLIDLISTW \ 453 (const WCHAR []){ 'S','h','e','l','l',' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 } 454# define CFSTR_SHELLIDLISTOFFSETW \ 455 (const WCHAR []){ 'S','h','e','l','l',' ','O','b','j','e','c','t',' ','O','f','f','s','e','t','s',0 } 456# define CFSTR_NETRESOURCESW \ 457 (const WCHAR []){ 'N','e','t',' ','R','e','s','o','u','r','c','e',0 } 458# define CFSTR_FILEDESCRIPTORW \ 459 (const WCHAR []){ 'F','i','l','e','G','r','o','u','p','D','e','s','c','r','i','p','t','o','r','W',0 } 460# define CFSTR_FILECONTENTSW \ 461 (const WCHAR []){ 'F','i','l','e','C','o','n','t','e','n','t','s',0 } 462# define CFSTR_FILENAMEW \ 463 (const WCHAR []){ 'F','i','l','e','N','a','m','e','W',0 } 464# define CFSTR_FILENAMEMAPW \ 465 (const WCHAR []){ 'F','i','l','e','N','a','m','e','M','a','p','W',0 } 466# define CFSTR_PRINTERGROUPW \ 467 (const WCHAR []){ 'P','r','i','n','t','e','r','F','r','i','e','n','d','l','y','N','a','m','e',0 } 468# define CFSTR_SHELLURLW \ 469 (const WCHAR []){ 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r',0 } 470# define CFSTR_INETURLW \ 471 (const WCHAR []){ 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r','W',0 } 472# define CFSTR_PREFERREDDROPEFFECTW \ 473 (const WCHAR []){ 'P','r','e','f','e','r','r','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 } 474# define CFSTR_PERFORMEDDROPEFFECTW \ 475 (const WCHAR []){ 'P','e','r','f','o','r','m','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 } 476# define CFSTR_PASTESUCCEEDEDW \ 477 (const WCHAR []){ 'P','a','s','t','e',' ','S','u','c','c','e','e','d','e','d',0 } 478# define CFSTR_INDRAGLOOPW \ 479 (const WCHAR []){ 'I','n','S','h','e','l','l','D','r','a','g','L','o','o','p',0 } 480# define CFSTR_DRAGCONTEXTW \ 481 (const WCHAR []){ 'D','r','a','g','C','o','n','t','e','x','t',0 } 482# define CFSTR_MOUNTEDVOLUMEW \ 483 (const WCHAR []){ 'M','o','u','n','t','e','d','V','o','l','u','m','e',0 } 484# define CFSTR_PERSISTEDDATAOBJECTW \ 485 (const WCHAR []){ 'P','e','r','s','i','s','t','e','d','D','a','t','a','O','b','j','e','c','t',0 } 486# define CFSTR_TARGETCLSIDW \ 487 (const WCHAR []){ 'T','a','r','g','e','t','C','L','S','I','D',0 } 488# define CFSTR_AUTOPLAY_SHELLIDLISTSW \ 489 (const WCHAR []){ 'A','u','t','o','p','l','a','y',' ','E','n','u','m','e','r','a','t','e','d',\ 490 ' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 } 491# define CFSTR_LOGICALPERFORMEDDROPEFFECTW \ 492 (const WCHAR []){ 'L','o','g','i','c','a','l',' ','P','e','r','f','o','r','m','e','d',\ 493 ' ','D','r','o','p','E','f','f','e','c','t',0 } 494#elif defined(_MSC_VER) 495# define CFSTR_SHELLIDLISTW L"Shell IDList Array" 496# define CFSTR_SHELLIDLISTOFFSETW L"Shell Object Offsets" 497# define CFSTR_NETRESOURCESW L"Net Resource" 498# define CFSTR_FILEDESCRIPTORW L"FileGroupDescriptorW" 499# define CFSTR_FILECONTENTSW L"FileContents" 500# define CFSTR_FILENAMEW L"FileNameW" 501# define CFSTR_FILENAMEMAPW L"FileNameMapW" 502# define CFSTR_PRINTERGROUPW L"PrinterFriendlyName" 503# define CFSTR_SHELLURLW L"UniformResourceLocator" 504# define CFSTR_INETURLW L"UniformResourceLocatorW" 505# define CFSTR_PREFERREDDROPEFFECTW L"Preferred DropEffect" 506# define CFSTR_PERFORMEDDROPEFFECTW L"Performed DropEffect" 507# define CFSTR_PASTESUCCEEDEDW L"Paste Succeeded" 508# define CFSTR_INDRAGLOOPW L"InShellDragLoop" 509# define CFSTR_DRAGCONTEXTW L"DragContext" 510# define CFSTR_MOUNTEDVOLUMEW L"MountedVolume" 511# define CFSTR_PERSISTEDDATAOBJECTW L"PersistedDataObject" 512# define CFSTR_TARGETCLSIDW L"TargetCLSID" 513# define CFSTR_AUTOPLAY_SHELLIDLISTSW L"Autoplay Enumerated IDList Array" 514# define CFSTR_LOGICALPERFORMEDDROPEFFECTW L"Logical Performed DropEffect" 515#else 516static const WCHAR CFSTR_SHELLIDLISTW[] = 517 { 'S','h','e','l','l',' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 }; 518static const WCHAR CFSTR_SHELLIDLISTOFFSETW[] = 519 { 'S','h','e','l','l',' ','O','b','j','e','c','t',' ','O','f','f','s','e','t','s',0 }; 520static const WCHAR CFSTR_NETRESOURCESW[] = 521 { 'N','e','t',' ','R','e','s','o','u','r','c','e',0 }; 522static const WCHAR CFSTR_FILEDESCRIPTORW[] = 523 { 'F','i','l','e','G','r','o','u','p','D','e','s','c','r','i','p','t','o','r','W',0 }; 524static const WCHAR CFSTR_FILECONTENTSW[] = 525 { 'F','i','l','e','C','o','n','t','e','n','t','s',0 }; 526static const WCHAR CFSTR_FILENAMEW[] = 527 { 'F','i','l','e','N','a','m','e','W',0 }; 528static const WCHAR CFSTR_FILENAMEMAPW[] = 529 { 'F','i','l','e','N','a','m','e','M','a','p','W',0 }; 530static const WCHAR CFSTR_PRINTERGROUPW[] = 531 { 'P','r','i','n','t','e','r','F','r','i','e','n','d','l','y','N','a','m','e',0 }; 532static const WCHAR CFSTR_SHELLURLW[] = 533 { 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r',0 }; 534static const WCHAR CFSTR_INETURLW[] = 535 { 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r','W',0 }; 536static const WCHAR CFSTR_PREFERREDDROPEFFECTW[] = 537 { 'P','r','e','f','e','r','r','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 }; 538static const WCHAR CFSTR_PERFORMEDDROPEFFECTW[] = 539 { 'P','e','r','f','o','r','m','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 }; 540static const WCHAR CFSTR_PASTESUCCEEDEDW[] = 541 { 'P','a','s','t','e',' ','S','u','c','c','e','e','d','e','d',0 }; 542static const WCHAR CFSTR_INDRAGLOOPW[] = 543 { 'I','n','S','h','e','l','l','D','r','a','g','L','o','o','p',0 }; 544static const WCHAR CFSTR_DRAGCONTEXTW[] = 545 { 'D','r','a','g','C','o','n','t','e','x','t',0 }; 546static const WCHAR CFSTR_MOUNTEDVOLUMEW[] = 547 { 'M','o','u','n','t','e','d','V','o','l','u','m','e',0 }; 548static const WCHAR CFSTR_PERSISTEDDATAOBJECTW[] = 549 { 'P','e','r','s','i','s','t','e','d','D','a','t','a','O','b','j','e','c','t',0 }; 550static const WCHAR CFSTR_TARGETCLSIDW[] = 551 { 'T','a','r','g','e','t','C','L','S','I','D',0 }; 552static const WCHAR CFSTR_AUTOPLAY_SHELLIDLISTSW[] = 553 { 'A','u','t','o','p','l','a','y',' ','E','n','u','m','e','r','a','t','e','d', 554 ' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 }; 555static const WCHAR CFSTR_LOGICALPERFORMEDDROPEFFECTW[] = 556 { 'L','o','g','i','c','a','l',' ','P','e','r','f','o','r','m','e','d', 557 ' ','D','r','o','p','E','f','f','e','c','t',0 }; 558#endif 559 560#define CFSTR_SHELLIDLIST WINELIB_NAME_AW(CFSTR_SHELLIDLIST) 561#define CFSTR_SHELLIDLISTOFFSET WINELIB_NAME_AW(CFSTR_SHELLIDLISTOFFSET) 562#define CFSTR_NETRESOURCES WINELIB_NAME_AW(CFSTR_NETRESOURCES) 563#define CFSTR_FILEDESCRIPTOR WINELIB_NAME_AW(CFSTR_FILEDESCRIPTOR) 564#define CFSTR_FILECONTENTS WINELIB_NAME_AW(CFSTR_FILECONTENTS) 565#define CFSTR_FILENAME WINELIB_NAME_AW(CFSTR_FILENAME) 566#define CFSTR_FILENAMEMAP WINELIB_NAME_AW(CFSTR_FILENAMEMAP) 567#define CFSTR_PRINTERGROUP WINELIB_NAME_AW(CFSTR_PRINTERGROUP) 568#define CFSTR_SHELLURL WINELIB_NAME_AW(CFSTR_SHELLURL) 569#define CFSTR_INETURL WINELIB_NAME_AW(CFSTR_INETURL) 570#define CFSTR_PREFERREDDROPEFFECT WINELIB_NAME_AW(CFSTR_PREFERREDDROPEFFECT) 571#define CFSTR_PERFORMEDDROPEFFECT WINELIB_NAME_AW(CFSTR_PERFORMEDDROPEFFECT) 572#define CFSTR_PASTESUCCEEDED WINELIB_NAME_AW(CFSTR_PASTESUCCEEDED) 573#define CFSTR_INDRAGLOOP WINELIB_NAME_AW(CFSTR_INDRAGLOOP) 574#define CFSTR_DRAGCONTEXT WINELIB_NAME_AW(CFSTR_DRAGCONTEXT) 575#define CFSTR_MOUNTEDVOLUME WINELIB_NAME_AW(CFSTR_MOUNTEDVOLUME) 576#define CFSTR_PERSISTEDDATAOBJECT WINELIB_NAME_AW(CFSTR_PERSISTEDDATAOBJECT) 577#define CFSTR_TARGETCLSID WINELIB_NAME_AW(CFSTR_TARGETCLSID) 578#define CFSTR_AUTOPLAY_SHELLIDLISTS WINELIB_NAME_AW(CFSTR_AUTOPLAY_SHELLIDLISTS) 579#define CFSTR_LOGICALPERFORMEDDROPEFFECT WINELIB_NAME_AW(CFSTR_LOGICALPERFORMEDDROPEFFECT) 580 581typedef struct 582{ UINT cidl; 583 UINT aoffset[1]; 584} CIDA, *LPIDA; 585 586/************************************************************************ 587* IShellView interface 588*/ 589 590#define FCIDM_SHVIEWFIRST 0x0000 591/* undocumented */ 592#define FCIDM_SHVIEW_ARRANGE 0x7001 593#define FCIDM_SHVIEW_DELETE 0x7011 594#define FCIDM_SHVIEW_PROPERTIES 0x7013 595#define FCIDM_SHVIEW_CUT 0x7018 596#define FCIDM_SHVIEW_COPY 0x7019 597#define FCIDM_SHVIEW_INSERT 0x701A 598#define FCIDM_SHVIEW_UNDO 0x701B 599#define FCIDM_SHVIEW_INSERTLINK 0x701C 600#define FCIDM_SHVIEW_COPYTO 0x701E 601#define FCIDM_SHVIEW_MOVETO 0x701F 602#define FCIDM_SHVIEW_SELECTALL 0x7021 603#define FCIDM_SHVIEW_INVERTSELECTION 0x7022 604 605#define FCIDM_SHVIEW_BIGICON 0x7029 606#define FCIDM_SHVIEW_SMALLICON 0x702A 607#define FCIDM_SHVIEW_LISTVIEW 0x702B 608#define FCIDM_SHVIEW_REPORTVIEW 0x702C 609/* 0x7030-0x703f are used by the shellbrowser */ 610#define FCIDM_SHVIEW_AUTOARRANGE 0x7031 611#define FCIDM_SHVIEW_SNAPTOGRID 0x7032 612#define FCIDM_SHVIEW_ALIGNTOGRID 0x7033 613 614#define FCIDM_SHVIEW_HELP 0x7041 615#define FCIDM_SHVIEW_NEWLINK 0x7052 616#define FCIDM_SHVIEW_NEWFOLDER 0x7053 617 618#define FCIDM_SHVIEW_EXPLORE 0x7101 /* FIXME */ 619#define FCIDM_SHVIEW_OPEN 0x7102 /* FIXME */ 620 621#define FCIDM_SHVIEWLAST 0x7fff 622#define FCIDM_BROWSERFIRST 0xA000 623/* undocumented toolbar items from stddlg's*/ 624#define FCIDM_TB_UPFOLDER 0xA001 625#define FCIDM_TB_NEWFOLDER 0xA002 626#define FCIDM_TB_SMALLICON 0xA003 627#define FCIDM_TB_REPORTVIEW 0xA004 628#define FCIDM_TB_DESKTOP 0xA005 /* FIXME */ 629 630#define FCIDM_BROWSERLAST 0xbf00 631#define FCIDM_GLOBALFIRST 0x8000 632#define FCIDM_GLOBALLAST 0x9fff 633 634/* 635* Global submenu IDs and separator IDs 636*/ 637#define FCIDM_MENU_FILE (FCIDM_GLOBALFIRST+0x0000) 638#define FCIDM_MENU_EDIT (FCIDM_GLOBALFIRST+0x0040) 639#define FCIDM_MENU_VIEW (FCIDM_GLOBALFIRST+0x0080) 640#define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081) 641#define FCIDM_MENU_TOOLS (FCIDM_GLOBALFIRST+0x00c0) 642#define FCIDM_MENU_TOOLS_SEP_GOTO (FCIDM_GLOBALFIRST+0x00c1) 643#define FCIDM_MENU_HELP (FCIDM_GLOBALFIRST+0x0100) 644#define FCIDM_MENU_FIND (FCIDM_GLOBALFIRST+0x0140) 645#define FCIDM_MENU_EXPLORE (FCIDM_GLOBALFIRST+0x0150) 646#define FCIDM_MENU_FAVORITES (FCIDM_GLOBALFIRST+0x0170) 647 648/* control IDs known to the view */ 649#define FCIDM_TOOLBAR (FCIDM_BROWSERFIRST + 0) 650#define FCIDM_STATUS (FCIDM_BROWSERFIRST + 1) 651 652#define INTERFACE IShellDetails 653DECLARE_INTERFACE_(IShellDetails, IUnknown) 654{ 655 /*** IUnknown methods ***/ 656 STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; 657 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 658 STDMETHOD_(ULONG,Release) (THIS) PURE; 659 /*** IShellDetails methods ***/ 660 STDMETHOD(GetDetailsOf)(THIS_ _In_opt_ PCUITEMID_CHILD pidl, UINT iColumn, _Out_ SHELLDETAILS *pDetails) PURE; 661 STDMETHOD(ColumnClick)(THIS_ UINT iColumn) PURE; 662}; 663#undef INTERFACE 664 665#if !defined(__cplusplus) || defined(CINTERFACE) 666/*** IUnknown methods ***/ 667#define IShellDetails_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 668#define IShellDetails_AddRef(p) (p)->lpVtbl->AddRef(p) 669#define IShellDetails_Release(p) (p)->lpVtbl->Release(p) 670/*** IShellDetails methods ***/ 671#define IShellDetails_GetDetailsOf(p,a,b,c) (p)->lpVtbl->GetDetailsOf(p,a,b,c) 672#define IShellDetails_ColumnClick(p,a) (p)->lpVtbl->ColumnClick(p,a) 673#endif 674 675/* IQueryInfo interface */ 676#define INTERFACE IQueryInfo 677DECLARE_INTERFACE_(IQueryInfo,IUnknown) 678{ 679 /*** IUnknown methods ***/ 680 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 681 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 682 STDMETHOD_(ULONG,Release)(THIS) PURE; 683 /*** IQueryInfo methods ***/ 684 STDMETHOD(GetInfoTip)(THIS_ DWORD dwFlags, _Outptr_ WCHAR** lppTips) PURE; 685 STDMETHOD(GetInfoFlags)(THIS_ _Out_ DWORD* lpFlags) PURE; 686}; 687#undef INTERFACE 688 689#if !defined(__cplusplus) || defined(CINTERFACE) 690/*** IUnknown methods ***/ 691#define IQueryInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 692#define IQueryInfo_AddRef(p) (p)->lpVtbl->AddRef(p) 693#define IQueryInfo_Release(p) (p)->lpVtbl->Release(p) 694/*** IQueryInfo methods ***/ 695#define IQueryInfo_GetInfoTip(p,a,b) (p)->lpVtbl->GetInfoTip(p,a,b) 696#define IQueryInfo_GetInfoFlags(p,a) (p)->lpVtbl->GetInfoFlags(p,a) 697#endif 698 699/* IInputObject interface */ 700#define INTERFACE IInputObject 701DECLARE_INTERFACE_(IInputObject,IUnknown) 702{ 703 /*** IUnknown methods ***/ 704 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 705 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 706 STDMETHOD_(ULONG,Release)(THIS) PURE; 707 /*** IInputObject methods ***/ 708 STDMETHOD(UIActivateIO)(THIS_ BOOL bActivating, LPMSG lpMsg) PURE; 709 STDMETHOD(HasFocusIO)(THIS) PURE; 710 STDMETHOD(TranslateAcceleratorIO)(THIS_ LPMSG lpMsg) PURE; 711}; 712#undef INTERFACE 713 714#if !defined(__cplusplus) || defined(CINTERFACE) 715/*** IUnknown methods ***/ 716#define IInputObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 717#define IInputObject_AddRef(p) (p)->lpVtbl->AddRef(p) 718#define IInputObject_Release(p) (p)->lpVtbl->Release(p) 719/*** IInputObject methods ***/ 720#define IInputObject_UIActivateIO(p,a,b) (p)->lpVtbl->UIActivateIO(p,a,b) 721#define IInputObject_HasFocusIO(p) (p)->lpVtbl->HasFocusIO(p) 722#define IInputObject_TranslateAcceleratorIO(p,a) (p)->lpVtbl->TranslateAcceleratorIO(p,a) 723#endif 724 725/* IInputObjectSite interface */ 726#define INTERFACE IInputObjectSite 727DECLARE_INTERFACE_(IInputObjectSite,IUnknown) 728{ 729 /*** IUnknown methods ***/ 730 STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE; 731 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 732 STDMETHOD_(ULONG,Release) (THIS) PURE; 733 /*** IInputObjectSite methods ***/ 734 STDMETHOD(OnFocusChangeIS)(THIS_ LPUNKNOWN lpUnknown, BOOL bFocus) PURE; 735}; 736#undef INTERFACE 737 738#if !defined(__cplusplus) || defined(CINTERFACE) 739/*** IUnknown methods ***/ 740#define IInputObjectSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 741#define IInputObjectSite_AddRef(p) (p)->lpVtbl->AddRef(p) 742#define IInputObjectSite_Release(p) (p)->lpVtbl->Release(p) 743/*** IInputObject methods ***/ 744#define IInputObjectSite_OnFocusChangeIS(p,a,b) (p)->lpVtbl->OnFocusChangeIS(p,a,b) 745#endif 746 747/* IObjMgr interface */ 748#define INTERFACE IObjMgr 749DECLARE_INTERFACE_(IObjMgr,IUnknown) 750{ 751 /*** IUnknown methods ***/ 752 STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE; 753 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 754 STDMETHOD_(ULONG,Release) (THIS) PURE; 755 /*** IObjMgr methods ***/ 756 STDMETHOD(Append)(THIS_ _In_ LPUNKNOWN punk) PURE; 757 STDMETHOD(Remove)(THIS_ _In_ LPUNKNOWN punk) PURE; 758}; 759#undef INTERFACE 760 761#if !defined(__cplusplus) || defined(CINTERFACE) 762/*** IUnknown methods ***/ 763#define IObjMgr_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 764#define IObjMgr_AddRef(p) (p)->lpVtbl->AddRef(p) 765#define IObjMgr_Release(p) (p)->lpVtbl->Release(p) 766/*** IObjMgr methods ***/ 767#define IObjMgr_Append(p,a) (p)->lpVtbl->Append(p,a) 768#define IObjMgr_Remove(p,a) (p)->lpVtbl->Remove(p,a) 769#endif 770 771/* ICurrentWorkingDirectory interface */ 772#define INTERFACE ICurrentWorkingDirectory 773DECLARE_INTERFACE_(ICurrentWorkingDirectory,IUnknown) 774{ 775 /*** IUnknown methods ***/ 776 STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE; 777 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 778 STDMETHOD_(ULONG,Release) (THIS) PURE; 779 /*** ICurrentWorkingDirectory methods ***/ 780 STDMETHOD(GetDirectory)(THIS_ _Out_writes_(cchSize) PWSTR pwzPath, DWORD cchSize) PURE; 781 STDMETHOD(SetDirectory)(THIS_ _In_ PCWSTR pwzPath) PURE; 782}; 783#undef INTERFACE 784 785#if !defined(__cplusplus) || defined(CINTERFACE) 786/*** IUnknown methods ***/ 787#define ICurrentWorkingDirectory_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 788#define ICurrentWorkingDirectory_AddRef(p) (p)->lpVtbl->AddRef(p) 789#define ICurrentWorkingDirectory_Release(p) (p)->lpVtbl->Release(p) 790/*** ICurrentWorkingDirectory methods ***/ 791#define ICurrentWorkingDirectory_GetDirectory(p,a,b) (p)->lpVtbl->GetDirectory(p,a,b) 792#define ICurrentWorkingDirectory_SetDirectory(p,a) (p)->lpVtbl->SetDirectory(p,a) 793#endif 794 795/* IACList interface */ 796#define INTERFACE IACList 797DECLARE_INTERFACE_(IACList,IUnknown) 798{ 799 /*** IUnknown methods ***/ 800 STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE; 801 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 802 STDMETHOD_(ULONG,Release) (THIS) PURE; 803 /*** IACList methods ***/ 804 STDMETHOD(Expand)(THIS_ _In_ LPCOLESTR str) PURE; 805}; 806#undef INTERFACE 807 808#if !defined(__cplusplus) || defined(CINTERFACE) 809/*** IUnknown methods ***/ 810#define IACList_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 811#define IACList_AddRef(p) (p)->lpVtbl->AddRef(p) 812#define IACList_Release(p) (p)->lpVtbl->Release(p) 813/*** IACList methods ***/ 814#define IACList_Expand(p,a) (p)->lpVtbl->Expand(p,a) 815#endif 816 817/* IACList2 interface */ 818 819#define ACLO_NONE 0x00000000 820#define ACLO_CURRENTDIR 0x00000001 821#define ACLO_MYCOMPUTER 0x00000002 822#define ACLO_DESKTOP 0x00000004 823#define ACLO_FAVORITES 0x00000008 824#define ACLO_FILESYSONLY 0x00000010 825#define ACLO_FILESYSDIRS 0x00000020 826 827#define INTERFACE IACList2 828DECLARE_INTERFACE_(IACList2,IACList) 829{ 830 /*** IUnknown methods ***/ 831 STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE; 832 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 833 STDMETHOD_(ULONG,Release) (THIS) PURE; 834 /*** IACList methods ***/ 835 STDMETHOD(Expand)(THIS_ LPCOLESTR str) PURE; 836 /*** IACList2 methods ***/ 837 STDMETHOD(SetOptions)(THIS_ DWORD dwFlag) PURE; 838 STDMETHOD(GetOptions)(THIS_ _Out_ DWORD* pdwFlag) PURE; 839}; 840#undef INTERFACE 841 842#if !defined(__cplusplus) || defined(CINTERFACE) 843/*** IUnknown methods ***/ 844#define IACList2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 845#define IACList2_AddRef(p) (p)->lpVtbl->AddRef(p) 846#define IACList2_Release(p) (p)->lpVtbl->Release(p) 847/*** IACList2 methods ***/ 848#define IACList2_GetOptions(p,a) (p)->lpVtbl->GetOptions(p,a) 849#define IACList2_SetOptions(p,a) (p)->lpVtbl->SetOptions(p,a) 850#endif 851 852/**************************************************************************** 853 * IShellFolderViewCB interface 854 */ 855 856#define INTERFACE IShellFolderViewCB 857DECLARE_INTERFACE_(IShellFolderViewCB,IUnknown) 858{ 859 /*** IUnknown methods ***/ 860 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 861 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 862 STDMETHOD_(ULONG,Release)(THIS) PURE; 863 /*** IShellFolderViewCB methods ***/ 864 STDMETHOD(MessageSFVCB)(THIS_ UINT uMsg, WPARAM wParam, LPARAM lParam) PURE; 865}; 866#undef INTERFACE 867 868#if !defined(__cplusplus) || defined(CINTERFACE) 869/*** IUnknown methods ***/ 870#define IShellFolderViewCB_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 871#define IShellFolderViewCB_AddRef(p) (p)->lpVtbl->AddRef(p) 872#define IShellFolderViewCB_Release(p) (p)->lpVtbl->Release(p) 873/*** IShellFolderViewCB methods ***/ 874#define IShellFolderViewCB_MessageSFVCB(p,a,b,c) (p)->lpVtbl->MessageSFVCB(p,a,b,c) 875#endif 876 877/**************************************************************************** 878 * IShellFolderView interface 879 */ 880 881#include <pshpack8.h> 882 883typedef struct _ITEMSPACING 884{ 885 int cxSmall; 886 int cySmall; 887 int cxLarge; 888 int cyLarge; 889} ITEMSPACING; 890 891#include <poppack.h> 892 893#define INTERFACE IShellFolderView 894DEFINE_GUID(IID_IShellFolderView,0x37a378c0,0xf82d,0x11ce,0xae,0x65,0x08,0x00,0x2b,0x2e,0x12,0x62); 895DECLARE_INTERFACE_(IShellFolderView, IUnknown) 896{ 897 /*** IUnknown methods ***/ 898 STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; 899 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 900 STDMETHOD_(ULONG,Release) (THIS) PURE; 901 902 /*** IShellFolderView methods ***/ 903 STDMETHOD(Rearrange) (THIS_ LPARAM lParamSort) PURE; 904 STDMETHOD(GetArrangeParam) (THIS_ _Out_ LPARAM *plParamSort) PURE; 905 STDMETHOD(ArrangeGrid) (THIS) PURE; 906 STDMETHOD(AutoArrange) (THIS) PURE; 907 STDMETHOD(GetAutoArrange) (THIS) PURE; 908 STDMETHOD(AddObject) (THIS_ _In_ PITEMID_CHILD pidl, _Out_ UINT *puItem) PURE; 909 STDMETHOD(GetObject) (THIS_ _Outptr_ PITEMID_CHILD *ppidl, UINT uItem) PURE; 910 STDMETHOD(RemoveObject) (THIS_ _In_opt_ PITEMID_CHILD pidl, _Out_ UINT *puItem) PURE; 911 STDMETHOD(GetObjectCount) (THIS_ _Out_ UINT *puCount) PURE; 912 STDMETHOD(SetObjectCount) (THIS_ UINT uCount, UINT dwFlags) PURE; 913 STDMETHOD(UpdateObject) (THIS_ _In_ PITEMID_CHILD pidlOld, _In_ PITEMID_CHILD pidlNew, _Out_ UINT *puItem) PURE; 914 STDMETHOD(RefreshObject) (THIS_ _In_ PITEMID_CHILD pidl, _Out_ UINT *puItem) PURE; 915 STDMETHOD(SetRedraw) (THIS_ BOOL bRedraw) PURE; 916 STDMETHOD(GetSelectedCount) (THIS_ _Out_ UINT *puSelected) PURE; 917 STDMETHOD(GetSelectedObjects) (THIS_ _Outptr_result_buffer_(*puItems) PCUITEMID_CHILD **pppidl, _Out_ UINT *puItems) PURE; 918 STDMETHOD(IsDropOnSource) (THIS_ _In_opt_ IDropTarget *pDropTarget) PURE; 919 STDMETHOD(GetDragPoint) (THIS_ _Out_ POINT *ppt) PURE; 920 STDMETHOD(GetDropPoint) (THIS_ _Out_ POINT *ppt) PURE; 921 STDMETHOD(MoveIcons) (THIS_ _In_ IDataObject *pDataObject) PURE; 922 STDMETHOD(SetItemPos) (THIS_ _In_ PCUITEMID_CHILD pidl, _In_ POINT *ppt) PURE; 923 STDMETHOD(IsBkDropTarget) (THIS_ _In_opt_ IDropTarget *pDropTarget) PURE; 924 STDMETHOD(SetClipboard) (THIS_ BOOL bMove) PURE; 925 STDMETHOD(SetPoints) (THIS_ _In_ IDataObject *pDataObject) PURE; 926 STDMETHOD(GetItemSpacing) (THIS_ _Out_ ITEMSPACING *pSpacing) PURE; 927 STDMETHOD(SetCallback) (THIS_ _In_opt_ IShellFolderViewCB* pNewCB, _Outptr_result_maybenull_ IShellFolderViewCB** ppOldCB) PURE; 928 STDMETHOD(Select) ( THIS_ UINT dwFlags ) PURE; 929 STDMETHOD(QuerySupport) (THIS_ _Inout_ UINT * pdwSupport) PURE; 930 STDMETHOD(SetAutomationObject)(THIS_ _In_opt_ IDispatch* pdisp) PURE; 931}; 932#undef INTERFACE 933 934#if !defined(__cplusplus) || defined(CINTERFACE) 935/*** IUnknown methods ***/ 936#define IShellFolderView_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 937#define IShellFolderView_AddRef(p) (p)->lpVtbl->AddRef(p) 938#define IShellFolderView_Release(p) (p)->lpVtbl->Release(p) 939/*** IShellFolderView methods ***/ 940#define IShellFolderView_Rearrange(p,a) (p)->lpVtbl->Rearrange(p,a) 941#define IShellFolderView_GetArrangeParam(p,a) (p)->lpVtbl->GetArrangeParam(p,a) 942#define IShellFolderView_ArrangeGrid(p) (p)->lpVtbl->ArrangeGrid(p) 943#define IShellFolderView_AutoArrange(p) (p)->lpVtbl->AutoArrange(p) 944#define IShellFolderView_GetAutoArrange(p) (p)->lpVtbl->GetAutoArrange(p) 945#define IShellFolderView_AddObject(p,a,b) (p)->lpVtbl->AddObject(p,a,b) 946#define IShellFolderView_GetObject(p,a,b) (p)->lpVtbl->GetObject(p,a,b) 947#define IShellFolderView_RemoveObject(p,a,b) (p)->lpVtbl->RemoveObject(p,a,b) 948#define IShellFolderView_GetObjectCount(p,a) (p)->lpVtbl->GetObjectCount(p,a) 949#define IShellFolderView_SetObjectCount(p,a,b) (p)->lpVtbl->SetObjectCount(p,a,b) 950#define IShellFolderView_UpdateObject(p,a,b,c) (p)->lpVtbl->UpdateObject(p,a,b,c) 951#define IShellFolderView_RefreshObject(p,a,b) (p)->lpVtbl->RefreshObject(p,a,b) 952#define IShellFolderView_SetRedraw(p,a) (p)->lpVtbl->SetRedraw(p,a) 953#define IShellFolderView_GetSelectedCount(p,a) (p)->lpVtbl->GetSelectedCount(p,a) 954#define IShellFolderView_GetSelectedObjects(p,a,b) (p)->lpVtbl->GetSelectedObjects(p,a,b) 955#define IShellFolderView_IsDropOnSource(p,a) (p)->lpVtbl->IsDropOnSource(p,a) 956#define IShellFolderView_GetDragPoint(p,a) (p)->lpVtbl->GetDragPoint(p,a) 957#define IShellFolderView_GetDropPoint(p,a) (p)->lpVtbl->GetDropPoint(p,a) 958#define IShellFolderView_MoveIcons(p,a) (p)->lpVtbl->MoveIcons(p,a) 959#define IShellFolderView_SetItemPos(p,a,b) (p)->lpVtbl->SetItemPos(p,a,b) 960#define IShellFolderView_DropTarget(p,a) (p)->lpVtbl->DropTarget(p,a) 961#define IShellFolderView_SetClipboard(p,a) (p)->lpVtbl->SetClipboard(p,a) 962#define IShellFolderView_SetPoints(p,a) (p)->lpVtbl->SetPoints(p,a) 963#define IShellFolderView_GetItemSpacing(p,a) (p)->lpVtbl->GetItemSpacing(p,a) 964#define IShellFolderView_SetCallback(p,a) (p)->lpVtbl->SetCallback(p,a) 965#define IShellFolderView_Select(p,a) (p)->lpVtbl->Select(p,a) 966#define IShellFolderView_QuerySupport(p,a) (p)->lpVtbl->QuerySupport(p,a) 967#define IShellFolderView_SetAutomationObject(p,a) (p)->lpVtbl->SetAutomationObject(p,a) 968#endif 969 970/* IProgressDialog interface */ 971#define PROGDLG_NORMAL 0x00000000 972#define PROGDLG_MODAL 0x00000001 973#define PROGDLG_AUTOTIME 0x00000002 974#define PROGDLG_NOTIME 0x00000004 975#define PROGDLG_NOMINIMIZE 0x00000008 976#define PROGDLG_NOPROGRESSBAR 0x00000010 977#define PROGDLG_MARQUEEPROGRESS 0x00000020 978#define PROGDLG_NOCANCEL 0x00000040 979 980#define PDTIMER_RESET 0x00000001 981#define PDTIMER_PAUSE 0x00000002 982#define PDTIMER_RESUME 0x00000003 983 984#define INTERFACE IProgressDialog 985DECLARE_INTERFACE_(IProgressDialog,IUnknown) 986{ 987 /*** IUnknown methods ***/ 988 STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE; 989 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 990 STDMETHOD_(ULONG,Release) (THIS) PURE; 991 /*** IProgressDialog methods ***/ 992 STDMETHOD(StartProgressDialog)(THIS_ _In_opt_ HWND hwndParent, _In_opt_ IUnknown *punkEnableModeless, DWORD dwFlags, _Reserved_ LPCVOID reserved) PURE; 993 STDMETHOD(StopProgressDialog)(THIS) PURE; 994 STDMETHOD(SetTitle)(THIS_ _In_ LPCWSTR pwzTitle) PURE; 995 STDMETHOD(SetAnimation)(THIS_ _In_opt_ HINSTANCE hInstance, UINT uiResourceId) PURE; 996 STDMETHOD_(BOOL,HasUserCancelled)(THIS) PURE; 997 STDMETHOD(SetProgress)(THIS_ DWORD dwCompleted, DWORD dwTotal) PURE; 998 STDMETHOD(SetProgress64)(THIS_ ULONGLONG ullCompleted, ULONGLONG ullTotal) PURE; 999 STDMETHOD(SetLine)(THIS_ DWORD dwLineNum, _In_ LPCWSTR pwzString, BOOL bPath, _Reserved_ LPCVOID reserved) PURE; 1000 STDMETHOD(SetCancelMsg)(THIS_ _In_ LPCWSTR pwzCancelMsg, _Reserved_ LPCVOID reserved) PURE; 1001 STDMETHOD(Timer)(THIS_ DWORD dwTimerAction, _Reserved_ LPCVOID reserved) PURE; 1002}; 1003#undef INTERFACE 1004 1005#if !defined(__cplusplus) || defined(CINTERFACE) 1006/*** IUnknown methods ***/ 1007#define IProgressDialog_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 1008#define IProgressDialog_AddRef(p) (p)->lpVtbl->AddRef(p) 1009#define IProgressDialog_Release(p) (p)->lpVtbl->Release(p) 1010/*** IProgressDialog methods ***/ 1011#define IProgressDialog_StartProgressDialog(p,a,b,c,d) (p)->lpVtbl->StartProgressDialog(p,a,b,c,d) 1012#define IProgressDialog_StopProgressDialog(p) (p)->lpVtbl->StopProgressDialog(p) 1013#define IProgressDialog_SetTitle(p,a) (p)->lpVtbl->SetTitle(p,a) 1014#define IProgressDialog_SetAnimation(p,a,b) (p)->lpVtbl->SetAnimation(p,a,b) 1015#define IProgressDialog_HasUserCancelled(p) (p)->lpVtbl->HasUserCancelled(p) 1016#define IProgressDialog_SetProgress(p,a,b) (p)->lpVtbl->SetProgress(p,a,b) 1017#define IProgressDialog_SetProgress64(p,a,b) (p)->lpVtbl->SetProgress64(p,a,b) 1018#define IProgressDialog_SetLine(p,a,b,c,d) (p)->lpVtbl->SetLine(p,a,b,c,d) 1019#define IProgressDialog_SetCancelMsg(p,a,b) (p)->lpVtbl->SetCancelMsg(p,a,b) 1020#define IProgressDialog_Timer(p,a,b) (p)->lpVtbl->Timer(p,a,b) 1021#endif 1022 1023 1024/* IDeskBarClient interface */ 1025#define INTERFACE IDeskBarClient 1026DECLARE_INTERFACE_(IDeskBarClient,IOleWindow) 1027{ 1028 /*** IUnknown methods ***/ 1029 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; 1030 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1031 STDMETHOD_(ULONG,Release)(THIS) PURE; 1032 /*** IOleWindow methods ***/ 1033 STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND*) PURE; 1034 STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL) PURE; 1035 /*** IDeskBarClient methods ***/ 1036 STDMETHOD_(HRESULT,SetDeskBarSite)(THIS_ _In_opt_ IUnknown*) PURE; 1037 STDMETHOD_(HRESULT,SetModeDBC)(THIS_ DWORD) PURE; 1038 STDMETHOD_(HRESULT,UIActivateDBC)(THIS_ DWORD) PURE; 1039 STDMETHOD_(HRESULT,GetSize)(THIS_ DWORD, _Out_ LPRECT) PURE; 1040}; 1041#undef INTERFACE 1042 1043#if !defined(__cplusplus) || defined(CINTERFACE) 1044/*** IUnknown methods ***/ 1045#define IDeskBarClient_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 1046#define IDeskBarClient_AddRef(p) (p)->lpVtbl->AddRef(p) 1047#define IDeskBarClient_Release(p) (p)->lpVtbl->Release(p) 1048/*** IOleWindow methods ***/ 1049#define IDeskBarClient_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a) 1050#define IDeskBarClient_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a) 1051/*** IOleWindow IDeskBarClient ***/ 1052#define IDeskBarClient_SetDeskBarSite(p,a) (p)->lpVtbl->SetDeskBarSite(p,a) 1053#define IDeskBarClient_SetModeDBC(p,a) (p)->lpVtbl->SetModeDBC(p,a) 1054#define IDeskBarClient_UIActivateDBC(p,a) (p)->lpVtbl->UIActivateDBC(p,a) 1055#define IDeskBarClient_GetSize(p,a,b) (p)->lpVtbl->GetSize(p,a,b) 1056#endif 1057 1058#define DBC_GS_IDEAL 0 1059#define DBC_GS_SIZEDOWN 1 1060 1061#define DBC_HIDE 0 1062#define DBC_SHOW 1 1063#define DBC_SHOWOBSCURE 2 1064 1065 1066/* As indicated by the documentation for IActiveDesktop, 1067 you must include wininet.h before shlobj.h */ 1068#ifdef _WINE_WININET_H_ 1069 1070 1071/* Structs are taken from msdn, and not verified! 1072 Only stuff needed to make it compile are here, no flags or anything */ 1073 1074typedef struct _tagWALLPAPEROPT 1075{ 1076 DWORD dwSize; 1077 DWORD dwStyle; 1078} WALLPAPEROPT; 1079 1080typedef WALLPAPEROPT *LPWALLPAPEROPT; 1081typedef const WALLPAPEROPT *LPCWALLPAPEROPT; 1082 1083typedef struct _tagCOMPONENTSOPT 1084{ 1085 DWORD dwSize; 1086 BOOL fEnableComponents; 1087 BOOL fActiveDesktop; 1088} COMPONENTSOPT; 1089 1090typedef COMPONENTSOPT *LPCOMPONENTSOPT; 1091typedef const COMPONENTSOPT *LPCCOMPONENTSOPT; 1092 1093 1094typedef struct _tagCOMPPOS 1095{ 1096 DWORD dwSize; 1097 int iLeft; 1098 int iTop; 1099 DWORD dwWidth; 1100 DWORD dwHeight; 1101 int izIndex; 1102 BOOL fCanResize; 1103 BOOL fCanResizeX; 1104 BOOL fCanResizeY; 1105 int iPreferredLeftPercent; 1106 int iPreferredTopPercent; 1107} COMPPOS; 1108 1109typedef struct _tagCOMPSTATEINFO 1110{ 1111 DWORD dwSize; 1112 int iLeft; 1113 int iTop; 1114 DWORD dwWidth; 1115 DWORD dwHeight; 1116 DWORD dwItemState; 1117} COMPSTATEINFO; 1118 1119typedef struct _tagCOMPONENT 1120{ 1121 DWORD dwSize; 1122 DWORD dwID; 1123 int iComponentType; 1124 BOOL fChecked; 1125 BOOL fDirty; 1126 BOOL fNoScroll; 1127 COMPPOS cpPos; 1128 WCHAR wszFriendlyName[MAX_PATH]; 1129 WCHAR wszSource[INTERNET_MAX_URL_LENGTH]; 1130 WCHAR wszSubscribedURL[INTERNET_MAX_URL_LENGTH]; 1131 DWORD dwCurItemState; 1132 COMPSTATEINFO csiOriginal; 1133 COMPSTATEINFO csiRestored; 1134} COMPONENT; 1135 1136typedef COMPONENT *LPCOMPONENT; 1137typedef const COMPONENT *LPCCOMPONENT; 1138 1139#pragma push_macro("AddDesktopItem") 1140#undef AddDesktopItem 1141 1142/* IDeskBarClient interface */ 1143#define INTERFACE IActiveDesktop 1144DECLARE_INTERFACE_(IActiveDesktop, IUnknown) 1145{ 1146 /*** IUnknown methods ***/ 1147 STDMETHOD(QueryInterface) (THIS_ _In_ REFIID riid, _Outptr_ void **ppv) PURE; 1148 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 1149 STDMETHOD_(ULONG,Release) (THIS) PURE; 1150 1151 /*** IActiveDesktop methods ***/ 1152 STDMETHOD(ApplyChanges)(THIS_ DWORD dwFlags) PURE; 1153 STDMETHOD(GetWallpaper)(THIS_ PWSTR pwszWallpaper, UINT cchWallpaper, DWORD dwFlags) PURE; 1154 STDMETHOD(SetWallpaper)(THIS_ PCWSTR pwszWallpaper, DWORD dwReserved) PURE; 1155 STDMETHOD(GetWallpaperOptions)(THIS_ LPWALLPAPEROPT pwpo, DWORD dwReserved) PURE; 1156 STDMETHOD(SetWallpaperOptions)(THIS_ LPCWALLPAPEROPT pwpo, DWORD dwReserved) PURE; 1157 STDMETHOD(GetPattern)(THIS_ PWSTR pwszPattern, UINT cchPattern, DWORD dwReserved) PURE; 1158 STDMETHOD(SetPattern)(THIS_ PCWSTR pwszPattern, DWORD dwReserved) PURE; 1159 STDMETHOD(GetDesktopItemOptions)(THIS_ LPCOMPONENTSOPT pco, DWORD dwReserved) PURE; 1160 STDMETHOD(SetDesktopItemOptions)(THIS_ LPCCOMPONENTSOPT pco, DWORD dwReserved) PURE; 1161 STDMETHOD(AddDesktopItem)(THIS_ LPCCOMPONENT pcomp, DWORD dwReserved) PURE; 1162 STDMETHOD(AddDesktopItemWithUI)(THIS_ HWND hwnd, LPCOMPONENT pcomp, DWORD dwReserved) PURE; 1163 STDMETHOD(ModifyDesktopItem)(THIS_ LPCCOMPONENT pcomp, DWORD dwFlags) PURE; 1164 STDMETHOD(RemoveDesktopItem)(THIS_ LPCCOMPONENT pcomp, DWORD dwReserved) PURE; 1165 STDMETHOD(GetDesktopItemCount)(THIS_ int *pcItems, DWORD dwReserved) PURE; 1166 STDMETHOD(GetDesktopItem)(THIS_ int nComponent, LPCOMPONENT pcomp, DWORD dwReserved) PURE; 1167 STDMETHOD(GetDesktopItemByID)(THIS_ ULONG_PTR dwID, LPCOMPONENT pcomp, DWORD dwReserved) PURE; 1168 STDMETHOD(GenerateDesktopItemHtml)(THIS_ PCWSTR pwszFileName, LPCOMPONENT pcomp, DWORD dwReserved) PURE; 1169 STDMETHOD(AddUrl)(THIS_ HWND hwnd, PCWSTR pszSource, LPCOMPONENT pcomp, DWORD dwFlags) PURE; 1170 STDMETHOD(GetDesktopItemBySource)(THIS_ PCWSTR pwszSource, LPCOMPONENT pcomp, DWORD dwReserved) PURE; 1171}; 1172#undef INTERFACE 1173 1174#pragma pop_macro("AddDesktopItem") 1175 1176#endif 1177 1178/**************************************************************************** 1179* SHAddToRecentDocs API 1180*/ 1181#define SHARD_PIDL 0x00000001L 1182#define SHARD_PATHA 0x00000002L 1183#define SHARD_PATHW 0x00000003L 1184#define SHARD_PATH WINELIB_NAME_AW(SHARD_PATH) 1185 1186void WINAPI SHAddToRecentDocs(UINT, _In_opt_ LPCVOID); 1187 1188/**************************************************************************** 1189 * SHBrowseForFolder API 1190 */ 1191typedef INT (CALLBACK *BFFCALLBACK)(HWND,UINT,LPARAM,LPARAM); 1192 1193#include <pshpack8.h> 1194 1195typedef struct tagBROWSEINFOA { 1196 HWND hwndOwner; 1197 PCIDLIST_ABSOLUTE pidlRoot; 1198 LPSTR pszDisplayName; 1199 LPCSTR lpszTitle; 1200 UINT ulFlags; 1201 BFFCALLBACK lpfn; 1202 LPARAM lParam; 1203 INT iImage; 1204} BROWSEINFOA, *PBROWSEINFOA, *LPBROWSEINFOA; 1205 1206typedef struct tagBROWSEINFOW { 1207 HWND hwndOwner; 1208 PCIDLIST_ABSOLUTE pidlRoot; 1209 LPWSTR pszDisplayName; 1210 LPCWSTR lpszTitle; 1211 UINT ulFlags; 1212 BFFCALLBACK lpfn; 1213 LPARAM lParam; 1214 INT iImage; 1215} BROWSEINFOW, *PBROWSEINFOW, *LPBROWSEINFOW; 1216 1217#define BROWSEINFO WINELIB_NAME_AW(BROWSEINFO) 1218#define PBROWSEINFO WINELIB_NAME_AW(PBROWSEINFO) 1219#define LPBROWSEINFO WINELIB_NAME_AW(LPBROWSEINFO) 1220 1221#include <poppack.h> 1222 1223/* Browsing for directory. */ 1224#define BIF_RETURNONLYFSDIRS 0x0001 1225#define BIF_DONTGOBELOWDOMAIN 0x0002 1226#define BIF_STATUSTEXT 0x0004 1227#define BIF_RETURNFSANCESTORS 0x0008 1228#define BIF_EDITBOX 0x0010 1229#define BIF_VALIDATE 0x0020 1230#define BIF_NEWDIALOGSTYLE 0x0040 1231#define BIF_USENEWUI (BIF_NEWDIALOGSTYLE | BIF_EDITBOX) 1232#define BIF_BROWSEINCLUDEURLS 0x0080 1233#define BIF_UAHINT 0x0100 1234#define BIF_NONEWFOLDERBUTTON 0x0200 1235#define BIF_NOTRANSLATETARGETS 0x0400 1236 1237#define BIF_BROWSEFORCOMPUTER 0x1000 1238#define BIF_BROWSEFORPRINTER 0x2000 1239#define BIF_BROWSEINCLUDEFILES 0x4000 1240#define BIF_SHAREABLE 0x8000 1241 1242/* message from browser */ 1243#define BFFM_INITIALIZED 1 1244#define BFFM_SELCHANGED 2 1245#define BFFM_VALIDATEFAILEDA 3 1246#define BFFM_VALIDATEFAILEDW 4 1247#define BFFM_IUNKNOWN 5 1248 1249/* messages to browser */ 1250#define BFFM_SETSTATUSTEXTA (WM_USER+100) 1251#define BFFM_ENABLEOK (WM_USER+101) 1252#define BFFM_SETSELECTIONA (WM_USER+102) 1253#define BFFM_SETSELECTIONW (WM_USER+103) 1254#define BFFM_SETSTATUSTEXTW (WM_USER+104) 1255#define BFFM_SETOKTEXT (WM_USER+105) 1256#define BFFM_SETEXPANDED (WM_USER+106) 1257 1258PIDLIST_ABSOLUTE WINAPI SHBrowseForFolderA(_In_ LPBROWSEINFOA lpbi); 1259PIDLIST_ABSOLUTE WINAPI SHBrowseForFolderW(_In_ LPBROWSEINFOW lpbi); 1260#define SHBrowseForFolder WINELIB_NAME_AW(SHBrowseForFolder) 1261 1262#define BFFM_SETSTATUSTEXT WINELIB_NAME_AW(BFFM_SETSTATUSTEXT) 1263#define BFFM_SETSELECTION WINELIB_NAME_AW(BFFM_SETSELECTION) 1264#define BFFM_VALIDATEFAILED WINELIB_NAME_AW(BFFM_VALIDATEFAILED) 1265 1266/********************************************************************** 1267 * SHCreateShellFolderViewEx API 1268 */ 1269 1270typedef HRESULT 1271(CALLBACK *LPFNVIEWCALLBACK)( 1272 _In_ IShellView* dwUser, 1273 _In_ IShellFolder* pshf, 1274 _In_ HWND hWnd, 1275 UINT uMsg, 1276 WPARAM wParam, 1277 LPARAM lParam); 1278 1279#include <pshpack8.h> 1280 1281typedef struct _CSFV 1282{ 1283 UINT cbSize; 1284 IShellFolder* pshf; 1285 IShellView* psvOuter; 1286 PCIDLIST_ABSOLUTE pidl; 1287 LONG lEvents; 1288 LPFNVIEWCALLBACK pfnCallback; 1289 FOLDERVIEWMODE fvm; 1290} CSFV, *LPCSFV; 1291 1292#include <poppack.h> 1293 1294HRESULT 1295WINAPI 1296SHCreateShellFolderViewEx( 1297 _In_ LPCSFV pshfvi, 1298 _Outptr_ IShellView **ppshv); 1299 1300/* SHCreateShellFolderViewEx callback messages */ 1301#define SFVM_MERGEMENU 1 1302#define SFVM_INVOKECOMMAND 2 1303#define SFVM_GETHELPTEXT 3 1304#define SFVM_GETTOOLTIPTEXT 4 1305#define SFVM_GETBUTTONINFO 5 1306#define SFVM_GETBUTTONS 6 1307#define SFVM_INITMENUPOPUP 7 1308#define SFVM_SELECTIONCHANGED 8 /* undocumented */ 1309#define SFVM_DRAWMENUITEM 9 /* undocumented */ 1310#define SFVM_MEASUREMENUITEM 10 /* undocumented */ 1311#define SFVM_EXITMENULOOP 11 /* undocumented */ 1312#define SFVM_VIEWRELEASE 12 /* undocumented */ 1313#define SFVM_GETNAMELENGTH 13 /* undocumented */ 1314#define SFVM_FSNOTIFY 14 1315#define SFVM_WINDOWCREATED 15 1316#define SFVM_WINDOWCLOSING 16 /* undocumented */ 1317#define SFVM_LISTREFRESHED 17 /* undocumented */ 1318#define SFVM_WINDOWFOCUSED 18 /* undocumented */ 1319#define SFVM_REGISTERCOPYHOOK 20 /* undocumented */ 1320#define SFVM_COPYHOOKCALLBACK 21 /* undocumented */ 1321#define SFVM_GETDETAILSOF 23 1322#define SFVM_COLUMNCLICK 24 1323#define SFVM_QUERYFSNOTIFY 25 1324#define SFVM_DEFITEMCOUNT 26 1325#define SFVM_DEFVIEWMODE 27 1326#define SFVM_UNMERGEFROMMENU 28 1327#define SFVM_ADDINGOBJECT 29 /* undocumented */ 1328#define SFVM_REMOVINGOBJECT 30 /* undocumented */ 1329#define SFVM_UPDATESTATUSBAR 31 1330#define SFVM_BACKGROUNDENUM 32 1331#define SFVM_GETCOMMANDDIR 33 /* undocumented */ 1332#define SFVM_GETCOLUMNSTREAM 34 /* undocumented */ 1333#define SFVM_CANSELECTALL 35 /* undocumented */ 1334#define SFVM_DIDDRAGDROP 36 1335#define SFVM_ISSTRICTREFRESH 37 /* undocumented */ 1336#define SFVM_ISCHILDOBJECT 38 /* undocumented */ 1337#define SFVM_SETISFV 39 1338#define SFVM_GETEXTVIEWS 40 /* undocumented */ 1339#define SFVM_THISIDLIST 41 1340#define SFVM_UPDATINGOBJECT 43 /* undocumented */ 1341#define SFVM_HWNDMAIN 46 /* undocumented */ 1342#define SFVM_ADDPROPERTYPAGES 47 1343#define SFVM_BACKGROUNDENUMDONE 48 1344#define SFVM_GETNOTIFY 49 1345#define SFVM_GETSORTDEFAULTS 53 1346#define SFVM_SIZE 57 1347#define SFVM_GETZONE 58 1348#define SFVM_GETPANE 59 1349#define SFVM_GETHELPTOPIC 63 1350#define SFVM_GETANIMATION 68 1351#define SFVM_GET_CUSTOMVIEWINFO 77 /* undocumented */ 1352#define SFVM_ENUMERATEDITEMS 79 /* undocumented */ 1353#define SFVM_GET_VIEW_DATA 80 /* undocumented */ 1354#define SFVM_GET_WEBVIEW_LAYOUT 82 /* undocumented */ 1355#define SFVM_GET_WEBVIEW_CONTENT 83 /* undocumented */ 1356#define SFVM_GET_WEBVIEW_TASKS 84 /* undocumented */ 1357#define SFVM_GET_WEBVIEW_THEME 86 /* undocumented */ 1358#define SFVM_GETDEFERREDVIEWSETTINGS 92 /* undocumented */ 1359 1360#include <pshpack8.h> 1361 1362typedef struct _SFV_CREATE 1363{ 1364 UINT cbSize; 1365 IShellFolder *pshf; 1366 IShellView *psvOuter; 1367 IShellFolderViewCB *psfvcb; 1368} SFV_CREATE; 1369 1370#include <poppack.h> 1371 1372HRESULT 1373WINAPI 1374SHCreateShellFolderView( 1375 _In_ const SFV_CREATE *pscfv, 1376 _Outptr_ IShellView **ppsv); 1377 1378/* Types and definitions for the SFM_* parameters */ 1379#include <pshpack8.h> 1380 1381#define QCMINFO_PLACE_BEFORE 0 1382#define QCMINFO_PLACE_AFTER 1 1383typedef struct _QCMINFO_IDMAP_PLACEMENT 1384{ 1385 UINT id; 1386 UINT fFlags; 1387} QCMINFO_IDMAP_PLACEMENT; 1388 1389typedef struct _QCMINFO_IDMAP 1390{ 1391 UINT nMaxIds; 1392 QCMINFO_IDMAP_PLACEMENT pIdList[1]; 1393} QCMINFO_IDMAP; 1394 1395typedef struct _QCMINFO 1396{ 1397 HMENU hmenu; 1398 UINT indexMenu; 1399 UINT idCmdFirst; 1400 UINT idCmdLast; 1401 QCMINFO_IDMAP const* pIdMap; 1402} QCMINFO, *LPQCMINFO; 1403 1404#define TBIF_DEFAULT 0x00000000 1405#define TBIF_APPEND 0x00000000 1406#define TBIF_PREPEND 0x00000001 1407#define TBIF_REPLACE 0x00000002 1408#define TBIF_INTERNETBAR 0x00010000 1409#define TBIF_STANDARDTOOLBAR 0x00020000 1410#define TBIF_NOTOOLBAR 0x00030000 1411 1412typedef struct _TBINFO 1413{ 1414 UINT cbuttons; 1415 UINT uFlags; 1416} TBINFO, *LPTBINFO; 1417 1418#include <poppack.h> 1419 1420/**************************************************************************** 1421* SHShellFolderView_Message API 1422*/ 1423 1424LRESULT 1425WINAPI 1426SHShellFolderView_Message( 1427 _In_ HWND hwndCabinet, 1428 UINT uMessage, 1429 LPARAM lParam); 1430 1431/* SHShellFolderView_Message messages */ 1432#define SFVM_REARRANGE 0x0001 1433#define SFVM_GETARRANGECOLUMN 0x0002 /* undocumented */ 1434#define SFVM_ADDOBJECT 0x0003 1435#define SFVM_GETITEMCOUNT 0x0004 /* undocumented */ 1436#define SFVM_GETITEMPIDL 0x0005 /* undocumented */ 1437#define SFVM_REMOVEOBJECT 0x0006 1438#define SFVM_UPDATEOBJECT 0x0007 1439#define SFVM_SETREDRAW 0x0008 /* undocumented */ 1440#define SFVM_GETSELECTEDOBJECTS 0x0009 1441#define SFVM_ISDROPONSOURCE 0x000A /* undocumented */ 1442#define SFVM_MOVEICONS 0x000B /* undocumented */ 1443#define SFVM_GETDRAGPOINT 0x000C /* undocumented */ 1444#define SFVM_GETDROPPOINT 0x000D /* undocumented */ 1445#define SFVM_SETITEMPOS 0x000E 1446#define SFVM_ISDROPONBACKGROUND 0x000F /* undocumented */ 1447#define SFVM_SETCLIPBOARD 0x0010 1448#define SFVM_TOGGLEAUTOARRANGE 0x0011 /* undocumented */ 1449#define SFVM_LINEUPICONS 0x0012 /* undocumented */ 1450#define SFVM_GETAUTOARRANGE 0x0013 /* undocumented */ 1451#define SFVM_GETSELECTEDCOUNT 0x0014 /* undocumented */ 1452#define SFVM_GETITEMSPACING 0x0015 /* undocumented */ 1453#define SFVM_REFRESHOBJECT 0x0016 /* undocumented */ 1454#define SFVM_SETPOINTS 0x0017 1455 1456/**************************************************************************** 1457* SHGetDataFromIDList API 1458*/ 1459#define SHGDFIL_FINDDATA 1 1460#define SHGDFIL_NETRESOURCE 2 1461#define SHGDFIL_DESCRIPTIONID 3 1462 1463#define SHDID_ROOT_REGITEM 1 1464#define SHDID_FS_FILE 2 1465#define SHDID_FS_DIRECTORY 3 1466#define SHDID_FS_OTHER 4 1467#define SHDID_COMPUTER_DRIVE35 5 1468#define SHDID_COMPUTER_DRIVE525 6 1469#define SHDID_COMPUTER_REMOVABLE 7 1470#define SHDID_COMPUTER_FIXED 8 1471#define SHDID_COMPUTER_NETDRIVE 9 1472#define SHDID_COMPUTER_CDROM 10 1473#define SHDID_COMPUTER_RAMDISK 11 1474#define SHDID_COMPUTER_OTHER 12 1475#define SHDID_NET_DOMAIN 13 1476#define SHDID_NET_SERVER 14 1477#define SHDID_NET_SHARE 15 1478#define SHDID_NET_RESTOFNET 16 1479#define SHDID_NET_OTHER 17 1480#define SHDID_COMPUTER_IMAGING 18 1481#define SHDID_COMPUTER_AUDIO 19 1482#define SHDID_COMPUTER_SHAREDDOCS 20 1483 1484#include <pshpack8.h> 1485 1486typedef struct _SHDESCRIPTIONID 1487{ DWORD dwDescriptionId; 1488 CLSID clsid; 1489} SHDESCRIPTIONID, *LPSHDESCRIPTIONID; 1490 1491#include <poppack.h> 1492 1493HRESULT 1494WINAPI 1495SHGetDataFromIDListA( 1496 _In_ LPSHELLFOLDER psf, 1497 _In_ PCUITEMID_CHILD pidl, 1498 int nFormat, 1499 _Out_writes_bytes_(cb) LPVOID pv, 1500 int cb); 1501 1502HRESULT 1503WINAPI 1504SHGetDataFromIDListW( 1505 _In_ LPSHELLFOLDER psf, 1506 _In_ PCUITEMID_CHILD pidl, 1507 int nFormat, 1508 _Out_writes_bytes_(cb) LPVOID pv, 1509 int cb); 1510 1511#define SHGetDataFromIDList WINELIB_NAME_AW(SHGetDataFromIDList) 1512 1513PIDLIST_ABSOLUTE 1514WINAPI 1515SHCloneSpecialIDList( 1516 _Reserved_ HWND hwnd, 1517 _In_ int csidl, 1518 _In_ BOOL fCreate); 1519 1520_Success_(return != 0) 1521BOOL 1522WINAPI 1523SHGetSpecialFolderPathA( 1524 _Reserved_ HWND hwndOwner, 1525 _Out_writes_(MAX_PATH) LPSTR szPath, 1526 _In_ int nFolder, 1527 _In_ BOOL bCreate); 1528 1529_Success_(return != 0) 1530BOOL 1531WINAPI 1532SHGetSpecialFolderPathW( 1533 _Reserved_ HWND hwndOwner, 1534 _Out_writes_(MAX_PATH) LPWSTR szPath, 1535 _In_ int nFolder, 1536 _In_ BOOL bCreate); 1537 1538#define SHGetSpecialFolderPath WINELIB_NAME_AW(SHGetSpecialFolderPath) 1539 1540_Check_return_ HRESULT WINAPI SHGetMalloc(_Outptr_ LPMALLOC *lpmal); 1541 1542/********************************************************************** 1543 * SHGetSetSettings () 1544 */ 1545 1546typedef struct 1547{ 1548 BOOL fShowAllObjects : 1; 1549 BOOL fShowExtensions : 1; 1550 BOOL fNoConfirmRecycle : 1; 1551 1552 BOOL fShowSysFiles : 1; 1553 BOOL fShowCompColor : 1; 1554 BOOL fDoubleClickInWebView : 1; 1555 BOOL fDesktopHTML : 1; 1556 BOOL fWin95Classic : 1; 1557 BOOL fDontPrettyPath : 1; 1558 BOOL fShowAttribCol : 1; 1559 BOOL fMapNetDrvBtn : 1; 1560 BOOL fShowInfoTip : 1; 1561 BOOL fHideIcons : 1; 1562 BOOL fWebView : 1; 1563 BOOL fFilter : 1; 1564 BOOL fShowSuperHidden : 1; 1565 BOOL fNoNetCrawling : 1; 1566 1567 UINT :15; /* Required for proper binary layout with gcc */ 1568 DWORD dwWin95Unused; 1569 UINT uWin95Unused; 1570 LONG lParamSort; 1571 int iSortDirection; 1572 UINT version; 1573 UINT uNotUsed; 1574 BOOL fSepProcess : 1; 1575 BOOL fStartPanelOn : 1; 1576 BOOL fShowStartPage : 1; 1577 BOOL fAutoCheckSelect : 1; // Vista+ 1578 BOOL fIconsOnly : 1; 1579 BOOL fShowTypeOverlay : 1; 1580 BOOL fShowStatusBar : 1; // 8+ 1581 UINT fSpareFlags : 9; 1582 UINT :15; /* Required for proper binary layout with gcc */ 1583} SHELLSTATE, *LPSHELLSTATE; 1584 1585VOID WINAPI SHGetSetSettings(LPSHELLSTATE lpss, DWORD dwMask, BOOL bSet); 1586 1587/********************************************************************** 1588 * SHGetSettings () 1589 */ 1590typedef struct 1591{ BOOL fShowAllObjects : 1; 1592 BOOL fShowExtensions : 1; 1593 BOOL fNoConfirmRecycle : 1; 1594 BOOL fShowSysFiles : 1; 1595 BOOL fShowCompColor : 1; 1596 BOOL fDoubleClickInWebView : 1; 1597 BOOL fDesktopHTML : 1; 1598 BOOL fWin95Classic : 1; 1599 BOOL fDontPrettyPath : 1; 1600 BOOL fShowAttribCol : 1; 1601 BOOL fMapNetDrvBtn : 1; 1602 BOOL fShowInfoTip : 1; 1603 BOOL fHideIcons : 1; 1604 BOOL fAutoCheckSelect : 1; 1605 BOOL fIconsOnly : 1; 1606 UINT fRestFlags : 1; 1607 UINT :15; /* Required for proper binary layout with gcc */ 1608} SHELLFLAGSTATE, * LPSHELLFLAGSTATE; 1609 1610VOID WINAPI SHGetSettings(_Out_ LPSHELLFLAGSTATE lpsfs, DWORD dwMask); 1611 1612#define SSF_SHOWALLOBJECTS 0x00000001 1613#define SSF_SHOWEXTENSIONS 0x00000002 1614#define SSF_SHOWCOMPCOLOR 0x00000008 1615#define SSF_SORTCOLUMNS 0x00000010 1616#define SSF_SHOWSYSFILES 0x00000020 1617#define SSF_DOUBLECLICKINWEBVIEW 0x00000080 1618#define SSF_SHOWATTRIBCOL 0x00000100 1619#define SSF_DESKTOPHTML 0x00000200 1620#define SSF_WIN95CLASSIC 0x00000400 1621#define SSF_DONTPRETTYPATH 0x00000800 1622#define SSF_MAPNETDRVBUTTON 0x00001000 1623#define SSF_SHOWINFOTIP 0x00002000 1624#define SSF_HIDEICONS 0x00004000 1625#define SSF_NOCONFIRMRECYCLE 0x00008000 1626#define SSF_FILTER 0x00010000 1627#define SSF_WEBVIEW 0x00020000 1628#define SSF_SHOWSUPERHIDDEN 0x00040000 1629#define SSF_SEPPROCESS 0x00080000 1630#if (NTDDI_VERSION >= NTDDI_WINXP) 1631#define SSF_NONETCRAWLING 0x00100000 1632#define SSF_STARTPANELON 0x00200000 1633#define SSF_SHOWSTARTPAGE 0x00400000 1634#endif 1635#if (NTDDI_VERSION >= NTDDI_VISTA) 1636#define SSF_AUTOCHECKSELECT 0x00800000 1637#define SSF_ICONSONLY 0x01000000 1638#define SSF_SHOWTYPEOVERLAY 0x02000000 1639#endif 1640#if (NTDDI_VERSION >= NTDDI_WIN8) 1641#define SSF_SHOWSTATUSBAR 0x04000000 1642#endif 1643 1644/**************************************************************************** 1645* SHRestricted API 1646*/ 1647typedef enum RESTRICTIONS 1648{ 1649 REST_NONE = 0x00000000, 1650 REST_NORUN = 0x00000001, 1651 REST_NOCLOSE = 0x00000002, 1652 REST_NOSAVESET = 0x00000004, 1653 REST_NOFILEMENU = 0x00000008, 1654 REST_NOSETFOLDERS = 0x00000010, 1655 REST_NOSETTASKBAR = 0x00000020, 1656 REST_NODESKTOP = 0x00000040, 1657 REST_NOFIND = 0x00000080, 1658 REST_NODRIVES = 0x00000100, 1659 REST_NODRIVEAUTORUN = 0x00000200, 1660 REST_NODRIVETYPEAUTORUN = 0x00000400, 1661 REST_NONETHOOD = 0x00000800, 1662 REST_STARTBANNER = 0x00001000, 1663 REST_RESTRICTRUN = 0x00002000, 1664 REST_NOPRINTERTABS = 0x00004000, 1665 REST_NOPRINTERDELETE = 0x00008000, 1666 REST_NOPRINTERADD = 0x00010000, 1667 REST_NOSTARTMENUSUBFOLDERS = 0x00020000, 1668 REST_MYDOCSONNET = 0x00040000, 1669 REST_NOEXITTODOS = 0x00080000, 1670 REST_ENFORCESHELLEXTSECURITY = 0x00100000, 1671 REST_LINKRESOLVEIGNORELINKINFO = 0x00200000, 1672 REST_NOCOMMONGROUPS = 0x00400000, 1673 REST_SEPARATEDESKTOPPROCESS = 0x00800000, 1674 REST_NOWEB = 0x01000000, 1675 REST_NOTRAYCONTEXTMENU = 0x02000000, 1676 REST_NOVIEWCONTEXTMENU = 0x04000000, 1677 REST_NONETCONNECTDISCONNECT = 0x08000000, 1678 REST_STARTMENULOGOFF = 0x10000000, 1679 REST_NOSETTINGSASSIST = 0x20000000, 1680 REST_NOINTERNETICON = 0x40000001, 1681 REST_NORECENTDOCSHISTORY, 1682 REST_NORECENTDOCSMENU, 1683 REST_NOACTIVEDESKTOP, 1684 REST_NOACTIVEDESKTOPCHANGES, 1685 REST_NOFAVORITESMENU, 1686 REST_CLEARRECENTDOCSONEXIT, 1687 REST_CLASSICSHELL, 1688 REST_NOCUSTOMIZEWEBVIEW, 1689 1690 REST_NOHTMLWALLPAPER = 0x40000010, 1691 REST_NOCHANGINGWALLPAPER, 1692 REST_NODESKCOMP, 1693 REST_NOADDDESKCOMP, 1694 REST_NODELDESKCOMP, 1695 REST_NOCLOSEDESKCOMP, 1696 REST_NOCLOSE_DRAGDROPBAND, 1697 REST_NOMOVINGBAND, 1698 REST_NOEDITDESKCOMP, 1699 REST_NORESOLVESEARCH, 1700 REST_NORESOLVETRACK, 1701 REST_FORCECOPYACLWITHFILE, 1702#if (NTDDI_VERSION < NTDDI_VISTA) 1703 REST_NOLOGO3CHANNELNOTIFY = 0x4000001C, 1704#endif 1705 REST_NOFORGETSOFTWAREUPDATE = 0x4000001D, 1706 REST_NOSETACTIVEDESKTOP, 1707 REST_NOUPDATEWINDOWS, 1708 REST_NOCHANGESTARMENU, /* 0x40000020 */ 1709 REST_NOFOLDEROPTIONS, 1710 REST_HASFINDCOMPUTERS, 1711 REST_INTELLIMENUS, 1712 REST_RUNDLGMEMCHECKBOX, 1713 REST_ARP_ShowPostSetup, 1714 REST_NOCSC, 1715 REST_NOCONTROLPANEL, 1716 REST_ENUMWORKGROUP, 1717 REST_ARP_NOARP, 1718 REST_ARP_NOREMOVEPAGE, 1719 REST_ARP_NOADDPAGE, 1720 REST_ARP_NOWINSETUPPAGE, 1721 REST_GREYMSIADS, 1722 REST_NOCHANGEMAPPEDDRIVELABEL, 1723 REST_NOCHANGEMAPPEDDRIVECOMMENT, 1724 REST_MaxRecentDocs, /* 0x40000030 */ 1725 REST_NONETWORKCONNECTIONS, 1726 REST_FORCESTARTMENULOGOFF, 1727 REST_NOWEBVIEW, 1728 REST_NOCUSTOMIZETHISFOLDER, 1729 REST_NOENCRYPTION, 1730#if (NTDDI_VERSION < NTDDI_VISTA) 1731 REST_ALLOWFRENCHENCRYPTION = 0x40000036, /* not documented */ 1732#endif 1733 REST_DONTSHOWSUPERHIDDEN = 0x40000037, 1734 REST_NOSHELLSEARCHBUTTON, 1735 REST_NOHARDWARETAB, 1736 REST_NORUNASINSTALLPROMPT, 1737 REST_PROMPTRUNASINSTALLNETPATH, 1738 REST_NOMANAGEMYCOMPUTERVERB, 1739#if (NTDDI_VERSION < NTDDI_VISTA) 1740 REST_NORECENTDOCSNETHOOD = 0x4000003D, /* not documented */ 1741#endif 1742 REST_DISALLOWRUN = 0x4000003E, 1743 REST_NOWELCOMESCREEN, 1744 REST_RESTRICTCPL, /* 0x40000040 */ 1745 REST_DISALLOWCPL, 1746 REST_NOSMBALLOONTIP, 1747 REST_NOSMHELP, 1748 REST_NOWINKEYS, 1749 REST_NOENCRYPTONMOVE, 1750 REST_NOLOCALMACHINERUN, 1751 REST_NOCURRENTUSERRUN, 1752 REST_NOLOCALMACHINERUNONCE, 1753 REST_NOCURRENTUSERRUNONCE, 1754 REST_FORCEACTIVEDESKTOPON, 1755#if (NTDDI_VERSION < NTDDI_VISTA) 1756 REST_NOCOMPUTERSNEARME = 0x4000004B, /* not documented */ 1757#endif 1758 REST_NOVIEWONDRIVE = 0x4000004C, 1759#if (NTDDI_VERSION >= NTDDI_WINXP) || defined(IE_BACKCOMPAT_VERSION) 1760 REST_NONETCRAWL = 0x4000004D, 1761 REST_NOSHAREDDOCUMENTS = 0x4000004E, 1762#endif 1763 REST_NOSMMYDOCS = 0x4000004F, 1764#if (NTDDI_VERSION >= NTDDI_WINXP) 1765 REST_NOSMMYPICS = 0x40000050, 1766 REST_ALLOWBITBUCKDRIVES, 1767 REST_NONLEGACYSHELLMODE, 1768 REST_NOCONTROLPANELBARRICADE, 1769 REST_NOSTARTPAGE, 1770 REST_NOAUTOTRAYNOTIFY, 1771 REST_NOTASKGROUPING, 1772 REST_NOCDBURNING, 1773#endif 1774#if (NTDDI_VERSION >= NTDDI_WIN2KSP3) 1775 REST_MYCOMPNOPROP = 0x40000058, 1776 REST_MYDOCSNOPROP, 1777#endif 1778#if (NTDDI_VERSION >= NTDDI_WINXP) 1779 REST_NOSTARTPANEL = 0x4000005A, 1780 REST_NODISPLAYAPPEARANCEPAGE, 1781 REST_NOTHEMESTAB, 1782 REST_NOVISUALSTYLECHOICE, 1783 REST_NOSIZECHOICE, 1784 REST_NOCOLORCHOICE, 1785 REST_SETVISUALSTYLE, /* 0x40000060 */ 1786#endif 1787#if (NTDDI_VERSION >= NTDDI_WIN2KSP3) 1788 REST_STARTRUNNOHOMEPATH = 0x40000061, 1789#endif 1790#if (NTDDI_VERSION >= NTDDI_WINXP) 1791 REST_NOUSERNAMEINSTARTPANEL = 0x40000062, 1792 REST_NOMYCOMPUTERICON, 1793 REST_NOSMNETWORKPLACES, 1794 REST_NOSMPINNEDLIST, 1795 REST_NOSMMYMUSIC, 1796 REST_NOSMEJECTPC, 1797 REST_NOSMMOREPROGRAMS, 1798 REST_NOSMMFUPROGRAMS, 1799 REST_NOTRAYITEMSDISPLAY, 1800 REST_NOTOOLBARSONTASKBAR, 1801#endif 1802 /* 0x4000006C 1803 0x4000006D 1804 0x4000006E */ 1805#if (NTDDI_VERSION >= NTDDI_WIN2KSP3) 1806 REST_NOSMCONFIGUREPROGRAMS = 0x4000006F, 1807#endif 1808#if (NTDDI_VERSION >= NTDDI_WINXP) 1809 REST_HIDECLOCK = 0x40000070, 1810 REST_NOLOWDISKSPACECHECKS, 1811#endif 1812 REST_NOENTIRENETWORK = 0x40000072, 1813#if (NTDDI_VERSION >= NTDDI_WINXP) 1814 REST_NODESKTOPCLEANUP = 0x40000073, 1815 REST_BITBUCKNUKEONDELETE, 1816 REST_BITBUCKCONFIRMDELETE, 1817 REST_BITBUCKNOPROP, 1818 REST_NODISPBACKGROUND, 1819 REST_NODISPSCREENSAVEPG, 1820 REST_NODISPSETTINGSPG, 1821 REST_NODISPSCREENSAVEPREVIEW, 1822 REST_NODISPLAYCPL, 1823 REST_HIDERUNASVERB, 1824 REST_NOTHUMBNAILCACHE, 1825#endif 1826#if (NTDDI_VERSION >= NTDDI_WINXPSP1) || defined(IE_BACKCOMPAT_VERSION) 1827 REST_NOSTRCMPLOGICAL = 0x4000007E, 1828 REST_NOPUBLISHWIZARD, 1829 REST_NOONLINEPRINTSWIZARD, /* 0x40000080 */ 1830 REST_NOWEBSERVICES, 1831#endif 1832#if (NTDDI_VERSION >= NTDDI_WIN2KSP3) 1833 REST_ALLOWUNHASHEDWEBVIEW = 0x40000082, 1834#endif 1835 REST_ALLOWLEGACYWEBVIEW = 0x40000083, 1836#if (NTDDI_VERSION >= NTDDI_WIN2KSP3) 1837 REST_REVERTWEBVIEWSECURITY = 0x40000084, 1838#endif 1839 /* 0x40000085 */ 1840 REST_INHERITCONSOLEHANDLES = 0x40000086, 1841#if (NTDDI_VERSION < NTDDI_VISTA) 1842 REST_SORTMAXITEMCOUNT = 0x40000087, 1843#endif 1844 /* 0x40000088 */ 1845 REST_NOREMOTERECURSIVEEVENTS = 0x40000089, 1846 /* 0x4000008A - 0x40000090 */ 1847#if (NTDDI_VERSION >= NTDDI_WINXPSP2) 1848 REST_NOREMOTECHANGENOTIFY = 0x40000091, 1849#if (NTDDI_VERSION < NTDDI_VISTA) 1850 REST_NOSIMPLENETIDLIST = 0x40000092, 1851#endif 1852 REST_NOENUMENTIRENETWORK = 0x40000093, 1853#if (NTDDI_VERSION < NTDDI_VISTA) 1854 REST_NODETAILSTHUMBNAILONNETWORK = 0x40000094, 1855#endif 1856 REST_NOINTERNETOPENWITH = 0x40000095, 1857#endif 1858#if (NTDDI_VERSION >= NTDDI_WINXPSP2) 1859#if (NTDDI_VERSION < NTDDI_VISTA) 1860 REST_ALLOWLEGACYLMZBEHAVIOR = 0x4000009A, /* not documented */ 1861#endif 1862 REST_DONTRETRYBADNETNAME = 0x4000009B, 1863 REST_ALLOWFILECLSIDJUNCTIONS, 1864 REST_NOUPNPINSTALL, 1865#endif 1866 /* 0x4000009E - "NormalizeLinkNetPidls" */ 1867 1868 REST_ARP_DONTGROUPPATCHES = 0x400000AC, 1869 REST_ARP_NOCHOOSEPROGRAMSPAGE, 1870 1871 /* 0x400000FF - "AllowCLSIDPROGIDMapping" */ 1872 1873 REST_NODISCONNECT = 0x41000001, 1874 REST_NOSECURITY, 1875 REST_NOFILEASSOCIATE, /* 0x41000003 */ 1876 1877#if (NTDDI_VERSION >= NTDDI_WINXPSP2) 1878 REST_ALLOWCOMMENTTOGGLE = 0x41000004, 1879#if (NTDDI_VERSION < NTDDI_VISTA) 1880 REST_USEDESKTOPINICACHE = 0x41000005, 1881 /* 0x41000006 - "NoNetFolderInfoTip" */ 1882#endif 1883#endif 1884} RESTRICTIONS; 1885 1886DWORD WINAPI SHRestricted(RESTRICTIONS rest); 1887 1888/**************************************************************************** 1889* SHChangeNotify API 1890*/ 1891typedef struct _SHChangeNotifyEntry 1892{ 1893 PCIDLIST_ABSOLUTE pidl; 1894 BOOL fRecursive; 1895} SHChangeNotifyEntry; 1896 1897#define SHCNE_RENAMEITEM 0x00000001 1898#define SHCNE_CREATE 0x00000002 1899#define SHCNE_DELETE 0x00000004 1900#define SHCNE_MKDIR 0x00000008 1901#define SHCNE_RMDIR 0x00000010 1902#define SHCNE_MEDIAINSERTED 0x00000020 1903#define SHCNE_MEDIAREMOVED 0x00000040 1904#define SHCNE_DRIVEREMOVED 0x00000080 1905#define SHCNE_DRIVEADD 0x00000100 1906#define SHCNE_NETSHARE 0x00000200 1907#define SHCNE_NETUNSHARE 0x00000400 1908#define SHCNE_ATTRIBUTES 0x00000800 1909#define SHCNE_UPDATEDIR 0x00001000 1910#define SHCNE_UPDATEITEM 0x00002000 1911#define SHCNE_SERVERDISCONNECT 0x00004000 1912#define SHCNE_UPDATEIMAGE 0x00008000 1913#define SHCNE_DRIVEADDGUI 0x00010000 1914#define SHCNE_RENAMEFOLDER 0x00020000 1915#define SHCNE_FREESPACE 0x00040000 1916 1917#define SHCNE_EXTENDED_EVENT 0x04000000 1918#define SHCNE_ASSOCCHANGED 0x08000000 1919#define SHCNE_DISKEVENTS 0x0002381F 1920#define SHCNE_GLOBALEVENTS 0x0C0581E0 1921#define SHCNE_ALLEVENTS 0x7FFFFFFF 1922#define SHCNE_INTERRUPT 0x80000000 1923 1924#define SHCNEE_THEMECHANGED 0x0001L // NT4 only? 1925#define SHCNEE_ORDERCHANGED 0x0002L 1926#define SHCNEE_MSI_CHANGE 0x0004L 1927#define SHCNEE_MSI_UNINSTALL 0x0005L 1928 1929#define SHCNF_IDLIST 0x0000 1930#define SHCNF_PATHA 0x0001 1931#define SHCNF_PRINTERA 0x0002 1932#define SHCNF_DWORD 0x0003 1933#define SHCNF_PATHW 0x0005 1934#define SHCNF_PRINTERW 0x0006 1935#define SHCNF_TYPE 0x00FF 1936#define SHCNF_FLUSH 0x1000 1937#define SHCNF_FLUSHNOWAIT 0x3000 1938#define SHCNF_NOTIFYRECURSIVE 0x10000 1939 1940#define SHCNF_PATH WINELIB_NAME_AW(SHCNF_PATH) 1941#define SHCNF_PRINTER WINELIB_NAME_AW(SHCNF_PRINTER) 1942 1943#define SHCNRF_InterruptLevel 0x0001 1944#define SHCNRF_ShellLevel 0x0002 1945#define SHCNRF_RecursiveInterrupt 0x1000 1946#define SHCNRF_NewDelivery 0x8000 1947 1948void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2); 1949 1950typedef enum { 1951 SLDF_DEFAULT = 0x00000000, 1952 SLDF_HAS_ID_LIST = 0x00000001, 1953 SLDF_HAS_LINK_INFO = 0x00000002, 1954 SLDF_HAS_NAME = 0x00000004, 1955 SLDF_HAS_RELPATH = 0x00000008, 1956 SLDF_HAS_WORKINGDIR = 0x00000010, 1957 SLDF_HAS_ARGS = 0x00000020, 1958 SLDF_HAS_ICONLOCATION = 0x00000040, 1959 SLDF_UNICODE = 0x00000080, 1960 SLDF_FORCE_NO_LINKINFO = 0x00000100, 1961 SLDF_HAS_EXP_SZ = 0x00000200, 1962 SLDF_RUN_IN_SEPARATE = 0x00000400, 1963#if (NTDDI_VERSION < NTDDI_LONGHORN) 1964 SLDF_HAS_LOGO3ID = 0x00000800, 1965#endif 1966 SLDF_HAS_DARWINID = 0x00001000, 1967 SLDF_RUNAS_USER = 0x00002000, 1968 SLDF_HAS_EXP_ICON_SZ = 0x00004000, 1969 SLDF_NO_PIDL_ALIAS = 0x00008000, 1970 SLDF_FORCE_UNCNAME = 0x00010000, 1971 SLDF_RUN_WITH_SHIMLAYER = 0x00020000, 1972#if (NTDDI_VERSION >= NTDDI_LONGHORN) 1973 SLDF_FORCE_NO_LINKTRACK = 0x00040000, 1974 SLDF_ENABLE_TARGET_METADATA = 0x00080000, 1975 SLDF_DISABLE_LINK_PATH_TRACKING = 0x00100000, 1976 SLDF_DISABLE_KNOWNFOLDER_RELATIVE_TRACKING = 0x00200000, 1977#if (NTDDI_VERSION >= NTDDI_WIN7) 1978 SLDF_NO_KF_ALIAS = 0x00400000, 1979 SLDF_ALLOW_LINK_TO_LINK = 0x00800000, 1980 SLDF_UNALIAS_ON_SAVE = 0x01000000, 1981 SLDF_PREFER_ENVIRONMENT_PATH = 0x02000000, 1982 SLDF_KEEP_LOCAL_IDLIST_FOR_UNC_TARGET = 0x04000000, 1983#if (NTDDI_VERSION >= NTDDI_WIN8) 1984 SLDF_PERSIST_VOLUME_ID_RELATIVE = 0x08000000, 1985 SLDF_VALID = 0x0ffff7ff, /* Windows 8 */ 1986#else 1987 SLDF_VALID = 0x07fff7ff, /* Windows 7 */ 1988#endif 1989#else 1990 SLDF_VALID = 0x003ff7ff, /* Windows Vista */ 1991#endif 1992#endif 1993 SLDF_RESERVED = 0x80000000, 1994} SHELL_LINK_DATA_FLAGS; 1995 1996typedef struct tagDATABLOCKHEADER 1997{ 1998 DWORD cbSize; 1999 DWORD dwSignature; 2000} DATABLOCK_HEADER, *LPDATABLOCK_HEADER, *LPDBLIST; 2001 2002#ifdef LF_FACESIZE 2003typedef struct { 2004 DATABLOCK_HEADER dbh; 2005 WORD wFillAttribute; 2006 WORD wPopupFillAttribute; 2007 COORD dwScreenBufferSize; 2008 COORD dwWindowSize; 2009 COORD dwWindowOrigin; 2010 DWORD nFont; 2011 DWORD nInputBufferSize; 2012 COORD dwFontSize; 2013 UINT uFontFamily; 2014 UINT uFontWeight; 2015 WCHAR FaceName[LF_FACESIZE]; 2016 UINT uCursorSize; 2017 BOOL bFullScreen; 2018 BOOL bQuickEdit; 2019 BOOL bInsertMode; 2020 BOOL bAutoPosition; 2021 UINT uHistoryBufferSize; 2022 UINT uNumberOfHistoryBuffers; 2023 BOOL bHistoryNoDup; 2024 COLORREF ColorTable[16]; 2025} NT_CONSOLE_PROPS, *LPNT_CONSOLE_PROPS; 2026#endif 2027 2028typedef struct { 2029 DATABLOCK_HEADER dbh; 2030 UINT uCodePage; 2031} NT_FE_CONSOLE_PROPS, *LPNT_FE_CONSOLE_PROPS; 2032 2033typedef struct { 2034 DWORD cbSize; 2035 DWORD dwSignature; 2036 CHAR szTarget[MAX_PATH]; 2037 WCHAR szwTarget[MAX_PATH]; 2038} EXP_SZ_LINK, *LPEXP_SZ_LINK; 2039 2040typedef struct { 2041 DATABLOCK_HEADER dbh; 2042 CHAR szDarwinID[MAX_PATH]; 2043 WCHAR szwDarwinID[MAX_PATH]; 2044} EXP_DARWIN_LINK, *LPEXP_DARWIN_LINK; 2045 2046typedef struct { 2047 DWORD cbSize; 2048 DWORD dwSignature; 2049 DWORD idSpecialFolder; 2050 DWORD cbOffset; 2051} EXP_SPECIAL_FOLDER, *LPEXP_SPECIAL_FOLDER; 2052 2053typedef struct { 2054 DWORD cbSize; 2055 DWORD dwSignature; 2056 BYTE abPropertyStorage[1]; 2057} EXP_PROPERTYSTORAGE; 2058 2059#define EXP_SZ_LINK_SIG 0xA0000001 /* EXP_SZ_LINK */ 2060#define NT_CONSOLE_PROPS_SIG 0xA0000002 /* NT_CONSOLE_PROPS */ 2061#define NT_FE_CONSOLE_PROPS_SIG 0xA0000004 /* NT_FE_CONSOLE_PROPS */ 2062#define EXP_SPECIAL_FOLDER_SIG 0xA0000005 /* EXP_SPECIAL_FOLDER */ 2063#define EXP_DARWIN_ID_SIG 0xA0000006 /* EXP_DARWIN_LINK */ 2064#if (NTDDI_VERSION < NTDDI_LONGHORN) 2065#define EXP_LOGO3_ID_SIG 0xA0000007 /* EXP_DARWIN_LINK, for Logo3 / MS Internet Component Download (MSICD) shortcuts; old SDKs only (deprecated) */ 2066#endif 2067#define EXP_SZ_ICON_SIG 0xA0000007 /* EXP_SZ_LINK */ 2068#define EXP_PROPERTYSTORAGE_SIG 0xA0000009 /* EXP_PROPERTYSTORAGE */ 2069 2070typedef struct _SHChangeDWORDAsIDList { 2071 USHORT cb; 2072 DWORD dwItem1; 2073 DWORD dwItem2; 2074 USHORT cbZero; 2075} SHChangeDWORDAsIDList, *LPSHChangeDWORDAsIDList; 2076 2077typedef struct _SHChangeProductKeyAsIDList { 2078 USHORT cb; 2079 WCHAR wszProductKey[39]; 2080 USHORT cbZero; 2081} SHChangeProductKeyAsIDList, *LPSHChangeProductKeyAsIDList; 2082 2083ULONG 2084WINAPI 2085SHChangeNotifyRegister( 2086 _In_ HWND hwnd, 2087 int fSources, 2088 LONG fEvents, 2089 UINT wMsg, 2090 int cEntries, 2091 _In_ SHChangeNotifyEntry *pshcne); 2092 2093BOOL WINAPI SHChangeNotifyDeregister(ULONG ulID); 2094 2095HANDLE 2096WINAPI 2097SHChangeNotification_Lock( 2098 _In_ HANDLE hChangeNotification, 2099 DWORD dwProcessId, 2100 _Outptr_opt_result_buffer_(2)_Outptr_opt_result_buffer_(2) PIDLIST_ABSOLUTE **pppidl, 2101 _Out_opt_ LONG *plEvent); 2102 2103BOOL WINAPI SHChangeNotification_Unlock(_In_ HANDLE hLock); 2104 2105HRESULT 2106WINAPI 2107SHGetRealIDL( 2108 _In_ IShellFolder *psf, 2109 _In_ PCUITEMID_CHILD pidlSimple, 2110 _Outptr_ PITEMID_CHILD * ppidlReal); 2111 2112/**************************************************************************** 2113* SHCreateDirectory API 2114*/ 2115int WINAPI SHCreateDirectory(_In_opt_ HWND, _In_ LPCWSTR); 2116 2117int 2118WINAPI 2119SHCreateDirectoryExA( 2120 _In_opt_ HWND, 2121 _In_ LPCSTR, 2122 _In_opt_ LPSECURITY_ATTRIBUTES); 2123 2124int 2125WINAPI 2126SHCreateDirectoryExW( 2127 _In_opt_ HWND, 2128 _In_ LPCWSTR, 2129 _In_opt_ LPSECURITY_ATTRIBUTES); 2130 2131#define SHCreateDirectoryEx WINELIB_NAME_AW(SHCreateDirectoryEx) 2132 2133/**************************************************************************** 2134* SHGetSpecialFolderLocation API 2135*/ 2136_Check_return_ 2137HRESULT 2138WINAPI 2139SHGetSpecialFolderLocation( 2140 _Reserved_ HWND hwndOwner, 2141 _In_ int nFolder, 2142 _Outptr_ PIDLIST_ABSOLUTE *ppidl); 2143 2144HRESULT 2145WINAPI 2146SHGetFolderLocation( 2147 _Reserved_ HWND hwndOwner, 2148 _In_ int nFolder, 2149 _In_opt_ HANDLE hToken, 2150 _In_ DWORD dwReserved, 2151 _Outptr_ PIDLIST_ABSOLUTE *ppidl); 2152 2153/**************************************************************************** 2154* SHGetFolderPath API 2155*/ 2156typedef enum { 2157 SHGFP_TYPE_CURRENT = 0, 2158 SHGFP_TYPE_DEFAULT = 1 2159} SHGFP_TYPE; 2160 2161HRESULT 2162WINAPI 2163SHGetFolderPathA( 2164 _Reserved_ HWND hwnd, 2165 _In_ int nFolder, 2166 _In_opt_ HANDLE hToken, 2167 _In_ DWORD dwFlags, 2168 _Out_writes_(MAX_PATH) LPSTR pszPath); 2169 2170HRESULT 2171WINAPI 2172SHGetFolderPathW( 2173 _Reserved_ HWND hwnd, 2174 _In_ int nFolder, 2175 _In_opt_ HANDLE hToken, 2176 _In_ DWORD dwFlags, 2177 _Out_writes_(MAX_PATH) LPWSTR pszPath); 2178 2179#define SHGetFolderPath WINELIB_NAME_AW(SHGetFolderPath) 2180 2181#define CSIDL_DESKTOP 0x0000 2182#define CSIDL_INTERNET 0x0001 2183#define CSIDL_PROGRAMS 0x0002 2184#define CSIDL_CONTROLS 0x0003 2185#define CSIDL_PRINTERS 0x0004 2186#define CSIDL_PERSONAL 0x0005 2187#define CSIDL_FAVORITES 0x0006 2188#define CSIDL_STARTUP 0x0007 2189#define CSIDL_RECENT 0x0008 2190#define CSIDL_SENDTO 0x0009 2191#define CSIDL_BITBUCKET 0x000a 2192#define CSIDL_STARTMENU 0x000b 2193#define CSIDL_MYDOCUMENTS CSIDL_PERSONAL 2194#define CSIDL_MYMUSIC 0x000d 2195#define CSIDL_MYVIDEO 0x000e 2196#define CSIDL_DESKTOPDIRECTORY 0x0010 2197#define CSIDL_DRIVES 0x0011 2198#define CSIDL_NETWORK 0x0012 2199#define CSIDL_NETHOOD 0x0013 2200#define CSIDL_FONTS 0x0014 2201#define CSIDL_TEMPLATES 0x0015 2202#define CSIDL_COMMON_STARTMENU 0x0016 2203#define CSIDL_COMMON_PROGRAMS 0X0017 2204#define CSIDL_COMMON_STARTUP 0x0018 2205#define CSIDL_COMMON_DESKTOPDIRECTORY 0x0019 2206#define CSIDL_APPDATA 0x001a 2207#define CSIDL_PRINTHOOD 0x001b 2208#define CSIDL_LOCAL_APPDATA 0x001c 2209#define CSIDL_ALTSTARTUP 0x001d 2210#define CSIDL_COMMON_ALTSTARTUP 0x001e 2211#define CSIDL_COMMON_FAVORITES 0x001f 2212#define CSIDL_INTERNET_CACHE 0x0020 2213#define CSIDL_COOKIES 0x0021 2214#define CSIDL_HISTORY 0x0022 2215#define CSIDL_COMMON_APPDATA 0x0023 2216#define CSIDL_WINDOWS 0x0024 2217#define CSIDL_SYSTEM 0x0025 2218#define CSIDL_PROGRAM_FILES 0x0026 2219#define CSIDL_MYPICTURES 0x0027 2220#define CSIDL_PROFILE 0x0028 2221#define CSIDL_SYSTEMX86 0x0029 2222#define CSIDL_PROGRAM_FILESX86 0x002a 2223#define CSIDL_PROGRAM_FILES_COMMON 0x002b 2224#define CSIDL_PROGRAM_FILES_COMMONX86 0x002c 2225#define CSIDL_COMMON_TEMPLATES 0x002d 2226#define CSIDL_COMMON_DOCUMENTS 0x002e 2227#define CSIDL_COMMON_ADMINTOOLS 0x002f 2228#define CSIDL_ADMINTOOLS 0x0030 2229#define CSIDL_CONNECTIONS 0x0031 2230#define CSIDL_COMMON_MUSIC 0x0035 2231#define CSIDL_COMMON_PICTURES 0x0036 2232#define CSIDL_COMMON_VIDEO 0x0037 2233#define CSIDL_RESOURCES 0x0038 2234#define CSIDL_RESOURCES_LOCALIZED 0x0039 2235#define CSIDL_COMMON_OEM_LINKS 0x003a 2236#define CSIDL_CDBURN_AREA 0x003b 2237#define CSIDL_COMPUTERSNEARME 0x003d 2238#define CSIDL_PROFILES 0x003e 2239#define CSIDL_FOLDER_MASK 0x00ff 2240#define CSIDL_FLAG_PER_USER_INIT 0x0800 2241#define CSIDL_FLAG_NO_ALIAS 0x1000 2242#define CSIDL_FLAG_DONT_VERIFY 0x4000 2243#define CSIDL_FLAG_CREATE 0x8000 2244 2245#define CSIDL_FLAG_MASK 0xff00 2246 2247/**************************************************************************** 2248 * SHGetDesktopFolder API 2249 */ 2250_Check_return_ HRESULT WINAPI SHGetDesktopFolder(_Outptr_ IShellFolder * *); 2251 2252/**************************************************************************** 2253 * SHBindToParent API 2254 */ 2255HRESULT 2256WINAPI 2257SHBindToParent( 2258 _In_ PCIDLIST_ABSOLUTE pidl, 2259 _In_ REFIID riid, 2260 _Outptr_ LPVOID *ppv, 2261 _Outptr_opt_ PCUITEMID_CHILD *ppidlLast); 2262 2263/**************************************************************************** 2264 * SHCreateFileExtractIcon API 2265 */ 2266#if (NTDDI_VERSION >= NTDDI_WINXP) 2267 2268// NOTE: Even if documented on MSDN, the SHCreateFileExtractIconA() 2269// ANSI function never existed on Windows! 2270 2271HRESULT 2272WINAPI 2273SHCreateFileExtractIconW( 2274 _In_ LPCWSTR pszFile, 2275 _In_ DWORD dwFileAttributes, 2276 _In_ REFIID riid, 2277 _Outptr_ void **ppv); 2278 2279#ifdef UNICODE 2280#define SHCreateFileExtractIcon SHCreateFileExtractIconW 2281#endif 2282 2283#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ 2284 2285/**************************************************************************** 2286* SHDefExtractIcon API 2287*/ 2288HRESULT 2289WINAPI 2290SHDefExtractIconA( 2291 _In_ LPCSTR pszIconFile, 2292 int iIndex, 2293 UINT uFlags, 2294 _Out_opt_ HICON* phiconLarge, 2295 _Out_opt_ HICON* phiconSmall, 2296 UINT nIconSize); 2297 2298HRESULT 2299WINAPI 2300SHDefExtractIconW( 2301 _In_ LPCWSTR pszIconFile, 2302 int iIndex, 2303 UINT uFlags, 2304 _Out_opt_ HICON* phiconLarge, 2305 _Out_opt_ HICON* phiconSmall, 2306 UINT nIconSize); 2307 2308#define SHDefExtractIcon WINELIB_NAME_AW(SHDefExtractIcon) 2309 2310/* 2311 * DROPFILES for CF_HDROP and CF_PRINTERS 2312 */ 2313typedef struct _DROPFILES 2314{ 2315 DWORD pFiles; 2316 POINT pt; 2317 BOOL fNC; 2318 BOOL fWide; 2319} DROPFILES, *LPDROPFILES; 2320 2321 2322/* 2323 * FILEDESCRIPTOR[A|W].dwFlags 2324 */ 2325#define FD_CLSID 0x00000001 2326#define FD_SIZEPOINT 0x00000002 2327#define FD_ATTRIBUTES 0x00000004 2328#define FD_CREATETIME 0x00000008 2329#define FD_ACCESSTIME 0x00000010 2330#define FD_WRITESTIME 0x00000020 2331#define FD_FILESIZE 0x00000040 2332#define FD_PROGRESSUI 0x00004000 2333#define FD_LINKUI 0x00008000 2334#if (NTDDI_VERSION >= NTDDI_VISTA) 2335#define FD_UNICODE 0x80000000 2336#endif 2337 2338/* 2339 * Properties of a file in the clipboard 2340 */ 2341typedef struct _FILEDESCRIPTORA { 2342 DWORD dwFlags; 2343 CLSID clsid; 2344 SIZEL sizel; 2345 POINTL pointl; 2346 DWORD dwFileAttributes; 2347 FILETIME ftCreationTime; 2348 FILETIME ftLastAccessTime; 2349 FILETIME ftLastWriteTime; 2350 DWORD nFileSizeHigh; 2351 DWORD nFileSizeLow; 2352 CHAR cFileName[MAX_PATH]; 2353} FILEDESCRIPTORA, *LPFILEDESCRIPTORA; 2354 2355typedef struct _FILEDESCRIPTORW { 2356 DWORD dwFlags; 2357 CLSID clsid; 2358 SIZEL sizel; 2359 POINTL pointl; 2360 DWORD dwFileAttributes; 2361 FILETIME ftCreationTime; 2362 FILETIME ftLastAccessTime; 2363 FILETIME ftLastWriteTime; 2364 DWORD nFileSizeHigh; 2365 DWORD nFileSizeLow; 2366 WCHAR cFileName[MAX_PATH]; 2367} FILEDESCRIPTORW, *LPFILEDESCRIPTORW; 2368 2369DECL_WINELIB_TYPE_AW(FILEDESCRIPTOR) 2370DECL_WINELIB_TYPE_AW(LPFILEDESCRIPTOR) 2371 2372/* 2373 * CF_FILEGROUPDESCRIPTOR clipboard format 2374 */ 2375typedef struct _FILEGROUPDESCRIPTORA { 2376 UINT cItems; 2377 FILEDESCRIPTORA fgd[1]; 2378} FILEGROUPDESCRIPTORA, *LPFILEGROUPDESCRIPTORA; 2379 2380typedef struct _FILEGROUPDESCRIPTORW { 2381 UINT cItems; 2382 FILEDESCRIPTORW fgd[1]; 2383} FILEGROUPDESCRIPTORW, *LPFILEGROUPDESCRIPTORW; 2384 2385DECL_WINELIB_TYPE_AW(FILEGROUPDESCRIPTOR) 2386DECL_WINELIB_TYPE_AW(LPFILEGROUPDESCRIPTOR) 2387 2388/**************************************************************************** 2389 * Cabinet functions 2390 */ 2391 2392typedef struct { 2393 WORD cLength; 2394 WORD nVersion; 2395 BOOL fFullPathTitle:1; 2396 BOOL fSaveLocalView:1; 2397 BOOL fNotShell:1; 2398 BOOL fSimpleDefault:1; 2399 BOOL fDontShowDescBar:1; 2400 BOOL fNewWindowMode:1; 2401 BOOL fShowCompColor:1; 2402 BOOL fDontPrettyNames:1; 2403 BOOL fAdminsCreateCommonGroups:1; 2404 UINT fUnusedFlags:7; 2405 UINT :15; /* Required for proper binary layout with gcc */ 2406 UINT fMenuEnumFilter; 2407} CABINETSTATE, *LPCABINETSTATE; 2408 2409#define CABINETSTATE_VERSION 2 2410 2411BOOL 2412WINAPI 2413ReadCabinetState( 2414 _Out_writes_bytes_(cLength) CABINETSTATE *, 2415 int cLength); 2416 2417BOOL WINAPI WriteCabinetState(_In_ CABINETSTATE *); 2418 2419/**************************************************************************** 2420 * Path Manipulation Routines 2421 */ 2422 2423/* PathProcessCommand flags */ 2424#define PPCF_ADDQUOTES 0x01 2425#define PPCF_INCLUDEARGS 0x02 2426#define PPCF_ADDARGUMENTS 0x03 2427#define PPCF_NODIRECTORIES 0x10 2428#define PPCF_DONTRESOLVE 0x20 2429#define PPCF_FORCEQUALIFY 0x40 2430#define PPCF_LONGESTPOSSIBLE 0x80 2431 2432/* PathResolve flags */ 2433#define PRF_VERIFYEXISTS 0x01 2434#define PRF_EXECUTABLE 0x02 2435#define PRF_TRYPROGRAMEXTENSIONS (PRF_EXECUTABLE | PRF_VERIFYEXISTS) 2436#define PRF_FIRSTDIRDEF 0x04 2437#define PRF_DONTFINDLNK 0x08 // Used when PRF_TRYPROGRAMEXTENSIONS is specified 2438#if (NTDDI_VERSION >= NTDDI_WINXPSP2) 2439#define PRF_REQUIREABSOLUTE 0x10 2440#endif 2441 2442VOID WINAPI PathGetShortPath(_Inout_updates_(MAX_PATH) LPWSTR pszPath); 2443 2444LONG 2445WINAPI 2446PathProcessCommand( 2447 _In_ LPCWSTR, 2448 _Out_writes_(cchDest) LPWSTR, 2449 int cchDest, 2450 DWORD); 2451 2452_Success_(return != 0) 2453BOOL 2454WINAPI 2455PathYetAnotherMakeUniqueName( 2456 _Out_writes_(MAX_PATH) LPWSTR, 2457 _In_ LPCWSTR, 2458 _In_opt_ LPCWSTR, 2459 _In_opt_ LPCWSTR); 2460 2461/**************************************************************************** 2462 * Drag And Drop Routines 2463 */ 2464 2465/* DAD_AutoScroll sample structure */ 2466#define NUM_POINTS 3 2467typedef struct 2468{ 2469 int iNextSample; 2470 DWORD dwLastScroll; 2471 BOOL bFull; 2472 POINT pts[NUM_POINTS]; 2473 DWORD dwTimes[NUM_POINTS]; 2474} AUTO_SCROLL_DATA; 2475 2476BOOL WINAPI DAD_SetDragImage(HIMAGELIST,LPPOINT); 2477BOOL WINAPI DAD_DragEnterEx(HWND,POINT); 2478BOOL WINAPI DAD_DragEnterEx2(_In_ HWND, POINT, _In_opt_ IDataObject*); 2479BOOL WINAPI DAD_DragMove(POINT); 2480BOOL WINAPI DAD_DragLeave(void); 2481BOOL WINAPI DAD_AutoScroll(HWND,AUTO_SCROLL_DATA*,const POINT*); 2482 2483HRESULT 2484WINAPI 2485SHDoDragDrop( 2486 _In_opt_ HWND, 2487 _In_ IDataObject*, 2488 _In_opt_ IDropSource*, 2489 _In_ DWORD, 2490 _Out_ LPDWORD); 2491 2492/**************************************************************************** 2493 * Internet shortcut properties 2494 */ 2495 2496#define PID_IS_URL 2 2497#define PID_IS_NAME 4 2498#define PID_IS_WORKINGDIR 5 2499#define PID_IS_HOTKEY 6 2500#define PID_IS_SHOWCMD 7 2501#define PID_IS_ICONINDEX 8 2502#define PID_IS_ICONFILE 9 2503#define PID_IS_WHATSNEW 10 2504#define PID_IS_AUTHOR 11 2505#define PID_IS_DESCRIPTION 12 2506#define PID_IS_COMMENT 13 2507 2508 2509PIDLIST_RELATIVE WINAPI ILAppendID(_In_opt_ PIDLIST_RELATIVE, _In_ LPCSHITEMID, BOOL); 2510PIDLIST_RELATIVE WINAPI ILClone(_In_ PCUIDLIST_RELATIVE); 2511PITEMID_CHILD WINAPI ILCloneFirst(_In_ PCUIDLIST_RELATIVE); 2512PIDLIST_ABSOLUTE WINAPI ILCreateFromPathA(_In_ PCSTR); 2513PIDLIST_ABSOLUTE WINAPI ILCreateFromPathW(_In_ PCWSTR); 2514#define ILCreateFromPath WINELIB_NAME_AW(ILCreateFromPath) 2515PIDLIST_ABSOLUTE WINAPI ILCombine(_In_opt_ PCIDLIST_ABSOLUTE, _In_opt_ PCUIDLIST_RELATIVE); 2516PUIDLIST_RELATIVE WINAPI ILFindChild(_In_ PIDLIST_ABSOLUTE, _In_ PCIDLIST_ABSOLUTE); 2517PUITEMID_CHILD WINAPI ILFindLastID(_In_ PCUIDLIST_RELATIVE); 2518void WINAPI ILFree(_In_opt_ PIDLIST_RELATIVE); 2519PUIDLIST_RELATIVE WINAPI ILGetNext(_In_opt_ PCUIDLIST_RELATIVE); 2520UINT WINAPI ILGetSize(_In_opt_ PCUIDLIST_RELATIVE); 2521BOOL WINAPI ILIsEqual(_In_ PCIDLIST_ABSOLUTE, _In_ PCIDLIST_ABSOLUTE); 2522BOOL WINAPI ILIsParent(_In_ PCIDLIST_ABSOLUTE, _In_ PCIDLIST_ABSOLUTE, BOOL); 2523HRESULT WINAPI ILLoadFromStream(_In_ LPSTREAM, _Inout_ PIDLIST_RELATIVE*); 2524BOOL WINAPI ILRemoveLastID(_Inout_opt_ PUIDLIST_RELATIVE); 2525HRESULT WINAPI ILSaveToStream(_In_ LPSTREAM, _In_ PCUIDLIST_RELATIVE); 2526 2527static inline BOOL ILIsEmpty(_In_opt_ PCUIDLIST_RELATIVE pidl) 2528{ 2529 return !(pidl && pidl->mkid.cb); 2530} 2531 2532#include <poppack.h> 2533 2534 2535/* menu merging */ 2536#define MM_ADDSEPARATOR 0x00000001L 2537#define MM_SUBMENUSHAVEIDS 0x00000002L 2538#define MM_DONTREMOVESEPS 0x00000004L 2539 2540UINT 2541WINAPI 2542Shell_MergeMenus( 2543 _In_ HMENU hmDst, 2544 _In_ HMENU hmSrc, 2545 UINT uInsert, 2546 UINT uIDAdjust, 2547 UINT uIDAdjustMax, 2548 ULONG uFlags); 2549 2550 2551/**************************************************************************** 2552 * SHCreateDefaultContextMenu API 2553 */ 2554 2555typedef struct 2556{ 2557 HWND hwnd; 2558 IContextMenuCB *pcmcb; 2559 PCIDLIST_ABSOLUTE pidlFolder; 2560 IShellFolder *psf; 2561 UINT cidl; 2562 PCUITEMID_CHILD_ARRAY apidl; 2563 IUnknown *punkAssociationInfo; 2564 UINT cKeys; 2565 const HKEY *aKeys; 2566}DEFCONTEXTMENU; 2567 2568HRESULT 2569WINAPI 2570SHCreateDefaultContextMenu( 2571 _In_ const DEFCONTEXTMENU *, 2572 _In_ REFIID, 2573 _Outptr_ void **ppv); 2574 2575typedef HRESULT 2576(CALLBACK * LPFNDFMCALLBACK)( 2577 _In_opt_ IShellFolder*, 2578 _In_opt_ HWND, 2579 _In_opt_ IDataObject*, 2580 UINT, 2581 WPARAM, 2582 LPARAM); 2583 2584HRESULT 2585WINAPI 2586CDefFolderMenu_Create2( 2587 _In_opt_ PCIDLIST_ABSOLUTE, 2588 _In_opt_ HWND, 2589 UINT cidl, 2590 _In_reads_opt_(cidl) PCUITEMID_CHILD_ARRAY, 2591 _In_opt_ IShellFolder*, 2592 _In_opt_ LPFNDFMCALLBACK, 2593 UINT nKeys, 2594 _In_reads_opt_(nKeys) const HKEY *, 2595 _Outptr_ IContextMenu **); 2596 2597#define DFM_MERGECONTEXTMENU 1 2598#define DFM_INVOKECOMMAND 2 2599#define DFM_INVOKECOMMANDEX 12 2600#define DFM_GETDEFSTATICID 14 2601 2602#define DFM_GETHELPTEXT 5 2603#define DFM_WM_MEASUREITEM 6 2604#define DFM_WM_DRAWITEM 7 2605#define DFM_WM_INITMENUPOPUP 8 2606#define DFM_VALIDATECMD 9 2607#define DFM_MERGECONTEXTMENU_TOP 10 2608#define DFM_GETHELPTEXTW 11 2609#define DFM_MAPCOMMANDNAME 13 2610#define DFM_GETVERBW 15 2611#define DFM_GETVERBA 16 2612#define DFM_MERGECONTEXTMENU_BOTTOM 17 2613#define DFM_MODIFYQCMFLAGS 18 2614 2615 2616#define DFM_CMD_DELETE ((UINT)-1) 2617#define DFM_CMD_MOVE ((UINT)-2) 2618#define DFM_CMD_COPY ((UINT)-3) 2619#define DFM_CMD_LINK ((UINT)-4) 2620#define DFM_CMD_PROPERTIES ((UINT)-5) 2621#define DFM_CMD_NEWFOLDER ((UINT)-6) 2622#define DFM_CMD_PASTE ((UINT)-7) 2623#define DFM_CMD_VIEWLIST ((UINT)-8) 2624#define DFM_CMD_VIEWDETAILS ((UINT)-9) 2625#define DFM_CMD_PASTELINK ((UINT)-10) 2626#define DFM_CMD_PASTESPECIAL ((UINT)-11) 2627#define DFM_CMD_MODALPROP ((UINT)-12) 2628#define DFM_CMD_RENAME ((UINT)-13) 2629 2630/**************************************************************************** 2631 * SHCreateDefaultExtractIcon API 2632 */ 2633 2634HRESULT WINAPI 2635SHCreateDefaultExtractIcon( 2636 REFIID riid, 2637 void **ppv); 2638/**************************************************************************** 2639 * SHCreateDataObject API 2640 */ 2641 2642HRESULT WINAPI SHCreateDataObject( 2643 _In_opt_ PCIDLIST_ABSOLUTE pidlFolder, 2644 _In_ UINT cidl, 2645 _In_reads_opt_(cidl) PCUITEMID_CHILD_ARRAY apidl, 2646 _In_opt_ IDataObject *pdtInner, 2647 _In_ REFIID riid, 2648 _Outptr_ void **ppv); 2649 2650/**************************************************************************** 2651 * CIDLData_CreateFromIDArray API 2652 */ 2653 2654HRESULT WINAPI CIDLData_CreateFromIDArray( 2655 _In_ PCIDLIST_ABSOLUTE pidlFolder, 2656 _In_ UINT cidl, 2657 _In_reads_opt_(cidl) PCUIDLIST_RELATIVE_ARRAY apidl, 2658 _Outptr_ IDataObject **ppdtobj); 2659 2660/**************************************************************************** 2661 * SHRunControlPanel 2662 */ 2663 2664BOOL 2665WINAPI 2666SHRunControlPanel( 2667 _In_ LPCWSTR commandLine, 2668 _In_opt_ HWND parent); 2669 2670/**************************************************************************** 2671 * SHGetAttributesFromDataObject 2672 */ 2673 2674HRESULT 2675WINAPI 2676SHGetAttributesFromDataObject( 2677 _In_opt_ IDataObject* pdo, 2678 DWORD dwAttributeMask, 2679 _Out_opt_ DWORD* pdwAttributes, 2680 _Out_opt_ UINT* pcItems); 2681 2682/**************************************************************************** 2683 * SHOpenWithDialog 2684 */ 2685 2686enum tagOPEN_AS_INFO_FLAGS 2687{ 2688 OAIF_ALLOW_REGISTRATION = 1, 2689 OAIF_REGISTER_EXT = 2, 2690 OAIF_EXEC = 4, 2691 OAIF_FORCE_REGISTRATION = 8, 2692#if (NTDDI_VERSION >= NTDDI_VISTA) 2693 OAIF_HIDE_REGISTRATION = 32, 2694 OAIF_URL_PROTOCOL = 64, 2695#endif 2696}; 2697typedef int OPEN_AS_INFO_FLAGS; 2698 2699 2700typedef struct tagOPENASINFO { 2701 LPCWSTR pcszFile; 2702 LPCWSTR pcszClass; 2703 OPEN_AS_INFO_FLAGS oaifInFlags; 2704} OPENASINFO; 2705 2706HRESULT 2707WINAPI 2708SHOpenWithDialog( 2709 _In_opt_ HWND hwndParent, 2710 _In_ const OPENASINFO *poainfo); 2711 2712#define INTERFACE IShellIconOverlayIdentifier 2713 2714DECLARE_INTERFACE_(IShellIconOverlayIdentifier, IUnknown) 2715{ 2716 STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; 2717 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 2718 STDMETHOD_(ULONG,Release) (THIS) PURE; 2719 2720 STDMETHOD (IsMemberOf)(THIS_ _In_ LPCWSTR pwszPath, DWORD dwAttrib) PURE; 2721 STDMETHOD (GetOverlayInfo)(THIS_ _Out_writes_(cchMax) LPWSTR pwszIconFile, int cchMax, _Out_ int * pIndex, _Out_ DWORD * pdwFlags) PURE; 2722 STDMETHOD (GetPriority)(THIS_ _Out_ int * pIPriority) PURE; 2723}; 2724 2725#if !defined(__cplusplus) || defined(CINTERFACE) 2726/*** IUnknown methods ***/ 2727#define IShellIconOverlayIdentifier_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 2728#define IShellIconOverlayIdentifier_AddRef(p) (p)->lpVtbl->AddRef(p) 2729#define IShellIconOverlayIdentifier_Release(p) (p)->lpVtbl->Release(p) 2730/*** IShellIconOverlayIdentifier methods ***/ 2731#define IShellIconOverlayIdentifier_IsMemberOf(p,a,b) (p)->lpVtbl->IsMemberOf(p,a,b) 2732#define IShellIconOverlayIdentifier_GetOverlayInfo(p,a,b,c,d) (p)->lpVtbl->GetOverlayInfo(p,a,b,c,d) 2733#define IShellIconOverlayIdentifier_GetPriority(p,a) (p)->lpVtbl->GetPriority(p,a) 2734#endif 2735 2736#define ISIOI_ICONFILE 0x00000001 2737#define ISIOI_ICONINDEX 0x00000002 2738 2739#undef INTERFACE 2740 2741/**************************************************************************** 2742 * Travel log 2743 */ 2744 2745#define TLOG_BACK -1 2746#define TLOG_FORE 1 2747 2748#define TLMENUF_INCLUDECURRENT 0x00000001 2749#define TLMENUF_CHECKCURRENT (TLMENUF_INCLUDECURRENT | 0x00000002) 2750#define TLMENUF_BACK 0x00000010 // Default 2751#define TLMENUF_FORE 0x00000020 2752#define TLMENUF_BACKANDFORTH (TLMENUF_BACK | TLMENUF_FORE | TLMENUF_INCLUDECURRENT) 2753 2754/***************************************************************************** 2755 * IDockingWindowSite interface 2756 */ 2757#define INTERFACE IDockingWindowSite 2758DECLARE_INTERFACE_(IDockingWindowSite, IOleWindow) 2759{ 2760 // *** IUnknown methods *** 2761 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE; 2762 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 2763 STDMETHOD_(ULONG,Release)(THIS) PURE; 2764 2765 // *** IOleWindow methods *** 2766 STDMETHOD(GetWindow)(THIS_ HWND *lphwnd) PURE; 2767 STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE; 2768 2769 // *** IDockingWindowSite methods *** 2770 STDMETHOD(GetBorderDW)(THIS_ _In_ IUnknown *punkObj, _Out_ LPRECT prcBorder) PURE; 2771 STDMETHOD(RequestBorderSpaceDW)(THIS_ _In_ IUnknown *punkObj, _In_ LPCBORDERWIDTHS pbw) PURE; 2772 STDMETHOD(SetBorderSpaceDW)(THIS_ _In_ IUnknown *punkObj, _In_ LPCBORDERWIDTHS pbw) PURE; 2773}; 2774#undef INTERFACE 2775 2776#if !defined(__cplusplus) || defined(CINTERFACE) 2777/*** IUnknown methods ***/ 2778#define IDockingWindowSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 2779#define IDockingWindowSite_AddRef(p) (p)->lpVtbl->AddRef(p) 2780#define IDockingWindowSite_Release(p) (p)->lpVtbl->Release(p) 2781/*** IOleWindow methods ***/ 2782#define IDockingWindowSite_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a) 2783#define IDockingWindowSite_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a) 2784/*** IDockingWindowSite methods ***/ 2785#define IDockingWindowSite_GetBorderDW(p,a,b) (p)->lpVtbl->GetBorderDW(p,a,b) 2786#define IDockingWindowSite_RequestBorderSpaceDW(p,a,b) (p)->lpVtbl->RequestBorderSpaceDW(p,a,b) 2787#define IDockingWindowSite_SetBorderSpaceDW(p,a,b) (p)->lpVtbl->SetBorderSpaceDW(p,a,b) 2788#endif 2789 2790typedef void (CALLBACK *PFNASYNCICONTASKBALLBACK)(LPCITEMIDLIST pidl, LPVOID pvData, LPVOID pvHint, INT iIconIndex, INT iOpenIconIndex); 2791 2792#define ISFB_MASK_STATE 0x00000001 2793#define ISFB_MASK_IDLIST 0x00000010 2794 2795#define ISFB_STATE_QLINKSMODE 0x00000020 2796#define ISFB_STATE_NOSHOWTEXT 0x00000004 2797 2798#include <pshpack8.h> 2799 2800typedef struct { 2801 DWORD dwMask; 2802 DWORD dwStateMask; 2803 DWORD dwState; 2804 COLORREF crBkgnd; 2805 COLORREF crBtnLt; 2806 COLORREF crBtnDk; 2807 WORD wViewMode; 2808 WORD wAlign; 2809 IShellFolder * psf; 2810 PIDLIST_ABSOLUTE pidl; 2811} BANDINFOSFB, *PBANDINFOSFB; 2812 2813#include <poppack.h> 2814 2815#undef INTERFACE 2816#define INTERFACE IShellFolderBand 2817 2818DECLARE_INTERFACE_(IShellFolderBand, IUnknown) 2819{ 2820 // *** IUnknown methods *** 2821 STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; 2822 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 2823 STDMETHOD_(ULONG,Release) (THIS) PURE; 2824 2825 // *** IShellFolderBand Methods *** 2826 STDMETHOD(InitializeSFB)(THIS_ IShellFolder *psf, PCIDLIST_ABSOLUTE pidl) PURE; 2827 STDMETHOD(SetBandInfoSFB)(THIS_ PBANDINFOSFB pbi) PURE; 2828 STDMETHOD(GetBandInfoSFB)(THIS_ PBANDINFOSFB pbi) PURE; 2829}; 2830#undef INTERFACE 2831 2832#if (NTDDI_VERSION >= NTDDI_WIN2K) && (NTDDI_VERSION <= NTDDI_WINXPSP2) 2833/***************************************************************************** 2834 * Control Panel functions 2835 */ 2836DECLARE_HANDLE(FARPROC16); 2837LRESULT WINAPI CallCPLEntry16(HINSTANCE hMod, FARPROC16 pFunc, HWND dw3, UINT dw4, LPARAM dw5, LPARAM dw6); 2838#endif 2839 2840#ifdef __cplusplus 2841} /* extern "C" */ 2842#endif /* defined(__cplusplus) */ 2843 2844#endif /* __WINE_SHLOBJ_H */