1 /** 2 * This file is part of the mingw-w64 runtime package. 3 * No warranty is given; refer to the file DISCLAIMER within this package. 4 */ 5 #include <winapifamily.h> 6 7 #ifndef _INC_SHELLAPI 8 #define _INC_SHELLAPI 9 10 #include <_mingw_unicode.h> 11 #include <specstrings.h> 12 13 #ifndef WINSHELLAPI 14 #ifndef _SHELL32_ 15 #define WINSHELLAPI DECLSPEC_IMPORT 16 #else 17 #define WINSHELLAPI 18 #endif 19 #endif 20 21 #ifndef SHSTDAPI 22 #ifndef _SHELL32_ 23 #ifdef __cplusplus 24 #define SHSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE 25 #define SHSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE 26 #else 27 #define SHSTDAPI DECLSPEC_IMPORT HRESULT STDAPICALLTYPE 28 #define SHSTDAPI_(type) DECLSPEC_IMPORT type STDAPICALLTYPE 29 #endif 30 #else 31 #define SHSTDAPI STDAPI 32 #define SHSTDAPI_(type) STDAPI_(type) 33 #endif 34 #endif 35 36 #ifndef SHDOCAPI 37 #ifndef _SHDOCVW_ 38 #ifdef __cplusplus 39 #define SHDOCAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE 40 #define SHDOCAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE 41 #else 42 #define SHDOCAPI DECLSPEC_IMPORT HRESULT STDAPICALLTYPE 43 #define SHDOCAPI_(type) DECLSPEC_IMPORT type STDAPICALLTYPE 44 #endif 45 #else 46 #define SHDOCAPI STDAPI 47 #define SHDOCAPI_(type) STDAPI_(type) 48 #endif 49 #endif 50 51 #ifndef _WIN64 52 #include <pshpack1.h> 53 #endif 54 55 #ifdef __cplusplus 56 extern "C" { 57 #endif 58 59 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 60 DECLARE_HANDLE (HDROP); 61 62 #define DragQueryFile __MINGW_NAME_AW(DragQueryFile) 63 #define ShellExecute __MINGW_NAME_AW(ShellExecute) 64 #define FindExecutable __MINGW_NAME_AW(FindExecutable) 65 #define ShellAbout __MINGW_NAME_AW(ShellAbout) 66 #define ExtractAssociatedIcon __MINGW_NAME_AW(ExtractAssociatedIcon) 67 #define ExtractAssociatedIconEx __MINGW_NAME_AW(ExtractAssociatedIconEx) 68 #define ExtractIcon __MINGW_NAME_AW(ExtractIcon) 69 70 SHSTDAPI_(UINT) DragQueryFileA (HDROP hDrop, UINT iFile, LPSTR lpszFile, UINT cch); 71 SHSTDAPI_(UINT) DragQueryFileW (HDROP hDrop, UINT iFile, LPWSTR lpszFile, UINT cch); 72 SHSTDAPI_(WINBOOL) DragQueryPoint (HDROP hDrop, POINT *ppt); 73 SHSTDAPI_(void) DragFinish (HDROP hDrop); 74 SHSTDAPI_(void) DragAcceptFiles (HWND hWnd, WINBOOL fAccept); 75 SHSTDAPI_(HINSTANCE) ShellExecuteA (HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd); 76 SHSTDAPI_(HINSTANCE) ShellExecuteW (HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd); 77 SHSTDAPI_(HINSTANCE) FindExecutableA (LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult); 78 SHSTDAPI_(HINSTANCE) FindExecutableW (LPCWSTR lpFile, LPCWSTR lpDirectory, LPWSTR lpResult); 79 SHSTDAPI_(LPWSTR *) CommandLineToArgvW (LPCWSTR lpCmdLine, int *pNumArgs); 80 SHSTDAPI_(INT) ShellAboutA (HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON hIcon); 81 SHSTDAPI_(INT) ShellAboutW (HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON hIcon); 82 SHSTDAPI_(HICON) DuplicateIcon (HINSTANCE hInst, HICON hIcon); 83 SHSTDAPI_(HICON) ExtractAssociatedIconA (HINSTANCE hInst, LPSTR pszIconPath, WORD *piIcon); 84 SHSTDAPI_(HICON) ExtractAssociatedIconW (HINSTANCE hInst, LPWSTR pszIconPath, WORD *piIcon); 85 SHSTDAPI_(HICON) ExtractAssociatedIconExA (HINSTANCE hInst, LPSTR pszIconPath, WORD *piIconIndex, WORD *piIconId); 86 SHSTDAPI_(HICON) ExtractAssociatedIconExW (HINSTANCE hInst, LPWSTR pszIconPath, WORD *piIconIndex, WORD *piIconId); 87 SHSTDAPI_(HICON) ExtractIconA (HINSTANCE hInst, LPCSTR pszExeFileName, UINT nIconIndex); 88 SHSTDAPI_(HICON) ExtractIconW (HINSTANCE hInst, LPCWSTR pszExeFileName, UINT nIconIndex); 89 90 typedef struct _DRAGINFOA { 91 UINT uSize; 92 POINT pt; 93 WINBOOL fNC; 94 LPSTR lpFileList; 95 DWORD grfKeyState; 96 } DRAGINFOA,*LPDRAGINFOA; 97 98 typedef struct _DRAGINFOW { 99 UINT uSize; 100 POINT pt; 101 WINBOOL fNC; 102 LPWSTR lpFileList; 103 DWORD grfKeyState; 104 } DRAGINFOW,*LPDRAGINFOW; 105 106 __MINGW_TYPEDEF_AW(DRAGINFO) 107 __MINGW_TYPEDEF_AW(LPDRAGINFO) 108 109 #define ABM_NEW 0x00000000 110 #define ABM_REMOVE 0x00000001 111 #define ABM_QUERYPOS 0x00000002 112 #define ABM_SETPOS 0x00000003 113 #define ABM_GETSTATE 0x00000004 114 #define ABM_GETTASKBARPOS 0x00000005 115 #define ABM_ACTIVATE 0x00000006 116 #define ABM_GETAUTOHIDEBAR 0x00000007 117 #define ABM_SETAUTOHIDEBAR 0x00000008 118 119 #define ABM_WINDOWPOSCHANGED 0x0000009 120 #define ABM_SETSTATE 0x0000000a 121 #if NTDDI_VERSION >= 0x06020000 122 #define ABM_GETAUTOHIDEBAREX 0x0000000b 123 #define ABM_SETAUTOHIDEBAREX 0x0000000c 124 #endif 125 126 #define ABN_STATECHANGE 0x0000000 127 #define ABN_POSCHANGED 0x0000001 128 #define ABN_FULLSCREENAPP 0x0000002 129 #define ABN_WINDOWARRANGE 0x0000003 130 131 #define ABS_AUTOHIDE 0x0000001 132 #define ABS_ALWAYSONTOP 0x0000002 133 134 #define ABE_LEFT 0 135 #define ABE_TOP 1 136 #define ABE_RIGHT 2 137 #define ABE_BOTTOM 3 138 139 typedef struct _AppBarData { 140 DWORD cbSize; 141 HWND hWnd; 142 UINT uCallbackMessage; 143 UINT uEdge; 144 RECT rc; 145 LPARAM lParam; 146 } APPBARDATA,*PAPPBARDATA; 147 148 SHSTDAPI_(UINT_PTR) SHAppBarMessage (DWORD dwMessage, PAPPBARDATA pData); 149 SHSTDAPI_(DWORD) DoEnvironmentSubstA (LPSTR pszSrc, UINT cchSrc); 150 SHSTDAPI_(DWORD) DoEnvironmentSubstW (LPWSTR pszSrc, UINT cchSrc); 151 SHSTDAPI_(UINT) ExtractIconExA (LPCSTR lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons); 152 SHSTDAPI_(UINT) ExtractIconExW (LPCWSTR lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons); 153 154 #define DoEnvironmentSubst __MINGW_NAME_AW(DoEnvironmentSubst) 155 #define ExtractIconEx __MINGW_NAME_AW(ExtractIconEx) 156 157 #define EIRESID(x) (-1 * (int)(x)) 158 159 #define FO_MOVE 0x1 160 #define FO_COPY 0x2 161 #define FO_DELETE 0x3 162 #define FO_RENAME 0x4 163 164 #define FOF_MULTIDESTFILES 0x1 165 #define FOF_CONFIRMMOUSE 0x2 166 #define FOF_SILENT 0x4 167 #define FOF_RENAMEONCOLLISION 0x8 168 #define FOF_NOCONFIRMATION 0x10 169 #define FOF_WANTMAPPINGHANDLE 0x20 170 #define FOF_ALLOWUNDO 0x40 171 #define FOF_FILESONLY 0x80 172 #define FOF_SIMPLEPROGRESS 0x100 173 #define FOF_NOCONFIRMMKDIR 0x200 174 #define FOF_NOERRORUI 0x400 175 #define FOF_NOCOPYSECURITYATTRIBS 0x800 176 #define FOF_NORECURSION 0x1000 177 #define FOF_NO_CONNECTED_ELEMENTS 0x2000 178 #define FOF_WANTNUKEWARNING 0x4000 179 #define FOF_NORECURSEREPARSE 0x8000 180 181 #define FOF_NO_UI (FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR) 182 183 typedef WORD FILEOP_FLAGS; 184 185 #define PO_DELETE 0x0013 186 #define PO_RENAME 0x0014 187 #define PO_PORTCHANGE 0x0020 188 189 #define PO_REN_PORT 0x0034 190 191 typedef WORD PRINTEROP_FLAGS; 192 193 typedef struct _SHFILEOPSTRUCTA { 194 HWND hwnd; 195 UINT wFunc; 196 LPCSTR pFrom; 197 LPCSTR pTo; 198 FILEOP_FLAGS fFlags; 199 WINBOOL fAnyOperationsAborted; 200 LPVOID hNameMappings; 201 PCSTR lpszProgressTitle; 202 } SHFILEOPSTRUCTA,*LPSHFILEOPSTRUCTA; 203 204 typedef struct _SHFILEOPSTRUCTW { 205 HWND hwnd; 206 UINT wFunc; 207 LPCWSTR pFrom; 208 LPCWSTR pTo; 209 FILEOP_FLAGS fFlags; 210 WINBOOL fAnyOperationsAborted; 211 LPVOID hNameMappings; 212 PCWSTR lpszProgressTitle; 213 } SHFILEOPSTRUCTW,*LPSHFILEOPSTRUCTW; 214 215 __MINGW_TYPEDEF_AW(SHFILEOPSTRUCT) 216 __MINGW_TYPEDEF_AW(LPSHFILEOPSTRUCT) 217 218 SHSTDAPI_(int) SHFileOperationA (LPSHFILEOPSTRUCTA lpFileOp); 219 SHSTDAPI_(int) SHFileOperationW (LPSHFILEOPSTRUCTW lpFileOp); 220 221 #define SHFileOperation __MINGW_NAME_AW(SHFileOperation) 222 223 SHSTDAPI_(void) SHFreeNameMappings (HANDLE hNameMappings); 224 225 typedef struct _SHNAMEMAPPINGA { 226 LPSTR pszOldPath; 227 LPSTR pszNewPath; 228 int cchOldPath; 229 int cchNewPath; 230 } SHNAMEMAPPINGA,*LPSHNAMEMAPPINGA; 231 232 typedef struct _SHNAMEMAPPINGW { 233 LPWSTR pszOldPath; 234 LPWSTR pszNewPath; 235 int cchOldPath; 236 int cchNewPath; 237 } SHNAMEMAPPINGW,*LPSHNAMEMAPPINGW; 238 239 240 __MINGW_TYPEDEF_AW(SHNAMEMAPPING) 241 __MINGW_TYPEDEF_AW(LPSHNAMEMAPPING) 242 243 #define SE_ERR_FNF 2 244 #define SE_ERR_PNF 3 245 #define SE_ERR_ACCESSDENIED 5 246 #define SE_ERR_OOM 8 247 #define SE_ERR_DLLNOTFOUND 32 248 249 #define SE_ERR_SHARE 26 250 #define SE_ERR_ASSOCINCOMPLETE 27 251 #define SE_ERR_DDETIMEOUT 28 252 #define SE_ERR_DDEFAIL 29 253 #define SE_ERR_DDEBUSY 30 254 #define SE_ERR_NOASSOC 31 255 256 #define SEE_MASK_DEFAULT 0x0 257 #define SEE_MASK_CLASSNAME 0x1 258 #define SEE_MASK_CLASSKEY 0x3 259 260 #define SEE_MASK_IDLIST 0x4 261 #define SEE_MASK_INVOKEIDLIST 0xc 262 #if NTDDI_VERSION < 0x06000000 263 #define SEE_MASK_ICON 0x10 264 #endif 265 #define SEE_MASK_HOTKEY 0x20 266 #define SEE_MASK_NOCLOSEPROCESS 0x40 267 #define SEE_MASK_CONNECTNETDRV 0x80 268 #define SEE_MASK_NOASYNC 0x100 269 #define SEE_MASK_FLAG_DDEWAIT SEE_MASK_NOASYNC 270 #define SEE_MASK_DOENVSUBST 0x200 271 #define SEE_MASK_FLAG_NO_UI 0x400 272 #define SEE_MASK_UNICODE 0x4000 273 #define SEE_MASK_NO_CONSOLE 0x8000 274 #define SEE_MASK_ASYNCOK 0x100000 275 #define SEE_MASK_HMONITOR 0x200000 276 #define SEE_MASK_NOZONECHECKS 0x800000 277 #define SEE_MASK_NOQUERYCLASSSTORE 0x1000000 278 #define SEE_MASK_WAITFORINPUTIDLE 0x2000000 279 #define SEE_MASK_FLAG_LOG_USAGE 0x4000000 280 #if NTDDI_VERSION >= 0x06020000 281 #define SEE_MASK_FLAG_HINST_IS_SITE 0x8000000 282 #endif 283 284 #ifndef DUMMYUNIONNAME 285 #ifdef NONAMELESSUNION 286 #define DUMMYUNIONNAME u 287 #define DUMMYUNIONNAME2 u2 288 #define DUMMYUNIONNAME3 u3 289 #define DUMMYUNIONNAME4 u4 290 #define DUMMYUNIONNAME5 u5 291 #else 292 #define DUMMYUNIONNAME 293 #define DUMMYUNIONNAME2 294 #define DUMMYUNIONNAME3 295 #define DUMMYUNIONNAME4 296 #define DUMMYUNIONNAME5 297 #endif 298 #endif 299 300 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) 301 302 typedef struct _SHELLEXECUTEINFOA { 303 DWORD cbSize; 304 ULONG fMask; 305 HWND hwnd; 306 LPCSTR lpVerb; 307 LPCSTR lpFile; 308 LPCSTR lpParameters; 309 LPCSTR lpDirectory; 310 int nShow; 311 HINSTANCE hInstApp; 312 void *lpIDList; 313 LPCSTR lpClass; 314 HKEY hkeyClass; 315 DWORD dwHotKey; 316 __C89_NAMELESS union { 317 HANDLE hIcon; 318 HANDLE hMonitor; 319 } DUMMYUNIONNAME; 320 HANDLE hProcess; 321 } SHELLEXECUTEINFOA,*LPSHELLEXECUTEINFOA; 322 323 typedef struct _SHELLEXECUTEINFOW { 324 DWORD cbSize; 325 ULONG fMask; 326 HWND hwnd; 327 LPCWSTR lpVerb; 328 LPCWSTR lpFile; 329 LPCWSTR lpParameters; 330 LPCWSTR lpDirectory; 331 int nShow; 332 HINSTANCE hInstApp; 333 void *lpIDList; 334 LPCWSTR lpClass; 335 HKEY hkeyClass; 336 DWORD dwHotKey; 337 __C89_NAMELESS union { 338 HANDLE hIcon; 339 HANDLE hMonitor; 340 } DUMMYUNIONNAME; 341 HANDLE hProcess; 342 } SHELLEXECUTEINFOW,*LPSHELLEXECUTEINFOW; 343 344 __MINGW_TYPEDEF_AW(SHELLEXECUTEINFO) 345 __MINGW_TYPEDEF_AW(LPSHELLEXECUTEINFO) 346 347 SHSTDAPI_(WINBOOL) ShellExecuteExA (SHELLEXECUTEINFOA *pExecInfo); 348 SHSTDAPI_(WINBOOL) ShellExecuteExW (SHELLEXECUTEINFOW *pExecInfo); 349 350 #define ShellExecuteEx __MINGW_NAME_AW(ShellExecuteEx) 351 352 typedef struct _SHCREATEPROCESSINFOW { 353 DWORD cbSize; 354 ULONG fMask; 355 HWND hwnd; 356 LPCWSTR pszFile; 357 LPCWSTR pszParameters; 358 LPCWSTR pszCurrentDirectory; 359 HANDLE hUserToken; 360 LPSECURITY_ATTRIBUTES lpProcessAttributes; 361 LPSECURITY_ATTRIBUTES lpThreadAttributes; 362 WINBOOL bInheritHandles; 363 DWORD dwCreationFlags; 364 LPSTARTUPINFOW lpStartupInfo; 365 LPPROCESS_INFORMATION lpProcessInformation; 366 } SHCREATEPROCESSINFOW,*PSHCREATEPROCESSINFOW; 367 368 SHSTDAPI_(WINBOOL) SHCreateProcessAsUserW (PSHCREATEPROCESSINFOW pscpi); 369 370 #if NTDDI_VERSION >= 0x06000000 371 SHSTDAPI SHEvaluateSystemCommandTemplate (PCWSTR pszCmdTemplate, PWSTR *ppszApplication, PWSTR *ppszCommandLine, PWSTR *ppszParameters); 372 373 typedef enum ASSOCCLASS { 374 ASSOCCLASS_SHELL_KEY = 0, 375 ASSOCCLASS_PROGID_KEY, 376 ASSOCCLASS_PROGID_STR, 377 ASSOCCLASS_CLSID_KEY, 378 ASSOCCLASS_CLSID_STR, 379 ASSOCCLASS_APP_KEY, 380 ASSOCCLASS_APP_STR, 381 ASSOCCLASS_SYSTEM_STR, 382 ASSOCCLASS_FOLDER, 383 ASSOCCLASS_STAR, 384 #if NTDDI_VERSION >= 0x06020000 385 ASSOCCLASS_FIXED_PROGID_STR, 386 ASSOCCLASS_PROTOCOL_STR, 387 #endif 388 } ASSOCCLASS; 389 390 typedef struct ASSOCIATIONELEMENT { 391 ASSOCCLASS ac; 392 HKEY hkClass; 393 PCWSTR pszClass; 394 } ASSOCIATIONELEMENT; 395 396 SHSTDAPI AssocCreateForClasses (const ASSOCIATIONELEMENT *rgClasses, ULONG cClasses, REFIID riid, void **ppv); 397 #endif 398 399 typedef struct _SHQUERYRBINFO { 400 DWORD cbSize; 401 __MINGW_EXTENSION __int64 i64Size; 402 __MINGW_EXTENSION __int64 i64NumItems; 403 } SHQUERYRBINFO,*LPSHQUERYRBINFO; 404 405 #define SHERB_NOCONFIRMATION 0x00000001 406 #define SHERB_NOPROGRESSUI 0x00000002 407 #define SHERB_NOSOUND 0x00000004 408 409 SHSTDAPI SHQueryRecycleBinA (LPCSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo); 410 SHSTDAPI SHQueryRecycleBinW (LPCWSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo); 411 412 #define SHQueryRecycleBin __MINGW_NAME_AW(SHQueryRecycleBin) 413 414 SHSTDAPI SHEmptyRecycleBinA (HWND hwnd, LPCSTR pszRootPath, DWORD dwFlags); 415 SHSTDAPI SHEmptyRecycleBinW (HWND hwnd, LPCWSTR pszRootPath, DWORD dwFlags); 416 417 #define SHEmptyRecycleBin __MINGW_NAME_AW(SHEmptyRecycleBin) 418 419 #if NTDDI_VERSION >= 0x06000000 420 typedef enum { 421 QUNS_NOT_PRESENT = 1, 422 QUNS_BUSY = 2, 423 QUNS_RUNNING_D3D_FULL_SCREEN = 3, 424 QUNS_PRESENTATION_MODE = 4, 425 QUNS_ACCEPTS_NOTIFICATIONS = 5 426 #if NTDDI_VERSION >= 0x06010000 427 , QUNS_QUIET_TIME = 6 428 #endif 429 #if NTDDI_VERSION >= 0x06020000 430 , QUNS_APP = 7 431 #endif 432 } QUERY_USER_NOTIFICATION_STATE; 433 434 SHSTDAPI SHQueryUserNotificationState (QUERY_USER_NOTIFICATION_STATE *pquns); 435 #endif 436 437 #if NTDDI_VERSION >= 0x06010000 438 SHSTDAPI SHGetPropertyStoreForWindow (HWND hwnd, REFIID riid, void **ppv); 439 #endif 440 441 #endif /* WINAPI_PARTITION_DESKTOP. */ 442 443 typedef struct _NOTIFYICONDATAA { 444 DWORD cbSize; 445 HWND hWnd; 446 UINT uID; 447 UINT uFlags; 448 UINT uCallbackMessage; 449 HICON hIcon; 450 CHAR szTip[128]; 451 DWORD dwState; 452 DWORD dwStateMask; 453 CHAR szInfo[256]; 454 __C89_NAMELESS union { 455 UINT uTimeout; 456 UINT uVersion; 457 } DUMMYUNIONNAME; 458 CHAR szInfoTitle[64]; 459 DWORD dwInfoFlags; 460 GUID guidItem; 461 #if NTDDI_VERSION >= 0x06000000 462 HICON hBalloonIcon; 463 #endif 464 } NOTIFYICONDATAA,*PNOTIFYICONDATAA; 465 466 typedef struct _NOTIFYICONDATAW { 467 DWORD cbSize; 468 HWND hWnd; 469 UINT uID; 470 UINT uFlags; 471 UINT uCallbackMessage; 472 HICON hIcon; 473 WCHAR szTip[128]; 474 DWORD dwState; 475 DWORD dwStateMask; 476 WCHAR szInfo[256]; 477 __C89_NAMELESS union { 478 UINT uTimeout; 479 UINT uVersion; 480 } DUMMYUNIONNAME; 481 WCHAR szInfoTitle[64]; 482 DWORD dwInfoFlags; 483 GUID guidItem; 484 #if NTDDI_VERSION >= 0x06000000 485 HICON hBalloonIcon; 486 #endif 487 } NOTIFYICONDATAW,*PNOTIFYICONDATAW; 488 489 __MINGW_TYPEDEF_AW(NOTIFYICONDATA) 490 __MINGW_TYPEDEF_AW(PNOTIFYICONDATA) 491 492 #define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET (NOTIFYICONDATAA, szTip[64]) 493 #define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET (NOTIFYICONDATAW, szTip[64]) 494 #define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET (NOTIFYICONDATAA, guidItem) 495 #define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET (NOTIFYICONDATAW, guidItem) 496 #define NOTIFYICONDATAA_V3_SIZE FIELD_OFFSET (NOTIFYICONDATAA, hBalloonIcon) 497 #define NOTIFYICONDATAW_V3_SIZE FIELD_OFFSET (NOTIFYICONDATAW, hBalloonIcon) 498 499 #define NOTIFYICONDATA_V1_SIZE __MINGW_NAME_AW_EXT(NOTIFYICONDATA,_V1_SIZE) 500 #define NOTIFYICONDATA_V2_SIZE __MINGW_NAME_AW_EXT(NOTIFYICONDATA,_V2_SIZE) 501 #define NOTIFYICONDATA_V3_SIZE __MINGW_NAME_AW_EXT(NOTIFYICONDATA,_V3_SIZE) 502 503 #define NIN_SELECT (WM_USER + 0) 504 #define NINF_KEY 0x1 505 #define NIN_KEYSELECT (NIN_SELECT | NINF_KEY) 506 507 #define NIN_BALLOONSHOW (WM_USER + 2) 508 #define NIN_BALLOONHIDE (WM_USER + 3) 509 #define NIN_BALLOONTIMEOUT (WM_USER + 4) 510 #define NIN_BALLOONUSERCLICK (WM_USER + 5) 511 #if NTDDI_VERSION >= 0x06000000 512 #define NIN_POPUPOPEN (WM_USER + 6) 513 #define NIN_POPUPCLOSE (WM_USER + 7) 514 #endif 515 516 #define NIM_ADD 0x00000000 517 #define NIM_MODIFY 0x00000001 518 #define NIM_DELETE 0x00000002 519 #define NIM_SETFOCUS 0x00000003 520 #define NIM_SETVERSION 0x00000004 521 522 #define NOTIFYICON_VERSION 3 523 #if NTDDI_VERSION >= 0x06000000 524 #define NOTIFYICON_VERSION_4 4 525 #endif 526 527 #define NIF_MESSAGE 0x00000001 528 #define NIF_ICON 0x00000002 529 #define NIF_TIP 0x00000004 530 #define NIF_STATE 0x00000008 531 #define NIF_INFO 0x00000010 532 #if _WIN32_IE >= 0x600 533 #define NIF_GUID 0x00000020 534 #endif 535 #if NTDDI_VERSION >= 0x06000000 536 #define NIF_REALTIME 0x00000040 537 #define NIF_SHOWTIP 0x00000080 538 #endif 539 540 #define NIS_HIDDEN 0x00000001 541 #define NIS_SHAREDICON 0x00000002 542 543 #define NIIF_NONE 0x00000000 544 #define NIIF_INFO 0x00000001 545 #define NIIF_WARNING 0x00000002 546 #define NIIF_ERROR 0x00000003 547 #define NIIF_USER 0x00000004 548 #define NIIF_ICON_MASK 0x0000000f 549 #define NIIF_NOSOUND 0x00000010 550 #if NTDDI_VERSION >= 0x06000000 551 #define NIIF_LARGE_ICON 0x00000020 552 #endif 553 #if NTDDI_VERSION >= 0x06010000 554 #define NIIF_RESPECT_QUIET_TIME 0x00000080 555 #endif 556 557 typedef struct _NOTIFYICONIDENTIFIER { 558 DWORD cbSize; 559 HWND hWnd; 560 UINT uID; 561 GUID guidItem; 562 } NOTIFYICONIDENTIFIER,*PNOTIFYICONIDENTIFIER; 563 564 SHSTDAPI_(WINBOOL) Shell_NotifyIconA (DWORD dwMessage, PNOTIFYICONDATAA lpData); 565 SHSTDAPI_(WINBOOL) Shell_NotifyIconW (DWORD dwMessage, PNOTIFYICONDATAW lpData); 566 567 #define Shell_NotifyIcon __MINGW_NAME_AW(Shell_NotifyIcon) 568 569 #if NTDDI_VERSION >= 0x06010000 570 SHSTDAPI Shell_NotifyIconGetRect (const NOTIFYICONIDENTIFIER *identifier, RECT *iconLocation); 571 #endif 572 573 #ifndef SHFILEINFO_DEFINED 574 #define SHFILEINFO_DEFINED 575 576 typedef struct _SHFILEINFOA { 577 HICON hIcon; 578 int iIcon; 579 DWORD dwAttributes; 580 CHAR szDisplayName[MAX_PATH]; 581 CHAR szTypeName[80]; 582 } SHFILEINFOA; 583 584 typedef struct _SHFILEINFOW { 585 HICON hIcon; 586 int iIcon; 587 DWORD dwAttributes; 588 WCHAR szDisplayName[MAX_PATH]; 589 WCHAR szTypeName[80]; 590 } SHFILEINFOW; 591 592 __MINGW_TYPEDEF_AW(SHFILEINFO) 593 #endif 594 595 #define SHGFI_ICON 0x000000100 596 #define SHGFI_DISPLAYNAME 0x000000200 597 #define SHGFI_TYPENAME 0x000000400 598 #define SHGFI_ATTRIBUTES 0x000000800 599 #define SHGFI_ICONLOCATION 0x000001000 600 #define SHGFI_EXETYPE 0x000002000 601 #define SHGFI_SYSICONINDEX 0x000004000 602 #define SHGFI_LINKOVERLAY 0x000008000 603 #define SHGFI_SELECTED 0x000010000 604 #define SHGFI_ATTR_SPECIFIED 0x000020000 605 606 #define SHGFI_LARGEICON 0x000000000 607 #define SHGFI_SMALLICON 0x000000001 608 #define SHGFI_OPENICON 0x000000002 609 #define SHGFI_SHELLICONSIZE 0x000000004 610 #define SHGFI_PIDL 0x000000008 611 #define SHGFI_USEFILEATTRIBUTES 0x000000010 612 613 #define SHGFI_ADDOVERLAYS 0x000000020 614 #define SHGFI_OVERLAYINDEX 0x000000040 615 616 SHSTDAPI_(DWORD_PTR) SHGetFileInfoA (LPCSTR pszPath, DWORD dwFileAttributes, SHFILEINFOA *psfi, UINT cbFileInfo, UINT uFlags); 617 SHSTDAPI_(DWORD_PTR) SHGetFileInfoW (LPCWSTR pszPath, DWORD dwFileAttributes, SHFILEINFOW *psfi, UINT cbFileInfo, UINT uFlags); 618 619 #define SHGetFileInfo __MINGW_NAME_AW(SHGetFileInfo) 620 621 #if NTDDI_VERSION >= 0x06000000 622 typedef struct _SHSTOCKICONINFO { 623 DWORD cbSize; 624 HICON hIcon; 625 int iSysImageIndex; 626 int iIcon; 627 WCHAR szPath[MAX_PATH]; 628 } SHSTOCKICONINFO; 629 630 #define SHGSI_ICONLOCATION 0 631 #define SHGSI_ICON SHGFI_ICON 632 #define SHGSI_SYSICONINDEX SHGFI_SYSICONINDEX 633 #define SHGSI_LINKOVERLAY SHGFI_LINKOVERLAY 634 #define SHGSI_SELECTED SHGFI_SELECTED 635 #define SHGSI_LARGEICON SHGFI_LARGEICON 636 #define SHGSI_SMALLICON SHGFI_SMALLICON 637 #define SHGSI_SHELLICONSIZE SHGFI_SHELLICONSIZE 638 639 typedef enum SHSTOCKICONID { 640 SIID_DOCNOASSOC = 0, 641 SIID_DOCASSOC = 1, 642 SIID_APPLICATION = 2, 643 SIID_FOLDER = 3, 644 SIID_FOLDEROPEN = 4, 645 SIID_DRIVE525 = 5, 646 SIID_DRIVE35 = 6, 647 SIID_DRIVEREMOVE = 7, 648 SIID_DRIVEFIXED = 8, 649 SIID_DRIVENET = 9, 650 SIID_DRIVENETDISABLED = 10, 651 SIID_DRIVECD = 11, 652 SIID_DRIVERAM = 12, 653 SIID_WORLD = 13, 654 SIID_SERVER = 15, 655 SIID_PRINTER = 16, 656 SIID_MYNETWORK = 17, 657 SIID_FIND = 22, 658 SIID_HELP = 23, 659 SIID_SHARE = 28, 660 SIID_LINK = 29, 661 SIID_SLOWFILE = 30, 662 SIID_RECYCLER = 31, 663 SIID_RECYCLERFULL = 32, 664 SIID_MEDIACDAUDIO = 40, 665 SIID_LOCK = 47, 666 SIID_AUTOLIST = 49, 667 SIID_PRINTERNET = 50, 668 SIID_SERVERSHARE = 51, 669 SIID_PRINTERFAX = 52, 670 SIID_PRINTERFAXNET = 53, 671 SIID_PRINTERFILE = 54, 672 SIID_STACK = 55, 673 SIID_MEDIASVCD = 56, 674 SIID_STUFFEDFOLDER = 57, 675 SIID_DRIVEUNKNOWN = 58, 676 SIID_DRIVEDVD = 59, 677 SIID_MEDIADVD = 60, 678 SIID_MEDIADVDRAM = 61, 679 SIID_MEDIADVDRW = 62, 680 SIID_MEDIADVDR = 63, 681 SIID_MEDIADVDROM = 64, 682 SIID_MEDIACDAUDIOPLUS = 65, 683 SIID_MEDIACDRW = 66, 684 SIID_MEDIACDR = 67, 685 SIID_MEDIACDBURN = 68, 686 SIID_MEDIABLANKCD = 69, 687 SIID_MEDIACDROM = 70, 688 SIID_AUDIOFILES = 71, 689 SIID_IMAGEFILES = 72, 690 SIID_VIDEOFILES = 73, 691 SIID_MIXEDFILES = 74, 692 SIID_FOLDERBACK = 75, 693 SIID_FOLDERFRONT = 76, 694 SIID_SHIELD = 77, 695 SIID_WARNING = 78, 696 SIID_INFO = 79, 697 SIID_ERROR = 80, 698 SIID_KEY = 81, 699 SIID_SOFTWARE = 82, 700 SIID_RENAME = 83, 701 SIID_DELETE = 84, 702 SIID_MEDIAAUDIODVD = 85, 703 SIID_MEDIAMOVIEDVD = 86, 704 SIID_MEDIAENHANCEDCD = 87, 705 SIID_MEDIAENHANCEDDVD = 88, 706 SIID_MEDIAHDDVD = 89, 707 SIID_MEDIABLURAY = 90, 708 SIID_MEDIAVCD = 91, 709 SIID_MEDIADVDPLUSR = 92, 710 SIID_MEDIADVDPLUSRW = 93, 711 SIID_DESKTOPPC = 94, 712 SIID_MOBILEPC = 95, 713 SIID_USERS = 96, 714 SIID_MEDIASMARTMEDIA = 97, 715 SIID_MEDIACOMPACTFLASH = 98, 716 SIID_DEVICECELLPHONE = 99, 717 SIID_DEVICECAMERA = 100, 718 SIID_DEVICEVIDEOCAMERA = 101, 719 SIID_DEVICEAUDIOPLAYER = 102, 720 SIID_NETWORKCONNECT = 103, 721 SIID_INTERNET = 104, 722 SIID_ZIPFILE = 105, 723 SIID_SETTINGS = 106, 724 725 SIID_DRIVEHDDVD = 132, 726 SIID_DRIVEBD = 133, 727 SIID_MEDIAHDDVDROM = 134, 728 SIID_MEDIAHDDVDR = 135, 729 SIID_MEDIAHDDVDRAM = 136, 730 SIID_MEDIABDROM = 137, 731 SIID_MEDIABDR = 138, 732 SIID_MEDIABDRE = 139, 733 SIID_CLUSTEREDDRIVE = 140, 734 735 SIID_MAX_ICONS = 175 736 } SHSTOCKICONID; 737 738 #define SIID_INVALID ((SHSTOCKICONID)-1) 739 740 SHSTDAPI SHGetStockIconInfo (SHSTOCKICONID siid, UINT uFlags, SHSTOCKICONINFO *psii); 741 #endif 742 743 #define SHGetDiskFreeSpace SHGetDiskFreeSpaceEx 744 745 SHSTDAPI_(WINBOOL) SHGetDiskFreeSpaceExA (LPCSTR pszDirectoryName, ULARGE_INTEGER *pulFreeBytesAvailableToCaller, ULARGE_INTEGER *pulTotalNumberOfBytes, ULARGE_INTEGER *pulTotalNumberOfFreeBytes); 746 SHSTDAPI_(WINBOOL) SHGetDiskFreeSpaceExW (LPCWSTR pszDirectoryName, ULARGE_INTEGER *pulFreeBytesAvailableToCaller, ULARGE_INTEGER *pulTotalNumberOfBytes, ULARGE_INTEGER *pulTotalNumberOfFreeBytes); 747 SHSTDAPI_(WINBOOL) SHGetNewLinkInfoA (LPCSTR pszLinkTo, LPCSTR pszDir, LPSTR pszName, WINBOOL *pfMustCopy, UINT uFlags); 748 SHSTDAPI_(WINBOOL) SHGetNewLinkInfoW (LPCWSTR pszLinkTo, LPCWSTR pszDir, LPWSTR pszName, WINBOOL *pfMustCopy, UINT uFlags); 749 750 #define SHGetDiskFreeSpaceEx __MINGW_NAME_AW(SHGetDiskFreeSpaceEx) 751 #define SHGetNewLinkInfo __MINGW_NAME_AW(SHGetNewLinkInfo) 752 753 #define SHGNLI_PIDL 0x000000001 754 #define SHGNLI_PREFIXNAME 0x000000002 755 #define SHGNLI_NOUNIQUE 0x000000004 756 #define SHGNLI_NOLNK 0x000000008 757 #if _WIN32_IE >= 0x0600 758 #define SHGNLI_NOLOCNAME 0x000000010 759 #endif 760 #if NTDDI_VERSION >= 0x06010000 761 #define SHGNLI_USEURLEXT 0x000000020 762 #endif 763 764 #define PRINTACTION_OPEN 0 765 #define PRINTACTION_PROPERTIES 1 766 #define PRINTACTION_NETINSTALL 2 767 #define PRINTACTION_NETINSTALLLINK 3 768 #define PRINTACTION_TESTPAGE 4 769 #define PRINTACTION_OPENNETPRN 5 770 #define PRINTACTION_DOCUMENTDEFAULTS 6 771 #define PRINTACTION_SERVERPROPERTIES 7 772 773 SHSTDAPI_(WINBOOL) SHInvokePrinterCommandA (HWND hwnd, UINT uAction, LPCSTR lpBuf1, LPCSTR lpBuf2, WINBOOL fModal); 774 SHSTDAPI_(WINBOOL) SHInvokePrinterCommandW (HWND hwnd, UINT uAction, LPCWSTR lpBuf1, LPCWSTR lpBuf2, WINBOOL fModal); 775 776 #define SHInvokePrinterCommand __MINGW_NAME_AW(SHInvokePrinterCommand) 777 778 #if NTDDI_VERSION >= 0x06000000 779 typedef struct _OPEN_PRINTER_PROPS_INFOA { 780 DWORD dwSize; 781 LPSTR pszSheetName; 782 UINT uSheetIndex; 783 DWORD dwFlags; 784 WINBOOL bModal; 785 } OPEN_PRINTER_PROPS_INFOA,*POPEN_PRINTER_PROPS_INFOA; 786 787 typedef struct _OPEN_PRINTER_PROPS_INFOW { 788 DWORD dwSize; 789 LPWSTR pszSheetName; 790 UINT uSheetIndex; 791 DWORD dwFlags; 792 WINBOOL bModal; 793 } OPEN_PRINTER_PROPS_INFOW,*POPEN_PRINTER_PROPS_INFOW; 794 795 __MINGW_TYPEDEF_AW(OPEN_PRINTER_PROPS_INFO) 796 __MINGW_TYPEDEF_AW(POPEN_PRINTER_PROPS_INFO) 797 #define PRINT_PROP_FORCE_NAME 0x01 798 #endif 799 800 SHSTDAPI SHLoadNonloadedIconOverlayIdentifiers (void); 801 SHSTDAPI SHIsFileAvailableOffline (PCWSTR pwszPath, DWORD *pdwStatus); 802 803 #define OFFLINE_STATUS_LOCAL 0x0001 804 #define OFFLINE_STATUS_REMOTE 0x0002 805 #define OFFLINE_STATUS_INCOMPLETE 0x0004 806 807 SHSTDAPI SHSetLocalizedName (PCWSTR pszPath, PCWSTR pszResModule, int idsRes); 808 809 #if NTDDI_VERSION >= 0x06000000 810 SHSTDAPI SHRemoveLocalizedName (PCWSTR pszPath); 811 SHSTDAPI SHGetLocalizedName (PCWSTR pszPath, PWSTR pszResModule, UINT cch, int *pidsRes); 812 #endif 813 814 #ifndef _SHLWAPI_ 815 #define LWSTDAPIV_(type) EXTERN_C DECLSPEC_IMPORT type STDAPIVCALLTYPE 816 #else 817 #define LWSTDAPIV_(type) STDAPIV_ (type) 818 #endif 819 820 LWSTDAPIV_ (int) ShellMessageBoxA (HINSTANCE hAppInst, HWND hWnd, LPCSTR lpcText, LPCSTR lpcTitle, UINT fuStyle,...); 821 LWSTDAPIV_ (int) ShellMessageBoxW (HINSTANCE hAppInst, HWND hWnd, LPCWSTR lpcText, LPCWSTR lpcTitle, UINT fuStyle,...); 822 823 #define ShellMessageBox __MINGW_NAME_AW(ShellMessageBox) 824 825 SHSTDAPI_(WINBOOL) IsLFNDriveA (LPCSTR pszPath); 826 SHSTDAPI_(WINBOOL) IsLFNDriveW (LPCWSTR pszPath); 827 828 #define IsLFNDrive __MINGW_NAME_AW(IsLFNDrive) 829 830 #if _WIN32_IE >= 0x0600 831 STDAPI SHEnumerateUnreadMailAccountsA (HKEY hKeyUser, DWORD dwIndex, LPSTR pszMailAddress, int cchMailAddress); 832 STDAPI SHEnumerateUnreadMailAccountsW (HKEY hKeyUser, DWORD dwIndex, LPWSTR pszMailAddress, int cchMailAddress); 833 STDAPI SHGetUnreadMailCountA (HKEY hKeyUser, LPCSTR pszMailAddress, DWORD *pdwCount, FILETIME *pFileTime, LPSTR pszShellExecuteCommand, int cchShellExecuteCommand); 834 STDAPI SHGetUnreadMailCountW (HKEY hKeyUser, LPCWSTR pszMailAddress, DWORD *pdwCount, FILETIME *pFileTime, LPWSTR pszShellExecuteCommand, int cchShellExecuteCommand); 835 STDAPI SHSetUnreadMailCountA (LPCSTR pszMailAddress, DWORD dwCount, LPCSTR pszShellExecuteCommand); 836 STDAPI SHSetUnreadMailCountW (LPCWSTR pszMailAddress, DWORD dwCount, LPCWSTR pszShellExecuteCommand); 837 838 #define SHEnumerateUnreadMailAccounts __MINGW_NAME_AW(SHEnumerateUnreadMailAccounts) 839 #define SHGetUnreadMailCount __MINGW_NAME_AW(SHGetUnreadMailCount) 840 #define SHSetUnreadMailCount __MINGW_NAME_AW(SHSetUnreadMailCount) 841 842 #endif 843 #if _WIN32_IE >= 0x0601 844 STDAPI_ (WINBOOL) SHTestTokenMembership (HANDLE hToken, ULONG ulRID); 845 #endif 846 847 #if _WIN32_IE >= 0x0600 848 SHSTDAPI SHGetImageList (int iImageList, REFIID riid, void **ppvObj); 849 850 #define SHIL_LARGE 0 851 #define SHIL_SMALL 1 852 #define SHIL_EXTRALARGE 2 853 #define SHIL_SYSSMALL 3 854 #if NTDDI_VERSION >= 0x06000000 855 #define SHIL_JUMBO 4 856 #define SHIL_LAST SHIL_JUMBO 857 #else 858 #define SHIL_LAST SHIL_SYSSMALL 859 #endif 860 861 typedef HRESULT (STDMETHODCALLTYPE *PFNCANSHAREFOLDERW) (PCWSTR pszPath); 862 typedef HRESULT (STDMETHODCALLTYPE *PFNSHOWSHAREFOLDERUIW) (HWND hwndParent, PCWSTR pszPath); 863 864 #endif 865 #endif 866 867 #ifdef __cplusplus 868 } 869 #endif 870 871 #ifndef _WIN64 872 #include <poppack.h> 873 #endif 874 875 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 876 #if NTDDI_VERSION >= 0x06000000 877 878 #define WC_NETADDRESS L"msctls_netaddress" 879 880 SHSTDAPI_(WINBOOL) InitNetworkAddressControl (void); 881 882 #define NCM_GETADDRESS (WM_USER+1) 883 #define NetAddr_GetAddress(hwnd, pv) (HRESULT)SNDMSG (hwnd, NCM_GETADDRESS, 0,(LPARAM)pv) 884 885 typedef struct tagNC_ADDRESS { 886 struct NET_ADDRESS_INFO_ *pAddrInfo; 887 USHORT PortNumber; 888 BYTE PrefixLength; 889 } NC_ADDRESS,*PNC_ADDRESS; 890 891 #define NCM_SETALLOWTYPE (WM_USER+2) 892 #define NetAddr_SetAllowType(hwnd, addrMask) (HRESULT)SNDMSG (hwnd, NCM_SETALLOWTYPE,(WPARAM)addrMask, 0) 893 894 #define NCM_GETALLOWTYPE (WM_USER+3) 895 #define NetAddr_GetAllowType(hwnd) (DWORD)SNDMSG (hwnd, NCM_GETALLOWTYPE, 0, 0) 896 897 #define NCM_DISPLAYERRORTIP (WM_USER+4) 898 #define NetAddr_DisplayErrorTip(hwnd) (HRESULT)SNDMSG (hwnd, NCM_DISPLAYERRORTIP, 0, 0) 899 #endif 900 901 #if NTDDI_VERSION >= 0x06000000 902 STDAPI SHGetDriveMedia (PCWSTR pszDrive, DWORD *pdwMediaContent); 903 #endif 904 #endif 905 #endif 906