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