| /** | |
| * Windows API header module | |
| * | |
| * Translated from MinGW Windows headers | |
| * | |
| * Authors: Stewart Gordon | |
| * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) | |
| * Source: $(DRUNTIMESRC core/sys/windows/_shellapi.d) | |
| */ | |
| module core.sys.windows.shellapi; | |
| version (Windows): | |
| version (ANSI) {} else version = Unicode; | |
| pragma(lib, "shell32"); | |
| import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.basetyps; | |
| enum : UINT { | |
| ABE_LEFT, | |
| ABE_TOP, | |
| ABE_RIGHT, | |
| ABE_BOTTOM // = 3 | |
| } | |
| enum : UINT { | |
| ABS_AUTOHIDE = 1, | |
| ABS_ALWAYSONTOP | |
| } | |
| enum ULONG | |
| SEE_MASK_CLASSNAME = 1, | |
| SEE_MASK_CLASSKEY = 3, | |
| SEE_MASK_IDLIST = 4, | |
| SEE_MASK_INVOKEIDLIST = 12, | |
| SEE_MASK_ICON = 0x000010, | |
| SEE_MASK_HOTKEY = 0x000020, | |
| SEE_MASK_NOCLOSEPROCESS = 0x000040, | |
| SEE_MASK_CONNECTNETDRV = 0x000080, | |
| SEE_MASK_FLAG_DDEWAIT = 0x000100, | |
| SEE_MASK_DOENVSUBST = 0x000200, | |
| SEE_MASK_FLAG_NO_UI = 0x000400, | |
| SEE_MASK_NO_CONSOLE = 0x008000, | |
| SEE_MASK_UNICODE = 0x010000, | |
| SEE_MASK_ASYNCOK = 0x100000, | |
| SEE_MASK_HMONITOR = 0x200000; | |
| enum : DWORD { | |
| ABM_NEW, | |
| ABM_REMOVE, | |
| ABM_QUERYPOS, | |
| ABM_SETPOS, | |
| ABM_GETSTATE, | |
| ABM_GETTASKBARPOS, | |
| ABM_ACTIVATE, | |
| ABM_GETAUTOHIDEBAR, | |
| ABM_SETAUTOHIDEBAR, | |
| ABM_WINDOWPOSCHANGED // = 9 | |
| } | |
| static if (_WIN32_WINNT >= 0x501) { | |
| enum DWORD ABM_SETSTATE = 10; | |
| } | |
| enum : UINT { | |
| ABN_STATECHANGE, | |
| ABN_POSCHANGED, | |
| ABN_FULLSCREENAPP, | |
| ABN_WINDOWARRANGE | |
| } | |
| enum : DWORD { | |
| NIM_ADD, | |
| NIM_MODIFY, | |
| NIM_DELETE | |
| } | |
| static if (_WIN32_IE >= 0x500) { | |
| enum NOTIFYICON_VERSION = 3; | |
| enum : DWORD { | |
| NIM_SETFOCUS = 3, | |
| NIM_SETVERSION | |
| } | |
| } | |
| enum UINT | |
| NIF_MESSAGE = 1, | |
| NIF_ICON = 2, | |
| NIF_TIP = 4, | |
| NIF_STATE = 8; | |
| static if (_WIN32_IE >= 0x500) { | |
| enum UINT NIF_INFO = 0x00000010; | |
| } | |
| static if (_WIN32_IE >= 0x600) { | |
| enum UINT NIF_GUID = 0x00000020; | |
| } | |
| static if (_WIN32_IE >= 0x500) { | |
| enum : DWORD { | |
| NIIF_NONE, | |
| NIIF_INFO, | |
| NIIF_WARNING, | |
| NIIF_ERROR | |
| } | |
| } | |
| static if (_WIN32_IE >= 0x600) { | |
| enum : DWORD { | |
| NIIF_ICON_MASK = 15, | |
| NIIF_NOSOUND | |
| } | |
| } | |
| enum DWORD | |
| NIS_HIDDEN = 1, | |
| NIS_SHAREDICON = 2; | |
| enum HINSTANCE | |
| SE_ERR_FNF = cast(HINSTANCE) 2, | |
| SE_ERR_PNF = cast(HINSTANCE) 3, | |
| SE_ERR_ACCESSDENIED = cast(HINSTANCE) 5, | |
| SE_ERR_OOM = cast(HINSTANCE) 8, | |
| SE_ERR_DLLNOTFOUND = cast(HINSTANCE) 32, | |
| SE_ERR_SHARE = cast(HINSTANCE) 26, | |
| SE_ERR_ASSOCINCOMPLETE = cast(HINSTANCE) 27, | |
| SE_ERR_DDETIMEOUT = cast(HINSTANCE) 28, | |
| SE_ERR_DDEFAIL = cast(HINSTANCE) 29, | |
| SE_ERR_DDEBUSY = cast(HINSTANCE) 30, | |
| SE_ERR_NOASSOC = cast(HINSTANCE) 31; | |
| enum : UINT { | |
| FO_MOVE = 1, | |
| FO_COPY, | |
| FO_DELETE, | |
| FO_RENAME | |
| } | |
| enum FILEOP_FLAGS | |
| FOF_MULTIDESTFILES = 0x0001, | |
| FOF_CONFIRMMOUSE = 0x0002, | |
| FOF_SILENT = 0x0004, | |
| FOF_RENAMEONCOLLISION = 0x0008, | |
| FOF_NOCONFIRMATION = 0x0010, | |
| FOF_WANTMAPPINGHANDLE = 0x0020, | |
| FOF_ALLOWUNDO = 0x0040, | |
| FOF_FILESONLY = 0x0080, | |
| FOF_SIMPLEPROGRESS = 0x0100, | |
| FOF_NOCONFIRMMKDIR = 0x0200, | |
| FOF_NOERRORUI = 0x0400, | |
| FOF_NOCOPYSECURITYATTRIBS = 0x0800; | |
| // these are not documented on the MSDN site | |
| enum { | |
| PO_DELETE = 19, | |
| PO_RENAME = 20, | |
| PO_PORTCHANGE = 32, | |
| PO_REN_PORT = 52 | |
| } | |
| enum UINT | |
| SHGFI_LARGEICON = 0x000000, | |
| SHGFI_SMALLICON = 0x000001, | |
| SHGFI_OPENICON = 0x000002, | |
| SHGFI_SHELLICONSIZE = 0x000004, | |
| SHGFI_PIDL = 0x000008, | |
| SHGFI_USEFILEATTRIBUTES = 0x000010, | |
| SHGFI_ICON = 0x000100, | |
| SHGFI_DISPLAYNAME = 0x000200, | |
| SHGFI_TYPENAME = 0x000400, | |
| SHGFI_ATTRIBUTES = 0x000800, | |
| SHGFI_ICONLOCATION = 0x001000, | |
| SHGFI_EXETYPE = 0x002000, | |
| SHGFI_SYSICONINDEX = 0x004000, | |
| SHGFI_LINKOVERLAY = 0x008000, | |
| SHGFI_SELECTED = 0x010000, | |
| SHGFI_ATTR_SPECIFIED = 0x020000; | |
| static if (_WIN32_IE >= 0x500) { | |
| enum uint | |
| SHGFI_ADDOVERLAYS = 0x000020, | |
| SHGFI_OVERLAYINDEX = 0x000040; | |
| } | |
| enum SHERB_NOCONFIRMATION = 1; | |
| enum SHERB_NOPROGRESSUI = 2; | |
| enum SHERB_NOSOUND = 4; | |
| alias WORD FILEOP_FLAGS, PRINTEROP_FLAGS; | |
| alias HDROP = HANDLE; | |
| //align(2): // 1 in Win32, default in Win64 | |
| struct APPBARDATA { | |
| DWORD cbSize = APPBARDATA.sizeof; | |
| HWND hWnd; | |
| UINT uCallbackMessage; | |
| UINT uEdge; | |
| RECT rc; | |
| LPARAM lParam; | |
| } | |
| alias APPBARDATA* PAPPBARDATA; | |
| struct NOTIFYICONDATAA { | |
| DWORD cbSize = NOTIFYICONDATAA.sizeof; | |
| HWND hWnd; | |
| UINT uID; | |
| UINT uFlags; | |
| UINT uCallbackMessage; | |
| HICON hIcon; | |
| static if (_WIN32_IE >= 0x500) { | |
| CHAR[128] szTip = 0; | |
| DWORD dwState; | |
| DWORD dwStateMask; | |
| CHAR[256] szInfo = 0; | |
| union { | |
| UINT uTimeout; | |
| UINT uVersion; | |
| } | |
| CHAR[64] szInfoTitle = 0; | |
| DWORD dwInfoFlags; | |
| } else { | |
| CHAR[64] szTip = 0; | |
| } | |
| static if (_WIN32_IE >= 0x600) { | |
| GUID guidItem; | |
| } | |
| } | |
| alias NOTIFYICONDATAA* PNOTIFYICONDATAA; | |
| struct NOTIFYICONDATAW { | |
| DWORD cbSize = NOTIFYICONDATAW.sizeof; | |
| HWND hWnd; | |
| UINT uID; | |
| UINT uFlags; | |
| UINT uCallbackMessage; | |
| HICON hIcon; | |
| static if (_WIN32_IE >= 0x500) { | |
| WCHAR[128] szTip = 0; | |
| DWORD dwState; | |
| DWORD dwStateMask; | |
| WCHAR[256] szInfo = 0; | |
| union { | |
| UINT uTimeout; | |
| UINT uVersion; | |
| } | |
| WCHAR[64] szInfoTitle = 0; | |
| DWORD dwInfoFlags; | |
| } else { | |
| WCHAR[64] szTip = 0; | |
| } | |
| static if (_WIN32_IE >= 0x600) { | |
| GUID guidItem; | |
| } | |
| } | |
| alias NOTIFYICONDATAW* PNOTIFYICONDATAW; | |
| struct SHELLEXECUTEINFOA { | |
| DWORD cbSize = SHELLEXECUTEINFOA.sizeof; | |
| ULONG fMask; | |
| HWND hwnd; | |
| LPCSTR lpVerb; | |
| LPCSTR lpFile; | |
| LPCSTR lpParameters; | |
| LPCSTR lpDirectory; | |
| int nShow; | |
| HINSTANCE hInstApp; | |
| PVOID lpIDList; | |
| LPCSTR lpClass; | |
| HKEY hkeyClass; | |
| DWORD dwHotKey; | |
| HANDLE hIcon; | |
| HANDLE hProcess; | |
| } | |
| alias SHELLEXECUTEINFOA* LPSHELLEXECUTEINFOA; | |
| struct SHELLEXECUTEINFOW { | |
| DWORD cbSize = SHELLEXECUTEINFOW.sizeof; | |
| ULONG fMask; | |
| HWND hwnd; | |
| LPCWSTR lpVerb; | |
| LPCWSTR lpFile; | |
| LPCWSTR lpParameters; | |
| LPCWSTR lpDirectory; | |
| int nShow; | |
| HINSTANCE hInstApp; | |
| PVOID lpIDList; | |
| LPCWSTR lpClass; | |
| HKEY hkeyClass; | |
| DWORD dwHotKey; | |
| HANDLE hIcon; | |
| HANDLE hProcess; | |
| } | |
| alias SHELLEXECUTEINFOW* LPSHELLEXECUTEINFOW; | |
| align(1) struct SHFILEOPSTRUCTA { | |
| align(1): | |
| HWND hwnd; | |
| UINT wFunc; | |
| version (Win64) | |
| WORD _padding1; | |
| LPCSTR pFrom; | |
| LPCSTR pTo; | |
| FILEOP_FLAGS fFlags; | |
| version (Win64) | |
| DWORD _padding2; | |
| BOOL fAnyOperationsAborted; | |
| PVOID hNameMappings; | |
| LPCSTR lpszProgressTitle; | |
| } | |
| alias SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA; | |
| align(1) struct SHFILEOPSTRUCTW { | |
| align(1): | |
| HWND hwnd; | |
| UINT wFunc; | |
| version (Win64) | |
| DWORD _padding1; | |
| LPCWSTR pFrom; | |
| LPCWSTR pTo; | |
| FILEOP_FLAGS fFlags; | |
| version (Win64) | |
| WORD _padding2; | |
| BOOL fAnyOperationsAborted; | |
| PVOID hNameMappings; | |
| LPCWSTR lpszProgressTitle; | |
| } | |
| alias SHFILEOPSTRUCTW* LPSHFILEOPSTRUCTW; | |
| struct SHFILEINFOA { | |
| HICON hIcon; | |
| int iIcon; | |
| DWORD dwAttributes; | |
| CHAR[MAX_PATH] szDisplayName = 0; | |
| CHAR[80] szTypeName = 0; | |
| } | |
| struct SHFILEINFOW { | |
| HICON hIcon; | |
| int iIcon; | |
| DWORD dwAttributes; | |
| WCHAR[MAX_PATH] szDisplayName = 0; | |
| WCHAR[80] szTypeName = 0; | |
| } | |
| align(1) struct SHQUERYRBINFO { | |
| align(1): | |
| DWORD cbSize = SHQUERYRBINFO.sizeof; | |
| version (Win64) | |
| DWORD _padding; | |
| long i64Size; | |
| long i64NumItems; | |
| } | |
| alias SHQUERYRBINFO* LPSHQUERYRBINFO; | |
| extern (Windows) nothrow @nogc { | |
| LPWSTR* CommandLineToArgvW(LPCWSTR, int*); | |
| void DragAcceptFiles(HWND, BOOL); | |
| void DragFinish(HDROP); | |
| UINT DragQueryFileA(HDROP, UINT, LPSTR, UINT); | |
| UINT DragQueryFileW(HDROP, UINT, LPWSTR, UINT); | |
| BOOL DragQueryPoint(HDROP, LPPOINT); | |
| HICON DuplicateIcon(HINSTANCE, HICON); | |
| HICON ExtractAssociatedIconA(HINSTANCE, LPCSTR, PWORD); | |
| HICON ExtractAssociatedIconW(HINSTANCE, LPCWSTR, PWORD); | |
| HICON ExtractIconA(HINSTANCE, LPCSTR, UINT); | |
| HICON ExtractIconW(HINSTANCE, LPCWSTR, UINT); | |
| UINT ExtractIconExA(LPCSTR, int, HICON*, HICON*, UINT); | |
| UINT ExtractIconExW(LPCWSTR, int, HICON*, HICON*, UINT); | |
| HINSTANCE FindExecutableA(LPCSTR, LPCSTR, LPSTR); | |
| HINSTANCE FindExecutableW(LPCWSTR, LPCWSTR, LPWSTR); | |
| UINT_PTR SHAppBarMessage(DWORD, PAPPBARDATA); | |
| BOOL Shell_NotifyIconA(DWORD, PNOTIFYICONDATAA); | |
| BOOL Shell_NotifyIconW(DWORD, PNOTIFYICONDATAW); | |
| int ShellAboutA(HWND, LPCSTR, LPCSTR, HICON); | |
| int ShellAboutW(HWND, LPCWSTR, LPCWSTR, HICON); | |
| HINSTANCE ShellExecuteA(HWND, LPCSTR, LPCSTR, LPCSTR, LPCSTR, INT); | |
| HINSTANCE ShellExecuteW(HWND, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, INT); | |
| BOOL ShellExecuteExA(LPSHELLEXECUTEINFOA); | |
| BOOL ShellExecuteExW(LPSHELLEXECUTEINFOW); | |
| int SHFileOperationA(LPSHFILEOPSTRUCTA); | |
| int SHFileOperationW(LPSHFILEOPSTRUCTW); | |
| void SHFreeNameMappings(HANDLE); | |
| DWORD_PTR SHGetFileInfoA(LPCSTR, DWORD, SHFILEINFOA*, UINT, UINT); | |
| DWORD_PTR SHGetFileInfoW(LPCWSTR, DWORD, SHFILEINFOW*, UINT, UINT); | |
| HRESULT SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO); | |
| HRESULT SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO); | |
| HRESULT SHEmptyRecycleBinA(HWND, LPCSTR, DWORD); | |
| HRESULT SHEmptyRecycleBinW(HWND, LPCWSTR, DWORD); | |
| } | |
| version (Unicode) { | |
| alias NOTIFYICONDATAW NOTIFYICONDATA; | |
| alias SHELLEXECUTEINFOW SHELLEXECUTEINFO; | |
| alias SHFILEOPSTRUCTW SHFILEOPSTRUCT; | |
| alias SHFILEINFOW SHFILEINFO; | |
| alias DragQueryFileW DragQueryFile; | |
| alias ExtractAssociatedIconW ExtractAssociatedIcon; | |
| alias ExtractIconW ExtractIcon; | |
| alias ExtractIconExW ExtractIconEx; | |
| alias FindExecutableW FindExecutable; | |
| alias Shell_NotifyIconW Shell_NotifyIcon; | |
| alias ShellAboutW ShellAbout; | |
| alias ShellExecuteW ShellExecute; | |
| alias ShellExecuteExW ShellExecuteEx; | |
| alias SHFileOperationW SHFileOperation; | |
| alias SHGetFileInfoW SHGetFileInfo; | |
| alias SHQueryRecycleBinW SHQueryRecycleBin; | |
| alias SHEmptyRecycleBinW SHEmptyRecycleBin; | |
| } else { | |
| alias NOTIFYICONDATAA NOTIFYICONDATA; | |
| alias SHELLEXECUTEINFOA SHELLEXECUTEINFO; | |
| alias SHFILEOPSTRUCTA SHFILEOPSTRUCT; | |
| alias SHFILEINFOA SHFILEINFO; | |
| alias DragQueryFileA DragQueryFile; | |
| alias ExtractAssociatedIconA ExtractAssociatedIcon; | |
| alias ExtractIconA ExtractIcon; | |
| alias ExtractIconExA ExtractIconEx; | |
| alias FindExecutableA FindExecutable; | |
| alias Shell_NotifyIconA Shell_NotifyIcon; | |
| alias ShellAboutA ShellAbout; | |
| alias ShellExecuteA ShellExecute; | |
| alias ShellExecuteExA ShellExecuteEx; | |
| alias SHFileOperationA SHFileOperation; | |
| alias SHGetFileInfoA SHGetFileInfo; | |
| alias SHQueryRecycleBinA SHQueryRecycleBin; | |
| alias SHEmptyRecycleBinA SHEmptyRecycleBin; | |
| } | |
| alias NOTIFYICONDATA* PNOTIFYICONDATA; | |
| alias SHELLEXECUTEINFO* LPSHELLEXECUTEINFO; | |
| alias SHFILEOPSTRUCT* LPSHFILEOPSTRUCT; |