mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-15 02:19:47 +00:00
wshom: Support default style argument in IWshShell3::Run.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53565
This commit is contained in:
parent
6f7d062583
commit
98f546ed82
|
@ -1332,9 +1332,9 @@ static WCHAR *split_command( BSTR cmd, WCHAR **params )
|
||||||
static HRESULT WINAPI WshShell3_Run(IWshShell3 *iface, BSTR cmd, VARIANT *style, VARIANT *wait, int *exit_code)
|
static HRESULT WINAPI WshShell3_Run(IWshShell3 *iface, BSTR cmd, VARIANT *style, VARIANT *wait, int *exit_code)
|
||||||
{
|
{
|
||||||
SHELLEXECUTEINFOW info;
|
SHELLEXECUTEINFOW info;
|
||||||
int waitforprocess;
|
int waitforprocess, show;
|
||||||
WCHAR *file, *params;
|
WCHAR *file, *params;
|
||||||
VARIANT s;
|
VARIANT v;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
|
|
||||||
|
@ -1343,25 +1343,26 @@ static HRESULT WINAPI WshShell3_Run(IWshShell3 *iface, BSTR cmd, VARIANT *style,
|
||||||
if (!style || !wait || !exit_code)
|
if (!style || !wait || !exit_code)
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
|
|
||||||
VariantInit(&s);
|
if (is_optional_argument(style))
|
||||||
hr = VariantChangeType(&s, style, 0, VT_I4);
|
show = SW_SHOWNORMAL;
|
||||||
|
else {
|
||||||
|
VariantInit(&v);
|
||||||
|
hr = VariantChangeType(&v, style, 0, VT_I4);
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
{
|
|
||||||
ERR("failed to convert style argument, %#lx\n", hr);
|
|
||||||
return hr;
|
return hr;
|
||||||
|
|
||||||
|
show = V_I4(&v);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_optional_argument(wait))
|
if (is_optional_argument(wait))
|
||||||
waitforprocess = 0;
|
waitforprocess = 0;
|
||||||
else {
|
else {
|
||||||
VARIANT w;
|
VariantInit(&v);
|
||||||
|
hr = VariantChangeType(&v, wait, 0, VT_I4);
|
||||||
VariantInit(&w);
|
|
||||||
hr = VariantChangeType(&w, wait, 0, VT_I4);
|
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
return hr;
|
return hr;
|
||||||
|
|
||||||
waitforprocess = V_I4(&w);
|
waitforprocess = V_I4(&v);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(file = split_command(cmd, ¶ms))) return E_OUTOFMEMORY;
|
if (!(file = split_command(cmd, ¶ms))) return E_OUTOFMEMORY;
|
||||||
|
@ -1371,7 +1372,7 @@ static HRESULT WINAPI WshShell3_Run(IWshShell3 *iface, BSTR cmd, VARIANT *style,
|
||||||
info.fMask = waitforprocess ? SEE_MASK_NOASYNC | SEE_MASK_NOCLOSEPROCESS : SEE_MASK_DEFAULT;
|
info.fMask = waitforprocess ? SEE_MASK_NOASYNC | SEE_MASK_NOCLOSEPROCESS : SEE_MASK_DEFAULT;
|
||||||
info.lpFile = file;
|
info.lpFile = file;
|
||||||
info.lpParameters = params;
|
info.lpParameters = params;
|
||||||
info.nShow = V_I4(&s);
|
info.nShow = show;
|
||||||
|
|
||||||
ret = ShellExecuteExW(&info);
|
ret = ShellExecuteExW(&info);
|
||||||
free(file);
|
free(file);
|
||||||
|
|
|
@ -251,7 +251,7 @@ static void test_wshshell(void)
|
||||||
retval = 0xdeadbeef;
|
retval = 0xdeadbeef;
|
||||||
str = SysAllocString(L"cmd.exe /c rd /s /q c:\\nosuchdir");
|
str = SysAllocString(L"cmd.exe /c rd /s /q c:\\nosuchdir");
|
||||||
hr = IWshShell3_Run(sh3, str, &arg, &arg2, &retval);
|
hr = IWshShell3_Run(sh3, str, &arg, &arg2, &retval);
|
||||||
todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||||
todo_wine ok(retval == ERROR_FILE_NOT_FOUND, "Unexpected retval %d.\n", retval);
|
todo_wine ok(retval == ERROR_FILE_NOT_FOUND, "Unexpected retval %d.\n", retval);
|
||||||
SysFreeString(str);
|
SysFreeString(str);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue