我正在尝试在VB.NET应用程序中导入GetWindowText。
因此,基于其他站点,您只需导入interopt服务并添加类似于C#的DLLImport语句。但不知何故,它无法识别语句并获得BC30001(Statement在命名空间中无效)编译错误。
这是我使用的代码。
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
我需要导入哪些程序集才能使其正常工作?有什么想法吗?
答案 0 :(得分: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