当前,我的属性处理程序提供的属性可以显示在Windows资源管理器的type列中String。我的目标是通过(显示)类型Icon的属性扩展处理程序,该属性可以作为列添加到Windows资源管理器的详细信息视图中。在此列中,应该为每个文件项目显示一个图标,例如,该图标可以代表几种可能状态中文件的特定状态。
但是,我没有在Windows属性系统的基础上正确地组合创建具有这些特征的属性的必要部分。
我的方法的第一步是在.propdesc文件中为属性指定XML ,然后执行通常的PSRegisterPropertySchema注册过程。这将始终成功运行,并且该属性在Windows属性系统中列出。
<propertyDescription name="myprop.icon" formatID="{c5f47221-1053-4a75-aadc-0bfbac1c3e9c}" propID="444">
<typeInfo type="???" isInnate="true" isViewable="true"/>
<labelInfo label="MyProp-Icon"/>
<displayInfo defaultColumnWidth="25" alignment="Center">
<drawControl control="IconList"/>
</displayInfo>
</propertyDescription>
Run Code Online (Sandbox Code Playgroud)
的存在<drawControl>(drawControl)与control类型的属性"IconList"的内部<displayInfo>标签让我觉得我的想法可能是可行的。
但是如何type在<typeInfo>标签(typeInfo)中设置相应的内容呢?根据概念的不同,control="IconList"它可以是一个整数,作为像图像列表一样的索引。或者它是一个"Buffer","Blob"或者"Stream"表示图像本身?
最后,在GetValue()属性处理程序外壳扩展的方法PROPVARIANT中,必须根据.propdesc文件的属性描述进行初始化:
HRESULT PropertyHandler::GetValue (REFPROPERTYKEY key, PROPVARIANT *pPropVar)
{
HRESULT hr = ERROR_NOT_FOUND;
if (key.pid == 444)
{ …Run Code Online (Sandbox Code Playgroud)