vb.net加载api vbnet api( 四 )


8. 把Visual Stuido .Net的当前窗口切换到Module1.vb的代码编辑窗口,并在其Module1的代码区中添加下列代码 , 下列代码是用二种方式声明二个Windows API函数:
< System.Runtime.InteropServices.DllImport ( "Shell32.dll" ) > _
Public Function _
ExtractIcon ( ByVal src As System.IntPtr , ByVal strFileName As String , ByVal uiIconIndex As UInt32 ) As System.IntPtr
End Function
'声明ExtractIcon函数
Declare Auto Function Icon_Num Lib "Shell32.dll" Alias "ExtractIcon" ( ByVal src As System.IntPtr , ByVal strFileName As String , ByVal uiIconIndex As Integer ) As Integer
9. 把Visual Studio .Net的当前窗口切换到Form1窗体的设计查看,并从【工具箱】中的【Windows窗体】选项卡中拖入下列组件到Form1窗体:
四个Label组件 , 其中二个用以显示提示信息,另外二个分别用以显示选择的文件名称和这个文件中包含的图标数目 。
一个ListView组件,利用其显示大图标的属性用以显示选定文件中的图标 。
一个OpenFileDialog组件 , 用以选择要查看图标的文件名称 。
一个ImageList组件,它起的是桥梁的作用,首先把从文件中导出的图标存放到这里,然后再提供ListView组件显示出来 。
一个Button组件 。
10. 按照表01中数值来设定设定组件的主要属性:
组件类型组件名称属性设置结果
FormForm1TextVB.NET查看文件中的图标
Form1MaximizeBoxFalse
Form1MinimizeBoxFalse
Form1FormBorderStyleFixedSingle
ListViewListView1ImageList1LargeImageList
ListView1MultiSelectFalse
ListView1SizeSize ( 380 , 208 )
ButtonButton1Text选择文件
Button1FlatStyleFlat
ImageListImageList1SizeSize ( 32 , 32 )
ImageList1TransparentColorColor.Transparent
LabelLabel1Text文件名称:
Label2Text图标数目:
Label3Text""
Label4 Text"0"
表01:【Visual Basic .Net查看文件中的图标】项目窗体中各组件的主要属性设定数值表
并按照图02中各组件的位置、大小和排列方式来调整窗体中各个组件:
图02:【Visual Basic .Net查看文件中的图标】项目的设计界面
11. 把Visual Studio .Net当前窗口切换到Form.vb的代码编辑窗口 , 并用下列代码替换Form1.vb中的Button1组件的Click事件的处理代码,下列代码是在Button1组件的Click事件中处理查看文件中图标的功能,具体如下:
Private Sub Button1_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button1.Click
If OpenFileDialog1.ShowDialog ( ) = DialogResult.OK Then
'清除组件中的所有项目
ListView1.Items.Clear ( )
ImageList1.Images.Clear ( )
Dim sfName As String = OpenFileDialog1.FileName
Label3.Text = sfName
Dim iIcon_Num As Integer = Icon_Num ( IntPtr.Zero , sfName , -1 )
'显示文件中的图标数目
Label4.Text = iIcon_Num.ToString ( )
Dim i As Integer
For i = 0 To iIcon_Num - 1 Step 1
'强制实现int到uint类型转换
Dim j As UInt32
j = System.Convert.ToUInt32 ( i )
Dim hIcon As System.IntPtr = ExtractIcon ( IntPtr.Zero , sfName , j )
'在imageList1组件中加入当然提取的图标
ImageList1.Images.Add ( Icon.FromHandle ( hIcon ).ToBitmap ( ) )
'在ListView组件中加入一个项目
ListView1.Items.Add ( "第" + ( i + 1 ).ToString ( ) + "个图标" )
'把加入项目的图象索引指向刚才加入图标在imagList1组件中的索引 , 从而显示图标
ListView1.Items ( i ).ImageIndex = i
Next i
End If
End Sub
12. 至此,在上述步骤都正确执行后,【Visual Basic .Net查看文件中的图标】项目的全部工作就完成了 。单击快捷键F5就可以运行程序 , 此时单击【选择文件】按钮选择文件后,程序就能够读取这个文件中的图标及其数目 , 并显示出来了 。具体如图03所示:

推荐阅读