Как использовать <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
Ответы
Ответ 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.
Это проще, чем короче и делает то же самое