2012-02-17 17 views
1

VB.NETアプリケーションでGetWindowTextをインポートしようとしています。VB.NETでDLLライブラリをインポートするために必要なアセンブリ

他のサイトに基づいて、interoptサービスをインポートし、C#と同様のDLLImportステートメントを追加するだけで済みます。しかし、どういうわけか、ステートメントを認識せず、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のいずれかに配置する必要があります。

あなたがとにかくNativeMethodsという名前のクラスでネイティブのWin32関数を配置するので、このように見えるようにコードを書き直すお勧めします:

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

関連する問題