diff --git "a/dll/win32/shell32/shelldesktop/dde.cpp" "b/dll/win32/shell32/shelldesktop/dde.cpp" index a9e103c076a..43dfc18ff04 100644 --- "a/dll/win32/shell32/shelldesktop/dde.cpp" +++ "b/dll/win32/shell32/shelldesktop/dde.cpp" @@ -196,6 +196,9 @@ static DWORD Dde_OnExecute(HCONV hconv, HSZ hszTopic, HDDEDATA hdata) cmd = cmdEnd + 1; } + if (NULL == StrChrW(szCommand, L'\'') && NULL == StrChrW(szCommand, L'\"')) + goto find_command_handler; + // Read first param after (, expecting quoted string if (*cmd != L')') { @@ -234,7 +237,7 @@ static DWORD Dde_OnExecute(HCONV hconv, HSZ hszTopic, HDDEDATA hdata) { if (*cmd != ':') { - ERR("Expected ':'. Invalid command.\n"); + ERR("Expected ':'. Invalid command '%S'.\n", Command); return DDE_FNOTPROCESSED; } @@ -260,6 +263,7 @@ static DWORD Dde_OnExecute(HCONV hconv, HSZ hszTopic, HDDEDATA hdata) UnknownParameter = StrToIntW(cmd); } +find_command_handler: TRACE("Parse end: cmd=%S, S=%d, pidl=%p, path=%S\n", Command, UnknownParameter, IdList, Path); // Find handler in list @@ -412,12 +416,33 @@ static DWORD CALLBACK DDE_OnShellFile(PWSTR strCommand, PWSTR strPath, LPITEMIDL return DDE_FNOTPROCESSED; } +static DWORD CALLBACK DDE_OnCreateGroup(PWSTR strCommand, PWSTR strPath, LPITEMIDLIST pidl, INT unkS) +{ + UNIMPLEMENTED; + return DDE_FACK; +} + +static DWORD CALLBACK DDE_OnShowGroup(PWSTR strCommand, PWSTR strPath, LPITEMIDLIST pidl, INT unkS) +{ + UNIMPLEMENTED; + return DDE_FACK; +} + +static DWORD CALLBACK DDE_OnAddItem(PWSTR strCommand, PWSTR strPath, LPITEMIDLIST pidl, INT unkS) +{ + UNIMPLEMENTED; + return DDE_FACK; +} + DDECommandHandler HandlerList [] = { { L"ViewFolder", DDE_OnViewFolder }, { L"ExploreFolder", DDW_OnExploreFolder }, { L"FindFolder", DDE_OnFindFolder }, - { L"ShellFile", DDE_OnShellFile } + { L"ShellFile", DDE_OnShellFile }, + { L"CreateGroup", DDE_OnCreateGroup }, + { L"ShowGroup", DDE_OnShowGroup }, + { L"AddItem", DDE_OnAddItem } }; const int HandlerListLength = _countof(HandlerList);