相关疑难解决方法(0)

获取本地化路径的功能?

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进行了记录(请参阅此处).

谢谢

马丁

.net localization special-folders windows-vista windows-7

6
推荐指数
1
解决办法
2177
查看次数

使用SHFileInfo时为什么会出现错误的SpecialFolder图标?

我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)

c# winapi

2
推荐指数
1
解决办法
942
查看次数