C#获取软件ico图标 发表于 2021-08-10 | 更新于 2021-12-31
总字数: 1.1k | 阅读时长: 4分钟 | 阅读量: 0
我个人是比较喜欢封装一些需要安装在电脑上的软件的,封装后就是绿色版(携带版) 无需安装,即点即用,非常的方便
例如:
pr、ps(虽然很大,但是出门在外,做一些小处理还是比较方便的,不需要在别人的电脑上安装即可使用,插 U 盘就可以) Chrome、有道翻译、Linux 连接工具 FTP、投屏软件、网易云音乐、某些录屏软件、火绒弹窗拦截、火绒剑、文件粉碎、鲁大师(去除无用功能,只保留主要功能) 一些小工具等 在封装的时候如何获取相应软件的图标呢?(有些软件是包含在安装目录里的),因为自己身为程序员,这种小事就自己动动手写嘛 之前有学过 C#的一些开发经验,所有就打算写一个
废话也不多说了,直接看正文
正文 打开 IDE Visual Studio 我的是 2012 的(Visual Studio 2012)
直接点击左边的新建项目
配置 创建完成后,第一时间肯定是先修改标题名啦(这里我就不截那么多图了) 然后再右边的解决方案资源管理器里将 Form1.cs 重命名为ForIcon.cs 注意右下角有很多选项,我先修改了软件标题信息
属性名 属性值 描述 (Name) ForIcon 用于处理代码中对象的昵称 Text 获取软件 ico 图标 软件名称 TopMost True 软件是否处于最顶层 StarPositon CenterScreen 运行软件时,软件出现的位置 MinimizeBox False 是否显示最小化按钮 MaximizeBox False 是否显示最大化按钮 Icon (图片路径) 软件图标 FormBorderStyle FixedDialog 软件外观变化(FixedDialog: 禁止用户调整软件边框大小) AllowDrop True 是否允许用户拖动文件到软件中,获取数据重点
添加事件 点击属性旁边的那个小闪电图标 找到DragDrop和DragEnter并在它俩的属性值处双击,跳入事件方法中
这时会跳到代码里,并且会自动创建两个方法(注释是我写的,并不是自动生成的) 此时DragDrop和DragEnter的属性值都会绑定这两个方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ForIcon { public partial class ForIcon : Form { public ForIcon() { InitializeComponent(); } // 拖入事件(拖入后松开鼠标时执行) private void ForIcon_DragDrop(object sender, DragEventArgs e) { } // 拖入事件(拖入时执行) private void ForIcon_DragEnter(object sender, DragEventArgs e) { } } }
编码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ForIcon { public partial class ForIcon : Form { public ForIcon() { InitializeComponent(); } // 拖入事件(拖入后松开鼠标时执行) private void ForIcon_DragDrop(object sender, DragEventArgs e) { // 获取拖入的文件路径 string File_Path = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString(); // 判断后缀名 if (System.IO.Path.GetExtension(File_Path) != ".exe") { MessageBox.Show("当前文件不是EXE文件~", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { SaveFileDialog sfd = new SaveFileDialog(); // 保存文件对话框 sfd.Filter = "|*.ico"; // 后缀名 if (sfd.ShowDialog() == DialogResult.OK) { // 判断是否点击保存(未填写文件名则无效) // 获取拖入文件的图标 Image img = Icon.ExtractAssociatedIcon(File_Path).ToBitmap(); img.Save(sfd.FileName); } } } // 拖入事件(拖入时执行) private void ForIcon_DragEnter(object sender, DragEventArgs e) { e.Effect = DragDropEffects.All; } } }
添加控件 其中我们只需要添加一段文字,提醒用户将文件拖入的信息提示即可,随后修改label属性信息就可用了 然后将label显示区域拉满软件窗口(这里的拉满指的是自动对焦的拉满,其实你把它全拉满都没问题,这只是我的个人习惯)看最后一张图
属性名 属性值 描述 (Name) msg 用于处理代码中对象的昵称 Text 软件拖入… 文本内容 AutoSize False label 大小是否根据内容进行自动调整 Font 宋体, 10.2pt, style=Bold 调整字体 FontColor Red 运行软件时,软件出现的位置 TextAlign MiddleCenter 内容显示再 label 中的哪个位置(MiddleCenter: 居中)
运行 点击上方工具栏的启动按钮即可,然后找到你的项目存储路径(我的是: D:\Data\C\C#\) 打开项目名称再继续点击去找到\bin\Debug里面就会有打包好的.exe执行文件 我的完整路径是: D:\Data\C\C#\ForIcon\ForIcon\bin\Debug\ForIcon.exe