[SHELL32]
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Wed, 13 Mar 2013 01:35:46 +0000 (01:35 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Wed, 13 Mar 2013 01:35:46 +0000 (01:35 +0000)
commit471be3e8680e9ead53effa44fab34893398b4d45
tree512b002f2c5e88ee98b94a087f3559e12ac469cc
parent17c0fa64defb7623d5957563c80908aeca77910c
[SHELL32]
Implement the usage of the STARTF_TITLEISLINKNAME flag (in a STARTUPINFO structure, it signals that the program was started from a shell link, and therefore its lpTitle member holds the path of the link).
What I do is that, in CShellLink::InvokeCommand (called when a shortcut is being executed), I initialize the SHELLEXECUTEINFO structure such that we know that we are starting from a shortcut (use the
SEE_MASK_HASLINKNAME flag), and to hold the path to the flag I use its lpClass member (which is not used for other things in this code path). Then the whole thing is passed to ShellExecuteExW which, in turn,
calls the SHELL_ExecuteW function. This function reads the SHELLEXECUTEINFO structure and, if it has the flag SEE_MASK_HASLINKNAME (or SEE_MASK_HASTITLE too, if somebody also uses lpClass to pass a particular
title for the startup), we use the forementioned lpClass member, holding the link path, as the title (lpTitle member) of a new STARTUPINFO object used when calling CreateProcess (and thus, launching the
new application). So that this application will be aware that she was launched via a link (therefore we become compliant with the STARTF_TITLEISLINKNAME documentation).

svn path=/branches/ros-csrss/; revision=58480
dll/win32/shell32/shelllink.cpp
dll/win32/shell32/shelllink.h
dll/win32/shell32/shlexec.cpp