ShellExecuteEx() flag SEE_MASK_IDLIST

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Changelog:
* implement flag SEE_MASK_IDLIST for ShellExecuteEx()
* remove warning message for previously unimplemented flag 
SEE_MASK_INVOKEIDLIST
* add a few TRACE messages

-- 
Martin Fuchs
martin-fuchs@xxxxxxx
Index: shlexec.c
===================================================================
RCS file: /home/wine/wine/dlls/shell32/shlexec.c,v
retrieving revision 1.24
diff -u -r1.24 shlexec.c
--- shlexec.c	10 Dec 2003 00:39:31 -0000	1.24
+++ shlexec.c	12 Dec 2003 23:16:24 -0000
@@ -647,7 +647,7 @@
     if (sei->lpParameters)
         strcpy(szCommandline, sei->lpParameters);
 
-    if (sei->fMask & (SEE_MASK_INVOKEIDLIST | SEE_MASK_ICON | SEE_MASK_HOTKEY |
+    if (sei->fMask & (SEE_MASK_ICON | SEE_MASK_HOTKEY |
         SEE_MASK_CONNECTNETDRV | SEE_MASK_FLAG_DDEWAIT |
         SEE_MASK_DOENVSUBST | SEE_MASK_FLAG_NO_UI | SEE_MASK_UNICODE |
         SEE_MASK_NO_CONSOLE | SEE_MASK_ASYNCOK | SEE_MASK_HMONITOR ))
@@ -663,22 +663,29 @@
     }
     else
     {
-        if (sei->fMask & SEE_MASK_IDLIST )
+        if (sei->fMask & SEE_MASK_IDLIST ) /*0x04*/
         {
+            LPVOID pv;
+            HGLOBAL hmem = SHAllocShared ( sei->lpIDList, ILGetSize(sei->lpIDList), 0);
+            pv = SHLockShared(hmem,0);
+            sprintf(szPidl,":%p",pv );
+            SHUnlockShared(pv);
+
             pos = strstr(szCommandline, "%I");
             if (pos)
             {
-                LPVOID pv;
-                HGLOBAL hmem = SHAllocShared ( sei->lpIDList, ILGetSize(sei->lpIDList), 0);
-                pv = SHLockShared(hmem,0);
-                sprintf(szPidl,":%p",pv );
-                SHUnlockShared(pv);
-
                 gap = strlen(szPidl);
                 len = strlen(pos)-2;
                 memmove(pos+gap,pos+2,len);
                 memcpy(pos,szPidl,gap);
+
+                TRACE("--SEE_MASK_IDLIST: cmdline=%s\n", szCommandline);
             }
+            else
+            {
+                SHGetPathFromIDListA (sei->lpIDList, szApplicationName);
+                TRACE("--SEE_MASK_IDLIST: idlist=%p (%s)\n", sei->lpIDList, szApplicationName);
+            }
         }
     }
 
@@ -731,7 +738,10 @@
 
     retval = execfunc(szApplicationName, NULL, sei, FALSE);
     if (retval > 32)
+    {
+        TRACE("execfunc: retval=%d sei->hInstApp=%d\n", retval, sei->hInstApp);
         return TRUE;
+    }
 
     /* Else, try to find the executable */
     cmd[0] = '\0';
@@ -789,6 +799,8 @@
         strcat(lpstrTmpFile, lpFile);
         retval = (UINT)ShellExecuteA(sei->hwnd, lpOperation, lpstrTmpFile, NULL, NULL, 0);
     }
+
+    TRACE("ShellExecuteExA32 retval=%d\n", retval);
 
     if (retval <= 32)
     {

[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux