9 #pragma warning(disable:4201)
16 #define WINSHELLAPI DECLSPEC_IMPORT
21 #define ABS_AUTOHIDE 1
22 #define ABS_ALWAYSONTOP 2
24 #define SEE_MASK_DEFAULT 0x00000000
25 #define SEE_MASK_CLASSNAME 0x00000001
26 #define SEE_MASK_CLASSKEY 0x00000003
27 #define SEE_MASK_IDLIST 0x00000004
28 #define SEE_MASK_INVOKEIDLIST 0x0000000C
29 #define SEE_MASK_ICON 0x00000010
30 #define SEE_MASK_HOTKEY 0x00000020
31 #define SEE_MASK_NOCLOSEPROCESS 0x00000040
32 #define SEE_MASK_CONNECTNETDRV 0x00000080
33 #define SEE_MASK_NOASYNC 0x00000100
34 #define SEE_MASK_FLAG_DDEWAIT SEE_MASK_NOASYNC
35 #define SEE_MASK_DOENVSUBST 0x00000200
36 #define SEE_MASK_FLAG_NO_UI 0x00000400
37 #define SEE_MASK_UNICODE 0x00004000
38 #define SEE_MASK_NO_CONSOLE 0x00008000
40 * NOTE: The following three flags are undocumented and are not present in the
41 * official Windows SDK. However they are used in shobjidl.idl to define some
42 * CMIC_MASK_* flags, these ones being mentioned in the MSDN documentation of
43 * the CMINVOKECOMMANDINFOEX structure.
44 * I affect them this range of values which seems to be strangely empty. Of
45 * course their values may differ from the real ones, however I have no way
46 * of discovering them. If somebody else can verify them, it would be great.
48 #define SEE_MASK_HASLINKNAME 0x00010000
49 #define SEE_MASK_HASTITLE 0x00020000
50 #define SEE_MASK_FLAG_SEPVDM 0x00040000
52 #define SEE_MASK_ASYNCOK 0x00100000
53 #define SEE_MASK_HMONITOR 0x00200000
54 #define SEE_MASK_NOZONECHECKS 0x00800000
55 #define SEE_MASK_NOQUERYCLASSSTORE 0x01000000
56 #define SEE_MASK_WAITFORINPUTIDLE 0x02000000
57 #define SEE_MASK_FLAG_LOG_USAGE 0x04000000
61 #define ABM_QUERYPOS 2
63 #define ABM_GETSTATE 4
64 #define ABM_GETTASKBARPOS 5
65 #define ABM_ACTIVATE 6
66 #define ABM_GETAUTOHIDEBAR 7
67 #define ABM_SETAUTOHIDEBAR 8
68 #define ABM_WINDOWPOSCHANGED 9
69 #define ABN_STATECHANGE 0
70 #define ABN_POSCHANGED 1
71 #define ABN_FULLSCREENAPP 2
72 #define ABN_WINDOWARRANGE 3
74 #if (_WIN32_IE >= 0x0500)
75 #define NIN_SELECT (WM_USER + 0)
77 #define NIN_KEYSELECT (NIN_SELECT | NINF_KEY)
80 #if (_WIN32_IE >= 0x0501)
81 #define NIN_BALLOONSHOW (WM_USER + 2)
82 #define NIN_BALLOONHIDE (WM_USER + 3)
83 #define NIN_BALLOONTIMEOUT (WM_USER + 4)
84 #define NIN_BALLOONUSERCLICK (WM_USER + 5)
86 #if (NTDDI_VERSION >= NTDDI_VISTA)
87 #define NIN_POPUPOPEN (WM_USER + 6)
88 #define NIN_POPUPCLOSE (WM_USER + 7)
94 #if _WIN32_IE >= 0x0500
95 #define NIM_SETFOCUS 3
96 #define NIM_SETVERSION 4
97 #define NOTIFYICON_VERSION 3
98 #if (NTDDI_VERSION >= NTDDI_VISTA)
99 #define NOTIFYICON_VERSION_4 4
102 #define NIF_MESSAGE 1
105 #if _WIN32_IE >= 0x0500
109 #define NIS_SHAREDICON 2
112 #define NIIF_WARNING 2
115 #if _WIN32_IE >= 0x0600
117 #define NIIF_ICON_MASK 0xf
118 #define NIIF_NOSOUND 0x10
119 #endif /* _WIN32_IE >= 0x0600 */
120 #endif /* _WIN32_IE >= 0x0500 */
124 #define SE_ERR_ACCESSDENIED 5
126 #define SE_ERR_DLLNOTFOUND 32
127 #define SE_ERR_SHARE 26
128 #define SE_ERR_ASSOCINCOMPLETE 27
129 #define SE_ERR_DDETIMEOUT 28
130 #define SE_ERR_DDEFAIL 29
131 #define SE_ERR_DDEBUSY 30
132 #define SE_ERR_NOASSOC 31
138 #define FOF_MULTIDESTFILES 0x0001
139 #define FOF_CONFIRMMOUSE 0x0002
140 #define FOF_SILENT 0x0004
141 #define FOF_RENAMEONCOLLISION 0x0008
142 #define FOF_NOCONFIRMATION 0x0010
143 #define FOF_WANTMAPPINGHANDLE 0x0020
144 #define FOF_ALLOWUNDO 0x0040
145 #define FOF_FILESONLY 0x0080
146 #define FOF_SIMPLEPROGRESS 0x0100
147 #define FOF_NOCONFIRMMKDIR 0x0200
148 #define FOF_NOERRORUI 0x0400
149 #define FOF_NOCOPYSECURITYATTRIBS 0x0800
150 #define FOF_NORECURSION 0x1000 /* don't do recursion into directories */
151 #define FOF_NO_CONNECTED_ELEMENTS 0x2000 /* don't do connected files */
152 #define FOF_WANTNUKEWARNING 0x4000 /* during delete operation, warn if delete instead
153 of recycling (even if FOF_NOCONFIRMATION) */
154 #define FOF_NORECURSEREPARSE 0x8000 /* don't do recursion into reparse points */
158 #define PO_PORTCHANGE 32
159 #define PO_REN_PORT 52
160 #define SHGFI_ADDOVERLAYS 32
161 #define SHGFI_OVERLAYINDEX 64
162 #define SHGFI_ICON 256
163 #define SHGSI_ICON SHGFI_ICON
164 #define SHGFI_DISPLAYNAME 512
165 #define SHGFI_TYPENAME 1024
166 #define SHGFI_ATTRIBUTES 2048
167 #define SHGFI_ICONLOCATION 4096
168 #define SHGFI_EXETYPE 8192
169 #define SHGFI_SYSICONINDEX 16384
170 #define SHGFI_LINKOVERLAY 32768
171 #define SHGFI_SELECTED 65536
172 #define SHGFI_ATTR_SPECIFIED 131072
173 #define SHGFI_LARGEICON 0
174 #define SHGFI_SMALLICON 1
175 #define SHGSI_SMALLICON SHGFI_SMALLICON
176 #define SHGFI_OPENICON 2
177 #define SHGFI_SHELLICONSIZE 4
179 #define SHGFI_USEFILEATTRIBUTES 16
181 #if (NTDDI_VERSION >= NTDDI_WINXP)
182 #define SHIL_LARGE 0x0
183 #define SHIL_SMALL 0x1
184 #define SHIL_EXTRALARGE 0x2
185 #define SHIL_SYSSMALL 0x3
186 #if (NTDDI_VERSION >= NTDDI_VISTA)
187 #define SHIL_JUMBO 0x4
188 #define SHIL_LAST SHIL_JUMBO
190 #define SHIL_LAST SHIL_SYSSMALL
194 typedef struct _SHCREATEPROCESSINFOW
200 LPCWSTR pszParameters
;
201 LPCWSTR pszCurrentDirectory
;
202 IN HANDLE hUserToken
;
203 IN LPSECURITY_ATTRIBUTES lpProcessAttributes
;
204 IN LPSECURITY_ATTRIBUTES lpThreadAttributes
;
205 IN BOOL bInheritHandles
;
206 IN DWORD dwCreationFlags
;
207 IN LPSTARTUPINFOW lpStartupInfo
;
208 OUT LPPROCESS_INFORMATION lpProcessInformation
;
209 } SHCREATEPROCESSINFOW
, *PSHCREATEPROCESSINFOW
;
211 typedef WORD FILEOP_FLAGS
;
212 typedef WORD PRINTEROP_FLAGS
;
214 typedef struct _AppBarData
{
217 UINT uCallbackMessage
;
221 } APPBARDATA
,*PAPPBARDATA
;
222 DECLARE_HANDLE(HDROP
);
224 typedef struct _NOTIFYICONDATAA
{
229 UINT uCallbackMessage
;
231 #if (NTDDI_VERSION < NTDDI_WIN2K)
234 #if (NTDDI_VERSION >= NTDDI_WIN2K)
239 _ANONYMOUS_UNION
union {
243 CHAR szInfoTitle
[64];
246 #if (NTDDI_VERSION >= NTDDI_WINXP)
249 #if (NTDDI_VERSION >= NTDDI_VISTA)
252 } NOTIFYICONDATAA
,*PNOTIFYICONDATAA
;
254 typedef struct _NOTIFYICONDATAW
{
259 UINT uCallbackMessage
;
261 #if (NTDDI_VERSION < NTDDI_WIN2K)
264 #if (NTDDI_VERSION >= NTDDI_WIN2K)
269 _ANONYMOUS_UNION
union {
273 WCHAR szInfoTitle
[64];
276 #if (NTDDI_VERSION >= NTDDI_WINXP)
279 #if (NTDDI_VERSION >= NTDDI_VISTA)
282 } NOTIFYICONDATAW
,*PNOTIFYICONDATAW
;
284 #define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAA, szTip[64])
285 #define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAW, szTip[64])
286 #define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAA, guidItem)
287 #define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAW, guidItem)
288 #define NOTIFYICONDATAA_V3_SIZE FIELD_OFFSET(NOTIFYICONDATAA, hBalloonIcon)
289 #define NOTIFYICONDATAW_V3_SIZE FIELD_OFFSET(NOTIFYICONDATAW, hBalloonIcon)
292 typedef struct _DRAGINFOA
{
298 } DRAGINFOA
,*LPDRAGINFOA
;
299 typedef struct _DRAGINFOW
{
305 } DRAGINFOW
,*LPDRAGINFOW
;
308 typedef struct _SHELLEXECUTEINFOA
{
324 } SHELLEXECUTEINFOA
,*LPSHELLEXECUTEINFOA
;
325 typedef struct _SHELLEXECUTEINFOW
{
331 LPCWSTR lpParameters
;
341 } SHELLEXECUTEINFOW
,*LPSHELLEXECUTEINFOW
;
342 typedef struct _SHFILEOPSTRUCTA
{
348 BOOL fAnyOperationsAborted
;
350 LPCSTR lpszProgressTitle
;
351 } SHFILEOPSTRUCTA
,*LPSHFILEOPSTRUCTA
;
352 typedef struct _SHFILEOPSTRUCTW
{
358 BOOL fAnyOperationsAborted
;
360 LPCWSTR lpszProgressTitle
;
361 } SHFILEOPSTRUCTW
,*LPSHFILEOPSTRUCTW
;
362 typedef struct _SHFILEINFOA
{
366 CHAR szDisplayName
[MAX_PATH
];
369 typedef struct _SHFILEINFOW
{
373 WCHAR szDisplayName
[MAX_PATH
];
374 WCHAR szTypeName
[80];
376 typedef struct _SHQUERYRBINFO
{
380 } SHQUERYRBINFO
, *LPSHQUERYRBINFO
;
381 typedef struct _SHNAMEMAPPINGA
{
386 } SHNAMEMAPPINGA
, *LPSHNAMEMAPPINGA
;
387 typedef struct _SHNAMEMAPPINGW
{
392 } SHNAMEMAPPINGW
, *LPSHNAMEMAPPINGW
;
394 #define SHERB_NOCONFIRMATION 0x1
395 #define SHERB_NOPROGRESSUI 0x2
396 #define SHERB_NOSOUND 0x4
398 /******************************************
402 #define SHGNLI_PIDL 0x01
403 #define SHGNLI_PREFIXNAME 0x02
404 #define SHGNLI_NOUNIQUE 0x04
405 #define SHGNLI_NOLNK 0x08
407 LPWSTR
* WINAPI
CommandLineToArgvW(_In_ LPCWSTR
, _Out_
int*);
408 void WINAPI
DragAcceptFiles(_In_ HWND
, _In_ BOOL
);
409 void WINAPI
DragFinish(_In_ HDROP
);
411 _Success_(return != 0)
417 _Out_writes_opt_(cch
) LPSTR lpszFile
,
420 _Success_(return != 0)
426 _Out_writes_opt_(cch
) LPWSTR lpszFile
,
429 BOOL WINAPI
DragQueryPoint(_In_ HDROP
, _Out_ LPPOINT
);
433 ExtractAssociatedIconA(
434 _Reserved_ HINSTANCE hInst
,
435 _Inout_updates_(128) LPSTR pszIconPath
,
436 _Inout_ WORD
*piIcon
);
440 ExtractAssociatedIconW(
441 _Reserved_ HINSTANCE hInst
,
442 _Inout_updates_(128) LPWSTR pszIconPath
,
443 _Inout_ WORD
*piIcon
);
448 _Reserved_ HINSTANCE hInst
,
449 _In_ LPCSTR pszExeFileName
,
455 _Reserved_ HINSTANCE hInst
,
456 _In_ LPCWSTR pszExeFileName
,
462 _In_ LPCSTR lpszFile
,
464 _Out_writes_opt_(nIcons
) HICON
*phiconLarge
,
465 _Out_writes_opt_(nIcons
) HICON
*phiconSmall
,
471 _In_ LPCWSTR lpszFile
,
473 _Out_writes_opt_(nIcons
) HICON
*phiconLarge
,
474 _Out_writes_opt_(nIcons
) HICON
*phiconSmall
,
477 _Success_(return > 32)
482 _In_opt_ LPCSTR lpDirectory
,
483 _Out_writes_(MAX_PATH
) LPSTR lpResult
);
485 _Success_(return > 32)
490 _In_opt_ LPCWSTR lpDirectory
,
491 _Out_writes_(MAX_PATH
) LPWSTR lpResult
);
493 UINT_PTR WINAPI
SHAppBarMessage(_In_ DWORD
, _Inout_ PAPPBARDATA
);
494 BOOL WINAPI
Shell_NotifyIconA(_In_ DWORD
, _In_ PNOTIFYICONDATAA
);
495 BOOL WINAPI
Shell_NotifyIconW(_In_ DWORD
, _In_ PNOTIFYICONDATAW
);
502 _In_opt_ LPCSTR szOtherStuff
,
503 _In_opt_ HICON hIcon
);
510 _In_opt_ LPCWSTR szOtherStuff
,
511 _In_opt_ HICON hIcon
);
515 _In_opt_ HINSTANCE hAppInst
,
518 _In_opt_ LPCSTR lpcTitle
,
524 _In_opt_ HINSTANCE hAppInst
,
526 _In_ LPCWSTR lpcText
,
527 _In_opt_ LPCWSTR lpcTitle
,
535 _In_opt_ LPCSTR lpOperation
,
537 _In_opt_ LPCSTR lpParameters
,
538 _In_opt_ LPCSTR lpDirectory
,
545 _In_opt_ LPCWSTR lpOperation
,
547 _In_opt_ LPCWSTR lpParameters
,
548 _In_opt_ LPCWSTR lpDirectory
,
551 BOOL WINAPI
ShellExecuteExA(_Inout_ LPSHELLEXECUTEINFOA
);
552 BOOL WINAPI
ShellExecuteExW(_Inout_ LPSHELLEXECUTEINFOW
);
553 int WINAPI
SHFileOperationA(_Inout_ LPSHFILEOPSTRUCTA
);
554 int WINAPI
SHFileOperationW(_Inout_ LPSHFILEOPSTRUCTW
);
555 void WINAPI
SHFreeNameMappings(_In_opt_ HANDLE
);
561 DWORD dwFileAttributes
,
562 _Inout_updates_bytes_opt_(cbFileInfo
) SHFILEINFOA
*psfi
,
569 _In_ LPCWSTR pszPath
,
570 DWORD dwFileAttributes
,
571 _Inout_updates_bytes_opt_(cbFileInfo
) SHFILEINFOW
*psfi
,
575 _Success_(return != 0)
579 _In_ LPCSTR pszLinkTo
,
581 _Out_writes_(MAX_PATH
) LPSTR pszName
,
582 _Out_ BOOL
*pfMustCopy
,
585 _Success_(return != 0)
589 _In_ LPCWSTR pszLinkTo
,
591 _Out_writes_(MAX_PATH
) LPWSTR pszName
,
592 _Out_ BOOL
*pfMustCopy
,
598 _In_opt_ LPCSTR pszRootPath
,
599 _Inout_ LPSHQUERYRBINFO pSHQueryRBInfo
);
604 _In_opt_ LPCWSTR pszRootPath
,
605 _Inout_ LPSHQUERYRBINFO pSHQueryRBInfo
);
611 _In_opt_ LPCSTR pszRootPath
,
618 _In_opt_ LPCWSTR pszRootPath
,
621 BOOL WINAPI
SHCreateProcessAsUserW(_Inout_ PSHCREATEPROCESSINFOW
);
626 _Inout_updates_(cchSrc
) LPSTR pszSrc
,
632 _Inout_updates_(cchSrc
) LPWSTR pszSrc
,
636 #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAW_V1_SIZE
637 #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAW_V2_SIZE
638 #define NOTIFYICONDATA_V3_SIZE NOTIFYICONDATAW_V3_SIZE
639 typedef NOTIFYICONDATAW NOTIFYICONDATA
,*PNOTIFYICONDATA
;
640 typedef DRAGINFOW DRAGINFO
,*LPDRAGINFO
;
641 typedef SHELLEXECUTEINFOW SHELLEXECUTEINFO
,*LPSHELLEXECUTEINFO
;
642 typedef SHFILEOPSTRUCTW SHFILEOPSTRUCT
,*LPSHFILEOPSTRUCT
;
643 typedef SHFILEINFOW SHFILEINFO
;
644 typedef SHNAMEMAPPINGW SHNAMEMAPPING
;
645 typedef LPSHNAMEMAPPINGW LPSHNAMEMAPPING
;
646 #define DragQueryFile DragQueryFileW
647 #define ExtractAssociatedIcon ExtractAssociatedIconW
648 #define ExtractIcon ExtractIconW
649 #define ExtractIconEx ExtractIconExW
650 #define FindExecutable FindExecutableW
651 #define Shell_NotifyIcon Shell_NotifyIconW
652 #define ShellAbout ShellAboutW
653 #define ShellExecute ShellExecuteW
654 #define ShellExecuteEx ShellExecuteExW
655 #define ShellMessageBox ShellMessageBoxW
656 #define SHFileOperation SHFileOperationW
657 #define SHGetFileInfo SHGetFileInfoW
658 #define SHQueryRecycleBin SHQueryRecycleBinW
659 #define SHEmptyRecycleBin SHEmptyRecycleBinW
660 #define SHGetNewLinkInfo SHGetNewLinkInfoW
661 #define DoEnvironmentSubst DoEnvironmentSubstW
664 #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAA_V1_SIZE
665 #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAA_V2_SIZE
666 #define NOTIFYICONDATA_V3_SIZE NOTIFYICONDATAA_V3_SIZE
667 typedef NOTIFYICONDATAA NOTIFYICONDATA
,*PNOTIFYICONDATA
;
668 typedef DRAGINFOA DRAGINFO
,*LPDRAGINFO
;
669 typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO
,*LPSHELLEXECUTEINFO
;
670 typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT
,*LPSHFILEOPSTRUCT
;
671 typedef SHFILEINFOA SHFILEINFO
;
672 typedef SHNAMEMAPPINGA SHNAMEMAPPING
;
673 typedef LPSHNAMEMAPPINGA LPSHNAMEMAPPING
;
674 #define DragQueryFile DragQueryFileA
675 #define ExtractAssociatedIcon ExtractAssociatedIconA
676 #define ExtractIcon ExtractIconA
677 #define ExtractIconEx ExtractIconExA
678 #define FindExecutable FindExecutableA
679 #define Shell_NotifyIcon Shell_NotifyIconA
680 #define ShellAbout ShellAboutA
681 #define ShellExecute ShellExecuteA
682 #define ShellExecuteEx ShellExecuteExA
683 #define ShellMessageBox ShellMessageBoxA
684 #define SHFileOperation SHFileOperationA
685 #define SHGetFileInfo SHGetFileInfoA
686 #define SHQueryRecycleBin SHQueryRecycleBinA
687 #define SHEmptyRecycleBin SHEmptyRecycleBinA
688 #define SHGetNewLinkInfo SHGetNewLinkInfoA
689 #define DoEnvironmentSubst DoEnvironmentSubstA
692 #if (NTDDI_VERSION >= NTDDI_VISTA)
694 typedef struct _SHSTOCKICONINFO
{
699 WCHAR szPath
[MAX_PATH
];
702 #define SHGSI_ICONLOCATION 0
704 typedef enum SHSTOCKICONID
717 SIID_DRIVERNETDISABLE
,
725 /* Missing: 18 - 21 */
728 /* Missing: 24 - 27 */
734 /* Missing: 33 - 39 */
735 SIID_MEDIACDAUDIO
= 40,
736 /* Missing: 41 - 46 */
755 SIID_MEDIACDAUDIOPLUS
,
777 SIID_MEDIAENHANCEDCD
,
778 SIID_MEDIAENHANCEDDVD
,
787 SIID_MEDIASMARTMEDIA
,
788 SIID_MEDIACOMPACTFLASH
,
789 SIID_DEVICECELLPHONE
,
791 SIID_DEVICEVIDEOCAMERA
,
792 SIID_DEVICEAUDIOPLAYER
,
797 /* Missing: 107 - 131 */
798 SIID_DRIVEHDDVD
= 132,
807 /* Missing: 141 - 174 */
811 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */