00001
00002
00003
00004
00005
00006
00007 #ifndef _INC_SHELLAPI
00008 #define _INC_SHELLAPI
00009
00010 #ifndef WINSHELLAPI
00011 #if !defined(_SHELL32_)
00012 #define WINSHELLAPI DECLSPEC_IMPORT
00013 #else
00014 #define WINSHELLAPI
00015 #endif
00016 #endif
00017
00018 #ifndef SHSTDAPI
00019 #if !defined(_SHELL32_)
00020 #define SHSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
00021 #define SHSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
00022 #else
00023 #define SHSTDAPI STDAPI
00024 #define SHSTDAPI_(type) STDAPI_(type)
00025 #endif
00026 #endif
00027
00028 #ifndef SHDOCAPI
00029 #if !defined(_SHDOCVW_)
00030 #define SHDOCAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
00031 #define SHDOCAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
00032 #else
00033 #define SHDOCAPI STDAPI
00034 #define SHDOCAPI_(type) STDAPI_(type)
00035 #endif
00036 #endif
00037
00038 #if !defined(_WIN64)
00039 #include <pshpack1.h>
00040 #endif
00041
00042 #ifdef __cplusplus
00043 extern "C" {
00044 #endif
00045
00046 DECLARE_HANDLE(HDROP);
00047
00048 SHSTDAPI_(UINT) DragQueryFileA(HDROP,UINT,LPSTR,UINT);
00049 SHSTDAPI_(UINT) DragQueryFileW(HDROP,UINT,LPWSTR,UINT);
00050 #ifdef UNICODE
00051 #define DragQueryFile DragQueryFileW
00052 #else
00053 #define DragQueryFile DragQueryFileA
00054 #endif
00055 SHSTDAPI_(BOOL) DragQueryPoint(HDROP,LPPOINT);
00056 SHSTDAPI_(void) DragFinish(HDROP);
00057 SHSTDAPI_(void) DragAcceptFiles(HWND,BOOL);
00058
00059 SHSTDAPI_(HINSTANCE) ShellExecuteA(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd);
00060 SHSTDAPI_(HINSTANCE) ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd);
00061 #ifdef UNICODE
00062 #define ShellExecute ShellExecuteW
00063 #else
00064 #define ShellExecute ShellExecuteA
00065 #endif
00066 SHSTDAPI_(HINSTANCE) FindExecutableA(LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult);
00067 SHSTDAPI_(HINSTANCE) FindExecutableW(LPCWSTR lpFile, LPCWSTR lpDirectory, LPWSTR lpResult);
00068 #ifdef UNICODE
00069 #define FindExecutable FindExecutableW
00070 #else
00071 #define FindExecutable FindExecutableA
00072 #endif
00073 SHSTDAPI_(LPWSTR *) CommandLineToArgvW(LPCWSTR lpCmdLine, int*pNumArgs);
00074
00075 SHSTDAPI_(INT) ShellAboutA(HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON hIcon);
00076 SHSTDAPI_(INT) ShellAboutW(HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON hIcon);
00077 #ifdef UNICODE
00078 #define ShellAbout ShellAboutW
00079 #else
00080 #define ShellAbout ShellAboutA
00081 #endif
00082 SHSTDAPI_(HICON) DuplicateIcon(HINSTANCE hInst, HICON hIcon);
00083 SHSTDAPI_(HICON) ExtractAssociatedIconA(HINSTANCE hInst, LPSTR lpIconPath, LPWORD lpiIcon);
00084 SHSTDAPI_(HICON) ExtractAssociatedIconW(HINSTANCE hInst, LPWSTR lpIconPath, LPWORD lpiIcon);
00085 #ifdef UNICODE
00086 #define ExtractAssociatedIcon ExtractAssociatedIconW
00087 #else
00088 #define ExtractAssociatedIcon ExtractAssociatedIconA
00089 #endif
00090 SHSTDAPI_(HICON) ExtractIconA(HINSTANCE hInst, LPCSTR lpszExeFileName, UINT nIconIndex);
00091 SHSTDAPI_(HICON) ExtractIconW(HINSTANCE hInst, LPCWSTR lpszExeFileName, UINT nIconIndex);
00092 #ifdef UNICODE
00093 #define ExtractIcon ExtractIconW
00094 #else
00095 #define ExtractIcon ExtractIconA
00096 #endif
00097
00098 #if(WINVER >= 0x0400)
00099 typedef struct _DRAGINFOA {
00100 UINT uSize;
00101 POINT pt;
00102 BOOL fNC;
00103 LPSTR lpFileList;
00104 DWORD grfKeyState;
00105 } DRAGINFOA, *LPDRAGINFOA;
00106 typedef struct _DRAGINFOW {
00107 UINT uSize;
00108 POINT pt;
00109 BOOL fNC;
00110 LPWSTR lpFileList;
00111 DWORD grfKeyState;
00112 } DRAGINFOW, *LPDRAGINFOW;
00113 #ifdef UNICODE
00114 typedef DRAGINFOW DRAGINFO;
00115 typedef LPDRAGINFOW LPDRAGINFO;
00116 #else
00117 typedef DRAGINFOA DRAGINFO;
00118 typedef LPDRAGINFOA LPDRAGINFO;
00119 #endif
00120
00121 #define ABM_NEW 0x00000000
00122 #define ABM_REMOVE 0x00000001
00123 #define ABM_QUERYPOS 0x00000002
00124 #define ABM_SETPOS 0x00000003
00125 #define ABM_GETSTATE 0x00000004
00126 #define ABM_GETTASKBARPOS 0x00000005
00127 #define ABM_ACTIVATE 0x00000006
00128 #define ABM_GETAUTOHIDEBAR 0x00000007
00129 #define ABM_SETAUTOHIDEBAR 0x00000008
00130
00131
00132 #define ABM_WINDOWPOSCHANGED 0x0000009
00133 #define ABM_SETSTATE 0x0000000a
00134
00135 #define ABN_STATECHANGE 0x0000000
00136 #define ABN_POSCHANGED 0x0000001
00137 #define ABN_FULLSCREENAPP 0x0000002
00138 #define ABN_WINDOWARRANGE 0x0000003
00139
00140 #define ABS_AUTOHIDE 0x0000001
00141 #define ABS_ALWAYSONTOP 0x0000002
00142
00143 #define ABE_LEFT 0
00144 #define ABE_TOP 1
00145 #define ABE_RIGHT 2
00146 #define ABE_BOTTOM 3
00147
00148 typedef struct _AppBarData
00149 {
00150 DWORD cbSize;
00151 HWND hWnd;
00152 UINT uCallbackMessage;
00153 UINT uEdge;
00154 RECT rc;
00155 LPARAM lParam;
00156 } APPBARDATA, *PAPPBARDATA;
00157
00158 SHSTDAPI_(UINT_PTR) SHAppBarMessage(DWORD dwMessage, PAPPBARDATA pData);
00159
00160 SHSTDAPI_(DWORD) DoEnvironmentSubstA(LPSTR szString, UINT cchString);
00161 SHSTDAPI_(DWORD) DoEnvironmentSubstW(LPWSTR szString, UINT cchString);
00162 #ifdef UNICODE
00163 #define DoEnvironmentSubst DoEnvironmentSubstW
00164 #else
00165 #define DoEnvironmentSubst DoEnvironmentSubstA
00166 #endif
00167
00168 #define EIRESID(x) (-1 * (int)(x))
00169 SHSTDAPI_(UINT) ExtractIconExA(LPCSTR lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons);
00170 SHSTDAPI_(UINT) ExtractIconExW(LPCWSTR lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons);
00171 #ifdef UNICODE
00172 #define ExtractIconEx ExtractIconExW
00173 #else
00174 #define ExtractIconEx ExtractIconExA
00175 #endif
00176
00177 #ifndef FO_MOVE
00178
00179 #define FO_MOVE 0x0001
00180 #define FO_COPY 0x0002
00181 #define FO_DELETE 0x0003
00182 #define FO_RENAME 0x0004
00183
00184 #define FOF_MULTIDESTFILES 0x0001
00185 #define FOF_CONFIRMMOUSE 0x0002
00186 #define FOF_SILENT 0x0004
00187 #define FOF_RENAMEONCOLLISION 0x0008
00188 #define FOF_NOCONFIRMATION 0x0010
00189 #define FOF_WANTMAPPINGHANDLE 0x0020
00190
00191 #define FOF_ALLOWUNDO 0x0040
00192 #define FOF_FILESONLY 0x0080
00193 #define FOF_SIMPLEPROGRESS 0x0100
00194 #define FOF_NOCONFIRMMKDIR 0x0200
00195 #define FOF_NOERRORUI 0x0400
00196 #define FOF_NOCOPYSECURITYATTRIBS 0x0800
00197 #define FOF_NORECURSION 0x1000
00198 #if (_WIN32_IE >= 0x0500)
00199 #define FOF_NO_CONNECTED_ELEMENTS 0x2000
00200 #define FOF_WANTNUKEWARNING 0x4000
00201 #endif
00202 #if (_WIN32_WINNT >= 0x0501)
00203 #define FOF_NORECURSEREPARSE 0x8000
00204 #endif
00205
00206 typedef WORD FILEOP_FLAGS;
00207
00208 #define PO_DELETE 0x0013
00209 #define PO_RENAME 0x0014
00210 #define PO_PORTCHANGE 0x0020
00211
00212
00213
00214
00215 #define PO_REN_PORT 0x0034
00216
00217 typedef WORD PRINTEROP_FLAGS;
00218
00219 #endif
00220
00221 typedef struct _SHFILEOPSTRUCTA
00222 {
00223 HWND hwnd;
00224 UINT wFunc;
00225 LPCSTR pFrom;
00226 LPCSTR pTo;
00227 FILEOP_FLAGS fFlags;
00228 BOOL fAnyOperationsAborted;
00229 LPVOID hNameMappings;
00230 LPCSTR lpszProgressTitle;
00231 } SHFILEOPSTRUCTA, *LPSHFILEOPSTRUCTA;
00232 typedef struct _SHFILEOPSTRUCTW
00233 {
00234 HWND hwnd;
00235 UINT wFunc;
00236 LPCWSTR pFrom;
00237 LPCWSTR pTo;
00238 FILEOP_FLAGS fFlags;
00239 BOOL fAnyOperationsAborted;
00240 LPVOID hNameMappings;
00241 LPCWSTR lpszProgressTitle;
00242 } SHFILEOPSTRUCTW, *LPSHFILEOPSTRUCTW;
00243 #ifdef UNICODE
00244 typedef SHFILEOPSTRUCTW SHFILEOPSTRUCT;
00245 typedef LPSHFILEOPSTRUCTW LPSHFILEOPSTRUCT;
00246 #else
00247 typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT;
00248 typedef LPSHFILEOPSTRUCTA LPSHFILEOPSTRUCT;
00249 #endif
00250
00251 SHSTDAPI_(int) SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp);
00252 SHSTDAPI_(int) SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp);
00253 #ifdef UNICODE
00254 #define SHFileOperation SHFileOperationW
00255 #else
00256 #define SHFileOperation SHFileOperationA
00257 #endif
00258 SHSTDAPI_(void) SHFreeNameMappings(HANDLE hNameMappings);
00259
00260 typedef struct _SHNAMEMAPPINGA
00261 {
00262 LPSTR pszOldPath;
00263 LPSTR pszNewPath;
00264 int cchOldPath;
00265 int cchNewPath;
00266 } SHNAMEMAPPINGA, *LPSHNAMEMAPPINGA;
00267 typedef struct _SHNAMEMAPPINGW
00268 {
00269 LPWSTR pszOldPath;
00270 LPWSTR pszNewPath;
00271 int cchOldPath;
00272 int cchNewPath;
00273 } SHNAMEMAPPINGW, *LPSHNAMEMAPPINGW;
00274 #ifdef UNICODE
00275 typedef SHNAMEMAPPINGW SHNAMEMAPPING;
00276 typedef LPSHNAMEMAPPINGW LPSHNAMEMAPPING;
00277 #else
00278 typedef SHNAMEMAPPINGA SHNAMEMAPPING;
00279 typedef LPSHNAMEMAPPINGA LPSHNAMEMAPPING;
00280 #endif
00281
00282 #define SE_ERR_FNF 2
00283 #define SE_ERR_PNF 3
00284 #define SE_ERR_ACCESSDENIED 5
00285 #define SE_ERR_OOM 8
00286 #define SE_ERR_DLLNOTFOUND 32
00287
00288 #endif
00289
00290 #define SE_ERR_SHARE 26
00291 #define SE_ERR_ASSOCINCOMPLETE 27
00292 #define SE_ERR_DDETIMEOUT 28
00293 #define SE_ERR_DDEFAIL 29
00294 #define SE_ERR_DDEBUSY 30
00295 #define SE_ERR_NOASSOC 31
00296
00297 #if(WINVER >= 0x0400)
00298
00299 #define SEE_MASK_CLASSNAME 0x00000001
00300 #define SEE_MASK_CLASSKEY 0x00000003
00301
00302 #define SEE_MASK_IDLIST 0x00000004
00303 #define SEE_MASK_INVOKEIDLIST 0x0000000c
00304 #define SEE_MASK_ICON 0x00000010
00305 #define SEE_MASK_HOTKEY 0x00000020
00306 #define SEE_MASK_NOCLOSEPROCESS 0x00000040
00307 #define SEE_MASK_CONNECTNETDRV 0x00000080
00308 #define SEE_MASK_FLAG_DDEWAIT 0x00000100
00309 #define SEE_MASK_DOENVSUBST 0x00000200
00310 #define SEE_MASK_FLAG_NO_UI 0x00000400
00311 #define SEE_MASK_UNICODE 0x00004000
00312 #define SEE_MASK_NO_CONSOLE 0x00008000
00313 #define SEE_MASK_ASYNCOK 0x00100000
00314 #define SEE_MASK_HMONITOR 0x00200000
00315 #if (_WIN32_IE >= 0x0500)
00316 #define SEE_MASK_NOQUERYCLASSSTORE 0x01000000
00317 #define SEE_MASK_WAITFORINPUTIDLE 0x02000000
00318 #endif
00319 #if (_WIN32_IE >= 0x0560)
00320 #define SEE_MASK_FLAG_LOG_USAGE 0x04000000
00321 #endif
00322
00323 #ifndef DUMMYUNIONNAME
00324 #ifdef NONAMELESSUNION
00325 #define DUMMYUNIONNAME u
00326 #define DUMMYUNIONNAME2 u2
00327 #define DUMMYUNIONNAME3 u3
00328 #define DUMMYUNIONNAME4 u4
00329 #define DUMMYUNIONNAME5 u5
00330 #else
00331 #define DUMMYUNIONNAME
00332 #define DUMMYUNIONNAME2
00333 #define DUMMYUNIONNAME3
00334 #define DUMMYUNIONNAME4
00335 #define DUMMYUNIONNAME5
00336 #endif
00337 #endif
00338
00339 typedef struct _SHELLEXECUTEINFOA
00340 {
00341 DWORD cbSize;
00342 ULONG fMask;
00343 HWND hwnd;
00344 LPCSTR lpVerb;
00345 LPCSTR lpFile;
00346 LPCSTR lpParameters;
00347 LPCSTR lpDirectory;
00348 int nShow;
00349 HINSTANCE hInstApp;
00350
00351 LPVOID lpIDList;
00352 LPCSTR lpClass;
00353 HKEY hkeyClass;
00354 DWORD dwHotKey;
00355 union {
00356 HANDLE hIcon;
00357 HANDLE hMonitor;
00358 } DUMMYUNIONNAME;
00359 HANDLE hProcess;
00360 } SHELLEXECUTEINFOA, *LPSHELLEXECUTEINFOA;
00361 typedef struct _SHELLEXECUTEINFOW
00362 {
00363 DWORD cbSize;
00364 ULONG fMask;
00365 HWND hwnd;
00366 LPCWSTR lpVerb;
00367 LPCWSTR lpFile;
00368 LPCWSTR lpParameters;
00369 LPCWSTR lpDirectory;
00370 int nShow;
00371 HINSTANCE hInstApp;
00372
00373 LPVOID lpIDList;
00374 LPCWSTR lpClass;
00375 HKEY hkeyClass;
00376 DWORD dwHotKey;
00377 union {
00378 HANDLE hIcon;
00379 HANDLE hMonitor;
00380 } DUMMYUNIONNAME;
00381 HANDLE hProcess;
00382 } SHELLEXECUTEINFOW, *LPSHELLEXECUTEINFOW;
00383 #ifdef UNICODE
00384 typedef SHELLEXECUTEINFOW SHELLEXECUTEINFO;
00385 typedef LPSHELLEXECUTEINFOW LPSHELLEXECUTEINFO;
00386 #else
00387 typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO;
00388 typedef LPSHELLEXECUTEINFOA LPSHELLEXECUTEINFO;
00389 #endif
00390
00391 SHSTDAPI_(BOOL) ShellExecuteExA(LPSHELLEXECUTEINFOA lpExecInfo);
00392 SHSTDAPI_(BOOL) ShellExecuteExW(LPSHELLEXECUTEINFOW lpExecInfo);
00393 #ifdef UNICODE
00394 #define ShellExecuteEx ShellExecuteExW
00395 #else
00396 #define ShellExecuteEx ShellExecuteExA
00397 #endif
00398 SHSTDAPI_(void) WinExecErrorA(HWND hwnd, int error, LPCSTR lpstrFileName, LPCSTR lpstrTitle);
00399 SHSTDAPI_(void) WinExecErrorW(HWND hwnd, int error, LPCWSTR lpstrFileName, LPCWSTR lpstrTitle);
00400 #ifdef UNICODE
00401 #define WinExecError WinExecErrorW
00402 #else
00403 #define WinExecError WinExecErrorA
00404 #endif
00405
00406 typedef struct _SHCREATEPROCESSINFOW
00407 {
00408 DWORD cbSize;
00409 ULONG fMask;
00410 HWND hwnd;
00411 LPCWSTR pszFile;
00412 LPCWSTR pszParameters;
00413 LPCWSTR pszCurrentDirectory;
00414 IN HANDLE hUserToken;
00415 IN LPSECURITY_ATTRIBUTES lpProcessAttributes;
00416 IN LPSECURITY_ATTRIBUTES lpThreadAttributes;
00417 IN BOOL bInheritHandles;
00418 IN DWORD dwCreationFlags;
00419 IN LPSTARTUPINFOW lpStartupInfo;
00420 OUT LPPROCESS_INFORMATION lpProcessInformation;
00421 } SHCREATEPROCESSINFOW, *PSHCREATEPROCESSINFOW;
00422
00423 SHSTDAPI_(BOOL) SHCreateProcessAsUserW(PSHCREATEPROCESSINFOW pscpi);
00424
00425 typedef struct _SHQUERYRBINFO {
00426 DWORD cbSize;
00427 #if !defined(_MAC) || defined(_MAC_INT_64)
00428 __int64 i64Size;
00429 __int64 i64NumItems;
00430 #else
00431 DWORDLONG i64Size;
00432 DWORDLONG i64NumItems;
00433 #endif
00434 } SHQUERYRBINFO, *LPSHQUERYRBINFO;
00435
00436 #define SHERB_NOCONFIRMATION 0x00000001
00437 #define SHERB_NOPROGRESSUI 0x00000002
00438 #define SHERB_NOSOUND 0x00000004
00439
00440 SHSTDAPI SHQueryRecycleBinA(LPCSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo);
00441 SHSTDAPI SHQueryRecycleBinW(LPCWSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo);
00442 #ifdef UNICODE
00443 #define SHQueryRecycleBin SHQueryRecycleBinW
00444 #else
00445 #define SHQueryRecycleBin SHQueryRecycleBinA
00446 #endif
00447 SHSTDAPI SHEmptyRecycleBinA(HWND hwnd, LPCSTR pszRootPath, DWORD dwFlags);
00448 SHSTDAPI SHEmptyRecycleBinW(HWND hwnd, LPCWSTR pszRootPath, DWORD dwFlags);
00449 #ifdef UNICODE
00450 #define SHEmptyRecycleBin SHEmptyRecycleBinW
00451 #else
00452 #define SHEmptyRecycleBin SHEmptyRecycleBinA
00453 #endif
00454
00455 typedef struct _NOTIFYICONDATAA {
00456 DWORD cbSize;
00457 HWND hWnd;
00458 UINT uID;
00459 UINT uFlags;
00460 UINT uCallbackMessage;
00461 HICON hIcon;
00462 #if (_WIN32_IE < 0x0500)
00463 CHAR szTip[64];
00464 #else
00465 CHAR szTip[128];
00466 #endif
00467 #if (_WIN32_IE >= 0x0500)
00468 DWORD dwState;
00469 DWORD dwStateMask;
00470 CHAR szInfo[256];
00471 union {
00472 UINT uTimeout;
00473 UINT uVersion;
00474 } DUMMYUNIONNAME;
00475 CHAR szInfoTitle[64];
00476 DWORD dwInfoFlags;
00477 #endif
00478 #if (_WIN32_IE >= 0x600)
00479 GUID guidItem;
00480 #endif
00481 } NOTIFYICONDATAA, *PNOTIFYICONDATAA;
00482 typedef struct _NOTIFYICONDATAW {
00483 DWORD cbSize;
00484 HWND hWnd;
00485 UINT uID;
00486 UINT uFlags;
00487 UINT uCallbackMessage;
00488 HICON hIcon;
00489 #if (_WIN32_IE < 0x0500)
00490 WCHAR szTip[64];
00491 #else
00492 WCHAR szTip[128];
00493 #endif
00494 #if (_WIN32_IE >= 0x0500)
00495 DWORD dwState;
00496 DWORD dwStateMask;
00497 WCHAR szInfo[256];
00498 union {
00499 UINT uTimeout;
00500 UINT uVersion;
00501 } DUMMYUNIONNAME;
00502 WCHAR szInfoTitle[64];
00503 DWORD dwInfoFlags;
00504 #endif
00505 #if (_WIN32_IE >= 0x600)
00506 GUID guidItem;
00507 #endif
00508 } NOTIFYICONDATAW, *PNOTIFYICONDATAW;
00509 #ifdef UNICODE
00510 typedef NOTIFYICONDATAW NOTIFYICONDATA;
00511 typedef PNOTIFYICONDATAW PNOTIFYICONDATA;
00512 #else
00513 typedef NOTIFYICONDATAA NOTIFYICONDATA;
00514 typedef PNOTIFYICONDATAA PNOTIFYICONDATA;
00515 #endif
00516
00517 #define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAA, szTip[64])
00518 #define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAW, szTip[64])
00519 #ifdef UNICODE
00520 #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAW_V1_SIZE
00521 #else
00522 #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAA_V1_SIZE
00523 #endif
00524
00525 #define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAA, guidItem)
00526 #define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAW, guidItem)
00527 #ifdef UNICODE
00528 #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAW_V2_SIZE
00529 #else
00530 #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAA_V2_SIZE
00531 #endif
00532
00533 #if (_WIN32_IE >= 0x0500)
00534 #define NIN_SELECT (WM_USER + 0)
00535 #define NINF_KEY 0x1
00536 #define NIN_KEYSELECT (NIN_SELECT | NINF_KEY)
00537 #endif
00538
00539 #if (_WIN32_IE >= 0x0501)
00540 #define NIN_BALLOONSHOW (WM_USER + 2)
00541 #define NIN_BALLOONHIDE (WM_USER + 3)
00542 #define NIN_BALLOONTIMEOUT (WM_USER + 4)
00543 #define NIN_BALLOONUSERCLICK (WM_USER + 5)
00544 #endif
00545
00546 #define NIM_ADD 0x00000000
00547 #define NIM_MODIFY 0x00000001
00548 #define NIM_DELETE 0x00000002
00549 #if (_WIN32_IE >= 0x0500)
00550 #define NIM_SETFOCUS 0x00000003
00551 #define NIM_SETVERSION 0x00000004
00552 #define NOTIFYICON_VERSION 3
00553 #endif
00554
00555 #define NIF_MESSAGE 0x00000001
00556 #define NIF_ICON 0x00000002
00557 #define NIF_TIP 0x00000004
00558 #if (_WIN32_IE >= 0x0500)
00559 #define NIF_STATE 0x00000008
00560 #define NIF_INFO 0x00000010
00561 #endif
00562 #if (_WIN32_IE >= 0x600)
00563 #define NIF_GUID 0x00000020
00564 #endif
00565
00566 #if (_WIN32_IE >= 0x0500)
00567 #define NIS_HIDDEN 0x00000001
00568 #define NIS_SHAREDICON 0x00000002
00569
00570 #define NIIF_NONE 0x00000000
00571
00572 #define NIIF_INFO 0x00000001
00573 #define NIIF_WARNING 0x00000002
00574 #define NIIF_ERROR 0x00000003
00575 #define NIIF_ICON_MASK 0x0000000F
00576 #if (_WIN32_IE >= 0x0501)
00577 #define NIIF_NOSOUND 0x00000010
00578 #endif
00579 #endif
00580
00581 SHSTDAPI_(BOOL) Shell_NotifyIconA(DWORD dwMessage, PNOTIFYICONDATAA lpData);
00582 SHSTDAPI_(BOOL) Shell_NotifyIconW(DWORD dwMessage, PNOTIFYICONDATAW lpData);
00583 #ifdef UNICODE
00584 #define Shell_NotifyIcon Shell_NotifyIconW
00585 #else
00586 #define Shell_NotifyIcon Shell_NotifyIconA
00587 #endif
00588
00589 #ifndef SHFILEINFO_DEFINED
00590 #define SHFILEINFO_DEFINED
00591
00592 typedef struct _SHFILEINFOA
00593 {
00594 HICON hIcon;
00595 int iIcon;
00596 DWORD dwAttributes;
00597 CHAR szDisplayName[MAX_PATH];
00598 CHAR szTypeName[80];
00599 } SHFILEINFOA;
00600 typedef struct _SHFILEINFOW
00601 {
00602 HICON hIcon;
00603 int iIcon;
00604 DWORD dwAttributes;
00605 WCHAR szDisplayName[MAX_PATH];
00606 WCHAR szTypeName[80];
00607 } SHFILEINFOW;
00608 #ifdef UNICODE
00609 typedef SHFILEINFOW SHFILEINFO;
00610 #else
00611 typedef SHFILEINFOA SHFILEINFO;
00612 #endif
00613
00614 #endif
00615
00616 #define SHGFI_ICON 0x000000100
00617 #define SHGFI_DISPLAYNAME 0x000000200
00618 #define SHGFI_TYPENAME 0x000000400
00619 #define SHGFI_ATTRIBUTES 0x000000800
00620 #define SHGFI_ICONLOCATION 0x000001000
00621 #define SHGFI_EXETYPE 0x000002000
00622 #define SHGFI_SYSICONINDEX 0x000004000
00623 #define SHGFI_LINKOVERLAY 0x000008000
00624 #define SHGFI_SELECTED 0x000010000
00625 #define SHGFI_ATTR_SPECIFIED 0x000020000
00626 #define SHGFI_LARGEICON 0x000000000
00627 #define SHGFI_SMALLICON 0x000000001
00628 #define SHGFI_OPENICON 0x000000002
00629 #define SHGFI_SHELLICONSIZE 0x000000004
00630 #define SHGFI_PIDL 0x000000008
00631 #define SHGFI_USEFILEATTRIBUTES 0x000000010
00632
00633 #if (_WIN32_IE >= 0x0500)
00634 #define SHGFI_ADDOVERLAYS 0x000000020
00635 #define SHGFI_OVERLAYINDEX 0x000000040
00636
00637 #endif
00638
00639 SHSTDAPI_(DWORD_PTR) SHGetFileInfoA(LPCSTR pszPath, DWORD dwFileAttributes, SHFILEINFOA *psfi, UINT cbFileInfo, UINT uFlags);
00640 SHSTDAPI_(DWORD_PTR) SHGetFileInfoW(LPCWSTR pszPath, DWORD dwFileAttributes, SHFILEINFOW *psfi, UINT cbFileInfo, UINT uFlags);
00641 #ifdef UNICODE
00642 #define SHGetFileInfo SHGetFileInfoW
00643 #else
00644 #define SHGetFileInfo SHGetFileInfoA
00645 #endif
00646
00647 #define SHGetDiskFreeSpace SHGetDiskFreeSpaceEx
00648
00649 SHSTDAPI_(BOOL) SHGetDiskFreeSpaceExA(LPCSTR pszDirectoryName, ULARGE_INTEGER* pulFreeBytesAvailableToCaller, ULARGE_INTEGER* pulTotalNumberOfBytes, ULARGE_INTEGER* pulTotalNumberOfFreeBytes);
00650 SHSTDAPI_(BOOL) SHGetDiskFreeSpaceExW(LPCWSTR pszDirectoryName, ULARGE_INTEGER* pulFreeBytesAvailableToCaller, ULARGE_INTEGER* pulTotalNumberOfBytes, ULARGE_INTEGER* pulTotalNumberOfFreeBytes);
00651 #ifdef UNICODE
00652 #define SHGetDiskFreeSpaceEx SHGetDiskFreeSpaceExW
00653 #else
00654 #define SHGetDiskFreeSpaceEx SHGetDiskFreeSpaceExA
00655 #endif
00656 SHSTDAPI_(BOOL) SHGetNewLinkInfoA(LPCSTR pszLinkTo, LPCSTR pszDir, LPSTR pszName, BOOL *pfMustCopy, UINT uFlags);
00657 SHSTDAPI_(BOOL) SHGetNewLinkInfoW(LPCWSTR pszLinkTo, LPCWSTR pszDir, LPWSTR pszName, BOOL *pfMustCopy, UINT uFlags);
00658 #ifdef UNICODE
00659 #define SHGetNewLinkInfo SHGetNewLinkInfoW
00660 #else
00661 #define SHGetNewLinkInfo SHGetNewLinkInfoA
00662 #endif
00663
00664 #define SHGNLI_PIDL 0x000000001
00665 #define SHGNLI_PREFIXNAME 0x000000002
00666 #define SHGNLI_NOUNIQUE 0x000000004
00667 #if (_WIN32_IE >= 0x0501)
00668 #define SHGNLI_NOLNK 0x000000008
00669 #endif
00670
00671 #define PRINTACTION_OPEN 0
00672 #define PRINTACTION_PROPERTIES 1
00673 #define PRINTACTION_NETINSTALL 2
00674 #define PRINTACTION_NETINSTALLLINK 3
00675 #define PRINTACTION_TESTPAGE 4
00676 #define PRINTACTION_OPENNETPRN 5
00677 #ifdef WINNT
00678 #define PRINTACTION_DOCUMENTDEFAULTS 6
00679 #define PRINTACTION_SERVERPROPERTIES 7
00680 #endif
00681
00682 SHSTDAPI_(BOOL) SHInvokePrinterCommandA(HWND hwnd, UINT uAction, LPCSTR lpBuf1, LPCSTR lpBuf2, BOOL fModal);
00683 SHSTDAPI_(BOOL) SHInvokePrinterCommandW(HWND hwnd, UINT uAction, LPCWSTR lpBuf1, LPCWSTR lpBuf2, BOOL fModal);
00684 #ifdef UNICODE
00685 #define SHInvokePrinterCommand SHInvokePrinterCommandW
00686 #else
00687 #define SHInvokePrinterCommand SHInvokePrinterCommandA
00688 #endif
00689
00690 #endif
00691
00692 #if (_WIN32_WINNT >= 0x0500) || (_WIN32_WINDOWS >= 0x0500)
00693
00694 SHSTDAPI SHLoadNonloadedIconOverlayIdentifiers(void);
00695
00696 SHSTDAPI SHIsFileAvailableOffline(LPCWSTR pwszPath, LPDWORD pdwStatus);
00697
00698 #define OFFLINE_STATUS_LOCAL 0x0001
00699 #define OFFLINE_STATUS_REMOTE 0x0002
00700 #define OFFLINE_STATUS_INCOMPLETE 0x0004
00701
00702
00703
00704 #endif
00705
00706 SHSTDAPI SHSetLocalizedName(LPWSTR pszPath, LPCWSTR pszResModule, int idsRes);
00707
00708 #if _WIN32_IE >= 0x0600
00709
00710 STDAPI SHEnumerateUnreadMailAccountsA(HKEY hKeyUser, DWORD dwIndex, LPSTR pszMailAddress, int cchMailAddress);
00711 STDAPI SHEnumerateUnreadMailAccountsW(HKEY hKeyUser, DWORD dwIndex, LPWSTR pszMailAddress, int cchMailAddress);
00712 #ifdef UNICODE
00713 #define SHEnumerateUnreadMailAccounts SHEnumerateUnreadMailAccountsW
00714 #else
00715 #define SHEnumerateUnreadMailAccounts SHEnumerateUnreadMailAccountsA
00716 #endif
00717 STDAPI SHGetUnreadMailCountA(HKEY hKeyUser, LPCSTR pszMailAddress, DWORD *pdwCount, FILETIME *pFileTime, LPSTR pszShellExecuteCommand, int cchShellExecuteCommand);
00718 STDAPI SHGetUnreadMailCountW(HKEY hKeyUser, LPCWSTR pszMailAddress, DWORD *pdwCount, FILETIME *pFileTime, LPWSTR pszShellExecuteCommand, int cchShellExecuteCommand);
00719 #ifdef UNICODE
00720 #define SHGetUnreadMailCount SHGetUnreadMailCountW
00721 #else
00722 #define SHGetUnreadMailCount SHGetUnreadMailCountA
00723 #endif
00724 STDAPI SHSetUnreadMailCountA(LPCSTR pszMailAddress, DWORD dwCount, LPCSTR pszShellExecuteCommand);
00725 STDAPI SHSetUnreadMailCountW(LPCWSTR pszMailAddress, DWORD dwCount, LPCWSTR pszShellExecuteCommand);
00726 #ifdef UNICODE
00727 #define SHSetUnreadMailCount SHSetUnreadMailCountW
00728 #else
00729 #define SHSetUnreadMailCount SHSetUnreadMailCountA
00730 #endif
00731
00732 #endif
00733
00734 #if _WIN32_IE >= 0x0600
00735
00736 HRESULT SHGetImageList(int iImageList, REFIID riid, void **ppvObj);
00737
00738 #define SHIL_LARGE 0
00739 #define SHIL_SMALL 1
00740 #define SHIL_EXTRALARGE 2
00741 #define SHIL_SYSSMALL 3
00742
00743 #define SHIL_LAST SHIL_SYSSMALL
00744
00745 typedef HRESULT (STDMETHODCALLTYPE *PFNCANSHAREFOLDERW)(IN LPCWSTR pszPath);
00746 typedef HRESULT (STDMETHODCALLTYPE *PFNSHOWSHAREFOLDERUIW)(IN HWND hwndParent, IN LPCWSTR pszPath);
00747
00748 #endif
00749
00750 #ifdef __cplusplus
00751 }
00752 #endif
00753
00754 #if !defined(_WIN64)
00755 #include <poppack.h>
00756 #endif
00757
00758 #endif
00759