/************************************************************************* * PathRemoveBlanks [SHELL32.33] */ void WINAPI PathRemoveBlanksAW(LPVOID str) { if(SHELL_OsIsUnicode()) PathRemoveBlanksW(str); else PathRemoveBlanksA(str); }
/************************************************************************* * PathQuoteSpaces [SHELL32.55] */ VOID WINAPI PathQuoteSpacesAW (LPVOID lpszPath) { if(SHELL_OsIsUnicode()) PathQuoteSpacesW(lpszPath); else PathQuoteSpacesA(lpszPath); }
/************************************************************************* * PathRemoveExtension [SHELL32.250] */ void WINAPI PathRemoveExtensionAW(LPVOID lpszPath) { if (SHELL_OsIsUnicode()) PathRemoveExtensionW(lpszPath); else PathRemoveExtensionA(lpszPath); }
/************************************************************************* * PathRemoveArgs [SHELL32.251] */ void WINAPI PathRemoveArgsAW(LPVOID lpszPath) { if (SHELL_OsIsUnicode()) PathRemoveArgsW(lpszPath); else PathRemoveArgsA(lpszPath); }
/************************************************************************* * PathStripPath [SHELL32.38] */ void WINAPI PathStripPathAW(LPVOID lpszPath) { if (SHELL_OsIsUnicode()) PathStripPathW(lpszPath); else PathStripPathA(lpszPath); }
/************************************************************************* * PathUnquoteSpaces [SHELL32.56] */ VOID WINAPI PathUnquoteSpacesAW(LPVOID str) { if(SHELL_OsIsUnicode()) PathUnquoteSpacesW(str); else PathUnquoteSpacesA(str); }
/************************************************************************* * PathSetDlgItemPath (SHELL32.48) */ VOID WINAPI PathSetDlgItemPathAW(HWND hDlg, int id, LPCVOID pszPath) { if (SHELL_OsIsUnicode()) PathSetDlgItemPathW(hDlg, id, pszPath); else PathSetDlgItemPathA(hDlg, id, pszPath); }
BOOL WINAPI FileMenu_AppendItemAW( HMENU hMenu, LPCVOID lpText, UINT uID, int icon, HMENU hMenuPopup, int nItemHeight) { BOOL ret; if (!lpText) return FALSE; if (SHELL_OsIsUnicode() || lpText == FM_SEPARATOR) ret = FileMenu_AppendItemW(hMenu, lpText, uID, icon, hMenuPopup, nItemHeight); else { DWORD len = MultiByteToWideChar( CP_ACP, 0, lpText, -1, NULL, 0 ); LPWSTR lpszText = HeapAlloc ( GetProcessHeap(), 0, len*sizeof(WCHAR) ); if (!lpszText) return FALSE; MultiByteToWideChar( CP_ACP, 0, lpText, -1, lpszText, len ); ret = FileMenu_AppendItemW(hMenu, lpszText, uID, icon, hMenuPopup, nItemHeight); HeapFree( GetProcessHeap(), 0, lpszText ); } return ret; }
/************************************************************************* * SHInitRestricted [SHELL32.244] * * Initialise the policy cache to speed up calls to SHRestricted(). * * PARAMS * unused [I] Reserved. * inpRegKey [I] Registry key to scan. * * RETURNS * Success: -1. The policy cache is initialised. * Failure: 0, if inpRegKey is any value other than NULL, "Policy", or * "Software\Microsoft\Windows\CurrentVersion\Policies". * * NOTES * Exported by ordinal. Introduced in Win98. */ BOOL WINAPI SHInitRestricted(LPCVOID unused, LPCVOID inpRegKey) { TRACE("(%p, %p)\n", unused, inpRegKey); /* first check - if input is non-NULL and points to the secret key string, then pass. Otherwise return 0. */ if (inpRegKey != NULL) { if (SHELL_OsIsUnicode()) { if (lstrcmpiW((LPCWSTR)inpRegKey, strRegistryPolicyW) && lstrcmpiW((LPCWSTR)inpRegKey, strPolicyW)) /* doesn't match, fail */ return 0; } else { if (lstrcmpiA((LPCSTR)inpRegKey, strRegistryPolicyA) && lstrcmpiA((LPCSTR)inpRegKey, strPolicyA)) /* doesn't match, fail */ return 0; } } return TRUE; }
/************************************************************************* * StrRetToStrN [SHELL32.96] * * converts a STRRET to a normal string * * NOTES * the pidl is for STRRET OFFSET */ BOOL WINAPI StrRetToStrNAW(LPVOID dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl) { if(SHELL_OsIsUnicode()) return StrRetToStrNW(dest, len, src, pidl); else return StrRetToStrNA(dest, len, src, pidl); }
/************************************************************************* * PathFindExtension [SHELL32.31] */ LPVOID WINAPI PathFindExtensionAW(LPCVOID lpszPath) { if (SHELL_OsIsUnicode()) return PathFindExtensionW(lpszPath); return PathFindExtensionA(lpszPath); }
/************************************************************************* * PathAppend [SHELL32.36] */ BOOL WINAPI PathAppendAW( LPVOID lpszPath1, LPCVOID lpszPath2) { if (SHELL_OsIsUnicode()) return PathAppendW(lpszPath1, lpszPath2); return PathAppendA(lpszPath1, lpszPath2); }
/************************************************************************* * PathCombine [SHELL32.37] */ LPVOID WINAPI PathCombineAW( LPVOID szDest, LPCVOID lpszDir, LPCVOID lpszFile) { if (SHELL_OsIsUnicode()) return PathCombineW( szDest, lpszDir, lpszFile ); return PathCombineA( szDest, lpszDir, lpszFile ); }
/************************************************************************* * PathResolve [SHELL32.51] */ BOOL WINAPI PathResolveAW( LPVOID lpszPath, LPCVOID *alpszPaths, DWORD dwFlags) { if (SHELL_OsIsUnicode()) return PathResolveW(lpszPath, (LPCWSTR*)alpszPaths, dwFlags); return PathResolveA(lpszPath, (LPCSTR*)alpszPaths, dwFlags); }
/************************************************************************* * PathProcessCommand (SHELL32.653) */ HRESULT WINAPI PathProcessCommandAW ( LPCVOID lpszPath, LPVOID lpszBuff, DWORD dwBuffSize, DWORD dwFlags) { if (SHELL_OsIsUnicode()) return PathProcessCommandW(lpszPath, lpszBuff, dwBuffSize, dwFlags); return PathProcessCommandA(lpszPath, lpszBuff, dwBuffSize, dwFlags); }
/************************************************************************* * PathMakeUniqueName [SHELL32.47] */ BOOL WINAPI PathMakeUniqueNameAW( LPVOID lpszBuffer, DWORD dwBuffSize, LPCVOID lpszShortName, LPCVOID lpszLongName, LPCVOID lpszPathName) { if (SHELL_OsIsUnicode()) return PathMakeUniqueNameW(lpszBuffer,dwBuffSize, lpszShortName,lpszLongName,lpszPathName); return PathMakeUniqueNameA(lpszBuffer,dwBuffSize, lpszShortName,lpszLongName,lpszPathName); }
/************************************************************************* * SHGetSpecialFolderPath (SHELL32.175) */ BOOL WINAPI SHGetSpecialFolderPathAW ( HWND hwndOwner, LPVOID szPath, DWORD csidl, BOOL bCreate) { if (SHELL_OsIsUnicode()) return SHGetSpecialFolderPathW (hwndOwner, szPath, csidl, bCreate); return SHGetSpecialFolderPathA (hwndOwner, szPath, csidl, bCreate); }
HRESULT SHELL32_GetColumnDetails(const shvheader *data, int column, SHELLDETAILS *details) { details->fmt = data[column].fmt; details->cxChar = data[column].cxChar; if (SHELL_OsIsUnicode()) { details->str.u.pOleStr = CoTaskMemAlloc(MAX_PATH * sizeof(WCHAR)); if (!details->str.u.pOleStr) return E_OUTOFMEMORY; details->str.uType = STRRET_WSTR; LoadStringW(shell32_hInstance, data[column].colnameid, details->str.u.pOleStr, MAX_PATH); } else { details->str.uType = STRRET_CSTR; LoadStringA(shell32_hInstance, data[column].colnameid, details->str.u.cStr, MAX_PATH); } return S_OK; }
BOOL WINAPI StrToOleStrNAW (LPWSTR lpWide, INT nWide, LPCVOID lpStr, INT nStr) { if (SHELL_OsIsUnicode()) return StrToOleStrNW (lpWide, nWide, lpStr, nStr); return StrToOleStrNA (lpWide, nWide, lpStr, nStr); }
BOOL WINAPI StrToOleStrAW (LPWSTR lpWideCharStr, LPCVOID lpString) { if (SHELL_OsIsUnicode()) return StrToOleStrW (lpWideCharStr, lpString); return StrToOleStrA (lpWideCharStr, lpString); }
DWORD WINAPI SHCLSIDFromStringAW (LPCVOID clsid, CLSID *id) { if (SHELL_OsIsUnicode()) return SHCLSIDFromStringW (clsid, id); return SHCLSIDFromStringA (clsid, id); }
EXTERN_C BOOL WINAPI OleStrToStrNAW (LPVOID lpOut, INT nOut, LPCVOID lpIn, INT nIn) { if (SHELL_OsIsUnicode()) return OleStrToStrNW ((LPWSTR)lpOut, nOut, (LPCWSTR)lpIn, nIn); return OleStrToStrNA ((LPSTR)lpOut, nOut, (LPCWSTR)lpIn, nIn); }
BOOL WINAPI OleStrToStrNAW (LPVOID lpOut, INT nOut, LPCVOID lpIn, INT nIn) { if (SHELL_OsIsUnicode()) return OleStrToStrNW (lpOut, nOut, lpIn, nIn); return OleStrToStrNA (lpOut, nOut, lpIn, nIn); }
/************************************************************************* * PathFindFileName [SHELL32.34] */ LPVOID WINAPI PathFindFileNameAW(LPCVOID lpszPath) { if(SHELL_OsIsUnicode()) return PathFindFileNameW(lpszPath); return PathFindFileNameA(lpszPath); }
static void test_printers_folder(void) { IShellFolder2 *folder; IPersistFolder2 *pf; SHELLDETAILS details; SHCOLSTATEF state; LPITEMIDLIST pidl1, pidl2; HRESULT hr; INT i; CoInitialize( NULL ); hr = CoCreateInstance(&CLSID_Printers, NULL, CLSCTX_INPROC_SERVER, &IID_IShellFolder2, (void**)&folder); if (hr != S_OK) { win_skip("Failed to created IShellFolder2 for Printers folder\n"); CoUninitialize(); return; } if (0) { /* crashes on XP */ hr = IShellFolder2_GetDetailsOf(folder, NULL, 0, NULL); hr = IShellFolder2_GetDefaultColumnState(folder, 0, NULL); hr = IPersistFolder2_GetCurFolder(pf, NULL); } /* 5 columns defined */ hr = IShellFolder2_GetDetailsOf(folder, NULL, 6, &details); ok(hr == E_NOTIMPL, "got 0x%08x\n", hr); hr = IShellFolder2_GetDefaultColumnState(folder, 6, &state); ok(broken(hr == E_NOTIMPL) || hr == E_INVALIDARG /* Win7 */, "got 0x%08x\n", hr); hr = IShellFolder2_GetDetailsOf(folder, NULL, 0, &details); ok(hr == S_OK || broken(E_NOTIMPL) /* W2K */, "got 0x%08x\n", hr); /* test every column if method is implemented */ if (hr == S_OK) { ok(details.str.uType == STRRET_WSTR, "got %d\n", details.str.uType); for(i = 0; i < 6; i++) { hr = IShellFolder2_GetDetailsOf(folder, NULL, i, &details); ok(hr == S_OK, "got 0x%08x\n", hr); /* all columns are left-aligned */ ok(details.fmt == LVCFMT_LEFT, "got 0x%x\n", details.fmt); /* can't be on w9x at this point, IShellFolder2 unsupported there, check present for running Wine with w9x setup */ if (SHELL_OsIsUnicode()) SHFree(details.str.u.pOleStr); hr = IShellFolder2_GetDefaultColumnState(folder, i, &state); ok(hr == S_OK, "got 0x%08x\n", hr); /* all columns are string except document count */ if (i == 1) ok(state == (SHCOLSTATE_TYPE_INT | SHCOLSTATE_ONBYDEFAULT), "got 0x%x\n", state); else ok(state == (SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT), "got 0x%x\n", state); } } /* default pidl */ hr = IShellFolder2_QueryInterface(folder, &IID_IPersistFolder2, (void**)&pf); ok(hr == S_OK, "got 0x%08x\n", hr); /* not initialized */ pidl1 = (void*)0xdeadbeef; hr = IPersistFolder2_GetCurFolder(pf, &pidl1); ok(hr == S_FALSE, "got 0x%08x\n", hr); ok(pidl1 == NULL, "got %p\n", pidl1); hr = SHGetSpecialFolderLocation(NULL, CSIDL_PRINTERS, &pidl2); ok(hr == S_OK, "got 0x%08x\n", hr); hr = IPersistFolder2_Initialize(pf, pidl2); ok(hr == S_OK, "got 0x%08x\n", hr); hr = IPersistFolder2_GetCurFolder(pf, &pidl1); ok(hr == S_OK, "got 0x%08x\n", hr); ok(ILIsEqual(pidl1, pidl2), "expected same PIDL\n"); IPersistFolder2_Release(pf); ILFree(pidl1); ILFree(pidl2); IShellFolder2_Release(folder); CoUninitialize(); }
/************************************************************************* * PathAddBackslash [SHELL32.32] */ LPVOID WINAPI PathAddBackslashAW(LPVOID lpszPath) { if(SHELL_OsIsUnicode()) return PathAddBackslashW(lpszPath); return PathAddBackslashA(lpszPath); }
EXTERN_C DWORD WINAPI SHCLSIDFromStringAW (LPCVOID clsid, CLSID *id) { if (SHELL_OsIsUnicode()) return SHCLSIDFromStringW ((LPCWSTR)clsid, id); return SHCLSIDFromStringA ((LPCSTR)clsid, id); }
/************************************************************************* * ExtractIconEx [SHELL32.@] */ HICON WINAPI ExtractIconExAW ( LPCVOID lpszFile, INT nIconIndex, HICON * phiconLarge, HICON * phiconSmall, UINT nIcons ) { if (SHELL_OsIsUnicode()) return ExtractIconExW ( lpszFile, nIconIndex, phiconLarge, phiconSmall, nIcons); return ExtractIconExA ( lpszFile, nIconIndex, phiconLarge, phiconSmall, nIcons); }
INT WINAPI Shell_GetCachedImageIndexAW(LPCVOID szPath, INT nIndex, BOOL bSimulateDoc) { if( SHELL_OsIsUnicode()) return Shell_GetCachedImageIndexW(szPath, nIndex, bSimulateDoc); return Shell_GetCachedImageIndexA(szPath, nIndex, bSimulateDoc); }
/************************************************************************* * PathBuildRoot [SHELL32.30] */ LPVOID WINAPI PathBuildRootAW(LPVOID lpszPath, int drive) { if(SHELL_OsIsUnicode()) return PathBuildRootW(lpszPath, drive); return PathBuildRootA(lpszPath, drive); }