Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/shell32/dde.c | 15 +++++++++++++++ dlls/shell32/tests/progman_dde.c | 10 ++-------- 2 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/dlls/shell32/dde.c b/dlls/shell32/dde.c index a1aac15..d04bab8 100644 --- a/dlls/shell32/dde.c +++ b/dlls/shell32/dde.c @@ -121,6 +121,7 @@ static DWORD PROGMAN_OnExecute(WCHAR *command, int argc, WCHAR **argv) { static const WCHAR create_groupW[] = {'C','r','e','a','t','e','G','r','o','u','p',0}; static const WCHAR delete_groupW[] = {'D','e','l','e','t','e','G','r','o','u','p',0}; + static const WCHAR show_groupW[] = {'S','h','o','w','G','r','o','u','p',0};
if (!strcmpiW(command, create_groupW)) { @@ -160,6 +161,20 @@ static DWORD PROGMAN_OnExecute(WCHAR *command, int argc, WCHAR **argv)
if (ret || shfos.fAnyOperationsAborted) return DDE_FNOTPROCESSED; } + else if (!strcmpiW(command, show_groupW)) + { + WCHAR *path; + + /* Win32 requires the second parameter to be present but seems to + * ignore its actual value. */ + if (argc < 2) return DDE_FNOTPROCESSED; + + path = get_programs_path(argv[0]); + + ShellExecuteW(NULL, NULL, path, NULL, NULL, SW_SHOWNORMAL); + + HeapFree(GetProcessHeap(), 0, path); + } else { FIXME("unhandled command %s\n", debugstr_w(command)); diff --git a/dlls/shell32/tests/progman_dde.c b/dlls/shell32/tests/progman_dde.c index c5fd262..b54a72a 100644 --- a/dlls/shell32/tests/progman_dde.c +++ b/dlls/shell32/tests/progman_dde.c @@ -332,18 +332,12 @@ static void test_progman_dde(DWORD instance, HCONV hConv) ok(!check_exists("Group1/f3g1Name.lnk"), "link should not exist\n");
error = dde_execute(instance, hConv, "[ShowGroup(Startup, 0)]"); - todo_wine { ok(error == DMLERR_NO_ERROR, "expected DMLERR_NO_ERROR, got %u\n", error); - if (error == DMLERR_NO_ERROR) - ok(check_window_exists(StartupTitle), "window not created\n"); - } + ok(check_window_exists(StartupTitle), "window not created\n");
error = dde_execute(instance, hConv, "[ShowGroup(Group1, 0)]"); - todo_wine { ok(error == DMLERR_NO_ERROR, "expected DMLERR_NO_ERROR, got %u\n", error); - if (error == DMLERR_NO_ERROR) - ok(check_window_exists(Group1Title), "window not created\n"); - } + ok(check_window_exists(Group1Title), "window not created\n");
/* DeleteGroup Test */ error = dde_execute(instance, hConv, "[DeleteGroup(Group1)]");