Kapitel 25. Native und COM-Interoperabilität

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Dieses Kapitel beschreibt die Integration mit nativen (nicht verwalteten) Dynamic-Link Libraries (DLLs) und Component Object Model (COM) Komponenten. Wenn nicht anders angegeben, befinden sich die in diesem Kapitel erwähnten Typen entweder im System oder im System.Runtime.InteropServices Namensraum.

Aufrufen von nativen DLLs

P/Invoke, kurz für Platform Invocation Services, ermöglicht dir den Zugriff auf Funktionen, Strukturen und Callbacks in nicht verwalteten DLLs(Shared Libraries unter Unix).

Nehmen wir zum Beispiel die Funktion MessageBox, die in der Windows-DLL user32.dll wie folgt definiert ist:

int MessageBox (HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);

Du kannst diese Funktion direkt aufrufen, indem du eine statische Methode mit demselben Namen deklarierst, das Schlüsselwort extern anwendest und das Attribut DllImport hinzufügst:

using System;
using System.Runtime.InteropServices;

class MsgBoxTest
{
  [DllImport("user32.dll")]
  static extern int MessageBox (IntPtr hWnd, string text, string caption,
                                int type);
  public static void Main()
  {
    MessageBox (IntPtr.Zero,
                "Please do not press this again.", "Attention", 0);
  }
}

Die MessageBox Klassen in den Namensräumen System.Windows und System.Windows.Forms rufen selbst ähnliche nicht verwaltete Methoden auf.

Hier ist ein DllImport Beispiel ...

Get C# 8.0 in einer Kurzfassung now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.