Тип обьекта в lnk файле
От: aircrazy  
Дата: 02.07.07 09:22
Оценка:
Нужно определить на что ссылается lnk файл. В случаее с регулярными файлами и папками всё понятно — их место положение будет указанно в интерфейсе IShellLink.
А что делать если в lnk файле находится ссылка на виртуальную папку или элемент shell`а?
Ниже привожу код в котором вытаскивается имя обьекта, но как вытащить тип или guid его я так и не осилил.

Подскажите, пожалуйста, как вытащить тип или guid обьекта!

                    shellLinkW.GetIDList(out pdlist);

                    IntPtr pidlRelative = IntPtr.Zero, ptrParent;
                    SHBindToParent(pdlist, IID_IShellFolder, out ptrParent, ref pidlRelative);
                    
                    obj = System.Runtime.InteropServices.Marshal.GetTypedObjectForIUnknown(
                        ptrParent, System.Type.GetType("Shell.IShellFolder"));
                    IShellFolder ishellParent = (IShellFolder)obj;
                     
                    STRRET ptrString;
                    retVal = ishellParent.GetDisplayNameOf(pidlRelative,
                        (uint)(SHGNO.SHGDN_NORMAL), out ptrString);

                    
                    System.Text.StringBuilder strDisplay = new System.Text.StringBuilder(256);
                    retVal = StrRetToBuf(ref ptrString, pidlRelative, strDisplay,
                        (uint)strDisplay.Capacity);

                    System.Runtime.InteropServices.Marshal.ReleaseComObject(ishellParent);
                    pMalloc.Free(pidlRelative);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(pMalloc);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.