Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1071 lines
38 KiB

  1. /*****************************************************************************\
  2. * *
  3. * shellapi.h - SHELL.DLL functions, types, and definitions *
  4. * *
  5. * Copyright (c) Microsoft Corporation. All rights reserved. *
  6. * *
  7. \*****************************************************************************/
  8. ;begin_internal
  9. //***************************************************************************
  10. // --- SHELLAPI.W SHSEMIP.H SHLOBJ.W SHOBJIDL.IDL SHLDISP.IDL SHPRIV.IDL ---
  11. // Which header is best for my new API?
  12. //
  13. // SHELLAPI - ALL NEW SHELL32 EXPORTS public and private
  14. // used for both public and private exports from shell32
  15. //
  16. // SHLOBJ - *AVOID NEW USAGE*, PREFER OTHER HEADERS
  17. // used primarily for legacy compatibility
  18. //
  19. // SHSEMIP - *AVOID _ALL_ USAGE*, NO EXPORTS, SUPER PRIVATE
  20. // used for very private shell defines.
  21. //
  22. // SHOBJIDL - ALL NEW SHELL PUBLIC INTERFACES
  23. // primary file for public shell (shell32+) interfaces
  24. //
  25. // SHLDISP - ALL NEW SHELL AUTOMATION INTERFACES
  26. // automation interfaces are always public
  27. //
  28. // SHPRIV - ALL NEW SHELL PRIVATE INTERFACES
  29. // private interfaces used anywhere in the shell
  30. //
  31. //***************************************************************************
  32. ;end_internal
  33. #ifndef _INC_SHELLAPI
  34. #define _INC_SHELLAPI
  35. #ifndef _SHELAPIP_ ;internal_NT
  36. #define _SHELAPIP_ ;internal_NT
  37. #include <objbase.h> ; internal_NT
  38. ;begin_both
  39. //
  40. // Define API decoration for direct importing of DLL references.
  41. //
  42. #ifndef WINSHELLAPI
  43. #if !defined(_SHELL32_)
  44. #define WINSHELLAPI DECLSPEC_IMPORT
  45. #else
  46. #define WINSHELLAPI
  47. #endif
  48. #endif // WINSHELLAPI
  49. #ifndef SHSTDAPI
  50. #if !defined(_SHELL32_)
  51. #define SHSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
  52. #define SHSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
  53. #else
  54. #define SHSTDAPI STDAPI
  55. #define SHSTDAPI_(type) STDAPI_(type)
  56. #endif
  57. #endif // SHSTDAPI
  58. #ifndef SHDOCAPI
  59. #if !defined(_SHDOCVW_)
  60. #define SHDOCAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
  61. #define SHDOCAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
  62. #else
  63. #define SHDOCAPI STDAPI
  64. #define SHDOCAPI_(type) STDAPI_(type)
  65. #endif
  66. #endif // SHDOCAPI
  67. #if !defined(_WIN64)
  68. #include <pshpack1.h>
  69. #endif
  70. #ifdef __cplusplus
  71. extern "C" { /* Assume C declarations for C++ */
  72. #endif /* __cplusplus */
  73. ;end_both
  74. DECLARE_HANDLE(HDROP);
  75. SHSTDAPI_(UINT) DragQueryFile%(HDROP,UINT,LPTSTR%,UINT);
  76. SHSTDAPI_(BOOL) DragQueryPoint(HDROP,LPPOINT);
  77. SHSTDAPI_(void) DragFinish(HDROP);
  78. SHSTDAPI_(void) DragAcceptFiles(HWND,BOOL);
  79. SHSTDAPI_(HINSTANCE) ShellExecute%(HWND hwnd, LPCTSTR% lpOperation, LPCTSTR% lpFile, LPCTSTR% lpParameters, LPCTSTR% lpDirectory, INT nShowCmd);
  80. SHSTDAPI_(HINSTANCE) FindExecutable%(LPCTSTR% lpFile, LPCTSTR% lpDirectory, LPTSTR% lpResult);
  81. SHSTDAPI_(LPWSTR *) CommandLineToArgvW(LPCWSTR lpCmdLine, int*pNumArgs);
  82. SHSTDAPI_(INT) ShellAbout%(HWND hWnd, LPCTSTR% szApp, LPCTSTR% szOtherStuff, HICON hIcon);
  83. SHSTDAPI_(HICON) DuplicateIcon(HINSTANCE hInst, HICON hIcon);
  84. SHSTDAPI_(HICON) ExtractAssociatedIcon%(HINSTANCE hInst, LPTSTR% lpIconPath, LPWORD lpiIcon);
  85. SHSTDAPI_(HICON) ExtractAssociatedIconEx%(HINSTANCE hInst,LPTSTR% lpIconPath,LPWORD lpiIconIndex, LPWORD lpiIconId);
  86. SHSTDAPI_(HICON) ExtractIcon%(HINSTANCE hInst, LPCTSTR% lpszExeFileName, UINT nIconIndex);
  87. ;begin_winver_400
  88. typedef struct _DRAGINFO% {
  89. UINT uSize; /* init with sizeof(DRAGINFO) */
  90. POINT pt;
  91. BOOL fNC;
  92. LPTSTR% lpFileList;
  93. DWORD grfKeyState;
  94. } DRAGINFO%, *LPDRAGINFO%;
  95. ;begin_internal
  96. // BUGBUG this API needs to be A/W. Don't make it public until it is.
  97. SHSTDAPI_(BOOL) DragQueryInfo(HDROP hDrop, LPDRAGINFO lpdi);
  98. ;end_internal
  99. ////
  100. //// AppBar stuff
  101. ////
  102. #define ABM_NEW 0x00000000
  103. #define ABM_REMOVE 0x00000001
  104. #define ABM_QUERYPOS 0x00000002
  105. #define ABM_SETPOS 0x00000003
  106. #define ABM_GETSTATE 0x00000004
  107. #define ABM_GETTASKBARPOS 0x00000005
  108. #define ABM_ACTIVATE 0x00000006 // lParam == TRUE/FALSE means activate/deactivate
  109. #define ABM_GETAUTOHIDEBAR 0x00000007
  110. #define ABM_SETAUTOHIDEBAR 0x00000008 // this can fail at any time. MUST check the result
  111. // lParam = TRUE/FALSE Set/Unset
  112. // uEdge = what edge
  113. #define ABM_WINDOWPOSCHANGED 0x0000009
  114. #define ABM_SETSTATE 0x0000000a
  115. ;begin_internal
  116. // WARNING! If you add a new ABM_* message, you might need to add a
  117. // "case ABM_NEWMESSAGE:" to it in SHAppBarMessage.
  118. ;end_internal
  119. // these are put in the wparam of callback messages
  120. #define ABN_STATECHANGE 0x0000000
  121. #define ABN_POSCHANGED 0x0000001
  122. #define ABN_FULLSCREENAPP 0x0000002
  123. #define ABN_WINDOWARRANGE 0x0000003 // lParam == TRUE means hide
  124. // flags for get state
  125. #define ABS_AUTOHIDE 0x0000001
  126. #define ABS_ALWAYSONTOP 0x0000002
  127. #define ABE_LEFT 0
  128. #define ABE_TOP 1
  129. #define ABE_RIGHT 2
  130. #define ABE_BOTTOM 3
  131. #define ABE_MAX 4 ;internal_win40
  132. ;begin_internal
  133. //
  134. // We have to define this structure twice.
  135. // The public definition uses HWNDs and LPARAMs.
  136. // The private definition uses DWORDs for Win32/64 interop.
  137. // The private version is called "APPBARDATA3264" because it is the
  138. // explicit cross-bitness version.
  139. //
  140. // Make sure to keep them in sync!
  141. //
  142. // If you add any fields to this structure, you must also change the
  143. // 32/64 thunk code in SHAppBarMessage.
  144. //
  145. ;end_internal
  146. typedef struct _AppBarData
  147. {
  148. DWORD cbSize;
  149. HWND hWnd;
  150. UINT uCallbackMessage;
  151. UINT uEdge;
  152. RECT rc;
  153. LPARAM lParam; // message specific
  154. } APPBARDATA, *PAPPBARDATA;
  155. ;begin_internal
  156. #include <pshpack8.h>
  157. typedef struct _AppBarData3264
  158. {
  159. DWORD cbSize;
  160. DWORD dwWnd;
  161. UINT uCallbackMessage;
  162. UINT uEdge;
  163. RECT rc;
  164. DWORDLONG lParam; // message specific
  165. } APPBARDATA3264, *PAPPBARDATA3264;
  166. typedef struct _TRAYAPPBARDATA
  167. {
  168. APPBARDATA3264 abd;
  169. DWORD dwMessage;
  170. DWORD hSharedABD;
  171. DWORD dwProcId;
  172. } TRAYAPPBARDATA, *PTRAYAPPBARDATA;
  173. #include <poppack.h>
  174. ;end_internal
  175. SHSTDAPI_(UINT_PTR) SHAppBarMessage(DWORD dwMessage, PAPPBARDATA pData);
  176. ////
  177. //// EndAppBar
  178. ////
  179. SHSTDAPI_(HGLOBAL) InternalExtractIcon%(HINSTANCE hInst, LPCTSTR% lpszFile, UINT nIconIndex, UINT nIcons); ;internal_win40
  180. SHSTDAPI_(HGLOBAL) InternalExtractIconList%(HANDLE hInst, LPTSTR% lpszExeFileName, LPINT lpnIcons); ;internal_win40
  181. SHSTDAPI_(DWORD) DoEnvironmentSubst%(LPTSTR% szString, UINT cchString);
  182. SHSTDAPI_(BOOL) RegisterShellHook(HWND, BOOL); ;internal_win40
  183. #define EIRESID(x) (-1 * (int)(x))
  184. SHSTDAPI_(UINT) ExtractIconEx%(LPCTSTR% lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons);
  185. ////
  186. //// Shell File Operations
  187. ////
  188. #ifndef FO_MOVE //these need to be kept in sync with the ones in shlobj.h
  189. #define FO_MOVE 0x0001
  190. #define FO_COPY 0x0002
  191. #define FO_DELETE 0x0003
  192. #define FO_RENAME 0x0004
  193. #define FOF_MULTIDESTFILES 0x0001
  194. #define FOF_CONFIRMMOUSE 0x0002
  195. #define FOF_SILENT 0x0004 // don't create progress/report
  196. #define FOF_RENAMEONCOLLISION 0x0008
  197. #define FOF_NOCONFIRMATION 0x0010 // Don't prompt the user.
  198. #define FOF_WANTMAPPINGHANDLE 0x0020 // Fill in SHFILEOPSTRUCT.hNameMappings
  199. // Must be freed using SHFreeNameMappings
  200. #define FOF_ALLOWUNDO 0x0040
  201. #define FOF_FILESONLY 0x0080 // on *.*, do only files
  202. #define FOF_SIMPLEPROGRESS 0x0100 // means don't show names of files
  203. #define FOF_NOCONFIRMMKDIR 0x0200 // don't confirm making any needed dirs
  204. #define FOF_NOERRORUI 0x0400 // don't put up error UI
  205. #define FOF_NOCOPYSECURITYATTRIBS 0x0800 // dont copy NT file Security Attributes
  206. #define FOF_NORECURSION 0x1000 // don't recurse into directories.
  207. #if (_WIN32_IE >= 0x0500)
  208. #define FOF_NO_CONNECTED_ELEMENTS 0x2000 // don't operate on connected elements.
  209. #define FOF_WANTNUKEWARNING 0x4000 // during delete operation, warn if nuking instead of recycling (partially overrides FOF_NOCONFIRMATION)
  210. #endif // (_WIN32_IE >= 0x500)
  211. #if (_WIN32_WINNT >= 0x0501)
  212. #define FOF_NORECURSEREPARSE 0x8000 // treat reparse points as objects, not containers
  213. #endif // (_WIN32_WINNT >= 0x501)
  214. typedef WORD FILEOP_FLAGS;
  215. #define PO_DELETE 0x0013 // printer is being deleted
  216. #define PO_RENAME 0x0014 // printer is being renamed
  217. #define PO_PORTCHANGE 0x0020 // port this printer connected to is being changed
  218. // if this id is set, the strings received by
  219. // the copyhook are a doubly-null terminated
  220. // list of strings. The first is the printer
  221. // name and the second is the printer port.
  222. #define PO_REN_PORT 0x0034 // PO_RENAME and PO_PORTCHANGE at same time.
  223. // no POF_ flags currently defined
  224. typedef WORD PRINTEROP_FLAGS;
  225. #endif // FO_MOVE
  226. // implicit parameters are:
  227. // if pFrom or pTo are unqualified names the current directories are
  228. // taken from the global current drive/directory settings managed
  229. // by Get/SetCurrentDrive/Directory
  230. //
  231. // the global confirmation settings
  232. typedef struct _SHFILEOPSTRUCT%
  233. {
  234. HWND hwnd;
  235. UINT wFunc;
  236. LPCTSTR% pFrom;
  237. LPCTSTR% pTo;
  238. FILEOP_FLAGS fFlags;
  239. BOOL fAnyOperationsAborted;
  240. LPVOID hNameMappings;
  241. LPCTSTR% lpszProgressTitle; // only used if FOF_SIMPLEPROGRESS
  242. } SHFILEOPSTRUCT%, *LPSHFILEOPSTRUCT%;
  243. SHSTDAPI_(int) SHFileOperation%(LPSHFILEOPSTRUCT% lpFileOp);
  244. SHSTDAPI_(void) SHFreeNameMappings(HANDLE hNameMappings);
  245. typedef struct _SHNAMEMAPPING%
  246. {
  247. LPTSTR% pszOldPath;
  248. LPTSTR% pszNewPath;
  249. int cchOldPath;
  250. int cchNewPath;
  251. } SHNAMEMAPPING%, *LPSHNAMEMAPPING%;
  252. #define SHGetNameMappingCount(_hnm) DSA_GetItemCount(_hnm) ;internal
  253. #define SHGetNameMappingPtr(_hnm, _iItem) (LPSHNAMEMAPPING)DSA_GetItemPtr(_hnm, _iItem) ;internal
  254. ////
  255. //// End Shell File Operations
  256. ////
  257. ////
  258. //// Begin ShellExecuteEx and family
  259. ////
  260. ;begin_internal
  261. typedef struct _RUNDLL_NOTIFY% {
  262. NMHDR hdr;
  263. HICON hIcon;
  264. LPTSTR% lpszTitle;
  265. } RUNDLL_NOTIFY%;
  266. typedef void (WINAPI *RUNDLLPROC%)(HWND hwndStub, HINSTANCE hInstance, LPTSTR% pszCmdLine, int nCmdShow);
  267. #define RDN_FIRST (0U-500U)
  268. #define RDN_LAST (0U-509U)
  269. #define RDN_TASKINFO (RDN_FIRST-0)
  270. #define SEN_DDEEXECUTE (SEN_FIRST-0)
  271. ;end_internal
  272. /* ShellExecute() and ShellExecuteEx() error codes */
  273. /* regular WinExec() codes */
  274. #define SE_ERR_FNF 2 // file not found
  275. #define SE_ERR_PNF 3 // path not found
  276. #define SE_ERR_ACCESSDENIED 5 // access denied
  277. #define SE_ERR_OOM 8 // out of memory
  278. #define SE_ERR_DLLNOTFOUND 32
  279. ;end_winver_400
  280. /* error values for ShellExecute() beyond the regular WinExec() codes */
  281. #define SE_ERR_SHARE 26
  282. #define SE_ERR_ASSOCINCOMPLETE 27
  283. #define SE_ERR_DDETIMEOUT 28
  284. #define SE_ERR_DDEFAIL 29
  285. #define SE_ERR_DDEBUSY 30
  286. #define SE_ERR_NOASSOC 31
  287. ;begin_winver_400
  288. ;internal_NT
  289. HINSTANCE RealShellExecute%( ;internal_NT
  290. HWND hwndParent, ;internal_NT
  291. LPCTSTR% lpOperation, ;internal_NT
  292. LPCTSTR% lpFile, ;internal_NT
  293. LPCTSTR% lpParameters, ;internal_NT
  294. LPCTSTR% lpDirectory, ;internal_NT
  295. LPTSTR% lpResult, ;internal_NT
  296. LPCTSTR% lpTitle, ;internal_NT
  297. LPTSTR% lpReserved, ;internal_NT
  298. WORD nShow, ;internal_NT
  299. LPHANDLE lphProcess); ;internal_NT
  300. HINSTANCE RealShellExecuteEx%( ;internal_NT
  301. HWND hwndParent, ;internal_NT
  302. LPCTSTR% lpOperation, ;internal_NT
  303. LPCTSTR% lpFile, ;internal_NT
  304. LPCTSTR% lpParameters, ;internal_NT
  305. LPCTSTR% lpDirectory, ;internal_NT
  306. LPTSTR% lpResult, ;internal_NT
  307. LPCTSTR% lpTitle, ;internal_NT
  308. LPTSTR% lpReserved, ;internal_NT
  309. WORD nShow, ;internal_NT
  310. LPHANDLE lphProcess, ;internal_NT
  311. DWORD dwFlags); ;internal_NT
  312. // ;internal_NT
  313. // RealShellExecuteEx flags ;internal_NT
  314. // ;internal_NT
  315. #define EXEC_SEPARATE_VDM 0x00000001 ;internal_NT
  316. #define EXEC_NO_CONSOLE 0x00000002 ;internal
  317. // Note CLASSKEY overrides CLASSNAME
  318. #define SEE_MASK_CLASSNAME 0x00000001
  319. #define SEE_MASK_CLASSKEY 0x00000003
  320. // Note INVOKEIDLIST overrides IDLIST
  321. #define SEE_MASK_IDLIST 0x00000004
  322. #define SEE_MASK_INVOKEIDLIST 0x0000000c
  323. #define SEE_MASK_ICON 0x00000010
  324. #define SEE_MASK_HOTKEY 0x00000020
  325. #define SEE_MASK_NOCLOSEPROCESS 0x00000040
  326. #define SEE_MASK_CONNECTNETDRV 0x00000080
  327. #define SEE_MASK_FLAG_DDEWAIT 0x00000100
  328. #define SEE_MASK_DOENVSUBST 0x00000200
  329. #define SEE_MASK_FLAG_NO_UI 0x00000400
  330. #define SEE_MASK_FLAG_SHELLEXEC 0x00000800 ;internal_win40
  331. #define SEE_MASK_FORCENOIDLIST 0x00001000 ;internal_win40
  332. #define SEE_MASK_NO_HOOKS 0x00002000 ;internal_win40
  333. #define SEE_MASK_UNICODE 0x00004000
  334. #define SEE_MASK_NO_CONSOLE 0x00008000
  335. #define SEE_MASK_HASLINKNAME 0x00010000 ;internal_win40
  336. #define SEE_MASK_FLAG_SEPVDM 0x00020000 ;internal_win40
  337. #define SEE_MASK_RESERVED 0x00040000 ;internal_win40
  338. #define SEE_MASK_HASTITLE 0x00080000 ;internal_win40
  339. #define SEE_MASK_ASYNCOK 0x00100000
  340. #define SEE_MASK_HMONITOR 0x00200000
  341. #define SEE_MASK_FILEANDURL 0x00400000 ;internal
  342. #if (_WIN32_IE >= 0x0560)
  343. #define SEE_MASK_NOZONECHECKS 0x00800000
  344. #endif // (_WIN32_IE >= 0x560)
  345. #if (_WIN32_IE >= 0x0500)
  346. #define SEE_MASK_NOQUERYCLASSSTORE 0x01000000
  347. #define SEE_MASK_WAITFORINPUTIDLE 0x02000000
  348. #endif // (_WIN32_IE >= 0x500)
  349. #if (_WIN32_IE >= 0x0560)
  350. #define SEE_MASK_FLAG_LOG_USAGE 0x04000000
  351. #endif // (_WIN32_IE >= 0x560)
  352. // we have CMIC_MASK_ values that don't have corospongind SEE_MASK_ counterparts ;internal
  353. // CMIC_MASK_SHIFT_DOWN 0x10000000 ;internal
  354. // CMIC_MASK_PTINVOKE 0x20000000 ;internal
  355. // CMIC_MASK_CONTROL_DOWN 0x40000000 ;internal
  356. // All other bits are masked off when we do an InvokeCommand ;internal_win40
  357. #define SEE_VALID_CMIC_BITS 0x348FAFF0 ;internal_win40
  358. #define SEE_VALID_CMIC_FLAGS 0x048FAFC0 ;internal_win40
  359. #define SEE_MASK_VALID 0x07FFFFFF ;internal
  360. //
  361. // For compilers that don't support nameless unions
  362. //
  363. #ifndef DUMMYUNIONNAME
  364. #ifdef NONAMELESSUNION
  365. #define DUMMYUNIONNAME u
  366. #define DUMMYUNIONNAME2 u2
  367. #define DUMMYUNIONNAME3 u3
  368. #define DUMMYUNIONNAME4 u4
  369. #define DUMMYUNIONNAME5 u5
  370. #else
  371. #define DUMMYUNIONNAME
  372. #define DUMMYUNIONNAME2
  373. #define DUMMYUNIONNAME3
  374. #define DUMMYUNIONNAME4
  375. #define DUMMYUNIONNAME5
  376. #endif
  377. #endif // DUMMYUNIONNAME
  378. // The LPVOID lpIDList parameter is the IDList ;internal_win40
  379. typedef struct _SHELLEXECUTEINFO%
  380. {
  381. DWORD cbSize;
  382. ULONG fMask;
  383. HWND hwnd;
  384. LPCTSTR% lpVerb;
  385. LPCTSTR% lpFile;
  386. LPCTSTR% lpParameters;
  387. LPCTSTR% lpDirectory;
  388. int nShow;
  389. HINSTANCE hInstApp;
  390. // Optional fields
  391. LPVOID lpIDList;
  392. LPCTSTR% lpClass;
  393. HKEY hkeyClass;
  394. DWORD dwHotKey;
  395. union {
  396. HANDLE hIcon;
  397. HANDLE hMonitor;
  398. } DUMMYUNIONNAME;
  399. HANDLE hProcess;
  400. } SHELLEXECUTEINFO%, *LPSHELLEXECUTEINFO%;
  401. SHSTDAPI_(BOOL) ShellExecuteEx%(LPSHELLEXECUTEINFO% lpExecInfo);
  402. SHSTDAPI_(void) WinExecError%(HWND hwnd, int error, LPCTSTR% lpstrFileName, LPCTSTR% lpstrTitle);
  403. //
  404. // SHCreateProcessAsUser()
  405. typedef struct _SHCREATEPROCESSINFOW
  406. {
  407. DWORD cbSize;
  408. ULONG fMask;
  409. HWND hwnd;
  410. LPCWSTR pszFile;
  411. LPCWSTR pszParameters;
  412. LPCWSTR pszCurrentDirectory;
  413. IN HANDLE hUserToken;
  414. IN LPSECURITY_ATTRIBUTES lpProcessAttributes;
  415. IN LPSECURITY_ATTRIBUTES lpThreadAttributes;
  416. IN BOOL bInheritHandles;
  417. IN DWORD dwCreationFlags;
  418. IN LPSTARTUPINFOW lpStartupInfo;
  419. OUT LPPROCESS_INFORMATION lpProcessInformation;
  420. } SHCREATEPROCESSINFOW, *PSHCREATEPROCESSINFOW;
  421. SHSTDAPI_(BOOL) SHCreateProcessAsUserW(PSHCREATEPROCESSINFOW pscpi);
  422. ////
  423. //// End ShellExecuteEx and family
  424. ////
  425. //
  426. // RecycleBin
  427. //
  428. // struct for query recycle bin info
  429. typedef struct _SHQUERYRBINFO {
  430. DWORD cbSize;
  431. #if !defined(_MAC) || defined(_MAC_INT_64)
  432. __int64 i64Size;
  433. __int64 i64NumItems;
  434. #else
  435. DWORDLONG i64Size;
  436. DWORDLONG i64NumItems;
  437. #endif
  438. } SHQUERYRBINFO, *LPSHQUERYRBINFO;
  439. // flags for SHEmptyRecycleBin
  440. //
  441. #define SHERB_NOCONFIRMATION 0x00000001
  442. #define SHERB_NOPROGRESSUI 0x00000002
  443. #define SHERB_NOSOUND 0x00000004
  444. SHSTDAPI SHQueryRecycleBin%(LPCTSTR% pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo);
  445. SHSTDAPI SHEmptyRecycleBin%(HWND hwnd, LPCTSTR% pszRootPath, DWORD dwFlags);
  446. ////
  447. //// end of RecycleBin
  448. ////
  449. //// Tray notification definitions
  450. ////
  451. ;begin_internal
  452. //
  453. // We have to define this structure twice.
  454. // The public definition uses HWNDs and HICONs.
  455. // The private definition uses DWORDs for Win32/64 interop.
  456. // The private definition is in a pack(1) block for the same reason.
  457. // The private version is called "NOTIFYICONDATA32" because it is the
  458. // explicit 32-bit version.
  459. //
  460. // Make sure to keep them in sync!
  461. //
  462. ;end_internal
  463. typedef struct _NOTIFYICONDATA% {
  464. DWORD cbSize;
  465. HWND hWnd;
  466. UINT uID;
  467. UINT uFlags;
  468. UINT uCallbackMessage;
  469. HICON hIcon;
  470. #if (_WIN32_IE < 0x0500)
  471. TCHAR% szTip[64];
  472. #else
  473. TCHAR% szTip[128];
  474. #endif
  475. #if (_WIN32_IE >= 0x0500)
  476. DWORD dwState;
  477. DWORD dwStateMask;
  478. TCHAR% szInfo[256];
  479. union {
  480. UINT uTimeout;
  481. UINT uVersion;
  482. } DUMMYUNIONNAME;
  483. TCHAR% szInfoTitle[64];
  484. DWORD dwInfoFlags;
  485. #endif
  486. #if (_WIN32_IE >= 0x600)
  487. GUID guidItem;
  488. #endif
  489. } NOTIFYICONDATA%, *PNOTIFYICONDATA%;
  490. ;begin_internal
  491. #if defined(_WIN64)
  492. #include <pshpack1.h>
  493. #endif
  494. typedef struct _NOTIFYICONDATA32% {
  495. DWORD cbSize;
  496. DWORD dwWnd; // NB!
  497. UINT uID;
  498. UINT uFlags;
  499. UINT uCallbackMessage;
  500. DWORD dwIcon; // NB!
  501. #if (_WIN32_IE < 0x0500)
  502. TCHAR% szTip[64];
  503. #else
  504. TCHAR% szTip[128];
  505. #endif
  506. #if (_WIN32_IE >= 0x0500)
  507. DWORD dwState;
  508. DWORD dwStateMask;
  509. TCHAR% szInfo[256];
  510. union {
  511. UINT uTimeout;
  512. UINT uVersion;
  513. } DUMMYUNIONNAME;
  514. TCHAR% szInfoTitle[64];
  515. DWORD dwInfoFlags;
  516. #endif
  517. #if (_WIN32_IE >= 0x600)
  518. GUID guidItem;
  519. #endif
  520. } NOTIFYICONDATA32%, *PNOTIFYICONDATA32%;
  521. #if defined(_WIN64)
  522. #include <poppack.h>
  523. #endif
  524. ;end_internal
  525. #define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAA, szTip[64])
  526. #define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAW, szTip[64])
  527. #ifdef UNICODE
  528. #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAW_V1_SIZE
  529. #else
  530. #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAA_V1_SIZE
  531. #endif
  532. #define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAA, guidItem)
  533. #define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAW, guidItem)
  534. #ifdef UNICODE
  535. #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAW_V2_SIZE
  536. #else
  537. #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAA_V2_SIZE
  538. #endif
  539. #if defined(_WIN64) ;internal_win40
  540. #include <pshpack1.h> ;internal_win40
  541. #endif ;internal_win40
  542. typedef struct _TRAYNOTIFYDATA% { ;internal_win40
  543. DWORD dwSignature; ;internal_win40
  544. DWORD dwMessage; ;internal_win40
  545. NOTIFYICONDATA32 nid; ;internal_win40
  546. } TRAYNOTIFYDATA%, *PTRAYNOTIFYDATA%; ;internal_win40
  547. #if defined(_WIN64) ;internal_win40
  548. #include <poppack.h> ;internal_win40
  549. #endif ;internal_win40
  550. #define NI_SIGNATURE 0x34753423 ;internal_win40
  551. ;internal_win40
  552. #define WNDCLASS_TRAYNOTIFY "Shell_TrayWnd" ;internal_win40
  553. #define ENABLE_BALLOONTIP_MESSAGE L"Enable Balloon Tip" ;internal_win40
  554. #if (_WIN32_IE >= 0x0500)
  555. #define NIN_SELECT (WM_USER + 0)
  556. #define NINF_KEY 0x1
  557. #define NIN_KEYSELECT (NIN_SELECT | NINF_KEY)
  558. // (WM_USER + 1) = NIN_KEYSELECT ;Internal
  559. #endif
  560. #if (_WIN32_IE >= 0x0501)
  561. #define NIN_BALLOONSHOW (WM_USER + 2)
  562. #define NIN_BALLOONHIDE (WM_USER + 3)
  563. #define NIN_BALLOONTIMEOUT (WM_USER + 4)
  564. #define NIN_BALLOONUSERCLICK (WM_USER + 5)
  565. #endif
  566. #define NIM_ADD 0x00000000
  567. #define NIM_MODIFY 0x00000001
  568. #define NIM_DELETE 0x00000002
  569. #if (_WIN32_IE >= 0x0500)
  570. #define NIM_SETFOCUS 0x00000003
  571. #define NIM_SETVERSION 0x00000004
  572. #define NOTIFYICON_VERSION 3
  573. #endif
  574. #define NIF_MESSAGE 0x00000001
  575. #define NIF_ICON 0x00000002
  576. #define NIF_TIP 0x00000004
  577. #if (_WIN32_IE >= 0x0500)
  578. #define NIF_STATE 0x00000008
  579. #define NIF_INFO 0x00000010
  580. #endif
  581. #if (_WIN32_IE >= 0x600)
  582. #define NIF_GUID 0x00000020
  583. #endif
  584. #define NIF_VALID_V1 0x00000007 ;internal
  585. #define NIF_VALID_V2 0x0000001F ;internal
  586. #define NIF_VALID 0x0000003F ;internal
  587. ; begin_internal
  588. //
  589. // IMPORTANT! IMPORTANT!
  590. // Keep enum ICONSTATEFLAGS in trayitem.h in sync when a new flag is defined here..
  591. //
  592. ;end_internal
  593. ;begin_internal
  594. #if (_WIN32_IE >= 0x0600)
  595. #define NIS_SHOWALWAYS 0x20000000
  596. #endif
  597. ;end_internal
  598. ;begin_internal
  599. // NOTE : The NIS_SHOWALWAYS flag above is 0x20000000
  600. ;end_internal
  601. #if (_WIN32_IE >= 0x0500)
  602. #define NIS_HIDDEN 0x00000001
  603. #define NIS_SHAREDICON 0x00000002
  604. // says this is the source of a shared icon
  605. #define NISP_SHAREDICONSOURCE 0x10000000 ;internal
  606. ;begin_internal
  607. // NOTE: NIS_SHOWALWAYS flag is defined with 0x20000000...
  608. ;end_internal
  609. #define NISP_DEMOTED 0x00100000 ;internal
  610. #define NISP_STARTUPICON 0x00200000 ;internal
  611. #define NISP_ONCEVISIBLE 0x00400000 ;internal
  612. #define NISP_ITEMCLICKED 0x00800000 ;internal
  613. #define NISP_ITEMSAMEICONMODIFY 0x01000000 ;internal
  614. // Notify Icon Infotip flags
  615. #define NIIF_NONE 0x00000000
  616. // icon flags are mutually exclusive
  617. // and take only the lowest 2 bits
  618. #define NIIF_INFO 0x00000001
  619. #define NIIF_WARNING 0x00000002
  620. #define NIIF_ERROR 0x00000003
  621. #define NIIF_ICON_MASK 0x0000000F
  622. #if (_WIN32_IE >= 0x0501)
  623. #define NIIF_NOSOUND 0x00000010
  624. #endif
  625. #endif
  626. SHSTDAPI_(BOOL) Shell_NotifyIcon%(DWORD dwMessage, PNOTIFYICONDATA% lpData);
  627. ////
  628. //// End Tray Notification Icons
  629. ////
  630. #ifndef SHFILEINFO_DEFINED
  631. #define SHFILEINFO_DEFINED
  632. ////
  633. //// Begin SHGetFileInfo
  634. ////
  635. /*
  636. * The SHGetFileInfo API provides an easy way to get attributes
  637. * for a file given a pathname.
  638. *
  639. * PARAMETERS
  640. *
  641. * pszPath file name to get info about
  642. * dwFileAttributes file attribs, only used with SHGFI_USEFILEATTRIBUTES
  643. * psfi place to return file info
  644. * cbFileInfo size of structure
  645. * uFlags flags
  646. *
  647. * RETURN
  648. * TRUE if things worked
  649. */
  650. typedef struct _SHFILEINFO%
  651. {
  652. HICON hIcon; // out: icon
  653. int iIcon; // out: icon index
  654. DWORD dwAttributes; // out: SFGAO_ flags
  655. TCHAR% szDisplayName[MAX_PATH]; // out: display name (or path)
  656. TCHAR% szTypeName[80]; // out: type name
  657. } SHFILEINFO%;
  658. // NOTE: This is also in shlwapi.h. Please keep in synch.
  659. #endif // !SHFILEINFO_DEFINED
  660. #define SHGFI_ICON 0x000000100 // get icon
  661. #define SHGFI_DISPLAYNAME 0x000000200 // get display name
  662. #define SHGFI_TYPENAME 0x000000400 // get type name
  663. #define SHGFI_ATTRIBUTES 0x000000800 // get attributes
  664. #define SHGFI_ICONLOCATION 0x000001000 // get icon location
  665. #define SHGFI_EXETYPE 0x000002000 // return exe type
  666. #define SHGFI_SYSICONINDEX 0x000004000 // get system icon index
  667. #define SHGFI_LINKOVERLAY 0x000008000 // put a link overlay on icon
  668. #define SHGFI_SELECTED 0x000010000 // show icon in selected state
  669. #define SHGFI_ATTR_SPECIFIED 0x000020000 // get only specified attributes
  670. #define SHGFI_LARGEICON 0x000000000 // get large icon
  671. #define SHGFI_SMALLICON 0x000000001 // get small icon
  672. #define SHGFI_OPENICON 0x000000002 // get open icon
  673. #define SHGFI_SHELLICONSIZE 0x000000004 // get shell size icon
  674. #define SHGFI_PIDL 0x000000008 // pszPath is a pidl
  675. #define SHGFI_USEFILEATTRIBUTES 0x000000010 // use passed dwFileAttribute
  676. #if (_WIN32_IE >= 0x0500)
  677. #define SHGFI_ADDOVERLAYS 0x000000020 // apply the appropriate overlays
  678. #define SHGFI_OVERLAYINDEX 0x000000040 // Get the index of the overlay
  679. // in the upper 8 bits of the iIcon
  680. #endif
  681. SHSTDAPI_(DWORD_PTR) SHGetFileInfo%(LPCTSTR% pszPath, DWORD dwFileAttributes, SHFILEINFO% *psfi, UINT cbFileInfo, UINT uFlags);
  682. #define SHGetDiskFreeSpace SHGetDiskFreeSpaceEx
  683. SHSTDAPI_(BOOL) SHGetDiskFreeSpaceEx%(LPCTSTR% pszDirectoryName, ULARGE_INTEGER* pulFreeBytesAvailableToCaller, ULARGE_INTEGER* pulTotalNumberOfBytes, ULARGE_INTEGER* pulTotalNumberOfFreeBytes);
  684. SHSTDAPI_(BOOL) SHGetNewLinkInfo%(LPCTSTR% pszLinkTo, LPCTSTR% pszDir, LPTSTR% pszName, BOOL *pfMustCopy, UINT uFlags);
  685. #define SHGNLI_PIDL 0x000000001 // pszLinkTo is a pidl
  686. #define SHGNLI_PREFIXNAME 0x000000002 // Make name "Shortcut to xxx"
  687. #define SHGNLI_NOUNIQUE 0x000000004 // don't do the unique name generation
  688. #if (_WIN32_IE >= 0x0501)
  689. #define SHGNLI_NOLNK 0x000000008 // don't add ".lnk" extension
  690. #endif // _WIN2_IE >= 0x0501
  691. ////
  692. //// End SHGetFileInfo
  693. ////
  694. // Printer stuff
  695. #define PRINTACTION_OPEN 0
  696. #define PRINTACTION_PROPERTIES 1
  697. #define PRINTACTION_NETINSTALL 2
  698. #define PRINTACTION_NETINSTALLLINK 3
  699. #define PRINTACTION_TESTPAGE 4
  700. #define PRINTACTION_OPENNETPRN 5
  701. #ifdef WINNT
  702. #define PRINTACTION_DOCUMENTDEFAULTS 6
  703. #define PRINTACTION_SERVERPROPERTIES 7
  704. #endif
  705. SHSTDAPI_(BOOL) SHInvokePrinterCommand%(HWND hwnd, UINT uAction, LPCTSTR% lpBuf1, LPCTSTR% lpBuf2, BOOL fModal);
  706. // ;internal_NT
  707. // Old NT Compatibility stuff (remove later) ;internal_NT
  708. // ;internal_NT
  709. SHSTDAPI_(VOID) CheckEscapes%(LPTSTR% lpFileA, DWORD cch); ;internal_NT
  710. SHSTDAPI_(LPTSTR%) SheRemoveQuotes%(LPTSTR% sz); ;internal_NT
  711. SHSTDAPI_(WORD) ExtractIconResInfo%(HANDLE hInst,LPTSTR% lpszFileName,WORD wIconIndex,LPWORD lpwSize,LPHANDLE lphIconRes); ;internal_NT
  712. SHSTDAPI_(int) SheSetCurDrive(int iDrive); ;internal_NT
  713. SHSTDAPI_(int) SheChangeDir%(register TCHAR% *newdir); ;internal_NT
  714. SHSTDAPI_(int) SheGetDir%(int iDrive, TCHAR% *str); ;internal_NT
  715. SHSTDAPI_(BOOL) SheConvertPath%(LPTSTR% lpApp, LPTSTR% lpFile, UINT cchCmdBuf); ;internal_NT
  716. SHSTDAPI_(BOOL) SheShortenPath%(LPTSTR% pPath, BOOL bShorten); ;internal_NT
  717. SHSTDAPI_(BOOL) RegenerateUserEnvironment(PVOID *pPrevEnv, ;internal_NT
  718. BOOL bSetCurrentEnv); ;internal_NT
  719. SHSTDAPI_(INT) SheGetPathOffsetW(LPWSTR lpszDir); ;internal_NT
  720. SHSTDAPI_(BOOL) SheGetDirExW(LPWSTR lpszCurDisk, LPDWORD lpcchCurDir,LPWSTR lpszCurDir); ;internal_NT
  721. SHSTDAPI_(DWORD) ExtractVersionResource16W(LPCWSTR lpwstrFilename, LPHANDLE lphData); ;internal_NT
  722. SHSTDAPI_(INT) SheChangeDirEx%(register TCHAR% *newdir); ;internal_NT
  723. // ;internal_NT
  724. // PRINTQ ;internal_NT
  725. // ;internal_NT
  726. VOID Printer_LoadIcons%(LPCTSTR% pszPrinterName, HICON* phLargeIcon, HICON* phSmallIcon); ;internal_NT
  727. LPTSTR% ShortSizeFormat%(DWORD dw, LPTSTR% szBuf); ;internal_NT
  728. LPTSTR% AddCommas%(DWORD dw, LPTSTR% pszResult); ;internal_NT
  729. BOOL Printers_RegisterWindow%(LPCTSTR% pszPrinter, DWORD dwType, PHANDLE phClassPidl, HWND *phwnd); ;internal_NT
  730. VOID Printers_UnregisterWindow(HANDLE hClassPidl, HWND hwnd); ;internal_NT
  731. #define PRINTER_PIDL_TYPE_PROPERTIES 0x1 ;internal_NT
  732. #define PRINTER_PIDL_TYPE_DOCUMENTDEFAULTS 0x2 ;internal_NT
  733. #define PRINTER_PIDL_TYPE_ALL_USERS_DOCDEF 0x3 ;internal_NT
  734. #define PRINTER_PIDL_TYPE_JOBID 0x80000000 ;internal_NT
  735. ;end_winver_400
  736. #if (_WIN32_WINNT >= 0x0500) || (_WIN32_WINDOWS >= 0x0500)
  737. //
  738. // The SHLoadNonloadedIconOverlayIdentifiers API causes the shell's
  739. // icon overlay manager to load any registered icon overlay
  740. // identifers that are not currently loaded. This is useful if an
  741. // overlay identifier did not load at shell startup but is needed
  742. // and can be loaded at a later time. Identifiers already loaded
  743. // are not affected. Overlay identifiers implement the
  744. // IShellIconOverlayIdentifier interface.
  745. //
  746. // Returns:
  747. // S_OK
  748. //
  749. SHSTDAPI SHLoadNonloadedIconOverlayIdentifiers(void);
  750. //
  751. // The SHIsFileAvailableOffline API determines whether a file
  752. // or folder is available for offline use.
  753. //
  754. // Parameters:
  755. // pwszPath file name to get info about
  756. // pdwStatus (optional) OFFLINE_STATUS_* flags returned here
  757. //
  758. // Returns:
  759. // S_OK File/directory is available offline, unless
  760. // OFFLINE_STATUS_INCOMPLETE is returned.
  761. // E_INVALIDARG Path is invalid, or not a net path
  762. // E_FAIL File/directory is not available offline
  763. //
  764. // Notes:
  765. // OFFLINE_STATUS_INCOMPLETE is never returned for directories.
  766. // Both OFFLINE_STATUS_LOCAL and OFFLINE_STATUS_REMOTE may be returned,
  767. // indicating "open in both places." This is common when the server is online.
  768. //
  769. SHSTDAPI SHIsFileAvailableOffline(LPCWSTR pwszPath, LPDWORD pdwStatus);
  770. #define OFFLINE_STATUS_LOCAL 0x0001 // If open, it's open locally
  771. #define OFFLINE_STATUS_REMOTE 0x0002 // If open, it's open remotely
  772. #define OFFLINE_STATUS_INCOMPLETE 0x0004 // The local copy is currently imcomplete.
  773. // The file will not be available offline
  774. // until it has been synchronized.
  775. #endif
  776. // sets the specified path to use the string resource
  777. // as the UI instead of the file system name
  778. SHSTDAPI SHSetLocalizedName(LPWSTR pszPath, LPCWSTR pszResModule, int idsRes);
  779. ;begin_internal
  780. //
  781. // Internal APIs Follow. NOT FOR PUBLIC CONSUMPTION.
  782. //
  783. // DOC'ed for DOJ compliance
  784. ;end_internal
  785. //====== ShellMessageBox ================================================
  786. // If lpcTitle is NULL, the title is taken from hWnd
  787. // If lpcText is NULL, this is assumed to be an Out Of Memory message
  788. // If the selector of lpcTitle or lpcText is NULL, the offset should be a
  789. // string resource ID
  790. // The variable arguments must all be 32-bit values (even if fewer bits
  791. // are actually used)
  792. // lpcText (or whatever string resource it causes to be loaded) should
  793. // be a formatting string similar to wsprintf except that only the
  794. // following formats are available:
  795. // %% formats to a single '%'
  796. // %nn%s the nn-th arg is a string which is inserted
  797. // %nn%ld the nn-th arg is a DWORD, and formatted decimal
  798. // %nn%lx the nn-th arg is a DWORD, and formatted hex
  799. // note that lengths are allowed on the %s, %ld, and %lx, just
  800. // like wsprintf
  801. //
  802. int _cdecl ShellMessageBox%(
  803. HINSTANCE hAppInst,
  804. HWND hWnd,
  805. LPCTSTR% lpcText,
  806. LPCTSTR% lpcTitle,
  807. UINT fuStyle, ...);
  808. ;begin_internal
  809. //====== Random stuff ================================================
  810. // DOC'ed for DOJ Compliance
  811. ;end_internal
  812. SHSTDAPI_(BOOL) IsLFNDrive%(LPCTSTR% pszPath);
  813. ;begin_internal
  814. // INTERNAL: User picture APIs. These functions live in util.cpp
  815. #if _WIN32_IE >= 0x0600
  816. #define SHGUPP_FLAG_BASEPATH 0x00000001
  817. #define SHGUPP_FLAG_DEFAULTPICSPATH 0x00000002
  818. #define SHGUPP_FLAG_CREATE 0x80000000
  819. #define SHGUPP_FLAG_VALID_MASK 0x80000003
  820. #define SHGUPP_FLAG_INVALID_MASK ~SHGUPP_FLAG_VALID_MASK
  821. STDAPI SHGetUserPicturePath%(LPCTSTR% pszUsername, DWORD dwFlags, LPTSTR% pszPath);
  822. #define SHSUPP_FLAG_VALID_MASK 0x00000000
  823. #define SHSUPP_FLAG_INVALID_MASK ~SHSUPP_FLAG_VALID_MASK
  824. STDAPI SHSetUserPicturePath%(LPCTSTR% pszUsername, DWORD dwFlags, LPCTSTR% pszPath);
  825. // INTERNAL: Multiple user and friendly UI APIs. These functions live in util.cpp
  826. STDAPI SHGetUserDisplayName(LPWSTR pszDisplayName, PULONG uLen);
  827. STDAPI_(BOOL) SHIsCurrentThreadInteractive(void);
  828. #endif /* _WIN32_IE >= 0x0600 */
  829. ;end_internal
  830. #if _WIN32_IE >= 0x0600
  831. STDAPI SHEnumerateUnreadMailAccounts%(HKEY hKeyUser, DWORD dwIndex, LPTSTR% pszMailAddress, int cchMailAddress);
  832. STDAPI SHGetUnreadMailCount%(HKEY hKeyUser, LPCTSTR% pszMailAddress, DWORD *pdwCount, FILETIME *pFileTime, LPTSTR% pszShellExecuteCommand, int cchShellExecuteCommand);
  833. STDAPI SHSetUnreadMailCount%(LPCTSTR% pszMailAddress, DWORD dwCount, LPCTSTR% pszShellExecuteCommand);
  834. #endif /* _WIN32_IE >= 0x0600 */
  835. ;begin_internal
  836. #if _WIN32_IE >= 0x0600
  837. // INTERNAL: These functions live in securent.cpp
  838. typedef HRESULT (CALLBACK * PFNPRIVILEGEDFUNCTION) (void *pv);
  839. STDAPI_(BOOL) SHOpenEffectiveToken(HANDLE *phToken);
  840. STDAPI_(BOOL) SHTestTokenPrivilege%(HANDLE hToken, LPCTSTR% pszPrivilegeName);
  841. // DOC'ed for DOJ compliance
  842. ;end_internal
  843. STDAPI_(BOOL) SHTestTokenMembership(HANDLE hToken, ULONG ulRID);
  844. ;begin_internal
  845. STDAPI SHInvokePrivilegedFunction%(LPCTSTR% pszPrivilegeName, PFNPRIVILEGEDFUNCTION pfnPrivilegedFunction, void *pv);
  846. STDAPI_(DWORD) SHGetActiveConsoleSessionId(void);
  847. STDAPI_(DWORD) SHGetUserSessionId(HANDLE hToken);
  848. STDAPI_(BOOL) SHIsCurrentProcessConsoleSession(void);
  849. #endif /* _WIN32_IE >= 0x0600 */
  850. ;end_internal
  851. #if _WIN32_IE >= 0x0600
  852. HRESULT SHGetImageList(int iImageList, REFIID riid, void **ppvObj);
  853. ;begin_internal
  854. //
  855. // *** please keep the SHIL_'s arranged in alternating large/small order, if possible ***
  856. // (see comments in shell32\shapi.cpp, function _GetILIndexGivenPXIcon)
  857. //
  858. ;end_internal
  859. #define SHIL_LARGE 0 // normally 32x32
  860. #define SHIL_SMALL 1 // normally 16x16
  861. #define SHIL_EXTRALARGE 2
  862. #define SHIL_SYSSMALL 3 // like SHIL_SMALL, but tracks system small icon metric correctly
  863. #define SHIL_LAST SHIL_SYSSMALL
  864. ;begin_internal
  865. // API to format and return the computer name/description
  866. #define SGCDNF_NOCACHEDENTRY 0x00000001
  867. #define SGCDNF_DESCRIPTIONONLY 0x00010000
  868. STDAPI SHGetComputerDisplayName%(LPCTSTR% pszMachineName, DWORD dwFlags, LPTSTR% pszDisplay, DWORD cchDisplay);
  869. // Namespaces that used to expose one or two tasks through a Wizard
  870. // need a common heuristic to use to determine when they should expose
  871. // these through a Web View Task or through the legacy way of a Wizard.
  872. // Call this from your enumerator:
  873. // S_FALSE -> wizards should not be enumerated, S_OK -> wizards should be shown
  874. STDAPI SHShouldShowWizards(IUnknown *punksite);
  875. // Netplwiz Disconnect Drive Dialog
  876. STDAPI_(DWORD) SHDisconnectNetDrives(HWND hwndParent);
  877. typedef DWORD (STDMETHODCALLTYPE *PFNSHDISCONNECTNETDRIVES)(IN HWND hwndParent);
  878. ;end_internal
  879. // Function call types for ntshrui folder sharing helpers
  880. typedef HRESULT (STDMETHODCALLTYPE *PFNCANSHAREFOLDERW)(IN LPCWSTR pszPath);
  881. typedef HRESULT (STDMETHODCALLTYPE *PFNSHOWSHAREFOLDERUIW)(IN HWND hwndParent, IN LPCWSTR pszPath);
  882. #endif /* _WIN32_IE >= 0x0600 */
  883. ;begin_both
  884. #ifdef __cplusplus
  885. }
  886. #endif /* __cplusplus */
  887. #if !defined(_WIN64)
  888. #include <poppack.h>
  889. #endif
  890. ;end_both
  891. ;begin_internal
  892. // Function to remove a thumbnail for a file from the thumbnail databse
  893. STDAPI DeleteFileThumbnail(IN LPCWSTR pszFilePath);
  894. ;end_internal
  895. #endif /* _SHELAPIP_ */ ;internal_NT
  896. #endif /* _INC_SHELLAPI */