Geralds Thought Shed

Gedanken zu .Net, C#, Java, Windows, Linux und mehr….

Archiv für Januar 7th, 2008

C# - Win32 API calls in C# ?!?!

Verfasst von Gerald Huber am Montag, 7. Januar 2008

Wieder einmal eine Frage, die sich der ein oder andere sicherlich schon mal gestellt hat, was ist, wenn der Befehl/die Funktion die ich brauche nicht in der .NET-Library enthalten ist? - Klar, momentan gibt es (so gut wie .NET 3.5) aber es ist immer noch nicht alles von Windows “gewrappt” worden.

Kann man also unter (innerhalb) von C# Win32-Api-Methoden aufrufen? - JA.

Und zwar so:

  1. Wir machen unsere Funktion ausfindig. Z.B. die Methode den um die Workstation, also unsere aktuelle Windows-Sitzung zu sperren.
  2. Die MSDN-Library sagt hierzu, dass wir die Methode LockWorkStation aus der user32.dll-Datei brauchen.
  3. Nun schreiben wir in unsere C#-Klasse folgende Zeilen:
    [DllImport("user32.dll", SetLastError = true)]
    public static extern bool LockWorkStation();

    Hierbei Importieren wir die “user32.dll” mittels “DllImport” und müssen natürlich die Methode als “extern” definieren, da sie ja aus dieser DLL-Datei importiert wird.
    “SetLastError=true” sagt nur, dass wir eine Fehlermeldung der Importierten Methode auslesen könnten.Anmerkung: Hätten wir zu dem DllImport-Attribute noch ” EntryPoint=”LockWorkStation” ” geschrieben hätten wir unsere Methode anders benennen können, also z.B. wie folgt:
    [DllImport("user32.dll", EntryPoint="LockWorkStation", SetLastError = true)]
    public static extern bool Lock();
  4. Das ist auch schon alles.
     

Viel Spass!

Veröffentlicht in .NET | Getaggt: , , , | 1 Kommentar »