shell32: Implement ShellExec_RunDLL.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
5ec4d1be97
commit
67826491a6
|
@ -440,9 +440,9 @@
|
|||
@ stub SheShortenPathW
|
||||
@ stdcall ShellAboutA(long str str long)
|
||||
@ stdcall ShellAboutW(long wstr wstr long)
|
||||
@ stub ShellExec_RunDLL
|
||||
@ stub ShellExec_RunDLLA
|
||||
@ stub ShellExec_RunDLLW
|
||||
@ stdcall ShellExec_RunDLL(long long str long) ShellExec_RunDLLA
|
||||
@ stdcall ShellExec_RunDLLA(long long str long)
|
||||
@ stdcall ShellExec_RunDLLW(long long wstr long)
|
||||
@ stdcall ShellExecuteA(long str str str str long)
|
||||
@ stdcall ShellExecuteEx (long) ShellExecuteExA
|
||||
@ stdcall ShellExecuteExA (long)
|
||||
|
|
|
@ -2015,6 +2015,58 @@ HINSTANCE WINAPI WOWShellExecute(HWND hWnd, LPCSTR lpVerb,LPCSTR lpFile,
|
|||
return seiW.hInstApp;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* ShellExec_RunDLLW [SHELL32.@]
|
||||
*/
|
||||
void WINAPI ShellExec_RunDLLW(HWND hwnd, HINSTANCE instance, WCHAR *cmdline, int cmdshow)
|
||||
{
|
||||
BOOL in_single_quotes = FALSE, in_double_quotes = FALSE;
|
||||
WCHAR *args;
|
||||
|
||||
TRACE("%p, %p, %s, %d\n", hwnd, instance, debugstr_w(cmdline), cmdshow);
|
||||
|
||||
/* Replace the first whitespace character in the command line string with a
|
||||
null terminator to separate the program name from the program arguments */
|
||||
for (args = cmdline; *args; args++)
|
||||
{
|
||||
switch (*args)
|
||||
{
|
||||
case '\\':
|
||||
args++; /* skip the next character */
|
||||
break;
|
||||
case '\'':
|
||||
if (!in_double_quotes)
|
||||
in_single_quotes = !in_single_quotes;
|
||||
break;
|
||||
case '"':
|
||||
if (!in_single_quotes)
|
||||
in_double_quotes = !in_double_quotes;
|
||||
break;
|
||||
case ' ':
|
||||
case '\t':
|
||||
if (!in_single_quotes && !in_double_quotes)
|
||||
{
|
||||
*args = 0;
|
||||
args++;
|
||||
goto execute;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
execute:
|
||||
ShellExecuteW(hwnd, NULL, cmdline, args, NULL, cmdshow);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* ShellExec_RunDLLA [SHELL32.@]
|
||||
*/
|
||||
void WINAPI ShellExec_RunDLLA(HWND hwnd, HINSTANCE instance, CHAR *cmdline, int cmdshow)
|
||||
{
|
||||
WCHAR *cmdlineW;
|
||||
ShellExec_RunDLLW(hwnd, instance, __SHCloneStrAtoW(&cmdlineW, cmdline), cmdshow);
|
||||
SHFree(cmdlineW);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* OpenAs_RunDLLA [SHELL32.@]
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue