diff win32/shlwapi.d @ 1:4a9dcbd9e54f

-files of 0.13 beta -fixes so that it now compiles with the current dmd version
author marton@basel.hu
date Tue, 05 Apr 2011 20:44:01 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/win32/shlwapi.d	Tue Apr 05 20:44:01 2011 +0200
@@ -0,0 +1,730 @@
+/***********************************************************************\
+*                               shlwapi.d                               *
+*                                                                       *
+*                       Windows API header module                       *
+*                                                                       *
+*                 Translated from MinGW Windows headers                 *
+*                                                                       *
+*                       Placed into public domain                       *
+\***********************************************************************/
+module win32.shlwapi;
+pragma(lib, "shlwapi.lib");
+
+/* Changes compared to MinGW:
+wnsprintf functions are not included.
+// Macros unneeded for D
+#define StrCmpIA lstrcmpiA;
+#define StrCmpA lstrcmpA;
+#define StrCpyA lstrcpyA;
+#define StrCpyNA lstrcpynA;
+#define MAKEDLLVERULL(major, minor, build, qfe) \
+        (((ULONGLONG)(major) << 48) | \
+         ((ULONGLONG)(minor) << 32) | \
+         ((ULONGLONG)(build) << 16) | \
+         ((ULONGLONG)(  qfe) <<  0))
+*/
+
+import win32.objbase, win32.shlobj;
+private import win32.basetyps, win32.objidl, win32.unknwn, win32.windef,
+  win32.winbase, win32.winreg;
+
+const DLLVER_PLATFORM_WINDOWS = 0x00000001;
+const DLLVER_PLATFORM_NT      = 0x00000002;
+
+const URL_DONT_ESCAPE_EXTRA_INFO  = 0x02000000;
+const URL_DONT_SIMPLIFY           = 0x08000000;
+const URL_ESCAPE_PERCENT          = 0x00001000;
+const URL_ESCAPE_SEGMENT_ONLY     = 0x00002000;
+const URL_ESCAPE_SPACES_ONLY      = 0x04000000;
+const URL_ESCAPE_UNSAFE           = 0x20000000;
+const URL_INTERNAL_PATH           = 0x00800000;
+const URL_PARTFLAG_KEEPSCHEME     = 0x00000001;
+const URL_PLUGGABLE_PROTOCOL      = 0x40000000;
+const URL_UNESCAPE                = 0x10000000;
+const URL_UNESCAPE_HIGH_ANSI_ONLY = 0x00400000;
+const URL_UNESCAPE_INPLACE        = 0x00100000;
+
+align(1):
+struct DLLVERSIONINFO
+{
+	DWORD cbSize = this.sizeof;
+	DWORD dwMajorVersion;
+	DWORD dwMinorVersion;
+	DWORD dwBuildNumber;
+	DWORD dwPlatformID;
+}
+
+struct DLLVERSIONINFO2
+{
+	DLLVERSIONINFO info1;
+	DWORD dwFlags;
+	ULONGLONG ullVersion;
+}
+
+enum ASSOCSTR {
+	ASSOCSTR_COMMAND,
+	ASSOCSTR_EXECUTABLE,
+	ASSOCSTR_FRIENDLYDOCNAME,
+	ASSOCSTR_FRIENDLYAPPNAME,
+	ASSOCSTR_NOOPEN,
+	ASSOCSTR_SHELLNEWVALUE,
+	ASSOCSTR_DDECOMMAND,
+	ASSOCSTR_DDEIFEXEC,
+	ASSOCSTR_DDEAPPLICATION,
+	ASSOCSTR_DDETOPIC
+}
+
+enum ASSOCKEY
+{
+	ASSOCKEY_SHELLEXECCLASS = 1,
+	ASSOCKEY_APP,
+	ASSOCKEY_CLASS,
+	ASSOCKEY_BASECLASS
+}
+
+enum ASSOCDATA
+{
+	ASSOCDATA_MSIDESCRIPTOR = 1,
+	ASSOCDATA_NOACTIVATEHANDLER,
+	ASSOCDATA_QUERYCLASSSTORE
+}
+
+alias DWORD ASSOCF;
+
+enum SHREGDEL_FLAGS
+{
+	SHREGDEL_DEFAULT = 0x00000000,
+	SHREGDEL_HKCU    = 0x00000001,
+	SHREGDEL_HKLM    = 0x00000010,
+	SHREGDEL_BOTH    = 0x00000011
+}
+
+enum SHREGENUM_FLAGS
+{
+	SHREGENUM_DEFAULT = 0x00000000,
+	SHREGENUM_HKCU    = 0x00000001,
+	SHREGENUM_HKLM    = 0x00000010,
+	SHREGENUM_BOTH    = 0x00000011
+}
+
+enum URLIS
+{
+	URLIS_URL,
+	URLIS_OPAQUE,
+	URLIS_NOHISTORY,
+	URLIS_FILEURL,
+	URLIS_APPLIABLE,
+	URLIS_DIRECTORY,
+	URLIS_HASQUERY
+}
+
+alias HANDLE HUSKEY;
+alias HUSKEY* PHUSKEY;
+
+extern (Windows)
+{
+	alias HRESULT function (DLLVERSIONINFO *) DLLGETVERSIONPROC;
+}
+
+
+BOOL IntlStrEqNA(LPCSTR pStr1, LPCSTR pStr2, int nChar)
+{
+	return IntlStrEqWorkerA(TRUE, pStr1, pStr2, nChar);
+}
+
+BOOL IntlStrEqNW(LPCWSTR pStr1, LPCWSTR pStr2, int nChar)
+{
+	return IntlStrEqWorkerW(TRUE, pStr1, pStr2, nChar);
+}
+
+BOOL IntlStrEqNIA(LPCSTR pStr1, LPCSTR pStr2, int nChar)
+{
+	return IntlStrEqWorkerA(FALSE, pStr1, pStr2, nChar);
+}
+
+BOOL IntlStrEqNIW(LPCWSTR pStr1, LPCWSTR pStr2, int nChar)
+{
+	return IntlStrEqWorkerW(FALSE, pStr1, pStr2, nChar);
+}
+
+BOOL UrlIsFileUrlA(LPCSTR pszURL)
+{
+	return UrlIsA(pszURL, URLIS.URLIS_FILEURL);
+}
+
+BOOL UrlIsFileUrlW(LPCWSTR pszURL)
+{
+	return UrlIsW(pszURL, URLIS.URLIS_FILEURL);
+}
+
+HRESULT UrlUnescapeInPlaceA(LPSTR pszUrl,DWORD dwFlags)
+{
+	return UrlUnescapeA(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE);
+}
+HRESULT UrlUnescapeInPlaceW(LPWSTR pszUrl,DWORD dwFlags)
+{
+	return UrlUnescapeW(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE);
+}
+
+extern (Windows):
+BOOL ChrCmpIA(WORD,WORD);
+BOOL ChrCmpIW(WCHAR,WCHAR);
+BOOL IntlStrEqWorkerA(BOOL,LPCSTR,LPCSTR,int);
+BOOL IntlStrEqWorkerW(BOOL,LPCWSTR,LPCWSTR,int);
+HRESULT SHStrDupA(LPCSTR,LPWSTR*);
+HRESULT SHStrDupW(LPCWSTR,LPWSTR*);
+LPSTR StrCatA(LPSTR,LPCSTR);
+LPWSTR StrCatW(LPWSTR,LPCWSTR);
+LPSTR StrCatBuffA(LPSTR,LPCSTR,int);
+LPWSTR StrCatBuffW(LPWSTR,LPCWSTR,int);
+DWORD StrCatChainW(LPWSTR,DWORD,DWORD,LPCWSTR);
+LPSTR StrChrA(LPCSTR,WORD);
+LPWSTR StrChrW(LPCWSTR,WCHAR);
+LPSTR StrChrIA(LPCSTR,WORD);
+LPWSTR StrChrIW(LPCWSTR,WCHAR);
+int StrCmpIW(LPCWSTR,LPCWSTR);
+int StrCmpW(LPCWSTR,LPCWSTR);
+LPWSTR StrCpyW(LPWSTR,LPCWSTR);
+LPWSTR StrCpyNW(LPWSTR,LPCWSTR,int);
+int StrCmpNA(LPCSTR,LPCSTR,int);
+int StrCmpNW(LPCWSTR,LPCWSTR,int);
+int StrCmpNIA(LPCSTR,LPCSTR,int);
+int StrCmpNIW(LPCWSTR,LPCWSTR,int);
+int StrCSpnA(LPCSTR,LPCSTR);
+int StrCSpnW(LPCWSTR,LPCWSTR);
+int StrCSpnIA(LPCSTR,LPCSTR);
+int StrCSpnIW(LPCWSTR,LPCWSTR);
+LPSTR StrDupA(LPCSTR);
+LPWSTR StrDupW(LPCWSTR);
+LPSTR StrFormatByteSize64A(LONGLONG,LPSTR,UINT);
+LPSTR StrFormatByteSizeA(DWORD,LPSTR,UINT);
+LPWSTR StrFormatByteSizeW(LONGLONG,LPWSTR,UINT);
+LPSTR StrFormatKBSizeA(LONGLONG,LPSTR,UINT);
+LPWSTR StrFormatKBSizeW(LONGLONG,LPWSTR,UINT);
+int StrFromTimeIntervalA(LPSTR,UINT,DWORD,int);
+int StrFromTimeIntervalW(LPWSTR,UINT,DWORD,int);
+BOOL StrIsIntlEqualA(BOOL,LPCSTR,LPCSTR,int);
+BOOL StrIsIntlEqualW(BOOL,LPCWSTR,LPCWSTR,int);
+LPSTR StrNCatA(LPSTR,LPCSTR,int);
+LPWSTR StrNCatW(LPWSTR,LPCWSTR,int);
+LPSTR StrPBrkA(LPCSTR,LPCSTR);
+LPWSTR StrPBrkW(LPCWSTR,LPCWSTR);
+LPSTR StrRChrA(LPCSTR,LPCSTR,WORD);
+LPWSTR StrRChrW(LPCWSTR,LPCWSTR,WCHAR);
+LPSTR StrRChrIA(LPCSTR,LPCSTR,WORD);
+LPWSTR StrRChrIW(LPCWSTR,LPCWSTR,WCHAR);
+LPSTR StrRStrIA(LPCSTR,LPCSTR,LPCSTR);
+LPWSTR StrRStrIW(LPCWSTR,LPCWSTR,LPCWSTR);
+int StrSpnA(LPCSTR,LPCSTR);
+int StrSpnW(LPCWSTR,LPCWSTR);
+LPSTR StrStrA(LPCSTR, LPCSTR);
+LPSTR StrStrIA(LPCSTR,LPCSTR);
+LPWSTR StrStrIW(LPCWSTR,LPCWSTR);
+LPWSTR StrStrW(LPCWSTR,LPCWSTR);
+int StrToIntA(LPCSTR);
+int StrToIntW(LPCWSTR);
+BOOL StrToIntExA(LPCSTR,DWORD,int*);
+BOOL StrToIntExW(LPCWSTR,DWORD,int*);
+BOOL StrTrimA(LPSTR,LPCSTR);
+BOOL StrTrimW(LPWSTR,LPCWSTR);
+LPSTR PathAddBackslashA(LPSTR);
+LPWSTR PathAddBackslashW(LPWSTR);
+BOOL PathAddExtensionA(LPSTR,LPCSTR);
+BOOL PathAddExtensionW(LPWSTR,LPCWSTR);
+BOOL PathAppendA(LPSTR,LPCSTR);
+BOOL PathAppendW(LPWSTR,LPCWSTR);
+LPSTR PathBuildRootA(LPSTR,int);
+LPWSTR PathBuildRootW(LPWSTR,int);
+BOOL PathCanonicalizeA(LPSTR,LPCSTR);
+BOOL PathCanonicalizeW(LPWSTR,LPCWSTR);
+LPSTR PathCombineA(LPSTR,LPCSTR,LPCSTR);
+LPWSTR PathCombineW(LPWSTR,LPCWSTR,LPCWSTR);
+int PathCommonPrefixA(LPCSTR,LPCSTR,LPSTR);
+int PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR);
+BOOL PathCompactPathA(HDC,LPSTR,UINT);
+BOOL PathCompactPathW(HDC,LPWSTR,UINT);
+BOOL PathCompactPathExA(LPSTR,LPCSTR,UINT,DWORD);
+BOOL PathCompactPathExW(LPWSTR,LPCWSTR,UINT,DWORD);
+HRESULT PathCreateFromUrlA(LPCSTR,LPSTR,LPDWORD,DWORD);
+HRESULT PathCreateFromUrlW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+BOOL PathFileExistsA(LPCSTR);
+BOOL PathFileExistsW(LPCWSTR);
+LPSTR PathFindExtensionA(LPCSTR);
+LPWSTR PathFindExtensionW(LPCWSTR);
+LPSTR PathFindFileNameA(LPCSTR);
+LPWSTR PathFindFileNameW(LPCWSTR);
+LPSTR PathFindNextComponentA(LPCSTR);
+LPWSTR PathFindNextComponentW(LPCWSTR);
+BOOL PathFindOnPathA(LPSTR,LPCSTR*);
+BOOL PathFindOnPathW(LPWSTR,LPCWSTR*);
+LPCSTR PathFindSuffixArrayA(LPCSTR,LPCSTR*,int);
+LPCWSTR PathFindSuffixArrayW(LPCWSTR,LPCWSTR*,int);
+LPSTR PathGetArgsA(LPCSTR);
+LPWSTR PathGetArgsW(LPCWSTR);
+UINT PathGetCharTypeA(UCHAR);
+UINT PathGetCharTypeW(WCHAR);
+int PathGetDriveNumberA(LPCSTR);
+int PathGetDriveNumberW(LPCWSTR);
+BOOL PathIsContentTypeA(LPCSTR,LPCSTR);
+BOOL PathIsContentTypeW(LPCWSTR,LPCWSTR);
+BOOL PathIsDirectoryA(LPCSTR);
+BOOL PathIsDirectoryEmptyA(LPCSTR);
+BOOL PathIsDirectoryEmptyW(LPCWSTR);
+BOOL PathIsDirectoryW(LPCWSTR);
+BOOL PathIsFileSpecA(LPCSTR);
+BOOL PathIsFileSpecW(LPCWSTR);
+BOOL PathIsLFNFileSpecA(LPCSTR);
+BOOL PathIsLFNFileSpecW(LPCWSTR);
+BOOL PathIsNetworkPathA(LPCSTR);
+BOOL PathIsNetworkPathW(LPCWSTR);
+BOOL PathIsPrefixA(LPCSTR,LPCSTR);
+BOOL PathIsPrefixW(LPCWSTR,LPCWSTR);
+BOOL PathIsRelativeA(LPCSTR);
+BOOL PathIsRelativeW(LPCWSTR);
+BOOL PathIsRootA(LPCSTR);
+BOOL PathIsRootW(LPCWSTR);
+BOOL PathIsSameRootA(LPCSTR,LPCSTR);
+BOOL PathIsSameRootW(LPCWSTR,LPCWSTR);
+BOOL PathIsSystemFolderA(LPCSTR,DWORD);
+BOOL PathIsSystemFolderW(LPCWSTR,DWORD);
+BOOL PathIsUNCA(LPCSTR);
+BOOL PathIsUNCServerA(LPCSTR);
+BOOL PathIsUNCServerShareA(LPCSTR);
+BOOL PathIsUNCServerShareW(LPCWSTR);
+BOOL PathIsUNCServerW(LPCWSTR);
+BOOL PathIsUNCW(LPCWSTR);
+BOOL PathIsURLA(LPCSTR);
+BOOL PathIsURLW(LPCWSTR);
+BOOL PathMakePrettyA(LPSTR);
+BOOL PathMakePrettyW(LPWSTR);
+BOOL PathMakeSystemFolderA(LPSTR);
+BOOL PathMakeSystemFolderW(LPWSTR);
+BOOL PathMatchSpecA(LPCSTR,LPCSTR);
+BOOL PathMatchSpecW(LPCWSTR,LPCWSTR);
+int PathParseIconLocationA(LPSTR);
+int PathParseIconLocationW(LPWSTR);
+void PathQuoteSpacesA(LPSTR);
+void PathQuoteSpacesW(LPWSTR);
+BOOL PathRelativePathToA(LPSTR,LPCSTR,DWORD,LPCSTR,DWORD);
+BOOL PathRelativePathToW(LPWSTR,LPCWSTR,DWORD,LPCWSTR,DWORD);
+void PathRemoveArgsA(LPSTR);
+void PathRemoveArgsW(LPWSTR);
+LPSTR PathRemoveBackslashA(LPSTR);
+LPWSTR PathRemoveBackslashW(LPWSTR);
+void PathRemoveBlanksA(LPSTR);
+void PathRemoveBlanksW(LPWSTR);
+void PathRemoveExtensionA(LPSTR);
+void PathRemoveExtensionW(LPWSTR);
+BOOL PathRemoveFileSpecA(LPSTR);
+BOOL PathRemoveFileSpecW(LPWSTR);
+BOOL PathRenameExtensionA(LPSTR,LPCSTR);
+BOOL PathRenameExtensionW(LPWSTR,LPCWSTR);
+BOOL PathSearchAndQualifyA(LPCSTR,LPSTR,UINT);
+BOOL PathSearchAndQualifyW(LPCWSTR,LPWSTR,UINT);
+void PathSetDlgItemPathA(HWND,int,LPCSTR);
+void PathSetDlgItemPathW(HWND,int,LPCWSTR);
+LPSTR PathSkipRootA(LPCSTR);
+LPWSTR PathSkipRootW(LPCWSTR);
+void PathStripPathA(LPSTR);
+void PathStripPathW(LPWSTR);
+BOOL PathStripToRootA(LPSTR);
+BOOL PathStripToRootW(LPWSTR);
+void PathUndecorateA(LPSTR);
+void PathUndecorateW(LPWSTR);
+BOOL PathUnExpandEnvStringsA(LPCSTR,LPSTR,UINT);
+BOOL PathUnExpandEnvStringsW(LPCWSTR,LPWSTR,UINT);
+BOOL PathUnmakeSystemFolderA(LPSTR);
+BOOL PathUnmakeSystemFolderW(LPWSTR);
+void PathUnquoteSpacesA(LPSTR);
+void PathUnquoteSpacesW(LPWSTR);
+HRESULT SHAutoComplete(HWND,DWORD);
+BOOL SHCreateThread(LPTHREAD_START_ROUTINE,void*,DWORD,LPTHREAD_START_ROUTINE);
+DWORD SHCopyKeyA(HKEY,LPCSTR,HKEY,DWORD);
+DWORD SHCopyKeyW(HKEY,LPCWSTR,HKEY,DWORD);
+DWORD SHDeleteEmptyKeyA(HKEY,LPCSTR);
+DWORD SHDeleteEmptyKeyW(HKEY,LPCWSTR);
+DWORD SHDeleteKeyA(HKEY,LPCSTR);
+DWORD SHDeleteKeyW(HKEY,LPCWSTR);
+DWORD SHEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD);
+DWORD SHEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD);
+DWORD SHQueryInfoKeyA(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+DWORD SHQueryInfoKeyW(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+DWORD SHQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+DWORD SHQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+HRESULT SHGetThreadRef(IUnknown**);
+HRESULT SHSetThreadRef(IUnknown*);
+BOOL SHSkipJunction(IBindCtx*, CLSID*);
+DWORD SHEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+DWORD SHEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+DWORD SHGetValueA(HKEY,LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD);
+DWORD SHGetValueW(HKEY,LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD);
+DWORD SHSetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPCVOID,DWORD);
+DWORD SHSetValueW(HKEY,LPCWSTR,LPCWSTR,DWORD,LPCVOID,DWORD);
+DWORD SHDeleteValueA(HKEY,LPCSTR,LPCSTR);
+DWORD SHDeleteValueW(HKEY,LPCWSTR,LPCWSTR);
+HRESULT AssocCreate(CLSID, IID* ,LPVOID*);
+HRESULT AssocQueryKeyA(ASSOCF,ASSOCKEY,LPCSTR,LPCSTR,HKEY*);
+HRESULT AssocQueryKeyW(ASSOCF,ASSOCKEY,LPCWSTR,LPCWSTR,HKEY*);
+HRESULT AssocQueryStringA(ASSOCF,ASSOCSTR,LPCSTR,LPCSTR,LPSTR,DWORD*);
+HRESULT AssocQueryStringByKeyA(ASSOCF,ASSOCSTR,HKEY,LPCSTR,LPSTR,DWORD*);
+HRESULT AssocQueryStringByKeyW(ASSOCF,ASSOCSTR,HKEY,LPCWSTR,LPWSTR,DWORD*);
+HRESULT AssocQueryStringW(ASSOCF,ASSOCSTR,LPCWSTR,LPCWSTR,LPWSTR,DWORD*);
+HRESULT UrlApplySchemeA(LPCSTR,LPSTR,LPDWORD,DWORD);
+HRESULT UrlApplySchemeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+HRESULT UrlCanonicalizeA(LPCSTR,LPSTR,LPDWORD,DWORD);
+HRESULT UrlCanonicalizeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+HRESULT UrlCombineA(LPCSTR,LPCSTR,LPSTR,LPDWORD,DWORD);
+HRESULT UrlCombineW(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,DWORD);
+int UrlCompareA(LPCSTR,LPCSTR,BOOL);
+int UrlCompareW(LPCWSTR,LPCWSTR,BOOL);
+HRESULT UrlCreateFromPathA(LPCSTR,LPSTR,LPDWORD,DWORD);
+HRESULT UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+HRESULT UrlEscapeA(LPCSTR,LPSTR,LPDWORD,DWORD);
+HRESULT UrlEscapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+LPCSTR UrlGetLocationA(LPCSTR);
+LPCWSTR UrlGetLocationW(LPCWSTR);
+HRESULT UrlGetPartA(LPCSTR,LPSTR,LPDWORD,DWORD,DWORD);
+HRESULT UrlGetPartW(LPCWSTR,LPWSTR,LPDWORD,DWORD,DWORD);
+HRESULT UrlHashA(LPCSTR,LPBYTE,DWORD);
+HRESULT UrlHashW(LPCWSTR,LPBYTE,DWORD);
+BOOL UrlIsA(LPCSTR,URLIS);
+BOOL UrlIsW(LPCWSTR,URLIS);
+BOOL UrlIsNoHistoryA(LPCSTR);
+BOOL UrlIsNoHistoryW(LPCWSTR);
+BOOL UrlIsOpaqueA(LPCSTR);
+BOOL UrlIsOpaqueW(LPCWSTR);
+HRESULT UrlUnescapeA(LPSTR,LPSTR,LPDWORD,DWORD);
+HRESULT UrlUnescapeW(LPWSTR,LPWSTR,LPDWORD,DWORD);
+DWORD SHRegCloseUSKey(HUSKEY);
+LONG SHRegCreateUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
+LONG SHRegCreateUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
+LONG SHRegDeleteEmptyUSKeyA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
+LONG SHRegDeleteEmptyUSKeyW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
+LONG SHRegDeleteUSValueA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
+LONG SHRegDeleteUSValueW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
+HKEY SHRegDuplicateHKey(HKEY);
+DWORD SHRegEnumUSKeyA(HUSKEY,DWORD,LPSTR,LPDWORD,SHREGENUM_FLAGS);
+DWORD SHRegEnumUSKeyW(HUSKEY,DWORD,LPWSTR,LPDWORD,SHREGENUM_FLAGS);
+DWORD SHRegEnumUSValueA(HUSKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS);
+DWORD SHRegEnumUSValueW(HUSKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS);
+BOOL SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL);
+BOOL SHRegGetBoolUSValueW(LPCWSTR,LPCWSTR,BOOL,BOOL);
+DWORD SHRegGetPathA(HKEY,LPCSTR,LPCSTR,LPSTR,DWORD);
+DWORD SHRegGetPathW(HKEY,LPCWSTR,LPCWSTR,LPWSTR,DWORD);
+LONG SHRegGetUSValueA(LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD);
+LONG SHRegGetUSValueW(LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD);
+LONG SHRegOpenUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
+LONG SHRegOpenUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
+DWORD SHRegQueryInfoUSKeyA(HUSKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD,SHREGENUM_FLAGS);
+DWORD SHRegQueryInfoUSKeyW(HUSKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD,SHREGENUM_FLAGS);
+LONG SHRegQueryUSValueA(HUSKEY,LPCSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD);
+LONG SHRegQueryUSValueW(HUSKEY,LPCWSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD);
+DWORD SHRegSetPathA(HKEY,LPCSTR,LPCSTR,LPCSTR,DWORD);
+DWORD SHRegSetPathW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR,DWORD);
+LONG SHRegSetUSValueA(LPCSTR,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
+LONG SHRegSetUSValueW(LPCWSTR,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
+LONG SHRegWriteUSValueA(HUSKEY,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
+LONG SHRegWriteUSValueW(HUSKEY,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
+HRESULT HashData(LPBYTE,DWORD,LPBYTE,DWORD);
+HPALETTE SHCreateShellPalette(HDC);
+COLORREF ColorHLSToRGB(WORD,WORD,WORD);
+COLORREF ColorAdjustLuma(COLORREF,int,BOOL);
+void ColorRGBToHLS(COLORREF,WORD*,WORD*,WORD*);
+/** Should not be necessary for D?
+extern (C):
+int  wnsprintfA(LPSTR,int,LPCSTR,...);
+int  wnsprintfW(LPWSTR,int,LPCWSTR,...);
+extern (Windows):
+int wvnsprintfA(LPSTR,int,LPCSTR,va_list);
+int wvnsprintfW(LPWSTR,int,LPCWSTR,va_list);
+*/
+
+HINSTANCE MLLoadLibraryA(LPCSTR,HANDLE,DWORD,LPCSTR,BOOL);
+HINSTANCE MLLoadLibraryW(LPCWSTR,HANDLE,DWORD,LPCWSTR,BOOL);
+
+HRESULT DllInstall(BOOL,LPCWSTR);
+
+HRESULT StrRetToBufA(LPSTRRET,LPCITEMIDLIST,LPSTR,UINT);
+HRESULT StrRetToBufW(LPSTRRET,LPCITEMIDLIST,LPWSTR,UINT);
+HRESULT StrRetToStrA(LPSTRRET,LPCITEMIDLIST,LPSTR*);
+HRESULT StrRetToStrW(LPSTRRET,LPCITEMIDLIST,LPWSTR*);
+HRESULT SHCreateStreamOnFileA(LPCSTR,DWORD,IStream**);
+HRESULT SHCreateStreamOnFileW(LPCWSTR,DWORD,IStream**);
+IStream* SHOpenRegStream2A(HKEY,LPCSTR,LPCSTR,DWORD);
+IStream* SHOpenRegStream2W(HKEY,LPCWSTR,LPCWSTR,DWORD);
+IStream* SHOpenRegStreamA(HKEY,LPCSTR,LPCSTR,DWORD);
+IStream* SHOpenRegStreamW(HKEY,LPCWSTR,LPCWSTR,DWORD);
+
+version(Unicode) {
+alias ChrCmpIW ChrCmpI;
+alias IntlStrEqNW IntlStrEqN;
+alias IntlStrEqNIW IntlStrEqNI;
+alias IntlStrEqWorkerW IntlStrEqWorker;
+alias SHStrDupW SHStrDup;
+alias StrCatW StrCat;
+alias StrCatBuffW StrCatBuff;
+alias StrChrW StrChr;
+alias StrChrIW StrChrI;
+alias StrCmpW StrCmp;
+alias StrCmpIW StrCmpI;
+alias StrCmpNIW StrCmpNI;
+alias StrCmpNW StrCmpN;
+alias StrCpyNW StrCpyN;
+alias StrCpyW StrCpy;
+alias StrCSpnIW StrCSpnI;
+alias StrCSpnW StrCSpn;
+alias StrDupW StrDup;
+alias StrFormatByteSizeW StrFormatByteSize;
+alias StrFormatKBSizeW StrFormatKBSize;
+alias StrFromTimeIntervalW StrFromTimeInterval;
+alias StrIsIntlEqualW StrIsIntlEqual;
+alias StrNCatW StrNCat;
+alias StrPBrkW StrPBrk;
+alias StrRChrW StrRChr;
+alias StrRChrIW StrRChrI;
+alias StrRetToBufW StrRetToBuf;
+alias StrRetToStrW StrRetToStr;
+alias StrRStrIW StrRStrI;
+alias StrSpnW StrSpn;
+alias StrStrIW StrStrI;
+alias StrStrW StrStr;
+alias StrToIntW StrToInt;
+alias StrToIntExW StrToIntEx;
+alias StrTrimW StrTrim;
+alias PathAddBackslashW PathAddBackslash;
+alias PathAddExtensionW PathAddExtension;
+alias PathAppendW PathAppend;
+alias PathBuildRootW PathBuildRoot;
+alias PathCanonicalizeW PathCanonicalize;
+alias PathCombineW PathCombine;
+alias PathCommonPrefixW PathCommonPrefix;
+alias PathCompactPathW PathCompactPath;
+alias PathCompactPathExW PathCompactPathEx;
+alias PathCreateFromUrlW PathCreateFromUrl;
+alias PathFileExistsW PathFileExists;
+alias PathFindExtensionW PathFindExtension;
+alias PathFindFileNameW PathFindFileName;
+alias PathFindNextComponentW PathFindNextComponent;
+alias PathFindOnPathW PathFindOnPath;
+alias PathFindSuffixArrayW PathFindSuffixArray;
+alias PathGetArgsW PathGetArgs;
+alias PathGetCharTypeW PathGetCharType;
+alias PathGetDriveNumberW PathGetDriveNumber;
+alias PathIsContentTypeW PathIsContentType;
+alias PathIsDirectoryEmptyW PathIsDirectoryEmpty;
+alias PathIsDirectoryW PathIsDirectory;
+alias PathIsFileSpecW PathIsFileSpec;
+alias PathIsLFNFileSpecW PathIsLFNFileSpec;
+alias PathIsNetworkPathW PathIsNetworkPath;
+alias PathIsPrefixW PathIsPrefix;
+alias PathIsRelativeW PathIsRelative;
+alias PathIsRootW PathIsRoot;
+alias PathIsSameRootW PathIsSameRoot;
+alias PathIsSystemFolderW PathIsSystemFolder;
+alias PathIsUNCServerShareW PathIsUNCServerShare;
+alias PathIsUNCServerW PathIsUNCServer;
+alias PathIsUNCW PathIsUNC;
+alias PathIsURLW PathIsURL;
+alias PathMakePrettyW PathMakePretty;
+alias PathMakeSystemFolderW PathMakeSystemFolder;
+alias PathMatchSpecW PathMatchSpec;
+alias PathParseIconLocationW PathParseIconLocation;
+alias PathQuoteSpacesW PathQuoteSpaces;
+alias PathRelativePathToW PathRelativePathTo;
+alias PathRemoveArgsW PathRemoveArgs;
+alias PathRemoveBackslashW PathRemoveBackslash;
+alias PathRemoveBlanksW PathRemoveBlanks;
+alias PathRemoveExtensionW PathRemoveExtension;
+alias PathRemoveFileSpecW PathRemoveFileSpec;
+alias PathRenameExtensionW PathRenameExtension;
+alias PathSearchAndQualifyW PathSearchAndQualify;
+alias PathSetDlgItemPathW PathSetDlgItemPath;
+alias PathSkipRootW PathSkipRoot;
+alias PathStripPathW PathStripPath;
+alias PathStripToRootW PathStripToRoot;
+alias PathUndecorateW PathUndecorate;
+alias PathUnExpandEnvStringsW PathUnExpandEnvStrings;
+alias PathUnmakeSystemFolderW PathUnmakeSystemFolder;
+alias PathUnquoteSpacesW PathUnquoteSpaces;
+alias SHCreateStreamOnFileW SHCreateStreamOnFile;
+alias SHOpenRegStreamW SHOpenRegStream;
+alias SHOpenRegStream2W SHOpenRegStream2;
+alias SHCopyKeyW SHCopyKey;
+alias SHDeleteEmptyKeyW SHDeleteEmptyKey;
+alias SHDeleteKeyW SHDeleteKey;
+alias SHEnumKeyExW SHEnumKeyEx;
+alias SHQueryInfoKeyW SHQueryInfoKey;
+alias SHQueryValueExW SHQueryValueEx;
+alias SHEnumValueW SHEnumValue;
+alias SHGetValueW SHGetValue;
+alias SHSetValueW SHSetValue;
+alias SHDeleteValueW SHDeleteValue;
+alias AssocQueryKeyW AssocQueryKey;
+alias AssocQueryStringByKeyW AssocQueryStringByKey;
+alias AssocQueryStringW AssocQueryString;
+alias UrlApplySchemeW UrlApplyScheme;
+alias UrlCanonicalizeW UrlCanonicalize;
+alias UrlCombineW UrlCombine;
+alias UrlCompareW UrlCompare;
+alias UrlCreateFromPathW UrlCreateFromPath;
+alias UrlEscapeW UrlEscape;
+alias UrlGetLocationW UrlGetLocation;
+alias UrlGetPartW UrlGetPart;
+alias UrlHashW UrlHash;
+alias UrlIsW UrlIs;
+alias UrlIsFileUrlW UrlIsFileUrl;
+alias UrlIsNoHistoryW UrlIsNoHistory;
+alias UrlIsOpaqueW UrlIsOpaque;
+alias UrlUnescapeW UrlUnescape;
+alias UrlUnescapeInPlaceW UrlUnescapeInPlace;
+alias SHRegCreateUSKeyW SHRegCreateUSKey;
+alias SHRegDeleteEmptyUSKeyW SHRegDeleteEmptyUSKey;
+alias SHRegDeleteUSValueW SHRegDeleteUSValue;
+alias SHRegEnumUSKeyW SHRegEnumUSKey;
+alias SHRegEnumUSValueW SHRegEnumUSValue;
+alias SHRegGetBoolUSValueW SHRegGetBoolUSValue;
+alias SHRegGetPathW SHRegGetPath;
+alias SHRegGetUSValueW SHRegGetUSValue;
+alias SHRegOpenUSKeyW SHRegOpenUSKey;
+alias SHRegQueryInfoUSKeyW SHRegQueryInfoUSKey;
+alias SHRegQueryUSValueW SHRegQueryUSValue;
+alias SHRegSetPathW SHRegSetPath;
+alias SHRegSetUSValueW SHRegSetUSValue;
+alias SHRegWriteUSValueW SHRegWriteUSValue;
+//alias wnsprintfW wnsprintf;
+//alias wvnsprintfW wvnsprintf;
+} else {
+alias ChrCmpIA ChrCmpI;
+alias IntlStrEqNA IntlStrEqN;
+alias IntlStrEqNIA IntlStrEqNI;
+alias IntlStrEqWorkerA IntlStrEqWorker;
+alias SHStrDupA SHStrDup;
+alias StrCatBuffA StrCatBuff;
+alias StrChrA StrChr;
+alias StrChrIA StrChrI;
+alias StrCmpNIA StrCmpNI;
+alias StrCmpNA StrCmpN;
+alias StrCSpnIA StrCSpnI;
+alias StrCSpnA StrCSpn;
+alias StrDupA StrDup;
+alias StrFormatByteSizeA StrFormatByteSize;
+alias StrFormatKBSizeA StrFormatKBSize;
+alias StrFromTimeIntervalA StrFromTimeInterval;
+alias StrIsIntlEqualA StrIsIntlEqual;
+alias StrNCatA StrNCat;
+alias StrPBrkA StrPBrk;
+alias StrRChrA StrRChr;
+alias StrRChrIA StrRChrI;
+alias StrRetToBufA StrRetToBuf;
+alias StrRetToStrA StrRetToStr;
+alias StrRStrIA StrRStrI;
+alias StrSpnA StrSpn;
+alias StrStrIA StrStrI;
+alias StrStrA StrStr;
+alias StrToIntA StrToInt;
+alias StrToIntExA StrToIntEx;
+alias StrTrimA StrTrim;
+alias PathAddBackslashA PathAddBackslash;
+alias PathAddExtensionA PathAddExtension;
+alias PathAppendA PathAppend;
+alias PathBuildRootA PathBuildRoot;
+alias PathCanonicalizeA PathCanonicalize;
+alias PathCombineA PathCombine;
+alias PathCommonPrefixA PathCommonPrefix;
+alias PathCompactPathA PathCompactPath;
+alias PathCompactPathExA PathCompactPathEx;
+alias PathCreateFromUrlA PathCreateFromUrl;
+alias PathFileExistsA PathFileExists;
+alias PathFindExtensionA PathFindExtension;
+alias PathFindFileNameA PathFindFileName;
+alias PathFindNextComponentA PathFindNextComponent;
+alias PathFindOnPathA PathFindOnPath;
+alias PathFindSuffixArrayA PathFindSuffixArray;
+alias PathGetArgsA PathGetArgs;
+alias PathGetCharTypeA PathGetCharType;
+alias PathGetDriveNumberA PathGetDriveNumber;
+alias PathIsContentTypeA PathIsContentType;
+alias PathIsDirectoryEmptyA PathIsDirectoryEmpty;
+alias PathIsDirectoryA PathIsDirectory;
+alias PathIsFileSpecA PathIsFileSpec;
+alias PathIsLFNFileSpecA PathIsLFNFileSpec;
+alias PathIsNetworkPathA PathIsNetworkPath;
+alias PathIsPrefixA PathIsPrefix;
+alias PathIsRelativeA PathIsRelative;
+alias PathIsRootA PathIsRoot;
+alias PathIsSameRootA PathIsSameRoot;
+alias PathIsSystemFolderA PathIsSystemFolder;
+alias PathIsUNCServerShareA PathIsUNCServerShare;
+alias PathIsUNCServerA PathIsUNCServer;
+alias PathIsUNCA PathIsUNC;
+alias PathIsURLA PathIsURL;
+alias PathMakePrettyA PathMakePretty;
+alias PathMakeSystemFolderA PathMakeSystemFolder;
+alias PathMatchSpecA PathMatchSpec;
+alias PathParseIconLocationA PathParseIconLocation;
+alias PathQuoteSpacesA PathQuoteSpaces;
+alias PathRelativePathToA PathRelativePathTo;
+alias PathRemoveArgsA PathRemoveArgs;
+alias PathRemoveBackslashA PathRemoveBackslash;
+alias PathRemoveBlanksA PathRemoveBlanks;
+alias PathRemoveExtensionA PathRemoveExtension;
+alias PathRemoveFileSpecA PathRemoveFileSpec;
+alias PathRenameExtensionA PathRenameExtension;
+alias PathSearchAndQualifyA PathSearchAndQualify;
+alias PathSetDlgItemPathA PathSetDlgItemPath;
+alias PathSkipRootA PathSkipRoot;
+alias PathStripPathA PathStripPath;
+alias PathStripToRootA PathStripToRoot;
+alias PathUndecorateA PathUndecorate;
+alias PathUnExpandEnvStringsA PathUnExpandEnvStrings;
+alias PathUnmakeSystemFolderA PathUnmakeSystemFolder;
+alias PathUnquoteSpacesA PathUnquoteSpaces;
+alias SHCreateStreamOnFileA SHCreateStreamOnFile;
+alias SHOpenRegStreamA SHOpenRegStream;
+alias SHOpenRegStream2A SHOpenRegStream2;
+alias SHCopyKeyA SHCopyKey;
+alias SHDeleteEmptyKeyA SHDeleteEmptyKey;
+alias SHDeleteKeyA SHDeleteKey;
+alias SHEnumKeyExA SHEnumKeyEx;
+alias SHQueryInfoKeyA SHQueryInfoKey;
+alias SHQueryValueExA SHQueryValueEx;
+alias SHEnumValueA SHEnumValue;
+alias SHGetValueA SHGetValue;
+alias SHSetValueA SHSetValue;
+alias SHDeleteValueA SHDeleteValue;
+alias AssocQueryKeyA AssocQueryKey;
+alias AssocQueryStringByKeyA AssocQueryStringByKey;
+alias AssocQueryStringA AssocQueryString;
+alias UrlApplySchemeA UrlApplyScheme;
+alias UrlCanonicalizeA UrlCanonicalize;
+alias UrlCombineA UrlCombine;
+alias UrlCompareA UrlCompare;
+alias UrlCreateFromPathA UrlCreateFromPath;
+alias UrlEscapeA UrlEscape;
+alias UrlGetLocationA UrlGetLocation;
+alias UrlGetPartA UrlGetPart;
+alias UrlHashA UrlHash;
+alias UrlIsA UrlIs;
+alias UrlIsNoHistoryA UrlIsNoHistory;
+alias UrlIsOpaqueA UrlIsOpaque;
+alias UrlUnescapeA UrlUnescape;
+alias UrlUnescapeInPlaceA UrlUnescapeInPlace;
+alias SHRegCreateUSKeyA SHRegCreateUSKey;
+alias SHRegDeleteEmptyUSKeyA SHRegDeleteEmptyUSKey;
+alias SHRegDeleteUSValueA SHRegDeleteUSValue;
+alias SHRegEnumUSKeyA SHRegEnumUSKey;
+alias SHRegEnumUSValueA SHRegEnumUSValue;
+alias SHRegGetBoolUSValueA SHRegGetBoolUSValue;
+alias SHRegGetPathA SHRegGetPath;
+alias SHRegGetUSValueA SHRegGetUSValue;
+alias SHRegOpenUSKeyA SHRegOpenUSKey;
+alias SHRegQueryInfoUSKeyA SHRegQueryInfoUSKey;
+alias SHRegQueryUSValueA SHRegQueryUSValue;
+alias SHRegSetPathA SHRegSetPath;
+alias SHRegSetUSValueA SHRegSetUSValue;
+alias SHRegWriteUSValueA SHRegWriteUSValue;
+//alias wnsprintfA wnsprintf;
+//alias wvnsprintfA wvnsprintf;
+}
+
+alias StrToInt StrToLong;