3

我必须显示指定项目的属性窗口:文件夹和文件。

对于一项显示属性窗口非常简单——只需设置 .lpFile 字段。但我不知道如何显示几个项目的属性窗口。

1) 枚举 .lpFile 中的文件,如 ""file1.txt" "file2.txt"" 等不起作用。即使它有效,它也不适用,因为文件列表可能太大。

2) 通过 PIDLIST_ABSOLUTE 工作没有带来任何结果。可以通过 ILCreateFromPath 为单个文件创建 PIDLIST_ABSOLUTE,但不能将多个 PIDLIST_ABSOLUTE 合并为一个。

有没有人有任何解决方法?任何答案将不胜感激

PS:正如我最近所了解的,PIDLIST_ABSOLUTE 是为具体的唯一对象创建的。所以两个或多个 PIDLIST_ABSOLUTE 不能连接。但问题仍然是实际的。

4

2 回答 2

0

调用 IShellFolder::GetUIObjectOf,传递多个 pidls,并请求 IContextMenu,然后调用“属性”动词。 – Raymond Chen

谢谢你,雷蒙德。有用!

于 2012-10-30T08:26:58.097 回答
0

delphi中最简单的方法:

从 IExplorerBrowser 或剪贴板获取 DataObject

 if (OleGetClipboard(LDataObject) = S_OK) then
    SHMultiFileProperties(LDataObject, 0);

否则使用动词“属性”:

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;
于 2013-12-10T16:15:31.640 回答