1 /** 2 * Windows API header module 3 * 4 * Translated from MinGW Windows headers 5 * 6 * Authors: Stewart Gordon 7 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 8 * Source: $(DRUNTIMESRC core/sys/windows/_shellapi.d) 9 */ 10 /// Automatically imported and edited from the druntime module 11 /// core.sys.windows.shellapi for the auto-generated win32 package. 12 module win32.shellapi; 13 //version (Windows): 14 @system: 15 16 version (ANSI) {} else version = Unicode; 17 version (Win32_UseLib) pragma(lib, "shell32"); 18 19 import win32.w32api, win32.windef, win32.basetyps; 20 21 enum : UINT { 22 ABE_LEFT, 23 ABE_TOP, 24 ABE_RIGHT, 25 ABE_BOTTOM // = 3 26 } 27 28 enum : UINT { 29 ABS_AUTOHIDE = 1, 30 ABS_ALWAYSONTOP 31 } 32 33 enum ULONG 34 SEE_MASK_CLASSNAME = 1, 35 SEE_MASK_CLASSKEY = 3, 36 SEE_MASK_IDLIST = 4, 37 SEE_MASK_INVOKEIDLIST = 12, 38 SEE_MASK_ICON = 0x000010, 39 SEE_MASK_HOTKEY = 0x000020, 40 SEE_MASK_NOCLOSEPROCESS = 0x000040, 41 SEE_MASK_CONNECTNETDRV = 0x000080, 42 SEE_MASK_FLAG_DDEWAIT = 0x000100, 43 SEE_MASK_DOENVSUBST = 0x000200, 44 SEE_MASK_FLAG_NO_UI = 0x000400, 45 SEE_MASK_NO_CONSOLE = 0x008000, 46 SEE_MASK_UNICODE = 0x010000, 47 SEE_MASK_ASYNCOK = 0x100000, 48 SEE_MASK_HMONITOR = 0x200000; 49 50 enum : DWORD { 51 ABM_NEW, 52 ABM_REMOVE, 53 ABM_QUERYPOS, 54 ABM_SETPOS, 55 ABM_GETSTATE, 56 ABM_GETTASKBARPOS, 57 ABM_ACTIVATE, 58 ABM_GETAUTOHIDEBAR, 59 ABM_SETAUTOHIDEBAR, 60 ABM_WINDOWPOSCHANGED // = 9 61 } 62 63 static if (_WIN32_WINNT >= 0x501) { 64 enum DWORD ABM_SETSTATE = 10; 65 } 66 67 enum : UINT { 68 ABN_STATECHANGE, 69 ABN_POSCHANGED, 70 ABN_FULLSCREENAPP, 71 ABN_WINDOWARRANGE 72 } 73 74 enum : DWORD { 75 NIM_ADD, 76 NIM_MODIFY, 77 NIM_DELETE 78 } 79 80 static if (_WIN32_IE >= 0x500) { 81 enum NOTIFYICON_VERSION = 3; 82 83 enum : DWORD { 84 NIM_SETFOCUS = 3, 85 NIM_SETVERSION 86 } 87 } 88 89 enum UINT 90 NIF_MESSAGE = 1, 91 NIF_ICON = 2, 92 NIF_TIP = 4, 93 NIF_STATE = 8; 94 95 static if (_WIN32_IE >= 0x500) { 96 enum UINT NIF_INFO = 0x00000010; 97 } 98 99 static if (_WIN32_IE >= 0x600) { 100 enum UINT NIF_GUID = 0x00000020; 101 } 102 103 static if (_WIN32_IE >= 0x500) { 104 enum : DWORD { 105 NIIF_NONE, 106 NIIF_INFO, 107 NIIF_WARNING, 108 NIIF_ERROR 109 } 110 } 111 112 static if (_WIN32_IE >= 0x600) { 113 enum : DWORD { 114 NIIF_ICON_MASK = 15, 115 NIIF_NOSOUND 116 } 117 } 118 119 enum DWORD 120 NIS_HIDDEN = 1, 121 NIS_SHAREDICON = 2; 122 123 enum HINSTANCE 124 SE_ERR_FNF = cast(HINSTANCE) 2, 125 SE_ERR_PNF = cast(HINSTANCE) 3, 126 SE_ERR_ACCESSDENIED = cast(HINSTANCE) 5, 127 SE_ERR_OOM = cast(HINSTANCE) 8, 128 SE_ERR_DLLNOTFOUND = cast(HINSTANCE) 32, 129 SE_ERR_SHARE = cast(HINSTANCE) 26, 130 SE_ERR_ASSOCINCOMPLETE = cast(HINSTANCE) 27, 131 SE_ERR_DDETIMEOUT = cast(HINSTANCE) 28, 132 SE_ERR_DDEFAIL = cast(HINSTANCE) 29, 133 SE_ERR_DDEBUSY = cast(HINSTANCE) 30, 134 SE_ERR_NOASSOC = cast(HINSTANCE) 31; 135 136 enum : UINT { 137 FO_MOVE = 1, 138 FO_COPY, 139 FO_DELETE, 140 FO_RENAME 141 } 142 143 enum FILEOP_FLAGS 144 FOF_MULTIDESTFILES = 0x0001, 145 FOF_CONFIRMMOUSE = 0x0002, 146 FOF_SILENT = 0x0004, 147 FOF_RENAMEONCOLLISION = 0x0008, 148 FOF_NOCONFIRMATION = 0x0010, 149 FOF_WANTMAPPINGHANDLE = 0x0020, 150 FOF_ALLOWUNDO = 0x0040, 151 FOF_FILESONLY = 0x0080, 152 FOF_SIMPLEPROGRESS = 0x0100, 153 FOF_NOCONFIRMMKDIR = 0x0200, 154 FOF_NOERRORUI = 0x0400, 155 FOF_NOCOPYSECURITYATTRIBS = 0x0800; 156 157 // these are not documented on the MSDN site 158 enum { 159 PO_DELETE = 19, 160 PO_RENAME = 20, 161 PO_PORTCHANGE = 32, 162 PO_REN_PORT = 52 163 } 164 165 enum UINT 166 SHGFI_LARGEICON = 0x000000, 167 SHGFI_SMALLICON = 0x000001, 168 SHGFI_OPENICON = 0x000002, 169 SHGFI_SHELLICONSIZE = 0x000004, 170 SHGFI_PIDL = 0x000008, 171 SHGFI_USEFILEATTRIBUTES = 0x000010, 172 SHGFI_ICON = 0x000100, 173 SHGFI_DISPLAYNAME = 0x000200, 174 SHGFI_TYPENAME = 0x000400, 175 SHGFI_ATTRIBUTES = 0x000800, 176 SHGFI_ICONLOCATION = 0x001000, 177 SHGFI_EXETYPE = 0x002000, 178 SHGFI_SYSICONINDEX = 0x004000, 179 SHGFI_LINKOVERLAY = 0x008000, 180 SHGFI_SELECTED = 0x010000, 181 SHGFI_ATTR_SPECIFIED = 0x020000; 182 183 static if (_WIN32_IE >= 0x500) { 184 enum uint 185 SHGFI_ADDOVERLAYS = 0x000020, 186 SHGFI_OVERLAYINDEX = 0x000040; 187 } 188 189 enum SHERB_NOCONFIRMATION = 1; 190 enum SHERB_NOPROGRESSUI = 2; 191 enum SHERB_NOSOUND = 4; 192 193 alias WORD FILEOP_FLAGS, PRINTEROP_FLAGS; 194 mixin DECLARE_HANDLE!("HDROP"); 195 196 //align(2): // 1 in Win32, default in Win64 197 198 struct APPBARDATA { 199 DWORD cbSize = APPBARDATA.sizeof; 200 HWND hWnd; 201 UINT uCallbackMessage; 202 UINT uEdge; 203 RECT rc; 204 LPARAM lParam; 205 } 206 alias APPBARDATA* PAPPBARDATA; 207 208 struct NOTIFYICONDATAA { 209 DWORD cbSize = NOTIFYICONDATAA.sizeof; 210 HWND hWnd; 211 UINT uID; 212 UINT uFlags; 213 UINT uCallbackMessage; 214 HICON hIcon; 215 static if (_WIN32_IE >= 0x500) { 216 CHAR[128] szTip = 0; 217 DWORD dwState; 218 DWORD dwStateMask; 219 CHAR[256] szInfo = 0; 220 union { 221 UINT uTimeout; 222 UINT uVersion; 223 } 224 CHAR[64] szInfoTitle = 0; 225 DWORD dwInfoFlags; 226 } else { 227 CHAR[64] szTip = 0; 228 } 229 static if (_WIN32_IE >= 0x600) { 230 GUID guidItem; 231 } 232 } 233 alias NOTIFYICONDATAA* PNOTIFYICONDATAA; 234 235 struct NOTIFYICONDATAW { 236 DWORD cbSize = NOTIFYICONDATAW.sizeof; 237 HWND hWnd; 238 UINT uID; 239 UINT uFlags; 240 UINT uCallbackMessage; 241 HICON hIcon; 242 static if (_WIN32_IE >= 0x500) { 243 WCHAR[128] szTip = 0; 244 DWORD dwState; 245 DWORD dwStateMask; 246 WCHAR[256] szInfo = 0; 247 union { 248 UINT uTimeout; 249 UINT uVersion; 250 } 251 WCHAR[64] szInfoTitle = 0; 252 DWORD dwInfoFlags; 253 } else { 254 WCHAR[64] szTip = 0; 255 } 256 static if (_WIN32_IE >= 0x600) { 257 GUID guidItem; 258 } 259 } 260 alias NOTIFYICONDATAW* PNOTIFYICONDATAW; 261 262 struct SHELLEXECUTEINFOA { 263 DWORD cbSize = SHELLEXECUTEINFOA.sizeof; 264 ULONG fMask; 265 HWND hwnd; 266 LPCSTR lpVerb; 267 LPCSTR lpFile; 268 LPCSTR lpParameters; 269 LPCSTR lpDirectory; 270 int nShow; 271 HINSTANCE hInstApp; 272 PVOID lpIDList; 273 LPCSTR lpClass; 274 HKEY hkeyClass; 275 DWORD dwHotKey; 276 HANDLE hIcon; 277 HANDLE hProcess; 278 } 279 alias SHELLEXECUTEINFOA* LPSHELLEXECUTEINFOA; 280 281 struct SHELLEXECUTEINFOW { 282 DWORD cbSize = SHELLEXECUTEINFOW.sizeof; 283 ULONG fMask; 284 HWND hwnd; 285 LPCWSTR lpVerb; 286 LPCWSTR lpFile; 287 LPCWSTR lpParameters; 288 LPCWSTR lpDirectory; 289 int nShow; 290 HINSTANCE hInstApp; 291 PVOID lpIDList; 292 LPCWSTR lpClass; 293 HKEY hkeyClass; 294 DWORD dwHotKey; 295 HANDLE hIcon; 296 HANDLE hProcess; 297 } 298 alias SHELLEXECUTEINFOW* LPSHELLEXECUTEINFOW; 299 300 align(1) struct SHFILEOPSTRUCTA { 301 align(1): 302 HWND hwnd; 303 UINT wFunc; 304 version (Win64) 305 WORD _padding1; 306 LPCSTR pFrom; 307 LPCSTR pTo; 308 FILEOP_FLAGS fFlags; 309 version (Win64) 310 DWORD _padding2; 311 BOOL fAnyOperationsAborted; 312 PVOID hNameMappings; 313 LPCSTR lpszProgressTitle; 314 } 315 alias SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA; 316 317 align(1) struct SHFILEOPSTRUCTW { 318 align(1): 319 HWND hwnd; 320 UINT wFunc; 321 version (Win64) 322 DWORD _padding1; 323 LPCWSTR pFrom; 324 LPCWSTR pTo; 325 FILEOP_FLAGS fFlags; 326 version (Win64) 327 WORD _padding2; 328 BOOL fAnyOperationsAborted; 329 PVOID hNameMappings; 330 LPCWSTR lpszProgressTitle; 331 } 332 alias SHFILEOPSTRUCTW* LPSHFILEOPSTRUCTW; 333 334 struct SHFILEINFOA { 335 HICON hIcon; 336 int iIcon; 337 DWORD dwAttributes; 338 CHAR[MAX_PATH] szDisplayName = 0; 339 CHAR[80] szTypeName = 0; 340 } 341 342 struct SHFILEINFOW { 343 HICON hIcon; 344 int iIcon; 345 DWORD dwAttributes; 346 WCHAR[MAX_PATH] szDisplayName = 0; 347 WCHAR[80] szTypeName = 0; 348 } 349 350 align(1) struct SHQUERYRBINFO { 351 align(1): 352 DWORD cbSize = SHQUERYRBINFO.sizeof; 353 version (Win64) 354 DWORD _padding; 355 long i64Size; 356 long i64NumItems; 357 } 358 alias SHQUERYRBINFO* LPSHQUERYRBINFO; 359 360 extern (Windows) nothrow @nogc { 361 LPWSTR* CommandLineToArgvW(LPCWSTR, int*); 362 void DragAcceptFiles(HWND, BOOL); 363 void DragFinish(HDROP); 364 UINT DragQueryFileA(HDROP, UINT, LPSTR, UINT); 365 UINT DragQueryFileW(HDROP, UINT, LPWSTR, UINT); 366 BOOL DragQueryPoint(HDROP, LPPOINT); 367 HICON DuplicateIcon(HINSTANCE, HICON); 368 HICON ExtractAssociatedIconA(HINSTANCE, LPCSTR, PWORD); 369 HICON ExtractAssociatedIconW(HINSTANCE, LPCWSTR, PWORD); 370 HICON ExtractIconA(HINSTANCE, LPCSTR, UINT); 371 HICON ExtractIconW(HINSTANCE, LPCWSTR, UINT); 372 UINT ExtractIconExA(LPCSTR, int, HICON*, HICON*, UINT); 373 UINT ExtractIconExW(LPCWSTR, int, HICON*, HICON*, UINT); 374 HINSTANCE FindExecutableA(LPCSTR, LPCSTR, LPSTR); 375 HINSTANCE FindExecutableW(LPCWSTR, LPCWSTR, LPWSTR); 376 UINT_PTR SHAppBarMessage(DWORD, PAPPBARDATA); 377 BOOL Shell_NotifyIconA(DWORD, PNOTIFYICONDATAA); 378 BOOL Shell_NotifyIconW(DWORD, PNOTIFYICONDATAW); 379 int ShellAboutA(HWND, LPCSTR, LPCSTR, HICON); 380 int ShellAboutW(HWND, LPCWSTR, LPCWSTR, HICON); 381 HINSTANCE ShellExecuteA(HWND, LPCSTR, LPCSTR, LPCSTR, LPCSTR, INT); 382 HINSTANCE ShellExecuteW(HWND, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, INT); 383 BOOL ShellExecuteExA(LPSHELLEXECUTEINFOA); 384 BOOL ShellExecuteExW(LPSHELLEXECUTEINFOW); 385 int SHFileOperationA(LPSHFILEOPSTRUCTA); 386 int SHFileOperationW(LPSHFILEOPSTRUCTW); 387 void SHFreeNameMappings(HANDLE); 388 DWORD_PTR SHGetFileInfoA(LPCSTR, DWORD, SHFILEINFOA*, UINT, UINT); 389 DWORD_PTR SHGetFileInfoW(LPCWSTR, DWORD, SHFILEINFOW*, UINT, UINT); 390 HRESULT SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO); 391 HRESULT SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO); 392 HRESULT SHEmptyRecycleBinA(HWND, LPCSTR, DWORD); 393 HRESULT SHEmptyRecycleBinW(HWND, LPCWSTR, DWORD); 394 } 395 396 version (Unicode) { 397 alias NOTIFYICONDATAW NOTIFYICONDATA; 398 alias SHELLEXECUTEINFOW SHELLEXECUTEINFO; 399 alias SHFILEOPSTRUCTW SHFILEOPSTRUCT; 400 alias SHFILEINFOW SHFILEINFO; 401 alias DragQueryFileW DragQueryFile; 402 alias ExtractAssociatedIconW ExtractAssociatedIcon; 403 alias ExtractIconW ExtractIcon; 404 alias ExtractIconExW ExtractIconEx; 405 alias FindExecutableW FindExecutable; 406 alias Shell_NotifyIconW Shell_NotifyIcon; 407 alias ShellAboutW ShellAbout; 408 alias ShellExecuteW ShellExecute; 409 alias ShellExecuteExW ShellExecuteEx; 410 alias SHFileOperationW SHFileOperation; 411 alias SHGetFileInfoW SHGetFileInfo; 412 alias SHQueryRecycleBinW SHQueryRecycleBin; 413 alias SHEmptyRecycleBinW SHEmptyRecycleBin; 414 } else { 415 alias NOTIFYICONDATAA NOTIFYICONDATA; 416 alias SHELLEXECUTEINFOA SHELLEXECUTEINFO; 417 alias SHFILEOPSTRUCTA SHFILEOPSTRUCT; 418 alias SHFILEINFOA SHFILEINFO; 419 alias DragQueryFileA DragQueryFile; 420 alias ExtractAssociatedIconA ExtractAssociatedIcon; 421 alias ExtractIconA ExtractIcon; 422 alias ExtractIconExA ExtractIconEx; 423 alias FindExecutableA FindExecutable; 424 alias Shell_NotifyIconA Shell_NotifyIcon; 425 alias ShellAboutA ShellAbout; 426 alias ShellExecuteA ShellExecute; 427 alias ShellExecuteExA ShellExecuteEx; 428 alias SHFileOperationA SHFileOperation; 429 alias SHGetFileInfoA SHGetFileInfo; 430 alias SHQueryRecycleBinA SHQueryRecycleBin; 431 alias SHEmptyRecycleBinA SHEmptyRecycleBin; 432 } 433 434 alias NOTIFYICONDATA* PNOTIFYICONDATA; 435 alias SHELLEXECUTEINFO* LPSHELLEXECUTEINFO; 436 alias SHFILEOPSTRUCT* LPSHFILEOPSTRUCT;