在VB.NET中导入DLL库需要什么程序集

时间:2012-02-17 03:56:38

标签: vb.net visual-studio-2008 dllimport

我正在尝试在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

我需要导入哪些程序集才能使其正常工作?有什么想法吗?

1 个答案:

答案 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