2010-02-09 3 views
24

Wie sollte ich DLLImport Dinge in VB.NET? Ein Beispiel wäre:Wie man <DllImport> in VB.NET verwendet?

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _ 
Private Shared Function GetWindowText(ByVal hwnd As IntPtr, ByVal lpString As StringBuilder, ByVal cch As Integer) As Integer 

End Function 

Wenn ich es in einer Klasse setzen oder woanders, bekomme ich „DllImport nicht definiert ist“ I Visual Studio 2008 Professionelle

Antwort

33

bin mit Sie haben Imports System.Runtime.InteropServices an der Spitze Ihrer hinzufügen Quelldatei.

Alternativ können Sie voll Attributnamen qualifizieren:

<System.Runtime.InteropService.DllImport("user32.dll", _ 
    SetLastError:=True, CharSet:=CharSet.Auto)> _ 
+0

Sie tun Haben Sie ein Buch für Visual Basic 2015, das nur darüber spricht, wie man irgendeinen Typ von 'System.Runtime.InteropService.DllImport' verwendet, um Master auf ihm zu werden? – YumYumYum

6
Imports System.Runtime.InteropServices 
4

Ich sah in getwindowtext (user32) auf pinvoke.net, dass Sie eine MarshalAs Anweisung platzieren können feststellen, dass der String zu LPSTR entspricht.

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Ansi)> _ 
Public Function GetWindowText(hwnd As IntPtr, <MarshalAs(UnManagedType.LPStr)>lpString As System.Text.StringBuilder, cch As Integer) As Integer 
End Function 
3

können Sie auch diese versuchen

Private Declare Function GetWindowText Lib "user32.dll" (ByVal hwnd As IntPtr, ByVal lpString As StringBuilder, ByVal cch As Integer) As Integer 

Ich benutze Declare Function immer statt DllImport ... Sein einfacher, seine kürzer und macht das gleiche

+6

Es gibt viele Dinge, die Sie mit einer Declare-Anweisung * nicht tun können. Keines der Interop-Attribute steht Ihnen zur Verfügung. Ehrlich gesagt, ist dies die alte VB 6-Syntax, und ich denke, jeder neue VB.NET-Code sollte mit der Standard-.NET-Syntax geschrieben werden. –

+0

Nun, du bist richtig, aber ich bin ein fauler Programmierer, also versuche ich immer den kürzesten zu bekommen :) Für meine Projekte hat mir das immer geholfen –

Verwandte Themen