Interaction between shell32.ShellExecute, IContextMenu and the ShellLink object?

Kevin Koltzau kevin at
Fri Sep 23 08:46:06 CDT 2005

On Friday 23 September 2005 4:10 am, Mike McCormack wrote:
> Hi All,
> The question is, through which interface (or set of interfaces) does
> shell32 invoke the Shelllink object?
>  From what I can determine, ShellExecute should use the .lnk extension
> to look in the registry (HKCR\.lnk -> HKCR\lnkfile\CLSID) and get
> CLSID_ShellLink.  Using the CLSID, it calls CoCreateInstance, then
> IShellExtInit->Initialize() which loads the .lnk file.
> Unfortunately, the next step is unclear to me.  I think that
> IContextMenu->InvokeCommand is used, but I'm not sure as to how.

Pass the result of IShellLink::GetIDList to IShellFolder::GetUIObjectOf to get 
an IContextMenu
Or if IShellLink::GetIDList fails, you could pass IShellLink::GetPath to 
IShellFolder::ParseDisplayName first
Then call IContextMenu::InvokeCommand

More information about the wine-devel mailing list