shell32 patch 26

Martin Fuchs martin-fuchs at gmx.net
Fri Mar 26 14:53:43 CST 2004


Changelog:
call IShellExecuteHook interface for ShellExecute() calls with ID lists


Index: shlexec.c
===================================================================
RCS file: /home/wine/wine/dlls/shell32/shlexec.c,v
retrieving revision 1.36
diff -u -p -d -r1.36 shlexec.c
--- shlexec.c	26 Mar 2004 02:29:12 -0000	1.36
+++ shlexec.c	26 Mar 2004 20:50:52 -0000
@@ -864,8 +864,22 @@ BOOL WINAPI ShellExecuteExW32 (LPSHELLEX
     }
 
     /* process the IDList */
-    if ((sei_tmp.fMask & SEE_MASK_INVOKEIDLIST) == SEE_MASK_INVOKEIDLIST) /*0x0c*/
+    if (sei_tmp.fMask & SEE_MASK_INVOKEIDLIST) /* 0x0c: includes 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);





More information about the wine-patches mailing list