我正在拼命猜测如何根据该文件的路径检索照片的本地化文件名。例如,给定路径
c:\ images \ jellyfish.png - Win 7资源管理器和内置图像查看器程序都显示“Méduses”这个单词以获得法国胜利7.这是否适用于其他版本的Windows?
GetFileTitle只删除扩展名和文件夹路径,给我“水母”,这不是我所追求的,在阅读完MSDN和谷歌后,似乎Windows Media Format的http://msdn.microsoft.com/en-us/library/dd798508(v=VS.85).aspx界面在这里没有帮助。要么我已经失去了我的谷歌搜索技能,或者这是非常糟糕的文件。请帮忙吗?
谢谢
答案 0 :(得分:3)
我不确定这个案例(我从未遇到过该格式的本地化文件名),但我知道获得系统目录和标准Windows小程序等本地化文件名的官方支持方式,是使用IShellFolder :: GetDisplayNameOf。
简而言之,您需要获取文件的PIDL(SHParseDisplayName),绑定到其父文件夹(SHBindToParent),然后使用SHGDN_INFOLDER标志查询显示名称。
附录:更简单的方法(我完全忘记了)是使用SHGetFileInfo获取带有SHGFI_DISPLAYNAME标志的显示名称。这意味着您不需要使用PIDL。 SHGetFileInfo本质上是各种shell COM类(如IShellFolder)的包装器 - 无论哪种方式,关键是使用shell来获取显示名称而不是底层API函数。