| /** | |
| * 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 FILEOP_FLAGS = WORD, PRINTEROP_FLAGS = WORD; | |
| 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 PAPPBARDATA = APPBARDATA*; | |
| 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 PNOTIFYICONDATAA = NOTIFYICONDATAA*; | |
| 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 PNOTIFYICONDATAW = NOTIFYICONDATAW*; | |
| 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 LPSHELLEXECUTEINFOA = SHELLEXECUTEINFOA*; | |
| 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 LPSHELLEXECUTEINFOW = SHELLEXECUTEINFOW*; | |
| 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 LPSHFILEOPSTRUCTA = SHFILEOPSTRUCTA*; | |
| 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 LPSHFILEOPSTRUCTW = SHFILEOPSTRUCTW*; | |
| 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 LPSHQUERYRBINFO = SHQUERYRBINFO*; | |
| 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 NOTIFYICONDATA = NOTIFYICONDATAW; | |
| alias SHELLEXECUTEINFO = SHELLEXECUTEINFOW; | |
| alias SHFILEOPSTRUCT = SHFILEOPSTRUCTW; | |
| alias SHFILEINFO = SHFILEINFOW; | |
| alias DragQueryFile = DragQueryFileW; | |
| alias ExtractAssociatedIcon = ExtractAssociatedIconW; | |
| alias ExtractIcon = ExtractIconW; | |
| alias ExtractIconEx = ExtractIconExW; | |
| alias FindExecutable = FindExecutableW; | |
| alias Shell_NotifyIcon = Shell_NotifyIconW; | |
| alias ShellAbout = ShellAboutW; | |
| alias ShellExecute = ShellExecuteW; | |
| alias ShellExecuteEx = ShellExecuteExW; | |
| alias SHFileOperation = SHFileOperationW; | |
| alias SHGetFileInfo = SHGetFileInfoW; | |
| alias SHQueryRecycleBin = SHQueryRecycleBinW; | |
| alias SHEmptyRecycleBin = SHEmptyRecycleBinW; | |
| } else { | |
| alias NOTIFYICONDATA = NOTIFYICONDATAA; | |
| alias SHELLEXECUTEINFO = SHELLEXECUTEINFOA; | |
| alias SHFILEOPSTRUCT = SHFILEOPSTRUCTA; | |
| alias SHFILEINFO = SHFILEINFOA; | |
| alias DragQueryFile = DragQueryFileA; | |
| alias ExtractAssociatedIcon = ExtractAssociatedIconA; | |
| alias ExtractIcon = ExtractIconA; | |
| alias ExtractIconEx = ExtractIconExA; | |
| alias FindExecutable = FindExecutableA; | |
| alias Shell_NotifyIcon = Shell_NotifyIconA; | |
| alias ShellAbout = ShellAboutA; | |
| alias ShellExecute = ShellExecuteA; | |
| alias ShellExecuteEx = ShellExecuteExA; | |
| alias SHFileOperation = SHFileOperationA; | |
| alias SHGetFileInfo = SHGetFileInfoA; | |
| alias SHQueryRecycleBin = SHQueryRecycleBinA; | |
| alias SHEmptyRecycleBin = SHEmptyRecycleBinA; | |
| } | |
| alias PNOTIFYICONDATA = NOTIFYICONDATA*; | |
| alias LPSHELLEXECUTEINFO = SHELLEXECUTEINFO*; | |
| alias LPSHFILEOPSTRUCT = SHFILEOPSTRUCT*; |