[SHELL32] Fix handling of multiple parameters in the 'Run' dialog (#665)

The "Run" dialog failed when multiple parameters wee specified.
We use instead a newly-created ShellExecCmdLine() helper function to fix the problem (as found via API-tracing on Windows).
Note that ShellExecCmdLine() starts to be exported with Vista+.

- Implement ShellExecCmdLine() function in shell32.
- Add URL support.
- Fix RunDlgProc function in shell32.
- Add a testcase for ShellExecCmdLine() function.

CORE-14790
This commit is contained in:
Katayama Hirofumi MZ 2018-08-05 20:39:17 +09:00 committed by Hermès BÉLUSCA - MAÏTO
parent ff63ef3c55
commit bfcbda227f
6 changed files with 790 additions and 15 deletions

View file

@ -546,6 +546,21 @@ WORD WINAPI ArrangeWindows(
WORD cKids,
CONST HWND * lpKids);
/* Flags for ShellExecCmdLine */
#define SECL_NO_UI 0x2
#define SECL_LOG_USAGE 0x8
#define SECL_USE_IDLIST 0x10
#define SECL_ALLOW_NONEXE 0x20
#define SECL_RUNAS 0x40
HRESULT WINAPI ShellExecCmdLine(
HWND hwnd,
LPCWSTR pwszCommand,
LPCWSTR pwszStartDir,
int nShow,
LPVOID pUnused,
DWORD dwSeclFlags);
/* RegisterShellHook types */
#define RSH_DEREGISTER 0
#define RSH_REGISTER 1