8#define _ATL_NO_EXCEPTIONS
13#define IShellFolder_GetDisplayNameOf _disabled_IShellFolder_GetDisplayNameOf_
14#define IShellFolder_ParseDisplayName _disabled_IShellFolder_ParseDisplayName_
15#define IShellFolder_CompareIDs _disabled_IShellFolder_CompareIDs_
30#ifndef FAILED_UNEXPECTEDLY
31#define FAILED_UNEXPECTEDLY FAILED
68 if (!cchExpanded || cchExpanded >
cchDest)
71 INT cchEnvPath = cchExpanded - 1;
73 szBuff, cchEnvPath, lpString, cchEnvPath) !=
CSTR_EQUAL)
110 if (!cchExpanded || cchExpanded >
cchDest)
113 INT cchEnvPath = cchExpanded - 1;
115 szBuff, cchEnvPath, lpString, cchEnvPath) !=
CSTR_EQUAL)
142 static const PCSTR c_varsA[] =
154 if (pszBuff && cchBuff)
163 for (
size_t iVar = 0; iVar <
_countof(c_varsA); ++iVar)
188 static const PCWSTR c_varsW[] =
192 L"%ALLUSERSPROFILE%",
200 if (pszBuff && cchBuff)
209 for (
size_t iVar = 0; iVar <
_countof(c_varsW); ++iVar)
231 szBuff,
cch, lpString,
cch);
244 szDest,
cch, lpString,
cch);
290 CMINVOKECOMMANDINFOEX
info = {
sizeof(
info), fCMIC,
hWnd, pszVerb };
310 hr = pCM->QueryContextMenu(hMenu, 0, 1,
MAXSHORT, fCMF | CMF_DEFAULTONLY);
321 info.fMask |= CMF_OPTIMIZEFORINVOKE;
325 info.fMask |= CMIC_MASK_UNICODE;
326 info.lpVerbW = wideverb;
331 hr = pCM->QueryContextMenu(hMenu, 0, 1,
MAXSHORT, fCMF);
340 info.fMask |= CMIC_MASK_FLAG_NO_UI;
345 info.fMask |= CMIC_MASK_UNICODE;
346 info.lpDirectoryW = pwszDir;
351 hr = pCM->InvokeCommand((LPCMINVOKECOMMANDINFO)&
info);
398 for (
const signed char *
pch = (
const signed char *)psz; *
pch; ++
pch)
420 CMINVOKECOMMANDINFOEX ici;
436 hr = pCM->QueryContextMenu(hMenu, 0, 1,
MAXSHORT, (cVerbs ? 0 : CMF_DEFAULTONLY));
443 if (idDefault != (
UINT)-1)
448 ici.cbSize =
sizeof(ici);
456 pszVerbA = pVerbs[iVerb];
458 if (!pszVerbA && idDefault == (
UINT)-1)
465 ici.lpVerb = pszVerbA;
471 for (ich = 0; pszVerbA[ich] && ich + 1 <
_countof(szVerbW); ++ich)
473 szVerbW[ich] = (
BYTE)pszVerbA[ich];
477 ici.lpVerbW = szVerbW;
478 ici.fMask |= CMIC_MASK_UNICODE;
481 hr = pCM->InvokeCommand((LPCMINVOKECOMMANDINFO)&ici);
487 }
while (iVerb < cVerbs);
513 hr = pShellFolder->GetUIObjectOf(
hWnd, 1, &pidl, IID_IContextMenu,
NULL, (
void**)&pCM);
516 fCMIC |= CMIC_MASK_FLAG_LOG_USAGE;
610 cb =
sizeof(szClient);
614 cb =
sizeof(szClient);
641 TRACE(
"(%s, 0x%lX, %p)\n",
debugstr_w(pszPath), dwWhich, pdwFileAttributes);
643 if (pdwFileAttributes)
654 if (pdwFileAttributes)
659 if (pdwFileAttributes)
704 TRACE(
"(%p)->(%p, 0x%lX, %p, 0x%lX)\n", psf, pidl,
uFlags,
lpName, dwRetryFlags);
712 if ((
uFlags & SHGDN_FORPARSING) == 0)
719 if (!(dwRetryFlags &
pData->dwRetryFlags))
726 hr = psf->GetDisplayNameOf(pidl, uNewFlags,
lpName);
752 ULONG dummy1, dummy2;
754 TRACE(
"(%p)->(%p, %p, %s, %p, %p, %p)\n", psf, hwndOwner, pbcReserved,
755 debugstr_w(lpszDisplayName), pchEaten, ppidl, pdwAttributes);
760 pdwAttributes = &dummy1;
772 return psf->ParseDisplayName(hwndOwner, pbcReserved, lpszDisplayName, pchEaten,
773 ppidl, pdwAttributes);
789 TRACE(
"(%p, %p, %p, %p)\n", psf,
lParam, pidl1, pidl2);
796 lParam &= SHCIDS_COLUMNMASK;
801 return psf->CompareIDs(
lParam, pidl1, pidl2);
#define PathUnExpandEnvStringsForUserW
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void shell(int argc, const char *argv[])
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
static const WCHAR version[]
DWORD WINAPI ExpandEnvironmentStringsA(IN LPCSTR lpSrc, IN LPSTR lpDst, IN DWORD nSize)
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
INT WINAPI LCMapStringA(LCID lcid, DWORD flags, LPCSTR src, INT srclen, LPSTR dst, INT dstlen)
INT WINAPI CompareStringA(LCID lcid, DWORD flags, LPCSTR str1, INT len1, LPCSTR str2, INT len2)
INT WINAPI CompareStringW(LCID lcid, DWORD flags, LPCWSTR str1, INT len1, LPCWSTR str2, INT len2)
INT WINAPI LCMapStringW(LCID lcid, DWORD flags, LPCWSTR src, INT srclen, LPWSTR dst, INT dstlen)
#define IS_INTRESOURCE(x)
void WINAPI PathUnquoteSpacesW(WCHAR *path)
LPWSTR WINAPI PathFindExtensionW(const WCHAR *path)
WCHAR *WINAPI PathGetArgsW(const WCHAR *path)
DWORD WINAPI GetVersion(void)
HRESULT WINAPI IUnknown_SetSite(IUnknown *obj, IUnknown *site)
void WINAPI PathRemoveArgsW(LPWSTR lpszPath)
BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR lpszPath, DWORD *dwAttr)
BOOL WINAPI PathFileExistsDefExtW(LPWSTR lpszPath, DWORD dwWhich)
DWORD WINAPI SHAnsiToUnicode(LPCSTR lpSrcStr, LPWSTR lpDstStr, int iLen)
INT WINAPI SHUnicodeToAnsi(LPCWSTR lpSrcStr, LPSTR lpDstStr, INT iLen)
EXTERN_C HRESULT WINAPI RunRegCommand(_In_opt_ HWND hWnd, _In_ HKEY hKey, _In_opt_ PCWSTR pszSubKey)
EXTERN_C HRESULT WINAPI SHInvokeCommandOnContextMenu(_In_opt_ HWND hWnd, _In_opt_ IUnknown *pUnk, _In_ IContextMenu *pCM, _In_ UINT fCMIC, _In_opt_ LPCSTR pszVerb)
EXTERN_C LSTATUS WINAPI RegGetValueW(HKEY, LPCWSTR, LPCWSTR, DWORD, LPDWORD, PVOID, LPDWORD)
static BOOL IsTextAsciiOnly(PCSTR psz)
EXTERN_C BOOL WINAPI PathUnExpandEnvStringsForUserA(_In_ HANDLE hUserToken, _In_ PCSTR pszPath, _Out_writes_(cchBuff) PSTR pszBuff, _In_ INT cchBuff)
struct tagSHDIALOG * PSHDIALOG
EXTERN_C HRESULT WINAPI RunIndirectRegCommand(_In_opt_ HWND hWnd, _In_ HKEY hKey, _In_opt_ PCWSTR pszSubKey, _In_ PCWSTR pszVerb)
static HRESULT ShellExecuteCommand(_In_opt_ HWND hWnd, _In_ PCWSTR Command, _In_opt_ UINT Flags)
EXTERN_C HRESULT WINAPI SHInvokeCommandWithFlagsAndSite(_In_opt_ HWND hWnd, _In_opt_ IUnknown *pUnk, _In_ IShellFolder *pShellFolder, _In_ LPCITEMIDLIST pidl, _In_ UINT fCMIC, _In_opt_ LPCSTR pszVerb)
EXTERN_C PWSTR WINAPI CharLowerNoDBCSW(_Inout_ PWSTR lpString)
static BOOL UnExpandEnvironmentStringForUserA(_In_ HANDLE hUserToken, _In_ PCSTR lpString, _In_ PCSTR lpSrc, _Out_ PSTR pszDest, _In_ INT cchDest)
EXTERN_C INT_PTR WINAPI SHDialogBox(_In_opt_ HINSTANCE hInstance, _In_ PCSTR lpTemplateName, _In_opt_ HWND hWndParent, _In_opt_ SHDIALOGPROC fn, _In_opt_ PVOID pThis)
EXTERN_C PSTR WINAPI CharUpperNoDBCSA(_Inout_ PSTR lpString)
static BOOL UnExpandEnvironmentStringForUserW(_In_ HANDLE hUserToken, _In_ PCWSTR lpString, _In_ PCWSTR lpSrc, _Out_ PWSTR pszDest, _In_ INT cchDest)
EXTERN_C HRESULT WINAPI SHInvokeCommandOnContextMenuEx(_In_opt_ HWND hWnd, _In_opt_ IUnknown *pUnk, _In_ IContextMenu *pCM, _In_ UINT fCMIC, _In_ UINT fCMF, _In_opt_ LPCSTR pszVerb, _In_opt_ LPCWSTR pwszDir)
EXTERN_C BOOL WINAPI IContextMenu_Invoke(_In_ IContextMenu *pContextMenu, _In_ HWND hwnd, _In_ LPCSTR lpVerb, _In_ UINT uFlags)
EXTERN_C PSTR WINAPI CharLowerNoDBCSA(_Inout_ PSTR lpString)
static const RETRY_DATA g_RetryData[]
EXTERN_C HRESULT WINAPI SHInvokeCommandsOnContextMenu(_In_opt_ HWND hwnd, _In_opt_ IUnknown *punkSite, _In_ IContextMenu *pCM, _In_ DWORD fMask, _In_reads_opt_(cVerbs) PCSTR *pVerbs, _In_ UINT cVerbs)
struct tagSHDIALOG SHDIALOG
static BOOL CharLowerNoDBCSWWorker(PWSTR lpString, INT cchMax, BOOL bUppercase)
static HRESULT SHInvokeCommandOnContextMenuInternal(_In_opt_ HWND hWnd, _In_opt_ IUnknown *pUnk, _In_ IContextMenu *pCM, _In_ UINT fCMIC, _In_ UINT fCMF, _In_opt_ LPCSTR pszVerb, _In_opt_ LPCWSTR pwszDir, _In_ bool ForceQCM)
#define FAILED_UNEXPECTEDLY
static BOOL CharLowerNoDBCSAWorker(PSTR lpString, INT cchMax, BOOL bUppercase)
EXTERN_C HRESULT WINAPI SHRunIndirectRegClientCommand(_In_opt_ HWND hWnd, _In_ PCWSTR pszClientType)
#define IShellFolder_ParseDisplayName
#define IShellFolder_CompareIDs
static WORD GetVersionMajorMinor()
EXTERN_C PWSTR WINAPI CharUpperNoDBCSW(_Inout_ PWSTR lpString)
BOOL WINAPI PathFileExistsDefExtAndAttributesW(_Inout_ LPWSTR pszPath, _In_ DWORD dwWhich, _Out_opt_ LPDWORD pdwFileAttributes)
static INT_PTR CALLBACK SHDialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
#define IShellFolder_GetDisplayNameOf
static BOOL SHLWAPI_IsBogusHRESULT(HRESULT hr)
BOOL WINAPI ExpandEnvironmentStringsForUserW(IN HANDLE hToken, IN LPCWSTR lpSrc, OUT LPWSTR lpDest, IN DWORD dwSize)
BOOL WINAPI ExpandEnvironmentStringsForUserA(IN HANDLE hToken, IN LPCSTR lpSrc, OUT LPSTR lpDest, IN DWORD dwSize)
static const WCHAR Cleanup[]
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
#define SFGDNO_RETRYWITHFORPARSING
#define SFGDNO_RETRYALWAYS
int WINAPI lstrlenA(LPCSTR lpString)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
#define _In_reads_opt_(s)
#define LOCALE_SYSTEM_DEFAULT
interface IBindCtx * LPBC
_In_opt_ LPCSTR pszSubKey
#define _WIN32_WINNT_WIN7
#define SEE_MASK_FLAG_LOG_USAGE
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
#define PPCF_FORCEQUALIFY
LONG WINAPI PathProcessCommand(_In_ LPCWSTR, _Out_writes_(cchDest) LPWSTR, int cchDest, DWORD)
#define PPCF_ADDARGUMENTS
INT_PTR(CALLBACK * SHDIALOGPROC)(PVOID pThis, HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
const ITEMIDLIST_RELATIVE UNALIGNED * PCUIDLIST_RELATIVE
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
STRSAFEAPI StringCchCatA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc)
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCchCopyA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc)
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
#define INVALID_FILE_ATTRIBUTES
static GLenum _GLUfuncptr fn
DWORD WINAPI GetLastError(void)
#define ERROR_BUFFER_OVERFLOW
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
#define SetWindowLongPtrA
HMENU WINAPI CreatePopupMenu(void)
UINT WINAPI GetMenuDefaultItem(_In_ HMENU hMenu, _In_ UINT fByPos, _In_ UINT gmdiFlags)
#define DLGC_UNDEFPUSHBUTTON
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
#define GetWindowLongPtrA
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
#define DLGC_DEFPUSHBUTTON
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define MAKEINTRESOURCEA(i)
BOOL WINAPI DestroyMenu(_In_ HMENU)
#define MAKEINTRESOURCEW(i)
INT_PTR WINAPI DialogBoxParamA(_In_opt_ HINSTANCE, _In_ LPCSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
_Must_inspect_result_ _In_ ULONG Flags