SHChangeNotifyRegister->SHCreateItemFromIDList->IShellItem2 在 SHCNE_CREATE 上没有 FILETIME 信息?
SHChangeNotifyRegister->SHCreateItemFromIDList->IShellItem2 has no FILETIME information on SHCNE_CREATE?
给定 SHChangeNotifyRegister()
文件夹,通过 SHCNE_CREATE
正在监视和检测新项目,并使用 SHCreateItemFromIDList()
将 PIDL
转换为 IShellItem2
尝试 IShellItem2::GetFileTime(PKEY_DateCreated, &createtime);
失败并显示 ERROR_NOT_FOUND
(未找到元素)。如果我尝试 PKEY_DateModified
,也一样。怎么可能?有没有办法包含日期(调试中断显示文件已经存在,可以在 windows 资源管理器中看到并且有一个 date/time)。是否还有其他事情要做或它不传递该信息? IShellItem2::GetDisplayName()
工作正常。这是 Win10 x64?
TIA!!
当 PIDL 仅包含名称而没有其他信息时,您正在查看一个简单的项目。这些由 SHSimpleIDListFromPath
当更改通知程序仅知道路径或者如果通知程序在创建 PIDL 时在绑定上下文中使用空查找信息时生成。
您唯一的选择是打盘并填写新的 PIDL。在通用 shell 命名空间中,这意味着要求 IShellFolder
解析显示名称。 IShellItem2::Update
可能会为你做这个,文档没有说明它是否对简单的项目有效。
给定 SHChangeNotifyRegister()
文件夹,通过 SHCNE_CREATE
正在监视和检测新项目,并使用 SHCreateItemFromIDList()
将 PIDL
转换为 IShellItem2
尝试 IShellItem2::GetFileTime(PKEY_DateCreated, &createtime);
失败并显示 ERROR_NOT_FOUND
(未找到元素)。如果我尝试 PKEY_DateModified
,也一样。怎么可能?有没有办法包含日期(调试中断显示文件已经存在,可以在 windows 资源管理器中看到并且有一个 date/time)。是否还有其他事情要做或它不传递该信息? IShellItem2::GetDisplayName()
工作正常。这是 Win10 x64?
TIA!!
当 PIDL 仅包含名称而没有其他信息时,您正在查看一个简单的项目。这些由 SHSimpleIDListFromPath
当更改通知程序仅知道路径或者如果通知程序在创建 PIDL 时在绑定上下文中使用空查找信息时生成。
您唯一的选择是打盘并填写新的 PIDL。在通用 shell 命名空间中,这意味着要求 IShellFolder
解析显示名称。 IShellItem2::Update
可能会为你做这个,文档没有说明它是否对简单的项目有效。