2012-04-30 1 views
0

저는 Windows-Explorer-view-like를 구현하고 있습니다.SHBindToParent, 부모 pidl을 얻으십시오

처음으로 나는 SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &pidl)을 통해 데스크탑 pidl을 가져 와서 그것을 클래스 atribute에 저장합니다. 내 IShellBrowser::BrowseObject가 호출 된 후, 나는이 메소드를 통해 pidl이 전달 된 속성을 오버 라이트합니다. 올라가고 싶으면 SHBindToParent으로 전화해서 저장된 pidl을 전달하십시오. 그러나 E_INVALIDARG 또는 데스크톱 pidl 중 하나가 있습니다. 나는 그 안에 잘못된 PIDL을 전달한 것으로 의심된다.

어떻게 부모 PIDL을 가져야합니까?

+0

코드 스 니펫을 붙여주세요. – Xearinox

+0

음,'IShellBrowser :: BrowseObject'는 상대 pidl을 취하지 만'SHBindToParent'는 절대 pidl을 취합니다. –

답변

1
// 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) ; 

} 
관련 문제