Windows API-Programmierung mit C#.NET (generelles API-Problem?)
Lukas
- programmiertechnik
1 Lukas
Hallo zusammen!
Ich habe eine Frage zum Thema API-Programmierung: Ich wollte etwas zur API-Programmierung unter .NET lernen. Allerdings funktioniert das nicht so, wie ich mir das vorgestellt habe :)
Auf der Seite http://www.pinvoke.net/ werden die meisten (?) Windows API-Befehle aufgezählt und manche haben eine genaue Beschreibung dabei.
[DllImport("user32.dll", SetLastError = true)]
static extern void EndTask(IntPtr hWnd);
Bei diesem Beispiel ist das Problem, dass ich keine Ahnung habe, was ich als Übergabeparameter übergeben soll (was ist 'IntPtr hWnd' und was sind gültige Werte dafür?).
[DllImport("winmm.dll")]
static extern Int32 mciSendString(String command,
StringBuilder buffer, Int32 bufferSize, IntPtr hwndCallback);
Hier gibt es Beispiel-Code. Das bedeutet ich habe für 2 Beispiele gültige Werte für die Übergabeparameter. Aber es gibt doch sicher noch mehr, oder?
[DllImport("advapi32.dll", SetLastError=true)]
static extern TODO ShutDown(TODO);
Hier bekomme ich nicht mal gesagt, wie viele (bzw. welche) Parameter ich übergeben muss.
Meine Frage lautet: Wie kann ich herausbekommen, was für Parameter ich an die API-Befehle übergeben muss, damit das ganze funktioniert?
Vielen Dank für hilfreiche Antworten!
Viele Grüße, Lukas
Hallo zusammen!
Ich habe jetzt von einer anderen Seite Hilfe bekommen. Vielen Dank an alle, die sich mit meinem Problem beschäftigt haben.
Auf der Seite http://www.pinvoke.net/ werden die meisten (?) Windows API-Befehle aufgezählt und manche haben eine genaue Beschreibung dabei.
Zusammen mit pinvoke.net und der Dokumentation zur Windows API von Microsoft kommt man an die API-Befehle ganz gut ran.
[DllImport("user32.dll", SetLastError = true)]
static extern void EndTask(IntPtr hWnd);
>
> Bei diesem Beispiel ist das Problem, dass ich keine Ahnung habe, was ich als Übergabeparameter übergeben soll (was ist 'IntPtr hWnd' und was sind gültige Werte dafür?).
hwnd steht für Handle Window (=eine Referenz (?) auf ein Fenster). Diese Referenz bekommt man durch den API-Befehl FindWindow.
> [Bsp2:](http://www.pinvoke.net/default.aspx/winmm.mciSendString)
> ~~~csharp
[DllImport("winmm.dll")]
> static extern Int32 mciSendString(String command,
> StringBuilder buffer, Int32 bufferSize, IntPtr hwndCallback);
Hier gibt es Beispiel-Code. Das bedeutet ich habe für 2 Beispiele gültige Werte für die Übergabeparameter. Aber es gibt doch sicher noch mehr, oder?
Hier hat mir eine Suche auf MSDN weitergeholfen. Das habe ich zwar vorher auch gemacht, allerdings habe ich irgendwie keinen Erfolg gehabt. Hier der Link: http://msdn.microsoft.com/en-us/library/ms712587(VS.85).aspx
[DllImport("advapi32.dll", SetLastError=true)]
static extern TODO ShutDown(TODO);
>
> Hier bekomme ich nicht mal gesagt, wie viele (bzw. welche) Parameter ich übergeben muss.
Hier muss ich leider auch passen. Noch. Ich versuche eine Lösung zu finden, aber auf MSDN finde ich leider keine Beschreibung.
Vielleicht sucht ja jemand mal im Archiv und das hier hilft ihm ;-)
Bis dann! ciao, Lukas