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