Windows 7(可能还有Windows Vista)使用文件中的LocalizedResourceName条目显示本地化的文件夹名称desktop.ini.对于我的Documents文件夹,这看起来像
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21770
IconResource=%SystemRoot%\system32\imageres.dll,-112
IconFile=%SystemRoot%\system32\shell32.dll
IconIndex=-235
Run Code Online (Sandbox Code Playgroud)
(见这个问题)
这样,资源管理器在德语Windows上将路径"C:\ Users\Username\Documents"显示为"C:\ Benutzer\Username\Dokumente".
我想知道,如果有任何内置shell函数来自动获取这个本地化名称,或者更好的是,将整个路径转换为其本地化形式(最好是.NET中的任何内容)?
这更有趣,因为该LocalizedResourceName条目仅针对Windows CE进行了记录(请参阅此处).
谢谢
马丁
我SHFileInfo用来检索文件和文件夹的系统图标,但是我发现特殊文件夹没有返回正确的文件夹图标.
例如,桌面文件夹将返回与常规文件夹相同的文件夹图标而不是桌面图标,并且MyComputer图标看起来像旧的Windows 98图标,而不是我期望的Windows 7 MyComputer图标.
为什么我得到特殊文件夹的错误图标,如何使用特定文件夹检索正确的系统图标SHFileInfo?
我的原始代码来自这个代码项目文章,但它已被修改了一下.执行的实际代码仍然非常相似,如下所示:
public static System.Drawing.Icon GetFolderIcon(string folderPath, IconSize size, FolderType folderType)
{
try
{
// Need to add size check, although errors generated at present!
Int64 flags = WinApi.SHGFI_ICON | WinApi.SHGFI_USEFILEATTRIBUTES;
if (FolderType.Open == folderType)
flags |= WinApi.SHGFI_OPENICON;
if (IconSize.Small == size)
flags |= WinApi.SHGFI_SMALLICON;
else
flags |= WinApi.SHGFI_LARGEICON;
// Get the folder icon
WinApi.SHFILEINFO shfi = new WinApi.SHFILEINFO();
WinApi.SHGetFileInfo(folderPath,
WinApi.FILE_ATTRIBUTE_DIRECTORY,
ref shfi,
(Int32)System.Runtime.InteropServices.Marshal.SizeOf(shfi),
flags);
if (shfi.hIcon …Run Code Online (Sandbox Code Playgroud)