9 #pragma warning(disable:4201)
16 #define WINSHELLAPI DECLSPEC_IMPORT
21 #define ABS_AUTOHIDE 1
22 #define ABS_ALWAYSONTOP 2
23 #define SEE_MASK_CLASSNAME 1
24 #define SEE_MASK_CLASSKEY 3
25 #define SEE_MASK_IDLIST 4
26 #define SEE_MASK_INVOKEIDLIST 12
27 #define SEE_MASK_ICON 0x10
28 #define SEE_MASK_HOTKEY 0x20
29 #define SEE_MASK_NOCLOSEPROCESS 0x40
30 #define SEE_MASK_CONNECTNETDRV 0x80
31 #define SEE_MASK_NOASYNC 0x00000100
32 #define SEE_MASK_FLAG_DDEWAIT SEE_MASK_NOASYNC
33 #define SEE_MASK_DOENVSUBST 0x200
34 #define SEE_MASK_FLAG_NO_UI 0x400
35 #define SEE_MASK_NO_CONSOLE 0x8000
36 #define SEE_MASK_UNICODE 0x10000
37 #define SEE_MASK_ASYNCOK 0x100000
38 #define SEE_MASK_HMONITOR 0x200000
39 #define SEE_MASK_NOZONECHECKS 0x00800000
42 #define ABM_QUERYPOS 2
44 #define ABM_GETSTATE 4
45 #define ABM_GETTASKBARPOS 5
46 #define ABM_ACTIVATE 6
47 #define ABM_GETAUTOHIDEBAR 7
48 #define ABM_SETAUTOHIDEBAR 8
49 #define ABM_WINDOWPOSCHANGED 9
50 #define ABN_STATECHANGE 0
51 #define ABN_POSCHANGED 1
52 #define ABN_FULLSCREENAPP 2
53 #define ABN_WINDOWARRANGE 3
57 #if _WIN32_IE >= 0x0500
58 #define NOTIFYICON_VERSION 3
59 #define NIM_SETFOCUS 3
60 #define NIM_SETVERSION 4
66 #if _WIN32_IE >= 0x0500
69 #define NIS_SHAREDICON 2
72 #define NIIF_WARNING 2
74 #if _WIN32_IE >= 0x0600
75 #define NIIF_ICON_MASK 0xf
76 #define NIIF_NOSOUND 0x10
77 #endif /* _WIN32_IE >= 0x0600 */
78 #endif /* _WIN32_IE >= 0x0500 */
81 #define SE_ERR_ACCESSDENIED 5
83 #define SE_ERR_DLLNOTFOUND 32
84 #define SE_ERR_SHARE 26
85 #define SE_ERR_ASSOCINCOMPLETE 27
86 #define SE_ERR_DDETIMEOUT 28
87 #define SE_ERR_DDEFAIL 29
88 #define SE_ERR_DDEBUSY 30
89 #define SE_ERR_NOASSOC 31
95 #define FOF_MULTIDESTFILES 0x0001
96 #define FOF_CONFIRMMOUSE 0x0002
97 #define FOF_SILENT 0x0004
98 #define FOF_RENAMEONCOLLISION 0x0008
99 #define FOF_NOCONFIRMATION 0x0010
100 #define FOF_WANTMAPPINGHANDLE 0x0020
101 #define FOF_ALLOWUNDO 0x0040
102 #define FOF_FILESONLY 0x0080
103 #define FOF_SIMPLEPROGRESS 0x0100
104 #define FOF_NOCONFIRMMKDIR 0x0200
105 #define FOF_NOERRORUI 0x0400
106 #define FOF_NOCOPYSECURITYATTRIBS 0x0800
107 #define FOF_NORECURSION 0x1000 /* don't do recursion into directories */
108 #define FOF_NO_CONNECTED_ELEMENTS 0x2000 /* don't do connected files */
109 #define FOF_WANTNUKEWARNING 0x4000 /* during delete operation, warn if delete instead
110 of recycling (even if FOF_NOCONFIRMATION) */
111 #define FOF_NORECURSEREPARSE 0x8000 /* don't do recursion into reparse points */
115 #define PO_PORTCHANGE 32
116 #define PO_REN_PORT 52
117 #define SHGFI_ADDOVERLAYS 32
118 #define SHGFI_OVERLAYINDEX 64
119 #define SHGFI_ICON 256
120 #define SHGFI_DISPLAYNAME 512
121 #define SHGFI_TYPENAME 1024
122 #define SHGFI_ATTRIBUTES 2048
123 #define SHGFI_ICONLOCATION 4096
124 #define SHGFI_EXETYPE 8192
125 #define SHGFI_SYSICONINDEX 16384
126 #define SHGFI_LINKOVERLAY 32768
127 #define SHGFI_SELECTED 65536
128 #define SHGFI_ATTR_SPECIFIED 131072
129 #define SHGFI_LARGEICON 0
130 #define SHGFI_SMALLICON 1
131 #define SHGFI_OPENICON 2
132 #define SHGFI_SHELLICONSIZE 4
134 #define SHGFI_USEFILEATTRIBUTES 16
136 #if (NTDDI_VERSION >= NTDDI_WINXP)
137 #define SHIL_LARGE 0x0
138 #define SHIL_SMALL 0x1
139 #define SHIL_EXTRALARGE 0x2
140 #define SHIL_SYSSMALL 0x3
141 #if (NTDDI_VERSION >= NTDDI_VISTA)
142 #define SHIL_JUMBO 0x4
143 #define SHIL_LAST SHIL_JUMBO
145 #define SHIL_LAST SHIL_SYSSMALL
149 typedef struct _SHCREATEPROCESSINFOW
155 LPCWSTR pszParameters
;
156 LPCWSTR pszCurrentDirectory
;
157 IN HANDLE hUserToken
;
158 IN LPSECURITY_ATTRIBUTES lpProcessAttributes
;
159 IN LPSECURITY_ATTRIBUTES lpThreadAttributes
;
160 IN BOOL bInheritHandles
;
161 IN DWORD dwCreationFlags
;
162 IN LPSTARTUPINFOW lpStartupInfo
;
163 OUT LPPROCESS_INFORMATION lpProcessInformation
;
164 } SHCREATEPROCESSINFOW
, *PSHCREATEPROCESSINFOW
;
166 typedef WORD FILEOP_FLAGS
;
167 typedef WORD PRINTEROP_FLAGS
;
169 typedef struct _AppBarData
{
172 UINT uCallbackMessage
;
176 } APPBARDATA
,*PAPPBARDATA
;
177 DECLARE_HANDLE(HDROP
);
179 typedef struct _NOTIFYICONDATAA
{
184 UINT uCallbackMessage
;
186 #if _WIN32_IE >= 0x0500
191 _ANONYMOUS_UNION
union {
195 CHAR szInfoTitle
[64];
200 #if _WIN32_IE >= 0x600
203 } NOTIFYICONDATAA
,*PNOTIFYICONDATAA
;
205 typedef struct _NOTIFYICONDATAW
{
210 UINT uCallbackMessage
;
212 #if _WIN32_IE >= 0x0500
217 _ANONYMOUS_UNION
union {
221 WCHAR szInfoTitle
[64];
226 #if _WIN32_IE >= 0x600
229 } NOTIFYICONDATAW
,*PNOTIFYICONDATAW
;
231 #define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAA, szTip[64])
232 #define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAW, szTip[64])
233 #define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAA, guidItem)
234 #define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAW, guidItem)
237 typedef struct _DRAGINFOA
{
243 } DRAGINFOA
,*LPDRAGINFOA
;
244 typedef struct _DRAGINFOW
{
250 } DRAGINFOW
,*LPDRAGINFOW
;
253 typedef struct _SHELLEXECUTEINFOA
{
269 } SHELLEXECUTEINFOA
,*LPSHELLEXECUTEINFOA
;
270 typedef struct _SHELLEXECUTEINFOW
{
276 LPCWSTR lpParameters
;
286 } SHELLEXECUTEINFOW
,*LPSHELLEXECUTEINFOW
;
287 typedef struct _SHFILEOPSTRUCTA
{
293 BOOL fAnyOperationsAborted
;
295 LPCSTR lpszProgressTitle
;
296 } SHFILEOPSTRUCTA
,*LPSHFILEOPSTRUCTA
;
297 typedef struct _SHFILEOPSTRUCTW
{
303 BOOL fAnyOperationsAborted
;
305 LPCWSTR lpszProgressTitle
;
306 } SHFILEOPSTRUCTW
,*LPSHFILEOPSTRUCTW
;
307 typedef struct _SHFILEINFOA
{
311 CHAR szDisplayName
[MAX_PATH
];
314 typedef struct _SHFILEINFOW
{
318 WCHAR szDisplayName
[MAX_PATH
];
319 WCHAR szTypeName
[80];
321 typedef struct _SHQUERYRBINFO
{
325 } SHQUERYRBINFO
, *LPSHQUERYRBINFO
;
326 typedef struct _SHNAMEMAPPINGA
{
331 } SHNAMEMAPPINGA
, *LPSHNAMEMAPPINGA
;
332 typedef struct _SHNAMEMAPPINGW
{
337 } SHNAMEMAPPINGW
, *LPSHNAMEMAPPINGW
;
339 #define SHERB_NOCONFIRMATION 0x1
340 #define SHERB_NOPROGRESSUI 0x2
341 #define SHERB_NOSOUND 0x4
343 /******************************************
347 #define SHGNLI_PIDL 0x01
348 #define SHGNLI_PREFIXNAME 0x02
349 #define SHGNLI_NOUNIQUE 0x04
350 #define SHGNLI_NOLNK 0x08
352 BOOL WINAPI
SHGetNewLinkInfoA(LPCSTR
,LPCSTR
,LPSTR
,BOOL
*,UINT
);
353 BOOL WINAPI
SHGetNewLinkInfoW(LPCWSTR
,LPCWSTR
,LPWSTR
,BOOL
*,UINT
);
355 LPWSTR
* WINAPI
CommandLineToArgvW(LPCWSTR
,int*);
356 void WINAPI
DragAcceptFiles(HWND
,BOOL
);
357 void WINAPI
DragFinish(HDROP
);
358 UINT WINAPI
DragQueryFileA(HDROP
,UINT
,LPSTR
,UINT
);
359 UINT WINAPI
DragQueryFileW(HDROP
,UINT
,LPWSTR
,UINT
);
360 BOOL WINAPI
DragQueryPoint(HDROP
,LPPOINT
);
361 HICON WINAPI
ExtractAssociatedIconA(HINSTANCE
,LPSTR
,PWORD
);
362 HICON WINAPI
ExtractAssociatedIconW(HINSTANCE
,LPWSTR
,PWORD
);
363 HICON WINAPI
ExtractIconA(HINSTANCE
,LPCSTR
,UINT
);
364 HICON WINAPI
ExtractIconW(HINSTANCE
,LPCWSTR
,UINT
);
365 UINT WINAPI
ExtractIconExA(LPCSTR
,int,HICON
*,HICON
*,UINT
);
366 UINT WINAPI
ExtractIconExW(LPCWSTR
,int,HICON
*,HICON
*,UINT
);
367 HINSTANCE WINAPI
FindExecutableA(LPCSTR
,LPCSTR
,LPSTR
);
368 HINSTANCE WINAPI
FindExecutableW(LPCWSTR
,LPCWSTR
,LPWSTR
);
369 UINT_PTR WINAPI
SHAppBarMessage(DWORD
,PAPPBARDATA
);
370 BOOL WINAPI
Shell_NotifyIconA(DWORD
,PNOTIFYICONDATAA
);
371 BOOL WINAPI
Shell_NotifyIconW(DWORD
,PNOTIFYICONDATAW
);
372 int WINAPI
ShellAboutA(HWND
,LPCSTR
,LPCSTR
,HICON
);
373 int WINAPI
ShellAboutW(HWND
,LPCWSTR
,LPCWSTR
,HICON
);
374 int WINAPI
ShellMessageBoxA(HINSTANCE
,HWND
,LPCSTR
,LPCSTR
,UINT
,...);
375 int WINAPI
ShellMessageBoxW(HINSTANCE
,HWND
,LPCWSTR
,LPCWSTR
,UINT
,...);
376 HINSTANCE WINAPI
ShellExecuteA(HWND
,LPCSTR
,LPCSTR
,LPCSTR
,LPCSTR
,INT
);
377 HINSTANCE WINAPI
ShellExecuteW(HWND
,LPCWSTR
,LPCWSTR
,LPCWSTR
,LPCWSTR
,INT
);
378 BOOL WINAPI
ShellExecuteExA(LPSHELLEXECUTEINFOA
);
379 BOOL WINAPI
ShellExecuteExW(LPSHELLEXECUTEINFOW
);
380 int WINAPI
SHFileOperationA(LPSHFILEOPSTRUCTA
);
381 int WINAPI
SHFileOperationW(LPSHFILEOPSTRUCTW
);
382 void WINAPI
SHFreeNameMappings(HANDLE
);
383 DWORD_PTR WINAPI
SHGetFileInfoA(LPCSTR
,DWORD
,SHFILEINFOA
*,UINT
,UINT
);
384 DWORD_PTR WINAPI
SHGetFileInfoW(LPCWSTR
,DWORD
,SHFILEINFOW
*,UINT
,UINT
);
385 BOOL WINAPI
SHGetNewLinkInfoA(LPCSTR
,LPCSTR
,LPSTR
,BOOL
*,UINT
);
386 BOOL WINAPI
SHGetNewLinkInfoW(LPCWSTR
,LPCWSTR
,LPWSTR
,BOOL
*,UINT
);
387 HRESULT WINAPI
SHQueryRecycleBinA(LPCSTR
, LPSHQUERYRBINFO
);
388 HRESULT WINAPI
SHQueryRecycleBinW(LPCWSTR
, LPSHQUERYRBINFO
);
389 HRESULT WINAPI
SHEmptyRecycleBinA(HWND
,LPCSTR
,DWORD
);
390 HRESULT WINAPI
SHEmptyRecycleBinW(HWND
,LPCWSTR
,DWORD
);
391 BOOL WINAPI
SHCreateProcessAsUserW(PSHCREATEPROCESSINFOW
);
394 #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAW_V1_SIZE
395 #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAW_V2_SIZE
396 typedef NOTIFYICONDATAW NOTIFYICONDATA
,*PNOTIFYICONDATA
;
397 typedef DRAGINFOW DRAGINFO
,*LPDRAGINFO
;
398 typedef SHELLEXECUTEINFOW SHELLEXECUTEINFO
,*LPSHELLEXECUTEINFO
;
399 typedef SHFILEOPSTRUCTW SHFILEOPSTRUCT
,*LPSHFILEOPSTRUCT
;
400 typedef SHFILEINFOW SHFILEINFO
;
401 typedef SHNAMEMAPPINGW SHNAMEMAPPING
;
402 typedef LPSHNAMEMAPPINGW LPSHNAMEMAPPING
;
403 #define DragQueryFile DragQueryFileW
404 #define ExtractAssociatedIcon ExtractAssociatedIconW
405 #define ExtractIcon ExtractIconW
406 #define ExtractIconEx ExtractIconExW
407 #define FindExecutable FindExecutableW
408 #define Shell_NotifyIcon Shell_NotifyIconW
409 #define ShellAbout ShellAboutW
410 #define ShellExecute ShellExecuteW
411 #define ShellExecuteEx ShellExecuteExW
412 #define ShellMessageBox ShellMessageBoxW
413 #define SHFileOperation SHFileOperationW
414 #define SHGetFileInfo SHGetFileInfoW
415 #define SHGetNewLinkInfo SHGetNewLinkInfoW
416 #define SHQueryRecycleBin SHQueryRecycleBinW
417 #define SHEmptyRecycleBin SHEmptyRecycleBinW
418 #define SHGetNewLinkInfo SHGetNewLinkInfoW
421 #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAA_V1_SIZE
422 #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAA_V2_SIZE
423 typedef NOTIFYICONDATAA NOTIFYICONDATA
,*PNOTIFYICONDATA
;
424 typedef DRAGINFOA DRAGINFO
,*LPDRAGINFO
;
425 typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO
,*LPSHELLEXECUTEINFO
;
426 typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT
,*LPSHFILEOPSTRUCT
;
427 typedef SHFILEINFOA SHFILEINFO
;
428 typedef SHNAMEMAPPINGA SHNAMEMAPPING
;
429 typedef LPSHNAMEMAPPINGA LPSHNAMEMAPPING
;
430 #define DragQueryFile DragQueryFileA
431 #define ExtractAssociatedIcon ExtractAssociatedIconA
432 #define ExtractIcon ExtractIconA
433 #define ExtractIconEx ExtractIconExA
434 #define FindExecutable FindExecutableA
435 #define Shell_NotifyIcon Shell_NotifyIconA
436 #define ShellAbout ShellAboutA
437 #define ShellExecute ShellExecuteA
438 #define ShellExecuteEx ShellExecuteExA
439 #define ShellMessageBox ShellMessageBoxA
440 #define SHFileOperation SHFileOperationA
441 #define SHGetFileInfo SHGetFileInfoA
442 #define SHGetNewLinkInfo SHGetNewLinkInfoA
443 #define SHQueryRecycleBin SHQueryRecycleBinA
444 #define SHEmptyRecycleBin SHEmptyRecycleBinA
445 #define SHGetNewLinkInfo SHGetNewLinkInfoA