我正在实现类似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) ;
}