Mercurial > projects > ddbg_continued
comparison win32/shlobj.d @ 1:4a9dcbd9e54f
-files of 0.13 beta
-fixes so that it now compiles with the current dmd version
author | marton@basel.hu |
---|---|
date | Tue, 05 Apr 2011 20:44:01 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:586e4a649642 | 1:4a9dcbd9e54f |
---|---|
1 /***********************************************************************\ | |
2 * shlobj.d * | |
3 * * | |
4 * Windows API header module * | |
5 * * | |
6 * Translated from MinGW Windows headers * | |
7 * * | |
8 * Placed into public domain * | |
9 \***********************************************************************/ | |
10 module win32.shlobj; | |
11 pragma(lib, "shell32.lib"); | |
12 | |
13 // TODO: fix bitfields | |
14 // TODO: CMIC_VALID_SEE_FLAGS | |
15 // SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K | |
16 | |
17 import win32.commctrl, win32.ole2, win32.shlguid, win32.shellapi; | |
18 private import win32.prsht, win32.unknwn, win32.w32api, win32.winbase, | |
19 win32.winnt, win32.winuser, win32.wtypes, win32.objfwd, win32.objidl; | |
20 private import win32.winnetwk; // for NETRESOURCE | |
21 | |
22 | |
23 // FIXME: clean up Windows version support | |
24 | |
25 align(1): | |
26 | |
27 const BIF_RETURNONLYFSDIRS = 1; | |
28 const BIF_DONTGOBELOWDOMAIN = 2; | |
29 const BIF_STATUSTEXT = 4; | |
30 const BIF_RETURNFSANCESTORS = 8; | |
31 const BIF_EDITBOX = 16; | |
32 const BIF_VALIDATE = 32; | |
33 const BIF_NEWDIALOGSTYLE = 64; | |
34 const BIF_BROWSEINCLUDEURLS = 128; | |
35 const BIF_USENEWUI = BIF_EDITBOX | BIF_NEWDIALOGSTYLE; | |
36 const BIF_BROWSEFORCOMPUTER = 0x1000; | |
37 const BIF_BROWSEFORPRINTER = 0x2000; | |
38 const BIF_BROWSEINCLUDEFILES = 0x4000; | |
39 const BIF_SHAREABLE = 0x8000; | |
40 const BFFM_INITIALIZED = 1; | |
41 const BFFM_SELCHANGED = 2; | |
42 const BFFM_VALIDATEFAILEDA = 3; | |
43 const BFFM_VALIDATEFAILEDW = 4; | |
44 const BFFM_SETSTATUSTEXTA = WM_USER + 100; | |
45 const BFFM_ENABLEOK = WM_USER + 101; | |
46 const BFFM_SETSELECTIONA = WM_USER + 102; | |
47 const BFFM_SETSELECTIONW = WM_USER + 103; | |
48 const BFFM_SETSTATUSTEXTW = WM_USER + 104; | |
49 const BFFM_SETOKTEXT = WM_USER + 105; | |
50 const BFFM_SETEXPANDED = WM_USER + 106; | |
51 | |
52 version(Unicode) { | |
53 alias BFFM_SETSTATUSTEXTW BFFM_SETSTATUSTEXT; | |
54 alias BFFM_SETSELECTIONW BFFM_SETSELECTION; | |
55 alias BFFM_VALIDATEFAILEDW BFFM_VALIDATEFAILED; | |
56 } else { | |
57 alias BFFM_SETSTATUSTEXTA BFFM_SETSTATUSTEXT; | |
58 alias BFFM_SETSELECTIONA BFFM_SETSELECTION; | |
59 alias BFFM_VALIDATEFAILEDA BFFM_VALIDATEFAILED; | |
60 } | |
61 | |
62 const DVASPECT_SHORTNAME = 2; | |
63 | |
64 const SHARD_PIDL = 1; | |
65 const SHARD_PATH = 2; | |
66 | |
67 const SHCNE_RENAMEITEM = 1; | |
68 const SHCNE_CREATE = 2; | |
69 const SHCNE_DELETE = 4; | |
70 const SHCNE_MKDIR = 8; | |
71 const SHCNE_RMDIR = 16; | |
72 const SHCNE_MEDIAINSERTED = 32; | |
73 const SHCNE_MEDIAREMOVED = 64; | |
74 const SHCNE_DRIVEREMOVED = 128; | |
75 const SHCNE_DRIVEADD = 256; | |
76 const SHCNE_NETSHARE = 512; | |
77 const SHCNE_NETUNSHARE = 1024; | |
78 const SHCNE_ATTRIBUTES = 2048; | |
79 const SHCNE_UPDATEDIR = 4096; | |
80 const SHCNE_UPDATEITEM = 8192; | |
81 const SHCNE_SERVERDISCONNECT = 16384; | |
82 const SHCNE_UPDATEIMAGE = 32768; | |
83 const SHCNE_DRIVEADDGUI = 65536; | |
84 const SHCNE_RENAMEFOLDER = 0x20000; | |
85 const SHCNE_FREESPACE = 0x40000; | |
86 const SHCNE_ASSOCCHANGED = 0x8000000; | |
87 const SHCNE_DISKEVENTS = 0x2381F; | |
88 const SHCNE_GLOBALEVENTS = 0xC0581E0; | |
89 const SHCNE_ALLEVENTS = 0x7FFFFFFF; | |
90 const SHCNE_INTERRUPT = 0x80000000; | |
91 | |
92 const SHCNF_IDLIST = 0; | |
93 const SHCNF_PATHA = 1; | |
94 const SHCNF_PRINTERA = 2; | |
95 const SHCNF_DWORD = 3; | |
96 const SHCNF_PATHW = 5; | |
97 const SHCNF_PRINTERW = 6; | |
98 const SHCNF_TYPE = 0xFF; | |
99 const SHCNF_FLUSH = 0x1000; | |
100 const SHCNF_FLUSHNOWAIT = 0x2000; | |
101 | |
102 version(Unicode) { | |
103 alias SHCNF_PATHW SHCNF_PATH; | |
104 alias SHCNF_PRINTERW SHCNF_PRINTER; | |
105 } else { | |
106 alias SHCNF_PATHA SHCNF_PATH; | |
107 alias SHCNF_PRINTERA SHCNF_PRINTER; | |
108 } | |
109 | |
110 const SFGAO_CANCOPY = DROPEFFECT.DROPEFFECT_COPY; | |
111 const SFGAO_CANMOVE = DROPEFFECT.DROPEFFECT_MOVE; | |
112 const SFGAO_CANLINK = DROPEFFECT.DROPEFFECT_LINK; | |
113 const SFGAO_CANRENAME = 0x00000010L; | |
114 const SFGAO_CANDELETE = 0x00000020L; | |
115 const SFGAO_HASPROPSHEET = 0x00000040L; | |
116 const SFGAO_DROPTARGET = 0x00000100L; | |
117 const SFGAO_CAPABILITYMASK = 0x00000177L; | |
118 const SFGAO_GHOSTED = 0x00008000L; | |
119 const SFGAO_LINK = 0x00010000L; | |
120 const SFGAO_SHARE = 0x00020000L; | |
121 const SFGAO_READONLY = 0x00040000L; | |
122 const SFGAO_HIDDEN = 0x00080000L; | |
123 const SFGAO_DISPLAYATTRMASK = 0x000F0000L; | |
124 const SFGAO_FILESYSANCESTOR = 0x10000000L; | |
125 const SFGAO_FOLDER = 0x20000000L; | |
126 const SFGAO_FILESYSTEM = 0x40000000L; | |
127 const SFGAO_HASSUBFOLDER = 0x80000000L; | |
128 const SFGAO_CONTENTSMASK = 0x80000000L; | |
129 const SFGAO_VALIDATE = 0x01000000L; | |
130 const SFGAO_REMOVABLE = 0x02000000L; | |
131 const SFGAO_COMPRESSED = 0x04000000L; | |
132 const STRRET_WSTR = 0; | |
133 const STRRET_OFFSET = 1; | |
134 const STRRET_CSTR = 2; | |
135 | |
136 enum { | |
137 SHGDFIL_FINDDATA = 1, | |
138 SHGDFIL_NETRESOURCE, | |
139 SHGDFIL_DESCRIPTIONID | |
140 } | |
141 | |
142 enum { | |
143 SHDID_ROOT_REGITEM = 1, | |
144 SHDID_FS_FILE, | |
145 SHDID_FS_DIRECTORY, | |
146 SHDID_FS_OTHER, | |
147 SHDID_COMPUTER_DRIVE35, | |
148 SHDID_COMPUTER_DRIVE525, | |
149 SHDID_COMPUTER_REMOVABLE, | |
150 SHDID_COMPUTER_FIXED, | |
151 SHDID_COMPUTER_NETDRIVE, | |
152 SHDID_COMPUTER_CDROM, | |
153 SHDID_COMPUTER_RAMDISK, | |
154 SHDID_COMPUTER_OTHER, | |
155 SHDID_NET_DOMAIN, | |
156 SHDID_NET_SERVER, | |
157 SHDID_NET_SHARE, | |
158 SHDID_NET_RESTOFNET, | |
159 SHDID_NET_OTHER | |
160 } | |
161 | |
162 const TCHAR[] REGSTR_PATH_EXPLORER = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"; | |
163 const TCHAR[] REGSTR_PATH_SPECIAL_FOLDERS=REGSTR_PATH_EXPLORER ~ "\\Shell Folders"; | |
164 | |
165 enum { | |
166 CSIDL_DESKTOP = 0, | |
167 CSIDL_INTERNET, | |
168 CSIDL_PROGRAMS, | |
169 CSIDL_CONTROLS, | |
170 CSIDL_PRINTERS, | |
171 CSIDL_PERSONAL, | |
172 CSIDL_FAVORITES, | |
173 CSIDL_STARTUP, | |
174 CSIDL_RECENT, | |
175 CSIDL_SENDTO, | |
176 CSIDL_BITBUCKET, | |
177 CSIDL_STARTMENU, // = 11 | |
178 CSIDL_DESKTOPDIRECTORY = 16, | |
179 CSIDL_DRIVES, | |
180 CSIDL_NETWORK, | |
181 CSIDL_NETHOOD, | |
182 CSIDL_FONTS, | |
183 CSIDL_TEMPLATES, | |
184 CSIDL_COMMON_STARTMENU, | |
185 CSIDL_COMMON_PROGRAMS, | |
186 CSIDL_COMMON_STARTUP, | |
187 CSIDL_COMMON_DESKTOPDIRECTORY, | |
188 CSIDL_APPDATA, | |
189 CSIDL_PRINTHOOD, | |
190 CSIDL_LOCAL_APPDATA, | |
191 CSIDL_ALTSTARTUP, | |
192 CSIDL_COMMON_ALTSTARTUP, | |
193 CSIDL_COMMON_FAVORITES, | |
194 CSIDL_INTERNET_CACHE, | |
195 CSIDL_COOKIES, | |
196 CSIDL_HISTORY, | |
197 CSIDL_COMMON_APPDATA, | |
198 CSIDL_WINDOWS, | |
199 CSIDL_SYSTEM, | |
200 CSIDL_PROGRAM_FILES, | |
201 CSIDL_MYPICTURES, | |
202 CSIDL_PROFILE, | |
203 CSIDL_SYSTEMX86, | |
204 CSIDL_PROGRAM_FILESX86, | |
205 CSIDL_PROGRAM_FILES_COMMON, | |
206 CSIDL_PROGRAM_FILES_COMMONX86, | |
207 CSIDL_COMMON_TEMPLATES, | |
208 CSIDL_COMMON_DOCUMENTS, | |
209 CSIDL_COMMON_ADMINTOOLS, | |
210 CSIDL_ADMINTOOLS, | |
211 CSIDL_CONNECTIONS, // =49 | |
212 CSIDL_COMMON_MUSIC = 53, | |
213 CSIDL_COMMON_PICTURES, | |
214 CSIDL_COMMON_VIDEO, | |
215 CSIDL_RESOURCES, | |
216 CSIDL_RESOURCES_LOCALIZED, | |
217 CSIDL_COMMON_OEM_LINKS, | |
218 CSIDL_CDBURN_AREA, // = 59 | |
219 CSIDL_COMPUTERSNEARME = 61, | |
220 CSIDL_FLAG_DONT_VERIFY = 0x4000, | |
221 CSIDL_FLAG_CREATE = 0x8000, | |
222 CSIDL_FLAG_MASK = 0xFF00 | |
223 } | |
224 | |
225 const TCHAR[] | |
226 CFSTR_SHELLIDLIST = "Shell IDList Array", | |
227 CFSTR_SHELLIDLISTOFFSET = "Shell Object Offsets", | |
228 CFSTR_NETRESOURCES = "Net Resource", | |
229 CFSTR_FILECONTENTS = "FileContents", | |
230 CFSTR_FILENAMEA = "FileName", | |
231 CFSTR_FILENAMEMAPA = "FileNameMap", | |
232 CFSTR_FILEDESCRIPTORA = "FileGroupDescriptor", | |
233 CFSTR_INETURLA = "UniformResourceLocator", | |
234 CFSTR_SHELLURL = CFSTR_INETURLA, | |
235 CFSTR_FILENAMEW = "FileNameW", | |
236 CFSTR_FILENAMEMAPW = "FileNameMapW", | |
237 CFSTR_FILEDESCRIPTORW = "FileGroupDescriptorW", | |
238 CFSTR_INETURLW = "UniformResourceLocatorW"; | |
239 | |
240 version(Unicode) { | |
241 alias CFSTR_FILENAMEW CFSTR_FILENAME; | |
242 alias CFSTR_FILENAMEMAPW CFSTR_FILENAMEMAP; | |
243 alias CFSTR_FILEDESCRIPTORW CFSTR_FILEDESCRIPTOR; | |
244 alias CFSTR_INETURLW CFSTR_INETURL; | |
245 } else { | |
246 alias CFSTR_FILENAMEA CFSTR_FILENAME; | |
247 alias CFSTR_FILENAMEMAPA CFSTR_FILENAMEMAP; | |
248 alias CFSTR_FILEDESCRIPTORA CFSTR_FILEDESCRIPTOR; | |
249 alias CFSTR_INETURLA CFSTR_INETURL; | |
250 } | |
251 const TCHAR[] | |
252 CFSTR_PRINTERGROUP = "PrinterFriendlyName", | |
253 CFSTR_INDRAGLOOP = "InShellDragLoop", | |
254 CFSTR_PASTESUCCEEDED = "Paste Succeeded", | |
255 CFSTR_PERFORMEDDROPEFFECT = "Performed DropEffect", | |
256 CFSTR_PREFERREDDROPEFFECT = "Preferred DropEffect"; | |
257 | |
258 const CMF_NORMAL=0; | |
259 const CMF_DEFAULTONLY=1; | |
260 const CMF_VERBSONLY=2; | |
261 const CMF_EXPLORE=4; | |
262 const CMF_NOVERBS=8; | |
263 const CMF_CANRENAME=16; | |
264 const CMF_NODEFAULT=32; | |
265 const CMF_INCLUDESTATIC=64; | |
266 const CMF_RESERVED=0xffff0000; | |
267 const GCS_VERBA=0; | |
268 const GCS_HELPTEXTA=1; | |
269 const GCS_VALIDATEA=2; | |
270 const GCS_VERBW=4; | |
271 const GCS_HELPTEXTW=5; | |
272 const GCS_VALIDATEW=6; | |
273 const GCS_UNICODE=4; | |
274 | |
275 version(Unicode) { | |
276 alias GCS_VERBW GCS_VERB; | |
277 alias GCS_HELPTEXTW GCS_HELPTEXT; | |
278 alias GCS_VALIDATEW GCS_VALIDATE; | |
279 } else { | |
280 alias GCS_VERBA GCS_VERB; | |
281 alias GCS_HELPTEXTA GCS_HELPTEXT; | |
282 alias GCS_VALIDATEA GCS_VALIDATE; | |
283 } | |
284 | |
285 const TCHAR[] | |
286 CMDSTR_NEWFOLDER = "NewFolder", | |
287 CMDSTR_VIEWLIST = "ViewList", | |
288 CMDSTR_VIEWDETAILS = "ViewDetails"; | |
289 | |
290 const CMIC_MASK_HOTKEY = SEE_MASK_HOTKEY; | |
291 const CMIC_MASK_ICON = SEE_MASK_ICON; | |
292 const CMIC_MASK_FLAG_NO_UI = SEE_MASK_FLAG_NO_UI; | |
293 const CMIC_MASK_MODAL = 0x80000000; | |
294 // TODO: This isn't defined anywhere in MinGW. | |
295 //const CMIC_VALID_SEE_FLAGS=SEE_VALID_CMIC_FLAGS; | |
296 | |
297 const GIL_OPENICON = 1; | |
298 const GIL_FORSHELL = 2; | |
299 const GIL_SIMULATEDOC = 1; | |
300 const GIL_PERINSTANCE = 2; | |
301 const GIL_PERCLASS = 4; | |
302 const GIL_NOTFILENAME = 8; | |
303 const GIL_DONTCACHE = 16; | |
304 | |
305 const FVSIF_RECT = 1; | |
306 const FVSIF_PINNED = 2; | |
307 const FVSIF_NEWFAILED = 0x8000000; | |
308 const FVSIF_NEWFILE = 0x80000000; | |
309 const FVSIF_CANVIEWIT = 0x40000000; | |
310 | |
311 const CDBOSC_SETFOCUS = 0; | |
312 const CDBOSC_KILLFOCUS = 1; | |
313 const CDBOSC_SELCHANGE = 2; | |
314 const CDBOSC_RENAME = 3; | |
315 | |
316 const FCIDM_SHVIEWFIRST = 0; | |
317 const FCIDM_SHVIEWLAST = 0x7fff; | |
318 const FCIDM_BROWSERFIRST = 0xa000; | |
319 const FCIDM_BROWSERLAST = 0xbf00; | |
320 const FCIDM_GLOBALFIRST = 0x8000; | |
321 const FCIDM_GLOBALLAST = 0x9fff; | |
322 const FCIDM_MENU_FILE = FCIDM_GLOBALFIRST; | |
323 const FCIDM_MENU_EDIT = FCIDM_GLOBALFIRST+0x0040; | |
324 const FCIDM_MENU_VIEW = FCIDM_GLOBALFIRST+0x0080; | |
325 const FCIDM_MENU_VIEW_SEP_OPTIONS = FCIDM_GLOBALFIRST+0x0081; | |
326 const FCIDM_MENU_TOOLS = FCIDM_GLOBALFIRST+0x00c0; | |
327 const FCIDM_MENU_TOOLS_SEP_GOTO = FCIDM_GLOBALFIRST+0x00c1; | |
328 const FCIDM_MENU_HELP = FCIDM_GLOBALFIRST+0x0100; | |
329 const FCIDM_MENU_FIND = FCIDM_GLOBALFIRST+0x0140; | |
330 const FCIDM_MENU_EXPLORE = FCIDM_GLOBALFIRST+0x0150; | |
331 const FCIDM_MENU_FAVORITES = FCIDM_GLOBALFIRST+0x0170; | |
332 const FCIDM_TOOLBAR = FCIDM_BROWSERFIRST; | |
333 const FCIDM_STATUS = FCIDM_BROWSERFIRST+1; | |
334 | |
335 const SBSP_DEFBROWSER = 0; | |
336 const SBSP_SAMEBROWSER = 1; | |
337 const SBSP_NEWBROWSER = 2; | |
338 const SBSP_DEFMODE = 0; | |
339 const SBSP_OPENMODE = 16; | |
340 const SBSP_EXPLOREMODE = 32; | |
341 const SBSP_ABSOLUTE = 0; | |
342 const SBSP_RELATIVE = 0x1000; | |
343 const SBSP_PARENT = 0x2000; | |
344 const SBSP_INITIATEDBYHLINKFRAME = 0x80000000; | |
345 const SBSP_REDIRECT = 0x40000000; | |
346 | |
347 enum { | |
348 FCW_STATUS=1, | |
349 FCW_TOOLBAR, | |
350 FCW_TREE | |
351 } | |
352 | |
353 const FCT_MERGE=1; | |
354 const FCT_CONFIGABLE=2; | |
355 const FCT_ADDTOEND=4; | |
356 | |
357 const SVSI_DESELECT=0; | |
358 const SVSI_SELECT=1; | |
359 const SVSI_EDIT=3; | |
360 const SVSI_DESELECTOTHERS=4; | |
361 const SVSI_ENSUREVISIBLE=8; | |
362 const SVSI_FOCUSED=16; | |
363 | |
364 const SVGIO_BACKGROUND=0; | |
365 const SVGIO_SELECTION=1; | |
366 const SVGIO_ALLVIEW=2; | |
367 | |
368 const UINT SV2GV_CURRENTVIEW=-1; | |
369 const UINT SV2GV_DEFAULTVIEW=-2; | |
370 | |
371 alias ULONG SFGAOF; | |
372 alias DWORD SHGDNF; | |
373 | |
374 struct CIDA { | |
375 UINT cidl; | |
376 UINT[1] aoffset; | |
377 } | |
378 alias CIDA* LPIDA; | |
379 | |
380 struct SHITEMID { | |
381 USHORT cb; | |
382 BYTE[1] abID; | |
383 } | |
384 alias SHITEMID* LPSHITEMID, LPCSHITEMID; | |
385 | |
386 struct ITEMIDLIST { | |
387 SHITEMID mkid; | |
388 } | |
389 alias ITEMIDLIST* LPITEMIDLIST, LPCITEMIDLIST; | |
390 | |
391 alias int function(HWND,UINT,LPARAM,LPARAM) BFFCALLBACK; | |
392 | |
393 struct BROWSEINFOA { | |
394 HWND hwndOwner; | |
395 LPCITEMIDLIST pidlRoot; | |
396 LPSTR pszDisplayName; | |
397 LPCSTR lpszTitle; | |
398 UINT ulFlags; | |
399 BFFCALLBACK lpfn; | |
400 LPARAM lParam; | |
401 int iImage; | |
402 } | |
403 alias BROWSEINFOA* PBROWSEINFOA, LPBROWSEINFOA; | |
404 | |
405 struct BROWSEINFOW { | |
406 HWND hwndOwner; | |
407 LPCITEMIDLIST pidlRoot; | |
408 LPWSTR pszDisplayName; | |
409 LPCWSTR lpszTitle; | |
410 UINT ulFlags; | |
411 BFFCALLBACK lpfn; | |
412 LPARAM lParam; | |
413 int iImage; | |
414 } | |
415 alias BROWSEINFOW* PBROWSEINFOW, LPBROWSEINFOW; | |
416 | |
417 struct CMINVOKECOMMANDINFO { | |
418 DWORD cbSize = this.sizeof; | |
419 DWORD fMask; | |
420 HWND hwnd; | |
421 LPCSTR lpVerb; | |
422 LPCSTR lpParameters; | |
423 LPCSTR lpDirectory; | |
424 int nShow; | |
425 DWORD dwHotKey; | |
426 HANDLE hIcon; | |
427 } | |
428 alias CMINVOKECOMMANDINFO* LPCMINVOKECOMMANDINFO; | |
429 | |
430 struct DROPFILES { | |
431 DWORD pFiles; | |
432 POINT pt; | |
433 BOOL fNC; | |
434 BOOL fWide; | |
435 } | |
436 alias DROPFILES* LPDROPFILES; | |
437 | |
438 enum SHGNO { | |
439 SHGDN_NORMAL = 0, | |
440 SHGDN_INFOLDER, | |
441 SHGDN_FOREDITING = 0x1000, | |
442 SHGDN_INCLUDE_NONFILESYS = 0x2000, | |
443 SHGDN_FORADDRESSBAR = 0x4000, | |
444 SHGDN_FORPARSING = 0x8000 | |
445 } | |
446 | |
447 enum SHCONTF { | |
448 SHCONTF_FOLDERS = 32, | |
449 SHCONTF_NONFOLDERS = 64, | |
450 SHCONTF_INCLUDEHIDDEN = 128, | |
451 SHCONTF_INIT_ON_FIRST_NEXT = 256, | |
452 SHCONTF_NETPRINTERSRCH = 512, | |
453 SHCONTF_SHAREABLE = 1024, | |
454 SHCONTF_STORAGE = 2048 | |
455 } | |
456 | |
457 struct STRRET { | |
458 UINT uType; | |
459 union { | |
460 LPWSTR pOleStr; | |
461 UINT uOffset; | |
462 char cStr[MAX_PATH]; | |
463 } | |
464 } | |
465 alias STRRET* LPSTRRET; | |
466 | |
467 enum FD_FLAGS { | |
468 FD_CLSID = 1, | |
469 FD_SIZEPOINT = 2, | |
470 FD_ATTRIBUTES = 4, | |
471 FD_CREATETIME = 8, | |
472 FD_ACCESSTIME = 16, | |
473 FD_WRITESTIME = 32, | |
474 FD_FILESIZE = 64, | |
475 FD_LINKUI = 0x8000 | |
476 } | |
477 | |
478 struct FILEDESCRIPTORA { | |
479 DWORD dwFlags; | |
480 CLSID clsid; | |
481 SIZEL sizel; | |
482 POINTL pointl; | |
483 DWORD dwFileAttributes; | |
484 FILETIME ftCreationTime; | |
485 FILETIME ftLastAccessTime; | |
486 FILETIME ftLastWriteTime; | |
487 DWORD nFileSizeHigh; | |
488 DWORD nFileSizeLow; | |
489 CHAR cFileName[MAX_PATH]; | |
490 } | |
491 alias FILEDESCRIPTORA* LPFILEDESCRIPTORA; | |
492 | |
493 struct FILEDESCRIPTORW { | |
494 DWORD dwFlags; | |
495 CLSID clsid; | |
496 SIZEL sizel; | |
497 POINTL pointl; | |
498 DWORD dwFileAttributes; | |
499 FILETIME ftCreationTime; | |
500 FILETIME ftLastAccessTime; | |
501 FILETIME ftLastWriteTime; | |
502 DWORD nFileSizeHigh; | |
503 DWORD nFileSizeLow; | |
504 WCHAR cFileName[MAX_PATH]; | |
505 } | |
506 alias FILEDESCRIPTORW* LPFILEDESCRIPTORW; | |
507 | |
508 struct FILEGROUPDESCRIPTORA { | |
509 UINT cItems; | |
510 FILEDESCRIPTORA fgd[1]; | |
511 } | |
512 alias FILEGROUPDESCRIPTORA* LPFILEGROUPDESCRIPTORA; | |
513 | |
514 struct FILEGROUPDESCRIPTORW { | |
515 UINT cItems; | |
516 FILEDESCRIPTORW fgd[1]; | |
517 } | |
518 alias FILEGROUPDESCRIPTORW* LPFILEGROUPDESCRIPTORW; | |
519 | |
520 enum SLR_FLAGS { | |
521 SLR_NO_UI = 1, | |
522 SLR_ANY_MATCH = 2, | |
523 SLR_UPDATE = 4, | |
524 SLR_NOUPDATE = 8, | |
525 SLR_NOSEARCH = 16, | |
526 SLR_NOTRACK = 32, | |
527 SLR_NOLINKINFO = 64, | |
528 SLR_INVOKE_MSI = 128 | |
529 } | |
530 | |
531 enum SLGP_FLAGS { | |
532 SLGP_SHORTPATH=1, | |
533 SLGP_UNCPRIORITY=2, | |
534 SLGP_RAWPATH=4 | |
535 } | |
536 | |
537 alias PBYTE LPVIEWSETTINGS; | |
538 | |
539 enum FOLDERFLAGS { | |
540 FWF_AUTOARRANGE = 1, | |
541 FWF_ABBREVIATEDNAMES = 2, | |
542 FWF_SNAPTOGRID = 4, | |
543 FWF_OWNERDATA = 8, | |
544 FWF_BESTFITWINDOW = 16, | |
545 FWF_DESKTOP = 32, | |
546 FWF_SINGLESEL = 64, | |
547 FWF_NOSUBFOLDERS = 128, | |
548 FWF_TRANSPARENT = 256, | |
549 FWF_NOCLIENTEDGE = 512, | |
550 FWF_NOSCROLL = 0x400, | |
551 FWF_ALIGNLEFT = 0x800, | |
552 FWF_SINGLECLICKACTIVATE = 0x8000 | |
553 } | |
554 | |
555 enum FOLDERVIEWMODE { | |
556 FVM_ICON = 1, | |
557 FVM_SMALLICON, | |
558 FVM_LIST, | |
559 FVM_DETAILS | |
560 } | |
561 | |
562 struct FOLDERSETTINGS { | |
563 UINT ViewMode; | |
564 UINT fFlags; | |
565 } | |
566 alias FOLDERSETTINGS* LPFOLDERSETTINGS, LPCFOLDERSETTINGS; | |
567 | |
568 struct FVSHOWINFO { | |
569 DWORD cbSize = this.sizeof; | |
570 HWND hwndOwner; | |
571 int iShow; | |
572 DWORD dwFlags; | |
573 RECT rect; | |
574 LPUNKNOWN punkRel; | |
575 OLECHAR strNewFile[MAX_PATH]; | |
576 } | |
577 alias FVSHOWINFO* LPFVSHOWINFO; | |
578 | |
579 struct NRESARRAY { | |
580 UINT cItems; | |
581 NETRESOURCE nr[1]; | |
582 } | |
583 alias NRESARRAY* LPNRESARRAY; | |
584 | |
585 enum { | |
586 SBSC_HIDE, | |
587 SBSC_SHOW, | |
588 SBSC_TOGGLE, | |
589 SBSC_QUERY | |
590 } | |
591 | |
592 enum { | |
593 SBCMDID_ENABLESHOWTREE, | |
594 SBCMDID_SHOWCONTROL, | |
595 SBCMDID_CANCELNAVIGATION, | |
596 SBCMDID_MAYSAVECHANGES, | |
597 SBCMDID_SETHLINKFRAME, | |
598 SBCMDID_ENABLESTOP, | |
599 SBCMDID_OPTIONS | |
600 } | |
601 enum SVUIA_STATUS { | |
602 SVUIA_DEACTIVATE, | |
603 SVUIA_ACTIVATE_NOFOCUS, | |
604 SVUIA_ACTIVATE_FOCUS, | |
605 SVUIA_INPLACEACTIVATE | |
606 } | |
607 | |
608 static if (_WIN32_IE >= 0x0500) { | |
609 | |
610 struct EXTRASEARCH | |
611 { | |
612 GUID guidSearch; | |
613 WCHAR wszFriendlyName[80]; | |
614 WCHAR wszUrl[2084]; | |
615 } | |
616 alias EXTRASEARCH* LPEXTRASEARCH; | |
617 | |
618 alias DWORD SHCOLSTATEF; | |
619 | |
620 struct SHCOLUMNID { | |
621 GUID fmtid; | |
622 DWORD pid; | |
623 } | |
624 alias SHCOLUMNID* LPSHCOLUMNID, LPCSHCOLUMNID; | |
625 | |
626 struct SHELLDETAILS { | |
627 int fmt; | |
628 int cxChar; | |
629 STRRET str; | |
630 } | |
631 alias SHELLDETAILS* LPSHELLDETAILS; | |
632 | |
633 struct PERSIST_FOLDER_TARGET_INFO | |
634 { | |
635 LPITEMIDLIST pidlTargetFolder; | |
636 WCHAR szTargetParsingName[MAX_PATH]; | |
637 WCHAR szNetworkProvider[MAX_PATH]; | |
638 DWORD dwAttributes; | |
639 int csidl; | |
640 } | |
641 | |
642 enum SHGFP_TYPE { | |
643 SHGFP_TYPE_CURRENT = 0, | |
644 SHGFP_TYPE_DEFAULT = 1, | |
645 } | |
646 | |
647 } | |
648 | |
649 interface IEnumIDList: public IUnknown | |
650 { | |
651 HRESULT QueryInterface(REFIID,PVOID*); | |
652 ULONG AddRef(); | |
653 ULONG Release(); | |
654 HRESULT Next(ULONG,LPITEMIDLIST*,ULONG*); | |
655 HRESULT Skip(ULONG); | |
656 HRESULT Reset(); | |
657 HRESULT Clone(IEnumIDList**); | |
658 } | |
659 alias IEnumIDList *LPENUMIDLIST; | |
660 | |
661 interface IObjMgr : public IUnknown | |
662 { | |
663 HRESULT QueryInterface(REFIID,PVOID*); | |
664 ULONG AddRef(); | |
665 ULONG Release(); | |
666 HRESULT Append(IUnknown*); | |
667 HRESULT Remove(IUnknown*); | |
668 } | |
669 | |
670 interface IContextMenu : public IUnknown | |
671 { | |
672 HRESULT QueryInterface(REFIID,PVOID*); | |
673 ULONG AddRef(); | |
674 ULONG Release(); | |
675 HRESULT QueryContextMenu(HMENU,UINT,UINT,UINT,UINT); | |
676 HRESULT InvokeCommand(LPCMINVOKECOMMANDINFO); | |
677 HRESULT GetCommandString(UINT,UINT,PUINT,LPSTR,UINT); | |
678 } | |
679 alias IContextMenu* LPCONTEXTMENU; | |
680 | |
681 interface IContextMenu2 : public IContextMenu | |
682 { | |
683 HRESULT QueryInterface(REFIID,PVOID*); | |
684 ULONG AddRef(); | |
685 ULONG Release(); | |
686 HRESULT QueryContextMenu(HMENU,UINT,UINT,UINT,UINT); | |
687 HRESULT InvokeCommand(LPCMINVOKECOMMANDINFO); | |
688 HRESULT GetCommandString(UINT,UINT,PUINT,LPSTR,UINT); | |
689 HRESULT HandleMenuMsg(UINT,WPARAM,LPARAM); | |
690 }; | |
691 alias IContextMenu2* LPCONTEXTMENU2; | |
692 | |
693 static if (_WIN32_IE >= 0x0500) { | |
694 | |
695 align(8): | |
696 struct SHCOLUMNINIT { | |
697 ULONG dwFlags; | |
698 ULONG dwReserved; | |
699 WCHAR wszFolder[MAX_PATH]; | |
700 } | |
701 alias SHCOLUMNINIT* LPSHCOLUMNINIT, LPCSHCOLUMNINIT; | |
702 | |
703 struct SHCOLUMNDATA { | |
704 ULONG dwFlags; | |
705 DWORD dwFileAttributes; | |
706 ULONG dwReserved; | |
707 WCHAR *pwszExt; | |
708 WCHAR wszFile[MAX_PATH]; | |
709 } | |
710 alias SHCOLUMNDATA* LPSHCOLUMNDATA, LPCSHCOLUMNDATA; | |
711 align: | |
712 | |
713 const MAX_COLUMN_NAME_LEN = 80; | |
714 const MAX_COLUMN_DESC_LEN = 128; | |
715 | |
716 align(1): | |
717 struct SHCOLUMNINFO { | |
718 SHCOLUMNID scid; | |
719 VARTYPE vt; | |
720 DWORD fmt; | |
721 UINT cChars; | |
722 DWORD csFlags; | |
723 WCHAR wszTitle[MAX_COLUMN_NAME_LEN]; | |
724 WCHAR wszDescription[MAX_COLUMN_DESC_LEN]; | |
725 } | |
726 alias SHCOLUMNINFO* LPSHCOLUMNINFO, LPCSHCOLUMNINFO; | |
727 align: | |
728 | |
729 enum SHCOLSTATE { | |
730 SHCOLSTATE_TYPE_STR = 0x00000001, | |
731 SHCOLSTATE_TYPE_INT = 0x00000002, | |
732 SHCOLSTATE_TYPE_DATE = 0x00000003, | |
733 SHCOLSTATE_TYPEMASK = 0x0000000f, | |
734 SHCOLSTATE_ONBYDEFAULT = 0x00000010, | |
735 SHCOLSTATE_SLOW = 0x00000020, | |
736 SHCOLSTATE_EXTENDED = 0x00000040, | |
737 SHCOLSTATE_SECONDARYUI = 0x00000080, | |
738 SHCOLSTATE_HIDDEN = 0x00000100, | |
739 SHCOLSTATE_PREFER_VARCMP = 0x00000200 | |
740 } | |
741 | |
742 interface IColumnProvider : public IUnknown | |
743 { | |
744 HRESULT QueryInterface(REFIID,PVOID*); | |
745 ULONG AddRef(); | |
746 ULONG Release(); | |
747 HRESULT Initialize(LPCSHCOLUMNINIT); | |
748 HRESULT GetColumnInfo(DWORD,SHCOLUMNINFO*); | |
749 HRESULT GetItemData(LPCSHCOLUMNID,LPCSHCOLUMNDATA,VARIANT*); | |
750 } | |
751 }/* _WIN32_IE >= 0x0500 */ | |
752 | |
753 interface IQueryInfo : public IUnknown | |
754 { | |
755 HRESULT QueryInterface(REFIID,PVOID*); | |
756 ULONG AddRef(); | |
757 ULONG Release(); | |
758 HRESULT GetInfoTip(DWORD,WCHAR**); | |
759 HRESULT GetInfoFlags(DWORD*); | |
760 } | |
761 | |
762 interface IShellExtInit : public IUnknown | |
763 { | |
764 HRESULT QueryInterface(REFIID,PVOID*); | |
765 ULONG AddRef(); | |
766 ULONG Release(); | |
767 HRESULT Initialize(LPCITEMIDLIST,LPDATAOBJECT,HKEY); | |
768 } | |
769 alias IShellExtInit *LPSHELLEXTINIT; | |
770 | |
771 interface IShellPropSheetExt : public IUnknown | |
772 { | |
773 HRESULT QueryInterface(REFIID,PVOID*); | |
774 ULONG AddRef(); | |
775 ULONG Release(); | |
776 HRESULT AddPages(LPFNADDPROPSHEETPAGE,LPARAM); | |
777 HRESULT ReplacePage(UINT,LPFNADDPROPSHEETPAGE,LPARAM); | |
778 } | |
779 alias IShellPropSheetExt *LPSHELLPROPSHEETEXT; | |
780 | |
781 interface IExtractIconA : public IUnknown | |
782 { | |
783 HRESULT QueryInterface(REFIID,PVOID*); | |
784 ULONG AddRef(); | |
785 ULONG Release(); | |
786 HRESULT GetIconLocation(UINT,LPSTR,UINT,int*,PUINT); | |
787 HRESULT Extract(LPCSTR,UINT,HICON*,HICON*,UINT); | |
788 }; | |
789 alias IExtractIconA *LPEXTRACTICONA; | |
790 | |
791 interface IExtractIconW : public IUnknown | |
792 { | |
793 HRESULT QueryInterface(REFIID,PVOID*); | |
794 ULONG AddRef(); | |
795 ULONG Release(); | |
796 HRESULT GetIconLocation(UINT,LPWSTR,UINT,int*,PUINT); | |
797 HRESULT Extract(LPCWSTR,UINT,HICON*,HICON*,UINT); | |
798 } | |
799 alias IExtractIconW *LPEXTRACTICONW; | |
800 | |
801 version(Unicode) { | |
802 alias IExtractIconW IExtractIcon; | |
803 alias LPEXTRACTICONW LPEXTRACTICON; | |
804 } else { | |
805 alias IExtractIconA IExtractIcon; | |
806 alias LPEXTRACTICONA LPEXTRACTICON; | |
807 } | |
808 | |
809 interface IShellLinkA : public IUnknown | |
810 { | |
811 HRESULT QueryInterface(REFIID,PVOID*); | |
812 ULONG AddRef(); | |
813 ULONG Release(); | |
814 HRESULT GetPath(LPSTR,int,WIN32_FIND_DATAA*,DWORD); | |
815 HRESULT GetIDList(LPITEMIDLIST*); | |
816 HRESULT SetIDList(LPCITEMIDLIST); | |
817 HRESULT GetDescription(LPSTR,int); | |
818 HRESULT SetDescription(LPCSTR); | |
819 HRESULT GetWorkingDirectory(LPSTR,int); | |
820 HRESULT SetWorkingDirectory(LPCSTR); | |
821 HRESULT GetArguments(LPSTR,int); | |
822 HRESULT SetArguments(LPCSTR); | |
823 HRESULT GetHotkey(PWORD); | |
824 HRESULT SetHotkey(WORD); | |
825 HRESULT GetShowCmd(int*); | |
826 HRESULT SetShowCmd(int); | |
827 HRESULT GetIconLocation(LPSTR,int,int*); | |
828 HRESULT SetIconLocation(LPCSTR,int); | |
829 HRESULT SetRelativePath(LPCSTR ,DWORD); | |
830 HRESULT Resolve(HWND,DWORD); | |
831 HRESULT SetPath(LPCSTR); | |
832 } | |
833 | |
834 interface IShellLinkW : public IUnknown | |
835 { | |
836 HRESULT QueryInterface(REFIID,PVOID*); | |
837 ULONG AddRef(); | |
838 ULONG Release(); | |
839 HRESULT GetPath(LPWSTR,int,WIN32_FIND_DATAW*,DWORD); | |
840 HRESULT GetIDList(LPITEMIDLIST*); | |
841 HRESULT SetIDList(LPCITEMIDLIST); | |
842 HRESULT GetDescription(LPWSTR,int); | |
843 HRESULT SetDescription(LPCWSTR); | |
844 HRESULT GetWorkingDirectory(LPWSTR,int); | |
845 HRESULT SetWorkingDirectory(LPCWSTR); | |
846 HRESULT GetArguments(LPWSTR,int); | |
847 HRESULT SetArguments(LPCWSTR); | |
848 HRESULT GetHotkey(PWORD); | |
849 HRESULT SetHotkey(WORD); | |
850 HRESULT GetShowCmd(int*); | |
851 HRESULT SetShowCmd(int); | |
852 HRESULT GetIconLocation(LPWSTR,int,int*); | |
853 HRESULT SetIconLocation(LPCWSTR,int); | |
854 HRESULT SetRelativePath(LPCWSTR ,DWORD); | |
855 HRESULT Resolve(HWND,DWORD); | |
856 HRESULT SetPath(LPCWSTR); | |
857 } | |
858 | |
859 | |
860 interface IShellFolder : public IUnknown | |
861 { | |
862 HRESULT QueryInterface(REFIID,PVOID*); | |
863 ULONG AddRef(); | |
864 ULONG Release(); | |
865 HRESULT ParseDisplayName(HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG); | |
866 HRESULT EnumObjects(HWND,DWORD,LPENUMIDLIST*); | |
867 HRESULT BindToObject(LPCITEMIDLIST,LPBC,REFIID,PVOID*); | |
868 HRESULT BindToStorage(LPCITEMIDLIST,LPBC,REFIID,PVOID*); | |
869 HRESULT CompareIDs(LPARAM,LPCITEMIDLIST,LPCITEMIDLIST); | |
870 HRESULT CreateViewObject(HWND,REFIID,PVOID*); | |
871 HRESULT GetAttributesOf(UINT,LPCITEMIDLIST*,PULONG); | |
872 HRESULT GetUIObjectOf(HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*); | |
873 HRESULT GetDisplayNameOf(LPCITEMIDLIST,DWORD,LPSTRRET); | |
874 HRESULT SetNameOf(HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*); | |
875 } | |
876 alias IShellFolder *LPSHELLFOLDER; | |
877 | |
878 static if (_WIN32_IE >= 0x0500) { | |
879 | |
880 interface IEnumExtraSearch: public IUnknown | |
881 { | |
882 HRESULT QueryInterface(REFIID,PVOID*); | |
883 ULONG AddRef(); | |
884 ULONG Release(); | |
885 HRESULT Next(ULONG,LPEXTRASEARCH*,ULONG*); | |
886 HRESULT Skip(ULONG); | |
887 HRESULT Reset(); | |
888 HRESULT Clone(IEnumExtraSearch**); | |
889 } | |
890 alias IEnumExtraSearch *LPENUMEXTRASEARCH; | |
891 | |
892 interface IShellFolder2 : public IShellFolder | |
893 { | |
894 HRESULT QueryInterface(REFIID,PVOID*); | |
895 ULONG AddRef(); | |
896 ULONG Release(); | |
897 HRESULT ParseDisplayName(HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG); | |
898 HRESULT EnumObjects(HWND,DWORD,LPENUMIDLIST*); | |
899 HRESULT BindToObject(LPCITEMIDLIST,LPBC,REFIID,PVOID*); | |
900 HRESULT BindToStorage(LPCITEMIDLIST,LPBC,REFIID,PVOID*); | |
901 HRESULT CompareIDs(LPARAM,LPCITEMIDLIST,LPCITEMIDLIST); | |
902 HRESULT CreateViewObject(HWND,REFIID,PVOID*); | |
903 HRESULT GetAttributesOf(UINT,LPCITEMIDLIST*,PULONG); | |
904 HRESULT GetUIObjectOf(HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*); | |
905 HRESULT GetDisplayNameOf(LPCITEMIDLIST,DWORD,LPSTRRET); | |
906 HRESULT SetNameOf(HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*); | |
907 HRESULT GetDefaultSearchGUID(GUID*); | |
908 HRESULT EnumSearches(IEnumExtraSearch**); | |
909 HRESULT GetDefaultColumn(DWORD,ULONG*,ULONG*); | |
910 HRESULT GetDefaultColumnState(UINT,SHCOLSTATEF*); | |
911 HRESULT GetDetailsEx(LPCITEMIDLIST, SHCOLUMNID*,VARIANT*); | |
912 HRESULT GetDetailsOf(LPCITEMIDLIST,UINT,SHELLDETAILS*); | |
913 HRESULT MapColumnToSCID(UINT,SHCOLUMNID*); | |
914 } | |
915 alias IShellFolder2 *LPSHELLFOLDER2; | |
916 | |
917 } /* _WIN32_IE >= 0x0500 */ | |
918 | |
919 interface ICopyHook : public IUnknown | |
920 { | |
921 HRESULT QueryInterface(REFIID,PVOID*); | |
922 ULONG AddRef(); | |
923 ULONG Release(); | |
924 UINT CopyCallback(HWND,UINT,UINT,LPCSTR,DWORD,LPCSTR,DWORD); | |
925 } | |
926 alias ICopyHook *LPCOPYHOOK; | |
927 | |
928 interface IFileViewerSite : public IUnknown | |
929 { | |
930 HRESULT QueryInterface(REFIID,PVOID*); | |
931 ULONG AddRef(); | |
932 ULONG Release(); | |
933 HRESULT SetPinnedWindow(HWND); | |
934 HRESULT GetPinnedWindow(HWND*); | |
935 } | |
936 alias IFileViewerSite *LPFILEVIEWERSITE; | |
937 | |
938 interface IFileViewer : public IUnknown | |
939 { | |
940 HRESULT QueryInterface(REFIID,PVOID*); | |
941 ULONG AddRef(); | |
942 ULONG Release(); | |
943 HRESULT ShowInitialize(LPFILEVIEWERSITE); | |
944 HRESULT Show(LPFVSHOWINFO); | |
945 HRESULT PrintTo(LPSTR,BOOL); | |
946 } | |
947 alias IFileViewer *LPFILEVIEWER; | |
948 | |
949 interface IFileSystemBindData : public IUnknown | |
950 { | |
951 HRESULT QueryInterface(REFIID,PVOID*); | |
952 ULONG AddRef(); | |
953 ULONG Release(); | |
954 HRESULT SetFindData( WIN32_FIND_DATAW*); | |
955 HRESULT GetFindData(WIN32_FIND_DATAW*); | |
956 } | |
957 | |
958 interface IPersistFolder : public IPersist | |
959 { | |
960 HRESULT QueryInterface(REFIID,PVOID*); | |
961 ULONG AddRef(); | |
962 ULONG Release(); | |
963 HRESULT GetClassID(CLSID*); | |
964 HRESULT Initialize(LPCITEMIDLIST); | |
965 } | |
966 alias IPersistFolder *LPPERSISTFOLDER; | |
967 | |
968 static if (_WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500) { | |
969 | |
970 interface IPersistFolder2 : public IPersistFolder | |
971 { | |
972 HRESULT QueryInterface(REFIID,PVOID*); | |
973 ULONG AddRef(); | |
974 ULONG Release(); | |
975 HRESULT GetClassID(CLSID*); | |
976 HRESULT Initialize(LPCITEMIDLIST); | |
977 HRESULT GetCurFolder(LPITEMIDLIST*); | |
978 } | |
979 alias IPersistFolder2 *LPPERSISTFOLDER2; | |
980 | |
981 }/* _WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500 */ | |
982 | |
983 static if (_WIN32_IE >= 0x0500) { | |
984 | |
985 interface IPersistFolder3 : public IPersistFolder2 | |
986 { | |
987 HRESULT QueryInterface(REFIID,PVOID*); | |
988 ULONG AddRef(); | |
989 ULONG Release(); | |
990 HRESULT GetClassID(CLSID*); | |
991 HRESULT Initialize(LPCITEMIDLIST); | |
992 HRESULT GetCurFolder(LPITEMIDLIST*); | |
993 HRESULT InitializeEx(IBindCtx*,LPCITEMIDLIST, PERSIST_FOLDER_TARGET_INFO*); | |
994 HRESULT GetFolderTargetInfo(PERSIST_FOLDER_TARGET_INFO*); | |
995 } | |
996 alias IPersistFolder3 *LPPERSISTFOLDER3; | |
997 | |
998 } /* _WIN32_IE >= 0x0500 */ | |
999 | |
1000 alias IShellBrowser* LPSHELLBROWSER; | |
1001 alias IShellView* LPSHELLVIEW; | |
1002 | |
1003 interface IShellBrowser : public IOleWindow | |
1004 { | |
1005 HRESULT QueryInterface(REFIID,PVOID*); | |
1006 ULONG AddRef(); | |
1007 ULONG Release(); | |
1008 HRESULT GetWindow(HWND*); | |
1009 HRESULT ContextSensitiveHelp(BOOL); | |
1010 HRESULT InsertMenusSB(HMENU,LPOLEMENUGROUPWIDTHS); | |
1011 HRESULT SetMenuSB(HMENU,HOLEMENU,HWND); | |
1012 HRESULT RemoveMenusSB(HMENU); | |
1013 HRESULT SetStatusTextSB(LPCOLESTR); | |
1014 HRESULT EnableModelessSB(BOOL); | |
1015 HRESULT TranslateAcceleratorSB(LPMSG,WORD); | |
1016 HRESULT BrowseObject(LPCITEMIDLIST,UINT); | |
1017 HRESULT GetViewStateStream(DWORD,LPSTREAM*); | |
1018 HRESULT GetControlWindow(UINT,HWND*); | |
1019 HRESULT SendControlMsg(UINT,UINT,WPARAM,LPARAM,LRESULT*); | |
1020 HRESULT QueryActiveShellView(LPSHELLVIEW*); | |
1021 HRESULT OnViewWindowActive(LPSHELLVIEW); | |
1022 HRESULT SetToolbarItems(LPTBBUTTON,UINT,UINT); | |
1023 } | |
1024 | |
1025 interface IShellView : public IOleWindow | |
1026 { | |
1027 HRESULT QueryInterface(REFIID,PVOID*); | |
1028 ULONG AddRef(); | |
1029 ULONG Release(); | |
1030 HRESULT GetWindow(HWND*); | |
1031 HRESULT ContextSensitiveHelp(BOOL); | |
1032 HRESULT TranslateAccelerator(LPMSG); | |
1033 //[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT | |
1034 //[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; | |
1035 //[Yes] #else | |
1036 HRESULT EnableModeless(BOOL); | |
1037 //[Yes] #endif | |
1038 HRESULT UIActivate(UINT); | |
1039 HRESULT Refresh(); | |
1040 HRESULT CreateViewWindow(IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*); | |
1041 HRESULT DestroyViewWindow(); | |
1042 HRESULT GetCurrentInfo(LPFOLDERSETTINGS); | |
1043 HRESULT AddPropertySheetPages(DWORD,LPFNADDPROPSHEETPAGE,LPARAM); | |
1044 HRESULT SaveViewState(); | |
1045 HRESULT SelectItem(LPCITEMIDLIST,UINT); | |
1046 HRESULT GetItemObject(UINT,REFIID,PVOID*); | |
1047 } | |
1048 | |
1049 interface ICommDlgBrowser : public IUnknown | |
1050 { | |
1051 HRESULT QueryInterface(REFIID,PVOID*); | |
1052 ULONG AddRef(); | |
1053 ULONG Release(); | |
1054 HRESULT OnDefaultCommand(IShellView*); | |
1055 HRESULT OnStateChange(IShellView*,ULONG); | |
1056 HRESULT IncludeObject(IShellView*,LPCITEMIDLIST); | |
1057 } | |
1058 alias ICommDlgBrowser *LPCOMMDLGBROWSER; | |
1059 | |
1060 alias GUID SHELLVIEWID; | |
1061 | |
1062 struct SV2CVW2_PARAMS { | |
1063 DWORD cbSize = this.sizeof; | |
1064 IShellView *psvPrev; | |
1065 FOLDERSETTINGS *pfs; | |
1066 IShellBrowser *psbOwner; | |
1067 RECT *prcView; | |
1068 SHELLVIEWID *pvid; | |
1069 HWND hwndView; | |
1070 } | |
1071 alias SV2CVW2_PARAMS* LPSV2CVW2_PARAMS; | |
1072 | |
1073 interface IShellView2 : public IShellView | |
1074 { | |
1075 | |
1076 HRESULT QueryInterface(REFIID,PVOID*); | |
1077 ULONG AddRef(); | |
1078 ULONG Release(); | |
1079 HRESULT GetWindow(HWND*); | |
1080 HRESULT ContextSensitiveHelp(BOOL); | |
1081 HRESULT TranslateAccelerator(LPMSG); | |
1082 //[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT | |
1083 //[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; | |
1084 //[Yes] #else | |
1085 HRESULT EnableModeless(BOOL); | |
1086 //[Yes] #endif | |
1087 HRESULT UIActivate(UINT); | |
1088 HRESULT Refresh(); | |
1089 HRESULT CreateViewWindow(IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*); | |
1090 HRESULT DestroyViewWindow(); | |
1091 HRESULT GetCurrentInfo(LPFOLDERSETTINGS); | |
1092 HRESULT AddPropertySheetPages(DWORD,LPFNADDPROPSHEETPAGE,LPARAM); | |
1093 HRESULT SaveViewState(); | |
1094 HRESULT SelectItem(LPCITEMIDLIST,UINT); | |
1095 HRESULT GetItemObject(UINT,REFIID,PVOID*); | |
1096 HRESULT GetView(SHELLVIEWID*,ULONG); | |
1097 HRESULT CreateViewWindow2(LPSV2CVW2_PARAMS); | |
1098 } | |
1099 | |
1100 interface IShellExecuteHookA : public IUnknown | |
1101 { | |
1102 HRESULT QueryInterface(REFIID,PVOID*); | |
1103 ULONG AddRef(); | |
1104 ULONG Release(); | |
1105 HRESULT Execute(LPSHELLEXECUTEINFOA); | |
1106 } | |
1107 | |
1108 interface IShellExecuteHookW : public IUnknown | |
1109 { | |
1110 HRESULT QueryInterface(REFIID,PVOID*); | |
1111 ULONG AddRef(); | |
1112 ULONG Release(); | |
1113 HRESULT Execute(LPSHELLEXECUTEINFOW); | |
1114 } | |
1115 | |
1116 interface IShellIcon : public IUnknown | |
1117 { | |
1118 HRESULT QueryInterface(REFIID,PVOID*); | |
1119 ULONG AddRef(); | |
1120 ULONG Release(); | |
1121 HRESULT GetIconOf(LPCITEMIDLIST,UINT,PINT); | |
1122 } | |
1123 alias IShellIcon* LPSHELLICON; | |
1124 | |
1125 struct SHELLFLAGSTATE { | |
1126 // TODO | |
1127 short bitflags_; // for D. | |
1128 /* | |
1129 BOOL fShowAllObjects : 1; | |
1130 BOOL fShowExtensions : 1; | |
1131 BOOL fNoConfirmRecycle : 1; | |
1132 BOOL fShowSysFiles : 1; | |
1133 BOOL fShowCompColor : 1; | |
1134 BOOL fDoubleClickInWebView : 1; | |
1135 BOOL fDesktopHTML : 1; | |
1136 BOOL fWin95Classic : 1; | |
1137 BOOL fDontPrettyPath : 1; | |
1138 BOOL fShowAttribCol : 1; | |
1139 BOOL fMapNetDrvBtn : 1; | |
1140 BOOL fShowInfoTip : 1; | |
1141 BOOL fHideIcons : 1; | |
1142 UINT fRestFlags : 3; | |
1143 */ | |
1144 } | |
1145 alias SHELLFLAGSTATE* LPSHELLFLAGSTATE; | |
1146 | |
1147 const SSF_SHOWALLOBJECTS = 0x1; | |
1148 const SSF_SHOWEXTENSIONS = 0x2; | |
1149 const SSF_SHOWCOMPCOLOR = 0x8; | |
1150 const SSF_SHOWSYSFILES = 0x20; | |
1151 const SSF_DOUBLECLICKINWEBVIEW = 0x80; | |
1152 const SSF_SHOWATTRIBCOL = 0x100; | |
1153 const SSF_DESKTOPHTML = 0x200; | |
1154 const SSF_WIN95CLASSIC = 0x400; | |
1155 const SSF_DONTPRETTYPATH = 0x800; | |
1156 const SSF_MAPNETDRVBUTTON = 0x1000; | |
1157 const SSF_SHOWINFOTIP = 0x2000; | |
1158 const SSF_HIDEICONS = 0x4000; | |
1159 const SSF_NOCONFIRMRECYCLE = 0x8000; | |
1160 | |
1161 interface IShellIconOverlayIdentifier : public IUnknown | |
1162 { | |
1163 HRESULT QueryInterface(REFIID,PVOID*); | |
1164 ULONG AddRef(); | |
1165 ULONG Release(); | |
1166 HRESULT IsMemberOf(LPCWSTR,DWORD); | |
1167 HRESULT GetOverlayInfo(LPWSTR,int,int*,DWORD*); | |
1168 HRESULT GetPriority(int*); | |
1169 } | |
1170 | |
1171 const ISIOI_ICONFILE = 0x00000001; | |
1172 const ISIOI_ICONINDEX = 0x00000002; | |
1173 | |
1174 static if (_WIN32_WINNT >= 0x0500) {/* W2K */ | |
1175 struct SHELLSTATE { | |
1176 //TODO: | |
1177 /* | |
1178 BOOL fShowAllObjects : 1; | |
1179 BOOL fShowExtensions : 1; | |
1180 BOOL fNoConfirmRecycle : 1; | |
1181 BOOL fShowSysFiles : 1; | |
1182 BOOL fShowCompColor : 1; | |
1183 BOOL fDoubleClickInWebView : 1; | |
1184 BOOL fDesktopHTML : 1; | |
1185 BOOL fWin95Classic : 1; | |
1186 BOOL fDontPrettyPath : 1; | |
1187 BOOL fShowAttribCol : 1; | |
1188 BOOL fMapNetDrvBtn : 1; | |
1189 BOOL fShowInfoTip : 1; | |
1190 BOOL fHideIcons : 1; | |
1191 BOOL fWebView : 1; | |
1192 BOOL fFilter : 1; | |
1193 BOOL fShowSuperHidden : 1; | |
1194 BOOL fNoNetCrawling : 1; | |
1195 DWORD dwWin95Unused; | |
1196 UINT uWin95Unused; | |
1197 LONG lParamSort; | |
1198 int iSortDirection; | |
1199 UINT version; | |
1200 UINT uNotUsed; | |
1201 BOOL fSepProcess : 1; | |
1202 BOOL fStartPanelOn : 1; | |
1203 BOOL fShowStartPage : 1; | |
1204 UINT fSpareFlags : 13; | |
1205 */ | |
1206 } | |
1207 alias SHELLSTATE* LPSHELLSTATE; | |
1208 } | |
1209 | |
1210 static if (_WIN32_IE >= 0x0500) { | |
1211 align(8): | |
1212 struct SHDRAGIMAGE { | |
1213 SIZE sizeDragImage; | |
1214 POINT ptOffset; | |
1215 HBITMAP hbmpDragImage; | |
1216 COLORREF crColorKey; | |
1217 } | |
1218 alias SHDRAGIMAGE* LPSHDRAGIMAGE; | |
1219 align: | |
1220 | |
1221 interface IDragSourceHelper : public IUnknown | |
1222 { | |
1223 HRESULT QueryInterface(REFIID riid, void **ppv); | |
1224 ULONG AddRef(); | |
1225 ULONG Release(); | |
1226 HRESULT InitializeFromBitmap(LPSHDRAGIMAGE pshdi, IDataObject* pDataObject); | |
1227 HRESULT InitializeFromWindow(HWND hwnd, POINT* ppt, IDataObject* pDataObject); | |
1228 } | |
1229 | |
1230 interface IDropTargetHelper : public IUnknown | |
1231 { | |
1232 HRESULT QueryInterface(REFIID riid, void** ppv); | |
1233 ULONG AddRef(); | |
1234 ULONG Release(); | |
1235 HRESULT DragEnter(HWND hwndTarget, IDataObject* pDataObject, POINT* ppt, DWORD dwEffect); | |
1236 HRESULT DragLeave(); | |
1237 HRESULT DragOver(POINT* ppt, DWORD dwEffect); | |
1238 HRESULT Drop(IDataObject* pDataObject, POINT* ppt, DWORD dwEffect); | |
1239 HRESULT Show(BOOL fShow); | |
1240 } | |
1241 } | |
1242 | |
1243 extern (Windows): | |
1244 void SHAddToRecentDocs(UINT,PCVOID); | |
1245 LPITEMIDLIST SHBrowseForFolderA(PBROWSEINFOA); | |
1246 LPITEMIDLIST SHBrowseForFolderW(PBROWSEINFOW); | |
1247 void SHChangeNotify(LONG,UINT,PCVOID,PCVOID); | |
1248 HRESULT SHGetDataFromIDListA(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int); | |
1249 HRESULT SHGetDataFromIDListW(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int); | |
1250 HRESULT SHGetDesktopFolder(LPSHELLFOLDER*); | |
1251 HRESULT SHGetInstanceExplorer(IUnknown **); | |
1252 HRESULT SHGetMalloc(LPMALLOC*); | |
1253 BOOL SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR); | |
1254 BOOL SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR); | |
1255 HRESULT SHGetSpecialFolderLocation(HWND,int,LPITEMIDLIST*); | |
1256 HRESULT SHLoadInProc(REFCLSID); | |
1257 | |
1258 static if (_WIN32_IE >= 0x0400) { | |
1259 BOOL SHGetSpecialFolderPathA(HWND,LPSTR,int,BOOL); | |
1260 BOOL SHGetSpecialFolderPathW(HWND,LPWSTR,int,BOOL); | |
1261 } | |
1262 | |
1263 /* SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K */ | |
1264 HRESULT SHGetFolderPathA(HWND,int,HANDLE,DWORD,LPSTR); | |
1265 HRESULT SHGetFolderPathW(HWND,int,HANDLE,DWORD,LPWSTR); | |
1266 | |
1267 static if ((_WIN32_WINDOWS >= 0x0490) || (_WIN32_WINNT >= 0x0500)) {/* ME or W2K */ | |
1268 HRESULT SHGetFolderLocation(HWND,int,HANDLE,DWORD,LPITEMIDLIST*); | |
1269 } | |
1270 | |
1271 static if (_WIN32_WINNT >= 0x0500) { | |
1272 INT SHCreateDirectoryExA(HWND,LPCSTR,LPSECURITY_ATTRIBUTES); | |
1273 INT SHCreateDirectoryExW(HWND,LPCWSTR,LPSECURITY_ATTRIBUTES); | |
1274 HRESULT SHBindToParent(LPCITEMIDLIST,REFIID,VOID**,LPCITEMIDLIST*); | |
1275 } | |
1276 | |
1277 static if (_WIN32_WINNT >= 0x0501) {/* XP */ | |
1278 HRESULT SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR); | |
1279 HRESULT SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR); | |
1280 } | |
1281 | |
1282 void SHGetSettings(LPSHELLFLAGSTATE,DWORD); | |
1283 | |
1284 static if (_WIN32_WINNT >= 0x0500) {/* W2K */ | |
1285 void SHGetSetSettings(LPSHELLSTATE,DWORD,BOOL); | |
1286 } | |
1287 | |
1288 static if (_WIN32_WINNT >= 0x0500) {/* W2K */ | |
1289 BOOL ILIsEqual(LPCITEMIDLIST, LPCITEMIDLIST); | |
1290 BOOL ILIsParent(LPCITEMIDLIST, LPCITEMIDLIST, BOOL); | |
1291 BOOL ILRemoveLastID(LPITEMIDLIST); | |
1292 HRESULT ILLoadFromStream(IStream*, LPITEMIDLIST*); | |
1293 HRESULT ILSaveToStream(IStream*, LPCITEMIDLIST); | |
1294 LPITEMIDLIST ILAppendID(LPITEMIDLIST, LPCSHITEMID, BOOL); | |
1295 LPITEMIDLIST ILClone(LPCITEMIDLIST); | |
1296 LPITEMIDLIST ILCloneFirst(LPCITEMIDLIST); | |
1297 LPITEMIDLIST ILCombine(LPCITEMIDLIST, LPCITEMIDLIST); | |
1298 LPITEMIDLIST ILFindChild(LPCITEMIDLIST, LPCITEMIDLIST); | |
1299 LPITEMIDLIST ILFindLastID(LPCITEMIDLIST); | |
1300 LPITEMIDLIST ILGetNext(LPCITEMIDLIST); | |
1301 UINT ILGetSize(LPCITEMIDLIST); | |
1302 void ILFree(LPITEMIDLIST); | |
1303 | |
1304 HRESULT SHCoCreateInstance(LPCWSTR,REFCLSID,IUnknown*,REFIID,void**); | |
1305 } | |
1306 | |
1307 version(Unicode) { | |
1308 alias IShellExecuteHookW IShellExecuteHook; | |
1309 alias IShellLinkW IShellLink; | |
1310 alias BROWSEINFOW BROWSEINFO; | |
1311 alias SHBrowseForFolderW SHBrowseForFolder; | |
1312 alias SHGetDataFromIDListW SHGetDataFromIDList; | |
1313 alias SHGetPathFromIDListW SHGetPathFromIDList; | |
1314 static if (_WIN32_IE >= 0x0400) { | |
1315 alias SHGetSpecialFolderPathW SHGetSpecialFolderPath; | |
1316 } | |
1317 alias SHGetFolderPathW SHGetFolderPath; | |
1318 static if (_WIN32_WINNT >= 0x0500) { | |
1319 alias SHCreateDirectoryExW SHCreateDirectoryEx; | |
1320 } | |
1321 static if (_WIN32_WINNT >= 0x0501) { | |
1322 alias SHGetFolderPathAndSubDirW SHGetFolderPathAndSubDir; | |
1323 } | |
1324 alias FILEDESCRIPTORW FILEDESCRIPTOR; | |
1325 alias LPFILEDESCRIPTORW LPFILEDESCRIPTOR; | |
1326 alias FILEGROUPDESCRIPTORW FILEGROUPDESCRIPTOR; | |
1327 alias LPFILEGROUPDESCRIPTORW LPFILEGROUPDESCRIPTOR; | |
1328 | |
1329 } else { | |
1330 alias IShellExecuteHookA IShellExecuteHook; | |
1331 alias IShellLinkA IShellLink; | |
1332 alias BROWSEINFOA BROWSEINFO; | |
1333 alias SHBrowseForFolderA SHBrowseForFolder; | |
1334 alias SHGetDataFromIDListA SHGetDataFromIDList; | |
1335 alias SHGetPathFromIDListA SHGetPathFromIDList; | |
1336 static if (_WIN32_IE >= 0x0400) { | |
1337 alias SHGetSpecialFolderPathA SHGetSpecialFolderPath; | |
1338 } | |
1339 alias SHGetFolderPathA SHGetFolderPath; | |
1340 static if (_WIN32_WINNT >= 0x0500) { | |
1341 alias SHCreateDirectoryExA SHCreateDirectoryEx; | |
1342 } | |
1343 static if (_WIN32_WINNT >= 0x0501) { | |
1344 alias SHGetFolderPathAndSubDirA SHGetFolderPathAndSubDir; | |
1345 } | |
1346 alias FILEDESCRIPTORA FILEDESCRIPTOR; | |
1347 alias LPFILEDESCRIPTORA LPFILEDESCRIPTOR; | |
1348 alias FILEGROUPDESCRIPTORA FILEGROUPDESCRIPTOR; | |
1349 alias LPFILEGROUPDESCRIPTORA LPFILEGROUPDESCRIPTOR; | |
1350 } | |
1351 alias BROWSEINFO* PBROWSEINFO, LPBROWSEINFO; |