Shell Namespace関連のコード例

親フォルダのIShellFolderと親フォルダからの相対的なPIDLを取得する。

       /// <summary>
       /// 
       /// </summary>
       /// <param name="lpifq">the item's fully qualified PIDL</param>
       /// <param name="riid">インターフェイスのIID</param>
       /// <param name="ppv">親フォルダのIShellFolder interface</param>
       /// <param name="ppidlLast">親フォルダからの相対的なpidl</param>
       /// <returns></returns>
       [DllImport("shell32")]
       public static extern int SHBindToParent(IntPtr lpifq, [In] ref Guid riid, out IntPtr ppv, out IntPtr ppidlLast);
       /// <summary>
       /// 親フォルダのIShellFolderと親フォルダからの相対的なPIDLを取得する。
       /// </summary>
       /// <param name="absolutePidl">アイテムのAbsolute PIDL</param>
       /// <param name="parent">親フォルダのIShellFolder</param>
       /// <param name="relativePidl">アイテムの親フォルダからのRelative PIDL</param>
       /// <returns>If this function succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>
       public static int MyBindToParent(IntPtr absolutePidl, out IShellFolder parent, IntPtr relativePidl)
       {
           IntPtr parentPtr = IntPtr.Zero;
           int ret;
           try
           {
               ret = SHBindToParent(absolutePidl, ref IID_IShellFolder, out parentPtr, out relativePidl);
               if (ret != S_OK)
                   throw new Win32Exception();
               parent = (IShellFolder)Marshal.GetTypedObjectForIUnknown(parentPtr, typeof(IShellFolder));
           }
           finally
           {
               if (parentPtr != IntPtr.Zero)
               {
                   Marshal.Release(parentPtr);
               }
           }
           return ret;
       }

タグ:

C# Windows Explorer
+ タグ編集
  • タグ:
  • C#
  • Windows
  • Explorer

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2014年07月29日 19:12