Esempi di platform invoke

Negli esempi riportati di seguito viene illustrato come definire e chiamare la funzione MessageBox contenuta in User32.dll passando una semplice stringa come argomento. Negli esempi, il campo DllImportAttribute.CharSet è impostato su Auto affinché la larghezza del carattere e il marshalling delle stringhe vengano determinati dalla piattaforma di destinazione.

Lo stesso esempio compare in Visual Basic, C# e C++. Per visualizzare tutti gli esempi, fare clic sul pulsante Filtro linguaggio 42b9ea93.Filter2(it-it,VS.100).gif nell'angolo superiore sinistro della pagina. Per ulteriori esempi, vedere Marshalling dei dati con platform invoke.

Imports System.Runtime.InteropServices

Public Class Win32
    Declare Auto Function MessageBox Lib "user32.dll" _
       (ByVal hWnd As Integer, ByVal txt As String, _
       ByVal caption As String, ByVal Typ As Integer) As IntPtr
End Class

Public Class HelloWorld    
    Public Shared Sub Main()
        Win32.MessageBox(0, "Hello World", "Platform Invoke Sample", 0)
    End Sub
End Class
using System.Runtime.InteropServices;

public class Win32 {
     [DllImport("user32.dll", CharSet=CharSet.Auto)]
     public static extern IntPtr MessageBox(int hWnd, String text, 
                     String caption, uint type);
}

public class HelloWorld {
    public static void Main() {
       Win32.MessageBox(0, "Hello World", "Platform Invoke Sample", 0);
    }
}      
using namespace System::Runtime::InteropServices;

typedef void* HWND;
[DllImport("user32", CharSet=CharSet::Auto)]
extern "C" IntPtr MessageBox(HWND hWnd,
                          String* pText,
                          String* pCaption,
                          unsigned int uType);
void main(void) {
     String* pText = L"Hello World!";
     String* pCaption = L"Platform Invoke Sample";
     MessageBox(0, pText, pCaption, 0);
}

Vedere anche

Riferimenti

DllImportAttribute

Concetti

Creazione di prototipi nel codice gestito

Specifica di un set di caratteri