Differences From Artifact [165235cd7bb780a4]:
- File        
src/win32/shellapi.d
- 2011-02-23 12:53:16 - part of checkin [c2b7a98c21] on branch trunk - Initial import (user: kinaba) [annotate]
 
 
To Artifact [dbc32f4888561832]:
- File        
src/win32/shellapi.d
- 2015-04-21 10:46:55 - part of checkin [4e2933c620] on branch trunk - Rebased to the latest verson dmd 2.067. Not yet verified the outcome. (user: kinaba) [annotate]
 
 
                                                                                        >     1  /***********************************************************************\
                                                                                        >     2  *                               shellapi.d                              *
                                                                                        >     3  *                                                                       *
                                                                                        >     4  *                       Windows API header module                       *
                                                                                        >     5  *                                                                       *
                                                                                        >     6  *                 Translated from MinGW Windows headers                 *
                                                                                        >     7  *                           by Stewart Gordon                           *
                                                                                        >     8  *                                                                       *
                                                                                        >     9  *                       Placed into public domain                       *
                                                                                        >    10  \***********************************************************************/
    1  module win32.shellapi;                                                                11  module win32.shellapi;
                                                                                        >    12  pragma(lib, "shell32.lib");
    2                                                                                   |    13  
    3  // Translated from Microsoft Platform SDK August 2001 Edition                    <
    4  // by Y.Tomino                                                                   |    14  private import win32.w32api, win32.windef, win32.basetyps;
                                                                                        >    15  
                                                                                        >    16  enum : UINT {
                                                                                        >    17          ABE_LEFT,
                                                                                        >    18          ABE_TOP,
                                                                                        >    19          ABE_RIGHT,
                                                                                        >    20          ABE_BOTTOM // = 3
                                                                                        >    21  }
                                                                                        >    22  
                                                                                        >    23  enum : UINT {
                                                                                        >    24          ABS_AUTOHIDE    = 1,
                                                                                        >    25          ABS_ALWAYSONTOP
                                                                                        >    26  }
                                                                                        >    27  
                                                                                        >    28  const ULONG
                                                                                        >    29          SEE_MASK_CLASSNAME      =        1,
                                                                                        >    30          SEE_MASK_CLASSKEY       =        3,
                                                                                        >    31          SEE_MASK_IDLIST         =        4,
                                                                                        >    32          SEE_MASK_INVOKEIDLIST   =       12,
                                                                                        >    33          SEE_MASK_ICON           = 0x000010,
                                                                                        >    34          SEE_MASK_HOTKEY         = 0x000020,
                                                                                        >    35          SEE_MASK_NOCLOSEPROCESS = 0x000040,
                                                                                        >    36          SEE_MASK_CONNECTNETDRV  = 0x000080,
                                                                                        >    37          SEE_MASK_FLAG_DDEWAIT   = 0x000100,
                                                                                        >    38          SEE_MASK_DOENVSUBST     = 0x000200,
                                                                                        >    39          SEE_MASK_FLAG_NO_UI     = 0x000400,
                                                                                        >    40          SEE_MASK_NO_CONSOLE     = 0x008000,
                                                                                        >    41          SEE_MASK_UNICODE        = 0x010000,
                                                                                        >    42          SEE_MASK_ASYNCOK        = 0x100000,
                                                                                        >    43          SEE_MASK_HMONITOR       = 0x200000;
                                                                                        >    44  
                                                                                        >    45  enum : DWORD {
                                                                                        >    46          ABM_NEW,
                                                                                        >    47          ABM_REMOVE,
                                                                                        >    48          ABM_QUERYPOS,
                                                                                        >    49          ABM_SETPOS,
                                                                                        >    50          ABM_GETSTATE,
                                                                                        >    51          ABM_GETTASKBARPOS,
                                                                                        >    52          ABM_ACTIVATE,
                                                                                        >    53          ABM_GETAUTOHIDEBAR,
                                                                                        >    54          ABM_SETAUTOHIDEBAR,
                                                                                        >    55          ABM_WINDOWPOSCHANGED // = 9
                                                                                        >    56  }
                                                                                        >    57  
                                                                                        >    58  static if (WINVER >= 0x501) {
                                                                                        >    59          const DWORD ABM_SETSTATE = 10;
                                                                                        >    60  }
                                                                                        >    61  
                                                                                        >    62  enum : UINT {
                                                                                        >    63          ABN_STATECHANGE,
                                                                                        >    64          ABN_POSCHANGED,
                                                                                        >    65          ABN_FULLSCREENAPP,
                                                                                        >    66          ABN_WINDOWARRANGE
                                                                                        >    67  }
                                                                                        >    68  
                                                                                        >    69  enum : DWORD {
                                                                                        >    70          NIM_ADD,
                                                                                        >    71          NIM_MODIFY,
                                                                                        >    72          NIM_DELETE
                                                                                        >    73  }
                                                                                        >    74  
                                                                                        >    75  static if (_WIN32_IE >= 0x500) {
                                                                                        >    76          const NOTIFYICON_VERSION = 3;
                                                                                        >    77  
                                                                                        >    78          enum : DWORD {
                                                                                        >    79                  NIM_SETFOCUS = 3,
                                                                                        >    80                  NIM_SETVERSION
                                                                                        >    81          }
                                                                                        >    82  }
                                                                                        >    83  
                                                                                        >    84  const UINT
                                                                                        >    85          NIF_MESSAGE = 1,
                                                                                        >    86          NIF_ICON    = 2,
                                                                                        >    87          NIF_TIP     = 4,
                                                                                        >    88          NIF_STATE   = 8;
                                                                                        >    89  
                                                                                        >    90  static if (_WIN32_IE >= 0x500) {
                                                                                        >    91          const UINT NIF_INFO = 0x00000010;
                                                                                        >    92  }
                                                                                        >    93  
                                                                                        >    94  static if (_WIN32_IE >= 0x600) {
                                                                                        >    95          const UINT NIF_GUID = 0x00000020;
                                                                                        >    96  }
                                                                                        >    97  
                                                                                        >    98  static if (_WIN32_IE >= 0x500) {
                                                                                        >    99          enum : DWORD {
                                                                                        >   100                  NIIF_NONE,
                                                                                        >   101                  NIIF_INFO,
                                                                                        >   102                  NIIF_WARNING,
                                                                                        >   103                  NIIF_ERROR
                                                                                        >   104          }
                                                                                        >   105  }
                                                                                        >   106  
                                                                                        >   107  static if (_WIN32_IE >= 0x600) {
                                                                                        >   108          enum : DWORD {
                                                                                        >   109                  NIIF_ICON_MASK = 15,
                                                                                        >   110                  NIIF_NOSOUND
                                                                                        >   111          }
                                                                                        >   112  }
                                                                                        >   113  
                                                                                        >   114  const DWORD
                                                                                        >   115          NIS_HIDDEN     = 1,
                                                                                        >   116          NIS_SHAREDICON = 2;
                                                                                        >   117  
                                                                                        >   118  const HINSTANCE
                                                                                        >   119          SE_ERR_FNF             = cast(HANDLE)  2,
                                                                                        >   120          SE_ERR_PNF             = cast(HANDLE)  3,
                                                                                        >   121          SE_ERR_ACCESSDENIED    = cast(HANDLE)  5,
                                                                                        >   122          SE_ERR_OOM             = cast(HANDLE)  8,
                                                                                        >   123          SE_ERR_DLLNOTFOUND     = cast(HANDLE) 32,
                                                                                        >   124          SE_ERR_SHARE           = cast(HANDLE) 26,
                                                                                        >   125          SE_ERR_ASSOCINCOMPLETE = cast(HANDLE) 27,
                                                                                        >   126          SE_ERR_DDETIMEOUT      = cast(HANDLE) 28,
                                                                                        >   127          SE_ERR_DDEFAIL         = cast(HANDLE) 29,
                                                                                        >   128          SE_ERR_DDEBUSY         = cast(HANDLE) 30,
                                                                                        >   129          SE_ERR_NOASSOC         = cast(HANDLE) 31;
                                                                                        >   130  
                                                                                        >   131  enum : UINT {
                                                                                        >   132          FO_MOVE = 1,
                                                                                        >   133          FO_COPY,
                                                                                        >   134          FO_DELETE,
                                                                                        >   135          FO_RENAME
                                                                                        >   136  }
                                                                                        >   137  
                                                                                        >   138  const FILEOP_FLAGS
                                                                                        >   139          FOF_MULTIDESTFILES        = 0x0001,
                                                                                        >   140          FOF_CONFIRMMOUSE          = 0x0002,
                                                                                        >   141          FOF_SILENT                = 0x0004,
                                                                                        >   142          FOF_RENAMEONCOLLISION     = 0x0008,
                                                                                        >   143          FOF_NOCONFIRMATION        = 0x0010,
                                                                                        >   144          FOF_WANTMAPPINGHANDLE     = 0x0020,
                                                                                        >   145          FOF_ALLOWUNDO             = 0x0040,
                                                                                        >   146          FOF_FILESONLY             = 0x0080,
                                                                                        >   147          FOF_SIMPLEPROGRESS        = 0x0100,
                                                                                        >   148          FOF_NOCONFIRMMKDIR        = 0x0200,
                                                                                        >   149          FOF_NOERRORUI             = 0x0400,
                                                                                        >   150          FOF_NOCOPYSECURITYATTRIBS = 0x0800;
                                                                                        >   151  
                                                                                        >   152  // these are not documented on the MSDN site
                                                                                        >   153  enum {
                                                                                        >   154          PO_DELETE     = 19,
                                                                                        >   155          PO_RENAME     = 20,
                                                                                        >   156          PO_PORTCHANGE = 32,
                                                                                        >   157          PO_REN_PORT   = 52
                                                                                        >   158  }
                                                                                        >   159  
                                                                                        >   160  const UINT
                                                                                        >   161          SHGFI_LARGEICON         = 0x000000,
                                                                                        >   162          SHGFI_SMALLICON         = 0x000001,
                                                                                        >   163          SHGFI_OPENICON          = 0x000002,
                                                                                        >   164          SHGFI_SHELLICONSIZE     = 0x000004,
                                                                                        >   165          SHGFI_PIDL              = 0x000008,
                                                                                        >   166          SHGFI_USEFILEATTRIBUTES = 0x000010,
                                                                                        >   167          SHGFI_ICON              = 0x000100,
                                                                                        >   168          SHGFI_DISPLAYNAME       = 0x000200,
                                                                                        >   169          SHGFI_TYPENAME          = 0x000400,
                                                                                        >   170          SHGFI_ATTRIBUTES        = 0x000800,
                                                                                        >   171          SHGFI_ICONLOCATION      = 0x001000,
                                                                                        >   172          SHGFI_EXETYPE           = 0x002000,
                                                                                        >   173          SHGFI_SYSICONINDEX      = 0x004000,
                                                                                        >   174          SHGFI_LINKOVERLAY       = 0x008000,
                                                                                        >   175          SHGFI_SELECTED          = 0x010000,
                                                                                        >   176          SHGFI_ATTR_SPECIFIED    = 0x020000;
                                                                                        >   177  
                                                                                        >   178  const SHERB_NOCONFIRMATION = 1;
                                                                                        >   179  const SHERB_NOPROGRESSUI   = 2;
                                                                                        >   180  const SHERB_NOSOUND        = 4;
                                                                                        >   181  
                                                                                        >   182  alias WORD FILEOP_FLAGS, PRINTEROP_FLAGS;
                                                                                        >   183  alias HANDLE HDROP;
                                                                                        >   184  
                                                                                        >   185  align(2):
                                                                                        >   186  
                                                                                        >   187  struct APPBARDATA {
                                                                                        >   188          DWORD  cbSize = APPBARDATA.sizeof;
                                                                                        >   189          HWND   hWnd;
                                                                                        >   190          UINT   uCallbackMessage;
                                                                                        >   191          UINT   uEdge;
                                                                                        >   192          RECT   rc;
                                                                                        >   193          LPARAM lParam;
                                                                                        >   194  }
                                                                                        >   195  alias APPBARDATA* PAPPBARDATA;
    5                                                                                       196  
    6  import win32.windef;                                                             |   197  struct NOTIFYICONDATAA {
    7  import win32.winbase;                                                            |   198          DWORD cbSize = NOTIFYICONDATAA.sizeof;
    8  import win32.winuser;                                                            |   199          HWND  hWnd;
                                                                                        >   200          UINT  uID;
                                                                                        >   201          UINT  uFlags;
                                                                                        >   202          UINT  uCallbackMessage;
                                                                                        >   203          HICON hIcon;
                                                                                        >   204          static if (_WIN32_IE >= 0x500) {
                                                                                        >   205                  CHAR[128] szTip;
                                                                                        >   206                  DWORD     dwState;
                                                                                        >   207                  DWORD     dwStateMask;
                                                                                        >   208                  CHAR[256] szInfo;
                                                                                        >   209                  union {
                                                                                        >   210                          UINT  uTimeout;
                                                                                        >   211                          UINT  uVersion;
                                                                                        >   212                  }
                                                                                        >   213                  CHAR[64]  szInfoTitle;
                                                                                        >   214                  DWORD     dwInfoFlags;
                                                                                        >   215          } else {
                                                                                        >   216                  CHAR[64]  szTip;
                                                                                        >   217          }
                                                                                        >   218          static if (_WIN32_IE >= 0x600) {
                                                                                        >   219                  GUID      guidItem;
                                                                                        >   220          }
                                                                                        >   221  }
                                                                                        >   222  alias NOTIFYICONDATAA* PNOTIFYICONDATAA;
    9                                                                                       223  
   10  // #ifndef _INC_SHELLAPI                                                         |   224  struct NOTIFYICONDATAW {
   11  // #define _INC_SHELLAPI                                                         |   225          DWORD cbSize = NOTIFYICONDATAW.sizeof;
                                                                                        >   226          HWND  hWnd;
                                                                                        >   227          UINT  uID;
                                                                                        >   228          UINT  uFlags;
                                                                                        >   229          UINT  uCallbackMessage;
                                                                                        >   230          HICON hIcon;
                                                                                        >   231          static if (_WIN32_IE >= 0x500) {
                                                                                        >   232                  WCHAR[128] szTip;
                                                                                        >   233                  DWORD      dwState;
                                                                                        >   234                  DWORD      dwStateMask;
                                                                                        >   235                  WCHAR[256] szInfo;
                                                                                        >   236                  union {
                                                                                        >   237                          UINT   uTimeout;
                                                                                        >   238                          UINT   uVersion;
                                                                                        >   239                  }
                                                                                        >   240                  WCHAR[64]  szInfoTitle;
                                                                                        >   241                  DWORD      dwInfoFlags;
                                                                                        >   242          } else {
                                                                                        >   243                  WCHAR[64]  szTip;
                                                                                        >   244          }
                                                                                        >   245          static if (_WIN32_IE >= 0x600) {
                                                                                        >   246                  GUID guidItem;
                                                                                        >   247          }
                                                                                        >   248  }
                                                                                        >   249  alias NOTIFYICONDATAW* PNOTIFYICONDATAW;
   12                                                                                       250  
   13  // #ifndef WINSHELLAPI                                                           |   251  struct SHELLEXECUTEINFOA {
   14  // #if !defined(_SHELL32_)                                                       |   252          DWORD     cbSize = SHELLEXECUTEINFOA.sizeof;
   15  // #define WINSHELLAPI DECLSPEC_IMPORT                                           |   253          ULONG     fMask;
   16  // #else                                                                         |   254          HWND      hwnd;
   17  // #...                                                                          |   255          LPCSTR    lpVerb;
   18  // #endif                                                                        |   256          LPCSTR    lpFile;
   19  // #endif // WINSHELLAPI                                                         |   257          LPCSTR    lpParameters;
                                                                                        >   258          LPCSTR    lpDirectory;
                                                                                        >   259          int       nShow;
                                                                                        >   260          HINSTANCE hInstApp;
                                                                                        >   261          PVOID     lpIDList;
                                                                                        >   262          LPCSTR    lpClass;
                                                                                        >   263          HKEY      hkeyClass;
                                                                                        >   264          DWORD     dwHotKey;
                                                                                        >   265          HANDLE    hIcon;
                                                                                        >   266          HANDLE    hProcess;
                                                                                        >   267  }
                                                                                        >   268  alias SHELLEXECUTEINFOA* LPSHELLEXECUTEINFOA;
   20                                                                                       269  
   21  // #ifndef SHSTDAPI                                                              |   270  struct SHELLEXECUTEINFOW {
   22  // #if !defined(_SHELL32_)                                                       |   271          DWORD     cbSize = SHELLEXECUTEINFOW.sizeof;
   23  // #define SHSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE              |   272          ULONG     fMask;
   24  // #define SHSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE          |   273          HWND      hwnd;
   25  // #else                                                                         |   274          LPCWSTR   lpVerb;
   26  // #...                                                                          |   275          LPCWSTR   lpFile;
   27  // #...                                                                          |   276          LPCWSTR   lpParameters;
   28  // #endif                                                                        |   277          LPCWSTR   lpDirectory;
   29  // #endif // SHSTDAPI                                                            |   278          int       nShow;
                                                                                        >   279          HINSTANCE hInstApp;
                                                                                        >   280          PVOID     lpIDList;
                                                                                        >   281          LPCWSTR   lpClass;
                                                                                        >   282          HKEY      hkeyClass;
                                                                                        >   283          DWORD     dwHotKey;
                                                                                        >   284          HANDLE    hIcon;
                                                                                        >   285          HANDLE    hProcess;
                                                                                        >   286  }
                                                                                        >   287  alias SHELLEXECUTEINFOW* LPSHELLEXECUTEINFOW;
   30                                                                                       288  
   31  // #ifndef SHDOCAPI                                                              |   289  struct SHFILEOPSTRUCTA {
   32  // #if !defined(_SHDOCVW_)                                                       |   290          HWND         hwnd;
   33  // #define SHDOCAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE              |   291          UINT         wFunc;
   34  // #define SHDOCAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE          |   292          LPCSTR       pFrom;
   35  // #else                                                                         |   293          LPCSTR       pTo;
   36  // #...                                                                          |   294          FILEOP_FLAGS fFlags;
   37  // #...                                                                          |   295          BOOL         fAnyOperationsAborted;
   38  // #endif                                                                        |   296          PVOID        hNameMappings;
   39  // #endif // SHDOCAPI                                                            |   297          LPCSTR       lpszProgressTitle;
                                                                                        >   298  }
                                                                                        >   299  alias SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA;
   40                                                                                       300  
   41  // #if !defined(_WIN64)                                                          |   301  struct SHFILEOPSTRUCTW {
   42  align(1):                                                                        |   302          HWND         hwnd;
   43  // #endif                                                                        |   303          UINT         wFunc;
   44                                                                                   <
                                                                                        >   304          LPCWSTR      pFrom;
   45  // #ifdef __cplusplus                                                            |   305          LPCWSTR      pTo;
   46  // extern "C" {            /* Assume C declarations for C++ */                   |   306          FILEOP_FLAGS fFlags;
   47  // #endif  /* __cplusplus */                                                     |   307          BOOL         fAnyOperationsAborted;
   48                                                                                   <
                                                                                        >   308          PVOID        hNameMappings;
   49  alias void* HDROP;                                                               |   309          LPCWSTR      lpszProgressTitle;
   50                                                                                   |   310  }
   51  extern(Windows) export UINT DragQueryFileA(HDROP,UINT,LPSTR,UINT);               |   311  alias SHFILEOPSTRUCTW* LPSHFILEOPSTRUCTW;
   52  extern(Windows) export UINT DragQueryFileW(HDROP,UINT,LPWSTR,UINT);              <
   53  // #ifdef UNICODE                                                                <
   54  alias DragQueryFileW DragQueryFile;                                              <
   55  // #else                                                                         <
   56  // #...                                                                          <
   57  // #endif // !UNICODE                                                            <
   58  extern(Windows) export BOOL DragQueryPoint(HDROP,LPPOINT);                       <
   59  extern(Windows) export void DragFinish(HDROP);                                   <
   60  extern(Windows) export void DragAcceptFiles(HWND,BOOL);                          <
   61                                                                                   <
   62  extern(Windows) export HINSTANCE ShellExecuteA(HWND hwnd, LPCSTR lpOperation, LP <
   63  extern(Windows) export HINSTANCE ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, L <
   64  // #ifdef UNICODE                                                                <
   65  alias ShellExecuteW ShellExecute;                                                <
   66  // #else                                                                         <
   67  // #...                                                                          <
   68  // #endif // !UNICODE                                                            <
   69  extern(Windows) export HINSTANCE FindExecutableA(LPCSTR lpFile, LPCSTR lpDirecto <
   70  extern(Windows) export HINSTANCE FindExecutableW(LPCWSTR lpFile, LPCWSTR lpDirec <
   71  // #ifdef UNICODE                                                                <
   72  alias FindExecutableW FindExecutable;                                            <
   73  // #else                                                                         <
   74  // #...                                                                          <
   75  // #endif // !UNICODE                                                            <
   76  extern(Windows) export LPWSTR * CommandLineToArgvW(LPCWSTR lpCmdLine, int*pNumAr <
   77                                                                                       312  
   78  extern(Windows) export INT ShellAboutA(HWND hWnd, LPCSTR szApp, LPCSTR szOtherSt |   313  struct SHFILEINFOA {
   79  extern(Windows) export INT ShellAboutW(HWND hWnd, LPCWSTR szApp, LPCWSTR szOther |   314          HICON          hIcon;
   80  // #ifdef UNICODE                                                                |   315          int            iIcon;
   81  alias ShellAboutW ShellAbout;                                                    |   316          DWORD          dwAttributes;
   82  // #else                                                                         |   317          CHAR[MAX_PATH] szDisplayName;
   83  // #...                                                                          |   318          CHAR[80]       szTypeName;
   84  // #endif // !UNICODE                                                            <
   85  extern(Windows) export HICON DuplicateIcon(HINSTANCE hInst, HICON hIcon);        <
   86  extern(Windows) export HICON ExtractAssociatedIconA(HINSTANCE hInst, LPSTR lpIco <
   87  extern(Windows) export HICON ExtractAssociatedIconW(HINSTANCE hInst, LPWSTR lpIc <
   88  // #ifdef UNICODE                                                                <
   89  alias ExtractAssociatedIconW ExtractAssociatedIcon;                              <
   90  // #else                                                                         <
   91  // #...                                                                          <
   92  // #endif // !UNICODE                                                            <
   93  extern(Windows) export HICON ExtractIconA(HINSTANCE hInst, LPCSTR lpszExeFileNam <
   94  extern(Windows) export HICON ExtractIconW(HINSTANCE hInst, LPCWSTR lpszExeFileNa <
   95  // #ifdef UNICODE                                                                <
   96  alias ExtractIconW ExtractIcon;                                                  <
   97  // #else                                                                         <
   98  // #...                                                                          <
   99  // #endif // !UNICODE                                                            <
  100                                                                                   <
  101  // #if(WINVER >= 0x0400)                                                         <
  102  struct _DRAGINFOA {                                                              <
  103    UINT uSize;                                                                    <
  104    POINT pt;                                                                      <
  105    BOOL fNC;                                                                      <
  106    LPSTR lpFileList;                                                              <
  107    DWORD grfKeyState;                                                             <
  108  }                                                                                    319  }
  109  alias _DRAGINFOA DRAGINFOA;                                                      <
  110  alias _DRAGINFOA* LPDRAGINFOA;                                                   <
  111                                                                                   <
  112  struct _DRAGINFOW {                                                              <
  113    UINT uSize;                                                                    <
  114    POINT pt;                                                                      <
  115    BOOL fNC;                                                                      <
  116    LPWSTR lpFileList;                                                             <
  117    DWORD grfKeyState;                                                             <
  118  }                                                                                <
  119  alias _DRAGINFOW DRAGINFOW;                                                      <
  120  alias _DRAGINFOW* LPDRAGINFOW;                                                   <
  121                                                                                   <
  122  // #ifdef UNICODE                                                                <
  123  alias DRAGINFOW DRAGINFO;                                                        <
  124  alias LPDRAGINFOW LPDRAGINFO;                                                    <
  125  // #else                                                                         <
  126  // ...                                                                           <
  127  // #endif // UNICODE                                                             <
  128                                                                                       320  
  129  enum : uint { ABM_NEW = 0x00000000 }                                             |   321  struct SHFILEINFOW {
  130  enum : uint { ABM_REMOVE = 0x00000001 }                                          |   322          HICON           hIcon;
  131  enum : uint { ABM_QUERYPOS = 0x00000002 }                                        |   323          int             iIcon;
  132  enum : uint { ABM_SETPOS = 0x00000003 }                                          |   324          DWORD           dwAttributes;
  133  enum : uint { ABM_GETSTATE = 0x00000004 }                                        |   325          WCHAR[MAX_PATH] szDisplayName;
  134  enum : uint { ABM_GETTASKBARPOS = 0x00000005 }                                   |   326          WCHAR[80]       szTypeName;
  135  enum : uint { ABM_ACTIVATE = 0x00000006 }                                        <
  136  enum : uint { ABM_GETAUTOHIDEBAR = 0x00000007 }                                  <
  137  enum : uint { ABM_SETAUTOHIDEBAR = 0x00000008 }                                  <
  138                                                                                   <
  139  enum : uint { ABM_WINDOWPOSCHANGED = 0x0000009 }                                 <
  140  enum : uint { ABM_SETSTATE = 0x0000000a }                                        <
  141                                                                                   <
  142  enum : uint { ABN_STATECHANGE = 0x0000000 }                                      <
  143  enum : uint { ABN_POSCHANGED = 0x0000001 }                                       <
  144  enum : uint { ABN_FULLSCREENAPP = 0x0000002 }                                    <
  145  enum : uint { ABN_WINDOWARRANGE = 0x0000003 }                                    <
  146                                                                                   <
  147  enum : uint { ABS_AUTOHIDE = 0x0000001 }                                         <
  148  enum : uint { ABS_ALWAYSONTOP = 0x0000002 }                                      <
  149                                                                                   <
  150  enum : uint { ABE_LEFT = 0 }                                                     <
  151  enum : uint { ABE_TOP = 1 }                                                      <
  152  enum : uint { ABE_RIGHT = 2 }                                                    <
  153  enum : uint { ABE_BOTTOM = 3 }                                                   <
  154                                                                                   <
  155  struct _AppBarData {                                                             <
  156    DWORD cbSize;                                                                  <
  157    HWND hWnd;                                                                     <
  158    UINT uCallbackMessage;                                                         <
  159    UINT uEdge;                                                                    <
  160    RECT rc;                                                                       <
  161    LPARAM lParam;                                                                 <
  162  }                                                                                    327  }
  163  alias _AppBarData APPBARDATA;                                                    <
  164  alias _AppBarData* PAPPBARDATA;                                                  <
  165                                                                                       328  
  166  extern(Windows) export UINT_PTR SHAppBarMessage(DWORD dwMessage, PAPPBARDATA pDa |   329  struct SHQUERYRBINFO {
  167                                                                                   <
                                                                                        >   330          DWORD cbSize = SHQUERYRBINFO.sizeof;
  168  extern(Windows) export DWORD DoEnvironmentSubstA(LPSTR szString, UINT cchString) |   331          long  i64Size;
  169  extern(Windows) export DWORD DoEnvironmentSubstW(LPWSTR szString, UINT cchString |   332          long  i64NumItems;
  170  // #ifdef UNICODE                                                                <
  171  alias DoEnvironmentSubstW DoEnvironmentSubst;                                    <
  172  // #else                                                                         <
  173  // #...                                                                          <
  174  // #endif // !UNICODE                                                            <
  175                                                                                   <
  176  // #define EIRESID(x) (-1 * (int)(x))                                            <
  177  extern(Windows) export UINT ExtractIconExA(LPCSTR lpszFile, int nIconIndex, HICO <
  178  extern(Windows) export UINT ExtractIconExW(LPCWSTR lpszFile, int nIconIndex, HIC <
  179  // #ifdef UNICODE                                                                <
  180  alias ExtractIconExW ExtractIconEx;                                              <
  181  // #else                                                                         <
  182  // #...                                                                          <
  183  // #endif // !UNICODE                                                            <
  184                                                                                   <
  185  // #ifndef FO_MOVE //these need to be kept in sync with the ones in shlobj.h     <
  186                                                                                   <
  187  enum : uint { FO_MOVE = 0x0001 }                                                 <
  188  enum : uint { FO_COPY = 0x0002 }                                                 <
  189  enum : uint { FO_DELETE = 0x0003 }                                               <
  190  enum : uint { FO_RENAME = 0x0004 }                                               <
  191                                                                                   <
  192  enum : uint { FOF_MULTIDESTFILES = 0x0001 }                                      <
  193  enum : uint { FOF_CONFIRMMOUSE = 0x0002 }                                        <
  194  enum : uint { FOF_SILENT = 0x0004 }                                              <
  195  enum : uint { FOF_RENAMEONCOLLISION = 0x0008 }                                   <
  196  enum : uint { FOF_NOCONFIRMATION = 0x0010 }                                      <
  197  enum : uint { FOF_WANTMAPPINGHANDLE = 0x0020 }                                   <
  198                                                                                   <
  199  enum : uint { FOF_ALLOWUNDO = 0x0040 }                                           <
  200  enum : uint { FOF_FILESONLY = 0x0080 }                                           <
  201  enum : uint { FOF_SIMPLEPROGRESS = 0x0100 }                                      <
  202  enum : uint { FOF_NOCONFIRMMKDIR = 0x0200 }                                      <
  203  enum : uint { FOF_NOERRORUI = 0x0400 }                                           <
  204  enum : uint { FOF_NOCOPYSECURITYATTRIBS = 0x0800 }                               <
  205  enum : uint { FOF_NORECURSION = 0x1000 }                                         <
  206  // #if (_WIN32_IE >= 0x0500)                                                     <
  207  enum : uint { FOF_NO_CONNECTED_ELEMENTS = 0x2000 }                               <
  208  enum : uint { FOF_WANTNUKEWARNING = 0x4000 }                                     <
  209  // #endif // (_WIN32_IE >= 0x500)                                                <
  210  // #if (_WIN32_WINNT >= 0x0501)                                                  <
  211  enum : uint { FOF_NORECURSEREPARSE = 0x8000 }                                    <
  212  // #endif // (_WIN32_WINNT >= 0x501)                                             <
  213                                                                                   <
  214  alias WORD FILEOP_FLAGS;                                                         <
  215                                                                                   <
  216  enum : uint { PO_DELETE = 0x0013 }                                               <
  217  enum : uint { PO_RENAME = 0x0014 }                                               <
  218  enum : uint { PO_PORTCHANGE = 0x0020 }                                           <
  219                                                                                   <
  220  enum : uint { PO_REN_PORT = 0x0034 }                                             <
  221                                                                                   <
  222  alias WORD PRINTEROP_FLAGS;                                                      <
  223                                                                                   <
  224  // #endif // FO_MOVE                                                             <
  225                                                                                   <
  226  struct _SHFILEOPSTRUCTA {                                                        <
  227    HWND hwnd;                                                                     <
  228    UINT wFunc;                                                                    <
  229    LPCSTR pFrom;                                                                  <
  230    LPCSTR pTo;                                                                    <
  231    FILEOP_FLAGS fFlags;                                                           <
  232    BOOL fAnyOperationsAborted;                                                    <
  233    LPVOID hNameMappings;                                                          <
  234    LPCSTR lpszProgressTitle;                                                      <
  235  }                                                                                <
  236  alias _SHFILEOPSTRUCTA SHFILEOPSTRUCTA;                                          <
  237  alias _SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA;                                       <
  238                                                                                   <
  239  struct _SHFILEOPSTRUCTW {                                                        <
  240    HWND hwnd;                                                                     <
  241    UINT wFunc;                                                                    <
  242    LPCWSTR pFrom;                                                                 <
  243    LPCWSTR pTo;                                                                   <
  244    FILEOP_FLAGS fFlags;                                                           <
  245    BOOL fAnyOperationsAborted;                                                    <
  246    LPVOID hNameMappings;                                                          <
  247    LPCWSTR lpszProgressTitle;                                                     <
  248  }                                                                                    333  }
  249  alias _SHFILEOPSTRUCTW SHFILEOPSTRUCTW;                                          |   334  alias SHQUERYRBINFO* LPSHQUERYRBINFO;
  250  alias _SHFILEOPSTRUCTW* LPSHFILEOPSTRUCTW;                                       <
  251                                                                                   <
  252  // #ifdef UNICODE                                                                <
  253  alias SHFILEOPSTRUCTW SHFILEOPSTRUCT;                                            <
  254  alias LPSHFILEOPSTRUCTW LPSHFILEOPSTRUCT;                                        <
  255  // #else                                                                         <
  256  // ...                                                                           <
  257  // #endif // UNICODE                                                             <
  258                                                                                       335  
                                                                                        >   336  extern (Windows) {
                                                                                        >   337          LPWSTR* CommandLineToArgvW(LPCWSTR, int*);
                                                                                        >   338          void DragAcceptFiles(HWND, BOOL);
                                                                                        >   339          void DragFinish(HDROP);
                                                                                        >   340          UINT DragQueryFileA(HDROP, UINT, LPSTR, UINT);
                                                                                        >   341          UINT DragQueryFileW(HDROP, UINT, LPWSTR, UINT);
                                                                                        >   342          BOOL DragQueryPoint(HDROP, LPPOINT);
                                                                                        >   343          HICON DuplicateIcon(HINSTANCE, HICON);
                                                                                        >   344          HICON ExtractAssociatedIconA(HINSTANCE, LPCSTR, PWORD);
                                                                                        >   345          HICON ExtractAssociatedIconW(HINSTANCE, LPCWSTR, PWORD);
                                                                                        >   346          HICON ExtractIconA(HINSTANCE, LPCSTR, UINT);
                                                                                        >   347          HICON ExtractIconW(HINSTANCE, LPCWSTR, UINT);
                                                                                        >   348          UINT ExtractIconExA(LPCSTR, int, HICON*, HICON*, UINT);
                                                                                        >   349          UINT ExtractIconExW(LPCWSTR, int, HICON*, HICON*, UINT);
                                                                                        >   350          HINSTANCE FindExecutableA(LPCSTR, LPCSTR, LPSTR);
                                                                                        >   351          HINSTANCE FindExecutableW(LPCWSTR, LPCWSTR, LPWSTR);
                                                                                        >   352          UINT SHAppBarMessage(DWORD, PAPPBARDATA);
                                                                                        >   353          BOOL Shell_NotifyIconA(DWORD, PNOTIFYICONDATAA);
                                                                                        >   354          BOOL Shell_NotifyIconW(DWORD, PNOTIFYICONDATAW);
                                                                                        >   355          int ShellAboutA(HWND, LPCSTR, LPCSTR, HICON);
                                                                                        >   356          int ShellAboutW(HWND, LPCWSTR, LPCWSTR, HICON);
                                                                                        >   357          HINSTANCE ShellExecuteA(HWND, LPCSTR, LPCSTR, LPCSTR, LPCSTR, INT);
                                                                                        >   358          HINSTANCE ShellExecuteW(HWND, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, INT);
                                                                                        >   359          BOOL ShellExecuteExA(LPSHELLEXECUTEINFOA);
                                                                                        >   360          BOOL ShellExecuteExW(LPSHELLEXECUTEINFOW);
  259  extern(Windows) export int SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp);         |   361          int SHFileOperationA(LPSHFILEOPSTRUCTA);
  260  extern(Windows) export int SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp);         |   362          int SHFileOperationW(LPSHFILEOPSTRUCTW);
  261  // #ifdef UNICODE                                                                <
  262  alias SHFileOperationW SHFileOperation;                                          <
  263  // #else                                                                         <
  264  // #...                                                                          <
  265  // #endif // !UNICODE                                                            <
  266  extern(Windows) export void SHFreeNameMappings(HANDLE hNameMappings);            |   363          void SHFreeNameMappings(HANDLE);
  267                                                                                   <
  268  struct _SHNAMEMAPPINGA {                                                         <
  269    LPSTR pszOldPath;                                                              <
  270    LPSTR pszNewPath;                                                              <
  271    int cchOldPath;                                                                <
  272    int cchNewPath;                                                                <
  273  }                                                                                <
  274  alias _SHNAMEMAPPINGA SHNAMEMAPPINGA;                                            <
  275  alias _SHNAMEMAPPINGA* LPSHNAMEMAPPINGA;                                         <
  276                                                                                   <
  277  struct _SHNAMEMAPPINGW {                                                         <
  278    LPWSTR pszOldPath;                                                             <
  279    LPWSTR pszNewPath;                                                             <
  280    int cchOldPath;                                                                <
  281    int cchNewPath;                                                                <
  282  }                                                                                <
  283  alias _SHNAMEMAPPINGW SHNAMEMAPPINGW;                                            <
  284  alias _SHNAMEMAPPINGW* LPSHNAMEMAPPINGW;                                         <
  285                                                                                   <
  286  // #ifdef UNICODE                                                                <
  287  alias SHNAMEMAPPINGW SHNAMEMAPPING;                                              |   364          DWORD SHGetFileInfoA(LPCSTR, DWORD, SHFILEINFOA*, UINT, UINT);
  288  alias LPSHNAMEMAPPINGW LPSHNAMEMAPPING;                                          |   365          DWORD SHGetFileInfoW(LPCWSTR, DWORD, SHFILEINFOW*, UINT, UINT);
  289  // #else                                                                         |   366          HRESULT SHQueryRecycleBinA(LPCSTR,  LPSHQUERYRBINFO);
  290  // ...                                                                           |   367          HRESULT SHQueryRecycleBinW(LPCWSTR,  LPSHQUERYRBINFO);
  291  // #endif // UNICODE                                                             |   368          HRESULT SHEmptyRecycleBinA(HWND, LPCSTR, DWORD);
  292                                                                                   <
  293  enum : uint { SE_ERR_FNF = 2 }                                                   <
  294  enum : uint { SE_ERR_PNF = 3 }                                                   <
  295  enum : uint { SE_ERR_ACCESSDENIED = 5 }                                          <
  296  enum : uint { SE_ERR_OOM = 8 }                                                   <
  297  enum : uint { SE_ERR_DLLNOTFOUND = 32 }                                          <
  298                                                                                   <
  299  // #endif /* WINVER >= 0x0400 */                                                 <
  300                                                                                   <
  301  enum : uint { SE_ERR_SHARE = 26 }                                                <
  302  enum : uint { SE_ERR_ASSOCINCOMPLETE = 27 }                                      <
  303  enum : uint { SE_ERR_DDETIMEOUT = 28 }                                           <
  304  enum : uint { SE_ERR_DDEFAIL = 29 }                                              <
  305  enum : uint { SE_ERR_DDEBUSY = 30 }                                              <
  306  enum : uint { SE_ERR_NOASSOC = 31 }                                              <
  307                                                                                   <
  308  // #if(WINVER >= 0x0400)                                                         <
  309                                                                                   <
  310  enum : uint { SEE_MASK_CLASSNAME = 0x00000001 }                                  <
  311  enum : uint { SEE_MASK_CLASSKEY = 0x00000003 }                                   <
  312                                                                                   <
  313  enum : uint { SEE_MASK_IDLIST = 0x00000004 }                                     <
  314  enum : uint { SEE_MASK_INVOKEIDLIST = 0x0000000c }                               <
  315  enum : uint { SEE_MASK_ICON = 0x00000010 }                                       <
  316  enum : uint { SEE_MASK_HOTKEY = 0x00000020 }                                     <
  317  enum : uint { SEE_MASK_NOCLOSEPROCESS = 0x00000040 }                             <
  318  enum : uint { SEE_MASK_CONNECTNETDRV = 0x00000080 }                              <
  319  enum : uint { SEE_MASK_FLAG_DDEWAIT = 0x00000100 }                               <
  320  enum : uint { SEE_MASK_DOENVSUBST = 0x00000200 }                                 <
  321  enum : uint { SEE_MASK_FLAG_NO_UI = 0x00000400 }                                 <
  322  enum : uint { SEE_MASK_UNICODE = 0x00004000 }                                    <
  323  enum : uint { SEE_MASK_NO_CONSOLE = 0x00008000 }                                 <
  324  enum : uint { SEE_MASK_ASYNCOK = 0x00100000 }                                    <
  325  enum : uint { SEE_MASK_HMONITOR = 0x00200000 }                                   <
  326  // #if (_WIN32_IE >= 0x0500)                                                     <
  327  enum : uint { SEE_MASK_NOQUERYCLASSSTORE = 0x01000000 }                          <
  328  enum : uint { SEE_MASK_WAITFORINPUTIDLE = 0x02000000 }                           <
  329  // #endif // (_WIN32_IE >= 0x500)                                                <
  330  // #if (_WIN32_IE >= 0x0560)                                                     <
  331  enum : uint { SEE_MASK_FLAG_LOG_USAGE = 0x04000000 }                             <
  332  // #endif // (_WIN32_IE >= 0x560)                                                <
  333                                                                                   <
  334  // #ifndef DUMMYUNIONNAME                                                        <
  335  // #ifdef NONAMELESSUNION                                                        <
  336  // #...                                                                          <
  337  // #...                                                                          <
  338  // #...                                                                          <
  339  // #...                                                                          <
  340  // #...                                                                          <
  341  // #else                                                                         <
  342  // #define DUMMYUNIONNAME                                                        <
  343  // #define DUMMYUNIONNAME2                                                       <
  344  // #define DUMMYUNIONNAME3                                                       <
  345  // #define DUMMYUNIONNAME4                                                       <
  346  // #define DUMMYUNIONNAME5                                                       <
  347  // #endif                                                                        <
  348  // #endif // DUMMYUNIONNAME                                                      <
  349                                                                                   <
  350  struct _SHELLEXECUTEINFOA {                                                      <
  351    DWORD cbSize;                                                                  <
  352    ULONG fMask;                                                                   <
  353    HWND hwnd;                                                                     <
  354    LPCSTR lpVerb;                                                                 <
  355    LPCSTR lpFile;                                                                 <
  356    LPCSTR lpParameters;                                                           <
  357    LPCSTR lpDirectory;                                                            <
  358    int nShow;                                                                     <
  359    HINSTANCE hInstApp;                                                            <
  360                                                                                   <
  361    LPVOID lpIDList;                                                               <
  362    LPCSTR lpClass;                                                                <
  363    HKEY hkeyClass;                                                                <
  364    DWORD dwHotKey;                                                                <
  365  union {                                                                          <
  366    HANDLE hIcon;                                                                  <
  367    HANDLE hMonitor;                                                               <
                                                                                        >   369          HRESULT SHEmptyRecycleBinW(HWND, LPCWSTR, DWORD);
  368  }                                                                                    370  }
  369                                                                                       371  
  370    HANDLE hProcess;                                                               |   372  version (Unicode) {
  371  }                                                                                <
                                                                                        >   373          alias NOTIFYICONDATAW NOTIFYICONDATA;
  372  alias _SHELLEXECUTEINFOA SHELLEXECUTEINFOA;                                      |   374          alias SHELLEXECUTEINFOW SHELLEXECUTEINFO;
  373  alias _SHELLEXECUTEINFOA* LPSHELLEXECUTEINFOA;                                   |   375          alias SHFILEOPSTRUCTW SHFILEOPSTRUCT;
  374                                                                                   <
                                                                                        >   376          alias SHFILEINFOW SHFILEINFO;
  375  struct _SHELLEXECUTEINFOW {                                                      |   377          alias DragQueryFileW DragQueryFile;
  376    DWORD cbSize;                                                                  |   378          alias ExtractAssociatedIconW ExtractAssociatedIcon;
  377    ULONG fMask;                                                                   |   379          alias ExtractIconW ExtractIcon;
  378    HWND hwnd;                                                                     |   380          alias ExtractIconExW ExtractIconEx;
  379    LPCWSTR lpVerb;                                                                |   381          alias FindExecutableW FindExecutable;
  380    LPCWSTR lpFile;                                                                |   382          alias Shell_NotifyIconW Shell_NotifyIcon;
  381    LPCWSTR lpParameters;                                                          |   383          alias ShellAboutW ShellAbout;
  382    LPCWSTR lpDirectory;                                                           |   384          alias ShellExecuteW ShellExecute;
  383    int nShow;                                                                     |   385          alias ShellExecuteExW ShellExecuteEx;
  384    HINSTANCE hInstApp;                                                            |   386          alias SHFileOperationW SHFileOperation;
  385                                                                                   <
                                                                                        >   387          alias SHGetFileInfoW SHGetFileInfo;
  386    LPVOID lpIDList;                                                               |   388          alias SHQueryRecycleBinW SHQueryRecycleBin;
  387    LPCWSTR lpClass;                                                               |   389          alias SHEmptyRecycleBinW SHEmptyRecycleBin;
  388    HKEY hkeyClass;                                                                |   390  } else {
  389    DWORD dwHotKey;                                                                |   391          alias NOTIFYICONDATAA NOTIFYICONDATA;
  390  union {                                                                          |   392          alias SHELLEXECUTEINFOA SHELLEXECUTEINFO;
  391    HANDLE hIcon;                                                                  |   393          alias SHFILEOPSTRUCTA SHFILEOPSTRUCT;
  392    HANDLE hMonitor;                                                               |   394          alias SHFILEINFOA SHFILEINFO;
                                                                                        >   395          alias DragQueryFileA DragQueryFile;
                                                                                        >   396          alias ExtractAssociatedIconA ExtractAssociatedIcon;
                                                                                        >   397          alias ExtractIconA ExtractIcon;
                                                                                        >   398          alias ExtractIconExA ExtractIconEx;
                                                                                        >   399          alias FindExecutableA FindExecutable;
                                                                                        >   400          alias Shell_NotifyIconA Shell_NotifyIcon;
                                                                                        >   401          alias ShellAboutA ShellAbout;
                                                                                        >   402          alias ShellExecuteA ShellExecute;
                                                                                        >   403          alias ShellExecuteExA ShellExecuteEx;
                                                                                        >   404          alias SHFileOperationA SHFileOperation;
                                                                                        >   405          alias SHGetFileInfoA SHGetFileInfo;
                                                                                        >   406          alias SHQueryRecycleBinA SHQueryRecycleBin;
                                                                                        >   407          alias SHEmptyRecycleBinA SHEmptyRecycleBin;
  393  }                                                                                    408  }
  394                                                                                       409  
  395    HANDLE hProcess;                                                               |   410  alias NOTIFYICONDATA* PNOTIFYICONDATA;
  396  }                                                                                <
  397  alias _SHELLEXECUTEINFOW SHELLEXECUTEINFOW;                                      <
  398  alias _SHELLEXECUTEINFOW* LPSHELLEXECUTEINFOW;                                   <
  399                                                                                   <
  400  // #ifdef UNICODE                                                                <
  401  alias SHELLEXECUTEINFOW SHELLEXECUTEINFO;                                        |   411  alias SHELLEXECUTEINFO* LPSHELLEXECUTEINFO;
  402  alias LPSHELLEXECUTEINFOW LPSHELLEXECUTEINFO;                                    <
  403  // #else                                                                         <
  404  // ...                                                                           <
  405  // #endif // UNICODE                                                             <
  406                                                                                   <
  407  extern(Windows) export BOOL ShellExecuteExA(LPSHELLEXECUTEINFOA lpExecInfo);     <
  408  extern(Windows) export BOOL ShellExecuteExW(LPSHELLEXECUTEINFOW lpExecInfo);     <
  409  // #ifdef UNICODE                                                                <
  410  alias ShellExecuteExW ShellExecuteEx;                                            <
  411  // #else                                                                         <
  412  // #...                                                                          <
  413  // #endif // !UNICODE                                                            <
  414  extern(Windows) export void WinExecErrorA(HWND hwnd, int error, LPCSTR lpstrFile <
  415  extern(Windows) export void WinExecErrorW(HWND hwnd, int error, LPCWSTR lpstrFil <
  416  // #ifdef UNICODE                                                                <
  417  alias WinExecErrorW WinExecError;                                                <
  418  // #else                                                                         <
  419  // #...                                                                          <
  420  // #endif // !UNICODE                                                            <
  421                                                                                   <
  422  struct _SHCREATEPROCESSINFOW {                                                   <
  423    DWORD cbSize;                                                                  <
  424    ULONG fMask;                                                                   <
  425    HWND hwnd;                                                                     <
  426    LPCWSTR pszFile;                                                               <
  427    LPCWSTR pszParameters;                                                         <
  428    LPCWSTR pszCurrentDirectory;                                                   <
  429    HANDLE hUserToken;                                                             <
  430    LPSECURITY_ATTRIBUTES lpProcessAttributes;                                     <
  431    LPSECURITY_ATTRIBUTES lpThreadAttributes;                                      <
  432    BOOL bInheritHandles;                                                          <
  433    DWORD dwCreationFlags;                                                         <
  434    LPSTARTUPINFOW lpStartupInfo;                                                  <
  435    LPPROCESS_INFORMATION lpProcessInformation;                                    <
  436  }                                                                                <
  437  alias _SHCREATEPROCESSINFOW SHCREATEPROCESSINFOW;                                <
  438  alias _SHCREATEPROCESSINFOW* PSHCREATEPROCESSINFOW;                              <
  439                                                                                   <
  440  extern(Windows) export BOOL SHCreateProcessAsUserW(PSHCREATEPROCESSINFOW pscpi); <
  441                                                                                   <
  442  struct _SHQUERYRBINFO {                                                          <
  443    DWORD cbSize;                                                                  <
  444  // #if !defined(_MAC) || defined(_MAC_INT_64)                                    <
  445    __int64 i64Size;                                                               <
  446    __int64 i64NumItems;                                                           <
  447  // #else                                                                         <
  448  // ...                                                                           <
  449  // #endif                                                                        <
  450  }                                                                                <
  451  alias _SHQUERYRBINFO SHQUERYRBINFO;                                              <
  452  alias _SHQUERYRBINFO* LPSHQUERYRBINFO;                                           <
  453                                                                                   <
  454  enum : uint { SHERB_NOCONFIRMATION = 0x00000001 }                                <
  455  enum : uint { SHERB_NOPROGRESSUI = 0x00000002 }                                  <
  456  enum : uint { SHERB_NOSOUND = 0x00000004 }                                       <
  457                                                                                   <
  458  extern(Windows) export HRESULT SHQueryRecycleBinA(LPCSTR pszRootPath, LPSHQUERYR <
  459  extern(Windows) export HRESULT SHQueryRecycleBinW(LPCWSTR pszRootPath, LPSHQUERY <
  460  // #ifdef UNICODE                                                                <
  461  alias SHQueryRecycleBinW SHQueryRecycleBin;                                      <
  462  // #else                                                                         <
  463  // #...                                                                          <
  464  // #endif // !UNICODE                                                            <
  465  extern(Windows) export HRESULT SHEmptyRecycleBinA(HWND hwnd, LPCSTR pszRootPath, <
  466  extern(Windows) export HRESULT SHEmptyRecycleBinW(HWND hwnd, LPCWSTR pszRootPath <
  467  // #ifdef UNICODE                                                                <
  468  alias SHEmptyRecycleBinW SHEmptyRecycleBin;                                      <
  469  // #else                                                                         <
  470  // #...                                                                          <
  471  // #endif // !UNICODE                                                            <
  472                                                                                   <
  473  struct _NOTIFYICONDATAA {                                                        <
  474    DWORD cbSize;                                                                  <
  475    HWND hWnd;                                                                     <
  476    UINT uID;                                                                      <
  477    UINT uFlags;                                                                   <
  478    UINT uCallbackMessage;                                                         <
  479    HICON hIcon;                                                                   <
  480  // #if (_WIN32_IE < 0x0500)                                                      <
  481  // ...                                                                           <
  482  // #else                                                                         <
  483    CHAR szTip[128];                                                               <
  484  // #endif                                                                        <
  485  // #if (_WIN32_IE >= 0x0500)                                                     <
  486    DWORD dwState;                                                                 <
  487    DWORD dwStateMask;                                                             <
  488    CHAR szInfo[256];                                                              <
  489  union {                                                                          <
  490    UINT uTimeout;                                                                 <
  491    UINT uVersion;                                                                 <
  492  }                                                                                <
  493                                                                                   <
  494    CHAR szInfoTitle[64];                                                          <
  495    DWORD dwInfoFlags;                                                             <
  496  // #endif                                                                        <
  497  // #if (_WIN32_IE >= 0x600)                                                      <
  498    GUID guidItem;                                                                 <
  499  // #endif                                                                        <
  500  }                                                                                <
  501  alias _NOTIFYICONDATAA NOTIFYICONDATAA;                                          <
  502  alias _NOTIFYICONDATAA* PNOTIFYICONDATAA;                                        <
  503                                                                                   <
  504  struct _NOTIFYICONDATAW {                                                        <
  505    DWORD cbSize;                                                                  <
  506    HWND hWnd;                                                                     <
  507    UINT uID;                                                                      <
  508    UINT uFlags;                                                                   <
  509    UINT uCallbackMessage;                                                         <
  510    HICON hIcon;                                                                   <
  511  // #if (_WIN32_IE < 0x0500)                                                      <
  512  // ...                                                                           <
  513  // #else                                                                         <
  514    WCHAR szTip[128];                                                              <
  515  // #endif                                                                        <
  516  // #if (_WIN32_IE >= 0x0500)                                                     <
  517    DWORD dwState;                                                                 <
  518    DWORD dwStateMask;                                                             <
  519    WCHAR szInfo[256];                                                             <
  520  union {                                                                          <
  521    UINT uTimeout;                                                                 <
  522    UINT uVersion;                                                                 <
  523  }                                                                                <
  524                                                                                   <
  525    WCHAR szInfoTitle[64];                                                         <
  526    DWORD dwInfoFlags;                                                             <
  527  // #endif                                                                        <
  528  // #if (_WIN32_IE >= 0x600)                                                      <
  529    GUID guidItem;                                                                 <
  530  // #endif                                                                        <
  531  }                                                                                <
  532  alias _NOTIFYICONDATAW NOTIFYICONDATAW;                                          <
  533  alias _NOTIFYICONDATAW* PNOTIFYICONDATAW;                                        <
  534                                                                                   <
  535  // #ifdef UNICODE                                                                <
  536  alias NOTIFYICONDATAW NOTIFYICONDATA;                                            <
  537  alias PNOTIFYICONDATAW PNOTIFYICONDATA;                                          <
  538  // #else                                                                         <
  539  // ...                                                                           <
  540  // #endif // UNICODE                                                             <
  541                                                                                   <
  542  // #define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAA, szTip[64])      <
  543  // #define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAW, szTip[64])      <
  544  // #ifdef UNICODE                                                                <
  545  // #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAW_V1_SIZE                        <
  546  // #else                                                                         <
  547  // #...                                                                          <
  548  // #endif                                                                        <
  549                                                                                   <
  550  // #define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAA, guidItem)       <
  551  // #define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAW, guidItem)       <
  552  // #ifdef UNICODE                                                                <
  553  // #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAW_V2_SIZE                        <
  554  // #else                                                                         <
  555  // #...                                                                          <
  556  // #endif                                                                        <
  557                                                                                   <
  558  // #if (_WIN32_IE >= 0x0500)                                                     <
  559  const uint NIN_SELECT = WM_USER + 0;                                             <
  560  enum : uint { NINF_KEY = 0x1 }                                                   <
  561  const uint NIN_KEYSELECT = NIN_SELECT | NINF_KEY;                                <
  562  // #endif                                                                        <
  563                                                                                   <
  564  // #if (_WIN32_IE >= 0x0501)                                                     <
  565  const uint NIN_BALLOONSHOW = WM_USER + 2;                                        <
  566  const uint NIN_BALLOONHIDE = WM_USER + 3;                                        <
  567  const uint NIN_BALLOONTIMEOUT = WM_USER + 4;                                     <
  568  const uint NIN_BALLOONUSERCLICK = WM_USER + 5;                                   <
  569  // #endif                                                                        <
  570                                                                                   <
  571  enum : uint { NIM_ADD = 0x00000000 }                                             <
  572  enum : uint { NIM_MODIFY = 0x00000001 }                                          <
  573  enum : uint { NIM_DELETE = 0x00000002 }                                          <
  574  // #if (_WIN32_IE >= 0x0500)                                                     <
  575  enum : uint { NIM_SETFOCUS = 0x00000003 }                                        <
  576  enum : uint { NIM_SETVERSION = 0x00000004 }                                      <
  577  enum : uint { NOTIFYICON_VERSION = 3 }                                           <
  578  // #endif                                                                        <
  579                                                                                   <
  580  enum : uint { NIF_MESSAGE = 0x00000001 }                                         <
  581  enum : uint { NIF_ICON = 0x00000002 }                                            <
  582  enum : uint { NIF_TIP = 0x00000004 }                                             <
  583  // #if (_WIN32_IE >= 0x0500)                                                     <
  584  enum : uint { NIF_STATE = 0x00000008 }                                           <
  585  enum : uint { NIF_INFO = 0x00000010 }                                            <
  586  // #endif                                                                        <
  587  // #if (_WIN32_IE >= 0x600)                                                      <
  588  enum : uint { NIF_GUID = 0x00000020 }                                            <
  589  // #endif                                                                        <
  590                                                                                   <
  591  // #if (_WIN32_IE >= 0x0500)                                                     <
  592  enum : uint { NIS_HIDDEN = 0x00000001 }                                          <
  593  enum : uint { NIS_SHAREDICON = 0x00000002 }                                      <
  594                                                                                   <
  595  enum : uint { NIIF_NONE = 0x00000000 }                                           <
  596                                                                                   <
  597  enum : uint { NIIF_INFO = 0x00000001 }                                           <
  598  enum : uint { NIIF_WARNING = 0x00000002 }                                        <
  599  enum : uint { NIIF_ERROR = 0x00000003 }                                          <
  600  enum : uint { NIIF_ICON_MASK = 0x0000000F }                                      <
  601  // #if (_WIN32_IE >= 0x0501)                                                     <
  602  enum : uint { NIIF_NOSOUND = 0x00000010 }                                        <
  603  // #endif                                                                        <
  604  // #endif                                                                        <
  605                                                                                   <
  606  extern(Windows) export BOOL Shell_NotifyIconA(DWORD dwMessage, PNOTIFYICONDATAA  <
  607  extern(Windows) export BOOL Shell_NotifyIconW(DWORD dwMessage, PNOTIFYICONDATAW  <
  608  // #ifdef UNICODE                                                                <
  609  alias Shell_NotifyIconW Shell_NotifyIcon;                                        <
  610  // #else                                                                         <
  611  // #...                                                                          <
  612  // #endif // !UNICODE                                                            <
  613                                                                                   <
  614  // #ifndef SHFILEINFO_DEFINED                                                    <
  615  // #define SHFILEINFO_DEFINED                                                    <
  616                                                                                   <
  617  struct _SHFILEINFOA {                                                            <
  618    HICON hIcon;                                                                   <
  619    int iIcon;                                                                     <
  620    DWORD dwAttributes;                                                            <
  621    CHAR szDisplayName[MAX_PATH];                                                  <
  622    CHAR szTypeName[80];                                                           <
  623  }                                                                                <
  624  alias _SHFILEINFOA SHFILEINFOA;                                                  <
  625                                                                                   <
  626  struct _SHFILEINFOW {                                                            <
  627    HICON hIcon;                                                                   <
  628    int iIcon;                                                                     <
  629    DWORD dwAttributes;                                                            <
  630    WCHAR szDisplayName[MAX_PATH];                                                 <
  631    WCHAR szTypeName[80];                                                          <
  632  }                                                                                <
  633  alias _SHFILEINFOW SHFILEINFOW;                                                  <
  634                                                                                   <
  635  // #ifdef UNICODE                                                                <
  636  alias SHFILEINFOW SHFILEINFO;                                                    |   412  alias SHFILEOPSTRUCT* LPSHFILEOPSTRUCT;
  637  // #else                                                                         <
  638  // ...                                                                           <
  639  // #endif // UNICODE                                                             <
  640                                                                                   <
  641  // #endif // !SHFILEINFO_DEFINED                                                 <
  642                                                                                   <
  643  enum : uint { SHGFI_ICON = 0x000000100 }                                         <
  644  enum : uint { SHGFI_DISPLAYNAME = 0x000000200 }                                  <
  645  enum : uint { SHGFI_TYPENAME = 0x000000400 }                                     <
  646  enum : uint { SHGFI_ATTRIBUTES = 0x000000800 }                                   <
  647  enum : uint { SHGFI_ICONLOCATION = 0x000001000 }                                 <
  648  enum : uint { SHGFI_EXETYPE = 0x000002000 }                                      <
  649  enum : uint { SHGFI_SYSICONINDEX = 0x000004000 }                                 <
  650  enum : uint { SHGFI_LINKOVERLAY = 0x000008000 }                                  <
  651  enum : uint { SHGFI_SELECTED = 0x000010000 }                                     <
  652  enum : uint { SHGFI_ATTR_SPECIFIED = 0x000020000 }                               <
  653  enum : uint { SHGFI_LARGEICON = 0x000000000 }                                    <
  654  enum : uint { SHGFI_SMALLICON = 0x000000001 }                                    <
  655  enum : uint { SHGFI_OPENICON = 0x000000002 }                                     <
  656  enum : uint { SHGFI_SHELLICONSIZE = 0x000000004 }                                <
  657  enum : uint { SHGFI_PIDL = 0x000000008 }                                         <
  658  enum : uint { SHGFI_USEFILEATTRIBUTES = 0x000000010 }                            <
  659                                                                                   <
  660  // #if (_WIN32_IE >= 0x0500)                                                     <
  661  enum : uint { SHGFI_ADDOVERLAYS = 0x000000020 }                                  <
  662  enum : uint { SHGFI_OVERLAYINDEX = 0x000000040 }                                 <
  663                                                                                   <
  664  // #endif                                                                        <
  665                                                                                   <
  666  extern(Windows) export DWORD_PTR SHGetFileInfoA(LPCSTR pszPath, DWORD dwFileAttr <
  667  extern(Windows) export DWORD_PTR SHGetFileInfoW(LPCWSTR pszPath, DWORD dwFileAtt <
  668  // #ifdef UNICODE                                                                <
  669  alias SHGetFileInfoW SHGetFileInfo;                                              <
  670  // #else                                                                         <
  671  // #...                                                                          <
  672  // #endif // !UNICODE                                                            <
  673                                                                                   <
  674  alias SHGetDiskFreeSpaceEx SHGetDiskFreeSpace;                                   <
  675                                                                                   <
  676  extern(Windows) export BOOL SHGetDiskFreeSpaceExA(LPCSTR pszDirectoryName, ULARG <
  677  extern(Windows) export BOOL SHGetDiskFreeSpaceExW(LPCWSTR pszDirectoryName, ULAR <
  678  // #ifdef UNICODE                                                                <
  679  alias SHGetDiskFreeSpaceExW SHGetDiskFreeSpaceEx;                                <
  680  // #else                                                                         <
  681  // #...                                                                          <
  682  // #endif // !UNICODE                                                            <
  683  extern(Windows) export BOOL SHGetNewLinkInfoA(LPCSTR pszLinkTo, LPCSTR pszDir, L <
  684  extern(Windows) export BOOL SHGetNewLinkInfoW(LPCWSTR pszLinkTo, LPCWSTR pszDir, <
  685  // #ifdef UNICODE                                                                <
  686  alias SHGetNewLinkInfoW SHGetNewLinkInfo;                                        <
  687  // #else                                                                         <
  688  // #...                                                                          <
  689  // #endif // !UNICODE                                                            <
  690                                                                                   <
  691  enum : uint { SHGNLI_PIDL = 0x000000001 }                                        <
  692  enum : uint { SHGNLI_PREFIXNAME = 0x000000002 }                                  <
  693  enum : uint { SHGNLI_NOUNIQUE = 0x000000004 }                                    <
  694  // #if (_WIN32_IE >= 0x0501)                                                     <
  695  enum : uint { SHGNLI_NOLNK = 0x000000008 }                                       <
  696  // #endif // _WIN2_IE >= 0x0501                                                  <
  697                                                                                   <
  698  enum : uint { PRINTACTION_OPEN = 0 }                                             <
  699  enum : uint { PRINTACTION_PROPERTIES = 1 }                                       <
  700  enum : uint { PRINTACTION_NETINSTALL = 2 }                                       <
  701  enum : uint { PRINTACTION_NETINSTALLLINK = 3 }                                   <
  702  enum : uint { PRINTACTION_TESTPAGE = 4 }                                         <
  703  enum : uint { PRINTACTION_OPENNETPRN = 5 }                                       <
  704  // #ifdef WINNT                                                                  <
  705  // #...                                                                          <
  706  // #...                                                                          <
  707  // #endif                                                                        <
  708                                                                                   <
  709  extern(Windows) export BOOL SHInvokePrinterCommandA(HWND hwnd, UINT uAction, LPC <
  710  extern(Windows) export BOOL SHInvokePrinterCommandW(HWND hwnd, UINT uAction, LPC <
  711  // #ifdef UNICODE                                                                <
  712  alias SHInvokePrinterCommandW SHInvokePrinterCommand;                            <
  713  // #else                                                                         <
  714  // #...                                                                          <
  715  // #endif // !UNICODE                                                            <
  716                                                                                   <
  717  // #endif /* WINVER >= 0x0400 */                                                 <
  718                                                                                   <
  719  // #if (_WIN32_WINNT >= 0x0500) || (_WIN32_WINDOWS >= 0x0500)                    <
  720                                                                                   <
  721  extern(Windows) export HRESULT SHLoadNonloadedIconOverlayIdentifiers();          <
  722                                                                                   <
  723  extern(Windows) export HRESULT SHIsFileAvailableOffline(LPCWSTR pwszPath, LPDWOR <
  724                                                                                   <
  725  enum : uint { OFFLINE_STATUS_LOCAL = 0x0001 }                                    <
  726  enum : uint { OFFLINE_STATUS_REMOTE = 0x0002 }                                   <
  727  enum : uint { OFFLINE_STATUS_INCOMPLETE = 0x0004 }                               <
  728                                                                                   <
  729  // #endif                                                                        <
  730                                                                                   <
  731  extern(Windows) export HRESULT SHSetLocalizedName(LPWSTR pszPath, LPCWSTR pszRes <
  732                                                                                   <
  733  // #if         _WIN32_IE >= 0x0600                                               <
  734                                                                                   <
  735  extern(Windows) export HRESULT SHEnumerateUnreadMailAccountsA(HKEY hKeyUser, DWO <
  736  extern(Windows) export HRESULT SHEnumerateUnreadMailAccountsW(HKEY hKeyUser, DWO <
  737  // #ifdef UNICODE                                                                <
  738  alias SHEnumerateUnreadMailAccountsW SHEnumerateUnreadMailAccounts;              <
  739  // #else                                                                         <
  740  // #...                                                                          <
  741  // #endif // !UNICODE                                                            <
  742  extern(Windows) export HRESULT SHGetUnreadMailCountA(HKEY hKeyUser, LPCSTR pszMa <
  743  extern(Windows) export HRESULT SHGetUnreadMailCountW(HKEY hKeyUser, LPCWSTR pszM <
  744  // #ifdef UNICODE                                                                <
  745  alias SHGetUnreadMailCountW SHGetUnreadMailCount;                                <
  746  // #else                                                                         <
  747  // #...                                                                          <
  748  // #endif // !UNICODE                                                            <
  749  extern(Windows) export HRESULT SHSetUnreadMailCountA(LPCSTR pszMailAddress, DWOR <
  750  extern(Windows) export HRESULT SHSetUnreadMailCountW(LPCWSTR pszMailAddress, DWO <
  751  // #ifdef UNICODE                                                                <
  752  alias SHSetUnreadMailCountW SHSetUnreadMailCount;                                <
  753  // #else                                                                         <
  754  // #...                                                                          <
  755  // #endif // !UNICODE                                                            <
  756                                                                                   <
  757  // #endif  /*  _WIN32_IE >= 0x0600     */                                        <
  758                                                                                   <
  759  // #if         _WIN32_IE >= 0x0600                                               <
  760                                                                                   <
  761  extern(Windows) export HRESULT SHGetImageList(int iImageList, REFIID riid, void  <
  762                                                                                   <
  763  enum : uint { SHIL_LARGE = 0 }                                                   <
  764  enum : uint { SHIL_SMALL = 1 }                                                   <
  765  enum : uint { SHIL_EXTRALARGE = 2 }                                              <
  766  enum : uint { SHIL_SYSSMALL = 3 }                                                <
  767                                                                                   <
  768  alias SHIL_SYSSMALL SHIL_LAST;                                                   <
  769                                                                                   <
  770  extern(Windows) alias HRESULT function( LPCWSTR pszPath) PFNCANSHAREFOLDERW;     <
  771  extern(Windows) alias HRESULT function( HWND hwndParent,  LPCWSTR pszPath) PFNSH <
  772                                                                                   <
  773  // #endif  /*  _WIN32_IE >= 0x0600     */                                        <
  774                                                                                   <
  775  // #ifdef __cplusplus                                                            <
  776  // }                                                                             <
  777  // #endif  /* __cplusplus */                                                     <
  778                                                                                   <
  779  // #if !defined(_WIN64)                                                          <
  780  align:                                                                           <
  781  // #endif                                                                        <
  782                                                                                   <
  783  // #endif  /* _INC_SHELLAPI */                                                   <
  784                                                                                   <