示例#1
0
 static bool _ShellItemFromString(string path, out api.IShellItem si)
 {
     if (path.Starts(":: "))
     {
         var p = Pidl.FromString(path); if (p == null)
         {
             si = null; return(false);
         }
         return(0 == api.SHCreateItemFromIDList(p.UnsafePtr, typeof(api.IShellItem).GUID, out si));
     }
     else
     {
         return(0 == api.SHCreateItemFromParsingName(path, default, typeof(api.IShellItem).GUID, out si));
示例#2
0
        static string _ShellItemToString(api.IShellItem r)
        {
            //if(!f.Has(api.FOS.FOS_FORCEFILESYSTEM)) {
            //	var k=r.GetAttributes(0xffffffff);
            //	if(0==(k&api.SFGAO_FILESYSTEM)) {
            //		print.it(k);
            //	}
            //}

            var s = r.GetDisplayName(SIGDN.FILESYSPATH | SIGDN.URL);             //info: for a non-FS item, even with SIGDN.FILESYSPATH gets string like "::{GUID}"

            return(Pidl.ClsidToItemidlist_(s));
        }