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);