如何在Windows Mobile下使用.NET Compact Framework从执行文件取出Icon

简介:

需求

需要把其他执行文件的ICON读取出来,然后在程序中显示。

 

实现

class ExtractIcon
{
public static Bitmap GetBitmapFromExeIcon(string path)
{
return GetBitmap(GetIconFromExe(path));
}

public static Icon GetIconFromExe(string path)
{
return GetIconFromExe(path, true);
}

//http://www.pinvoke.net/default.aspx/shell32/ExtractIconEx.html
public static Icon GetIconFromExe(string path, bool large)
{
IntPtr hLargeIcon = IntPtr.Zero;
IntPtr hSmallIcon = IntPtr.Zero;
ExtractIconEx(path, 0, ref hLargeIcon, ref hSmallIcon, 1);
if (large)
{
return (Icon)Icon.FromHandle(hLargeIcon).Clone();
}
else
{
return (Icon)Icon.FromHandle(hSmallIcon).Clone();
}
}

//http://social.msdn.microsoft.com/Forums/en-US/netfxcompact/thread/e765775c-a5b5-493f-baeb-3eaee1d41cef
public static Bitmap GetBitmap(Icon icon)
{
Bitmap bmp = new Bitmap(icon.Width, icon.Height);

//Create temporary graphics
Graphics gxMem = Graphics.FromImage(bmp);

//Draw the icon
gxMem.DrawIcon(icon, 0, 0);

//Clean up
gxMem.Dispose();

return bmp;
}

//http://msdn.microsoft.com/en-us/library/aa922154.aspx
[DllImport("coredll.dll", SetLastError = true)]
private static extern IntPtr ExtractIconEx(string fileName, int index, ref IntPtr hIconLarge, ref IntPtr hIconSmall, uint nIcons);
}

MS提供了ExtractIconEx函数可以取出执行文件的大小Ico图标信息。第三个参数为大图标,第四个参数为小图标。

由于Icon对象不能直接在Graphics上画,所以需要转换成Bitmap,但是Compact Framework又不支持Icon.Save(),所以实现了一个Bitmap GetBitmap(Icon icon) 函数。

效果图如下,取出word的图标。

ico1

第二个图去掉ico背景



    本文转自Jake Lin博客园博客,原文链接:http://www.cnblogs.com/procoder/archive/2009/08/11/Windows_Mobile_Compact_Framework_Icon.html,如需转载请自行联系原作者



相关文章
|
1月前
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
85 9
|
1月前
|
存储 开发框架 .NET
Windows IIS中asp的global.asa全局配置文件使用说明
Windows IIS中asp的global.asa全局配置文件使用说明
33 1
|
1月前
|
Java Windows
如何在windows上运行jar包/JAR文件 如何在cmd上运行 jar包 保姆级教程 超详细
本文提供了一个详细的教程,解释了如何在Windows操作系统的命令提示符(cmd)中运行JAR文件。
713 1
|
24天前
|
Windows
.NET 隐藏/自定义windows系统光标
【10月更文挑战第20天】在.NET中,可以使用`Cursor`类来控制光标。要隐藏光标,可将光标设置为`Cursors.None`。此外,还可以通过从文件或资源加载自定义光标来更改光标的样式。例如,在表单加载时设置`this.Cursor = Cursors.None`隐藏光标,或使用`Cursor.FromFile`方法加载自定义光标文件,也可以将光标文件添加到项目资源中并通过资源管理器加载。这些方法适用于整个表单或特定控件。
|
28天前
|
C# Windows
一款基于.NET开发的简易高效的文件转换器
一款基于.NET开发的简易高效的文件转换器
|
1月前
|
程序员 Windows
程序员必备文件搜索工具 Everything 带安装包!!! 比windows自带的文件搜索快几百倍!!! 超级好用的文件搜索工具,仅几兆,不占内存,打开即用
文章推荐了程序员必备的文件搜索工具Everything,并提供了安装包下载链接,强调其比Windows自带搜索快且占用内存少。
37 0
|
2月前
|
Windows
7-3|windows删除目录下的所有文件的命令
7-3|windows删除目录下的所有文件的命令
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
38 7
|
2月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
54 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
46 0
下一篇
无影云桌面