mirror of
https://github.com/reactos/reactos.git
synced 2025-01-07 06:45:24 +00:00
Only use the Folder class handler if we're actually executing a folder.
Fixes bug 1235. svn path=/trunk/; revision=20564
This commit is contained in:
parent
6a771b2fde
commit
d31486016d
1 changed files with 16 additions and 3 deletions
|
@ -1200,7 +1200,9 @@ BOOL SHELL_execute( LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc )
|
|||
UINT_PTR retval = 31;
|
||||
WCHAR wcmd[1024];
|
||||
WCHAR buffer[MAX_PATH];
|
||||
WCHAR target[MAX_PATH];
|
||||
BOOL done;
|
||||
DWORD attribs;
|
||||
|
||||
/* make a local copy of the LPSHELLEXECUTEINFO structure and work with this from now on */
|
||||
memcpy(&sei_tmp, sei, sizeof(sei_tmp));
|
||||
|
@ -1315,9 +1317,20 @@ BOOL SHELL_execute( LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc )
|
|||
strcpyW(wszApplicationName, wExplorer);
|
||||
|
||||
sei_tmp.fMask &= ~SEE_MASK_INVOKEIDLIST;
|
||||
} else if (HCR_GetExecuteCommandW(0, wszFolder, sei_tmp.lpVerb?sei_tmp.lpVerb:wszOpen, buffer, sizeof(buffer))) {
|
||||
SHELL_ArgifyW(wszApplicationName, sizeof(wszApplicationName)/sizeof(WCHAR), buffer, NULL, sei_tmp.lpIDList, NULL);
|
||||
|
||||
} else {
|
||||
/* Check if we're executing a directory and if so use the
|
||||
handler for the Folder class */
|
||||
strcpyW(target, buffer);
|
||||
attribs = GetFileAttributesW(buffer);
|
||||
if (attribs != INVALID_FILE_ATTRIBUTES &&
|
||||
0 != (attribs & FILE_ATTRIBUTE_DIRECTORY) &&
|
||||
HCR_GetExecuteCommandW(0, wszFolder,
|
||||
sei_tmp.lpVerb?sei_tmp.lpVerb:wszOpen,
|
||||
buffer, sizeof(buffer))) {
|
||||
SHELL_ArgifyW(wszApplicationName,
|
||||
sizeof(wszApplicationName)/sizeof(WCHAR),
|
||||
buffer, target, sei_tmp.lpIDList, NULL);
|
||||
}
|
||||
sei_tmp.fMask &= ~SEE_MASK_INVOKEIDLIST;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue