Probleme beim Aufruf von System-DLLs (winmm.dll)
-
Hallo zusammen!
Ich möchte die winmm.dll anzapfen und habe da eine Reihe imports nach C# übersetzt, die ich in einem Uralten VB6-Code
gefunden habe.
Bei folgenden Methoden habe ich Problem:public static extern int midiInOpen(ref int lphMidiIn, int uDeviceID, int dwCallback, int dwInstance, int dwFlags);
und
public void MidiIN_Proc(long hmIN, long wMsg, int dwInstance, int dwParam1, int dwParam2)
Im Code soll das dann in etwa so aussehen:
midiInOpen(ref hMidiIN, mMPU401IN, MidiIN_Proc, 0, CALLBACK_FUNCTION);
Die Probleme sehen so aus, dass in der dwInstance bzw dwCallback ein Zeiger auf eine Methode erwartet wird. Dummerweise habe
ich keine Ahnung, wie diese Zeiger in C# auszusehen haben. Dementsprechend gehe ich auch davon aus, dass obige Definitionen
nicht so ganz richtig sind.
Wer kann mir sagen, wie sowas aussehen soll oder hat einen Beispielcode für mich?
Danke schon mal!
J.
-
Das geht ganz einfach: Definier Dir Delegates für die Callback-Methoden; diese Delegates müssen natürlich die korrekte, geforderte Signatur haben. Die WinAPI-Funktion deklarierst Du dann einfach so, dass die Parameter 'dwCallback' und 'dwInstance' als die von Dir definierten Delegates deklariert sind. C# kümmert sich dann um den Rest.