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_
32#ifndef FAILED_UNEXPECTEDLY
33#define FAILED_UNEXPECTEDLY FAILED
70 if (!cchExpanded || cchExpanded >
cchDest)
73 INT cchEnvPath = cchExpanded - 1;
75 szBuff, cchEnvPath, lpString, cchEnvPath) !=
CSTR_EQUAL)
112 if (!cchExpanded || cchExpanded >
cchDest)
115 INT cchEnvPath = cchExpanded - 1;
117 szBuff, cchEnvPath, lpString, cchEnvPath) !=
CSTR_EQUAL)
144 static const PCSTR c_varsA[] =
156 if (pszBuff && cchBuff)
165 for (
size_t iVar = 0; iVar <
_countof(c_varsA); ++iVar)
190 static const PCWSTR c_varsW[] =
194 L"%ALLUSERSPROFILE%",
202 if (pszBuff && cchBuff)
211 for (
size_t iVar = 0; iVar <
_countof(c_varsW); ++iVar)
256 szBuff,
cch, lpString,
cch);
269 szDest,
cch, lpString,
cch);
315 CMINVOKECOMMANDINFOEX
info = {
sizeof(
info), fCMIC,
hWnd, pszVerb };
335 hr = pCM->QueryContextMenu(hMenu, 0, 1,
MAXSHORT, fCMF | CMF_DEFAULTONLY);
346 info.fMask |= CMF_OPTIMIZEFORINVOKE;
350 info.fMask |= CMIC_MASK_UNICODE;
351 info.lpVerbW = wideverb;
356 hr = pCM->QueryContextMenu(hMenu, 0, 1,
MAXSHORT, fCMF);
365 info.fMask |= CMIC_MASK_FLAG_NO_UI;
370 info.fMask |= CMIC_MASK_UNICODE;
371 info.lpDirectoryW = pwszDir;
376 hr = pCM->InvokeCommand((LPCMINVOKECOMMANDINFO)&
info);
423 for (
const signed char *
pch = (
const signed char *)psz; *
pch; ++
pch)
445 CMINVOKECOMMANDINFOEX ici;
461 hr = pCM->QueryContextMenu(hMenu, 0, 1,
MAXSHORT, (cVerbs ? 0 : CMF_DEFAULTONLY));
468 if (idDefault != (
UINT)-1)
473 ici.cbSize =
sizeof(ici);
481 pszVerbA = pVerbs[iVerb];
483 if (!pszVerbA && idDefault == (
UINT)-1)
490 ici.lpVerb = pszVerbA;
496 for (ich = 0; pszVerbA[ich] && ich + 1 <
_countof(szVerbW); ++ich)
498 szVerbW[ich] = (
BYTE)pszVerbA[ich];
502 ici.lpVerbW = szVerbW;
503 ici.fMask |= CMIC_MASK_UNICODE;
506 hr = pCM->InvokeCommand((LPCMINVOKECOMMANDINFO)&ici);
512 }
while (iVerb < cVerbs);
538 hr = pShellFolder->GetUIObjectOf(
hWnd, 1, &pidl, IID_IContextMenu,
NULL, (
void**)&pCM);
541 fCMIC |= CMIC_MASK_FLAG_LOG_USAGE;
635 cb =
sizeof(szClient);
639 cb =
sizeof(szClient);
666 TRACE(
"(%s, 0x%lX, %p)\n",
debugstr_w(pszPath), dwWhich, pdwFileAttributes);
668 if (pdwFileAttributes)
679 if (pdwFileAttributes)
684 if (pdwFileAttributes)
729 TRACE(
"(%p)->(%p, 0x%lX, %p, 0x%lX)\n", psf, pidl,
uFlags,
lpName, dwRetryFlags);
737 if ((
uFlags & SHGDN_FORPARSING) == 0)
744 if (!(dwRetryFlags &
pData->dwRetryFlags))
751 hr = psf->GetDisplayNameOf(pidl, uNewFlags,
lpName);
772 _In_ LPOLESTR lpszDisplayName,
777 ULONG dummy1, dummy2;
779 TRACE(
"(%p)->(%p, %p, %s, %p, %p, %p)\n", psf, hwndOwner, pbcReserved,
780 debugstr_w(lpszDisplayName), pchEaten, ppidl, pdwAttributes);
785 pdwAttributes = &dummy1;
797 return psf->ParseDisplayName(hwndOwner, pbcReserved, lpszDisplayName, pchEaten,
798 ppidl, pdwAttributes);
814 TRACE(
"(%p, %p, %p, %p)\n", psf,
lParam, pidl1, pidl2);
821 lParam &= SHCIDS_COLUMNMASK;
826 return psf->CompareIDs(
lParam, pidl1, pidl2);
921 PCSTR pchStart = pszStart;
922 while (*pchStart ==
';')
932 const UINT cchSegment = (
UINT)(pchEnd - pchStart);
941 return (*pchEnd ==
';') ? (pchEnd + 1) : pchEnd;
963 PCWSTR pchStart = pszStart;
964 while (*pchStart ==
L';')
974 const UINT cchSegment = (
UINT)(pchEnd - pchStart);
983 return (*pchEnd ==
L';') ? (pchEnd + 1) : pchEnd;
1034 CComVariant varClsid(szGUID), varShow((
bool)!!bShow), varSize;
1035 return pWB2->ShowBrowserBar(&varClsid, &varShow, &varSize);
1046 if (!pszTarget || !*pszTarget)
1050 PCWSTR pszList = pszCutList;
1051 PCWSTR pszAssoc =
L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileAssociation";
1053 pszList = pszFreeList;
1055 if (pszList && *pszList)
1057 for (
PCWSTR pszEntry = pszList; *pszEntry; pszEntry +=
lstrlenW(pszEntry) + 1)
1067 while (pszMatch > pszTarget && pszMatch[-1] ==
L' ')
1102 UINT cchDescription = 0;
1117 WCHAR szSubBlock[60];
1128 UINT cbTranslation = 0;
1129 if (
VerQueryValueW(pvBlock,
L"\\VarFileInfo\\Translation", &pTranslation,
1130 &cbTranslation) && cbTranslation)
1133 UINT codePage = ((
PWORD)pTranslation)[1];
1135 L"\\StringFileInfo\\%04X%04X\\FileDescription",
1145 L"\\StringFileInfo\\040904B0\\FileDescription");
1152 L"\\StringFileInfo\\040904E4\\FileDescription");
1159 L"\\StringFileInfo\\04090000\\FileDescription");
1167 if (!pszDescription || !*pszDescription)
1171 cchDescription =
lstrlenW(pszDescription);
1179 UINT cchCopy =
min(cchResult, *pcchOut);
1185 *pcchOut = cchResult;
1228 (pszDisplayName ? szDisplayNameW :
NULL), szOutW, &cchOutW);
#define PathUnExpandEnvStringsForUserW
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void shell(int argc, const char *argv[])
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
INT WINAPI StringFromGUID2(REFGUID guid, LPOLESTR str, INT cmax)
LPWSTR WINAPI StrChrW(LPCWSTR lpszStr, WCHAR ch)
LPSTR WINAPI StrChrA(LPCSTR lpszStr, WORD ch)
LPWSTR WINAPI StrRStrIW(LPCWSTR lpszStr, LPCWSTR lpszEnd, LPCWSTR lpszSearch)
#define ERROR_ACCESS_DENIED
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 PathRemoveExtensionW(WCHAR *path)
void WINAPI PathRemoveBlanksW(WCHAR *path)
void WINAPI PathRemoveBlanksA(char *path)
void WINAPI PathUnquoteSpacesW(WCHAR *path)
BOOL WINAPI PathIsUNCServerShareW(const WCHAR *path)
WCHAR *WINAPI PathFindFileNameW(const WCHAR *path)
LPWSTR WINAPI PathFindExtensionW(const WCHAR *path)
BOOL WINAPI PathIsUNCServerW(const WCHAR *path)
WCHAR *WINAPI PathGetArgsW(const WCHAR *path)
DWORD WINAPI GetVersion(void)
BOOL WINAPI GetFileVersionInfoW(LPCWSTR filename, DWORD handle, DWORD datasize, LPVOID data)
BOOL WINAPI VerQueryValueW(LPCVOID pBlock, LPCWSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen)
DWORD WINAPI GetFileVersionInfoSizeW(LPCWSTR filename, LPDWORD handle)
DWORD WINAPI SHGetValueW(HKEY hkey, const WCHAR *subkey, const WCHAR *value, DWORD *type, void *data, DWORD *data_len)
DWORD WINAPI SHAnsiToUnicode(const char *src, WCHAR *dest, int dest_len)
DWORD WINAPI SHUnicodeToAnsi(const WCHAR *src, char *dest, int dest_len)
HRESULT WINAPI IUnknown_SetSite(IUnknown *obj, IUnknown *site)
HINSTANCE shlwapi_hInstance
HRESULT WINAPI IUnknown_QueryServiceForWebBrowserApp(IUnknown *lpUnknown, REFGUID riid, LPVOID *lppOut)
void WINAPI PathRemoveArgsW(LPWSTR lpszPath)
BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR lpszPath, DWORD *dwAttr)
BOOL WINAPI PathFileExistsDefExtW(LPWSTR lpszPath, DWORD dwWhich)
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 INT WINAPI SHRestrictedMessageBox(_In_ HWND hWnd)
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 PSTR WINAPI NextPathA(_In_ PCSTR pszStart, _Out_writes_(cchDest) PSTR pszDest, _In_ UINT cchDest)
EXTERN_C PWSTR WINAPI CharLowerNoDBCSW(_Inout_ PWSTR lpString)
EXTERN_C ULONG WINAPI GetProcessOsVersion(void)
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)
VOID WINAPI PrettifyFileDescriptionW(_Inout_ PWSTR pszTarget, _In_opt_ PCWSTR pszCutList)
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 HRESULT WINAPI MapWin32ErrorToSTG(_In_ HRESULT hr)
EXTERN_C BOOL WINAPI IContextMenu_Invoke(_In_ IContextMenu *pContextMenu, _In_ HWND hwnd, _In_ LPCSTR lpVerb, _In_ UINT uFlags)
BOOL WINAPI SHGetFileDescriptionA(_In_ PCSTR pszPath, _In_opt_ PCSTR pszVerKey, _In_opt_ PCSTR pszDisplayName, _Out_opt_ PSTR pszOut, _Inout_ PUINT pcchOut)
BOOL WINAPI SHGetFileDescriptionW(_In_ PCWSTR pszPath, _In_opt_ PCWSTR pszVerKey, _In_opt_ PCWSTR pszDisplayName, _Out_opt_ PWSTR pszOut, _Inout_ PUINT pcchOut)
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)
EXTERN_C HRESULT WINAPI IUnknown_ShowBrowserBar(_In_ IUnknown *punk, _In_ REFGUID rguid, _In_ BOOL bShow)
#define IShellFolder_ParseDisplayName
#define IShellFolder_CompareIDs
static WORD GetVersionMajorMinor()
EXTERN_C PWSTR WINAPI NextPathW(_In_ PCWSTR pszStart, _Out_writes_(cchDest) PWSTR pszDest, _In_ UINT cchDest)
EXTERN_C PWSTR WINAPI CharUpperNoDBCSW(_Inout_ PWSTR lpString)
static HRESULT _AllocValueString(HKEY hkey, PCWSTR pszSubKey, PCWSTR pszValue, PWSTR *ppszOut)
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
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
#define SFGDNO_RETRYWITHFORPARSING
#define SFGDNO_RETRYALWAYS
int WINAPI lstrlenA(LPCSTR lpString)
#define ERROR_ALREADY_EXISTS
#define ERROR_FILE_NOT_FOUND
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
#define _In_reads_opt_(s)
#define FILE_ATTRIBUTE_DIRECTORY
#define LOCALE_SYSTEM_DEFAULT
interface IBindCtx * LPBC
_In_opt_ _In_opt_ _In_ _In_ DWORD cbData
_In_opt_ LPCSTR pszSubKey
_In_opt_ LPCSTR _In_opt_ LPCSTR pszValue
#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 ERROR_PATH_NOT_FOUND
#define STG_E_FILEALREADYEXISTS
#define STG_E_FILENOTFOUND
#define ERROR_FILE_EXISTS
#define STG_E_ACCESSDENIED
#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