/// <summary> /// Convert a Parsable path to PIDL /// </summary> private static PIDL PathtoPIDL(string path) { IntPtr pidlPtr; uint pchEaten = 0; ShellAPI.SFGAO pdwAttributes = 0; using (ShellFolder2 _desktopShellFolder = getDesktopShellFolder()) _desktopShellFolder.ParseDisplayName(IntPtr.Zero, IntPtr.Zero, path, ref pchEaten, out pidlPtr, ref pdwAttributes); PIDL pidl = new PIDL(pidlPtr, false); return(pidl); }
internal static PIDL PathToPIDL(string path) { path = Helper.RemoveSlash(path); IntPtr pidlPtr; uint pchEaten = 0; ShellAPI.SFGAO pdwAttributes = 0; using (ShellFolder2 _desktopShellFolder = getDesktopShellFolder()) { int hr = _desktopShellFolder.ParseDisplayName( IntPtr.Zero, IntPtr.Zero, path, ref pchEaten, out pidlPtr, ref pdwAttributes); if (pidlPtr == IntPtr.Zero || hr != ShellAPI.S_OK) { /*Marshal.ThrowExceptionForHR(hr);*/ return(null); } //Commented because this is part of init and it's too time consuming. } return(new PIDL(pidlPtr, false)); }