Diff

Not logged in

Differences From Artifact [3b1d34f9e7047278]:

To Artifact [7df464c2cf7d0434]:


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 +}