30 #define SEE_MASK_CLASSALL (SEE_MASK_CLASSNAME | SEE_MASK_CLASSKEY) 37 bool firstCharQuote =
false;
38 bool quotes_opened =
false;
39 bool backslash_encountered =
false;
41 for (
int curArg = 0; curArg <= argNum && *
args; ++curArg)
43 firstCharQuote =
false;
47 firstCharQuote =
true;
56 backslash_encountered = !backslash_encountered;
58 else if (*
args ==
'"')
62 if (*(
args + 1) !=
'"')
64 quotes_opened =
false;
78 backslash_encountered =
false;
82 backslash_encountered =
false;
83 if (*
args ==
' ' && !firstCharQuote)
104 bool quotes_opened =
false;
105 bool backslash_encountered =
false;
107 for (
int curArg = 0; curArg <= argNum && *
args; ++curArg)
114 backslash_encountered = !backslash_encountered;
116 else if (*
args ==
'"')
120 if (*(
args + 1) !=
'"')
122 quotes_opened =
false;
131 quotes_opened =
true;
134 backslash_encountered =
false;
138 backslash_encountered =
false;
139 if (*
args ==
' ' && !quotes_opened && curArg != argNum)
143 if (curArg == argNum)
192 bool tildeEffect =
false;
268 if (!done || (*
fmt ==
'1'))
355 ERR(
"pidl format buffer too small!\n");
377 WCHAR tmpBuffer[1024];
378 PWSTR tmpB = tmpBuffer;
389 if (envRet == 0 || envRet >
MAX_PATH)
452 hr = desktop->GetDisplayNameOf(pidl, SHGDN_FORPARSING, &strret);
473 DWORD dwCreationFlags;
504 startup.dwFlags |= STARTF_TITLEISLINKNAME;
524 WARN(
"CreateProcess returned error %ld\n", retval);
528 TRACE(
"returning %lu\n", retval);
562 if (!got_path)
total += 5;
614 wcscpy(
buffer,
L"Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\");
681 commandlen /=
sizeof(
WCHAR);
701 paramlen /=
sizeof(
WCHAR);
704 commandlen += paramlen;
755 WARN(
"(lpFile=%s,lpResult=%s): NULL parameter\n",
768 TRACE(
"SearchPathW returned non-zero\n");
774 TRACE(
"SearchPathW returned non-zero\n");
789 TRACE(
"Returning SE_ERR_FNF\n");
793 extension =
wcsrchr(xlpFile,
'.');
798 if (extension ==
NULL || extension[1] == 0)
800 WARN(
"Returning SE_ERR_NOASSOC\n");
822 while (*
p && *
p !=
' ' && *
p !=
'\t')
p++;
826 while (*
p ==
' ' || *
p ==
'\t')
p++;
829 if (
wcsicmp(tok, &extension[1]) == 0)
831 wcscpy(lpResult, xlpFile);
846 classnamelen /=
sizeof(
WCHAR);
868 if (finishedLen > resultLen)
869 ERR(
"Argify buffer not large enough.. truncated\n");
871 if (*lpResult ==
'"')
874 while (*(
p + 1) !=
'"')
885 while (*
p !=
' ' && *
p !=
'\0')
900 tok =
wcschr(lpResult,
'^');
904 wcscat(lpResult, xlpFile);
908 wcscat(lpResult, &tok[5]);
926 HSZ hsz1, HSZ hsz2, HDDEDATA hData,
929 TRACE(
"dde_cb: %04x, %04x, %p, %p, %p, %p, %08lx, %08lx\n",
930 uType, uFmt, hConv, hsz1, hsz2, hData, dwData1, dwData2);
950 WCHAR app[256],
topic[256], ifexec[256], static_res[256];
953 LONG applen, topiclen, ifexeclen;
957 DWORD resultLen, endkeyLen;
970 endkeyLen =
ARRAY_SIZE(regkey) - (endkey - regkey);
971 if (
strlenW(
L"\\application") + 1 > endkeyLen)
976 wcscpy(endkey,
L"\\application");
977 applen =
sizeof(app);
989 FIXME(
"size of input parameter %s larger than buffer\n",
1036 if (
strlenW(
L"\\topic") + 1 > endkeyLen)
1042 topiclen =
sizeof(
topic);
1070 TRACE(
"Couldn't launch\n");
1074 if (ddeexec ==
NULL)
1076 TRACE(
"Exiting because ddeexec is NULL. ret=42.\n");
1082 if (
wcscmp(ddeexec,
L"") == 0)
1084 TRACE(
"Exiting because ddeexec is 'empty string'. ret=42.\n");
1092 TRACE(
"Couldn't connect. ret=%d\n",
ret);
1097 if (
strlenW(
L"\\ifexec") + 1 > endkeyLen)
1103 ifexeclen =
sizeof(ifexec);
1159 DWORD cmdlen =
sizeof(
cmd), ddeexeclen =
sizeof(ddeexec);
1176 cmdlen /=
sizeof(
WCHAR);
1183 ERR(
"Argify buffer not large enough, truncating\n");
1188 tmp = const_cast<LPWSTR>(
strstrW(
key,
L"command"));
1226 TRACE(
"returning %s\n", lpResult);
1258 WCHAR old_dir[1024];
1311 sz +=
sizeof (
WCHAR);
1352 allocatedPidl.
Attach(pidl);
1368 CMINVOKECOMMANDINFOEX ici;
1386 r = cm->QueryContextMenu(
hmenu, 0, 0x20, 0x7fff, CMF_DEFAULTONLY);
1391 for (
i = 0;
i <
n;
i++)
1415 memset(&ici, 0,
sizeof ici);
1416 ici.cbSize =
sizeof ici;
1418 ici.nShow = sei->
nShow;
1420 ici.hwnd = sei->
hwnd;
1423 r = cm->InvokeCommand((LPCMINVOKECOMMANDINFO)&ici);
1425 TRACE(
"invoke command returned %08x\n",
r);
1463 hr =
obj->Initialize(
NULL, dataobj, hkey);
1504 pidl = allocatedPidl;
1534 CMINVOKECOMMANDINFOEX ici = {};
1535 ici.cbSize =
sizeof ici;
1537 ici.nShow = sei->
nShow;
1539 ici.hwnd = sei->
hwnd;
1540 ici.lpParameters = parameters;
1543 BOOL fDefault = !ici.lpVerb || !ici.lpVerb[0];
1544 hr = cm->QueryContextMenu(hMenu, 0, 1, 0x7fff, fDefault ? CMF_DEFAULTONLY : 0);
1550 uDefault = (uDefault != -1) ? uDefault - 1 : 0;
1554 hr = cm->InvokeCommand((LPCMINVOKECOMMANDINFO)&ici);
1571 HKEY hkey, hkeycm = 0;
1584 r =
RegOpenKeyW(hkey,
L"shellex\\ContextMenuHandlers", &hkeycm);
1631 execCmd,
sizeof(execCmd));
1639 if (!done && wszApplicationName[0])
1642 if (*wszApplicationName !=
'"')
1645 strcatW(wcmd, wszApplicationName);
1649 strcatW(wcmd, wszApplicationName);
1652 ERR(
"Argify buffer not large enough... truncating\n");
1653 return execfunc(wcmd,
NULL,
FALSE, psei, psei_out);
1663 wszApplicationName,
NULL, psei,
1664 psei_out, execfunc );
1679 ERR(
"parameters len exceeds buffer size (%i > %i), truncating\n",
1682 if (
strlenW(
L"explorer.exe") > dwApplicationNameLen)
1683 ERR(
"application len exceeds buffer size (%i), truncating\n",
1684 dwApplicationNameLen);
1685 lstrcpynW(wszApplicationName,
L"explorer.exe", dwApplicationNameLen);
1686 appKnownSingular =
TRUE;
1705 if (resultLen > dwApplicationNameLen)
1706 ERR(
"Argify buffer not large enough... truncating\n");
1707 appKnownSingular =
FALSE;
1712 return appKnownSingular;
1719 WCHAR *wszQuotedCmd;
1723 if (wszParameters[0])
1735 if (wszParameters[0])
1738 strcatW(wszQuotedCmd, wszParameters);
1746 retval = execfunc(wszQuotedCmd,
env,
FALSE, psei, psei_out);
1754 WCHAR *lpstrProtocol;
1759 lpstrRes =
strchrW(lpFile,
':');
1761 iSize = lpstrRes - lpFile;
1773 memcpy(lpstrProtocol, lpFile, iSize *
sizeof(
WCHAR));
1774 lpstrProtocol[iSize] =
'\0';
1775 strcatW(lpstrProtocol,
L"\\shell\\");
1777 strcatW(lpstrProtocol,
L"\\command");
1780 wcmd, execfunc, psei, psei_out);
1831 static const DWORD unsupportedFlags =
1836 WCHAR parametersBuffer[1024], dirBuffer[
MAX_PATH], wcmdBuffer[1024];
1837 WCHAR *wszApplicationName, *wszParameters, *wszDir, *wcmd;
1846 WCHAR wszKeyname[256];
1854 TRACE(
"mask=0x%08x hwnd=%p verb=%s file=%s parm=%s dir=%s show=0x%08x class=%s\n",
1867 *wszApplicationName =
'\0';
1871 if(
len-1 >= dwApplicationNameLen)
1872 dwApplicationNameLen =
len;
1878 wszApplicationName[
len-2] =
'\0';
1879 appKnownSingular =
TRUE;
1886 if(
l > dwApplicationNameLen) dwApplicationNameLen =
l + 1;
1890 if (wszApplicationName[2] == 0 && wszApplicationName[1] ==
L':' &&
1891 ((
L'A' <= wszApplicationName[0] && wszApplicationName[0] <=
L'Z') ||
1892 (
L'a' <= wszApplicationName[0] && wszApplicationName[0] <=
L'z')))
1899 wszParameters = parametersBuffer;
1903 if (
len > parametersLen)
1906 parametersLen =
len;
1911 *wszParameters =
L'\0';
1928 sei_tmp.
lpFile = wszApplicationName;
1932 if (sei_tmp.
fMask & unsupportedFlags)
1934 FIXME(
"flags ignored: 0x%08x\n", sei_tmp.
fMask & unsupportedFlags);
1947 hr = pSEH->Execute(&sei_tmp);
1952 if (wszParameters != parametersBuffer)
1954 if (wszDir != dirBuffer)
1961 appKnownSingular =
TRUE;
1975 sei_tmp.
lpFile = wszApplicationName = tmp;
1993 if (wszParameters != parametersBuffer)
1995 if (wszDir != dirBuffer)
2006 if (wszParameters != parametersBuffer)
2008 if (wszDir != dirBuffer)
2023 Info.pcszFile = wszApplicationName;
2032 if (wszParameters != parametersBuffer)
2034 if (wszDir != dirBuffer)
2045 dwApplicationNameLen );
2063 wszApplicationName =
buf;
2064 sei_tmp.
lpFile = wszApplicationName;
2076 wszApplicationName =
buf;
2079 sei_tmp.
lpFile = wszApplicationName;
2092 if (wszDir != dirBuffer)
2106 if (sei_tmp.
lpFile[0] ==
L'"')
2156 swprintf(wcmd,
L"\"%s\"", wszApplicationName);
2163 retval = execfunc(wcmd,
NULL,
FALSE, &sei_tmp, sei);
2167 if (wszParameters != parametersBuffer)
2169 if (wszDir != dirBuffer)
2171 if (wcmd != wcmdBuffer)
2183 wszApplicationName,
env, &sei_tmp,
2199 swprintf(lpQuotedFile,
L"\"%s\"", lpFile);
2202 wszApplicationName,
env,
2203 &sei_tmp, sei, execfunc);
2219 WCHAR lpstrTmpFile[256];
2221 strcatW(lpstrTmpFile, lpFile);
2225 TRACE(
"retval %lu\n", retval);
2234 Info.pcszFile = wszApplicationName;
2244 if (wszParameters != parametersBuffer)
2246 if (wszDir != dirBuffer)
2248 if (wcmd != wcmdBuffer)
2264 TRACE(
"%p,%s,%s,%s,%s,%d\n",
2268 sei.
cbSize =
sizeof(sei);
2275 sei.
nShow = iShowCmd;
2360 sei.
cbSize =
sizeof(sei);
2367 sei.
nShow = nShowCmd;
2395 seiW.
cbSize =
sizeof(seiW);
2398 seiW.
nShow = iShowCmd;
2457 for (
pch = psz + 1; *
pch && ich + 1 < cchArg0; ++ich, ++
pch)
2459 if (*
pch ==
L'"' &&
pch[1] ==
L'"')
2462 pszArg0[ich] =
L'"';
2464 else if (*
pch ==
L'"')
2473 pszArg0[ich] = *
pch;
2483 pszArg0[ich] = *
pch;
2511 if (pwszCommand ==
NULL)
2625 info.lpVerb = pszVerb;
2626 info.lpFile = szFile;
2627 info.lpParameters = (pchParams && *pchParams) ? pchParams :
NULL;
2628 info.lpDirectory = pwszStartDir;
HINSTANCE WINAPI ShellExecuteA(HWND hWnd, LPCSTR lpVerb, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT iShowCmd)
#define ERROR_INVALID_PARAMETER
unsigned __int3264 UINT_PTR
BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath)
HMENU WINAPI CreateMenu(void)
static UINT_PTR SHELL_execute_url(LPCWSTR lpFile, LPCWSTR wcmd, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out, SHELL_ExecuteW32 execfunc)
static BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc)
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExA(LPSHELLEXECUTEINFOA sei)
static const WCHAR szName[]
HRESULT WINAPI PathCreateFromUrlW(LPCWSTR pszUrl, LPWSTR pszPath, LPDWORD pcchPath, DWORD dwReserved)
#define SEE_MASK_FLAG_DDEWAIT
static UINT_PTR SHELL_quote_and_execute(LPCWSTR wcmd, LPCWSTR wszParameters, LPCWSTR lpstrProtocol, LPCWSTR wszApplicationName, LPWSTR env, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out, SHELL_ExecuteW32 execfunc)
#define SEE_MASK_CLASSKEY
BOOL WINAPI PathIsRelativeW(LPCWSTR lpszPath)
static WCHAR * expand_environment(const WCHAR *str)
HCONV WINAPI DdeConnect(DWORD, HSZ, HSZ, PCONVCONTEXT)
#define HRESULT_FROM_WIN32(x)
static HRESULT ShellExecute_ContextMenuVerb(LPSHELLEXECUTEINFOW sei)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
static HRESULT shellex_run_context_menu_default(IShellExtInit *obj, LPSHELLEXECUTEINFOW sei)
#define WideCharToMultiByte
#define CREATE_UNICODE_ENVIRONMENT
UINT WINAPI DdeGetLastError(DWORD)
EXTERN_C void WINAPI OpenAs_RunDLLW(HWND hwnd, HINSTANCE hinst, LPCWSTR cmdline, int cmdshow)
#define SEE_MASK_NOCLOSEPROCESS
static BOOL SHELL_ArgifyW(WCHAR *out, DWORD len, const WCHAR *fmt, const WCHAR *lpFile, LPITEMIDLIST pidl, LPCWSTR args, DWORD *out_len, const WCHAR *lpDir)
#define SEE_MASK_HASTITLE
GLdouble GLdouble GLdouble r
WINE_UNICODE_INLINE WCHAR * strchrW(const WCHAR *str, WCHAR ch)
#define SEE_MASK_NO_CONSOLE
WINE_UNICODE_INLINE int isspaceW(WCHAR wc)
return static_cast< int >(global)
static UINT_PTR execute_from_key(LPCWSTR key, LPCWSTR lpFile, WCHAR *env, LPCWSTR szCommandline, LPCWSTR executable_name, SHELL_ExecuteW32 execfunc, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out)
#define EXCEPTION_ACCESS_VIOLATION
GLuint GLuint GLsizei count
#define FORMAT_MESSAGE_ARGUMENT_ARRAY
struct _STARTUPINFOW STARTUPINFOW
LPWSTR WINAPI CharLowerW(_Inout_ LPWSTR)
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
#define GetCurrentDirectoryW(x, y)
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
#define EXCEPTION_NONCONTINUABLE
#define SEE_MASK_HASLINKNAME
DWORD WINAPI GetLastError(VOID)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
static HRESULT shellex_get_dataobj(LPSHELLEXECUTEINFOW sei, CComPtr< IDataObject > &dataObj)
_In_ BOOL _In_ HANDLE hProcess
int startup(int argc, const char *argv[])
#define MAKEINTRESOURCEA(i)
static LPCWSTR SplitParams(LPCWSTR psz, LPWSTR pszArg0, size_t cchArg0)
#define strncmpiW(s1, s2, n)
BOOL WINAPI DdeFreeDataHandle(HDDEDATA)
#define IID_PPV_ARG(Itype, ppType)
static HDDEDATA CALLBACK dde_cb(UINT uType, UINT uFmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hData, ULONG_PTR dwData1, ULONG_PTR dwData2)
BOOL WINAPI GetBinaryTypeW(LPCWSTR lpApplicationName, LPDWORD lpBinaryType)
HDDEDATA WINAPI DdeClientTransaction(LPBYTE, DWORD, HCONV, HSZ, UINT, UINT, DWORD, LPDWORD)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
static LPWSTR SHELL_BuildEnvW(const WCHAR *path)
DWORD WINAPI GetVersion(VOID)
BOOL WINAPI PathIsURLW(LPCWSTR lpstrPath)
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
GLsizei GLsizei GLuint * obj
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
static __inline void __SHCloneStrW(WCHAR **target, const WCHAR *source)
static unsigned dde_connect(const WCHAR *key, const WCHAR *start, WCHAR *ddeexec, const WCHAR *lpFile, WCHAR *env, LPCWSTR szCommandline, LPITEMIDLIST pidl, SHELL_ExecuteW32 execfunc, const SHELLEXECUTEINFOW *psei, LPSHELLEXECUTEINFOW psei_out)
BOOL WINAPI PathAddExtensionW(LPWSTR lpszPath, LPCWSTR lpszExtension)
GLenum GLuint GLenum GLsizei const GLchar * buf
#define SEE_MASK_CONNECTNETDRV
#define ERROR_FUNCTION_FAILED
static HKEY ShellExecute_GetClassKey(const SHELLEXECUTEINFOW *sei)
#define ERROR_ACCESS_DENIED
LPWSTR WINAPI PathAddBackslashW(LPWSTR lpszPath)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
static LONG ShellExecute_FromContextMenuHandlers(LPSHELLEXECUTEINFOW sei)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
static struct _test_info info[]
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
int WINAPI GetMenuItemCount(_In_opt_ HMENU)
EXTERN_C void WINAPI OpenAs_RunDLLA(HWND hwnd, HINSTANCE hinst, LPCSTR cmdline, int cmdshow)
static UINT_PTR SHELL_execute_class(LPCWSTR wszApplicationName, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out, SHELL_ExecuteW32 execfunc)
BOOL WINAPI DdeUninitialize(DWORD)
UINT_PTR(* SHELL_ExecuteW32)(const WCHAR *lpCmd, WCHAR *env, BOOL shWait, const SHELLEXECUTEINFOW *sei, LPSHELLEXECUTEINFOW sei_out)
#define SEE_MASK_FLAG_NO_UI
static UINT SHELL_FindExecutableByVerb(LPCWSTR lpVerb, LPWSTR key, LPWSTR classname, LPWSTR command, LONG commandlen)
#define SECL_ALLOW_NONEXE
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath)
static UINT SHELL_FindExecutable(LPCWSTR lpPath, LPCWSTR lpFile, LPCWSTR lpVerb, LPWSTR lpResult, DWORD resultLen, LPWSTR key, WCHAR **env, LPITEMIDLIST pidl, LPCWSTR args)
#define STARTF_USESHOWWINDOW
LPWSTR WINAPI PathFindExtensionW(LPCWSTR lpszPath)
static void ParseNoTildeEffect(PWSTR &res, LPCWSTR &args, DWORD &len, DWORD &used, int argNum)
HRESULT WINAPI AssocQueryStringW(ASSOCF cfFlags, ASSOCSTR str, LPCWSTR pszAssoc, LPCWSTR pszExtra, LPWSTR pszOut, DWORD *pcchOut)
#define ERROR_FILE_NOT_FOUND
#define FORMAT_MESSAGE_FROM_SYSTEM
#define IDS_SHLEXEC_NOASSOC
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW(LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
#define FILE_ATTRIBUTE_DIRECTORY
#define DECLSPEC_HOTPATCH
_In_opt_ LPCSTR lpDirectory
#define DBG_UNREFERENCED_LOCAL_VARIABLE(L)
#define IID_NULL_PPV_ARG(Itype, ppType)
BOOL WINAPI GetMenuItemInfoW(_In_ HMENU, _In_ UINT, _In_ BOOL, _Inout_ LPMENUITEMINFOW)
#define SEE_MASK_CLASSNAME
BOOL WINAPI DdeDisconnect(HCONV)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
#define CREATE_NEW_CONSOLE
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
#define APPCMD_CLIENTONLY
HANDLE WINAPI SHAllocShared(LPCVOID lpvData, DWORD dwSize, DWORD dwProcId)
int WINAPI MessageBoxW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ UINT)
BOOL WINAPI FreeEnvironmentStringsW(IN LPWSTR EnvironmentStrings)
#define FAILED_UNEXPECTEDLY(hr)
LSTATUS WINAPI RegQueryValueW(HKEY hkey, LPCWSTR name, LPWSTR data, LPLONG count)
#define SEE_MASK_DOENVSUBST
UINT WINAPI GetMenuDefaultItem(_In_ HMENU hMenu, _In_ UINT fByPos, _In_ UINT gmdiFlags)
static __inline void __SHCloneStrWtoA(char **target, const WCHAR *source)
HRESULT WINAPI ShellExecCmdLine(HWND hwnd, LPCWSTR pwszCommand, LPCWSTR pwszStartDir, int nShow, LPVOID pUnused, DWORD dwSeclFlags)
unsigned __int3264 UINT_PTR
#define INVALID_FILE_ATTRIBUTES
HINSTANCE WINAPI FindExecutableA(LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult)
HINSTANCE WINAPI FindExecutableW(LPCWSTR lpFile, LPCWSTR lpDirectory, LPWSTR lpResult)
GLsizei const GLchar *const * strings
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
static const WCHAR space[]
#define IDS_FILE_NOT_FOUND
#define memcpy(s1, s2, n)
INT WINAPI GetProfileStringW(LPCWSTR section, LPCWSTR entry, LPCWSTR def_val, LPWSTR buffer, UINT len)
static HRESULT shellex_get_contextmenu(LPSHELLEXECUTEINFOW sei, CComPtr< IContextMenu > &cm)
BOOL WINAPI UrlIsW(LPCWSTR pszUrl, URLIS Urlis)
int _cdecl swprintf(const WCHAR *,...)
BOOL WINAPI DestroyMenu(_In_ HMENU)
DWORD WINAPI SearchPathW(IN LPCWSTR lpPath OPTIONAL, IN LPCWSTR lpFileName, IN LPCWSTR lpExtension OPTIONAL, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart OPTIONAL)
LONG WINAPI RegEnumKeyW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName)
WINE_UNICODE_INLINE WCHAR * strrchrW(const WCHAR *str, WCHAR ch)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
static HRESULT shellex_load_object_and_run(HKEY hkey, LPCGUID guid, LPSHELLEXECUTEINFOW sei)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
static __inline LPWSTR __SHCloneStrAtoW(WCHAR **target, const char *source)
EXTERN_C BOOL PathIsExeW(LPCWSTR lpszPath)
WINE_UNICODE_INLINE WCHAR * strcpyW(WCHAR *dst, const WCHAR *src)
#define shell32_hInstance
VOID WINAPI RaiseException(IN DWORD dwExceptionCode, IN DWORD dwExceptionFlags, IN DWORD nNumberOfArguments, IN CONST ULONG_PTR *lpArguments OPTIONAL)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
BOOL HCR_GetDefaultVerbW(HKEY hkeyClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len)
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
#define SEE_MASK_FLAG_LOG_USAGE
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
BOOL WINAPI SetCurrentDirectoryW(IN LPCWSTR lpPathName)
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
HRESULT WINAPI SHParseDisplayName(LPCWSTR pszName, IBindCtx *pbc, LPITEMIDLIST *ppidl, SFGAOF sfgaoIn, SFGAOF *psfgaoOut)
static UINT_PTR SHELL_ExecuteW(const WCHAR *lpCmd, WCHAR *env, BOOL shWait, const SHELLEXECUTEINFOW *psei, LPSHELLEXECUTEINFOW psei_out)
static const char topic[]
WINE_UNICODE_INLINE WCHAR * strcatW(WCHAR *dst, const WCHAR *src)
EXTERN_C HINSTANCE WINAPI WOWShellExecute(HWND hWnd, LPCSTR lpVerb, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT iShowCmd, void *callback)
#define SEE_MASK_HMONITOR
static BOOL SHELL_TryAppPathW(LPCWSTR szName, LPWSTR lpResult, WCHAR **env)
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
PVOID WINAPI SHLockShared(HANDLE hShared, DWORD dwProcId)
BOOL HCR_GetExecuteCommandW(HKEY hkeyClass, LPCWSTR szClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len)
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
LPWSTR WINAPI GetEnvironmentStringsW(VOID)
static LPCWSTR LPCWSTR LPCWSTR env
BOOL WINAPI StrTrimW(LPWSTR lpszStr, LPCWSTR lpszTrim)
HMENU WINAPI CreatePopupMenu(void)
WINE_DEFAULT_DEBUG_CHANNEL(exec)
void WINAPI SHFree(LPVOID pv)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
DWORD WINAPI WaitForInputIdle(_In_ HANDLE, _In_ DWORD)
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
BOOL WINAPI SHUnlockShared(LPVOID lpView)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
#define SEE_MASK_INVOKEIDLIST
#define HKEY_CLASSES_ROOT
GLuint GLuint GLsizei GLenum type
static IPrintDialogCallback callback
static HRESULT SHELL_GetPathFromIDListForExecuteW(LPCITEMIDLIST pidl, LPWSTR pszPath, UINT uOutSize)
LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path)
static void do_error_dialog(UINT_PTR retval, HWND hwnd, WCHAR *filename)
HSZ WINAPI DdeCreateStringHandleW(DWORD, LPCWSTR, INT)
#define SEE_MASK_CLASSALL
#define GetEnvironmentVariableW(x, y, z)
UINT WINAPI DdeInitializeW(LPDWORD, PFNCALLBACK, DWORD, DWORD)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
static void ParseTildeEffect(PWSTR &res, LPCWSTR &args, DWORD &len, DWORD &used, int argNum)
#define HeapFree(x, y, z)
#define RegCloseKey(hKey)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
UINT WINAPI DdeInitializeA(LPDWORD, PFNCALLBACK, DWORD, DWORD)
static IShellFolder IShellItem **static IBindCtx LPITEMIDLIST SFGAOF
BOOL WINAPI StrRetToStrNW(LPWSTR dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
#define LANG_USER_DEFAULT
static BOOL SHELL_translate_idlist(LPSHELLEXECUTEINFOW sei, LPWSTR wszParameters, DWORD parametersLen, LPWSTR wszApplicationName, DWORD dwApplicationNameLen)
#define HKEY_LOCAL_MACHINE