VB.NET特性---- Dllimport特性

我们可以使用Declare语句调用外部DLL中的过程。但VB.NET给我们提供了另外一种更加先进的----- Dllimport特性。

如:

Imports  System.Runtime.InteropServices 

< DllImport( " user32 " ) >  _ 
Function Findwindow(ByVal lpClassName As StringByVal lpWindowName As StringAs Integer 

End Function
 


< DllImport( " user32 " ) >  _ 
Function MoveWindow(ByVal hWnd As StringByVal x As IntegerByVal y As IntegerByVal nWidth As IntegerByVal nHeight As IntegerByVal bRepaint As IntegerAs Integer 

End Function
 


Sub Test() 

    
Dim hWnd As Integer = Findwindow(Nothing"Untitled-Nodepad"

    
If hWnd <> 0 Then MoveWindow(hWnd, 006003001

End Sub
 



这样就可以不任何代码实现便可以调用外部的Dll,即使我们改变方法名为FindwindowA,也可以顺利的实现调用,因为使用Dllimport特性编译器可以自动追踪实际的过程以及方法!

另外,Dllimport特性海支持几种可选的参数,来精确定义调用外部过程的方式,以及外部过程的返回值方式.

CharSet 参数:用于说明字符串传递给外部过程的方式,可以是CharSet.Ansi(默认),CharSet.Unicode.CharSet.Auto.



ExactSpelling参数:用于指定方法名是否和DLL中的名称完全一致,默认值为True.



EntryPoint参数:用于指定DLL中的实际函数名称.



CallingConvention参数:为入口点指定调用的约定,值有WinApi(默认 值),CDecl,FastCallStdCall和ThisCall.



SetLastError参数:判断被调用函数是否设置了最近一次Win32错误代码,如果设置为True 则可以通过Err.LastDllError方法或Marshal.GetLastWin32Error方法 读取这些代码.



PreServeSig参数:为一个Boolean值,如果为True ,则将告诉编译器,方法不应被转换为一 个返回HRESULT值函数.





下面使用Dllimport特性来调用myFunction.dll中的名为friend(friend为vb保留名称)的方法.Dllimport特性带有Unicode字符串,并影响Win32错误代码:



<DllImport("myFunction.dll", EntryPoint:="Friend", CharSet:=CharSet.Unicode, SetLastError:=True)> _

Function MakeFriends(ByVal sl As String, ByVal s2 As String) As Integer



End Function 
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值