2012-05-04 2 views
3

폴더와 파일의 지정된 항목에 대한 속성 창을 표시해야합니다.여러 셸 개체에 대한 속성 시트 표시

속성 창을 표시하는 항목 하나는 매우 쉽습니다. .lp 파일 필드 만 설정하면됩니다. 하지만 여러 항목에 대한 속성 창을 표시하는 방법을 알 수 없습니다. "은 File2.txt" "file2.txt" "와 같은 .lpFile에있는 파일을 열거

1)"등이 작동하지 않습니다. 파일 목록이 너무 거대 할 수 있기 때문에 그것이 적용되지 않는 경우에도 작동합니다.

2) PIDLIST_ABSOLUTE를 통해 작업 한 결과가 없습니다. ILCreateFromPath를 통해 단일 파일에 대해 PIDLIST_ABSOLUTE를 만들 수 있지만 여러 PIDLIST_ABSOLUTE를 하나로 병합 할 수 없습니다.

해결 방법이 있습니까? 모든 답변을 부탁드립니다

추신 : 나는 최근에 이해했듯이 PIDLIST_ABSOLUTE는 고유 한 고유 한 개체에 대해 고유하게 작성되었습니다. 따라서 두 개 이상의 PIDLIST_ABSOLUTE를 연결할 수 없습니다. 그러나 문제는 여전히 실제입니다.

+0

? 확실히 지원되지 않습니다. –

+0

Win32 임베디드 탐색기는 하나의 속성 창에서 선택한 여러 항목의 속성을 표시 할 수 있습니다. 나는 같은 것을 구현하고 싶다. – Orange

+2

IShellFolder :: GetUIObjectOf를 호출하고 여러 개의 pidls를 전달한 다음 IContextMenu를 요청한 다음 "속성"동사를 호출합니다. –

답변

0

전화 IShellFolder :: GetUIObjectOf를 여러 pidls을 통과 한 후 '속성'동사를 호출하십시오 의 IContextMenu 요청 -.. 레이몬드 첸

감사합니다, 레이몬드 그것은 작동

! 델파이에서
0

가장 간단한 방법 :

IExplorerBrowser 또는 클립 보드

에서 데이터 객체를 가져옵니다

그렇지 않으면 사용하는 동사 '속성'

당신은 * 동시에 여러 속성 창 *를 표시하려는
function TExplorerFrame.DoVerb(Verb: AnsiString): Boolean; 
var 
    LFolderView: IFolderView2; 
begin 
    Result := False; 
    if Supports(FCurrentShellView, IID_IFOLDERVIEW2, LFolderView) then 
    begin 
    if Verb = 'default' then 
     Result := (LFolderView.InvokeVerbOnSelection(nil) = S_OK) 
    else 
     Result := (LFolderView.InvokeVerbOnSelection(pAnsiChar(@Verb[1])) = S_OK); 
    end; 
end; 
관련 문제