// Wrapping for SHGetFileInfo Function // Original source in C++ and MFC is in Code Project // Please see follow address // http://www.codeproject.com/file/cuseshgetfileinfo.asp private { import win32.windows; import win32.commctrl; import std.utf; } HIMAGELIST GetSystemImageListHandle(bool small) { HIMAGELIST hSystemImageList; SHFILEINFO sfi; if (small) { hSystemImageList = cast(HIMAGELIST)SHGetFileInfo(toUTF16z("c:\\"), 0, &sfi, SHFILEINFO.sizeof, SHGFI_SYSICONINDEX | SHGFI_SMALLICON); } else { hSystemImageList = cast(HIMAGELIST)SHGetFileInfo(toUTF16z("c:\\"), 0, &sfi, SHFILEINFO.sizeof, SHGFI_SYSICONINDEX | SHGFI_LARGEICON); } return hSystemImageList; } int GetFileIconIndex(char[] filename, bool small) { SHFILEINFO sfi; if (small) { SHGetFileInfo(toUTF16z(filename), FILE_ATTRIBUTE_NORMAL, &sfi, SHFILEINFO.sizeof, SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES); } else { SHGetFileInfo(toUTF16z(filename), FILE_ATTRIBUTE_NORMAL, &sfi, SHFILEINFO.sizeof, SHGFI_SYSICONINDEX | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES); } return sfi.iIcon; } int GetDirIconIndex(bool small) { SHFILEINFO sfi; if (small) { SHGetFileInfo( toUTF16z("Doesn't matter"), FILE_ATTRIBUTE_DIRECTORY, &sfi, SHFILEINFO.sizeof, SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES); } else { SHGetFileInfo( toUTF16z("Doesn't matter"), FILE_ATTRIBUTE_DIRECTORY, &sfi, SHFILEINFO.sizeof, SHGFI_SYSICONINDEX | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES); } return sfi.iIcon; } HICON GetFileIconHandle(char[] filename, bool small) { SHFILEINFO sfi; if (small) { SHGetFileInfo( toUTF16z(filename), FILE_ATTRIBUTE_NORMAL, &sfi, SHFILEINFO.sizeof, SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES); } else { SHGetFileInfo( toUTF16z(filename), FILE_ATTRIBUTE_NORMAL, &sfi, SHFILEINFO.sizeof, SHGFI_ICON | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES); } return sfi.hIcon; } HICON GetFolderIconHandle(bool small) { SHFILEINFO sfi; if (small) { SHGetFileInfo( toUTF16z("Doesn't matter"), FILE_ATTRIBUTE_DIRECTORY, &sfi, SHFILEINFO.sizeof, SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES); } else { SHGetFileInfo( toUTF16z("Doesn't matter"), FILE_ATTRIBUTE_DIRECTORY, &sfi, SHFILEINFO.sizeof, SHGFI_ICON | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES); } return sfi.hIcon; } /* wchar* GetFileType(char[] filename) { SHFILEINFO sfi; SHGetFileInfo( toUTF16z("Doesn't matter"), FILE_ATTRIBUTE_NORMAL, &sfi, SHFILEINFO.sizeof, SHGFI_TYPENAME | SHGFI_USEFILEATTRIBUTES); return sfi.szTypeName; } */