一、using System.Runtime.InteropServices;
二、[DllImport("Shell32.dll")]
         public static extern int ExtractIcon(IntPtr hInst, string strFileName, int nIconIndex);
         [DllImport("Shell32.dll")]
         public static extern int SHGetFileInfo(string pszPath, uint dwFileAttributes, ref Fileinfos psfi, uint cbFileInfo, uint uFlags);

public struct Fileinfos
         {
             public IntPtr hIcon;
             public int iIcon;
             public uint dwAttributes;
             public char szDisplayName;
             public char szTypeName;
         }

/// <summary>
         /// 设置图标,把得到的图标放入一个ImageList
         /// </summary>
         /// <param name="imageList">ImageList,可以new一个</param>
         /// <param name="FileName">应用程序的路径</param>
         /// <param name="pic">图片控件名</param>
         /// <param name="tf">不了解</param>
         private void SetIcon(ImageList imageList, string FileName,System.Windows.Forms.PictureBox pic, bool tf)
         {
             Fileinfos fi = new Fileinfos();
             if (tf == true)
             {
                 int iTotal = (int)SHGetFileInfo(FileName, 0, ref fi, 100, 16640);
                 try
                 {
                     if (iTotal > 0)
                     {
                         Icon ic = Icon.FromHandle(fi.hIcon);
                         imageList.Images.Add(ic);//添加到ImageList,可放图标和图片,只做一个转换用
                         pic.Image=imageList.Images[0];//把图标取出来
                     }
                 }
                 catch (Exception ex)
                 {
                     MessageBox.Show(ex.Message, "错误提示", 0, MessageBoxIcon.Error);
                 }
             }
             else
             {
                 int iTotal = (int)SHGetFileInfo(FileName, 0, ref fi, 100, 257);
                 try
                 {
                     if (iTotal > 0)
                     {
                         Icon ic = Icon.FromHandle(fi.hIcon);
                         imageList.Images.Add(ic);//添加到ImageList,可放图标和图片,只做一个转换用
                         pictureBox1.Image = imageList.Images[0];//把图标取出来
                     }
                 }
                 catch (Exception ex)
                 {
                     MessageBox.Show(ex.Message, "错误提示", 0, MessageBoxIcon.Error);
                 }
             }
         }

/// <summary>
         /// 设置图标,这里是当前窗体
         /// </summary>
         /// <param name="FileName">应用程序的路径</param>
         /// <param name="tf">不知道什么意思</param>
         private void SetFormIcon(string FileName, bool tf)
         {
             Fileinfos fi = new Fileinfos();
             if (tf == true)
             {
                 int iTotal = (int)SHGetFileInfo(FileName, 0, ref fi, 100, 16640);
                 try
                 {
                     if (iTotal > 0)
                     {
                         Icon ic = Icon.FromHandle(fi.hIcon);
                         this.Icon = ic;
                     }
                 }
                 catch (Exception ex)
                 {
                     MessageBox.Show(ex.Message, "错误提示", 0, MessageBoxIcon.Error);
                 }
             }
             else
             {
                 int iTotal = (int)SHGetFileInfo(FileName, 0, ref fi, 100, 257);
                 try
                 {
                     if (iTotal > 0)
                     {
                         Icon ic = Icon.FromHandle(fi.hIcon);
                         this.Icon = ic;
                     }
                 }
                 catch (Exception ex)
                 {
                     MessageBox.Show(ex.Message, "错误提示", 0, MessageBoxIcon.Error);
                 }
             }
         }

转载于:https://www.cnblogs.com/pointdeng/archive/2008/02/01/1060897.html

获取应用程序的图标,相关推荐

  1. 获取应用程序图标的代码

    获取应用程序图标的代码 unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Contro ...

  2. logo qt添加_linux下如何给qt程序添加图标?

    Linux下Qt程序打包发布并设置图标 之前整理过一篇文章是关于Windows下Qt打包发布与设置环境变量的,那篇文章里面Qt发布的程序是没有设置应用程序图标的,之后会再整理一篇文章的,顺便测试下使用 ...

  3. 根据文件名或文件扩展名获取文件的默认图标

    新建一个vs2010 窗体项目,新建按钮button和图片picturebox 下面是程序 using System; using System.Collections.Generic; using ...

  4. Android之获取应用程序(包)的大小-----PackageManager的使用(二)

    http://blog.csdn.net/qinjuning/article/details/6892054 通过第一部分 << Android中获取应用程序(包)的信息-----Pack ...

  5. Android之中获取应用程序(包)的信息-----PackageManager的使用(一)

    转载:http://blog.csdn.net/qinjuning/article/details/6867806 本节内容是如何获取Android系统中应用程序的信息,主要包括packagename ...

  6. Android中获取应用程序(包)的信息-----PackageManager的使用(一)

    本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagename ...

  7. C# 获取Windows系统ICON图标的四种方式-可提取各种文件夹、文件等等图标

    本文介绍的是提取Windows系统内部Icon图标的方法,就是系统资源管理器里面显示的图标,包括文件夹.文件,如:常规文件夹的图标.特定文件夹图标(磁盘根目录.收藏夹.网络共享目录等).各文件类型图标 ...

  8. C++ 主程序中打开子程序窗口隐藏,操作控件 遍历窗口控件句柄EnumChildWindows();获取其他程序进度条数据 操作选择框 按钮点击

    1.线程启动子程序  ShowWindow(hWnd, SW_SHOW)显示 ShowWindow(hwnd, SW_HIDE);隐藏 system_hide(L"Odin3.exe&quo ...

  9. Android 进程 缓存服务,Android获取应用程序大小和缓存的实例代码

    info package com.qin.appsize; import android.content.Intent; import android.graphics.drawable.Drawab ...

最新文章

  1. 郑州计算机技校哪个学校好,郑州十大技校排名 详细介绍
  2. Python读取文件内容为字符串的方法(多种方法详解)
  3. 卸载。net开发的服务
  4. JS基础篇--函数声明与定义,作用域,函数声明与表达式的区别
  5. Android aidl在Framework的使用
  6. 白帽子发现美军网站SQL注入漏洞,可获取敏感数据
  7. golang 解决 TCP 粘包问题
  8. php admin_priv,ECshop后台开发模块步骤
  9. gif动图怎么制作?gif动图制作软件推荐
  10. 英雄联盟祖安服务器要维护多久,英雄联盟祖安大区到底有多凶残?手速慢了必然赢不了对面!...
  11. 知乎网页(用php从数据库读取数据)
  12. Wc2015……酱油记?
  13. 苹果这波是要偷家啊。。
  14. android中bitmap压缩的几种方法详解
  15. R语言epiDisplay包的kap函数计算配对列联表的计算一致性的比例以及Kappa统计量的值(总一致性、期望一致性)、使用xtabs函数生成二维列联表、使用wttable参数设置权重表参数为w2
  16. 苹果中国官网全面更新,官翻产品不容错过!
  17. 互联网晚报 | 1月23日 星期日 | 抖音推出PC版客户端;春节档预售票房破亿;岚图FREE第10000辆下线...
  18. 校企合作计算机专业共建协议书,校企合作共建实训基地协议书
  19. 2019辽宁阜新公务员考试行测常识大全:公务员常识40000问(四十三)
  20. linux ec20 usb驱动移植,linux下EC20 4G模块驱动移植

热门文章

  1. IPv4地址、子网掩码、网关
  2. PostgreSQL存储过程
  3. 这次河北地震, Blog 传播速度
  4. js监听div滚动条
  5. 今日份不一样的早餐!
  6. DDP报错::RuntimeError: Expected all tensors to be on the same device, but found at least two devic
  7. vue 使用 xe-utils 函数库
  8. 循环赛制(未完待续)
  9. 【我的ASM学习进阶之旅】 介绍一个基于gradle transform api和ASM的字节码插件平台ByteX
  10. 人脸关键点与3D重建