簡體   English   中英

文件夾圖標更改

[英]Folder Icon Change

我正在用c#函數更改文件夾圖標。 它工作正常,但問題是它第一次工作。 我的意思是我無法更改已更改圖標的文件夾的圖標。 以下是代碼:

static void Main(string[] args)
{
    LPSHFOLDERCUSTOMSETTINGS FolderSettings = new LPSHFOLDERCUSTOMSETTINGS();
    FolderSettings.dwMask = 0x10;
    FolderSettings.pszIconFile = @"C:\Program Files (x86)\Common Files\TortoiseOverlays\icons\XPStyle\ModifiedIcon.ico";
    FolderSettings.iIconIndex = 0;

    UInt32 FCS_READ = 0x00000001;
    UInt32 FCS_FORCEWRITE = 0x00000002;
    UInt32 FCS_WRITE = FCS_READ | FCS_FORCEWRITE;

    string pszPath = @"D:\Downloaded Data";
    UInt32 HRESULT = SHGetSetFolderCustomSettings(ref FolderSettings, pszPath, FCS_WRITE);
    //Console.WriteLine(HRESULT.ToString("x"));
    //Console.ReadLine();

}

[DllImport("Shell32.dll", CharSet = CharSet.Auto)]
static extern UInt32 SHGetSetFolderCustomSettings(ref LPSHFOLDERCUSTOMSETTINGS pfcs, string pszPath, UInt32 dwReadWrite);

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
struct LPSHFOLDERCUSTOMSETTINGS
{
    public UInt32 dwSize;
    public UInt32 dwMask;
    public IntPtr pvid;
    public string pszWebViewTemplate;
    public UInt32 cchWebViewTemplate;
    public string pszWebViewTemplateVersion;
    public string pszInfoTip;
    public UInt32 cchInfoTip;
    public IntPtr pclsid;
    public UInt32 dwFlags;
    public string pszIconFile;
    public UInt32 cchIconFile;
    public int iIconIndex;
    public string pszLogo;
    public UInt32 cchLogo;
}

可能是什么原因?

我遇到過類似的問題。 只需在第二次調用該函數之前刪除desktop.ini文件。 如果要清除文件夾圖標,則使用相同的方案:

  1. 刪除desktop.ini。
  2. 省略以下幾行:

....

FolderSettings.pszIconFile = @"{icon path}";
FolderSettings.iIconIndex = 0;

....

只是為了完成,有問題的代碼看起來沒問題,但SHGetSetFolderCustomSettings調用中的第3個參數必須是FCS_FORCEWRITE才能更改設置(如果已存在)。 (如果值尚未存在,FCS_WRITE將僅設置它)

請參閱有關該參數的文檔: http//msdn.microsoft.com/en-us/library/windows/desktop/bb762199(v = vs.85).aspx

只是改變

UInt32 FCS_WRITE = FCS_READ | FCS_FORCEWRITE;

UInt32 FCS_WRITE = FCS_FORCEWRITE;

當你下次運行FCS_WRITE = FCS_READ時,它就不會寫agian。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM