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:
-
Wir machen unsere Funktion ausfindig. Z.B. die Methode den um die Workstation, also unsere aktuelle Windows-Sitzung zu sperren.
-
Die MSDN-Library sagt hierzu, dass wir die Methode
LockWorkStationaus deruser32.dll-Datei brauchen. -
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();
-
Das ist auch schon alles.
Viel Spass!