Какая сборка нужна для импорта библиотеки DLL в VB.NET - PullRequest
1 голос
/ 17 февраля 2012

Я пытаюсь импортировать GetWindowText в приложение VB.NET.

Таким образом, основываясь на других сайтах, вам просто нужно импортировать службу взаимодействия и добавить оператор DLLImport, аналогичный C #. Но почему-то он не распознает оператор и получает ошибку компиляции BC30001 (оператор недопустим в пространстве имен).

Вот код, который я использовал.

Imports System.Runtime.InteropServices

<DllImport("user32", CharSet:=CharSet.Auto, SetLastError:=True)> _
Public Shared Function GetWindowText(ByVal hWnd As IntPtr, <Out(), MarshalAs(UnmanagedType.LPTStr)> ByVal lpString As StringBuilder, ByVal nMaxCount As Integer) As Integer
End Function

Какую сборку мне нужно импортировать, чтобы эта работа работала? Есть идеи?

1 Ответ

2 голосов
/ 17 февраля 2012

Проблема не имеет ничего общего с импортом сборок. Вы просто не можете определить свободные функции в пространстве имен в VB.NET.

Вы должны поместить их либо в Module (в основном статический класс), либо в Class.

В любом случае рекомендуется размещать встроенные функции Win32 в классе с именем NativeMethods, поэтому переписайте свой код так:

Imports System.Runtime.InteropServices

Friend Class NativeMethods

    <DllImport("user32", CharSet:=CharSet.Auto, SetLastError:=True)> _
    Public Shared Function GetWindowText(ByVal hWnd As IntPtr,
        <Out(), MarshalAs(UnmanagedType.LPTStr)> ByVal lpString As StringBuilder,
        ByVal nMaxCount As Integer) As Integer
    End Function

End Class
...