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 :
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 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.
Le code de la classe devrait ressembler à ça :
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);
  }
}
Mais je sais pas comment appeller cette méthode en lui passant en paramètre un pointer vers une autre méthode .

Pour info, le code d'appel de la fonction ressemble à ça en Pascal :
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);
Voilà, j'espère ne pas être trop confus dans ma demande .
Merci d'avance pour vos réponse.