VB.NET Windows API函数两步通
创始人
2024-06-10 13:30:44
0

VB.NET经过长时间的发展,很多用户都很了解VB.NET Windows API函数了,这里我发表一下个人理解,和大家讨论讨论。VB.NET要实现查看文件中的图标,目前只使用.Net FrameWork SDK是无法实现这种功能的,正如前面所说,主要是由于.Net FrameWork SDK推出的时间较短,其功能还不可能面面俱到。

#T#解决问题的关键是正确使用Windows API函数,其中所涉及到的Windows API函数主要有二个:其一是获得指定文件中的图标数目;其二是从指定文件的指定位置导出图标的Windows句柄。这二个函数都位于 “Shell32.dll”文件中,并且函数的入口点都为“ExtractIcon”。下面是在VB.NET中分别使用DllImport特征类和“Declare”语句申明这二个VB.NET Windows API函数的具体方法。

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

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

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

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

  1. < System.Runtime.InteropServices.DllImport ( "Shell32.dll" ) > _  
  2. Public Function _  
  3. ExtractIcon ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As UInt32 ) As System.IntPtr  
  4. End Function 

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

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

  1. Declare Auto Function ExtractIcon Lib "Shell32.dll" Alias "ExtractIcon"   
  2. ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As UInt32 ) As System.IntPtr  
  3. '声明ExtractIcon函数  
  4. Declare Auto Function Icon_Num Lib "Shell32.dll" Alias "ExtractIcon"   
  5. ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As Integer ) As Integer  
  6. '声明Icon_Num函数 

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

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

下面就结合一个示例的编写过程来掌握的这二个Windows API函数的具体使用方法,这个示例的作用就是读取指定文件中的图标数目,并显示文件中的图标。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
规避非法攻击 用好路由器远程管... 单位在市区不同位置设立了科技服务点,每一个服务点的员工都通过宽带路由器进行共享上网,和单位网络保持联...
范例解读VB.NET获取环境变... VB.NET编程语言的使用范围非常广泛,可以帮助开发人员处理各种程序中的需求,而且还能对移动设备进行...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...