显示多个外壳对象的属性表
Display property sheets for multiple shell objects
我必须显示指定项目的属性窗口:文件夹和文件。
对于显示属性窗口的一个项目非常简单 - 只需设置 .lpFile 字段。但是我无法了解如何显示多个项目的属性窗口。
1)枚举.lpFile中的文件,如"file1.txt"file2.txt"等不起作用。即使它有效也不适用,因为文件列表可能太大。
2)通过PIDLIST_ABSOLUTE工作没有带来任何结果。可以通过 ILCreateFromPath 为单个文件创建PIDLIST_ABSOLUTE,但不能将多个PIDLIST_ABSOLUTEs合并为一个。
有人有任何解决方法吗?任何答案将不胜感激
PS:正如我最近了解到的那样,PIDLIST_ABSOLUTE是为具体的独特对象而唯一创建的。因此,两个或多个PIDLIST_ABSOLUTE无法连接起来。但问题仍然是现实的。
调用 IShellFolder::GetUIObjectOf,传递多个 pidls,并请求 IContextMenu,然后调用"properties"动词。——陈炜
谢谢你,雷蒙德。它有效!
德尔福最简单的方法:
从IExplorerBrowser或剪贴板获取数据对象
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;
相关文章:
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- C++ 在堆栈中包含多态属性的类对象存储
- 为什么我的 DeviceInformation 对象没有 System.Devices.InterfaceClassGuid 属性?
- 私有对象的互斥体 - 全局与属性
- 如何从传递到对象的对象内部访问对象的类属性?
- 从 lambda 返回的对象将丢失属性值
- 是否可以在C++中移动临时对象的属性?
- 如何通过对象的类属性删除对象,并返回其对象值?
- 类对象属性是否可以调用返回属性应具有的值的方法C++?
- C++对象作为 Objective-C++ 属性
- 如何在 C++ 中使用提升属性树从 JSON 文件中读取对象数组
- 对象属性同级访问
- 如何访问 JSCValue 对象的属性
- 从基于属性的列表中返回随机对象
- 迭代 Napi::对象属性(键)在 Node.js C++ N-API 中
- 返回对象会丢失属性
- 根据 C++ 中的属性对对象类进行分区的优化方法
- 基于对象的两个属性的自定义比较器会引发异常
- 创建新对象并立即为其设置属性时出现编译器错误
- 复合属性对象,当所有子对象都更改时,它禁止多个信号发射