On Sat, 13 Mar 2004 14:48:38 +0100 (CET), you wrote: [snip] Can you try if attached patch works? Rein. -- Rein Klazes rklazes@xxxxxxxxx
--- wine/dlls/shell32/shlexec.c 2004-03-06 11:55:48.000000000 +0100 +++ mywine/dlls/shell32/shlexec.c 2004-03-16 15:22:19.000000000 +0100 @@ -134,8 +134,16 @@ STARTUPINFOW startup; PROCESS_INFORMATION info; UINT retval = 31; + UINT gcdret = 0; + WCHAR curdir[MAX_PATH]; TRACE("Execute %s from directory %s\n", debugstr_w(lpCmd), debugstr_w(sei->lpDirectory)); + /* ShellExecute specifies the command from sei->lpDirectory + * if present. Not from the current dir as CreateProcess does */ + if( sei->lpDirectory && sei->lpDirectory[0] ) + if( ( gcdret = GetCurrentDirectoryW( MAX_PATH, curdir))) + if( !SetCurrentDirectoryW( sei->lpDirectory)) + ERR("cannot set directory %s\n", debugstr_w(sei->lpDirectory)); ZeroMemory(&startup,sizeof(STARTUPINFOW)); startup.cb = sizeof(STARTUPINFOW); startup.dwFlags = STARTF_USESHOWWINDOW; @@ -164,6 +172,10 @@ TRACE("returning %u\n", retval); sei->hInstApp = (HINSTANCE)retval; + if( gcdret ) + if( !SetCurrentDirectoryW( curdir)) + ERR("cannot return to directory %s\n", debugstr_w(curdir)); + return retval; }