Bonjour,
Voilà mon problème : j'ai une DLL écrite en C++ que j'essaye d'appeller en C#.
J'ai donc créé une classe contenant les méthodes exportés de la dll :
Le problème, c'est que cette DLL doit appeller une méthode du programme principal. Il y a donc une méthode recevant en paramètre un pointer vers cette méthode.
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 using System.Runtime.InteropServices; namespace MaDLL { public class maDLL { /// <summary> /// Changement du titre de la fenêtre. /// </summary> [DllImport("MaDLL.dll")] public static extern bool WndSetTitle(IntPtr hWnd, [MarshalAs(UnmanagedType.LPStr)] string pTitle); } }
Le code de la classe devrait ressembler à ça :
Mais je sais pas comment appeller cette méthode en lui passant en paramètre un pointer vers une autre méthode
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 using System.Runtime.InteropServices; namespace MaDLL { public class maDLL { /// <summary> /// Envoi du pointer vers la méthode à exécuter par la DLL. /// </summary> [DllImport("MaDLL.dll")] public static extern bool SetProcHandler(IntPtr pfMyProc); } }.
Pour info, le code d'appel de la fonction ressemble à ça en Pascal :
Voilà, j'espère ne pas être trop confus dans ma demande
Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 // Déclaration de la fonction exportée de la DLL function SetProcHandler(pfMyProc: Pointer): Boolean; stdcall; external 'MaDLL.dll'; // Déclaration de la fonction à exécuter par la DLL function MyProc(Prm1, Prm2: Integer): Integer; begin // ... end; // Envoi du pointer vers la fonction à exécuter SetProcHandler(@MyProc);.
Merci d'avance pour vos réponse.
Partager