문제

파일을 나열하는 응용 프로그램이 있으며 사용자가 파일을 마우스 오른쪽 버튼으로 클릭 할 수 있으며 응용 프로그램에 선택한 파일의 Windows Context 메뉴가 표시됩니다.

나는 사용한다 SHParseDisplayName 파일 이름에 대한 PIDL을 얻습니다. 그런 다음 부모 객체에 바인딩합니다.

IntPtr pidlLast = IntPtr.Zero;
SHBindToParent(pidl, typeof(IShellFolder).GUID, out oShellFolder, out pidlLast);

부모가 있으면 상황에 맞는 메뉴를 구축 할 수 있습니다.

IntPtr result = IntPtr.Zero;
IShellFolder shellFolder = (IShellFolder)oShellFolder;
shellFolder.GetUIObjectOf(windowHandle, (uint)pidls.Count, 
        pidls.ToArray(), typeof(IContextMenu).GUID, 0, out result);

이것은 1 개의 항목이나 동일한 부모가있는 항목에 완벽하게 작동하지만 부모가있는 항목에 대한 컨텍스트 메뉴를 어떻게 표시합니까?

도움이 되었습니까?

해결책

향후 참조를 위해 분명히 사용할 수 있습니다 CDefFolderMenu_Create2 여러 쉘 항목에 대한 컨텍스트 메뉴를 만듭니다. 여기에서 몇 가지 훌륭한 정보를 찾을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top