2012-02-17 3 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

관련 문제