Подтвердить что ты не робот

Как использовать <DllImport> в VB.NET?

Как мне DLLImport вещи в VB.NET? Примером может служить:

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function GetWindowText(ByVal hwnd As IntPtr, ByVal lpString As StringBuilder, ByVal cch As Integer) As Integer

End Function

Если я помещаю его в класс или где-то еще, я получаю "DLLimport не определен" Я использую Visual Studio 2008 Professional

4b9b3361

Ответ 1

Вам нужно добавить Imports System.Runtime.InteropServices в начало исходного файла.

Кроме того, вы можете полностью квалифицировать имя атрибута:

<System.Runtime.InteropService.DllImport("user32.dll", _
    SetLastError:=True, CharSet:=CharSet.Auto)> _

Ответ 2

Imports System.Runtime.InteropServices

Ответ 3

Я видел в getwindowtext (user32) на pinvoke.net, что вы можете поместить оператор MarshalAs, чтобы указать, что StringBuffer эквивалентен LPSTR.

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Ansi)> _
Public Function GetWindowText(hwnd As IntPtr, <MarshalAs(UnManagedType.LPStr)>lpString As System.Text.StringBuilder, cch As Integer) As Integer
End Function

Ответ 4

Вы также можете попробовать это

Private Declare Function GetWindowText Lib "user32.dll" (ByVal hwnd As IntPtr, ByVal lpString As StringBuilder, ByVal cch As Integer) As Integer

Я всегда использую Объявить функцию вместо DllImport. Это проще, чем короче и делает то же самое