windows有api可以做
Private Declare Function ExtractIconEx Lib "shell32.dll" Alias "ExtractIconExA" (ByVal lpszFile As String, ByVal _
nIconIndex As Long, phiconLarge As Long, phiconSmall As Long, ByVal nIcons As Long) As Long
下面是VB6的代码,你可改写成C#的使用ExtractIconEX API函数从文件中提取图标,并返回图标句柄,然后利用该句柄,使用DrawIcon函数将图标绘制到目标设备中。最后清除句柄以释放系统资源。创建新工程后,在工程中添加对Standard OLE Types的引用,然后在工程中添加一个标准模块。将下面的代码粘贴到标准模块中:Option ExplicitPrivate Type PicBmp
Size As Long
tType As Long
hBmp As Long
hPal As Long
Reserved As Long
End Type
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type
Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" (PicDesc As PicBmp, RefIID As GUID, _
ByVal fPictureOwnsHandle As Long, IPic As IPicture) As LongPrivate Declare Function ExtractIconEx Lib "shell32.dll" Alias "ExtractIconExA" (ByVal lpszFile As String, ByVal _
nIconIndex As Long, phiconLarge As Long, phiconSmall As Long, ByVal nIcons As Long) As LongPrivate Declare Function DestroyIcon Lib "user32" (ByVal hicon As Long) As LongPublic Function GetIconFromFile(FileName As String, IconIndex As Long, UseLargeIcon As Boolean) As Picture'参数:
'FileName - 包含有图标的文件 (EXE or DLL)
'IconIndex - 欲提取的圉标的索引,从零开始
'UseLargeIcon-如设置为True,则提取大图标,否则提取小图标
'返回值: 包含标标的Picture对象Dim hlargeicon As Long
Dim hsmallicon As Long
Dim selhandle As Long' IPicture requires a reference to "Standard OLE Types."
Dim pic As PicBmp
Dim IPic As IPicture
Dim IID_IDispatch As GUIDIf ExtractIconEx(FileName, IconIndex, hlargeicon, hsmallicon, 1) > 0 ThenIf UseLargeIcon Then
selhandle = hlargeicon
Else
selhandle = hsmallicon
End If' Fill in with IDispatch Interface ID.
With IID_IDispatch
.Data1 = &H20400
.Data4(0) = &HC0
.Data4(7) = &H46
End With
' Fill Pic with necessary parts.
With pic
.Size = Len(pic) ' Length of structure.
.tType = vbPicTypeIcon ' Type of Picture (bitmap).
.hBmp = selhandle ' Handle to bitmap.
End With' Create Picture object.
Call OleCreatePictureIndirect(pic, IID_IDispatch, 1, IPic)' Return the new Picture object.
Set GetIconFromFile = IPicDestroyIcon hsmallicon
DestroyIcon hlargeiconEnd If
End Function
在窗体中添加一个PictureBox控件和一个命令按钮,把下面的代码加入到命令按钮的Click事件中:Set Picture1.Picture = GetIconFromFile("c:\windows\moricons.dll", _ 0, True)按F5运行程序,点击命令按钮后,PictureBox会将文件moricons.dll中的图标索引为零的图标画到PictureBox中。
Private Declare Function ExtractIconEx Lib "shell32.dll" Alias "ExtractIconExA" (ByVal lpszFile As String, ByVal _
nIconIndex As Long, phiconLarge As Long, phiconSmall As Long, ByVal nIcons As Long) As Long
下面是VB6的代码,你可改写成C#的使用ExtractIconEX API函数从文件中提取图标,并返回图标句柄,然后利用该句柄,使用DrawIcon函数将图标绘制到目标设备中。最后清除句柄以释放系统资源。创建新工程后,在工程中添加对Standard OLE Types的引用,然后在工程中添加一个标准模块。将下面的代码粘贴到标准模块中:Option ExplicitPrivate Type PicBmp
Size As Long
tType As Long
hBmp As Long
hPal As Long
Reserved As Long
End Type
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type
Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" (PicDesc As PicBmp, RefIID As GUID, _
ByVal fPictureOwnsHandle As Long, IPic As IPicture) As LongPrivate Declare Function ExtractIconEx Lib "shell32.dll" Alias "ExtractIconExA" (ByVal lpszFile As String, ByVal _
nIconIndex As Long, phiconLarge As Long, phiconSmall As Long, ByVal nIcons As Long) As LongPrivate Declare Function DestroyIcon Lib "user32" (ByVal hicon As Long) As LongPublic Function GetIconFromFile(FileName As String, IconIndex As Long, UseLargeIcon As Boolean) As Picture'参数:
'FileName - 包含有图标的文件 (EXE or DLL)
'IconIndex - 欲提取的圉标的索引,从零开始
'UseLargeIcon-如设置为True,则提取大图标,否则提取小图标
'返回值: 包含标标的Picture对象Dim hlargeicon As Long
Dim hsmallicon As Long
Dim selhandle As Long' IPicture requires a reference to "Standard OLE Types."
Dim pic As PicBmp
Dim IPic As IPicture
Dim IID_IDispatch As GUIDIf ExtractIconEx(FileName, IconIndex, hlargeicon, hsmallicon, 1) > 0 ThenIf UseLargeIcon Then
selhandle = hlargeicon
Else
selhandle = hsmallicon
End If' Fill in with IDispatch Interface ID.
With IID_IDispatch
.Data1 = &H20400
.Data4(0) = &HC0
.Data4(7) = &H46
End With
' Fill Pic with necessary parts.
With pic
.Size = Len(pic) ' Length of structure.
.tType = vbPicTypeIcon ' Type of Picture (bitmap).
.hBmp = selhandle ' Handle to bitmap.
End With' Create Picture object.
Call OleCreatePictureIndirect(pic, IID_IDispatch, 1, IPic)' Return the new Picture object.
Set GetIconFromFile = IPicDestroyIcon hsmallicon
DestroyIcon hlargeiconEnd If
End Function
在窗体中添加一个PictureBox控件和一个命令按钮,把下面的代码加入到命令按钮的Click事件中:Set Picture1.Picture = GetIconFromFile("c:\windows\moricons.dll", _ 0, True)按F5运行程序,点击命令按钮后,PictureBox会将文件moricons.dll中的图标索引为零的图标画到PictureBox中。
解决方案 »
- 问大家一个关于 comboBox的下拉列表的问题 高分求解 谢谢了
- 如何给windowsMobile中ListBox添加横向滚动条
- 求助DataGrid中的按纽
- C# 怎样实现点击主窗体上的按钮,弹出新窗体同时关闭主窗体??
- 为什么我找不到webservice1.cs
- 有关DropDownList控件。
- 我的VS2005C#怎么没有pictureBox1_Paint的事件?
- 谁有中文版的<<C#设计模式>>电子书?
- 怎样做电子签名控件,可行解决方案给200分
- 我现在需要一个程序向互联网上另一个发送数据(XML),服务器端我不想用web service,因为那样还得装IIS,有其他比较简便的方式吗?
- 如何用c#开发dll
- 如何修改计算机时间,我发现System.DateTime里面全部是只读的。
[email protected].
谢谢!