Looking at the samples in Listings 7.1 to 7.4, you might notice the similarities between this method of interoperation and Visual Basic 6.0's Declare statement. You can achieve much of the same functionality as P/Invoke with the following VB 6 Declare statement:
Declare Function MessageBox Lib "user32" Alias "MessageBoxW"( hWnd As Long, txt As String, caption As String, Typ As Long) As Long
In fact, using Declare is still supported as a viable means to use old code with Visual Basic .NET. The old Declare and the new Declare still have issues that center around type safety; regardless, you can use Declare to interop with code that was not written in VB .NET.
Another means of interoperating with legacy code is to use ...