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