Exemples d'appel de plate-forme

Les exemples suivants montrent comment définir et appeler la fonction MessageBox dans User32.dll, en passant une simple chaîne en tant qu'argument. Dans ces exemples, Auto est affecté au champ DllImportAttribute.CharSet Field afin de permettre à la plate-forme cible de déterminer la largeur des caractères et le marshaling des chaînes.

Le même exemple est donné en Visual Basic, C# et C++. Pour afficher tous les exemples, cliquez sur le bouton Filtre de langue dans l'angle supérieur gauche de la page. Pour des exemples supplémentaires, consultez Marshaling de données à l'aide de l'appel de plate-forme.

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);
}

Voir aussi

Référence

DllImportAttribute Class

Concepts

Création de prototypes dans du code managé
Spécification d'un jeu de caractères