2012-02-17 2 views
1

Я пытаюсь импортировать GetWindowText в приложении VB.NET.Что необходимо для сборки библиотеки DLL в VB.NET

Итак, на других сайтах вам просто нужно импортировать службу interopt и добавить оператор 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 

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

ответ

2

Проблема не имеет ничего общего с импортом сборок. Вы просто не можете определить свободные функции в пространстве имен в 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 
+0

Я чувствую, что я Рик Перри. Opps ... – Nap