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