1 /***********************************************************************\ 2 * shlwapi.d * 3 * * 4 * Windows API header module * 5 * * 6 * Translated from MinGW Windows headers * 7 * * 8 * Placed into public domain * 9 \***********************************************************************/ 10 module windows.shlwapi; 11 pragma(lib, "shlwapi"); 12 nothrow: 13 /* Changes compared to MinGW: 14 wnsprintf functions are not included. 15 // Macros unneeded for D 16 #define StrCmpIA lstrcmpiA; 17 #define StrCmpA lstrcmpA; 18 #define StrCpyA lstrcpyA; 19 #define StrCpyNA lstrcpynA; 20 #define MAKEDLLVERULL(major, minor, build, qfe) \ 21 (((ULONGLONG)(major) << 48) | \ 22 ((ULONGLONG)(minor) << 32) | \ 23 ((ULONGLONG)(build) << 16) | \ 24 ((ULONGLONG)( qfe) << 0)) 25 */ 26 27 import windows.objbase, windows.shlobj; 28 private import windows.basetyps, windows.objidl, windows.unknwn, windows.windef, 29 windows.winbase, windows.winreg; 30 31 const DLLVER_PLATFORM_WINDOWS = 0x00000001; 32 const DLLVER_PLATFORM_NT = 0x00000002; 33 34 const URL_DONT_ESCAPE_EXTRA_INFO = 0x02000000; 35 const URL_DONT_SIMPLIFY = 0x08000000; 36 const URL_ESCAPE_PERCENT = 0x00001000; 37 const URL_ESCAPE_SEGMENT_ONLY = 0x00002000; 38 const URL_ESCAPE_SPACES_ONLY = 0x04000000; 39 const URL_ESCAPE_UNSAFE = 0x20000000; 40 const URL_INTERNAL_PATH = 0x00800000; 41 const URL_PARTFLAG_KEEPSCHEME = 0x00000001; 42 const URL_PLUGGABLE_PROTOCOL = 0x40000000; 43 const URL_UNESCAPE = 0x10000000; 44 const URL_UNESCAPE_HIGH_ANSI_ONLY = 0x00400000; 45 const URL_UNESCAPE_INPLACE = 0x00100000; 46 47 align(1): 48 struct DLLVERSIONINFO 49 { 50 DWORD cbSize = this.sizeof; 51 DWORD dwMajorVersion; 52 DWORD dwMinorVersion; 53 DWORD dwBuildNumber; 54 DWORD dwPlatformID; 55 } 56 57 struct DLLVERSIONINFO2 58 { 59 DLLVERSIONINFO info1; 60 DWORD dwFlags; 61 ULONGLONG ullVersion; 62 } 63 64 enum ASSOCSTR { 65 ASSOCSTR_COMMAND, 66 ASSOCSTR_EXECUTABLE, 67 ASSOCSTR_FRIENDLYDOCNAME, 68 ASSOCSTR_FRIENDLYAPPNAME, 69 ASSOCSTR_NOOPEN, 70 ASSOCSTR_SHELLNEWVALUE, 71 ASSOCSTR_DDECOMMAND, 72 ASSOCSTR_DDEIFEXEC, 73 ASSOCSTR_DDEAPPLICATION, 74 ASSOCSTR_DDETOPIC 75 } 76 77 enum ASSOCKEY 78 { 79 ASSOCKEY_SHELLEXECCLASS = 1, 80 ASSOCKEY_APP, 81 ASSOCKEY_CLASS, 82 ASSOCKEY_BASECLASS 83 } 84 85 enum ASSOCDATA 86 { 87 ASSOCDATA_MSIDESCRIPTOR = 1, 88 ASSOCDATA_NOACTIVATEHANDLER, 89 ASSOCDATA_QUERYCLASSSTORE 90 } 91 92 alias DWORD ASSOCF; 93 94 enum SHREGDEL_FLAGS 95 { 96 SHREGDEL_DEFAULT = 0x00000000, 97 SHREGDEL_HKCU = 0x00000001, 98 SHREGDEL_HKLM = 0x00000010, 99 SHREGDEL_BOTH = 0x00000011 100 } 101 102 enum SHREGENUM_FLAGS 103 { 104 SHREGENUM_DEFAULT = 0x00000000, 105 SHREGENUM_HKCU = 0x00000001, 106 SHREGENUM_HKLM = 0x00000010, 107 SHREGENUM_BOTH = 0x00000011 108 } 109 110 enum URLIS 111 { 112 URLIS_URL, 113 URLIS_OPAQUE, 114 URLIS_NOHISTORY, 115 URLIS_FILEURL, 116 URLIS_APPLIABLE, 117 URLIS_DIRECTORY, 118 URLIS_HASQUERY 119 } 120 121 mixin DECLARE_HANDLE!("HUSKEY"); 122 alias HUSKEY* PHUSKEY; 123 124 extern (Windows) 125 { 126 alias HRESULT function (DLLVERSIONINFO *) DLLGETVERSIONPROC; 127 } 128 129 130 BOOL IntlStrEqNA(LPCSTR pStr1, LPCSTR pStr2, int nChar) 131 { 132 return IntlStrEqWorkerA(TRUE, pStr1, pStr2, nChar); 133 } 134 135 BOOL IntlStrEqNW(LPCWSTR pStr1, LPCWSTR pStr2, int nChar) 136 { 137 return IntlStrEqWorkerW(TRUE, pStr1, pStr2, nChar); 138 } 139 140 BOOL IntlStrEqNIA(LPCSTR pStr1, LPCSTR pStr2, int nChar) 141 { 142 return IntlStrEqWorkerA(FALSE, pStr1, pStr2, nChar); 143 } 144 145 BOOL IntlStrEqNIW(LPCWSTR pStr1, LPCWSTR pStr2, int nChar) 146 { 147 return IntlStrEqWorkerW(FALSE, pStr1, pStr2, nChar); 148 } 149 150 BOOL UrlIsFileUrlA(LPCSTR pszURL) 151 { 152 return UrlIsA(pszURL, URLIS.URLIS_FILEURL); 153 } 154 155 BOOL UrlIsFileUrlW(LPCWSTR pszURL) 156 { 157 return UrlIsW(pszURL, URLIS.URLIS_FILEURL); 158 } 159 160 HRESULT UrlUnescapeInPlaceA(LPSTR pszUrl, DWORD dwFlags) 161 { 162 return UrlUnescapeA(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE); 163 } 164 HRESULT UrlUnescapeInPlaceW(LPWSTR pszUrl, DWORD dwFlags) 165 { 166 return UrlUnescapeW(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE); 167 } 168 169 extern (Windows): 170 BOOL ChrCmpIA(WORD, WORD); 171 BOOL ChrCmpIW(WCHAR, WCHAR); 172 BOOL IntlStrEqWorkerA(BOOL, LPCSTR, LPCSTR, int); 173 BOOL IntlStrEqWorkerW(BOOL, LPCWSTR, LPCWSTR, int); 174 HRESULT SHStrDupA(LPCSTR, LPWSTR*); 175 HRESULT SHStrDupW(LPCWSTR, LPWSTR*); 176 LPSTR StrCatA(LPSTR, LPCSTR); 177 LPWSTR StrCatW(LPWSTR, LPCWSTR); 178 LPSTR StrCatBuffA(LPSTR, LPCSTR, int); 179 LPWSTR StrCatBuffW(LPWSTR, LPCWSTR, int); 180 DWORD StrCatChainW(LPWSTR, DWORD, DWORD, LPCWSTR); 181 LPSTR StrChrA(LPCSTR, WORD); 182 LPWSTR StrChrW(LPCWSTR, WCHAR); 183 LPSTR StrChrIA(LPCSTR, WORD); 184 LPWSTR StrChrIW(LPCWSTR, WCHAR); 185 int StrCmpIW(LPCWSTR, LPCWSTR); 186 int StrCmpW(LPCWSTR, LPCWSTR); 187 LPWSTR StrCpyW(LPWSTR, LPCWSTR); 188 LPWSTR StrCpyNW(LPWSTR, LPCWSTR, int); 189 int StrCmpNA(LPCSTR, LPCSTR, int); 190 int StrCmpNW(LPCWSTR, LPCWSTR, int); 191 int StrCmpNIA(LPCSTR, LPCSTR, int); 192 int StrCmpNIW(LPCWSTR, LPCWSTR, int); 193 int StrCSpnA(LPCSTR, LPCSTR); 194 int StrCSpnW(LPCWSTR, LPCWSTR); 195 int StrCSpnIA(LPCSTR, LPCSTR); 196 int StrCSpnIW(LPCWSTR, LPCWSTR); 197 LPSTR StrDupA(LPCSTR); 198 LPWSTR StrDupW(LPCWSTR); 199 LPSTR StrFormatByteSize64A(LONGLONG, LPSTR, UINT); 200 LPSTR StrFormatByteSizeA(DWORD, LPSTR, UINT); 201 LPWSTR StrFormatByteSizeW(LONGLONG, LPWSTR, UINT); 202 LPSTR StrFormatKBSizeA(LONGLONG, LPSTR, UINT); 203 LPWSTR StrFormatKBSizeW(LONGLONG, LPWSTR, UINT); 204 int StrFromTimeIntervalA(LPSTR, UINT, DWORD, int); 205 int StrFromTimeIntervalW(LPWSTR, UINT, DWORD, int); 206 BOOL StrIsIntlEqualA(BOOL, LPCSTR, LPCSTR, int); 207 BOOL StrIsIntlEqualW(BOOL, LPCWSTR, LPCWSTR, int); 208 LPSTR StrNCatA(LPSTR, LPCSTR, int); 209 LPWSTR StrNCatW(LPWSTR, LPCWSTR, int); 210 LPSTR StrPBrkA(LPCSTR, LPCSTR); 211 LPWSTR StrPBrkW(LPCWSTR, LPCWSTR); 212 LPSTR StrRChrA(LPCSTR, LPCSTR, WORD); 213 LPWSTR StrRChrW(LPCWSTR, LPCWSTR, WCHAR); 214 LPSTR StrRChrIA(LPCSTR, LPCSTR, WORD); 215 LPWSTR StrRChrIW(LPCWSTR, LPCWSTR, WCHAR); 216 LPSTR StrRStrIA(LPCSTR, LPCSTR, LPCSTR); 217 LPWSTR StrRStrIW(LPCWSTR, LPCWSTR, LPCWSTR); 218 int StrSpnA(LPCSTR, LPCSTR); 219 int StrSpnW(LPCWSTR, LPCWSTR); 220 LPSTR StrStrA(LPCSTR, LPCSTR); 221 LPSTR StrStrIA(LPCSTR, LPCSTR); 222 LPWSTR StrStrIW(LPCWSTR, LPCWSTR); 223 LPWSTR StrStrW(LPCWSTR, LPCWSTR); 224 int StrToIntA(LPCSTR); 225 int StrToIntW(LPCWSTR); 226 BOOL StrToIntExA(LPCSTR, DWORD, int*); 227 BOOL StrToIntExW(LPCWSTR, DWORD, int*); 228 BOOL StrTrimA(LPSTR, LPCSTR); 229 BOOL StrTrimW(LPWSTR, LPCWSTR); 230 LPSTR PathAddBackslashA(LPSTR); 231 LPWSTR PathAddBackslashW(LPWSTR); 232 BOOL PathAddExtensionA(LPSTR, LPCSTR); 233 BOOL PathAddExtensionW(LPWSTR, LPCWSTR); 234 BOOL PathAppendA(LPSTR, LPCSTR); 235 BOOL PathAppendW(LPWSTR, LPCWSTR); 236 LPSTR PathBuildRootA(LPSTR, int); 237 LPWSTR PathBuildRootW(LPWSTR, int); 238 BOOL PathCanonicalizeA(LPSTR, LPCSTR); 239 BOOL PathCanonicalizeW(LPWSTR, LPCWSTR); 240 LPSTR PathCombineA(LPSTR, LPCSTR, LPCSTR); 241 LPWSTR PathCombineW(LPWSTR, LPCWSTR, LPCWSTR); 242 int PathCommonPrefixA(LPCSTR, LPCSTR, LPSTR); 243 int PathCommonPrefixW(LPCWSTR, LPCWSTR, LPWSTR); 244 BOOL PathCompactPathA(HDC, LPSTR, UINT); 245 BOOL PathCompactPathW(HDC, LPWSTR, UINT); 246 BOOL PathCompactPathExA(LPSTR, LPCSTR, UINT, DWORD); 247 BOOL PathCompactPathExW(LPWSTR, LPCWSTR, UINT, DWORD); 248 HRESULT PathCreateFromUrlA(LPCSTR, LPSTR, LPDWORD, DWORD); 249 HRESULT PathCreateFromUrlW(LPCWSTR, LPWSTR, LPDWORD, DWORD); 250 BOOL PathFileExistsA(LPCSTR); 251 BOOL PathFileExistsW(LPCWSTR); 252 LPSTR PathFindExtensionA(LPCSTR); 253 LPWSTR PathFindExtensionW(LPCWSTR); 254 LPSTR PathFindFileNameA(LPCSTR); 255 LPWSTR PathFindFileNameW(LPCWSTR); 256 LPSTR PathFindNextComponentA(LPCSTR); 257 LPWSTR PathFindNextComponentW(LPCWSTR); 258 BOOL PathFindOnPathA(LPSTR, LPCSTR*); 259 BOOL PathFindOnPathW(LPWSTR, LPCWSTR*); 260 LPCSTR PathFindSuffixArrayA(LPCSTR, LPCSTR*, int); 261 LPCWSTR PathFindSuffixArrayW(LPCWSTR, LPCWSTR*, int); 262 LPSTR PathGetArgsA(LPCSTR); 263 LPWSTR PathGetArgsW(LPCWSTR); 264 UINT PathGetCharTypeA(UCHAR); 265 UINT PathGetCharTypeW(WCHAR); 266 int PathGetDriveNumberA(LPCSTR); 267 int PathGetDriveNumberW(LPCWSTR); 268 BOOL PathIsContentTypeA(LPCSTR, LPCSTR); 269 BOOL PathIsContentTypeW(LPCWSTR, LPCWSTR); 270 BOOL PathIsDirectoryA(LPCSTR); 271 BOOL PathIsDirectoryEmptyA(LPCSTR); 272 BOOL PathIsDirectoryEmptyW(LPCWSTR); 273 BOOL PathIsDirectoryW(LPCWSTR); 274 BOOL PathIsFileSpecA(LPCSTR); 275 BOOL PathIsFileSpecW(LPCWSTR); 276 BOOL PathIsLFNFileSpecA(LPCSTR); 277 BOOL PathIsLFNFileSpecW(LPCWSTR); 278 BOOL PathIsNetworkPathA(LPCSTR); 279 BOOL PathIsNetworkPathW(LPCWSTR); 280 BOOL PathIsPrefixA(LPCSTR, LPCSTR); 281 BOOL PathIsPrefixW(LPCWSTR, LPCWSTR); 282 BOOL PathIsRelativeA(LPCSTR); 283 BOOL PathIsRelativeW(LPCWSTR); 284 BOOL PathIsRootA(LPCSTR); 285 BOOL PathIsRootW(LPCWSTR); 286 BOOL PathIsSameRootA(LPCSTR, LPCSTR); 287 BOOL PathIsSameRootW(LPCWSTR, LPCWSTR); 288 BOOL PathIsSystemFolderA(LPCSTR, DWORD); 289 BOOL PathIsSystemFolderW(LPCWSTR, DWORD); 290 BOOL PathIsUNCA(LPCSTR); 291 BOOL PathIsUNCServerA(LPCSTR); 292 BOOL PathIsUNCServerShareA(LPCSTR); 293 BOOL PathIsUNCServerShareW(LPCWSTR); 294 BOOL PathIsUNCServerW(LPCWSTR); 295 BOOL PathIsUNCW(LPCWSTR); 296 BOOL PathIsURLA(LPCSTR); 297 BOOL PathIsURLW(LPCWSTR); 298 BOOL PathMakePrettyA(LPSTR); 299 BOOL PathMakePrettyW(LPWSTR); 300 BOOL PathMakeSystemFolderA(LPSTR); 301 BOOL PathMakeSystemFolderW(LPWSTR); 302 BOOL PathMatchSpecA(LPCSTR, LPCSTR); 303 BOOL PathMatchSpecW(LPCWSTR, LPCWSTR); 304 int PathParseIconLocationA(LPSTR); 305 int PathParseIconLocationW(LPWSTR); 306 void PathQuoteSpacesA(LPSTR); 307 void PathQuoteSpacesW(LPWSTR); 308 BOOL PathRelativePathToA(LPSTR, LPCSTR, DWORD, LPCSTR, DWORD); 309 BOOL PathRelativePathToW(LPWSTR, LPCWSTR, DWORD, LPCWSTR, DWORD); 310 void PathRemoveArgsA(LPSTR); 311 void PathRemoveArgsW(LPWSTR); 312 LPSTR PathRemoveBackslashA(LPSTR); 313 LPWSTR PathRemoveBackslashW(LPWSTR); 314 void PathRemoveBlanksA(LPSTR); 315 void PathRemoveBlanksW(LPWSTR); 316 void PathRemoveExtensionA(LPSTR); 317 void PathRemoveExtensionW(LPWSTR); 318 BOOL PathRemoveFileSpecA(LPSTR); 319 BOOL PathRemoveFileSpecW(LPWSTR); 320 BOOL PathRenameExtensionA(LPSTR, LPCSTR); 321 BOOL PathRenameExtensionW(LPWSTR, LPCWSTR); 322 BOOL PathSearchAndQualifyA(LPCSTR, LPSTR, UINT); 323 BOOL PathSearchAndQualifyW(LPCWSTR, LPWSTR, UINT); 324 void PathSetDlgItemPathA(HWND, int, LPCSTR); 325 void PathSetDlgItemPathW(HWND, int, LPCWSTR); 326 LPSTR PathSkipRootA(LPCSTR); 327 LPWSTR PathSkipRootW(LPCWSTR); 328 void PathStripPathA(LPSTR); 329 void PathStripPathW(LPWSTR); 330 BOOL PathStripToRootA(LPSTR); 331 BOOL PathStripToRootW(LPWSTR); 332 void PathUndecorateA(LPSTR); 333 void PathUndecorateW(LPWSTR); 334 BOOL PathUnExpandEnvStringsA(LPCSTR, LPSTR, UINT); 335 BOOL PathUnExpandEnvStringsW(LPCWSTR, LPWSTR, UINT); 336 BOOL PathUnmakeSystemFolderA(LPSTR); 337 BOOL PathUnmakeSystemFolderW(LPWSTR); 338 void PathUnquoteSpacesA(LPSTR); 339 void PathUnquoteSpacesW(LPWSTR); 340 HRESULT SHAutoComplete(HWND, DWORD); 341 BOOL SHCreateThread(LPTHREAD_START_ROUTINE, void*, DWORD, LPTHREAD_START_ROUTINE); 342 DWORD SHCopyKeyA(HKEY, LPCSTR, HKEY, DWORD); 343 DWORD SHCopyKeyW(HKEY, LPCWSTR, HKEY, DWORD); 344 DWORD SHDeleteEmptyKeyA(HKEY, LPCSTR); 345 DWORD SHDeleteEmptyKeyW(HKEY, LPCWSTR); 346 DWORD SHDeleteKeyA(HKEY, LPCSTR); 347 DWORD SHDeleteKeyW(HKEY, LPCWSTR); 348 DWORD SHEnumKeyExA(HKEY, DWORD, LPSTR, LPDWORD); 349 DWORD SHEnumKeyExW(HKEY, DWORD, LPWSTR, LPDWORD); 350 DWORD SHQueryInfoKeyA(HKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD); 351 DWORD SHQueryInfoKeyW(HKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD); 352 DWORD SHQueryValueExA(HKEY, LPCSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); 353 DWORD SHQueryValueExW(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); 354 HRESULT SHGetThreadRef(IUnknown*); 355 HRESULT SHSetThreadRef(IUnknown); 356 BOOL SHSkipJunction(IBindCtx, const(CLSID)*); 357 DWORD SHEnumValueA(HKEY, DWORD, LPSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); 358 DWORD SHEnumValueW(HKEY, DWORD, LPWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); 359 DWORD SHGetValueA(HKEY, LPCSTR, LPCSTR, LPDWORD, LPVOID, LPDWORD); 360 DWORD SHGetValueW(HKEY, LPCWSTR, LPCWSTR, LPDWORD, LPVOID, LPDWORD); 361 DWORD SHSetValueA(HKEY, LPCSTR, LPCSTR, DWORD, LPCVOID, DWORD); 362 DWORD SHSetValueW(HKEY, LPCWSTR, LPCWSTR, DWORD, LPCVOID, DWORD); 363 DWORD SHDeleteValueA(HKEY, LPCSTR, LPCSTR); 364 DWORD SHDeleteValueW(HKEY, LPCWSTR, LPCWSTR); 365 HRESULT AssocCreate(CLSID, const(IID)* , const(LPVOID)*); 366 HRESULT AssocQueryKeyA(ASSOCF, ASSOCKEY, LPCSTR, LPCSTR, HKEY*); 367 HRESULT AssocQueryKeyW(ASSOCF, ASSOCKEY, LPCWSTR, LPCWSTR, HKEY*); 368 HRESULT AssocQueryStringA(ASSOCF, ASSOCSTR, LPCSTR, LPCSTR, LPSTR, DWORD*); 369 HRESULT AssocQueryStringByKeyA(ASSOCF, ASSOCSTR, HKEY, LPCSTR, LPSTR, DWORD*); 370 HRESULT AssocQueryStringByKeyW(ASSOCF, ASSOCSTR, HKEY, LPCWSTR, LPWSTR, DWORD*); 371 HRESULT AssocQueryStringW(ASSOCF, ASSOCSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD*); 372 HRESULT UrlApplySchemeA(LPCSTR, LPSTR, LPDWORD, DWORD); 373 HRESULT UrlApplySchemeW(LPCWSTR, LPWSTR, LPDWORD, DWORD); 374 HRESULT UrlCanonicalizeA(LPCSTR, LPSTR, LPDWORD, DWORD); 375 HRESULT UrlCanonicalizeW(LPCWSTR, LPWSTR, LPDWORD, DWORD); 376 HRESULT UrlCombineA(LPCSTR, LPCSTR, LPSTR, LPDWORD, DWORD); 377 HRESULT UrlCombineW(LPCWSTR, LPCWSTR, LPWSTR, LPDWORD, DWORD); 378 int UrlCompareA(LPCSTR, LPCSTR, BOOL); 379 int UrlCompareW(LPCWSTR, LPCWSTR, BOOL); 380 HRESULT UrlCreateFromPathA(LPCSTR, LPSTR, LPDWORD, DWORD); 381 HRESULT UrlCreateFromPathW(LPCWSTR, LPWSTR, LPDWORD, DWORD); 382 HRESULT UrlEscapeA(LPCSTR, LPSTR, LPDWORD, DWORD); 383 HRESULT UrlEscapeW(LPCWSTR, LPWSTR, LPDWORD, DWORD); 384 LPCSTR UrlGetLocationA(LPCSTR); 385 LPCWSTR UrlGetLocationW(LPCWSTR); 386 HRESULT UrlGetPartA(LPCSTR, LPSTR, LPDWORD, DWORD, DWORD); 387 HRESULT UrlGetPartW(LPCWSTR, LPWSTR, LPDWORD, DWORD, DWORD); 388 HRESULT UrlHashA(LPCSTR, LPBYTE, DWORD); 389 HRESULT UrlHashW(LPCWSTR, LPBYTE, DWORD); 390 BOOL UrlIsA(LPCSTR, URLIS); 391 BOOL UrlIsW(LPCWSTR, URLIS); 392 BOOL UrlIsNoHistoryA(LPCSTR); 393 BOOL UrlIsNoHistoryW(LPCWSTR); 394 BOOL UrlIsOpaqueA(LPCSTR); 395 BOOL UrlIsOpaqueW(LPCWSTR); 396 HRESULT UrlUnescapeA(LPSTR, LPSTR, LPDWORD, DWORD); 397 HRESULT UrlUnescapeW(LPWSTR, LPWSTR, LPDWORD, DWORD); 398 DWORD SHRegCloseUSKey(HUSKEY); 399 LONG SHRegCreateUSKeyA(LPCSTR, REGSAM, HUSKEY, PHUSKEY, DWORD); 400 LONG SHRegCreateUSKeyW(LPCWSTR, REGSAM, HUSKEY, PHUSKEY, DWORD); 401 LONG SHRegDeleteEmptyUSKeyA(HUSKEY, LPCSTR, SHREGDEL_FLAGS); 402 LONG SHRegDeleteEmptyUSKeyW(HUSKEY, LPCWSTR, SHREGDEL_FLAGS); 403 LONG SHRegDeleteUSValueA(HUSKEY, LPCSTR, SHREGDEL_FLAGS); 404 LONG SHRegDeleteUSValueW(HUSKEY, LPCWSTR, SHREGDEL_FLAGS); 405 HKEY SHRegDuplicateHKey(HKEY); 406 DWORD SHRegEnumUSKeyA(HUSKEY, DWORD, LPSTR, LPDWORD, SHREGENUM_FLAGS); 407 DWORD SHRegEnumUSKeyW(HUSKEY, DWORD, LPWSTR, LPDWORD, SHREGENUM_FLAGS); 408 DWORD SHRegEnumUSValueA(HUSKEY, DWORD, LPSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD, SHREGENUM_FLAGS); 409 DWORD SHRegEnumUSValueW(HUSKEY, DWORD, LPWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD, SHREGENUM_FLAGS); 410 BOOL SHRegGetBoolUSValueA(LPCSTR, LPCSTR, BOOL, BOOL); 411 BOOL SHRegGetBoolUSValueW(LPCWSTR, LPCWSTR, BOOL, BOOL); 412 DWORD SHRegGetPathA(HKEY, LPCSTR, LPCSTR, LPSTR, DWORD); 413 DWORD SHRegGetPathW(HKEY, LPCWSTR, LPCWSTR, LPWSTR, DWORD); 414 LONG SHRegGetUSValueA(LPCSTR, LPCSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); 415 LONG SHRegGetUSValueW(LPCWSTR, LPCWSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); 416 LONG SHRegOpenUSKeyA(LPCSTR, REGSAM, HUSKEY, PHUSKEY, BOOL); 417 LONG SHRegOpenUSKeyW(LPCWSTR, REGSAM, HUSKEY, PHUSKEY, BOOL); 418 DWORD SHRegQueryInfoUSKeyA(HUSKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD, SHREGENUM_FLAGS); 419 DWORD SHRegQueryInfoUSKeyW(HUSKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD, SHREGENUM_FLAGS); 420 LONG SHRegQueryUSValueA(HUSKEY, LPCSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); 421 LONG SHRegQueryUSValueW(HUSKEY, LPCWSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); 422 DWORD SHRegSetPathA(HKEY, LPCSTR, LPCSTR, LPCSTR, DWORD); 423 DWORD SHRegSetPathW(HKEY, LPCWSTR, LPCWSTR, LPCWSTR, DWORD); 424 LONG SHRegSetUSValueA(LPCSTR, LPCSTR, DWORD, LPVOID, DWORD, DWORD); 425 LONG SHRegSetUSValueW(LPCWSTR, LPCWSTR, DWORD, LPVOID, DWORD, DWORD); 426 LONG SHRegWriteUSValueA(HUSKEY, LPCSTR, DWORD, LPVOID, DWORD, DWORD); 427 LONG SHRegWriteUSValueW(HUSKEY, LPCWSTR, DWORD, LPVOID, DWORD, DWORD); 428 HRESULT HashData(LPBYTE, DWORD, LPBYTE, DWORD); 429 HPALETTE SHCreateShellPalette(HDC); 430 COLORREF ColorHLSToRGB(WORD, WORD, WORD); 431 COLORREF ColorAdjustLuma(COLORREF, int, BOOL); 432 void ColorRGBToHLS(COLORREF, WORD*, WORD*, WORD*); 433 /** Should not be necessary for D? 434 extern (C): 435 int wnsprintfA(LPSTR, int, LPCSTR, ...); 436 int wnsprintfW(LPWSTR, int, LPCWSTR, ...); 437 extern (Windows): 438 int wvnsprintfA(LPSTR, int, LPCSTR, va_list); 439 int wvnsprintfW(LPWSTR, int, LPCWSTR, va_list); 440 */ 441 442 HINSTANCE MLLoadLibraryA(LPCSTR, HANDLE, DWORD, LPCSTR, BOOL); 443 HINSTANCE MLLoadLibraryW(LPCWSTR, HANDLE, DWORD, LPCWSTR, BOOL); 444 445 HRESULT DllInstall(BOOL, LPCWSTR); 446 447 HRESULT StrRetToBufA(LPSTRRET, LPCITEMIDLIST, LPSTR, UINT); 448 HRESULT StrRetToBufW(LPSTRRET, LPCITEMIDLIST, LPWSTR, UINT); 449 HRESULT StrRetToStrA(LPSTRRET, LPCITEMIDLIST, LPSTR*); 450 HRESULT StrRetToStrW(LPSTRRET, LPCITEMIDLIST, LPWSTR*); 451 HRESULT SHCreateStreamOnFileA(LPCSTR, DWORD, IStream*); 452 HRESULT SHCreateStreamOnFileW(LPCWSTR, DWORD, IStream*); 453 IStream SHOpenRegStream2A(HKEY, LPCSTR, LPCSTR, DWORD); 454 IStream SHOpenRegStream2W(HKEY, LPCWSTR, LPCWSTR, DWORD); 455 IStream SHOpenRegStreamA(HKEY, LPCSTR, LPCSTR, DWORD); 456 IStream SHOpenRegStreamW(HKEY, LPCWSTR, LPCWSTR, DWORD); 457 458 version(Unicode) { 459 alias ChrCmpIW ChrCmpI; 460 alias IntlStrEqNW IntlStrEqN; 461 alias IntlStrEqNIW IntlStrEqNI; 462 alias IntlStrEqWorkerW IntlStrEqWorker; 463 alias SHStrDupW SHStrDup; 464 alias StrCatW StrCat; 465 alias StrCatBuffW StrCatBuff; 466 alias StrChrW StrChr; 467 alias StrChrIW StrChrI; 468 alias StrCmpW StrCmp; 469 alias StrCmpIW StrCmpI; 470 alias StrCmpNIW StrCmpNI; 471 alias StrCmpNW StrCmpN; 472 alias StrCpyNW StrCpyN; 473 alias StrCpyW StrCpy; 474 alias StrCSpnIW StrCSpnI; 475 alias StrCSpnW StrCSpn; 476 alias StrDupW StrDup; 477 alias StrFormatByteSizeW StrFormatByteSize; 478 alias StrFormatKBSizeW StrFormatKBSize; 479 alias StrFromTimeIntervalW StrFromTimeInterval; 480 alias StrIsIntlEqualW StrIsIntlEqual; 481 alias StrNCatW StrNCat; 482 alias StrPBrkW StrPBrk; 483 alias StrRChrW StrRChr; 484 alias StrRChrIW StrRChrI; 485 alias StrRetToBufW StrRetToBuf; 486 alias StrRetToStrW StrRetToStr; 487 alias StrRStrIW StrRStrI; 488 alias StrSpnW StrSpn; 489 alias StrStrIW StrStrI; 490 alias StrStrW StrStr; 491 alias StrToIntW StrToInt; 492 alias StrToIntExW StrToIntEx; 493 alias StrTrimW StrTrim; 494 alias PathAddBackslashW PathAddBackslash; 495 alias PathAddExtensionW PathAddExtension; 496 alias PathAppendW PathAppend; 497 alias PathBuildRootW PathBuildRoot; 498 alias PathCanonicalizeW PathCanonicalize; 499 alias PathCombineW PathCombine; 500 alias PathCommonPrefixW PathCommonPrefix; 501 alias PathCompactPathW PathCompactPath; 502 alias PathCompactPathExW PathCompactPathEx; 503 alias PathCreateFromUrlW PathCreateFromUrl; 504 alias PathFileExistsW PathFileExists; 505 alias PathFindExtensionW PathFindExtension; 506 alias PathFindFileNameW PathFindFileName; 507 alias PathFindNextComponentW PathFindNextComponent; 508 alias PathFindOnPathW PathFindOnPath; 509 alias PathFindSuffixArrayW PathFindSuffixArray; 510 alias PathGetArgsW PathGetArgs; 511 alias PathGetCharTypeW PathGetCharType; 512 alias PathGetDriveNumberW PathGetDriveNumber; 513 alias PathIsContentTypeW PathIsContentType; 514 alias PathIsDirectoryEmptyW PathIsDirectoryEmpty; 515 alias PathIsDirectoryW PathIsDirectory; 516 alias PathIsFileSpecW PathIsFileSpec; 517 alias PathIsLFNFileSpecW PathIsLFNFileSpec; 518 alias PathIsNetworkPathW PathIsNetworkPath; 519 alias PathIsPrefixW PathIsPrefix; 520 alias PathIsRelativeW PathIsRelative; 521 alias PathIsRootW PathIsRoot; 522 alias PathIsSameRootW PathIsSameRoot; 523 alias PathIsSystemFolderW PathIsSystemFolder; 524 alias PathIsUNCServerShareW PathIsUNCServerShare; 525 alias PathIsUNCServerW PathIsUNCServer; 526 alias PathIsUNCW PathIsUNC; 527 alias PathIsURLW PathIsURL; 528 alias PathMakePrettyW PathMakePretty; 529 alias PathMakeSystemFolderW PathMakeSystemFolder; 530 alias PathMatchSpecW PathMatchSpec; 531 alias PathParseIconLocationW PathParseIconLocation; 532 alias PathQuoteSpacesW PathQuoteSpaces; 533 alias PathRelativePathToW PathRelativePathTo; 534 alias PathRemoveArgsW PathRemoveArgs; 535 alias PathRemoveBackslashW PathRemoveBackslash; 536 alias PathRemoveBlanksW PathRemoveBlanks; 537 alias PathRemoveExtensionW PathRemoveExtension; 538 alias PathRemoveFileSpecW PathRemoveFileSpec; 539 alias PathRenameExtensionW PathRenameExtension; 540 alias PathSearchAndQualifyW PathSearchAndQualify; 541 alias PathSetDlgItemPathW PathSetDlgItemPath; 542 alias PathSkipRootW PathSkipRoot; 543 alias PathStripPathW PathStripPath; 544 alias PathStripToRootW PathStripToRoot; 545 alias PathUndecorateW PathUndecorate; 546 alias PathUnExpandEnvStringsW PathUnExpandEnvStrings; 547 alias PathUnmakeSystemFolderW PathUnmakeSystemFolder; 548 alias PathUnquoteSpacesW PathUnquoteSpaces; 549 alias SHCreateStreamOnFileW SHCreateStreamOnFile; 550 alias SHOpenRegStreamW SHOpenRegStream; 551 alias SHOpenRegStream2W SHOpenRegStream2; 552 alias SHCopyKeyW SHCopyKey; 553 alias SHDeleteEmptyKeyW SHDeleteEmptyKey; 554 alias SHDeleteKeyW SHDeleteKey; 555 alias SHEnumKeyExW SHEnumKeyEx; 556 alias SHQueryInfoKeyW SHQueryInfoKey; 557 alias SHQueryValueExW SHQueryValueEx; 558 alias SHEnumValueW SHEnumValue; 559 alias SHGetValueW SHGetValue; 560 alias SHSetValueW SHSetValue; 561 alias SHDeleteValueW SHDeleteValue; 562 alias AssocQueryKeyW AssocQueryKey; 563 alias AssocQueryStringByKeyW AssocQueryStringByKey; 564 alias AssocQueryStringW AssocQueryString; 565 alias UrlApplySchemeW UrlApplyScheme; 566 alias UrlCanonicalizeW UrlCanonicalize; 567 alias UrlCombineW UrlCombine; 568 alias UrlCompareW UrlCompare; 569 alias UrlCreateFromPathW UrlCreateFromPath; 570 alias UrlEscapeW UrlEscape; 571 alias UrlGetLocationW UrlGetLocation; 572 alias UrlGetPartW UrlGetPart; 573 alias UrlHashW UrlHash; 574 alias UrlIsW UrlIs; 575 alias UrlIsFileUrlW UrlIsFileUrl; 576 alias UrlIsNoHistoryW UrlIsNoHistory; 577 alias UrlIsOpaqueW UrlIsOpaque; 578 alias UrlUnescapeW UrlUnescape; 579 alias UrlUnescapeInPlaceW UrlUnescapeInPlace; 580 alias SHRegCreateUSKeyW SHRegCreateUSKey; 581 alias SHRegDeleteEmptyUSKeyW SHRegDeleteEmptyUSKey; 582 alias SHRegDeleteUSValueW SHRegDeleteUSValue; 583 alias SHRegEnumUSKeyW SHRegEnumUSKey; 584 alias SHRegEnumUSValueW SHRegEnumUSValue; 585 alias SHRegGetBoolUSValueW SHRegGetBoolUSValue; 586 alias SHRegGetPathW SHRegGetPath; 587 alias SHRegGetUSValueW SHRegGetUSValue; 588 alias SHRegOpenUSKeyW SHRegOpenUSKey; 589 alias SHRegQueryInfoUSKeyW SHRegQueryInfoUSKey; 590 alias SHRegQueryUSValueW SHRegQueryUSValue; 591 alias SHRegSetPathW SHRegSetPath; 592 alias SHRegSetUSValueW SHRegSetUSValue; 593 alias SHRegWriteUSValueW SHRegWriteUSValue; 594 //alias wnsprintfW wnsprintf; 595 //alias wvnsprintfW wvnsprintf; 596 } else { 597 alias ChrCmpIA ChrCmpI; 598 alias IntlStrEqNA IntlStrEqN; 599 alias IntlStrEqNIA IntlStrEqNI; 600 alias IntlStrEqWorkerA IntlStrEqWorker; 601 alias SHStrDupA SHStrDup; 602 alias StrCatBuffA StrCatBuff; 603 alias StrChrA StrChr; 604 alias StrChrIA StrChrI; 605 alias StrCmpNIA StrCmpNI; 606 alias StrCmpNA StrCmpN; 607 alias StrCSpnIA StrCSpnI; 608 alias StrCSpnA StrCSpn; 609 alias StrDupA StrDup; 610 alias StrFormatByteSizeA StrFormatByteSize; 611 alias StrFormatKBSizeA StrFormatKBSize; 612 alias StrFromTimeIntervalA StrFromTimeInterval; 613 alias StrIsIntlEqualA StrIsIntlEqual; 614 alias StrNCatA StrNCat; 615 alias StrPBrkA StrPBrk; 616 alias StrRChrA StrRChr; 617 alias StrRChrIA StrRChrI; 618 alias StrRetToBufA StrRetToBuf; 619 alias StrRetToStrA StrRetToStr; 620 alias StrRStrIA StrRStrI; 621 alias StrSpnA StrSpn; 622 alias StrStrIA StrStrI; 623 alias StrStrA StrStr; 624 alias StrToIntA StrToInt; 625 alias StrToIntExA StrToIntEx; 626 alias StrTrimA StrTrim; 627 alias PathAddBackslashA PathAddBackslash; 628 alias PathAddExtensionA PathAddExtension; 629 alias PathAppendA PathAppend; 630 alias PathBuildRootA PathBuildRoot; 631 alias PathCanonicalizeA PathCanonicalize; 632 alias PathCombineA PathCombine; 633 alias PathCommonPrefixA PathCommonPrefix; 634 alias PathCompactPathA PathCompactPath; 635 alias PathCompactPathExA PathCompactPathEx; 636 alias PathCreateFromUrlA PathCreateFromUrl; 637 alias PathFileExistsA PathFileExists; 638 alias PathFindExtensionA PathFindExtension; 639 alias PathFindFileNameA PathFindFileName; 640 alias PathFindNextComponentA PathFindNextComponent; 641 alias PathFindOnPathA PathFindOnPath; 642 alias PathFindSuffixArrayA PathFindSuffixArray; 643 alias PathGetArgsA PathGetArgs; 644 alias PathGetCharTypeA PathGetCharType; 645 alias PathGetDriveNumberA PathGetDriveNumber; 646 alias PathIsContentTypeA PathIsContentType; 647 alias PathIsDirectoryEmptyA PathIsDirectoryEmpty; 648 alias PathIsDirectoryA PathIsDirectory; 649 alias PathIsFileSpecA PathIsFileSpec; 650 alias PathIsLFNFileSpecA PathIsLFNFileSpec; 651 alias PathIsNetworkPathA PathIsNetworkPath; 652 alias PathIsPrefixA PathIsPrefix; 653 alias PathIsRelativeA PathIsRelative; 654 alias PathIsRootA PathIsRoot; 655 alias PathIsSameRootA PathIsSameRoot; 656 alias PathIsSystemFolderA PathIsSystemFolder; 657 alias PathIsUNCServerShareA PathIsUNCServerShare; 658 alias PathIsUNCServerA PathIsUNCServer; 659 alias PathIsUNCA PathIsUNC; 660 alias PathIsURLA PathIsURL; 661 alias PathMakePrettyA PathMakePretty; 662 alias PathMakeSystemFolderA PathMakeSystemFolder; 663 alias PathMatchSpecA PathMatchSpec; 664 alias PathParseIconLocationA PathParseIconLocation; 665 alias PathQuoteSpacesA PathQuoteSpaces; 666 alias PathRelativePathToA PathRelativePathTo; 667 alias PathRemoveArgsA PathRemoveArgs; 668 alias PathRemoveBackslashA PathRemoveBackslash; 669 alias PathRemoveBlanksA PathRemoveBlanks; 670 alias PathRemoveExtensionA PathRemoveExtension; 671 alias PathRemoveFileSpecA PathRemoveFileSpec; 672 alias PathRenameExtensionA PathRenameExtension; 673 alias PathSearchAndQualifyA PathSearchAndQualify; 674 alias PathSetDlgItemPathA PathSetDlgItemPath; 675 alias PathSkipRootA PathSkipRoot; 676 alias PathStripPathA PathStripPath; 677 alias PathStripToRootA PathStripToRoot; 678 alias PathUndecorateA PathUndecorate; 679 alias PathUnExpandEnvStringsA PathUnExpandEnvStrings; 680 alias PathUnmakeSystemFolderA PathUnmakeSystemFolder; 681 alias PathUnquoteSpacesA PathUnquoteSpaces; 682 alias SHCreateStreamOnFileA SHCreateStreamOnFile; 683 alias SHOpenRegStreamA SHOpenRegStream; 684 alias SHOpenRegStream2A SHOpenRegStream2; 685 alias SHCopyKeyA SHCopyKey; 686 alias SHDeleteEmptyKeyA SHDeleteEmptyKey; 687 alias SHDeleteKeyA SHDeleteKey; 688 alias SHEnumKeyExA SHEnumKeyEx; 689 alias SHQueryInfoKeyA SHQueryInfoKey; 690 alias SHQueryValueExA SHQueryValueEx; 691 alias SHEnumValueA SHEnumValue; 692 alias SHGetValueA SHGetValue; 693 alias SHSetValueA SHSetValue; 694 alias SHDeleteValueA SHDeleteValue; 695 alias AssocQueryKeyA AssocQueryKey; 696 alias AssocQueryStringByKeyA AssocQueryStringByKey; 697 alias AssocQueryStringA AssocQueryString; 698 alias UrlApplySchemeA UrlApplyScheme; 699 alias UrlCanonicalizeA UrlCanonicalize; 700 alias UrlCombineA UrlCombine; 701 alias UrlCompareA UrlCompare; 702 alias UrlCreateFromPathA UrlCreateFromPath; 703 alias UrlEscapeA UrlEscape; 704 alias UrlGetLocationA UrlGetLocation; 705 alias UrlGetPartA UrlGetPart; 706 alias UrlHashA UrlHash; 707 alias UrlIsA UrlIs; 708 alias UrlIsNoHistoryA UrlIsNoHistory; 709 alias UrlIsOpaqueA UrlIsOpaque; 710 alias UrlUnescapeA UrlUnescape; 711 alias UrlUnescapeInPlaceA UrlUnescapeInPlace; 712 alias SHRegCreateUSKeyA SHRegCreateUSKey; 713 alias SHRegDeleteEmptyUSKeyA SHRegDeleteEmptyUSKey; 714 alias SHRegDeleteUSValueA SHRegDeleteUSValue; 715 alias SHRegEnumUSKeyA SHRegEnumUSKey; 716 alias SHRegEnumUSValueA SHRegEnumUSValue; 717 alias SHRegGetBoolUSValueA SHRegGetBoolUSValue; 718 alias SHRegGetPathA SHRegGetPath; 719 alias SHRegGetUSValueA SHRegGetUSValue; 720 alias SHRegOpenUSKeyA SHRegOpenUSKey; 721 alias SHRegQueryInfoUSKeyA SHRegQueryInfoUSKey; 722 alias SHRegQueryUSValueA SHRegQueryUSValue; 723 alias SHRegSetPathA SHRegSetPath; 724 alias SHRegSetUSValueA SHRegSetUSValue; 725 alias SHRegWriteUSValueA SHRegWriteUSValue; 726 //alias wnsprintfA wnsprintf; 727 //alias wvnsprintfA wvnsprintf; 728 } 729 730 alias StrToInt StrToLong;