我必须显示指定项目的属性窗口:文件夹和文件。
对于显示属性窗口的一个项目非常简单 - 只需设置.lpFile字段即可。但我无法得到如何显示几个项目的属性窗口。
1)枚举.lpFile中的文件,如“”file1.txt“”file2.txt“”等等不起作用。即使它起作用也不适用,因为文件列表可能太大了。
2)通过PIDLIST_ABSOLUTE工作没有带来任何结果。可以通过ILCreateFromPath为单个文件创建PIDLIST_ABSOLUTE,但不能将多个PIDLIST_ABSOLUTE合并为一个。
有没有人有任何解决方法?任何答案将不胜感激
PS:正如我最近所理解的那样,PIDLIST_ABSOLUTE是为具体的唯一对象创建的。因此无法连接两个或多个PIDLIST_ABSOLUTE。但问题仍然存在。
答案 0 :(得分:0)
调用IShellFolder :: GetUIObjectOf,传递多个pidl,并要求输入 IContextMenu,然后调用“属性”动词。 - Raymond Chen
谢谢你,雷蒙德。它有效!
答案 1 :(得分: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;