Differences From Artifact [165235cd7bb780a4]:
- File
src/win32/shellapi.d
- 2011-02-23 12:53:16 - part of checkin [c2b7a98c21] on branch trunk - Initial import (user: kinaba) [annotate]
To Artifact [dbc32f4888561832]:
- File
src/win32/shellapi.d
- 2015-04-21 10:46:55 - part of checkin [4e2933c620] on branch trunk - Rebased to the latest verson dmd 2.067. Not yet verified the outcome. (user: kinaba) [annotate]
1 +/***********************************************************************\
2 +* shellapi.d *
3 +* *
4 +* Windows API header module *
5 +* *
6 +* Translated from MinGW Windows headers *
7 +* by Stewart Gordon *
8 +* *
9 +* Placed into public domain *
10 +\***********************************************************************/
1 11 module win32.shellapi;
2 -
3 -// Translated from Microsoft Platform SDK August 2001 Edition
4 -// by Y.Tomino
12 +pragma(lib, "shell32.lib");
13 +
14 +private import win32.w32api, win32.windef, win32.basetyps;
15 +
16 +enum : UINT {
17 + ABE_LEFT,
18 + ABE_TOP,
19 + ABE_RIGHT,
20 + ABE_BOTTOM // = 3
21 +}
22 +
23 +enum : UINT {
24 + ABS_AUTOHIDE = 1,
25 + ABS_ALWAYSONTOP
26 +}
27 +
28 +const ULONG
29 + SEE_MASK_CLASSNAME = 1,
30 + SEE_MASK_CLASSKEY = 3,
31 + SEE_MASK_IDLIST = 4,
32 + SEE_MASK_INVOKEIDLIST = 12,
33 + SEE_MASK_ICON = 0x000010,
34 + SEE_MASK_HOTKEY = 0x000020,
35 + SEE_MASK_NOCLOSEPROCESS = 0x000040,
36 + SEE_MASK_CONNECTNETDRV = 0x000080,
37 + SEE_MASK_FLAG_DDEWAIT = 0x000100,
38 + SEE_MASK_DOENVSUBST = 0x000200,
39 + SEE_MASK_FLAG_NO_UI = 0x000400,
40 + SEE_MASK_NO_CONSOLE = 0x008000,
41 + SEE_MASK_UNICODE = 0x010000,
42 + SEE_MASK_ASYNCOK = 0x100000,
43 + SEE_MASK_HMONITOR = 0x200000;
44 +
45 +enum : DWORD {
46 + ABM_NEW,
47 + ABM_REMOVE,
48 + ABM_QUERYPOS,
49 + ABM_SETPOS,
50 + ABM_GETSTATE,
51 + ABM_GETTASKBARPOS,
52 + ABM_ACTIVATE,
53 + ABM_GETAUTOHIDEBAR,
54 + ABM_SETAUTOHIDEBAR,
55 + ABM_WINDOWPOSCHANGED // = 9
56 +}
57 +
58 +static if (WINVER >= 0x501) {
59 + const DWORD ABM_SETSTATE = 10;
60 +}
61 +
62 +enum : UINT {
63 + ABN_STATECHANGE,
64 + ABN_POSCHANGED,
65 + ABN_FULLSCREENAPP,
66 + ABN_WINDOWARRANGE
67 +}
68 +
69 +enum : DWORD {
70 + NIM_ADD,
71 + NIM_MODIFY,
72 + NIM_DELETE
73 +}
74 +
75 +static if (_WIN32_IE >= 0x500) {
76 + const NOTIFYICON_VERSION = 3;
77 +
78 + enum : DWORD {
79 + NIM_SETFOCUS = 3,
80 + NIM_SETVERSION
81 + }
82 +}
83 +
84 +const UINT
85 + NIF_MESSAGE = 1,
86 + NIF_ICON = 2,
87 + NIF_TIP = 4,
88 + NIF_STATE = 8;
89 +
90 +static if (_WIN32_IE >= 0x500) {
91 + const UINT NIF_INFO = 0x00000010;
92 +}
93 +
94 +static if (_WIN32_IE >= 0x600) {
95 + const UINT NIF_GUID = 0x00000020;
96 +}
97 +
98 +static if (_WIN32_IE >= 0x500) {
99 + enum : DWORD {
100 + NIIF_NONE,
101 + NIIF_INFO,
102 + NIIF_WARNING,
103 + NIIF_ERROR
104 + }
105 +}
106 +
107 +static if (_WIN32_IE >= 0x600) {
108 + enum : DWORD {
109 + NIIF_ICON_MASK = 15,
110 + NIIF_NOSOUND
111 + }
112 +}
113 +
114 +const DWORD
115 + NIS_HIDDEN = 1,
116 + NIS_SHAREDICON = 2;
117 +
118 +const HINSTANCE
119 + SE_ERR_FNF = cast(HANDLE) 2,
120 + SE_ERR_PNF = cast(HANDLE) 3,
121 + SE_ERR_ACCESSDENIED = cast(HANDLE) 5,
122 + SE_ERR_OOM = cast(HANDLE) 8,
123 + SE_ERR_DLLNOTFOUND = cast(HANDLE) 32,
124 + SE_ERR_SHARE = cast(HANDLE) 26,
125 + SE_ERR_ASSOCINCOMPLETE = cast(HANDLE) 27,
126 + SE_ERR_DDETIMEOUT = cast(HANDLE) 28,
127 + SE_ERR_DDEFAIL = cast(HANDLE) 29,
128 + SE_ERR_DDEBUSY = cast(HANDLE) 30,
129 + SE_ERR_NOASSOC = cast(HANDLE) 31;
130 +
131 +enum : UINT {
132 + FO_MOVE = 1,
133 + FO_COPY,
134 + FO_DELETE,
135 + FO_RENAME
136 +}
137 +
138 +const FILEOP_FLAGS
139 + FOF_MULTIDESTFILES = 0x0001,
140 + FOF_CONFIRMMOUSE = 0x0002,
141 + FOF_SILENT = 0x0004,
142 + FOF_RENAMEONCOLLISION = 0x0008,
143 + FOF_NOCONFIRMATION = 0x0010,
144 + FOF_WANTMAPPINGHANDLE = 0x0020,
145 + FOF_ALLOWUNDO = 0x0040,
146 + FOF_FILESONLY = 0x0080,
147 + FOF_SIMPLEPROGRESS = 0x0100,
148 + FOF_NOCONFIRMMKDIR = 0x0200,
149 + FOF_NOERRORUI = 0x0400,
150 + FOF_NOCOPYSECURITYATTRIBS = 0x0800;
151 +
152 +// these are not documented on the MSDN site
153 +enum {
154 + PO_DELETE = 19,
155 + PO_RENAME = 20,
156 + PO_PORTCHANGE = 32,
157 + PO_REN_PORT = 52
158 +}
159 +
160 +const UINT
161 + SHGFI_LARGEICON = 0x000000,
162 + SHGFI_SMALLICON = 0x000001,
163 + SHGFI_OPENICON = 0x000002,
164 + SHGFI_SHELLICONSIZE = 0x000004,
165 + SHGFI_PIDL = 0x000008,
166 + SHGFI_USEFILEATTRIBUTES = 0x000010,
167 + SHGFI_ICON = 0x000100,
168 + SHGFI_DISPLAYNAME = 0x000200,
169 + SHGFI_TYPENAME = 0x000400,
170 + SHGFI_ATTRIBUTES = 0x000800,
171 + SHGFI_ICONLOCATION = 0x001000,
172 + SHGFI_EXETYPE = 0x002000,
173 + SHGFI_SYSICONINDEX = 0x004000,
174 + SHGFI_LINKOVERLAY = 0x008000,
175 + SHGFI_SELECTED = 0x010000,
176 + SHGFI_ATTR_SPECIFIED = 0x020000;
177 +
178 +const SHERB_NOCONFIRMATION = 1;
179 +const SHERB_NOPROGRESSUI = 2;
180 +const SHERB_NOSOUND = 4;
181 +
182 +alias WORD FILEOP_FLAGS, PRINTEROP_FLAGS;
183 +alias HANDLE HDROP;
184 +
185 +align(2):
186 +
187 +struct APPBARDATA {
188 + DWORD cbSize = APPBARDATA.sizeof;
189 + HWND hWnd;
190 + UINT uCallbackMessage;
191 + UINT uEdge;
192 + RECT rc;
193 + LPARAM lParam;
194 +}
195 +alias APPBARDATA* PAPPBARDATA;
5 196
6 -import win32.windef;
7 -import win32.winbase;
8 -import win32.winuser;
197 +struct NOTIFYICONDATAA {
198 + DWORD cbSize = NOTIFYICONDATAA.sizeof;
199 + HWND hWnd;
200 + UINT uID;
201 + UINT uFlags;
202 + UINT uCallbackMessage;
203 + HICON hIcon;
204 + static if (_WIN32_IE >= 0x500) {
205 + CHAR[128] szTip;
206 + DWORD dwState;
207 + DWORD dwStateMask;
208 + CHAR[256] szInfo;
209 + union {
210 + UINT uTimeout;
211 + UINT uVersion;
212 + }
213 + CHAR[64] szInfoTitle;
214 + DWORD dwInfoFlags;
215 + } else {
216 + CHAR[64] szTip;
217 + }
218 + static if (_WIN32_IE >= 0x600) {
219 + GUID guidItem;
220 + }
221 +}
222 +alias NOTIFYICONDATAA* PNOTIFYICONDATAA;
9 223
10 -// #ifndef _INC_SHELLAPI
11 -// #define _INC_SHELLAPI
224 +struct NOTIFYICONDATAW {
225 + DWORD cbSize = NOTIFYICONDATAW.sizeof;
226 + HWND hWnd;
227 + UINT uID;
228 + UINT uFlags;
229 + UINT uCallbackMessage;
230 + HICON hIcon;
231 + static if (_WIN32_IE >= 0x500) {
232 + WCHAR[128] szTip;
233 + DWORD dwState;
234 + DWORD dwStateMask;
235 + WCHAR[256] szInfo;
236 + union {
237 + UINT uTimeout;
238 + UINT uVersion;
239 + }
240 + WCHAR[64] szInfoTitle;
241 + DWORD dwInfoFlags;
242 + } else {
243 + WCHAR[64] szTip;
244 + }
245 + static if (_WIN32_IE >= 0x600) {
246 + GUID guidItem;
247 + }
248 +}
249 +alias NOTIFYICONDATAW* PNOTIFYICONDATAW;
12 250
13 -// #ifndef WINSHELLAPI
14 -// #if !defined(_SHELL32_)
15 -// #define WINSHELLAPI DECLSPEC_IMPORT
16 -// #else
17 -// #...
18 -// #endif
19 -// #endif // WINSHELLAPI
251 +struct SHELLEXECUTEINFOA {
252 + DWORD cbSize = SHELLEXECUTEINFOA.sizeof;
253 + ULONG fMask;
254 + HWND hwnd;
255 + LPCSTR lpVerb;
256 + LPCSTR lpFile;
257 + LPCSTR lpParameters;
258 + LPCSTR lpDirectory;
259 + int nShow;
260 + HINSTANCE hInstApp;
261 + PVOID lpIDList;
262 + LPCSTR lpClass;
263 + HKEY hkeyClass;
264 + DWORD dwHotKey;
265 + HANDLE hIcon;
266 + HANDLE hProcess;
267 +}
268 +alias SHELLEXECUTEINFOA* LPSHELLEXECUTEINFOA;
20 269
21 -// #ifndef SHSTDAPI
22 -// #if !defined(_SHELL32_)
23 -// #define SHSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
24 -// #define SHSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
25 -// #else
26 -// #...
27 -// #...
28 -// #endif
29 -// #endif // SHSTDAPI
270 +struct SHELLEXECUTEINFOW {
271 + DWORD cbSize = SHELLEXECUTEINFOW.sizeof;
272 + ULONG fMask;
273 + HWND hwnd;
274 + LPCWSTR lpVerb;
275 + LPCWSTR lpFile;
276 + LPCWSTR lpParameters;
277 + LPCWSTR lpDirectory;
278 + int nShow;
279 + HINSTANCE hInstApp;
280 + PVOID lpIDList;
281 + LPCWSTR lpClass;
282 + HKEY hkeyClass;
283 + DWORD dwHotKey;
284 + HANDLE hIcon;
285 + HANDLE hProcess;
286 +}
287 +alias SHELLEXECUTEINFOW* LPSHELLEXECUTEINFOW;
30 288
31 -// #ifndef SHDOCAPI
32 -// #if !defined(_SHDOCVW_)
33 -// #define SHDOCAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
34 -// #define SHDOCAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
35 -// #else
36 -// #...
37 -// #...
38 -// #endif
39 -// #endif // SHDOCAPI
289 +struct SHFILEOPSTRUCTA {
290 + HWND hwnd;
291 + UINT wFunc;
292 + LPCSTR pFrom;
293 + LPCSTR pTo;
294 + FILEOP_FLAGS fFlags;
295 + BOOL fAnyOperationsAborted;
296 + PVOID hNameMappings;
297 + LPCSTR lpszProgressTitle;
298 +}
299 +alias SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA;
40 300
41 -// #if !defined(_WIN64)
42 -align(1):
43 -// #endif
44 -
45 -// #ifdef __cplusplus
46 -// extern "C" { /* Assume C declarations for C++ */
47 -// #endif /* __cplusplus */
48 -
49 -alias void* HDROP;
50 -
51 -extern(Windows) export UINT DragQueryFileA(HDROP,UINT,LPSTR,UINT);
52 -extern(Windows) export UINT DragQueryFileW(HDROP,UINT,LPWSTR,UINT);
53 -// #ifdef UNICODE
54 -alias DragQueryFileW DragQueryFile;
55 -// #else
56 -// #...
57 -// #endif // !UNICODE
58 -extern(Windows) export BOOL DragQueryPoint(HDROP,LPPOINT);
59 -extern(Windows) export void DragFinish(HDROP);
60 -extern(Windows) export void DragAcceptFiles(HWND,BOOL);
61 -
62 -extern(Windows) export HINSTANCE ShellExecuteA(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd);
63 -extern(Windows) export HINSTANCE ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd);
64 -// #ifdef UNICODE
65 -alias ShellExecuteW ShellExecute;
66 -// #else
67 -// #...
68 -// #endif // !UNICODE
69 -extern(Windows) export HINSTANCE FindExecutableA(LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult);
70 -extern(Windows) export HINSTANCE FindExecutableW(LPCWSTR lpFile, LPCWSTR lpDirectory, LPWSTR lpResult);
71 -// #ifdef UNICODE
72 -alias FindExecutableW FindExecutable;
73 -// #else
74 -// #...
75 -// #endif // !UNICODE
76 -extern(Windows) export LPWSTR * CommandLineToArgvW(LPCWSTR lpCmdLine, int*pNumArgs);
301 +struct SHFILEOPSTRUCTW {
302 + HWND hwnd;
303 + UINT wFunc;
304 + LPCWSTR pFrom;
305 + LPCWSTR pTo;
306 + FILEOP_FLAGS fFlags;
307 + BOOL fAnyOperationsAborted;
308 + PVOID hNameMappings;
309 + LPCWSTR lpszProgressTitle;
310 +}
311 +alias SHFILEOPSTRUCTW* LPSHFILEOPSTRUCTW;
77 312
78 -extern(Windows) export INT ShellAboutA(HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON hIcon);
79 -extern(Windows) export INT ShellAboutW(HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON hIcon);
80 -// #ifdef UNICODE
81 -alias ShellAboutW ShellAbout;
82 -// #else
83 -// #...
84 -// #endif // !UNICODE
85 -extern(Windows) export HICON DuplicateIcon(HINSTANCE hInst, HICON hIcon);
86 -extern(Windows) export HICON ExtractAssociatedIconA(HINSTANCE hInst, LPSTR lpIconPath, LPWORD lpiIcon);
87 -extern(Windows) export HICON ExtractAssociatedIconW(HINSTANCE hInst, LPWSTR lpIconPath, LPWORD lpiIcon);
88 -// #ifdef UNICODE
89 -alias ExtractAssociatedIconW ExtractAssociatedIcon;
90 -// #else
91 -// #...
92 -// #endif // !UNICODE
93 -extern(Windows) export HICON ExtractIconA(HINSTANCE hInst, LPCSTR lpszExeFileName, UINT nIconIndex);
94 -extern(Windows) export HICON ExtractIconW(HINSTANCE hInst, LPCWSTR lpszExeFileName, UINT nIconIndex);
95 -// #ifdef UNICODE
96 -alias ExtractIconW ExtractIcon;
97 -// #else
98 -// #...
99 -// #endif // !UNICODE
100 -
101 -// #if(WINVER >= 0x0400)
102 -struct _DRAGINFOA {
103 - UINT uSize;
104 - POINT pt;
105 - BOOL fNC;
106 - LPSTR lpFileList;
107 - DWORD grfKeyState;
313 +struct SHFILEINFOA {
314 + HICON hIcon;
315 + int iIcon;
316 + DWORD dwAttributes;
317 + CHAR[MAX_PATH] szDisplayName;
318 + CHAR[80] szTypeName;
108 319 }
109 -alias _DRAGINFOA DRAGINFOA;
110 -alias _DRAGINFOA* LPDRAGINFOA;
111 -
112 -struct _DRAGINFOW {
113 - UINT uSize;
114 - POINT pt;
115 - BOOL fNC;
116 - LPWSTR lpFileList;
117 - DWORD grfKeyState;
118 -}
119 -alias _DRAGINFOW DRAGINFOW;
120 -alias _DRAGINFOW* LPDRAGINFOW;
121 -
122 -// #ifdef UNICODE
123 -alias DRAGINFOW DRAGINFO;
124 -alias LPDRAGINFOW LPDRAGINFO;
125 -// #else
126 -// ...
127 -// #endif // UNICODE
128 320
129 -enum : uint { ABM_NEW = 0x00000000 }
130 -enum : uint { ABM_REMOVE = 0x00000001 }
131 -enum : uint { ABM_QUERYPOS = 0x00000002 }
132 -enum : uint { ABM_SETPOS = 0x00000003 }
133 -enum : uint { ABM_GETSTATE = 0x00000004 }
134 -enum : uint { ABM_GETTASKBARPOS = 0x00000005 }
135 -enum : uint { ABM_ACTIVATE = 0x00000006 }
136 -enum : uint { ABM_GETAUTOHIDEBAR = 0x00000007 }
137 -enum : uint { ABM_SETAUTOHIDEBAR = 0x00000008 }
138 -
139 -enum : uint { ABM_WINDOWPOSCHANGED = 0x0000009 }
140 -enum : uint { ABM_SETSTATE = 0x0000000a }
141 -
142 -enum : uint { ABN_STATECHANGE = 0x0000000 }
143 -enum : uint { ABN_POSCHANGED = 0x0000001 }
144 -enum : uint { ABN_FULLSCREENAPP = 0x0000002 }
145 -enum : uint { ABN_WINDOWARRANGE = 0x0000003 }
146 -
147 -enum : uint { ABS_AUTOHIDE = 0x0000001 }
148 -enum : uint { ABS_ALWAYSONTOP = 0x0000002 }
149 -
150 -enum : uint { ABE_LEFT = 0 }
151 -enum : uint { ABE_TOP = 1 }
152 -enum : uint { ABE_RIGHT = 2 }
153 -enum : uint { ABE_BOTTOM = 3 }
154 -
155 -struct _AppBarData {
156 - DWORD cbSize;
157 - HWND hWnd;
158 - UINT uCallbackMessage;
159 - UINT uEdge;
160 - RECT rc;
161 - LPARAM lParam;
321 +struct SHFILEINFOW {
322 + HICON hIcon;
323 + int iIcon;
324 + DWORD dwAttributes;
325 + WCHAR[MAX_PATH] szDisplayName;
326 + WCHAR[80] szTypeName;
162 327 }
163 -alias _AppBarData APPBARDATA;
164 -alias _AppBarData* PAPPBARDATA;
165 328
166 -extern(Windows) export UINT_PTR SHAppBarMessage(DWORD dwMessage, PAPPBARDATA pData);
167 -
168 -extern(Windows) export DWORD DoEnvironmentSubstA(LPSTR szString, UINT cchString);
169 -extern(Windows) export DWORD DoEnvironmentSubstW(LPWSTR szString, UINT cchString);
170 -// #ifdef UNICODE
171 -alias DoEnvironmentSubstW DoEnvironmentSubst;
172 -// #else
173 -// #...
174 -// #endif // !UNICODE
175 -
176 -// #define EIRESID(x) (-1 * (int)(x))
177 -extern(Windows) export UINT ExtractIconExA(LPCSTR lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons);
178 -extern(Windows) export UINT ExtractIconExW(LPCWSTR lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons);
179 -// #ifdef UNICODE
180 -alias ExtractIconExW ExtractIconEx;
181 -// #else
182 -// #...
183 -// #endif // !UNICODE
184 -
185 -// #ifndef FO_MOVE //these need to be kept in sync with the ones in shlobj.h
186 -
187 -enum : uint { FO_MOVE = 0x0001 }
188 -enum : uint { FO_COPY = 0x0002 }
189 -enum : uint { FO_DELETE = 0x0003 }
190 -enum : uint { FO_RENAME = 0x0004 }
191 -
192 -enum : uint { FOF_MULTIDESTFILES = 0x0001 }
193 -enum : uint { FOF_CONFIRMMOUSE = 0x0002 }
194 -enum : uint { FOF_SILENT = 0x0004 }
195 -enum : uint { FOF_RENAMEONCOLLISION = 0x0008 }
196 -enum : uint { FOF_NOCONFIRMATION = 0x0010 }
197 -enum : uint { FOF_WANTMAPPINGHANDLE = 0x0020 }
198 -
199 -enum : uint { FOF_ALLOWUNDO = 0x0040 }
200 -enum : uint { FOF_FILESONLY = 0x0080 }
201 -enum : uint { FOF_SIMPLEPROGRESS = 0x0100 }
202 -enum : uint { FOF_NOCONFIRMMKDIR = 0x0200 }
203 -enum : uint { FOF_NOERRORUI = 0x0400 }
204 -enum : uint { FOF_NOCOPYSECURITYATTRIBS = 0x0800 }
205 -enum : uint { FOF_NORECURSION = 0x1000 }
206 -// #if (_WIN32_IE >= 0x0500)
207 -enum : uint { FOF_NO_CONNECTED_ELEMENTS = 0x2000 }
208 -enum : uint { FOF_WANTNUKEWARNING = 0x4000 }
209 -// #endif // (_WIN32_IE >= 0x500)
210 -// #if (_WIN32_WINNT >= 0x0501)
211 -enum : uint { FOF_NORECURSEREPARSE = 0x8000 }
212 -// #endif // (_WIN32_WINNT >= 0x501)
213 -
214 -alias WORD FILEOP_FLAGS;
215 -
216 -enum : uint { PO_DELETE = 0x0013 }
217 -enum : uint { PO_RENAME = 0x0014 }
218 -enum : uint { PO_PORTCHANGE = 0x0020 }
219 -
220 -enum : uint { PO_REN_PORT = 0x0034 }
221 -
222 -alias WORD PRINTEROP_FLAGS;
223 -
224 -// #endif // FO_MOVE
225 -
226 -struct _SHFILEOPSTRUCTA {
227 - HWND hwnd;
228 - UINT wFunc;
229 - LPCSTR pFrom;
230 - LPCSTR pTo;
231 - FILEOP_FLAGS fFlags;
232 - BOOL fAnyOperationsAborted;
233 - LPVOID hNameMappings;
234 - LPCSTR lpszProgressTitle;
235 -}
236 -alias _SHFILEOPSTRUCTA SHFILEOPSTRUCTA;
237 -alias _SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA;
238 -
239 -struct _SHFILEOPSTRUCTW {
240 - HWND hwnd;
241 - UINT wFunc;
242 - LPCWSTR pFrom;
243 - LPCWSTR pTo;
244 - FILEOP_FLAGS fFlags;
245 - BOOL fAnyOperationsAborted;
246 - LPVOID hNameMappings;
247 - LPCWSTR lpszProgressTitle;
329 +struct SHQUERYRBINFO {
330 + DWORD cbSize = SHQUERYRBINFO.sizeof;
331 + long i64Size;
332 + long i64NumItems;
248 333 }
249 -alias _SHFILEOPSTRUCTW SHFILEOPSTRUCTW;
250 -alias _SHFILEOPSTRUCTW* LPSHFILEOPSTRUCTW;
251 -
252 -// #ifdef UNICODE
253 -alias SHFILEOPSTRUCTW SHFILEOPSTRUCT;
254 -alias LPSHFILEOPSTRUCTW LPSHFILEOPSTRUCT;
255 -// #else
256 -// ...
257 -// #endif // UNICODE
334 +alias SHQUERYRBINFO* LPSHQUERYRBINFO;
258 335
259 -extern(Windows) export int SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp);
260 -extern(Windows) export int SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp);
261 -// #ifdef UNICODE
262 -alias SHFileOperationW SHFileOperation;
263 -// #else
264 -// #...
265 -// #endif // !UNICODE
266 -extern(Windows) export void SHFreeNameMappings(HANDLE hNameMappings);
267 -
268 -struct _SHNAMEMAPPINGA {
269 - LPSTR pszOldPath;
270 - LPSTR pszNewPath;
271 - int cchOldPath;
272 - int cchNewPath;
273 -}
274 -alias _SHNAMEMAPPINGA SHNAMEMAPPINGA;
275 -alias _SHNAMEMAPPINGA* LPSHNAMEMAPPINGA;
276 -
277 -struct _SHNAMEMAPPINGW {
278 - LPWSTR pszOldPath;
279 - LPWSTR pszNewPath;
280 - int cchOldPath;
281 - int cchNewPath;
282 -}
283 -alias _SHNAMEMAPPINGW SHNAMEMAPPINGW;
284 -alias _SHNAMEMAPPINGW* LPSHNAMEMAPPINGW;
285 -
286 -// #ifdef UNICODE
287 -alias SHNAMEMAPPINGW SHNAMEMAPPING;
288 -alias LPSHNAMEMAPPINGW LPSHNAMEMAPPING;
289 -// #else
290 -// ...
291 -// #endif // UNICODE
292 -
293 -enum : uint { SE_ERR_FNF = 2 }
294 -enum : uint { SE_ERR_PNF = 3 }
295 -enum : uint { SE_ERR_ACCESSDENIED = 5 }
296 -enum : uint { SE_ERR_OOM = 8 }
297 -enum : uint { SE_ERR_DLLNOTFOUND = 32 }
298 -
299 -// #endif /* WINVER >= 0x0400 */
300 -
301 -enum : uint { SE_ERR_SHARE = 26 }
302 -enum : uint { SE_ERR_ASSOCINCOMPLETE = 27 }
303 -enum : uint { SE_ERR_DDETIMEOUT = 28 }
304 -enum : uint { SE_ERR_DDEFAIL = 29 }
305 -enum : uint { SE_ERR_DDEBUSY = 30 }
306 -enum : uint { SE_ERR_NOASSOC = 31 }
307 -
308 -// #if(WINVER >= 0x0400)
309 -
310 -enum : uint { SEE_MASK_CLASSNAME = 0x00000001 }
311 -enum : uint { SEE_MASK_CLASSKEY = 0x00000003 }
312 -
313 -enum : uint { SEE_MASK_IDLIST = 0x00000004 }
314 -enum : uint { SEE_MASK_INVOKEIDLIST = 0x0000000c }
315 -enum : uint { SEE_MASK_ICON = 0x00000010 }
316 -enum : uint { SEE_MASK_HOTKEY = 0x00000020 }
317 -enum : uint { SEE_MASK_NOCLOSEPROCESS = 0x00000040 }
318 -enum : uint { SEE_MASK_CONNECTNETDRV = 0x00000080 }
319 -enum : uint { SEE_MASK_FLAG_DDEWAIT = 0x00000100 }
320 -enum : uint { SEE_MASK_DOENVSUBST = 0x00000200 }
321 -enum : uint { SEE_MASK_FLAG_NO_UI = 0x00000400 }
322 -enum : uint { SEE_MASK_UNICODE = 0x00004000 }
323 -enum : uint { SEE_MASK_NO_CONSOLE = 0x00008000 }
324 -enum : uint { SEE_MASK_ASYNCOK = 0x00100000 }
325 -enum : uint { SEE_MASK_HMONITOR = 0x00200000 }
326 -// #if (_WIN32_IE >= 0x0500)
327 -enum : uint { SEE_MASK_NOQUERYCLASSSTORE = 0x01000000 }
328 -enum : uint { SEE_MASK_WAITFORINPUTIDLE = 0x02000000 }
329 -// #endif // (_WIN32_IE >= 0x500)
330 -// #if (_WIN32_IE >= 0x0560)
331 -enum : uint { SEE_MASK_FLAG_LOG_USAGE = 0x04000000 }
332 -// #endif // (_WIN32_IE >= 0x560)
333 -
334 -// #ifndef DUMMYUNIONNAME
335 -// #ifdef NONAMELESSUNION
336 -// #...
337 -// #...
338 -// #...
339 -// #...
340 -// #...
341 -// #else
342 -// #define DUMMYUNIONNAME
343 -// #define DUMMYUNIONNAME2
344 -// #define DUMMYUNIONNAME3
345 -// #define DUMMYUNIONNAME4
346 -// #define DUMMYUNIONNAME5
347 -// #endif
348 -// #endif // DUMMYUNIONNAME
349 -
350 -struct _SHELLEXECUTEINFOA {
351 - DWORD cbSize;
352 - ULONG fMask;
353 - HWND hwnd;
354 - LPCSTR lpVerb;
355 - LPCSTR lpFile;
356 - LPCSTR lpParameters;
357 - LPCSTR lpDirectory;
358 - int nShow;
359 - HINSTANCE hInstApp;
360 -
361 - LPVOID lpIDList;
362 - LPCSTR lpClass;
363 - HKEY hkeyClass;
364 - DWORD dwHotKey;
365 -union {
366 - HANDLE hIcon;
367 - HANDLE hMonitor;
336 +extern (Windows) {
337 + LPWSTR* CommandLineToArgvW(LPCWSTR, int*);
338 + void DragAcceptFiles(HWND, BOOL);
339 + void DragFinish(HDROP);
340 + UINT DragQueryFileA(HDROP, UINT, LPSTR, UINT);
341 + UINT DragQueryFileW(HDROP, UINT, LPWSTR, UINT);
342 + BOOL DragQueryPoint(HDROP, LPPOINT);
343 + HICON DuplicateIcon(HINSTANCE, HICON);
344 + HICON ExtractAssociatedIconA(HINSTANCE, LPCSTR, PWORD);
345 + HICON ExtractAssociatedIconW(HINSTANCE, LPCWSTR, PWORD);
346 + HICON ExtractIconA(HINSTANCE, LPCSTR, UINT);
347 + HICON ExtractIconW(HINSTANCE, LPCWSTR, UINT);
348 + UINT ExtractIconExA(LPCSTR, int, HICON*, HICON*, UINT);
349 + UINT ExtractIconExW(LPCWSTR, int, HICON*, HICON*, UINT);
350 + HINSTANCE FindExecutableA(LPCSTR, LPCSTR, LPSTR);
351 + HINSTANCE FindExecutableW(LPCWSTR, LPCWSTR, LPWSTR);
352 + UINT SHAppBarMessage(DWORD, PAPPBARDATA);
353 + BOOL Shell_NotifyIconA(DWORD, PNOTIFYICONDATAA);
354 + BOOL Shell_NotifyIconW(DWORD, PNOTIFYICONDATAW);
355 + int ShellAboutA(HWND, LPCSTR, LPCSTR, HICON);
356 + int ShellAboutW(HWND, LPCWSTR, LPCWSTR, HICON);
357 + HINSTANCE ShellExecuteA(HWND, LPCSTR, LPCSTR, LPCSTR, LPCSTR, INT);
358 + HINSTANCE ShellExecuteW(HWND, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, INT);
359 + BOOL ShellExecuteExA(LPSHELLEXECUTEINFOA);
360 + BOOL ShellExecuteExW(LPSHELLEXECUTEINFOW);
361 + int SHFileOperationA(LPSHFILEOPSTRUCTA);
362 + int SHFileOperationW(LPSHFILEOPSTRUCTW);
363 + void SHFreeNameMappings(HANDLE);
364 + DWORD SHGetFileInfoA(LPCSTR, DWORD, SHFILEINFOA*, UINT, UINT);
365 + DWORD SHGetFileInfoW(LPCWSTR, DWORD, SHFILEINFOW*, UINT, UINT);
366 + HRESULT SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO);
367 + HRESULT SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO);
368 + HRESULT SHEmptyRecycleBinA(HWND, LPCSTR, DWORD);
369 + HRESULT SHEmptyRecycleBinW(HWND, LPCWSTR, DWORD);
368 370 }
369 371
370 - HANDLE hProcess;
371 -}
372 -alias _SHELLEXECUTEINFOA SHELLEXECUTEINFOA;
373 -alias _SHELLEXECUTEINFOA* LPSHELLEXECUTEINFOA;
374 -
375 -struct _SHELLEXECUTEINFOW {
376 - DWORD cbSize;
377 - ULONG fMask;
378 - HWND hwnd;
379 - LPCWSTR lpVerb;
380 - LPCWSTR lpFile;
381 - LPCWSTR lpParameters;
382 - LPCWSTR lpDirectory;
383 - int nShow;
384 - HINSTANCE hInstApp;
385 -
386 - LPVOID lpIDList;
387 - LPCWSTR lpClass;
388 - HKEY hkeyClass;
389 - DWORD dwHotKey;
390 -union {
391 - HANDLE hIcon;
392 - HANDLE hMonitor;
372 +version (Unicode) {
373 + alias NOTIFYICONDATAW NOTIFYICONDATA;
374 + alias SHELLEXECUTEINFOW SHELLEXECUTEINFO;
375 + alias SHFILEOPSTRUCTW SHFILEOPSTRUCT;
376 + alias SHFILEINFOW SHFILEINFO;
377 + alias DragQueryFileW DragQueryFile;
378 + alias ExtractAssociatedIconW ExtractAssociatedIcon;
379 + alias ExtractIconW ExtractIcon;
380 + alias ExtractIconExW ExtractIconEx;
381 + alias FindExecutableW FindExecutable;
382 + alias Shell_NotifyIconW Shell_NotifyIcon;
383 + alias ShellAboutW ShellAbout;
384 + alias ShellExecuteW ShellExecute;
385 + alias ShellExecuteExW ShellExecuteEx;
386 + alias SHFileOperationW SHFileOperation;
387 + alias SHGetFileInfoW SHGetFileInfo;
388 + alias SHQueryRecycleBinW SHQueryRecycleBin;
389 + alias SHEmptyRecycleBinW SHEmptyRecycleBin;
390 +} else {
391 + alias NOTIFYICONDATAA NOTIFYICONDATA;
392 + alias SHELLEXECUTEINFOA SHELLEXECUTEINFO;
393 + alias SHFILEOPSTRUCTA SHFILEOPSTRUCT;
394 + alias SHFILEINFOA SHFILEINFO;
395 + alias DragQueryFileA DragQueryFile;
396 + alias ExtractAssociatedIconA ExtractAssociatedIcon;
397 + alias ExtractIconA ExtractIcon;
398 + alias ExtractIconExA ExtractIconEx;
399 + alias FindExecutableA FindExecutable;
400 + alias Shell_NotifyIconA Shell_NotifyIcon;
401 + alias ShellAboutA ShellAbout;
402 + alias ShellExecuteA ShellExecute;
403 + alias ShellExecuteExA ShellExecuteEx;
404 + alias SHFileOperationA SHFileOperation;
405 + alias SHGetFileInfoA SHGetFileInfo;
406 + alias SHQueryRecycleBinA SHQueryRecycleBin;
407 + alias SHEmptyRecycleBinA SHEmptyRecycleBin;
393 408 }
394 409
395 - HANDLE hProcess;
396 -}
397 -alias _SHELLEXECUTEINFOW SHELLEXECUTEINFOW;
398 -alias _SHELLEXECUTEINFOW* LPSHELLEXECUTEINFOW;
399 -
400 -// #ifdef UNICODE
401 -alias SHELLEXECUTEINFOW SHELLEXECUTEINFO;
402 -alias LPSHELLEXECUTEINFOW LPSHELLEXECUTEINFO;
403 -// #else
404 -// ...
405 -// #endif // UNICODE
406 -
407 -extern(Windows) export BOOL ShellExecuteExA(LPSHELLEXECUTEINFOA lpExecInfo);
408 -extern(Windows) export BOOL ShellExecuteExW(LPSHELLEXECUTEINFOW lpExecInfo);
409 -// #ifdef UNICODE
410 -alias ShellExecuteExW ShellExecuteEx;
411 -// #else
412 -// #...
413 -// #endif // !UNICODE
414 -extern(Windows) export void WinExecErrorA(HWND hwnd, int error, LPCSTR lpstrFileName, LPCSTR lpstrTitle);
415 -extern(Windows) export void WinExecErrorW(HWND hwnd, int error, LPCWSTR lpstrFileName, LPCWSTR lpstrTitle);
416 -// #ifdef UNICODE
417 -alias WinExecErrorW WinExecError;
418 -// #else
419 -// #...
420 -// #endif // !UNICODE
421 -
422 -struct _SHCREATEPROCESSINFOW {
423 - DWORD cbSize;
424 - ULONG fMask;
425 - HWND hwnd;
426 - LPCWSTR pszFile;
427 - LPCWSTR pszParameters;
428 - LPCWSTR pszCurrentDirectory;
429 - HANDLE hUserToken;
430 - LPSECURITY_ATTRIBUTES lpProcessAttributes;
431 - LPSECURITY_ATTRIBUTES lpThreadAttributes;
432 - BOOL bInheritHandles;
433 - DWORD dwCreationFlags;
434 - LPSTARTUPINFOW lpStartupInfo;
435 - LPPROCESS_INFORMATION lpProcessInformation;
436 -}
437 -alias _SHCREATEPROCESSINFOW SHCREATEPROCESSINFOW;
438 -alias _SHCREATEPROCESSINFOW* PSHCREATEPROCESSINFOW;
439 -
440 -extern(Windows) export BOOL SHCreateProcessAsUserW(PSHCREATEPROCESSINFOW pscpi);
441 -
442 -struct _SHQUERYRBINFO {
443 - DWORD cbSize;
444 -// #if !defined(_MAC) || defined(_MAC_INT_64)
445 - __int64 i64Size;
446 - __int64 i64NumItems;
447 -// #else
448 -// ...
449 -// #endif
450 -}
451 -alias _SHQUERYRBINFO SHQUERYRBINFO;
452 -alias _SHQUERYRBINFO* LPSHQUERYRBINFO;
453 -
454 -enum : uint { SHERB_NOCONFIRMATION = 0x00000001 }
455 -enum : uint { SHERB_NOPROGRESSUI = 0x00000002 }
456 -enum : uint { SHERB_NOSOUND = 0x00000004 }
457 -
458 -extern(Windows) export HRESULT SHQueryRecycleBinA(LPCSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo);
459 -extern(Windows) export HRESULT SHQueryRecycleBinW(LPCWSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo);
460 -// #ifdef UNICODE
461 -alias SHQueryRecycleBinW SHQueryRecycleBin;
462 -// #else
463 -// #...
464 -// #endif // !UNICODE
465 -extern(Windows) export HRESULT SHEmptyRecycleBinA(HWND hwnd, LPCSTR pszRootPath, DWORD dwFlags);
466 -extern(Windows) export HRESULT SHEmptyRecycleBinW(HWND hwnd, LPCWSTR pszRootPath, DWORD dwFlags);
467 -// #ifdef UNICODE
468 -alias SHEmptyRecycleBinW SHEmptyRecycleBin;
469 -// #else
470 -// #...
471 -// #endif // !UNICODE
472 -
473 -struct _NOTIFYICONDATAA {
474 - DWORD cbSize;
475 - HWND hWnd;
476 - UINT uID;
477 - UINT uFlags;
478 - UINT uCallbackMessage;
479 - HICON hIcon;
480 -// #if (_WIN32_IE < 0x0500)
481 -// ...
482 -// #else
483 - CHAR szTip[128];
484 -// #endif
485 -// #if (_WIN32_IE >= 0x0500)
486 - DWORD dwState;
487 - DWORD dwStateMask;
488 - CHAR szInfo[256];
489 -union {
490 - UINT uTimeout;
491 - UINT uVersion;
492 -}
493 -
494 - CHAR szInfoTitle[64];
495 - DWORD dwInfoFlags;
496 -// #endif
497 -// #if (_WIN32_IE >= 0x600)
498 - GUID guidItem;
499 -// #endif
500 -}
501 -alias _NOTIFYICONDATAA NOTIFYICONDATAA;
502 -alias _NOTIFYICONDATAA* PNOTIFYICONDATAA;
503 -
504 -struct _NOTIFYICONDATAW {
505 - DWORD cbSize;
506 - HWND hWnd;
507 - UINT uID;
508 - UINT uFlags;
509 - UINT uCallbackMessage;
510 - HICON hIcon;
511 -// #if (_WIN32_IE < 0x0500)
512 -// ...
513 -// #else
514 - WCHAR szTip[128];
515 -// #endif
516 -// #if (_WIN32_IE >= 0x0500)
517 - DWORD dwState;
518 - DWORD dwStateMask;
519 - WCHAR szInfo[256];
520 -union {
521 - UINT uTimeout;
522 - UINT uVersion;
523 -}
524 -
525 - WCHAR szInfoTitle[64];
526 - DWORD dwInfoFlags;
527 -// #endif
528 -// #if (_WIN32_IE >= 0x600)
529 - GUID guidItem;
530 -// #endif
531 -}
532 -alias _NOTIFYICONDATAW NOTIFYICONDATAW;
533 -alias _NOTIFYICONDATAW* PNOTIFYICONDATAW;
534 -
535 -// #ifdef UNICODE
536 -alias NOTIFYICONDATAW NOTIFYICONDATA;
537 -alias PNOTIFYICONDATAW PNOTIFYICONDATA;
538 -// #else
539 -// ...
540 -// #endif // UNICODE
541 -
542 -// #define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAA, szTip[64])
543 -// #define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAW, szTip[64])
544 -// #ifdef UNICODE
545 -// #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAW_V1_SIZE
546 -// #else
547 -// #...
548 -// #endif
549 -
550 -// #define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAA, guidItem)
551 -// #define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAW, guidItem)
552 -// #ifdef UNICODE
553 -// #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAW_V2_SIZE
554 -// #else
555 -// #...
556 -// #endif
557 -
558 -// #if (_WIN32_IE >= 0x0500)
559 -const uint NIN_SELECT = WM_USER + 0;
560 -enum : uint { NINF_KEY = 0x1 }
561 -const uint NIN_KEYSELECT = NIN_SELECT | NINF_KEY;
562 -// #endif
563 -
564 -// #if (_WIN32_IE >= 0x0501)
565 -const uint NIN_BALLOONSHOW = WM_USER + 2;
566 -const uint NIN_BALLOONHIDE = WM_USER + 3;
567 -const uint NIN_BALLOONTIMEOUT = WM_USER + 4;
568 -const uint NIN_BALLOONUSERCLICK = WM_USER + 5;
569 -// #endif
570 -
571 -enum : uint { NIM_ADD = 0x00000000 }
572 -enum : uint { NIM_MODIFY = 0x00000001 }
573 -enum : uint { NIM_DELETE = 0x00000002 }
574 -// #if (_WIN32_IE >= 0x0500)
575 -enum : uint { NIM_SETFOCUS = 0x00000003 }
576 -enum : uint { NIM_SETVERSION = 0x00000004 }
577 -enum : uint { NOTIFYICON_VERSION = 3 }
578 -// #endif
579 -
580 -enum : uint { NIF_MESSAGE = 0x00000001 }
581 -enum : uint { NIF_ICON = 0x00000002 }
582 -enum : uint { NIF_TIP = 0x00000004 }
583 -// #if (_WIN32_IE >= 0x0500)
584 -enum : uint { NIF_STATE = 0x00000008 }
585 -enum : uint { NIF_INFO = 0x00000010 }
586 -// #endif
587 -// #if (_WIN32_IE >= 0x600)
588 -enum : uint { NIF_GUID = 0x00000020 }
589 -// #endif
590 -
591 -// #if (_WIN32_IE >= 0x0500)
592 -enum : uint { NIS_HIDDEN = 0x00000001 }
593 -enum : uint { NIS_SHAREDICON = 0x00000002 }
594 -
595 -enum : uint { NIIF_NONE = 0x00000000 }
596 -
597 -enum : uint { NIIF_INFO = 0x00000001 }
598 -enum : uint { NIIF_WARNING = 0x00000002 }
599 -enum : uint { NIIF_ERROR = 0x00000003 }
600 -enum : uint { NIIF_ICON_MASK = 0x0000000F }
601 -// #if (_WIN32_IE >= 0x0501)
602 -enum : uint { NIIF_NOSOUND = 0x00000010 }
603 -// #endif
604 -// #endif
605 -
606 -extern(Windows) export BOOL Shell_NotifyIconA(DWORD dwMessage, PNOTIFYICONDATAA lpData);
607 -extern(Windows) export BOOL Shell_NotifyIconW(DWORD dwMessage, PNOTIFYICONDATAW lpData);
608 -// #ifdef UNICODE
609 -alias Shell_NotifyIconW Shell_NotifyIcon;
610 -// #else
611 -// #...
612 -// #endif // !UNICODE
613 -
614 -// #ifndef SHFILEINFO_DEFINED
615 -// #define SHFILEINFO_DEFINED
616 -
617 -struct _SHFILEINFOA {
618 - HICON hIcon;
619 - int iIcon;
620 - DWORD dwAttributes;
621 - CHAR szDisplayName[MAX_PATH];
622 - CHAR szTypeName[80];
623 -}
624 -alias _SHFILEINFOA SHFILEINFOA;
625 -
626 -struct _SHFILEINFOW {
627 - HICON hIcon;
628 - int iIcon;
629 - DWORD dwAttributes;
630 - WCHAR szDisplayName[MAX_PATH];
631 - WCHAR szTypeName[80];
632 -}
633 -alias _SHFILEINFOW SHFILEINFOW;
634 -
635 -// #ifdef UNICODE
636 -alias SHFILEINFOW SHFILEINFO;
637 -// #else
638 -// ...
639 -// #endif // UNICODE
640 -
641 -// #endif // !SHFILEINFO_DEFINED
642 -
643 -enum : uint { SHGFI_ICON = 0x000000100 }
644 -enum : uint { SHGFI_DISPLAYNAME = 0x000000200 }
645 -enum : uint { SHGFI_TYPENAME = 0x000000400 }
646 -enum : uint { SHGFI_ATTRIBUTES = 0x000000800 }
647 -enum : uint { SHGFI_ICONLOCATION = 0x000001000 }
648 -enum : uint { SHGFI_EXETYPE = 0x000002000 }
649 -enum : uint { SHGFI_SYSICONINDEX = 0x000004000 }
650 -enum : uint { SHGFI_LINKOVERLAY = 0x000008000 }
651 -enum : uint { SHGFI_SELECTED = 0x000010000 }
652 -enum : uint { SHGFI_ATTR_SPECIFIED = 0x000020000 }
653 -enum : uint { SHGFI_LARGEICON = 0x000000000 }
654 -enum : uint { SHGFI_SMALLICON = 0x000000001 }
655 -enum : uint { SHGFI_OPENICON = 0x000000002 }
656 -enum : uint { SHGFI_SHELLICONSIZE = 0x000000004 }
657 -enum : uint { SHGFI_PIDL = 0x000000008 }
658 -enum : uint { SHGFI_USEFILEATTRIBUTES = 0x000000010 }
659 -
660 -// #if (_WIN32_IE >= 0x0500)
661 -enum : uint { SHGFI_ADDOVERLAYS = 0x000000020 }
662 -enum : uint { SHGFI_OVERLAYINDEX = 0x000000040 }
663 -
664 -// #endif
665 -
666 -extern(Windows) export DWORD_PTR SHGetFileInfoA(LPCSTR pszPath, DWORD dwFileAttributes, SHFILEINFOA *psfi, UINT cbFileInfo, UINT uFlags);
667 -extern(Windows) export DWORD_PTR SHGetFileInfoW(LPCWSTR pszPath, DWORD dwFileAttributes, SHFILEINFOW *psfi, UINT cbFileInfo, UINT uFlags);
668 -// #ifdef UNICODE
669 -alias SHGetFileInfoW SHGetFileInfo;
670 -// #else
671 -// #...
672 -// #endif // !UNICODE
673 -
674 -alias SHGetDiskFreeSpaceEx SHGetDiskFreeSpace;
675 -
676 -extern(Windows) export BOOL SHGetDiskFreeSpaceExA(LPCSTR pszDirectoryName, ULARGE_INTEGER* pulFreeBytesAvailableToCaller, ULARGE_INTEGER* pulTotalNumberOfBytes, ULARGE_INTEGER* pulTotalNumberOfFreeBytes);
677 -extern(Windows) export BOOL SHGetDiskFreeSpaceExW(LPCWSTR pszDirectoryName, ULARGE_INTEGER* pulFreeBytesAvailableToCaller, ULARGE_INTEGER* pulTotalNumberOfBytes, ULARGE_INTEGER* pulTotalNumberOfFreeBytes);
678 -// #ifdef UNICODE
679 -alias SHGetDiskFreeSpaceExW SHGetDiskFreeSpaceEx;
680 -// #else
681 -// #...
682 -// #endif // !UNICODE
683 -extern(Windows) export BOOL SHGetNewLinkInfoA(LPCSTR pszLinkTo, LPCSTR pszDir, LPSTR pszName, BOOL *pfMustCopy, UINT uFlags);
684 -extern(Windows) export BOOL SHGetNewLinkInfoW(LPCWSTR pszLinkTo, LPCWSTR pszDir, LPWSTR pszName, BOOL *pfMustCopy, UINT uFlags);
685 -// #ifdef UNICODE
686 -alias SHGetNewLinkInfoW SHGetNewLinkInfo;
687 -// #else
688 -// #...
689 -// #endif // !UNICODE
690 -
691 -enum : uint { SHGNLI_PIDL = 0x000000001 }
692 -enum : uint { SHGNLI_PREFIXNAME = 0x000000002 }
693 -enum : uint { SHGNLI_NOUNIQUE = 0x000000004 }
694 -// #if (_WIN32_IE >= 0x0501)
695 -enum : uint { SHGNLI_NOLNK = 0x000000008 }
696 -// #endif // _WIN2_IE >= 0x0501
697 -
698 -enum : uint { PRINTACTION_OPEN = 0 }
699 -enum : uint { PRINTACTION_PROPERTIES = 1 }
700 -enum : uint { PRINTACTION_NETINSTALL = 2 }
701 -enum : uint { PRINTACTION_NETINSTALLLINK = 3 }
702 -enum : uint { PRINTACTION_TESTPAGE = 4 }
703 -enum : uint { PRINTACTION_OPENNETPRN = 5 }
704 -// #ifdef WINNT
705 -// #...
706 -// #...
707 -// #endif
708 -
709 -extern(Windows) export BOOL SHInvokePrinterCommandA(HWND hwnd, UINT uAction, LPCSTR lpBuf1, LPCSTR lpBuf2, BOOL fModal);
710 -extern(Windows) export BOOL SHInvokePrinterCommandW(HWND hwnd, UINT uAction, LPCWSTR lpBuf1, LPCWSTR lpBuf2, BOOL fModal);
711 -// #ifdef UNICODE
712 -alias SHInvokePrinterCommandW SHInvokePrinterCommand;
713 -// #else
714 -// #...
715 -// #endif // !UNICODE
716 -
717 -// #endif /* WINVER >= 0x0400 */
718 -
719 -// #if (_WIN32_WINNT >= 0x0500) || (_WIN32_WINDOWS >= 0x0500)
720 -
721 -extern(Windows) export HRESULT SHLoadNonloadedIconOverlayIdentifiers();
722 -
723 -extern(Windows) export HRESULT SHIsFileAvailableOffline(LPCWSTR pwszPath, LPDWORD pdwStatus);
724 -
725 -enum : uint { OFFLINE_STATUS_LOCAL = 0x0001 }
726 -enum : uint { OFFLINE_STATUS_REMOTE = 0x0002 }
727 -enum : uint { OFFLINE_STATUS_INCOMPLETE = 0x0004 }
728 -
729 -// #endif
730 -
731 -extern(Windows) export HRESULT SHSetLocalizedName(LPWSTR pszPath, LPCWSTR pszResModule, int idsRes);
732 -
733 -// #if _WIN32_IE >= 0x0600
734 -
735 -extern(Windows) export HRESULT SHEnumerateUnreadMailAccountsA(HKEY hKeyUser, DWORD dwIndex, LPSTR pszMailAddress, int cchMailAddress);
736 -extern(Windows) export HRESULT SHEnumerateUnreadMailAccountsW(HKEY hKeyUser, DWORD dwIndex, LPWSTR pszMailAddress, int cchMailAddress);
737 -// #ifdef UNICODE
738 -alias SHEnumerateUnreadMailAccountsW SHEnumerateUnreadMailAccounts;
739 -// #else
740 -// #...
741 -// #endif // !UNICODE
742 -extern(Windows) export HRESULT SHGetUnreadMailCountA(HKEY hKeyUser, LPCSTR pszMailAddress, DWORD *pdwCount, FILETIME *pFileTime, LPSTR pszShellExecuteCommand, int cchShellExecuteCommand);
743 -extern(Windows) export HRESULT SHGetUnreadMailCountW(HKEY hKeyUser, LPCWSTR pszMailAddress, DWORD *pdwCount, FILETIME *pFileTime, LPWSTR pszShellExecuteCommand, int cchShellExecuteCommand);
744 -// #ifdef UNICODE
745 -alias SHGetUnreadMailCountW SHGetUnreadMailCount;
746 -// #else
747 -// #...
748 -// #endif // !UNICODE
749 -extern(Windows) export HRESULT SHSetUnreadMailCountA(LPCSTR pszMailAddress, DWORD dwCount, LPCSTR pszShellExecuteCommand);
750 -extern(Windows) export HRESULT SHSetUnreadMailCountW(LPCWSTR pszMailAddress, DWORD dwCount, LPCWSTR pszShellExecuteCommand);
751 -// #ifdef UNICODE
752 -alias SHSetUnreadMailCountW SHSetUnreadMailCount;
753 -// #else
754 -// #...
755 -// #endif // !UNICODE
756 -
757 -// #endif /* _WIN32_IE >= 0x0600 */
758 -
759 -// #if _WIN32_IE >= 0x0600
760 -
761 -extern(Windows) export HRESULT SHGetImageList(int iImageList, REFIID riid, void **ppvObj);
762 -
763 -enum : uint { SHIL_LARGE = 0 }
764 -enum : uint { SHIL_SMALL = 1 }
765 -enum : uint { SHIL_EXTRALARGE = 2 }
766 -enum : uint { SHIL_SYSSMALL = 3 }
767 -
768 -alias SHIL_SYSSMALL SHIL_LAST;
769 -
770 -extern(Windows) alias HRESULT function( LPCWSTR pszPath) PFNCANSHAREFOLDERW;
771 -extern(Windows) alias HRESULT function( HWND hwndParent, LPCWSTR pszPath) PFNSHOWSHAREFOLDERUIW;
772 -
773 -// #endif /* _WIN32_IE >= 0x0600 */
774 -
775 -// #ifdef __cplusplus
776 -// }
777 -// #endif /* __cplusplus */
778 -
779 -// #if !defined(_WIN64)
780 -align:
781 -// #endif
782 -
783 -// #endif /* _INC_SHELLAPI */
784 -
410 +alias NOTIFYICONDATA* PNOTIFYICONDATA;
411 +alias SHELLEXECUTEINFO* LPSHELLEXECUTEINFO;
412 +alias SHFILEOPSTRUCT* LPSHFILEOPSTRUCT;