30#define SEE_MASK_CLASSALL (SEE_MASK_CLASSNAME | SEE_MASK_CLASSKEY)
39 static INT s_bInDllProcess = -1;
41 if (s_bInDllProcess != -1)
42 return s_bInDllProcess;
46 return s_bInDllProcess;
51 bool firstCharQuote =
false;
52 bool quotes_opened =
false;
53 bool backslash_encountered =
false;
55 for (
int curArg = 0; curArg <= argNum && *
args; ++curArg)
57 firstCharQuote =
false;
61 firstCharQuote =
true;
70 backslash_encountered = !backslash_encountered;
72 else if (*
args ==
'"')
76 if (*(
args + 1) !=
'"')
78 quotes_opened =
false;
92 backslash_encountered =
false;
96 backslash_encountered =
false;
97 if (*
args ==
' ' && !firstCharQuote)
101 if (curArg == argNum)
118 bool quotes_opened =
false;
119 bool backslash_encountered =
false;
121 for (
int curArg = 0; curArg <= argNum && *
args; ++curArg)
128 backslash_encountered = !backslash_encountered;
130 else if (*
args ==
'"')
134 if (*(
args + 1) !=
'"')
136 quotes_opened =
false;
145 quotes_opened =
true;
148 backslash_encountered =
false;
152 backslash_encountered =
false;
153 if (*
args ==
' ' && !quotes_opened && curArg != argNum)
157 if (curArg == argNum)
206 bool tildeEffect =
false;
282 if (!done || (*
fmt ==
'1'))
370 ERR(
"pidl format buffer too small!\n");
392 WCHAR tmpBuffer[1024];
393 PWSTR tmpB = tmpBuffer;
404 if (envRet == 0 || envRet >
MAX_PATH)
467 hr = desktop->GetDisplayNameOf(pidl, SHGDN_FORPARSING, &strret);
488 DWORD dwCreationFlags;
521 startup.dwFlags |= STARTF_TITLEISLINKNAME;
541 WARN(
"CreateProcess returned error %ld\n", retval);
545 TRACE(
"returning %lu\n", retval);
579 if (!got_path)
total += 5;
630 wcscpy(
buffer,
L"Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\");
700 commandlen /=
sizeof(
WCHAR);
720 paramlen /=
sizeof(
WCHAR);
723 commandlen += paramlen;
774 WARN(
"(lpFile=%s,lpResult=%s): NULL parameter\n",
787 TRACE(
"SearchPathW returned non-zero\n");
793 TRACE(
"SearchPathW returned non-zero\n");
808 TRACE(
"Returning SE_ERR_FNF\n");
812 extension =
wcsrchr(xlpFile,
'.');
817 if (extension ==
NULL || extension[1] == 0)
819 WARN(
"Returning SE_ERR_NOASSOC\n");
841 while (*
p && *
p !=
' ' && *
p !=
'\t')
p++;
845 while (*
p ==
' ' || *
p ==
'\t')
p++;
848 if (
_wcsicmp(tok, &extension[1]) == 0)
850 wcscpy(lpResult, xlpFile);
865 classnamelen /=
sizeof(
WCHAR);
887 if (finishedLen > resultLen)
888 ERR(
"Argify buffer not large enough.. truncated\n");
890 if (*lpResult ==
'"')
893 while (*(
p + 1) !=
'"')
904 while (*
p !=
' ' && *
p !=
'\0')
919 tok =
wcschr(lpResult,
'^');
923 wcscat(lpResult, xlpFile);
927 wcscat(lpResult, &tok[5]);
945 HSZ hsz1, HSZ hsz2, HDDEDATA hData,
948 TRACE(
"dde_cb: %04x, %04x, %p, %p, %p, %p, %08lx, %08lx\n",
949 uType, uFmt, hConv, hsz1, hsz2, hData, dwData1, dwData2);
969 WCHAR app[256],
topic[256], ifexec[256], static_res[256];
972 LONG applen, topiclen, ifexeclen;
976 DWORD resultLen, endkeyLen;
989 endkeyLen =
ARRAY_SIZE(regkey) - (endkey - regkey);
990 if (
strlenW(
L"\\application") + 1 > endkeyLen)
995 wcscpy(endkey,
L"\\application");
996 applen =
sizeof(app);
1008 FIXME(
"size of input parameter %s larger than buffer\n",
1055 if (
strlenW(
L"\\topic") + 1 > endkeyLen)
1061 topiclen =
sizeof(
topic);
1089 TRACE(
"Couldn't launch\n");
1093 if (ddeexec ==
NULL)
1095 TRACE(
"Exiting because ddeexec is NULL. ret=42.\n");
1101 if (
wcscmp(ddeexec,
L"") == 0)
1103 TRACE(
"Exiting because ddeexec is 'empty string'. ret=42.\n");
1111 TRACE(
"Couldn't connect. ret=%d\n",
ret);
1116 if (
strlenW(
L"\\ifexec") + 1 > endkeyLen)
1122 ifexeclen =
sizeof(ifexec);
1177 DWORD cmdlen =
sizeof(
cmd), ddeexeclen =
sizeof(ddeexec);
1194 cmdlen /=
sizeof(
WCHAR);
1201 ERR(
"Argify buffer not large enough, truncating\n");
1244 TRACE(
"returning %s\n", lpResult);
1352 sz +=
sizeof (
WCHAR);
1391 allocatedPidl.
Attach(pidl);
1407 CMINVOKECOMMANDINFOEX ici;
1425 r = cm->QueryContextMenu(
hmenu, 0, 0x20, 0x7fff, CMF_DEFAULTONLY);
1430 for (
i = 0;
i <
n;
i++)
1454 memset(&ici, 0,
sizeof ici);
1455 ici.cbSize =
sizeof ici;
1457 ici.nShow = sei->
nShow;
1459 ici.hwnd = sei->
hwnd;
1462 r = cm->InvokeCommand((LPCMINVOKECOMMANDINFO)&ici);
1464 TRACE(
"invoke command returned %08x\n",
r);
1492 hr =
obj->Initialize(
NULL, dataobj, hkey);
1533 pidl = allocatedPidl;
1564 BOOL fDefault = StrIsNullOrEmpty(sei->
lpVerb);
1565 CMINVOKECOMMANDINFOEX ici = {
sizeof(ici) };
1567 ici.nShow = sei->
nShow;
1571 ici.lpVerbW = sei->
lpVerb;
1573 ici.hwnd = sei->
hwnd;
1574 ici.lpParameters = parameters;
1576 ici.lpDirectory =
dir;
1579 ici.hIcon = sei->
hIcon;
1580 if (ici.fMask & (CMIC_MASK_HASLINKNAME | CMIC_MASK_HASTITLE))
1583 enum { idFirst = 1, idLast = 0x7fff };
1585 hr = cm->QueryContextMenu(hMenu, 0, idFirst, idLast, fDefault ? CMF_DEFAULTONLY : 0);
1591 uDefault = (uDefault != -1) ? uDefault - idFirst : 0;
1596 hr = cm->InvokeCommand((LPCMINVOKECOMMANDINFO)&ici);
1612 HKEY hkey, hkeycm = 0;
1625 r =
RegOpenKeyW(hkey,
L"shellex\\ContextMenuHandlers", &hkeycm);
1672 execCmd,
sizeof(execCmd));
1680 if (!done && wszApplicationName[0])
1685 if (*wszApplicationName !=
'"')
1688 strcatW(wcmd, wszApplicationName);
1692 strcatW(wcmd, wszApplicationName);
1696 ERR(
"Argify buffer not large enough... truncating\n");
1697 return execfunc(wcmd,
NULL,
FALSE, psei, psei_out);
1707 wszApplicationName,
NULL, psei,
1708 psei_out, execfunc );
1723 ERR(
"parameters len exceeds buffer size (%i > %i), truncating\n",
1726 if (
strlenW(
L"explorer.exe") > dwApplicationNameLen)
1727 ERR(
"application len exceeds buffer size (%i), truncating\n",
1728 dwApplicationNameLen);
1729 lstrcpynW(wszApplicationName,
L"explorer.exe", dwApplicationNameLen);
1730 appKnownSingular =
TRUE;
1732 sei->
fMask &= ~SEE_MASK_INVOKEIDLIST;
1749 if (resultLen > dwApplicationNameLen)
1750 ERR(
"Argify buffer not large enough... truncating\n");
1751 appKnownSingular =
FALSE;
1760 appKnownSingular =
TRUE;
1762 sei->
fMask &= ~SEE_MASK_INVOKEIDLIST;
1765 return appKnownSingular;
1787 CMINVOKECOMMANDINFO ici = {
sizeof(ici) };
1789 ici.nShow = sei->nShow;
1790 ici.hwnd = sei->hwnd;
1792 if (sei->lpVerb && sei->lpVerb[0])
1796 ici.lpVerb = szVerb;
1801 const INT idCmdFirst = 1, idCmdLast = 0x7FFF;
1802 hr = pCM->QueryContextMenu(hMenu, 0, idCmdFirst, idCmdLast, CMF_DEFAULTONLY);
1811 if (nDefaultID == -1)
1812 nDefaultID = idCmdFirst;
1816 hr = pCM->InvokeCommand(&ici);
1829 if (wszParameters[0])
1841 if (wszParameters[0])
1844 strcatW(wszQuotedCmd, wszParameters);
1852 retval = execfunc(wszQuotedCmd,
env,
FALSE, psei, psei_out);
1865 lpstrRes =
strchrW(lpFile,
':');
1867 iSize = lpstrRes - lpFile;
1879 memcpy(lpstrProtocol, lpFile, iSize *
sizeof(
WCHAR));
1880 lpstrProtocol[iSize] =
'\0';
1881 strcatW(lpstrProtocol,
L"\\shell\\");
1883 strcatW(lpstrProtocol,
L"\\command");
1886 wcmd, execfunc, psei, psei_out);
1927 return buf.Detach();
1935 static const DWORD unsupportedFlags =
1947 TRACE(
"mask=0x%08x hwnd=%p verb=%s file=%s parm=%s dir=%s show=0x%08x class=%s\n",
1961 wszApplicationName.
Allocate(dwApplicationNameLen);
1962 *wszApplicationName =
'\0';
1966 if(
len-1 >= dwApplicationNameLen)
1967 dwApplicationNameLen =
len;
1969 wszApplicationName.
Allocate(dwApplicationNameLen);
1973 wszApplicationName[
len-2] =
'\0';
1974 appKnownSingular =
TRUE;
1981 if(
l > dwApplicationNameLen) dwApplicationNameLen =
l + 1;
1982 wszApplicationName.
Allocate(dwApplicationNameLen);
1985 if (wszApplicationName[2] == 0 && wszApplicationName[1] ==
L':' &&
1986 ((
L'A' <= wszApplicationName[0] && wszApplicationName[0] <=
L'Z') ||
1987 (
L'a' <= wszApplicationName[0] && wszApplicationName[0] <=
L'z')))
1994 WCHAR parametersBuffer[1024];
1995 LPWSTR wszParameters = parametersBuffer;
2002 if (
len > parametersLen)
2005 wszParameters = wszParamAlloc;
2006 parametersLen =
len;
2011 *wszParameters =
L'\0';
2015 LPWSTR wszDir = dirBuffer;
2026 wszDir = wszDirAlloc;
2033 wszDir = wszDirAlloc;
2057 sei_tmp.
lpFile = wszApplicationName;
2061 if (sei_tmp.
fMask & unsupportedFlags)
2063 FIXME(
"flags ignored: 0x%08x\n", sei_tmp.
fMask & unsupportedFlags);
2076 hr = pSEH->Execute(&sei_tmp);
2082 appKnownSingular =
TRUE;
2091 wszApplicationName.
Attach(tmp);
2092 sei_tmp.
lpFile = wszApplicationName;
2122 Info.pcszFile = wszApplicationName;
2152 dwApplicationNameLen );
2163 wszApplicationName.
Attach(
buf.Detach());
2164 sei_tmp.
lpFile = wszApplicationName;
2175 if (sei_tmp.
lpFile[0] ==
L'"')
2181 if (parametersLen <
_countof(parametersBuffer))
2184 wszParameters = parametersBuffer;
2189 wszParameters = wszParamAlloc;
2201 LPWSTR beg = wszApplicationName;
2226 WCHAR wcmdBuffer[1024];
2227 LPWSTR wcmd = wcmdBuffer;
2250 retval = execfunc(wcmd,
NULL,
FALSE, &sei_tmp, sei);
2256 WCHAR wszKeyname[256];
2263 wszApplicationName,
env, &sei_tmp,
2277 swprintf(lpQuotedFile,
L"\"%s\"", lpFile);
2280 wszApplicationName,
env,
2281 &sei_tmp, sei, execfunc);
2295 WCHAR lpstrTmpFile[256];
2297 strcatW(lpstrTmpFile, lpFile);
2301 TRACE(
"retval %lu\n", retval);
2310 Info.pcszFile = wszApplicationName;
2332 TRACE(
"%p,%s,%s,%s,%s,%d\n",
2336 sei.
cbSize =
sizeof(sei);
2343 sei.
nShow = iShowCmd;
2465 fOldMask = sei->
fMask;
2475 sei->
fMask = fOldMask;
2498 sei.
cbSize =
sizeof(sei);
2505 sei.
nShow = nShowCmd;
2533 seiW.
cbSize =
sizeof(seiW);
2536 seiW.
nShow = iShowCmd;
2595 for (
pch = psz + 1; *
pch && ich + 1 < cchArg0; ++ich, ++
pch)
2597 if (*
pch ==
L'"' &&
pch[1] ==
L'"')
2600 pszArg0[ich] =
L'"';
2602 else if (*
pch ==
L'"')
2611 pszArg0[ich] = *
pch;
2621 pszArg0[ich] = *
pch;
2649 if (pwszCommand ==
NULL)
2704 apPathList[0] = pwszStartDir;
2705 apPathList[1] =
NULL;
2746 info.lpVerb = pszVerb;
2747 info.lpFile = szFile;
2748 info.lpParameters = (pchParams && *pchParams) ? pchParams :
NULL;
2749 info.lpDirectory = pwszStartDir;
2788 TRACE(
"(%p, %s, %s, %s, %s, %p, %s, %p, %u, %p, %lu)\n",
2791 lpReserved, nCmdShow, lphProcess,
dwFlags);
2794 ExecInfo.
cbSize =
sizeof(ExecInfo);
2797 ExecInfo.
lpVerb = lpOperation;
2798 ExecInfo.
lpFile = lpFile;
2821 if (lphProcess ==
NULL)
2855 TRACE(
"(%p, %s, %s, %s, %s, %p, %s, %p, %u, %p, %lu)\n",
2858 lpReserved, nCmdShow, lphProcess,
dwFlags);
2861 ExecInfo.
cbSize =
sizeof(ExecInfo);
2864 ExecInfo.
lpVerb = lpOperation;
2865 ExecInfo.
lpFile = lpFile;
2888 if (lphProcess ==
NULL)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
#define PRF_TRYPROGRAMEXTENSIONS
#define shell32_hInstance
#define SECL_ALLOW_NONEXE
static void startup(void)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define UlongToHandle(ul)
#define RegCloseKey(hKey)
bool Allocate(_In_ size_t nElements=1)
static LPCWSTR LPCWSTR LPCWSTR env
HDDEDATA WINAPI DdeClientTransaction(LPBYTE, DWORD, HCONV, HSZ, UINT, UINT, DWORD, LPDWORD)
BOOL WINAPI DdeUninitialize(DWORD)
UINT WINAPI DdeInitializeW(LPDWORD, PFNCALLBACK, DWORD, DWORD)
HCONV WINAPI DdeConnect(DWORD, HSZ, HSZ, PCONVCONTEXT)
UINT WINAPI DdeGetLastError(DWORD)
HSZ WINAPI DdeCreateStringHandleW(DWORD, LPCWSTR, INT)
BOOL WINAPI DdeDisconnect(HCONV)
BOOL WINAPI DdeFreeDataHandle(HDDEDATA)
#define APPCMD_CLIENTONLY
UINT WINAPI DdeInitializeA(LPDWORD, PFNCALLBACK, DWORD, DWORD)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
LSTATUS WINAPI RegQueryValueW(HKEY hkey, LPCWSTR name, LPWSTR data, LPLONG count)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
LONG WINAPI RegEnumKeyW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName)
INT WINAPI StrCmpNIW(LPCWSTR lpszStr, LPCWSTR lpszComp, INT iLen)
LPWSTR WINAPI StrStrIW(LPCWSTR lpszStr, LPCWSTR lpszSearch)
INT WINAPI StrCmpNW(LPCWSTR lpszStr, LPCWSTR lpszComp, INT iLen)
#define ERROR_INVALID_PARAMETER
#define GetCurrentDirectoryW(x, y)
#define GetEnvironmentVariableW(x, y, z)
#define WideCharToMultiByte
#define ERROR_ACCESS_DENIED
static const WCHAR *const ext[]
#define FAILED_UNEXPECTEDLY(hr)
BOOL WINAPI FreeEnvironmentStringsW(IN LPWSTR EnvironmentStrings)
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
VOID WINAPI RaiseException(_In_ DWORD dwExceptionCode, _In_ DWORD dwExceptionFlags, _In_ DWORD nNumberOfArguments, _In_opt_ const ULONG_PTR *lpArguments)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
BOOL WINAPI SetCurrentDirectoryW(IN LPCWSTR lpPathName)
DWORD WINAPI SearchPathW(IN LPCWSTR lpPath OPTIONAL, IN LPCWSTR lpFileName, IN LPCWSTR lpExtension OPTIONAL, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart OPTIONAL)
DWORD WINAPI GetShortPathNameW(IN LPCWSTR lpszLongPath, OUT LPWSTR lpszShortPath, IN DWORD cchBuffer)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
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)
BOOL WINAPI GetBinaryTypeW(LPCWSTR lpApplicationName, LPDWORD lpBinaryType)
INT WINAPI GetProfileStringW(LPCWSTR section, LPCWSTR entry, LPCWSTR def_val, LPWSTR buffer, UINT len)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
static UINT SeeFlagsToCmicFlags(UINT flags)
HRESULT SHCoInitializeAnyApartment(VOID)
void WINAPI SHFree(LPVOID pv)
BOOL WINAPI PathResolveW(_Inout_ LPWSTR path, _Inout_opt_ LPCWSTR *dirs, _In_ DWORD flags)
HRESULT WINAPI AssocQueryStringW(ASSOCF cfFlags, ASSOCSTR str, LPCWSTR pszAssoc, LPCWSTR pszExtra, LPWSTR pszOut, DWORD *pcchOut)
HANDLE WINAPI SHAllocShared(LPCVOID lpvData, DWORD dwSize, DWORD dwProcId)
PVOID WINAPI SHLockShared(HANDLE hShared, DWORD dwProcId)
BOOL WINAPI SHUnlockShared(LPVOID lpView)
void WINAPI PathRemoveArgsW(LPWSTR lpszPath)
int WINAPI PathGetDriveNumberW(const WCHAR *path)
HRESULT WINAPI PathCreateFromUrlW(LPCWSTR pszUrl, LPWSTR pszPath, LPDWORD pcchPath, DWORD dwReserved)
LPWSTR WINAPI PathFindFileNameW(LPCWSTR lpszPath)
BOOL WINAPI PathStripToRootW(LPWSTR lpszPath)
LPWSTR WINAPI PathFindExtensionW(LPCWSTR lpszPath)
BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath)
VOID WINAPI PathUnquoteSpacesW(LPWSTR lpszPath)
BOOL WINAPI PathFindOnPathExW(LPWSTR lpszFile, LPCWSTR *lppszOtherDirs, DWORD dwWhich)
BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath)
LPWSTR WINAPI PathGetArgsW(LPCWSTR lpszPath)
BOOL WINAPI PathIsRelativeW(LPCWSTR lpszPath)
BOOL WINAPI SHRegGetBoolUSValueW(LPCWSTR pszSubKey, LPCWSTR pszValue, BOOL fIgnoreHKCU, BOOL fDefault)
BOOL WINAPI StrTrimW(LPWSTR lpszStr, LPCWSTR lpszTrim)
LPWSTR WINAPI StrDupW(LPCWSTR lpszStr)
BOOL WINAPI UrlIsW(LPCWSTR pszUrl, URLIS Urlis)
BOOL WINAPI PathIsURLW(LPCWSTR lpstrPath)
static IShellFolder IShellItem **static IBindCtx LPITEMIDLIST SFGAOF
GLuint GLuint GLsizei GLenum type
GLdouble GLdouble GLdouble r
GLsizei const GLchar *const * strings
GLenum const GLfloat * params
GLenum GLuint GLenum GLsizei const GLchar * buf
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
VOID WINAPI CoTaskMemFree(LPVOID ptr)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
_In_ BOOL _In_ HANDLE hProcess
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static IPrintDialogCallback callback
static DWORD DWORD void LPSTR DWORD cch
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
unsigned __int3264 UINT_PTR
#define FILE_ATTRIBUTE_DIRECTORY
#define DBG_UNREFERENCED_LOCAL_VARIABLE(L)
#define PathAddExtensionW
#define PathAddBackslashW
HRESULT WINAPI SHParseDisplayName(LPCWSTR pszName, IBindCtx *pbc, LPITEMIDLIST *ppidl, SFGAOF sfgaoIn, SFGAOF *psfgaoOut)
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path)
static const WCHAR szName[]
static const char topic[]
#define strncmpiW(s1, s2, n)
DWORD WINAPI GetVersion()
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
_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 DECLSPEC_HOTPATCH
BOOL HCR_GetDefaultVerbW(HKEY hkeyClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len)
BOOL HCR_GetExecuteCommandW(HKEY hkeyClass, LPCWSTR szClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len)
static __inline void __SHCloneStrWtoA(char **target, const WCHAR *source)
static __inline LPWSTR __SHCloneStrAtoW(WCHAR **target, const char *source)
static __inline void __SHCloneStrW(WCHAR **target, const WCHAR *source)
#define SEE_MASK_FLAG_LOG_USAGE
#define SEE_MASK_DOENVSUBST
#define SEE_MASK_USE_RESERVED
#define SEE_MASK_FLAG_SEPVDM
#define SEE_MASK_CLASSKEY
#define SEE_MASK_NOCLOSEPROCESS
struct _SHELLEXECUTEINFOW SHELLEXECUTEINFOW
#define SEE_MASK_HMONITOR
#define SEE_MASK_CLASSNAME
#define SEE_MASK_HASTITLE
#define SE_ERR_ACCESSDENIED
#define SEE_MASK_WAITFORINPUTIDLE
#define SEE_MASK_FLAG_DDEWAIT
#define SEE_MASK_CONNECTNETDRV
_In_opt_ LPCSTR lpDirectory
#define SEE_MASK_UNKNOWN_0x1000
#define SEE_MASK_INVOKEIDLIST
#define SEE_MASK_FLAG_NO_UI
#define SEE_MASK_NO_CONSOLE
#define SEE_MASK_HASLINKNAME
LONG WINAPI SHRegQueryValueExW(HKEY hkey, LPCWSTR pszValue, LPDWORD pdwReserved, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData)
BOOL WINAPI StrRetToStrNW(LPWSTR dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
static UINT_PTR SHELL_execute_class(LPCWSTR wszApplicationName, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out, SHELL_ExecuteW32 execfunc)
static HRESULT ShellExecute_ContextMenuVerb(LPSHELLEXECUTEINFOW sei)
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExA(LPSHELLEXECUTEINFOA sei)
HINSTANCE WINAPI FindExecutableW(LPCWSTR lpFile, LPCWSTR lpDirectory, LPWSTR lpResult)
static HRESULT shellex_load_object_and_run(HKEY hkey, LPCGUID guid, LPSHELLEXECUTEINFOW sei)
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)
static void ParseNoTildeEffect(PWSTR &res, LPCWSTR &args, DWORD &len, DWORD &used, int argNum)
static BOOL SHELL_InvokePidl(_In_ LPSHELLEXECUTEINFOW sei, _In_ LPCITEMIDLIST pidl)
EXTERN_C void WINAPI OpenAs_RunDLLA(HWND hwnd, HINSTANCE hinst, LPCSTR cmdline, int cmdshow)
static LPCWSTR SplitParams(LPCWSTR psz, LPWSTR pszArg0, size_t cchArg0)
EXTERN_C HINSTANCE WINAPI RealShellExecuteExW(_In_opt_ HWND hwnd, _In_opt_ LPCWSTR lpOperation, _In_opt_ LPCWSTR lpFile, _In_opt_ LPCWSTR lpParameters, _In_opt_ LPCWSTR lpDirectory, _In_opt_ LPWSTR lpReturn, _In_opt_ LPCWSTR lpTitle, _In_opt_ LPVOID lpReserved, _In_ INT nCmdShow, _Out_opt_ PHANDLE lphProcess, _In_ DWORD dwFlags)
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)
EXTERN_C void WINAPI OpenAs_RunDLLW(HWND hwnd, HINSTANCE hinst, LPCWSTR cmdline, int cmdshow)
static LONG ShellExecute_FromContextMenuHandlers(LPSHELLEXECUTEINFOW sei)
static UINT SHELL_FindExecutable(LPCWSTR lpPath, LPCWSTR lpFile, LPCWSTR lpVerb, LPWSTR lpResult, DWORD resultLen, LPWSTR key, WCHAR **env, LPITEMIDLIST pidl, LPCWSTR args)
static DWORD ShellExecute_Normal(_Inout_ LPSHELLEXECUTEINFOW sei)
EXTERN_C HINSTANCE WINAPI WOWShellExecute(HWND hWnd, LPCSTR lpVerb, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT iShowCmd, void *callback)
static BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc)
static HDDEDATA CALLBACK dde_cb(UINT uType, UINT uFmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hData, ULONG_PTR dwData1, ULONG_PTR dwData2)
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_CLASSALL
static WCHAR * expand_environment(const WCHAR *str)
HINSTANCE WINAPI FindExecutableA(LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult)
static UINT_PTR SHELL_execute_url(LPCWSTR lpFile, LPCWSTR wcmd, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out, SHELL_ExecuteW32 execfunc)
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)
static VOID ShellExecute_ShowError(_In_ const SHELLEXECUTEINFOW *ExecInfo, _In_opt_ LPCWSTR pszCaption, _In_ DWORD dwError)
EXTERN_C BOOL PathIsExeW(LPCWSTR lpszPath)
static HRESULT shellex_run_context_menu_default(IShellExtInit *obj, LPSHELLEXECUTEINFOW sei)
static void do_error_dialog(UINT_PTR retval, HWND hwnd, WCHAR *filename)
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
static UINT SHELL_FindExecutableByVerb(LPCWSTR lpVerb, LPWSTR key, LPWSTR classname, LPWSTR command, LONG commandlen)
static UINT_PTR SHELL_ExecuteW(const WCHAR *lpCmd, WCHAR *env, BOOL shWait, const SHELLEXECUTEINFOW *psei, LPSHELLEXECUTEINFOW psei_out)
static BOOL SHELL_InRunDllProcess(VOID)
static BOOL SHELL_translate_idlist(LPSHELLEXECUTEINFOW sei, LPWSTR wszParameters, DWORD parametersLen, LPWSTR wszApplicationName, DWORD dwApplicationNameLen)
static HKEY ShellExecute_GetClassKey(const SHELLEXECUTEINFOW *sei)
static HRESULT shellex_get_contextmenu(LPSHELLEXECUTEINFOW sei, CComPtr< IContextMenu > &cm)
EXTERN_C HINSTANCE WINAPI RealShellExecuteA(_In_opt_ HWND hwnd, _In_opt_ LPCSTR lpOperation, _In_opt_ LPCSTR lpFile, _In_opt_ LPCSTR lpParameters, _In_opt_ LPCSTR lpDirectory, _In_opt_ LPSTR lpReturn, _In_opt_ LPCSTR lpTitle, _In_opt_ LPVOID lpReserved, _In_ INT nCmdShow, _Out_opt_ PHANDLE lphProcess)
static HRESULT shellex_get_dataobj(LPSHELLEXECUTEINFOW sei, CComPtr< IDataObject > &dataObj)
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
static LPWSTR SHELL_BuildEnvW(const WCHAR *path)
UINT_PTR(* SHELL_ExecuteW32)(const WCHAR *lpCmd, WCHAR *env, BOOL shWait, const SHELLEXECUTEINFOW *sei, LPSHELLEXECUTEINFOW sei_out)
static HRESULT SHELL_GetPathFromIDListForExecuteW(LPCITEMIDLIST pidl, LPWSTR pszPath, UINT uOutSize)
static void ParseTildeEffect(PWSTR &res, LPCWSTR &args, DWORD &len, DWORD &used, int argNum)
HINSTANCE WINAPI ShellExecuteA(HWND hWnd, LPCSTR lpVerb, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT iShowCmd)
EXTERN_C HINSTANCE WINAPI RealShellExecuteExA(_In_opt_ HWND hwnd, _In_opt_ LPCSTR lpOperation, _In_opt_ LPCSTR lpFile, _In_opt_ LPCSTR lpParameters, _In_opt_ LPCSTR lpDirectory, _In_opt_ LPSTR lpReturn, _In_opt_ LPCSTR lpTitle, _In_opt_ LPVOID lpReserved, _In_ INT nCmdShow, _Out_opt_ PHANDLE lphProcess, _In_ DWORD dwFlags)
static BOOL SHELL_TryAppPathW(LPCWSTR szName, LPWSTR lpResult, WCHAR **env)
EXTERN_C HINSTANCE WINAPI RealShellExecuteW(_In_opt_ HWND hwnd, _In_opt_ LPCWSTR lpOperation, _In_opt_ LPCWSTR lpFile, _In_opt_ LPCWSTR lpParameters, _In_opt_ LPCWSTR lpDirectory, _In_opt_ LPWSTR lpReturn, _In_opt_ LPCWSTR lpTitle, _In_opt_ LPVOID lpReserved, _In_ INT nCmdShow, _Out_opt_ PHANDLE lphProcess)
@ OAIF_ALLOW_REGISTRATION
#define IDS_FILE_NOT_FOUND
#define IDS_SHLEXEC_NOASSOC
ITEMIDLIST UNALIGNED * LPITEMIDLIST
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
#define EXCEPTION_NONCONTINUABLE
#define LANG_USER_DEFAULT
#define INVALID_FILE_ATTRIBUTES
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
DWORD WINAPI GetLastError(void)
#define STARTF_USESHOWWINDOW
#define CREATE_UNICODE_ENVIRONMENT
#define FORMAT_MESSAGE_FROM_SYSTEM
#define CREATE_SEPARATE_WOW_VDM
#define FORMAT_MESSAGE_ARGUMENT_ARRAY
LPWSTR WINAPI GetEnvironmentStringsW(void)
#define EXCEPTION_ACCESS_VIOLATION
#define CREATE_NEW_CONSOLE
struct _STARTUPINFOW STARTUPINFOW
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define ERROR_DLL_NOT_FOUND
#define HRESULT_FROM_WIN32(x)
#define ERROR_FUNCTION_FAILED
#define HKEY_LOCAL_MACHINE
#define HKEY_CLASSES_ROOT
HMENU WINAPI CreatePopupMenu(void)
UINT WINAPI GetMenuDefaultItem(_In_ HMENU hMenu, _In_ UINT fByPos, _In_ UINT gmdiFlags)
int WINAPI GetMenuItemCount(_In_opt_ HMENU)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
HMENU WINAPI CreateMenu(void)
LPWSTR WINAPI CharLowerW(_Inout_ LPWSTR)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
DWORD WINAPI WaitForInputIdle(_In_ HANDLE, _In_ DWORD)
#define MAKEINTRESOURCEA(i)
BOOL WINAPI DestroyMenu(_In_ HMENU)
BOOL WINAPI GetMenuItemInfoW(_In_ HMENU, _In_ UINT, _In_ BOOL, _Inout_ LPMENUITEMINFOW)
#define MAKEINTRESOURCEW(i)
#define IID_PPV_ARG(Itype, ppType)
#define IID_NULL_PPV_ARG(Itype, ppType)