Call IShellExecuteHook interface for ShellExecute() calls with ID
lists.
diff --git a/dlls/shell32/shlexec.c b/dlls/shell32/shlexec.c
index 7208f80..a05bd20 100644
--- a/dlls/shell32/shlexec.c
+++ b/dlls/shell32/shlexec.c
@@ -864,8 +864,22 @@
}
/* process the IDList */
- if ((sei_tmp.fMask & SEE_MASK_INVOKEIDLIST) == SEE_MASK_INVOKEIDLIST) /*0x0c*/
+ if (sei_tmp.fMask & SEE_MASK_IDLIST)
{
+ IShellExecuteHookW* pSEH;
+
+ HRESULT hr = SHBindToParent(sei_tmp.lpIDList, &IID_IShellExecuteHookW, (LPVOID*)&pSEH, NULL);
+
+ if (SUCCEEDED(hr))
+ {
+ hr = IShellExecuteHookW_Execute(pSEH, sei);
+
+ IShellExecuteHookW_Release(pSEH);
+
+ if (hr == S_OK)
+ return TRUE;
+ }
+
wszApplicationName[0] = '"';
SHGetPathFromIDListW(sei_tmp.lpIDList, wszApplicationName+1);
strcatW(wszApplicationName, wQuote);