2010-02-09 43 views
24

Tôi nên DLLImport mọi thứ như thế nào trong VB.NET? Một ví dụ sẽ là:Cách sử dụng <DllImport> trong VB.NET?

<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 

Nếu tôi đặt nó bên trong một lớp hoặc ở một nơi khác, tôi nhận được "DllImport không được định nghĩa" Tôi đang sử dụng Visual Studio 2008 Professional

Trả lời

33

Bạn phải thêm Imports System.Runtime.InteropServices để phía trên cùng của bạn tệp nguồn.

Ngoài ra, bạn có thể đủ điều kiện đầy đủ tên thuộc tính:

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

Bạn có bất kỳ cuốn sách cho Visual Basic 2015 mà chỉ nói về cách sử dụng bất kỳ loại 'System.Runtime.InteropService.DllImport' để trở thành chủ trên nó? – YumYumYum

6
Imports System.Runtime.InteropServices 
4

tôi thấy trong getwindowtext (user32) trên pinvoke.net rằng bạn có thể đặt một tuyên bố MarshalAs nêu rằng StringBuffer tương đương với LPSTR.

<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

Bạn cũng có thể thử này

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

tôi luôn luôn sử dụng Declare Function thay vì DllImport ... của nó đơn giản hơn, ngắn hơn và làm nó cùng

+6

Có một số lượng lớn những thứ bạn * không thể * làm với câu lệnh Tuyên bố. Không có thuộc tính interop nào có sẵn cho bạn. Thành thật mà nói, đây là cú pháp VB 6 kế thừa, và tôi nghĩ rằng tất cả các mã VB.NET mới nên được viết bằng cú pháp .NET chuẩn. –

+0

Vâng, bạn đúng nhưng iam một lập trình lười biếng, vì vậy tôi luôn luôn cố gắng để có được một trong những ngắn nhất :) Đối với các dự án của tôi, điều này luôn luôn giúp tôi ra –

Các vấn đề liên quan