/************************************************************************* * SHEmptyRecycleBinA (SHELL32.@) */ HRESULT WINAPI SHEmptyRecycleBinA(HWND hwnd, LPCSTR pszRootPath, DWORD dwFlags) { LPWSTR szRootPathW = NULL; int len; HRESULT hr; TRACE("%p, %s, 0x%08x\n", hwnd, debugstr_a(pszRootPath), dwFlags); if (pszRootPath) { len = MultiByteToWideChar(CP_ACP, 0, pszRootPath, -1, NULL, 0); if (len == 0) return HRESULT_FROM_WIN32(GetLastError()); szRootPathW = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); if (!szRootPathW) return E_OUTOFMEMORY; if (MultiByteToWideChar(CP_ACP, 0, pszRootPath, -1, szRootPathW, len) == 0) { HeapFree(GetProcessHeap(), 0, szRootPathW); return HRESULT_FROM_WIN32(GetLastError()); } } hr = SHEmptyRecycleBinW(hwnd, szRootPathW, dwFlags); HeapFree(GetProcessHeap(), 0, szRootPathW); return hr; }
HRESULT WINAPI CRecycleBin::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi) { HRESULT hr; LPSHELLBROWSER lpSB; IShellView * lpSV = NULL; TRACE("%p %p verb %p\n", this, lpcmi, lpcmi->lpVerb); if (LOWORD(lpcmi->lpVerb) == iIdEmpty) { // FIXME // path & flags hr = SHEmptyRecycleBinW(lpcmi->hwnd, L"C:\\", 0); TRACE("result %x\n", hr); if (hr != S_OK) return hr; lpSB = (LPSHELLBROWSER)SendMessageA(lpcmi->hwnd, CWM_GETISHELLBROWSER, 0, 0); if (lpSB && SUCCEEDED(lpSB->QueryActiveShellView(&lpSV))) lpSV->Refresh(); } return S_OK; }
HRESULT WINAPI SHEmptyRecycleBinA(HWND hwnd, LPCSTR pszRootPath, DWORD dwFlags) { WCHAR wszRootPath[MAX_PATH]; MultiByteToWideChar(CP_ACP, 0, pszRootPath, -1, wszRootPath, MAX_PATH); return SHEmptyRecycleBinW(hwnd, wszRootPath, dwFlags); }