Differences From Artifact [3b1d34f9e7047278]:
- File
src/win32/shlobj.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]
To Artifact [7df464c2cf7d0434]:
- File
src/win32/shlobj.d
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
The problem was __gshared. Replacing it with TLS fixed the issue. Remaining problem is that "hack.d"'s CloseHandle hack is not working anymore.
(user: kinaba) [annotate]
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
1 1 /***********************************************************************\
2 2 * shlobj.d *
3 3 * *
4 4 * Windows API header module *
5 5 * *
6 -* Translated from MinGW Windows headers *
6 +* Translated from MinGW API for MS-Windows 4.0 *
7 7 * *
8 8 * Placed into public domain *
9 9 \***********************************************************************/
10 10 module win32.shlobj;
11 -pragma(lib, "shell32.lib");
11 +pragma(lib, "shell32");
12 12
13 13 // TODO: fix bitfields
14 14 // TODO: CMIC_VALID_SEE_FLAGS
15 15 // SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K
16 16
17 17 import win32.commctrl, win32.ole2, win32.shlguid, win32.shellapi;
18 18 private import win32.prsht, win32.unknwn, win32.w32api, win32.winbase,
19 19 win32.winnt, win32.winuser, win32.wtypes, win32.objfwd, win32.objidl;
20 20 private import win32.winnetwk; // for NETRESOURCE
21 +private import win32.oaidl : VARIANT;
21 22
22 23
23 24 // FIXME: clean up Windows version support
24 25
25 26 align(1):
26 27
27 28 const BIF_RETURNONLYFSDIRS = 1;
................................................................................
57 58 alias BFFM_SETSTATUSTEXTA BFFM_SETSTATUSTEXT;
58 59 alias BFFM_SETSELECTIONA BFFM_SETSELECTION;
59 60 alias BFFM_VALIDATEFAILEDA BFFM_VALIDATEFAILED;
60 61 }
61 62
62 63 const DVASPECT_SHORTNAME = 2;
63 64
64 -const SHARD_PIDL = 1;
65 -const SHARD_PATH = 2;
65 +enum SHARD {
66 + SHARD_PIDL = 1,
67 + SHARD_PATHA,
68 + SHARD_PATHW,
69 + SHARD_APPIDINFO,
70 + SHARD_APPIDINFOIDLIST,
71 + SHARD_LINK,
72 + SHARD_APPIDINFOLINK,
73 + SHARD_SHELLITEM, // = 8
74 + SHARD_PATH = (_WIN32_UNICODE ? SHARD_PATHW : SHARD_PATHA)
75 +}
66 76
67 77 const SHCNE_RENAMEITEM = 1;
68 78 const SHCNE_CREATE = 2;
69 79 const SHCNE_DELETE = 4;
70 80 const SHCNE_MKDIR = 8;
71 81 const SHCNE_RMDIR = 16;
72 82 const SHCNE_MEDIAINSERTED = 32;
................................................................................
103 113 alias SHCNF_PATHW SHCNF_PATH;
104 114 alias SHCNF_PRINTERW SHCNF_PRINTER;
105 115 } else {
106 116 alias SHCNF_PATHA SHCNF_PATH;
107 117 alias SHCNF_PRINTERA SHCNF_PRINTER;
108 118 }
109 119
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;
120 +enum SFGAOF : DWORD {
121 + SFGAO_CANCOPY = DROPEFFECT.DROPEFFECT_COPY,
122 + SFGAO_CANMOVE = DROPEFFECT.DROPEFFECT_MOVE,
123 + SFGAO_CANLINK = DROPEFFECT.DROPEFFECT_LINK,
124 + SFGAO_CANRENAME = 0x00000010L,
125 + SFGAO_CANDELETE = 0x00000020L,
126 + SFGAO_HASPROPSHEET = 0x00000040L,
127 + SFGAO_DROPTARGET = 0x00000100L,
128 + SFGAO_CAPABILITYMASK = 0x00000177L,
129 + SFGAO_ISSLOW = 0x00004000L,
130 + SFGAO_GHOSTED = 0x00008000L,
131 + SFGAO_LINK = 0x00010000L,
132 + SFGAO_SHARE = 0x00020000L,
133 + SFGAO_READONLY = 0x00040000L,
134 + SFGAO_HIDDEN = 0x00080000L,
135 + SFGAO_DISPLAYATTRMASK = (SFGAO_ISSLOW | SFGAO_GHOSTED | SFGAO_LINK
136 + | SFGAO_SHARE | SFGAO_READONLY | SFGAO_HIDDEN),
137 + SFGAO_FILESYSANCESTOR = 0x10000000L,
138 + SFGAO_FOLDER = 0x20000000L,
139 + SFGAO_FILESYSTEM = 0x40000000L,
140 + SFGAO_HASSUBFOLDER = 0x80000000L,
141 + SFGAO_CONTENTSMASK = 0x80000000L,
142 + SFGAO_VALIDATE = 0x01000000L,
143 + SFGAO_REMOVABLE = 0x02000000L,
144 + SFGAO_COMPRESSED = 0x04000000L
145 +}
132 146 const STRRET_WSTR = 0;
133 147 const STRRET_OFFSET = 1;
134 148 const STRRET_CSTR = 2;
135 149
136 150 enum {
137 151 SHGDFIL_FINDDATA = 1,
138 152 SHGDFIL_NETRESOURCE,
................................................................................
159 173 SHDID_NET_OTHER
160 174 }
161 175
162 176 const TCHAR[] REGSTR_PATH_EXPLORER = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer";
163 177 const TCHAR[] REGSTR_PATH_SPECIAL_FOLDERS=REGSTR_PATH_EXPLORER ~ "\\Shell Folders";
164 178
165 179 enum {
166 - CSIDL_DESKTOP = 0,
180 + CSIDL_DESKTOP = 0,
167 181 CSIDL_INTERNET,
168 182 CSIDL_PROGRAMS,
169 183 CSIDL_CONTROLS,
170 184 CSIDL_PRINTERS,
171 185 CSIDL_PERSONAL,
172 186 CSIDL_FAVORITES,
173 187 CSIDL_STARTUP,
174 188 CSIDL_RECENT,
175 189 CSIDL_SENDTO,
176 190 CSIDL_BITBUCKET,
177 - CSIDL_STARTMENU, // = 11
178 - CSIDL_DESKTOPDIRECTORY = 16,
191 + CSIDL_STARTMENU, // = 11
192 + CSIDL_MYMUSIC = 13,
193 + CSIDL_MYVIDEO, // = 14
194 + CSIDL_DESKTOPDIRECTORY = 16,
179 195 CSIDL_DRIVES,
180 196 CSIDL_NETWORK,
181 197 CSIDL_NETHOOD,
182 198 CSIDL_FONTS,
183 199 CSIDL_TEMPLATES,
184 200 CSIDL_COMMON_STARTMENU,
185 201 CSIDL_COMMON_PROGRAMS,
................................................................................
204 220 CSIDL_PROGRAM_FILESX86,
205 221 CSIDL_PROGRAM_FILES_COMMON,
206 222 CSIDL_PROGRAM_FILES_COMMONX86,
207 223 CSIDL_COMMON_TEMPLATES,
208 224 CSIDL_COMMON_DOCUMENTS,
209 225 CSIDL_COMMON_ADMINTOOLS,
210 226 CSIDL_ADMINTOOLS,
211 - CSIDL_CONNECTIONS, // =49
212 - CSIDL_COMMON_MUSIC = 53,
227 + CSIDL_CONNECTIONS, // = 49
228 + CSIDL_COMMON_MUSIC = 53,
213 229 CSIDL_COMMON_PICTURES,
214 230 CSIDL_COMMON_VIDEO,
215 231 CSIDL_RESOURCES,
216 232 CSIDL_RESOURCES_LOCALIZED,
217 233 CSIDL_COMMON_OEM_LINKS,
218 - CSIDL_CDBURN_AREA, // = 59
219 - CSIDL_COMPUTERSNEARME = 61,
234 + CSIDL_CDBURN_AREA, // = 59
235 + CSIDL_COMPUTERSNEARME = 61,
220 236 CSIDL_FLAG_DONT_VERIFY = 0x4000,
221 - CSIDL_FLAG_CREATE = 0x8000,
222 - CSIDL_FLAG_MASK = 0xFF00
237 + CSIDL_FLAG_CREATE = 0x8000,
238 + CSIDL_FLAG_MASK = 0xFF00
223 239 }
224 240
225 241 const TCHAR[]
226 242 CFSTR_SHELLIDLIST = "Shell IDList Array",
227 243 CFSTR_SHELLIDLISTOFFSET = "Shell Object Offsets",
228 244 CFSTR_NETRESOURCES = "Net Resource",
229 245 CFSTR_FILECONTENTS = "FileContents",
................................................................................
364 380 const SVGIO_BACKGROUND=0;
365 381 const SVGIO_SELECTION=1;
366 382 const SVGIO_ALLVIEW=2;
367 383
368 384 const UINT SV2GV_CURRENTVIEW=-1;
369 385 const UINT SV2GV_DEFAULTVIEW=-2;
370 386
371 -alias ULONG SFGAOF;
372 387 alias DWORD SHGDNF;
373 388
374 389 struct CIDA {
375 390 UINT cidl;
376 391 UINT[1] aoffset;
377 392 }
378 393 alias CIDA* LPIDA;
379 394
380 395 struct SHITEMID {
381 396 USHORT cb;
382 397 BYTE[1] abID;
383 398 }
384 -alias SHITEMID* LPSHITEMID;
385 -alias CPtr!(SHITEMID) LPCSHITEMID;
399 +alias SHITEMID* LPSHITEMID;
400 +alias const(SHITEMID)* LPCSHITEMID;
386 401
387 402 struct ITEMIDLIST {
388 403 SHITEMID mkid;
389 404 }
390 -alias ITEMIDLIST* LPITEMIDLIST;
391 -alias CPtr!(ITEMIDLIST) LPCITEMIDLIST;
405 +alias ITEMIDLIST* LPITEMIDLIST;
406 +alias const(ITEMIDLIST)* LPCITEMIDLIST;
392 407
393 -alias int function(HWND,UINT,LPARAM,LPARAM) BFFCALLBACK;
408 +alias int function(HWND, UINT, LPARAM, LPARAM) BFFCALLBACK;
394 409
395 410 struct BROWSEINFOA {
396 411 HWND hwndOwner;
397 412 LPCITEMIDLIST pidlRoot;
398 413 LPSTR pszDisplayName;
399 414 LPCSTR lpszTitle;
400 415 UINT ulFlags;
................................................................................
457 472 }
458 473
459 474 struct STRRET {
460 475 UINT uType;
461 476 union {
462 477 LPWSTR pOleStr;
463 478 UINT uOffset;
464 - char cStr[MAX_PATH];
479 + char[MAX_PATH] cStr;
465 480 }
466 481 }
467 482 alias STRRET* LPSTRRET;
468 483
469 484 enum FD_FLAGS {
470 485 FD_CLSID = 1,
471 486 FD_SIZEPOINT = 2,
................................................................................
484 499 POINTL pointl;
485 500 DWORD dwFileAttributes;
486 501 FILETIME ftCreationTime;
487 502 FILETIME ftLastAccessTime;
488 503 FILETIME ftLastWriteTime;
489 504 DWORD nFileSizeHigh;
490 505 DWORD nFileSizeLow;
491 - CHAR cFileName[MAX_PATH];
506 + CHAR[MAX_PATH] cFileName;
492 507 }
493 508 alias FILEDESCRIPTORA* LPFILEDESCRIPTORA;
494 509
495 510 struct FILEDESCRIPTORW {
496 511 DWORD dwFlags;
497 512 CLSID clsid;
498 513 SIZEL sizel;
................................................................................
499 514 POINTL pointl;
500 515 DWORD dwFileAttributes;
501 516 FILETIME ftCreationTime;
502 517 FILETIME ftLastAccessTime;
503 518 FILETIME ftLastWriteTime;
504 519 DWORD nFileSizeHigh;
505 520 DWORD nFileSizeLow;
506 - WCHAR cFileName[MAX_PATH];
521 + WCHAR[MAX_PATH] cFileName;
507 522 }
508 523 alias FILEDESCRIPTORW* LPFILEDESCRIPTORW;
509 524
510 525 struct FILEGROUPDESCRIPTORA {
511 526 UINT cItems;
512 - FILEDESCRIPTORA fgd[1];
527 + FILEDESCRIPTORA[1] fgd;
513 528 }
514 529 alias FILEGROUPDESCRIPTORA* LPFILEGROUPDESCRIPTORA;
515 530
516 531 struct FILEGROUPDESCRIPTORW {
517 532 UINT cItems;
518 - FILEDESCRIPTORW fgd[1];
533 + FILEDESCRIPTORW[1] fgd;
519 534 }
520 535 alias FILEGROUPDESCRIPTORW* LPFILEGROUPDESCRIPTORW;
521 536
522 537 enum SLR_FLAGS {
523 538 SLR_NO_UI = 1,
524 539 SLR_ANY_MATCH = 2,
525 540 SLR_UPDATE = 4,
................................................................................
561 576 FVM_DETAILS
562 577 }
563 578
564 579 struct FOLDERSETTINGS {
565 580 UINT ViewMode;
566 581 UINT fFlags;
567 582 }
568 -alias FOLDERSETTINGS* LPFOLDERSETTINGS;
569 -alias CPtr!(FOLDERSETTINGS) LPCFOLDERSETTINGS;
583 +alias FOLDERSETTINGS* LPFOLDERSETTINGS;
584 +alias const(FOLDERSETTINGS)* LPCFOLDERSETTINGS;
570 585
571 586 struct FVSHOWINFO {
572 587 DWORD cbSize = this.sizeof;
573 588 HWND hwndOwner;
574 589 int iShow;
575 590 DWORD dwFlags;
576 591 RECT rect;
577 592 LPUNKNOWN punkRel;
578 - OLECHAR strNewFile[MAX_PATH];
593 + OLECHAR[MAX_PATH] strNewFile;
579 594 }
580 595 alias FVSHOWINFO* LPFVSHOWINFO;
581 596
582 597 struct NRESARRAY {
583 598 UINT cItems;
584 - NETRESOURCE nr[1];
599 + NETRESOURCE[1] nr;
585 600 }
586 601 alias NRESARRAY* LPNRESARRAY;
587 602
588 603 enum {
589 604 SBSC_HIDE,
590 605 SBSC_SHOW,
591 606 SBSC_TOGGLE,
................................................................................
604 619 enum SVUIA_STATUS {
605 620 SVUIA_DEACTIVATE,
606 621 SVUIA_ACTIVATE_NOFOCUS,
607 622 SVUIA_ACTIVATE_FOCUS,
608 623 SVUIA_INPLACEACTIVATE
609 624 }
610 625
611 -static if (_WIN32_IE >= 0x0500) {
626 +static if (_WIN32_IE >= 0x500) {
612 627
613 628 struct EXTRASEARCH
614 629 {
615 630 GUID guidSearch;
616 - WCHAR wszFriendlyName[80];
617 - WCHAR wszUrl[2084];
631 + WCHAR[80] wszFriendlyName;
632 + WCHAR[2084] wszUrl;
618 633 }
619 634 alias EXTRASEARCH* LPEXTRASEARCH;
620 635
621 636 alias DWORD SHCOLSTATEF;
622 637
623 638 struct SHCOLUMNID {
624 639 GUID fmtid;
625 640 DWORD pid;
626 641 }
627 - alias SHCOLUMNID* LPSHCOLUMNID;
628 - alias CPtr!(SHCOLUMNID) LPCSHCOLUMNID;
642 + alias SHCOLUMNID* LPSHCOLUMNID;
643 + alias const(SHCOLUMNID)* LPCSHCOLUMNID;
629 644
630 645 struct SHELLDETAILS {
631 646 int fmt;
632 647 int cxChar;
633 648 STRRET str;
634 649 }
635 650 alias SHELLDETAILS* LPSHELLDETAILS;
636 651
637 652 struct PERSIST_FOLDER_TARGET_INFO
638 653 {
639 654 LPITEMIDLIST pidlTargetFolder;
640 - WCHAR szTargetParsingName[MAX_PATH];
641 - WCHAR szNetworkProvider[MAX_PATH];
655 + WCHAR[MAX_PATH] szTargetParsingName;
656 + WCHAR[MAX_PATH] szNetworkProvider;
642 657 DWORD dwAttributes;
643 658 int csidl;
644 659 }
645 660
646 661 enum SHGFP_TYPE {
647 662 SHGFP_TYPE_CURRENT = 0,
648 663 SHGFP_TYPE_DEFAULT = 1,
649 664 }
650 665
651 666 }
652 667
653 -interface IEnumIDList: IUnknown
654 -{
655 - HRESULT QueryInterface(REFIID,PVOID*);
656 - ULONG AddRef();
657 - ULONG Release();
658 - HRESULT Next(ULONG,LPITEMIDLIST*,ULONG*);
668 +interface IEnumIDList : IUnknown {
669 + HRESULT Next(ULONG, LPITEMIDLIST*, ULONG*);
659 670 HRESULT Skip(ULONG);
660 671 HRESULT Reset();
661 - HRESULT Clone(IEnumIDList**);
672 + HRESULT Clone(IEnumIDList*);
662 673 }
663 -alias IEnumIDList *LPENUMIDLIST;
674 +alias IEnumIDList LPENUMIDLIST;
664 675
665 -interface IObjMgr : IUnknown
666 -{
667 - HRESULT QueryInterface(REFIID,PVOID*);
668 - ULONG AddRef();
669 - ULONG Release();
670 - HRESULT Append(IUnknown*);
671 - HRESULT Remove(IUnknown*);
676 +interface IObjMgr : IUnknown {
677 + HRESULT Append(IUnknown);
678 + HRESULT Remove(IUnknown);
672 679 }
673 680
674 -interface IContextMenu : IUnknown
675 -{
676 - HRESULT QueryInterface(REFIID,PVOID*);
677 - ULONG AddRef();
678 - ULONG Release();
679 - HRESULT QueryContextMenu(HMENU,UINT,UINT,UINT,UINT);
681 +interface IContextMenu : IUnknown {
682 + HRESULT QueryContextMenu(HMENU, UINT, UINT, UINT, UINT);
680 683 HRESULT InvokeCommand(LPCMINVOKECOMMANDINFO);
681 - HRESULT GetCommandString(UINT,UINT,PUINT,LPSTR,UINT);
684 + HRESULT GetCommandString(UINT, UINT, PUINT, LPSTR, UINT);
682 685 }
683 -alias IContextMenu* LPCONTEXTMENU;
686 +alias IContextMenu LPCONTEXTMENU;
684 687
685 -interface IContextMenu2 : IContextMenu
686 -{
687 - HRESULT QueryInterface(REFIID,PVOID*);
688 - ULONG AddRef();
689 - ULONG Release();
690 - HRESULT QueryContextMenu(HMENU,UINT,UINT,UINT,UINT);
691 - HRESULT InvokeCommand(LPCMINVOKECOMMANDINFO);
692 - HRESULT GetCommandString(UINT,UINT,PUINT,LPSTR,UINT);
693 - HRESULT HandleMenuMsg(UINT,WPARAM,LPARAM);
688 +interface IContextMenu2 : IContextMenu {
689 + HRESULT HandleMenuMsg(UINT, WPARAM, LPARAM);
694 690 };
695 -alias IContextMenu2* LPCONTEXTMENU2;
696 -
697 -static if (_WIN32_IE >= 0x0500) {
698 -
699 - align(8):
700 - struct SHCOLUMNINIT {
701 - ULONG dwFlags;
702 - ULONG dwReserved;
703 - WCHAR wszFolder[MAX_PATH];
704 - }
705 - alias SHCOLUMNINIT* LPSHCOLUMNINIT;
706 - alias CPtr!(SHCOLUMNINIT) LPCSHCOLUMNINIT;
707 -
708 - struct SHCOLUMNDATA {
709 - ULONG dwFlags;
710 - DWORD dwFileAttributes;
711 - ULONG dwReserved;
712 - WCHAR *pwszExt;
713 - WCHAR wszFile[MAX_PATH];
714 - }
715 - alias SHCOLUMNDATA* LPSHCOLUMNDATA;
716 - alias CPtr!(SHCOLUMNDATA) LPCSHCOLUMNDATA;
717 - align:
691 +alias IContextMenu2 LPCONTEXTMENU2;
692 +
693 +static if (_WIN32_IE >= 0x500) {
694 + align(8) {
695 + struct SHCOLUMNINIT {
696 + ULONG dwFlags;
697 + ULONG dwReserved;
698 + WCHAR[MAX_PATH] wszFolder;
699 + }
700 + alias SHCOLUMNINIT* LPSHCOLUMNINIT;
701 + alias const(SHCOLUMNINIT)* LPCSHCOLUMNINIT;
702 +
703 + struct SHCOLUMNDATA {
704 + ULONG dwFlags;
705 + DWORD dwFileAttributes;
706 + ULONG dwReserved;
707 + WCHAR *pwszExt;
708 + WCHAR[MAX_PATH] wszFile;
709 + }
710 + alias SHCOLUMNDATA* LPSHCOLUMNDATA;
711 + alias const(SHCOLUMNDATA)* LPCSHCOLUMNDATA;
712 + }
718 713
719 714 const MAX_COLUMN_NAME_LEN = 80;
720 715 const MAX_COLUMN_DESC_LEN = 128;
721 716
722 - align(1):
723 - struct SHCOLUMNINFO {
717 + align(1) struct SHCOLUMNINFO {
724 718 SHCOLUMNID scid;
725 719 VARTYPE vt;
726 720 DWORD fmt;
727 721 UINT cChars;
728 722 DWORD csFlags;
729 - WCHAR wszTitle[MAX_COLUMN_NAME_LEN];
730 - WCHAR wszDescription[MAX_COLUMN_DESC_LEN];
723 + WCHAR[MAX_COLUMN_NAME_LEN] wszTitle;
724 + WCHAR[MAX_COLUMN_DESC_LEN] wszDescription;
731 725 }
732 - alias SHCOLUMNINFO* LPSHCOLUMNINFO;
733 - alias CPtr!(SHCOLUMNINFO) LPCSHCOLUMNINFO;
734 - align:
726 + alias SHCOLUMNINFO* LPSHCOLUMNINFO;
727 + alias const(SHCOLUMNINFO)* LPCSHCOLUMNINFO;
735 728
736 729 enum SHCOLSTATE {
737 730 SHCOLSTATE_TYPE_STR = 0x00000001,
738 731 SHCOLSTATE_TYPE_INT = 0x00000002,
739 732 SHCOLSTATE_TYPE_DATE = 0x00000003,
740 733 SHCOLSTATE_TYPEMASK = 0x0000000f,
741 734 SHCOLSTATE_ONBYDEFAULT = 0x00000010,
................................................................................
742 735 SHCOLSTATE_SLOW = 0x00000020,
743 736 SHCOLSTATE_EXTENDED = 0x00000040,
744 737 SHCOLSTATE_SECONDARYUI = 0x00000080,
745 738 SHCOLSTATE_HIDDEN = 0x00000100,
746 739 SHCOLSTATE_PREFER_VARCMP = 0x00000200
747 740 }
748 741
749 - interface IColumnProvider : IUnknown
750 - {
751 - HRESULT QueryInterface(REFIID,PVOID*);
752 - ULONG AddRef();
753 - ULONG Release();
742 + interface IColumnProvider : IUnknown {
754 743 HRESULT Initialize(LPCSHCOLUMNINIT);
755 - HRESULT GetColumnInfo(DWORD,SHCOLUMNINFO*);
756 - HRESULT GetItemData(LPCSHCOLUMNID,LPCSHCOLUMNDATA,VARIANT*);
744 + HRESULT GetColumnInfo(DWORD, SHCOLUMNINFO*);
745 + HRESULT GetItemData(LPCSHCOLUMNID, LPCSHCOLUMNDATA, VARIANT*);
757 746 }
758 -}/* _WIN32_IE >= 0x0500 */
747 +}/* _WIN32_IE >= 0x500 */
759 748
760 -interface IQueryInfo : IUnknown
761 -{
762 - HRESULT QueryInterface(REFIID,PVOID*);
763 - ULONG AddRef();
764 - ULONG Release();
765 - HRESULT GetInfoTip(DWORD,WCHAR**);
749 +interface IQueryInfo : IUnknown {
750 + HRESULT GetInfoTip(DWORD, WCHAR**);
766 751 HRESULT GetInfoFlags(DWORD*);
767 752 }
768 753
769 -interface IShellExtInit : IUnknown
770 -{
771 - HRESULT QueryInterface(REFIID,PVOID*);
772 - ULONG AddRef();
773 - ULONG Release();
774 - HRESULT Initialize(LPCITEMIDLIST,LPDATAOBJECT,HKEY);
754 +interface IShellExtInit : IUnknown {
755 + HRESULT Initialize(LPCITEMIDLIST, LPDATAOBJECT, HKEY);
775 756 }
776 -alias IShellExtInit *LPSHELLEXTINIT;
757 +alias IShellExtInit LPSHELLEXTINIT;
777 758
778 -interface IShellPropSheetExt : IUnknown
779 -{
780 - HRESULT QueryInterface(REFIID,PVOID*);
781 - ULONG AddRef();
782 - ULONG Release();
783 - HRESULT AddPages(LPFNADDPROPSHEETPAGE,LPARAM);
784 - HRESULT ReplacePage(UINT,LPFNADDPROPSHEETPAGE,LPARAM);
759 +interface IShellPropSheetExt : IUnknown {
760 + HRESULT AddPages(LPFNADDPROPSHEETPAGE, LPARAM);
761 + HRESULT ReplacePage(UINT, LPFNADDPROPSHEETPAGE, LPARAM);
785 762 }
786 -alias IShellPropSheetExt *LPSHELLPROPSHEETEXT;
763 +alias IShellPropSheetExt LPSHELLPROPSHEETEXT;
787 764
788 -interface IExtractIconA : IUnknown
789 -{
790 - HRESULT QueryInterface(REFIID,PVOID*);
791 - ULONG AddRef();
792 - ULONG Release();
793 - HRESULT GetIconLocation(UINT,LPSTR,UINT,int*,PUINT);
794 - HRESULT Extract(LPCSTR,UINT,HICON*,HICON*,UINT);
765 +interface IExtractIconA : IUnknown {
766 + HRESULT GetIconLocation(UINT, LPSTR, UINT, int*, PUINT);
767 + HRESULT Extract(LPCSTR, UINT, HICON*, HICON*, UINT);
795 768 };
796 -alias IExtractIconA *LPEXTRACTICONA;
769 +alias IExtractIconA LPEXTRACTICONA;
797 770
798 -interface IExtractIconW : IUnknown
799 -{
800 - HRESULT QueryInterface(REFIID,PVOID*);
801 - ULONG AddRef();
802 - ULONG Release();
803 - HRESULT GetIconLocation(UINT,LPWSTR,UINT,int*,PUINT);
804 - HRESULT Extract(LPCWSTR,UINT,HICON*,HICON*,UINT);
771 +interface IExtractIconW : IUnknown {
772 + HRESULT GetIconLocation(UINT, LPWSTR, UINT, int*, PUINT);
773 + HRESULT Extract(LPCWSTR, UINT, HICON*, HICON*, UINT);
805 774 }
806 -alias IExtractIconW *LPEXTRACTICONW;
775 +alias IExtractIconW LPEXTRACTICONW;
807 776
808 777 version(Unicode) {
809 778 alias IExtractIconW IExtractIcon;
810 779 alias LPEXTRACTICONW LPEXTRACTICON;
811 780 } else {
812 781 alias IExtractIconA IExtractIcon;
813 782 alias LPEXTRACTICONA LPEXTRACTICON;
814 783 }
815 784
816 -interface IShellLinkA : IUnknown
817 -{
818 - HRESULT QueryInterface(REFIID,PVOID*);
819 - ULONG AddRef();
820 - ULONG Release();
821 - HRESULT GetPath(LPSTR,int,WIN32_FIND_DATAA*,DWORD);
785 +interface IShellLinkA : IUnknown {
786 + HRESULT GetPath(LPSTR, int, WIN32_FIND_DATAA*, DWORD);
822 787 HRESULT GetIDList(LPITEMIDLIST*);
823 788 HRESULT SetIDList(LPCITEMIDLIST);
824 - HRESULT GetDescription(LPSTR,int);
789 + HRESULT GetDescription(LPSTR, int);
825 790 HRESULT SetDescription(LPCSTR);
826 - HRESULT GetWorkingDirectory(LPSTR,int);
791 + HRESULT GetWorkingDirectory(LPSTR, int);
827 792 HRESULT SetWorkingDirectory(LPCSTR);
828 - HRESULT GetArguments(LPSTR,int);
793 + HRESULT GetArguments(LPSTR, int);
829 794 HRESULT SetArguments(LPCSTR);
830 795 HRESULT GetHotkey(PWORD);
831 796 HRESULT SetHotkey(WORD);
832 797 HRESULT GetShowCmd(int*);
833 798 HRESULT SetShowCmd(int);
834 - HRESULT GetIconLocation(LPSTR,int,int*);
835 - HRESULT SetIconLocation(LPCSTR,int);
836 - HRESULT SetRelativePath(LPCSTR ,DWORD);
837 - HRESULT Resolve(HWND,DWORD);
799 + HRESULT GetIconLocation(LPSTR, int, int*);
800 + HRESULT SetIconLocation(LPCSTR, int);
801 + HRESULT SetRelativePath(LPCSTR , DWORD);
802 + HRESULT Resolve(HWND, DWORD);
838 803 HRESULT SetPath(LPCSTR);
839 804 }
840 805
841 -interface IShellLinkW : IUnknown
842 -{
843 - HRESULT QueryInterface(REFIID,PVOID*);
844 - ULONG AddRef();
845 - ULONG Release();
846 - HRESULT GetPath(LPWSTR,int,WIN32_FIND_DATAW*,DWORD);
806 +interface IShellLinkW : IUnknown {
807 + HRESULT GetPath(LPWSTR, int, WIN32_FIND_DATAW*, DWORD);
847 808 HRESULT GetIDList(LPITEMIDLIST*);
848 809 HRESULT SetIDList(LPCITEMIDLIST);
849 - HRESULT GetDescription(LPWSTR,int);
810 + HRESULT GetDescription(LPWSTR, int);
850 811 HRESULT SetDescription(LPCWSTR);
851 - HRESULT GetWorkingDirectory(LPWSTR,int);
812 + HRESULT GetWorkingDirectory(LPWSTR, int);
852 813 HRESULT SetWorkingDirectory(LPCWSTR);
853 - HRESULT GetArguments(LPWSTR,int);
814 + HRESULT GetArguments(LPWSTR, int);
854 815 HRESULT SetArguments(LPCWSTR);
855 816 HRESULT GetHotkey(PWORD);
856 817 HRESULT SetHotkey(WORD);
857 818 HRESULT GetShowCmd(int*);
858 819 HRESULT SetShowCmd(int);
859 - HRESULT GetIconLocation(LPWSTR,int,int*);
860 - HRESULT SetIconLocation(LPCWSTR,int);
861 - HRESULT SetRelativePath(LPCWSTR ,DWORD);
862 - HRESULT Resolve(HWND,DWORD);
820 + HRESULT GetIconLocation(LPWSTR, int, int*);
821 + HRESULT SetIconLocation(LPCWSTR, int);
822 + HRESULT SetRelativePath(LPCWSTR , DWORD);
823 + HRESULT Resolve(HWND, DWORD);
863 824 HRESULT SetPath(LPCWSTR);
864 825 }
865 826
866 827
867 -interface IShellFolder : IUnknown
868 -{
869 - HRESULT QueryInterface(REFIID,PVOID*);
870 - ULONG AddRef();
871 - ULONG Release();
872 - HRESULT ParseDisplayName(HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG);
873 - HRESULT EnumObjects(HWND,DWORD,LPENUMIDLIST*);
874 - HRESULT BindToObject(LPCITEMIDLIST,LPBC,REFIID,PVOID*);
875 - HRESULT BindToStorage(LPCITEMIDLIST,LPBC,REFIID,PVOID*);
876 - HRESULT CompareIDs(LPARAM,LPCITEMIDLIST,LPCITEMIDLIST);
877 - HRESULT CreateViewObject(HWND,REFIID,PVOID*);
878 - HRESULT GetAttributesOf(UINT,LPCITEMIDLIST*,PULONG);
879 - HRESULT GetUIObjectOf(HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*);
880 - HRESULT GetDisplayNameOf(LPCITEMIDLIST,DWORD,LPSTRRET);
881 - HRESULT SetNameOf(HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*);
882 -}
883 -alias IShellFolder *LPSHELLFOLDER;
884 -
885 -static if (_WIN32_IE >= 0x0500) {
886 -
887 -interface IEnumExtraSearch: IUnknown
888 -{
889 - HRESULT QueryInterface(REFIID,PVOID*);
890 - ULONG AddRef();
891 - ULONG Release();
892 - HRESULT Next(ULONG,LPEXTRASEARCH*,ULONG*);
828 +interface IShellFolder : IUnknown {
829 + HRESULT ParseDisplayName(HWND, LPBC, LPOLESTR, PULONG, LPITEMIDLIST*, PULONG);
830 + HRESULT EnumObjects(HWND, DWORD, LPENUMIDLIST*);
831 + HRESULT BindToObject(LPCITEMIDLIST, LPBC, REFIID, PVOID*);
832 + HRESULT BindToStorage(LPCITEMIDLIST, LPBC, REFIID, PVOID*);
833 + HRESULT CompareIDs(LPARAM, LPCITEMIDLIST, LPCITEMIDLIST);
834 + HRESULT CreateViewObject(HWND, REFIID, PVOID*);
835 + HRESULT GetAttributesOf(UINT, LPCITEMIDLIST*, PULONG);
836 + HRESULT GetUIObjectOf(HWND, UINT, LPCITEMIDLIST*, REFIID, PUINT, PVOID*);
837 + HRESULT GetDisplayNameOf(LPCITEMIDLIST, DWORD, LPSTRRET);
838 + HRESULT SetNameOf(HWND, LPCITEMIDLIST, LPCOLESTR, DWORD, LPITEMIDLIST*);
839 +}
840 +alias IShellFolder LPSHELLFOLDER;
841 +
842 +static if (_WIN32_IE >= 0x500) {
843 +
844 +interface IEnumExtraSearch: IUnknown {
845 + HRESULT Next(ULONG, LPEXTRASEARCH*, ULONG*);
893 846 HRESULT Skip(ULONG);
894 847 HRESULT Reset();
895 - HRESULT Clone(IEnumExtraSearch**);
848 + HRESULT Clone(IEnumExtraSearch*);
896 849 }
897 -alias IEnumExtraSearch *LPENUMEXTRASEARCH;
850 +alias IEnumExtraSearch LPENUMEXTRASEARCH;
898 851
899 -interface IShellFolder2 : IShellFolder
900 -{
901 - HRESULT QueryInterface(REFIID,PVOID*);
902 - ULONG AddRef();
903 - ULONG Release();
904 - HRESULT ParseDisplayName(HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG);
905 - HRESULT EnumObjects(HWND,DWORD,LPENUMIDLIST*);
906 - HRESULT BindToObject(LPCITEMIDLIST,LPBC,REFIID,PVOID*);
907 - HRESULT BindToStorage(LPCITEMIDLIST,LPBC,REFIID,PVOID*);
908 - HRESULT CompareIDs(LPARAM,LPCITEMIDLIST,LPCITEMIDLIST);
909 - HRESULT CreateViewObject(HWND,REFIID,PVOID*);
910 - HRESULT GetAttributesOf(UINT,LPCITEMIDLIST*,PULONG);
911 - HRESULT GetUIObjectOf(HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*);
912 - HRESULT GetDisplayNameOf(LPCITEMIDLIST,DWORD,LPSTRRET);
913 - HRESULT SetNameOf(HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*);
852 +interface IShellFolder2 : IShellFolder {
853 + HRESULT ParseDisplayName(HWND, LPBC, LPOLESTR, PULONG, LPITEMIDLIST*, PULONG);
854 + HRESULT EnumObjects(HWND, DWORD, LPENUMIDLIST*);
855 + HRESULT BindToObject(LPCITEMIDLIST, LPBC, REFIID, PVOID*);
856 + HRESULT BindToStorage(LPCITEMIDLIST, LPBC, REFIID, PVOID*);
857 + HRESULT CompareIDs(LPARAM, LPCITEMIDLIST, LPCITEMIDLIST);
858 + HRESULT CreateViewObject(HWND, REFIID, PVOID*);
859 + HRESULT GetAttributesOf(UINT, LPCITEMIDLIST*, PULONG);
860 + HRESULT GetUIObjectOf(HWND, UINT, LPCITEMIDLIST*, REFIID, PUINT, PVOID*);
861 + HRESULT GetDisplayNameOf(LPCITEMIDLIST, DWORD, LPSTRRET);
862 + HRESULT SetNameOf(HWND, LPCITEMIDLIST, LPCOLESTR, DWORD, LPITEMIDLIST*);
914 863 HRESULT GetDefaultSearchGUID(GUID*);
915 - HRESULT EnumSearches(IEnumExtraSearch**);
916 - HRESULT GetDefaultColumn(DWORD,ULONG*,ULONG*);
917 - HRESULT GetDefaultColumnState(UINT,SHCOLSTATEF*);
918 - HRESULT GetDetailsEx(LPCITEMIDLIST, CPtr!(SHCOLUMNID),VARIANT*);
919 - HRESULT GetDetailsOf(LPCITEMIDLIST,UINT,SHELLDETAILS*);
920 - HRESULT MapColumnToSCID(UINT,SHCOLUMNID*);
921 -}
922 -alias IShellFolder2 *LPSHELLFOLDER2;
923 -
924 -} /* _WIN32_IE >= 0x0500 */
925 -
926 -interface ICopyHook : IUnknown
927 -{
928 - HRESULT QueryInterface(REFIID,PVOID*);
929 - ULONG AddRef();
930 - ULONG Release();
931 - UINT CopyCallback(HWND,UINT,UINT,LPCSTR,DWORD,LPCSTR,DWORD);
932 -}
933 -alias ICopyHook *LPCOPYHOOK;
934 -
935 -interface IFileViewerSite : IUnknown
936 -{
937 - HRESULT QueryInterface(REFIID,PVOID*);
938 - ULONG AddRef();
939 - ULONG Release();
864 + HRESULT EnumSearches(IEnumExtraSearch*);
865 + HRESULT GetDefaultColumn(DWORD, ULONG*, ULONG*);
866 + HRESULT GetDefaultColumnState(UINT, SHCOLSTATEF*);
867 + HRESULT GetDetailsEx(LPCITEMIDLIST, const(SHCOLUMNID)*, VARIANT*);
868 + HRESULT GetDetailsOf(LPCITEMIDLIST, UINT, SHELLDETAILS*);
869 + HRESULT MapColumnToSCID(UINT, SHCOLUMNID*);
870 +}
871 +alias IShellFolder2 LPSHELLFOLDER2;
872 +
873 +} /* _WIN32_IE >= 0x500 */
874 +
875 +interface ICopyHook : IUnknown {
876 + UINT CopyCallback(HWND, UINT, UINT, LPCSTR, DWORD, LPCSTR, DWORD);
877 +}
878 +alias ICopyHook LPCOPYHOOK;
879 +
880 +interface IFileViewerSite : IUnknown {
940 881 HRESULT SetPinnedWindow(HWND);
941 882 HRESULT GetPinnedWindow(HWND*);
942 883 }
943 -alias IFileViewerSite *LPFILEVIEWERSITE;
884 +alias IFileViewerSite LPFILEVIEWERSITE;
944 885
945 -interface IFileViewer : IUnknown
946 -{
947 - HRESULT QueryInterface(REFIID,PVOID*);
948 - ULONG AddRef();
949 - ULONG Release();
886 +interface IFileViewer : IUnknown {
950 887 HRESULT ShowInitialize(LPFILEVIEWERSITE);
951 888 HRESULT Show(LPFVSHOWINFO);
952 - HRESULT PrintTo(LPSTR,BOOL);
889 + HRESULT PrintTo(LPSTR, BOOL);
953 890 }
954 -alias IFileViewer *LPFILEVIEWER;
891 +alias IFileViewer LPFILEVIEWER;
955 892
956 -interface IFileSystemBindData : IUnknown
957 -{
958 - HRESULT QueryInterface(REFIID,PVOID*);
959 - ULONG AddRef();
960 - ULONG Release();
961 - HRESULT SetFindData(CPtr!(WIN32_FIND_DATAW));
893 +interface IFileSystemBindData : IUnknown {
894 + HRESULT SetFindData(const(WIN32_FIND_DATAW)*);
962 895 HRESULT GetFindData(WIN32_FIND_DATAW*);
963 896 }
964 897
965 -interface IPersistFolder : IPersist
966 -{
967 - HRESULT QueryInterface(REFIID,PVOID*);
968 - ULONG AddRef();
969 - ULONG Release();
898 +interface IPersistFolder : IPersist {
899 + HRESULT GetClassID(CLSID*);
900 + HRESULT Initialize(LPCITEMIDLIST);
901 +}
902 +alias IPersistFolder LPPERSISTFOLDER;
903 +
904 +static if (_WIN32_IE >= 0x400 || _WIN32_WINNT >= 0x500) {
905 +
906 +interface IPersistFolder2 : IPersistFolder {
970 907 HRESULT GetClassID(CLSID*);
971 908 HRESULT Initialize(LPCITEMIDLIST);
909 + HRESULT GetCurFolder(LPITEMIDLIST*);
972 910 }
973 -alias IPersistFolder *LPPERSISTFOLDER;
911 +alias IPersistFolder2 LPPERSISTFOLDER2;
974 912
975 -static if (_WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500) {
913 +}/* _WIN32_IE >= 0x400 || _WIN32_WINNT >= 0x500 */
976 914
977 -interface IPersistFolder2 : IPersistFolder
978 -{
979 - HRESULT QueryInterface(REFIID,PVOID*);
980 - ULONG AddRef();
981 - ULONG Release();
915 +static if (_WIN32_IE >= 0x500) {
916 +
917 +interface IPersistFolder3 : IPersistFolder2 {
982 918 HRESULT GetClassID(CLSID*);
983 919 HRESULT Initialize(LPCITEMIDLIST);
984 920 HRESULT GetCurFolder(LPITEMIDLIST*);
985 -}
986 -alias IPersistFolder2 *LPPERSISTFOLDER2;
987 -
988 -}/* _WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500 */
989 -
990 -static if (_WIN32_IE >= 0x0500) {
991 -
992 -interface IPersistFolder3 : IPersistFolder2
993 -{
994 - HRESULT QueryInterface(REFIID,PVOID*);
995 - ULONG AddRef();
996 - ULONG Release();
997 - HRESULT GetClassID(CLSID*);
998 - HRESULT Initialize(LPCITEMIDLIST);
999 - HRESULT GetCurFolder(LPITEMIDLIST*);
1000 - HRESULT InitializeEx(IBindCtx*,LPCITEMIDLIST, CPtr!(PERSIST_FOLDER_TARGET_INFO));
921 + HRESULT InitializeEx(IBindCtx, LPCITEMIDLIST, const(PERSIST_FOLDER_TARGET_INFO)*);
1001 922 HRESULT GetFolderTargetInfo(PERSIST_FOLDER_TARGET_INFO*);
1002 923 }
1003 -alias IPersistFolder3 *LPPERSISTFOLDER3;
924 +alias IPersistFolder3 LPPERSISTFOLDER3;
1004 925
1005 -} /* _WIN32_IE >= 0x0500 */
926 +} /* _WIN32_IE >= 0x500 */
1006 927
1007 -alias IShellBrowser* LPSHELLBROWSER;
1008 -alias IShellView* LPSHELLVIEW;
928 +alias IShellBrowser LPSHELLBROWSER;
929 +alias IShellView LPSHELLVIEW;
1009 930
1010 -interface IShellBrowser : IOleWindow
1011 -{
1012 - HRESULT QueryInterface(REFIID,PVOID*);
1013 - ULONG AddRef();
1014 - ULONG Release();
931 +interface IShellBrowser : IOleWindow {
932 + HRESULT GetWindow(HWND*);
933 + HRESULT ContextSensitiveHelp(BOOL);
934 + HRESULT InsertMenusSB(HMENU, LPOLEMENUGROUPWIDTHS);
935 + HRESULT SetMenuSB(HMENU, HOLEMENU, HWND);
936 + HRESULT RemoveMenusSB(HMENU);
937 + HRESULT SetStatusTextSB(LPCOLESTR);
938 + HRESULT EnableModelessSB(BOOL);
939 + HRESULT TranslateAcceleratorSB(LPMSG, WORD);
940 + HRESULT BrowseObject(LPCITEMIDLIST, UINT);
941 + HRESULT GetViewStateStream(DWORD, LPSTREAM*);
942 + HRESULT GetControlWindow(UINT, HWND*);
943 + HRESULT SendControlMsg(UINT, UINT, WPARAM, LPARAM, LRESULT*);
944 + HRESULT QueryActiveShellView(LPSHELLVIEW*);
945 + HRESULT OnViewWindowActive(LPSHELLVIEW);
946 + HRESULT SetToolbarItems(LPTBBUTTON, UINT, UINT);
947 +}
948 +
949 +interface IShellView : IOleWindow {
1015 950 HRESULT GetWindow(HWND*);
1016 951 HRESULT ContextSensitiveHelp(BOOL);
1017 - HRESULT InsertMenusSB(HMENU,LPOLEMENUGROUPWIDTHS);
1018 - HRESULT SetMenuSB(HMENU,HOLEMENU,HWND);
1019 - HRESULT RemoveMenusSB(HMENU);
1020 - HRESULT SetStatusTextSB(LPCOLESTR);
1021 - HRESULT EnableModelessSB(BOOL);
1022 - HRESULT TranslateAcceleratorSB(LPMSG,WORD);
1023 - HRESULT BrowseObject(LPCITEMIDLIST,UINT);
1024 - HRESULT GetViewStateStream(DWORD,LPSTREAM*);
1025 - HRESULT GetControlWindow(UINT,HWND*);
1026 - HRESULT SendControlMsg(UINT,UINT,WPARAM,LPARAM,LRESULT*);
1027 - HRESULT QueryActiveShellView(LPSHELLVIEW*);
1028 - HRESULT OnViewWindowActive(LPSHELLVIEW);
1029 - HRESULT SetToolbarItems(LPTBBUTTON,UINT,UINT);
1030 -}
1031 -
1032 -interface IShellView : IOleWindow
1033 -{
1034 - HRESULT QueryInterface(REFIID,PVOID*);
1035 - ULONG AddRef();
1036 - ULONG Release();
952 + HRESULT TranslateAccelerator(LPMSG);
953 +//[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT
954 +//[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
955 +//[Yes] #else
956 + HRESULT EnableModeless(BOOL);
957 +//[Yes] #endif
958 + HRESULT UIActivate(UINT);
959 + HRESULT Refresh();
960 + HRESULT CreateViewWindow(IShellView, LPCFOLDERSETTINGS, LPSHELLBROWSER, RECT*, HWND*);
961 + HRESULT DestroyViewWindow();
962 + HRESULT GetCurrentInfo(LPFOLDERSETTINGS);
963 + HRESULT AddPropertySheetPages(DWORD, LPFNADDPROPSHEETPAGE, LPARAM);
964 + HRESULT SaveViewState();
965 + HRESULT SelectItem(LPCITEMIDLIST, UINT);
966 + HRESULT GetItemObject(UINT, REFIID, PVOID*);
967 +}
968 +
969 +interface ICommDlgBrowser : IUnknown {
970 + HRESULT OnDefaultCommand(IShellView);
971 + HRESULT OnStateChange(IShellView, ULONG);
972 + HRESULT IncludeObject(IShellView, LPCITEMIDLIST);
973 +}
974 +alias ICommDlgBrowser LPCOMMDLGBROWSER;
975 +
976 +alias GUID SHELLVIEWID;
977 +
978 +struct SV2CVW2_PARAMS {
979 + DWORD cbSize = this.sizeof;
980 + IShellView psvPrev;
981 + FOLDERSETTINGS *pfs;
982 + IShellBrowser psbOwner;
983 + RECT *prcView;
984 + const(SHELLVIEWID)* pvid;
985 + HWND hwndView;
986 +}
987 +alias SV2CVW2_PARAMS* LPSV2CVW2_PARAMS;
988 +
989 +interface IShellView2 : IShellView {
1037 990 HRESULT GetWindow(HWND*);
1038 991 HRESULT ContextSensitiveHelp(BOOL);
1039 992 HRESULT TranslateAccelerator(LPMSG);
1040 993 //[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT
1041 994 //[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
1042 995 //[Yes] #else
1043 996 HRESULT EnableModeless(BOOL);
1044 997 //[Yes] #endif
1045 998 HRESULT UIActivate(UINT);
1046 999 HRESULT Refresh();
1047 - HRESULT CreateViewWindow(IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*);
1000 + HRESULT CreateViewWindow(IShellView, LPCFOLDERSETTINGS, LPSHELLBROWSER, RECT*, HWND*);
1048 1001 HRESULT DestroyViewWindow();
1049 1002 HRESULT GetCurrentInfo(LPFOLDERSETTINGS);
1050 - HRESULT AddPropertySheetPages(DWORD,LPFNADDPROPSHEETPAGE,LPARAM);
1003 + HRESULT AddPropertySheetPages(DWORD, LPFNADDPROPSHEETPAGE, LPARAM);
1051 1004 HRESULT SaveViewState();
1052 - HRESULT SelectItem(LPCITEMIDLIST,UINT);
1053 - HRESULT GetItemObject(UINT,REFIID,PVOID*);
1054 -}
1055 -
1056 -interface ICommDlgBrowser : IUnknown
1057 -{
1058 - HRESULT QueryInterface(REFIID,PVOID*);
1059 - ULONG AddRef();
1060 - ULONG Release();
1061 - HRESULT OnDefaultCommand(IShellView*);
1062 - HRESULT OnStateChange(IShellView*,ULONG);
1063 - HRESULT IncludeObject(IShellView*,LPCITEMIDLIST);
1064 -}
1065 -alias ICommDlgBrowser *LPCOMMDLGBROWSER;
1066 -
1067 -alias GUID SHELLVIEWID;
1068 -
1069 -struct SV2CVW2_PARAMS {
1070 - DWORD cbSize = this.sizeof;
1071 - IShellView *psvPrev;
1072 - FOLDERSETTINGS *pfs;
1073 - IShellBrowser *psbOwner;
1074 - RECT *prcView;
1075 - CPtr!(SHELLVIEWID) pvid;
1076 - HWND hwndView;
1077 -}
1078 -alias SV2CVW2_PARAMS* LPSV2CVW2_PARAMS;
1079 -
1080 -interface IShellView2 : IShellView
1081 -{
1082 -
1083 - HRESULT QueryInterface(REFIID,PVOID*);
1084 - ULONG AddRef();
1085 - ULONG Release();
1086 - HRESULT GetWindow(HWND*);
1087 - HRESULT ContextSensitiveHelp(BOOL);
1088 - HRESULT TranslateAccelerator(LPMSG);
1089 -//[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT
1090 -//[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
1091 -//[Yes] #else
1092 - HRESULT EnableModeless(BOOL);
1093 -//[Yes] #endif
1094 - HRESULT UIActivate(UINT);
1095 - HRESULT Refresh();
1096 - HRESULT CreateViewWindow(IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*);
1097 - HRESULT DestroyViewWindow();
1098 - HRESULT GetCurrentInfo(LPFOLDERSETTINGS);
1099 - HRESULT AddPropertySheetPages(DWORD,LPFNADDPROPSHEETPAGE,LPARAM);
1100 - HRESULT SaveViewState();
1101 - HRESULT SelectItem(LPCITEMIDLIST,UINT);
1102 - HRESULT GetItemObject(UINT,REFIID,PVOID*);
1103 - HRESULT GetView(SHELLVIEWID*,ULONG);
1005 + HRESULT SelectItem(LPCITEMIDLIST, UINT);
1006 + HRESULT GetItemObject(UINT, REFIID, PVOID*);
1007 + HRESULT GetView(SHELLVIEWID*, ULONG);
1104 1008 HRESULT CreateViewWindow2(LPSV2CVW2_PARAMS);
1105 1009 }
1106 1010
1107 -interface IShellExecuteHookA : IUnknown
1108 -{
1109 - HRESULT QueryInterface(REFIID,PVOID*);
1110 - ULONG AddRef();
1111 - ULONG Release();
1011 +interface IShellExecuteHookA : IUnknown {
1112 1012 HRESULT Execute(LPSHELLEXECUTEINFOA);
1113 1013 }
1114 1014
1115 -interface IShellExecuteHookW : IUnknown
1116 -{
1117 - HRESULT QueryInterface(REFIID,PVOID*);
1118 - ULONG AddRef();
1119 - ULONG Release();
1015 +interface IShellExecuteHookW : IUnknown {
1120 1016 HRESULT Execute(LPSHELLEXECUTEINFOW);
1121 1017 }
1122 1018
1123 -interface IShellIcon : IUnknown
1124 -{
1125 - HRESULT QueryInterface(REFIID,PVOID*);
1126 - ULONG AddRef();
1127 - ULONG Release();
1128 - HRESULT GetIconOf(LPCITEMIDLIST,UINT,PINT);
1019 +interface IShellIcon : IUnknown {
1020 + HRESULT GetIconOf(LPCITEMIDLIST, UINT, PINT);
1129 1021 }
1130 -alias IShellIcon* LPSHELLICON;
1022 +alias IShellIcon LPSHELLICON;
1131 1023
1132 1024 struct SHELLFLAGSTATE {
1133 -// TODO
1134 - short bitflags_; // for D.
1135 - /*
1025 + short _bf;
1026 +/*
1136 1027 BOOL fShowAllObjects : 1;
1137 1028 BOOL fShowExtensions : 1;
1138 1029 BOOL fNoConfirmRecycle : 1;
1139 1030 BOOL fShowSysFiles : 1;
1140 1031 BOOL fShowCompColor : 1;
1141 1032 BOOL fDoubleClickInWebView : 1;
1142 1033 BOOL fDesktopHTML : 1;
................................................................................
1144 1035 BOOL fDontPrettyPath : 1;
1145 1036 BOOL fShowAttribCol : 1;
1146 1037 BOOL fMapNetDrvBtn : 1;
1147 1038 BOOL fShowInfoTip : 1;
1148 1039 BOOL fHideIcons : 1;
1149 1040 UINT fRestFlags : 3;
1150 1041 */
1042 + @property bool fShowAllObjects() { return cast(bool) (_bf & 0x0001); }
1043 + @property bool fShowExtensions() { return cast(bool) (_bf & 0x0002); }
1044 + @property bool fNoConfirmRecycle() { return cast(bool) (_bf & 0x0004); }
1045 + @property bool fShowSysFiles() { return cast(bool) (_bf & 0x0008); }
1046 + @property bool fShowCompColor() { return cast(bool) (_bf & 0x0010); }
1047 + @property bool fDoubleClickInWebView() { return cast(bool) (_bf & 0x0020); }
1048 + @property bool fDesktopHTML() { return cast(bool) (_bf & 0x0040); }
1049 + @property bool fWin95Classic() { return cast(bool) (_bf & 0x0080); }
1050 + @property bool fDontPrettyPath() { return cast(bool) (_bf & 0x0100); }
1051 + @property bool fShowAttribCol() { return cast(bool) (_bf & 0x0200); }
1052 + @property bool fMapNetDrvBtn() { return cast(bool) (_bf & 0x0400); }
1053 + @property bool fShowInfoTip() { return cast(bool) (_bf & 0x0800); }
1054 + @property bool fHideIcons() { return cast(bool) (_bf & 0x1000); }
1055 + @property ubyte fRestFlags() { return cast(ubyte) (_bf >> 13); }
1056 +
1057 + @property bool fShowAllObjects(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFE) | f); return f; }
1058 + @property bool fShowExtensions(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFD) | (f << 1)); return f; }
1059 + @property bool fNoConfirmRecycle(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFB) | (f << 2)); return f; }
1060 + @property bool fShowSysFiles(bool f) { _bf = cast(ushort) ((_bf & ~0xFFF8) | (f << 3)); return f; }
1061 + @property bool fShowCompColor(bool f) { _bf = cast(ushort) ((_bf & ~0xFFEF) | (f << 4)); return f; }
1062 + @property bool fDoubleClickInWebView(bool f) { _bf = cast(ushort) ((_bf & ~0xFFDF) | (f << 5)); return f; }
1063 + @property bool fDesktopHTML(bool f) { _bf = cast(ushort) ((_bf & ~0xFFBF) | (f << 6)); return f; }
1064 + @property bool fWin95Classic(bool f) { _bf = cast(ushort) ((_bf & ~0xFF8F) | (f << 7)); return f; }
1065 + @property bool fDontPrettyPath(bool f) { _bf = cast(ushort) ((_bf & ~0xFEFF) | (f << 8)); return f; }
1066 + @property bool fShowAttribCol(bool f) { _bf = cast(ushort) ((_bf & ~0xFDFF) | (f << 9)); return f; }
1067 + @property bool fMapNetDrvBtn(bool f) { _bf = cast(ushort) ((_bf & ~0xFBFF) | (f << 10)); return f; }
1068 + @property bool fShowInfoTip(bool f) { _bf = cast(ushort) ((_bf & ~0xF8FF) | (f << 11)); return f; }
1069 + @property bool fHideIcons(bool f) { _bf = cast(ushort) ((_bf & ~0xEFFF) | (f << 12)); return f; }
1070 + @property ubyte fRestFlags(ubyte f) { _bf = cast(ushort) ((_bf & ~0x1FFF) | (f << 13)); return cast(ubyte) (f & 7); }
1151 1071 }
1152 1072 alias SHELLFLAGSTATE* LPSHELLFLAGSTATE;
1153 1073
1154 1074 const SSF_SHOWALLOBJECTS = 0x1;
1155 1075 const SSF_SHOWEXTENSIONS = 0x2;
1156 1076 const SSF_SHOWCOMPCOLOR = 0x8;
1157 1077 const SSF_SHOWSYSFILES = 0x20;
................................................................................
1161 1081 const SSF_WIN95CLASSIC = 0x400;
1162 1082 const SSF_DONTPRETTYPATH = 0x800;
1163 1083 const SSF_MAPNETDRVBUTTON = 0x1000;
1164 1084 const SSF_SHOWINFOTIP = 0x2000;
1165 1085 const SSF_HIDEICONS = 0x4000;
1166 1086 const SSF_NOCONFIRMRECYCLE = 0x8000;
1167 1087
1168 -interface IShellIconOverlayIdentifier : IUnknown
1169 -{
1170 - HRESULT QueryInterface(REFIID,PVOID*);
1171 - ULONG AddRef();
1172 - ULONG Release();
1173 - HRESULT IsMemberOf(LPCWSTR,DWORD);
1174 - HRESULT GetOverlayInfo(LPWSTR,int,int*,DWORD*);
1088 +interface IShellIconOverlayIdentifier : IUnknown {
1089 + HRESULT IsMemberOf(LPCWSTR, DWORD);
1090 + HRESULT GetOverlayInfo(LPWSTR, int, int*, DWORD*);
1175 1091 HRESULT GetPriority(int*);
1176 1092 }
1177 1093
1178 1094 const ISIOI_ICONFILE = 0x00000001;
1179 1095 const ISIOI_ICONINDEX = 0x00000002;
1180 1096
1181 -static if (_WIN32_WINNT >= 0x0500) {/* W2K */
1097 +static if (_WIN32_WINNT >= 0x500) {
1182 1098 struct SHELLSTATE {
1183 - //TODO:
1099 + uint _bf1;
1100 + DWORD dwWin95Unused;
1101 + UINT uWin95Unused;
1102 + LONG lParamSort;
1103 + int iSortDirection;
1104 + UINT _version;
1105 + UINT uNotUsed;
1106 + uint _bf2;
1184 1107 /*
1185 1108 BOOL fShowAllObjects : 1;
1186 1109 BOOL fShowExtensions : 1;
1187 1110 BOOL fNoConfirmRecycle : 1;
1188 1111 BOOL fShowSysFiles : 1;
1189 1112 BOOL fShowCompColor : 1;
1190 1113 BOOL fDoubleClickInWebView : 1;
................................................................................
1195 1118 BOOL fMapNetDrvBtn : 1;
1196 1119 BOOL fShowInfoTip : 1;
1197 1120 BOOL fHideIcons : 1;
1198 1121 BOOL fWebView : 1;
1199 1122 BOOL fFilter : 1;
1200 1123 BOOL fShowSuperHidden : 1;
1201 1124 BOOL fNoNetCrawling : 1;
1202 - DWORD dwWin95Unused;
1203 - UINT uWin95Unused;
1204 - LONG lParamSort;
1205 - int iSortDirection;
1206 - UINT version;
1207 - UINT uNotUsed;
1125 + */
1126 + @property bool fShowAllObjects() { return cast(bool) (_bf1 & 0x00000001); }
1127 + @property bool fShowExtensions() { return cast(bool) (_bf1 & 0x00000002); }
1128 + @property bool fNoConfirmRecycle() { return cast(bool) (_bf1 & 0x00000004); }
1129 + @property bool fShowSysFiles() { return cast(bool) (_bf1 & 0x00000008); }
1130 + @property bool fShowCompColor() { return cast(bool) (_bf1 & 0x00000010); }
1131 + @property bool fDoubleClickInWebView() { return cast(bool) (_bf1 & 0x00000020); }
1132 + @property bool fDesktopHTML() { return cast(bool) (_bf1 & 0x00000040); }
1133 + @property bool fWin95Classic() { return cast(bool) (_bf1 & 0x00000080); }
1134 + @property bool fDontPrettyPath() { return cast(bool) (_bf1 & 0x00000100); }
1135 + @property bool fShowAttribCol() { return cast(bool) (_bf1 & 0x00000200); }
1136 + @property bool fMapNetDrvBtn() { return cast(bool) (_bf1 & 0x00000400); }
1137 + @property bool fShowInfoTip() { return cast(bool) (_bf1 & 0x00000800); }
1138 + @property bool fHideIcons() { return cast(bool) (_bf1 & 0x00001000); }
1139 + @property bool fWebView() { return cast(bool) (_bf1 & 0x00002000); }
1140 + @property bool fFilter() { return cast(bool) (_bf1 & 0x00004000); }
1141 + @property bool fShowSuperHidden() { return cast(bool) (_bf1 & 0x00008000); }
1142 + @property bool fNoNetCrawling() { return cast(bool) (_bf1 & 0x00010000); }
1143 +
1144 + @property bool fShowAllObjects(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFE) | f); return f; }
1145 + @property bool fShowExtensions(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFD) | (f << 1)); return f; }
1146 + @property bool fNoConfirmRecycle(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFB) | (f << 2)); return f; }
1147 + @property bool fShowSysFiles(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFF8) | (f << 3)); return f; }
1148 + @property bool fShowCompColor(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFEF) | (f << 4)); return f; }
1149 + @property bool fDoubleClickInWebView(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFDF) | (f << 5)); return f; }
1150 + @property bool fDesktopHTML(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFBF) | (f << 6)); return f; }
1151 + @property bool fWin95Classic(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFF8F) | (f << 7)); return f; }
1152 + @property bool fDontPrettyPath(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFEFF) | (f << 8)); return f; }
1153 + @property bool fShowAttribCol(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFDFF) | (f << 9)); return f; }
1154 + @property bool fMapNetDrvBtn(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFBFF) | (f << 10)); return f; }
1155 + @property bool fShowInfoTip(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFF8FF) | (f << 11)); return f; }
1156 + @property bool fHideIcons(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFEFFF) | (f << 12)); return f; }
1157 + @property bool fWebView(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFDFFF) | (f << 13)); return f; }
1158 + @property bool fFilter(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFBFFF) | (f << 14)); return f; }
1159 + @property bool fShowSuperHidden(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFF8FFF) | (f << 15)); return f; }
1160 + @property bool fNoNetCrawling(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFEFFFF) | (f << 16)); return f; }
1161 + /*
1208 1162 BOOL fSepProcess : 1;
1209 1163 BOOL fStartPanelOn : 1;
1210 1164 BOOL fShowStartPage : 1;
1211 1165 UINT fSpareFlags : 13;
1212 -*/
1166 + */
1167 + @property bool fSepProcess() { return cast(bool) (_bf2 & 0x00000001); }
1168 + @property bool fStartPanelOn() { return cast(bool) (_bf2 & 0x00000002); }
1169 + @property bool fShowStartPage() { return cast(bool) (_bf2 & 0x00000004); }
1170 + @property ushort fSpareFlags() { return cast(ushort) ((_bf2 & 0x0000FFF8) >> 3); }
1171 +
1172 + @property bool fSepProcess(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFE) | f); return f; }
1173 + @property bool fStartPanelOn(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFD) | (f << 1)); return f; }
1174 + @property bool fShowStartPage(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFB) | (f << 2)); return f; }
1175 + @property ushort fSpareFlags(ushort f) {
1176 + _bf2 = cast(ushort) ((_bf2 & ~0xFFFF0007) | ((f & 0x1FFF) << 3));
1177 + return cast(ushort) (f & 0x1FFF);
1178 + }
1213 1179 }
1214 1180 alias SHELLSTATE* LPSHELLSTATE;
1215 1181 }
1216 1182
1217 -static if (_WIN32_IE >= 0x0500) {
1218 - align(8):
1219 - struct SHDRAGIMAGE {
1220 - SIZE sizeDragImage;
1221 - POINT ptOffset;
1222 - HBITMAP hbmpDragImage;
1223 - COLORREF crColorKey;
1183 +static if (_WIN32_IE >= 0x500) {
1184 + align(8) {
1185 + struct SHDRAGIMAGE {
1186 + SIZE sizeDragImage;
1187 + POINT ptOffset;
1188 + HBITMAP hbmpDragImage;
1189 + COLORREF crColorKey;
1190 + }
1191 + alias SHDRAGIMAGE* LPSHDRAGIMAGE;
1224 1192 }
1225 - alias SHDRAGIMAGE* LPSHDRAGIMAGE;
1226 - align:
1227 1193
1228 - interface IDragSourceHelper : IUnknown
1229 - {
1230 - HRESULT QueryInterface(REFIID riid, void **ppv);
1231 - ULONG AddRef();
1232 - ULONG Release();
1233 - HRESULT InitializeFromBitmap(LPSHDRAGIMAGE pshdi, IDataObject* pDataObject);
1234 - HRESULT InitializeFromWindow(HWND hwnd, POINT* ppt, IDataObject* pDataObject);
1194 + interface IDragSourceHelper : IUnknown {
1195 + HRESULT InitializeFromBitmap(LPSHDRAGIMAGE pshdi, IDataObject pDataObject);
1196 + HRESULT InitializeFromWindow(HWND hwnd, POINT* ppt, IDataObject pDataObject);
1235 1197 }
1236 1198
1237 - interface IDropTargetHelper : IUnknown
1238 - {
1239 - HRESULT QueryInterface(REFIID riid, void** ppv);
1240 - ULONG AddRef();
1241 - ULONG Release();
1242 - HRESULT DragEnter(HWND hwndTarget, IDataObject* pDataObject, POINT* ppt, DWORD dwEffect);
1199 + interface IDropTargetHelper : IUnknown {
1200 + HRESULT DragEnter(HWND hwndTarget, IDataObject pDataObject, POINT* ppt, DWORD dwEffect);
1243 1201 HRESULT DragLeave();
1244 1202 HRESULT DragOver(POINT* ppt, DWORD dwEffect);
1245 - HRESULT Drop(IDataObject* pDataObject, POINT* ppt, DWORD dwEffect);
1203 + HRESULT Drop(IDataObject pDataObject, POINT* ppt, DWORD dwEffect);
1246 1204 HRESULT Show(BOOL fShow);
1247 1205 }
1248 1206 }
1249 1207
1250 1208 extern (Windows):
1251 -void SHAddToRecentDocs(UINT,PCVOID);
1209 +void SHAddToRecentDocs(UINT, PCVOID);
1252 1210 LPITEMIDLIST SHBrowseForFolderA(PBROWSEINFOA);
1253 1211 LPITEMIDLIST SHBrowseForFolderW(PBROWSEINFOW);
1254 -void SHChangeNotify(LONG,UINT,PCVOID,PCVOID);
1255 -HRESULT SHGetDataFromIDListA(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
1256 -HRESULT SHGetDataFromIDListW(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
1212 +void SHChangeNotify(LONG, UINT, PCVOID, PCVOID);
1213 +HRESULT SHGetDataFromIDListA(LPSHELLFOLDER, LPCITEMIDLIST, int, PVOID, int);
1214 +HRESULT SHGetDataFromIDListW(LPSHELLFOLDER, LPCITEMIDLIST, int, PVOID, int);
1257 1215 HRESULT SHGetDesktopFolder(LPSHELLFOLDER*);
1258 -HRESULT SHGetInstanceExplorer(IUnknown **);
1216 +HRESULT SHGetInstanceExplorer(IUnknown*);
1259 1217 HRESULT SHGetMalloc(LPMALLOC*);
1260 -BOOL SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR);
1261 -BOOL SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR);
1262 -HRESULT SHGetSpecialFolderLocation(HWND,int,LPITEMIDLIST*);
1218 +BOOL SHGetPathFromIDListA(LPCITEMIDLIST, LPSTR);
1219 +BOOL SHGetPathFromIDListW(LPCITEMIDLIST, LPWSTR);
1220 +HRESULT SHGetSpecialFolderLocation(HWND, int, LPITEMIDLIST*);
1263 1221 HRESULT SHLoadInProc(REFCLSID);
1264 1222
1265 -static if (_WIN32_IE >= 0x0400) {
1266 - BOOL SHGetSpecialFolderPathA(HWND,LPSTR,int,BOOL);
1267 - BOOL SHGetSpecialFolderPathW(HWND,LPWSTR,int,BOOL);
1223 +static if (_WIN32_IE >= 0x400) {
1224 + BOOL SHGetSpecialFolderPathA(HWND, LPSTR, int, BOOL);
1225 + BOOL SHGetSpecialFolderPathW(HWND, LPWSTR, int, BOOL);
1268 1226 }
1269 1227
1270 1228 /* SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K */
1271 -HRESULT SHGetFolderPathA(HWND,int,HANDLE,DWORD,LPSTR);
1272 -HRESULT SHGetFolderPathW(HWND,int,HANDLE,DWORD,LPWSTR);
1229 +HRESULT SHGetFolderPathA(HWND, int, HANDLE, DWORD, LPSTR);
1230 +HRESULT SHGetFolderPathW(HWND, int, HANDLE, DWORD, LPWSTR);
1273 1231
1274 -static if ((_WIN32_WINDOWS >= 0x0490) || (_WIN32_WINNT >= 0x0500)) {/* ME or W2K */
1275 - HRESULT SHGetFolderLocation(HWND,int,HANDLE,DWORD,LPITEMIDLIST*);
1276 -}
1277 -
1278 -static if (_WIN32_WINNT >= 0x0500) {
1279 - INT SHCreateDirectoryExA(HWND,LPCSTR,LPSECURITY_ATTRIBUTES);
1280 - INT SHCreateDirectoryExW(HWND,LPCWSTR,LPSECURITY_ATTRIBUTES);
1281 - HRESULT SHBindToParent(LPCITEMIDLIST,REFIID,VOID**,LPCITEMIDLIST*);
1232 +static if (_WIN32_WINNT >= 0x500) {
1233 + INT SHGetIconOverlayIndexW(LPCWSTR pszIconPath, int iIconIndex);
1234 + INT SHGetIconOverlayIndexA(LPCSTR pszIconPath, int iIconIndex);
1235 + HRESULT SHGetFolderLocation(HWND, int, HANDLE, DWORD, LPITEMIDLIST*);
1236 + INT SHCreateDirectoryExA(HWND, LPCSTR, LPSECURITY_ATTRIBUTES);
1237 + INT SHCreateDirectoryExW(HWND, LPCWSTR, LPSECURITY_ATTRIBUTES);
1238 + HRESULT SHBindToParent(LPCITEMIDLIST, REFIID, VOID**, LPCITEMIDLIST*);
1282 1239 }
1283 1240
1284 -static if (_WIN32_WINNT >= 0x0501) {/* XP */
1285 - HRESULT SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR);
1286 - HRESULT SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR);
1241 +static if (_WIN32_WINNT >= 0x501) {
1242 + enum {
1243 + PRF_VERIFYEXISTS = 0x0001,
1244 + PRF_TRYPROGRAMEXTENSIONS = (0x0002 | PRF_VERIFYEXISTS),
1245 + PRF_FIRSTDIRDEF = 0x0004,
1246 + PRF_DONTFINDLNK = 0x0008,
1247 + IDO_SHGIOI_SHARE = 0x0FFFFFFF,
1248 + IDO_SHGIOI_LINK = 0x0FFFFFFE,
1249 + IDO_SHGIOI_SLOWFILE = 0x0FFFFFFD,
1250 + IDO_SHGIOI_DEFAULT = 0x0FFFFFFC
1251 + }
1252 +
1253 + struct SHDESCRIPTIONID {
1254 + DWORD dwDescriptionId;
1255 + CLSID clsid;
1256 + }
1257 + alias SHDESCRIPTIONID* LPSHDESCRIPTIONID;
1258 +
1259 + BOOL PathResolve(LPWSTR, LPCWSTR*, UINT);
1260 + HRESULT SHGetFolderPathAndSubDirA(HWND, int, HANDLE, DWORD, LPCSTR, LPSTR);
1261 + HRESULT SHGetFolderPathAndSubDirW(HWND, int, HANDLE, DWORD, LPCWSTR, LPWSTR);
1262 + HRESULT SHParseDisplayName(LPCWSTR, IBindCtx, LPITEMIDLIST, SFGAOF, SFGAOF*);
1287 1263 }
1288 1264
1289 -void SHGetSettings(LPSHELLFLAGSTATE,DWORD);
1265 +void SHGetSettings(LPSHELLFLAGSTATE, DWORD);
1290 1266
1291 -static if (_WIN32_WINNT >= 0x0500) {/* W2K */
1292 - void SHGetSetSettings(LPSHELLSTATE,DWORD,BOOL);
1293 -}
1294 -
1295 -static if (_WIN32_WINNT >= 0x0500) {/* W2K */
1267 +static if (_WIN32_WINNT >= 0x500) {
1268 + void SHGetSetSettings(LPSHELLSTATE, DWORD, BOOL);
1296 1269 BOOL ILIsEqual(LPCITEMIDLIST, LPCITEMIDLIST);
1297 1270 BOOL ILIsParent(LPCITEMIDLIST, LPCITEMIDLIST, BOOL);
1298 1271 BOOL ILRemoveLastID(LPITEMIDLIST);
1299 - HRESULT ILLoadFromStream(IStream*, LPITEMIDLIST*);
1300 - HRESULT ILSaveToStream(IStream*, LPCITEMIDLIST);
1272 + HRESULT ILLoadFromStream(IStream, LPITEMIDLIST*);
1273 + HRESULT ILSaveToStream(IStream, LPCITEMIDLIST);
1301 1274 LPITEMIDLIST ILAppendID(LPITEMIDLIST, LPCSHITEMID, BOOL);
1302 1275 LPITEMIDLIST ILClone(LPCITEMIDLIST);
1303 1276 LPITEMIDLIST ILCloneFirst(LPCITEMIDLIST);
1304 1277 LPITEMIDLIST ILCombine(LPCITEMIDLIST, LPCITEMIDLIST);
1305 1278 LPITEMIDLIST ILFindChild(LPCITEMIDLIST, LPCITEMIDLIST);
1306 1279 LPITEMIDLIST ILFindLastID(LPCITEMIDLIST);
1307 1280 LPITEMIDLIST ILGetNext(LPCITEMIDLIST);
1308 1281 UINT ILGetSize(LPCITEMIDLIST);
1309 1282 void ILFree(LPITEMIDLIST);
1310 1283
1311 - HRESULT SHCoCreateInstance(LPCWSTR,REFCLSID,IUnknown*,REFIID,void**);
1284 + HRESULT SHCoCreateInstance(LPCWSTR, REFCLSID, IUnknown, REFIID, void**);
1312 1285 }
1313 1286
1314 1287 version(Unicode) {
1315 1288 alias IShellExecuteHookW IShellExecuteHook;
1316 1289 alias IShellLinkW IShellLink;
1317 1290 alias BROWSEINFOW BROWSEINFO;
1318 1291 alias SHBrowseForFolderW SHBrowseForFolder;
1319 1292 alias SHGetDataFromIDListW SHGetDataFromIDList;
1320 1293 alias SHGetPathFromIDListW SHGetPathFromIDList;
1321 - static if (_WIN32_IE >= 0x0400) {
1294 + static if (_WIN32_IE >= 0x400) {
1322 1295 alias SHGetSpecialFolderPathW SHGetSpecialFolderPath;
1323 1296 }
1324 1297 alias SHGetFolderPathW SHGetFolderPath;
1325 - static if (_WIN32_WINNT >= 0x0500) {
1298 + static if (_WIN32_WINNT >= 0x500) {
1299 + alias SHGetIconOverlayIndexW SHGetIconOverlayIndex;
1326 1300 alias SHCreateDirectoryExW SHCreateDirectoryEx;
1327 1301 }
1328 - static if (_WIN32_WINNT >= 0x0501) {
1302 + static if (_WIN32_WINNT >= 0x501) {
1329 1303 alias SHGetFolderPathAndSubDirW SHGetFolderPathAndSubDir;
1330 1304 }
1331 1305 alias FILEDESCRIPTORW FILEDESCRIPTOR;
1332 1306 alias LPFILEDESCRIPTORW LPFILEDESCRIPTOR;
1333 1307 alias FILEGROUPDESCRIPTORW FILEGROUPDESCRIPTOR;
1334 1308 alias LPFILEGROUPDESCRIPTORW LPFILEGROUPDESCRIPTOR;
1335 1309
................................................................................
1336 1310 } else {
1337 1311 alias IShellExecuteHookA IShellExecuteHook;
1338 1312 alias IShellLinkA IShellLink;
1339 1313 alias BROWSEINFOA BROWSEINFO;
1340 1314 alias SHBrowseForFolderA SHBrowseForFolder;
1341 1315 alias SHGetDataFromIDListA SHGetDataFromIDList;
1342 1316 alias SHGetPathFromIDListA SHGetPathFromIDList;
1343 - static if (_WIN32_IE >= 0x0400) {
1317 + static if (_WIN32_IE >= 0x400) {
1344 1318 alias SHGetSpecialFolderPathA SHGetSpecialFolderPath;
1345 1319 }
1346 1320 alias SHGetFolderPathA SHGetFolderPath;
1347 - static if (_WIN32_WINNT >= 0x0500) {
1321 + static if (_WIN32_WINNT >= 0x500) {
1322 + alias SHGetIconOverlayIndexA SHGetIconOverlayIndex;
1348 1323 alias SHCreateDirectoryExA SHCreateDirectoryEx;
1349 1324 }
1350 - static if (_WIN32_WINNT >= 0x0501) {
1325 + static if (_WIN32_WINNT >= 0x501) {
1351 1326 alias SHGetFolderPathAndSubDirA SHGetFolderPathAndSubDir;
1352 1327 }
1353 1328 alias FILEDESCRIPTORA FILEDESCRIPTOR;
1354 1329 alias LPFILEDESCRIPTORA LPFILEDESCRIPTOR;
1355 1330 alias FILEGROUPDESCRIPTORA FILEGROUPDESCRIPTOR;
1356 1331 alias LPFILEGROUPDESCRIPTORA LPFILEGROUPDESCRIPTOR;
1357 1332 }
1358 1333 alias BROWSEINFO* PBROWSEINFO, LPBROWSEINFO;
1334 +
1335 +static if (_WIN32_WINNT >= 0x501) {
1336 + interface IFolderView : IUnknown {
1337 + HRESULT GetAutoArrange();
1338 + HRESULT GetCurrentViewMode(UINT);
1339 + HRESULT GetDefaultSpacing(POINT*);
1340 + HRESULT GetFocusedItem(int*);
1341 + HRESULT GetFolder(REFIID, PVOID*);
1342 + HRESULT GetItemPosition(LPCITEMIDLIST, POINT*);
1343 + HRESULT GetSelectionMarkedItem(int*);
1344 + HRESULT GetSpacing(POINT*);
1345 + HRESULT Item(int, LPITEMIDLIST*);
1346 + HRESULT ItemCount(UINT, int*);
1347 + HRESULT Items(UINT, REFIID, PVOID*);
1348 + HRESULT SelectAndPositionItems(UINT, LPCITEMIDLIST*, POINT*, DWORD);
1349 + HRESULT SelectItem(int, DWORD);
1350 + HRESULT SetCurrentViewMode(UINT);
1351 + }
1352 + alias IFolderView LPFOLDERVIEW;
1353 +}