我正在实现类似Windows-Explorer-view的视图。

首先,我通过SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &pidl)获取桌面pidl并将其存储在class atribute中。在调用IShellBrowser::BrowseObject之后,我通过此方法覆盖了pidl的属性。如果我想上去,我打电话给SHBindToParent,将存储的pidl传递给它,但是我却得到了E_INVALIDARG或台式机pidl。我怀疑我在其中传递了错误的PIDL。

我应该如何正确获得父母PIDL?

最佳答案

// C#
 [System.Runtime.InteropServices.DllImportAttribute("shell32.dll", EntryPoint="ILRemoveLastID")]
    [return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
public static extern  bool ILRemoveLastID(System.IntPtr pidl) ;

}

08-06 13:57