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

來源:互聯網
上載者:User
我們可以使用Declare語句調用外部DLL中的過程。但VB.NET給我們提供了另外一種更加先進的----- Dllimport特性。

如:

Imports System.Runtime.InteropServices



<DllImport("user32")> _

Function Findwindow(ByVal lpClassName As String, ByVal lpWindowName As String) As Integer



End Function



<DllImport("user32")> _

Function MoveWindow(ByVal hWnd As String, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal bRepaint As Integer) As Integer





End Function



Sub Test()



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

If hWnd <> 0 Then MoveWindow(hWnd, 0, 0, 600, 300, 1)



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



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。