全面讨论VB.NET申明Windows API函数

开发 后端
这里介绍在VB.NET申明Windows API函数时,“Declare”语句中Alias关键字的作用相当于使用DllImport特征类中的EntryPoint对象字段。

VB.NET还是比较常用的,于是我研究了一下VB.NET申明Windows API函数,在这里拿出来和大家分享一下,希望对大家有用。VB.NET查看文件中图标的函数及VB.NET申明Windows API的方法:

VB.NET要实现查看文件中的图标,目前只使用.Net FrameWork SDK是无法实现这种功能的,正如前面所说,主要是由于.Net FrameWork SDK推出的时间较短,其功能还不可能面面俱到。解决问题的关键是正确使用Windows API函数,其中所涉及到的Windows API函数主要有二个:其一是获得指定文件中的图标数目;其二是从指定文件的指定位置导出图标的Windows句柄。这二个函数都位于 “Shell32.dll”文件中,并且函数的入口点都为“ExtractIcon”。下面是在VB.NET中分别使用DllImport特征类和“Declare”语句申明这二个Windows API函数的具体方法。

1.使用DllImport特征类来申明Windows API函数:

下面是在VB.NET中使用DllImport特征类申明二个Windows API函数的具体示例:

  1. '函数ExtractIcon,其功能是是从指定文件的指定位置导出图标的Windows句柄。  
  2. < System.Runtime.InteropServices.DllImport ( "Shell32.dll" , EntryPoint :"ExtractIcon" ) > _  
    Public Function _  ExtractIcon ( ByVal src As System.IntPtr , ByVal strFileName As string , 
    ByVal uiIconIndex As UInt32 ) As System.IntPtr  
  3. End Function  
  4. '函数Icon_Num,其功能是获得指定文件中的图标数目  
  5. < System.Runtime.InteropServices.DllImport ( "Shell32.dll" , EntryPoint :"ExtractIcon" ) > _  
    Public Function _  Icon_Num ( ByVal src As System.IntPtr , ByVal strFileName As string , 
    ByVal uiIconIndex As Integer ) As Integer  
  6. End Function 

在使用DllImport特征类申明Windows API函数时,如果申明的函数名称和函数的入口点相同,则可以在VB.NET申明Windows API函数时,省略定义函数入口点对应的代码,即EntryPoint对象字段对应的代码,这样声明ExtractIcon函数的代码也可以简化为如下所示:

  1. < 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  
  2. End Function 

2.使用“Declare”语句来申明Windows API函数:

使用“Declare”语句的确比使用DllImport特征类要简单了许多,下面是在VB.NET中使用“Declare”语句来声明上述二个Windows API函数的具体方法:

  1. Declare Auto Function ExtractIcon Lib "Shell32.dll" Alias "ExtractIcon" 
    ( ByVal src As System.IntPtr , ByVal strFileName As string , 
    ByVal uiIconIndex As UInt32 ) As System.IntPtr  
  2. '声明ExtractIcon函数  
  3. 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  
  4. '声明Icon_Num函数 

在VB.NET申明Windows API函数时,“Declare”语句中Alias关键字的作用相当于使用DllImport特征类中的EntryPoint对象字段。同样在使用 “Declare”语句声明Windows API函数时,如果声明的函数和函数的入口点相同,也可以省略Alias关键字对应的代码,所以ExtractIcon函数也可以简化为如下:

  1. Declare Auto Function ExtractIcon Lib "Shell32.dll" ( ByVal src As System.IntPtr , 
    ByVal strFileName As string , ByVal uiIconIndex As UInt32 ) As System.IntPtr 

【编辑推荐】

  1. 全方位分析VB.NET编码规范
  2. 详细说明VB.NET变量中四点
  3. 三类十二种VB.NET数据类型全面介绍
  4. VB.NET初步知识,初学者必看
  5. 具体介绍四大类VB.NET循环
责任编辑:佚名 来源: IT168
相关推荐

2009-10-15 17:50:48

VB.NET调用API

2009-11-03 12:52:38

VB.NET Wind

2009-10-15 09:02:19

VB.NET申明数组

2009-10-15 09:16:35

VB.NET重新申明数

2009-10-26 10:44:27

VB.NET API函

2009-11-03 13:02:28

VB.NET Wind

2009-10-20 10:29:30

VB.NET使用Sor

2009-10-29 10:45:01

VB.NET设置控件

2009-10-26 15:26:37

VB.NET属性

2010-01-12 15:21:48

VB.NET权限控制

2009-10-28 10:04:53

VB.NET XmlW

2009-10-28 17:44:31

VB.NET语言

2009-10-19 17:42:31

VB.NET API函

2009-10-28 14:00:02

VB.NET文件处理

2009-10-15 10:57:16

VB.NET Text

2009-10-29 15:16:02

VB.NET文件传送

2009-10-14 15:20:21

VB.NET窗体指针

2009-11-04 10:54:53

VB.NET MOVE

2009-11-02 15:57:36

VB.NET WEB

2009-11-10 16:46:52

VB.NET指针应用
点赞
收藏

51CTO技术栈公众号