首页 > 编程语言 >文件夹图标工具类 - C#小函数类推荐

文件夹图标工具类 - C#小函数类推荐

时间:2024-09-03 09:25:43浏览次数:12  
标签:FolderSettings 图标工具 C# FCS public 文件夹 UInt32 string

       此文记录的是修改文件夹图片的工具类。

/***

    文件夹图标工具类

    Austin Liu 刘恒辉
    Project Manager and Software Designer

    E-Mail: [email protected]
    Blog:   http://lzhdim.cnblogs.com
    Date:   2024-01-15 15:18:00

    使用方法:
        FolderUtil.SetFolderIcon(dirPath, iconFilePath);

***/

namespace Lzhdim.LPF.Utility
{
    using System;
    using System.Runtime.InteropServices;

    /// <summary>
    /// 文件夹图标工具类
    /// </summary>
    public class FolderUtil
    {
        /// <summary>
        /// 设置文件夹图标
        /// </summary>
        /// <param name="dirPath">文件夹路径</param>
        /// <param name="strFile">图标文件路径</param>
        public static void SetFolderIcon(string dirPath, string filePath)
        {
            LPSHFOLDERCUSTOMSETTINGS FolderSettings = new LPSHFOLDERCUSTOMSETTINGS();
            FolderSettings.dwMask = 0x10;
            FolderSettings.pszIconFile = filePath;
            FolderSettings.iIconIndex = 0;

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

            string pszPath = dirPath;
            UInt32 HRESULT = SHGetSetFolderCustomSettings(ref FolderSettings, pszPath, FCS_WRITE);
        }

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

        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
        private 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;
        }
    }
}

 

标签:FolderSettings,图标工具,C#,FCS,public,文件夹,UInt32,string
From: https://www.cnblogs.com/lzhdim/p/18340673

相关文章

  • 探索 XMC 转 PCIE 载板转接卡:连接技术的创新纽带
    在当今科技日新月异的时代,电子设备的接口标准不断演进和多元化,以满足日益复杂和多样化的应用需求。在这个背景下,XMC转PCIE载板转接卡作为一种关键的连接解决方案,正逐渐展现出其重要的作用和价值。XMC(eXtendedMezzanineCard)和PCIE(PeripheralComponentInterconnectExpress......
  • Pyecharts可视化数据大屏分析文章
    Pyecharts可视化数据大屏分析文章引言随着大数据时代的到来,数据可视化成为企业决策、业务分析不可或缺的一部分。Pyecharts,作为一个基于Python的开源数据可视化库,以其丰富的图表类型和强大的功能,成为制作数据大屏的理想工具。本文将结合具体案例,分析如何使用Pyecharts实现数......
  • 如果我想在Android应用中实现资源的自动管理,除了try-with-resources语句,还有哪些设计
    在Android应用开发中,除了使用try-with-resources语句来实现资源的自动管理,还可以参考以下设计模式和最佳实践:1.**单例模式(Singleton)**:  -对于需要全局访问的资源,如数据库连接或共享的配置对象,可以使用单例模式来确保只有一个实例被创建,并在应用的整个生命周期中复用。2......
  • 大模型书籍推荐:大模型黑书《基于GPT-3、ChatGPT、GPT-4等Transformer架构的自然语言处
    一、内容介绍Transformer正在颠覆AI领域。这本书将引导你使用HuggingFace从头开始预训练一个RoBERTa模型,包括构建数据集、定义数据整理器以及训练模型等。《基于GPT-3、ChatGPT、GPT-4等Transformer架构的自然语言处理》分步展示如何微调GPT-3等预训练模型。研究机器翻......
  • 必备大模型学习手册:ChatGPT 从入门到精通(PDF版免费)
    ChatGPT作为⼀种强⼤的⾃然语⾔处理模型,已经成为⼈⼯智能领域的重要研究⽅向之⼀。在不断的发展和创新中,ChatGPT已经具备了很强的⾃然语⾔处理能⼒,其可以实现⾃然语⾔的⽣成、理解和交互,为⼈类的⽣产和⽣活带来了巨⼤的便利和创新。一、书籍介绍这本ChatGPT从入门到......
  • A-计算机毕业设计定制:80891ssm大学校园慈善拍卖网站(免费领源码)可做计算机毕业设计JAV
    摘要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对大学校园慈善拍卖网站等问题,对大学校园慈善拍卖网站进行研究分析,然后开发设计出大学校园慈善......
  • 【异常解决】springBoot单元测试es报错availableProcessors is already set to [12],
    单元测试的时候,报错异常信息片段2024-09-0309:07:12.439ERROR5676---[main]c.a.m.c.c.es.ElasticsearchConfig:availableProcessorsisalreadysetto[12],rejecting[12]java.lang.IllegalStateException:availableProcessorsisalreadyset......
  • 探索 PCI 转 PMC 载板转接卡:连接不同接口的桥梁
    在计算机硬件领域,各种接口和总线标准不断演进,以满足日益增长的性能和功能需求。在这个过程中,不同接口之间的转换设备应运而生,其中PCI转PMC载板转接卡就是一种重要的连接解决方案。PCI转PMC载板转接卡,顾名思义,是一种用于将计算机的PCI(PeripheralComponentInterconnect)接......
  • keycloak~scope客户端模板的使用
    scope为何物?scope在oauth2中表示授权的范围,另外也可以理解为,根据认证时scope的参数,在构建jwt时,返回更多的信息;比如在keycloak中,你的可选scope(optionalscope)中添加了address这个模板,当你通过/auth/realms/{realmId}/protocol/openid-connect/token进行认证时,你的参数scope中出......
  • CSS渲染之各种炫技
    HTML是为了设计基本布局,CSS是为了渲染HTML,而JS是为了实现动态效果。1.引入CSS的两种方式<1>直接在html页面的<head>标签里写入(写在<style>标签里)<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title......