Index: Include/api_shell.sbp
===================================================================
--- Include/api_shell.sbp	(revision 35)
+++ Include/api_shell.sbp	(revision 141)
@@ -5,9 +5,36 @@
 #define _INC_SHELL
 
+#ifdef UNICODE
+Const _FuncName_DoEnvironmentSubst = "DoEnvironmentSubstW"
+Const _FuncName_DragQueryFile = "DragQueryFileW"
+Const _FuncName_ExtractAssociatedIcon = "ExtractAssociatedIconW"
+Const _FuncName_ExtractIcon = "ExtractIconW"
+Const _FuncName_ExtractIconEx = "ExtractIconExW"
+Const _FuncName_FindExecutable = "FindExecutableW"
+Const _FuncName_GUIDFromString = "GUIDFromStringW"
+Const _FuncName_SHBrowseForFolder = "SHBrowseForFolderW"
+Const _FuncName_ShellAbout = "ShellAboutW"
+Const _FuncName_ShellExecute = "ShellExecuteW"
+Const _FuncName_SHFileOperation = "SHFileOperationW"
+Const _FuncName_SHGetPathFromIDList = "SHGetPathFromIDListW"
+#else
+Const _FuncName_DoEnvironmentSubst = "DoEnvironmentSubstA"
+Const _FuncName_DragQueryFile = "DragQueryFileA"
+Const _FuncName_ExtractAssociatedIcon = "ExtractAssociatedIconA"
+Const _FuncName_ExtractIcon = "ExtractIconA"
+Const _FuncName_ExtractIconEx = "ExtractIconExA"
+Const _FuncName_FindExecutable = "FindExecutableA"
+Const _FuncName_GUIDFromString = "GUIDFromStringA"
+Const _FuncName_SHBrowseForFolder = "SHBrowseForFolderA"
+Const _FuncName_ShellAbout = "ShellAboutA"
+Const _FuncName_ShellExecute = "ShellExecuteA"
+Const _FuncName_SHFileOperation = "SHFileOperationA"
+Const _FuncName_SHGetPathFromIDList = "SHGetPathFromIDListA"
+#endif
 
 '-----------
 ' Shell API
 
-Declare Function DoEnvironmentSubst Lib "shell32" Alias "DoEnvironmentSubstA" (
+Declare Function DoEnvironmentSubst Lib "shell32" Alias _FuncName_DoEnvironmentSubst (
 	pszString As PSTR,
 	cchString As DWord
@@ -16,18 +43,18 @@
 Declare Sub DragAcceptFiles Lib "shell32" (hWnd As HWND, bAccept As BOOL)
 Declare Sub DragFinish Lib "shell32" (hDrop As HDROP)
-Declare Function DragQueryFile Lib "shell32" Alias "DragQueryFileA" (hDrop As HDROP, iFile As Long, lpszFile As PSTR, cch As DWord) As DWord
+Declare Function DragQueryFile Lib "shell32" Alias _FuncName_DragQueryFile (hDrop As HDROP, iFile As Long, lpszFile As LPTSTR, cch As DWord) As DWord
 Declare Function DragQueryPoint Lib "shell32" (hDrop As HDROP, ByRef lpPoint As POINTAPI) As Long
-Declare Function ExtractAssociatedIcon Lib "shell32" Alias "ExtractAssociatedIconA" (hInst As HINSTANCE, lpIconPath As PSTR, lpiIcon As *Word) As HICON
-Declare Function ExtractIcon Lib "shell32" Alias "ExtractIconA" (hInst As HINSTANCE, lpszExeFileName As PCSTR, nIconIndex As Long) As HICON
-Declare Function ExtractIconEx Lib "shell32" Alias "ExtractIconExA" (lpszFile As PCSTR, nIconIndex As Long, phiconLarge As *DWord, phiconSmall As *DWord, nIcons As Long) As HICON
-
-Declare Function FindExecutable Lib "shell32" Alias "FindExecutableA" (
-	pFile As PCSTR,
-	pDirectory As PCSTR,
-	pResult As PCSTR
+Declare Function ExtractAssociatedIcon Lib "shell32" Alias _FuncName_ExtractAssociatedIcon (hInst As HINSTANCE, lpIconPath As LPTSTR, lpiIcon As *Word) As HICON
+Declare Function ExtractIcon Lib "shell32" Alias _FuncName_ExtractIcon (hInst As HINSTANCE, lpszExeFileName As LPCTSTR, nIconIndex As Long) As HICON
+Declare Function ExtractIconEx Lib "shell32" Alias _FuncName_ExtractIconEx (lpszFile As PCSTR, nIconIndex As Long, phiconLarge As *DWord, phiconSmall As *DWord, nIcons As Long) As HICON
+
+Declare Function FindExecutable Lib "shell32" Alias _FuncName_FindExecutable (
+	pFile As PCTSTR,
+	pDirectory As PCTSTR,
+	pResult As PCTSTR
 ) As Long
 
-Declare Function GUIDFromString Lib "shell32" Alias "GUIDFromStringA" (
-	ByVal psz As PCSTR,
+Declare Function GUIDFromString Lib "shell32" Alias _FuncName_GUIDFromString (
+	ByVal psz As PCTSTR,
 	ByRef guid As GUID
 ) As BOOL
@@ -38,9 +65,9 @@
 Declare Function MIMEAssociationDialog Lib "url" (
 	hwndParent As HWND,
-    dwInFlags As DWord,
-    pcszFile As PCSTR,
-    pcszMIMEContentType As PCSTR,
-    pszAppBuf As PSTR,
-    ucAppBufLen As DWord
+	dwInFlags As DWord,
+	pcszFile As PCTSTR,
+	pcszMIMEContentType As PCTSTR,
+	pszAppBuf As PTSTR,
+	ucAppBufLen As DWord
 ) As HRESULT
 
@@ -95,9 +122,9 @@
 Typedef BFFCALLBACK = *Function(hwnd As HWND, uMsg As DWord, lParam As LPARAM, lpData As LPARAM) As Long
 
-Type BROWSEINFO
+Type BROWSEINFOW
 	hwndOwner      As HWND
 	pidlRoot       As VoidPtr
-	pszDisplayName As PSTR
-	lpszTitle      As PCSTR
+	pszDisplayName As LPWSTR
+	lpszTitle      As LPCWSTR
 	ulFlags        As DWord
 	lpfn           As BFFCALLBACK
@@ -105,4 +132,19 @@
 	iImage         As Long
 End Type
+Type BROWSEINFOA
+	hwndOwner      As HWND
+	pidlRoot       As VoidPtr
+	pszDisplayName As LPSTR
+	lpszTitle      As LPCSTR
+	ulFlags        As DWord
+	lpfn           As BFFCALLBACK
+	lParam         As LPARAM
+	iImage         As Long
+End Type
+#ifdef UNICODE
+TypeDef BROWSEINFO = BROWSEINFOW
+#else
+TypeDef BROWSEINFO = BROWSEINFOA
+#endif
 
 Type SHITEMID
@@ -114,5 +156,5 @@
 	mkid As SHITEMID
 End Type
-Declare Function SHBrowseForFolder Lib "shell32" Alias "SHBrowseForFolderA" (ByRef lpbi As BROWSEINFO) As *ITEMIDLIST
+Declare Function SHBrowseForFolder Lib "shell32" Alias _FuncName_SHBrowseForFolder (ByRef bi As BROWSEINFO) As *ITEMIDLIST
 
 Const SHCNE_RENAMEITEM          = &h00000001
@@ -175,5 +217,5 @@
 
 ' ShellApi.h
-Declare Function ShellAbout Lib "shell32" Alias "ShellAboutA" (hWnd As HWND, szApp As PCSTR, szOtherStuff As PCSTR, hIcon As HICON) As Long
+Declare Function ShellAbout Lib "shell32" Alias _FuncName_ShellAbout (hWnd As HWND, szApp As PCTSTR, szOtherStuff As PCTSTR, hIcon As HICON) As Long
 
 Const SE_ERR_FNF =             2
@@ -189,5 +231,5 @@
 Const SE_ERR_NOASSOC =         31
 ' ShellApi.h
-Declare Function ShellExecute Lib "shell32" Alias "ShellExecuteA" (hWnd As HWND, lpOperation As PCSTR, lpFile As PCSTR, lpParameters As PCSTR, lpDirectory As PCSTR, nShowCmd As Long) As HINSTANCE
+Declare Function ShellExecute Lib "shell32" Alias _FuncName_ShellExecute (hWnd As HWND, lpOperation As LPCTSTR, lpFile As LPCTSTR, lpParameters As LPCTSTR, lpDirectory As LPCTSTR, nShowCmd As Long) As HINSTANCE
 
 Const FO_MOVE =   &H0001
@@ -207,5 +249,15 @@
 Const FOF_NOERRORUI =             &H0400
 Const FOF_NOCOPYSECURITYATTRIBS = &H0800
-Type SHFILEOPSTRUCT
+Type SHFILEOPSTRUCTW
+	hWnd As HWND
+	wFunc As DWord
+	pFrom As PCWSTR
+	pTo As PCWSTR
+	fFlags As Word
+	fAnyOperationsAborted As BOOL
+	hNameMappings As VoidPtr
+	lpszProgressTitle As LPCWSTR
+End Type
+Type SHFILEOPSTRUCTA
 	hWnd As HWND
 	wFunc As DWord
@@ -215,8 +267,14 @@
 	fAnyOperationsAborted As BOOL
 	hNameMappings As VoidPtr
-	lpszProgressTitle As PCSTR
-End Type
-' ShellApi.h
-Declare Function SHFileOperation Lib "shell32" Alias "SHFileOperationA" (ByRef lpFileOp As SHFILEOPSTRUCT) As Long
+	lpszProgressTitle As LPCSTR
+End Type
+#ifdef UNICODE
+TypeDef SHFILEOPSTRUCT = SHFILEOPSTRUCTW
+#else
+TypeDef SHFILEOPSTRUCT = SHFILEOPSTRUCTA
+#endif
+
+' ShellApi.h
+Declare Function SHFileOperation Lib "shell32" Alias _FuncName_SHFileOperation (ByRef FileOp As SHFILEOPSTRUCT) As Long
 
 ' ShellApi.h
@@ -225,5 +283,5 @@
 'SHGetDataFromIDList
 
-Declare Function SHGetPathFromIDList Lib "shell32" Alias "SHGetPathFromIDListA" (pidl As *ITEMIDLIST, pszPath As PSTR) As Long
+Declare Function SHGetPathFromIDList Lib "shell32" Alias _FuncName_SHGetPathFromIDList (pidl As *ITEMIDLIST, pszPath As PTSTR) As Long
 
 #endif '_INC_SHELL
