Вызовы функций DLL
Хотя при вызове функций DLL можно использовать старый синтаксис Declare, в .NET рекомендуется использовать другой способ — атрибут Oil Import, позволяющий создавать общие точки входа. Для этого в программе определяется пустая функция, совпадающая по сигнатуре с вызываемой функцией. Ниже приведен пример использования атрибута Dll Import.
Imports System.Drawing
Imports System.Runtime.InteropServices
Module Modulel
' Импортировать функцию CreateDC из Win32 API
<Dll Import("gdi32.dll")>
Public Function CreateDC(ByVal strDhver _
As String. ByVal strDeviceName As String,_
ByVal strOutput As String. ByVal nullDEVICE As Integer _ )
As 'IntPtr
End Function
Sub Main()
' Создать прямоугольник
Dim rctWindow As Rectangle = New Rectangle(100, 100, 200, 200)
Dim penBlack As Pen = New PerUColor.Black)
penBlack.Brush = Brushes.DarkKham
Dim grfx As Graphics
Dim hDC As IntPtr = CreateDC("DISPLAY". vbNullString,
vbNullString. vbNullString)
grfx = Graphics.FromHdc(hDC)
Do While (True)
grfx.FillRectangle(penBlack.Brush, rctWindow)
System.Threading.Thread.Sleep(0)
Loop
End Sub
End Module
Другое принципиальное отличие атрибута Dll Import от ключевого слова Declare заключается в том, что Dll Import позволяет лучше управлять отдельными аспектами вызова. В частности, при вызове функции можно указать конвенцию передачи параметров, и кодировку для передачи строковых параметров.