Bonjour,

J'ai réalisé deux applications la première en C++, la seconde en C#.

La première envoie une structure COPYDATASTRUCT à la seconde à l'aide de SendMessage (message WM_COPYDATA).

Dans la méthode WndProc de la seconde, je récupère la structure sans problème à l'aide de Marshal.PtrToStructure.

...Jusque là tout va bien...


Mon souhait serait de modifier la struture reçu mais j'avoue que je sèche...

Quelqu'un a une idée ?


un petit bout du code coté C# :

La structure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
[StructLayout(LayoutKind.Sequential)]
public struct CopyDataStruct
{
  public int dwData;
  public int cbData;
  [MarshalAs(UnmanagedType.LPStr)] public string lpData;
}
La méthode WndProc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
protected override void WndProc(ref System.Windows.Forms.Message m)
{
  if(m.Msg == WM_COPYDATA)
  {
    CopyDataStruct structData = (CopyDataStruct)Marshal.PtrToStructure(m.LParam,typeof(CopyDataStruct));
 
    // ici  : j'aimerais modifier les données se trouvant dans m.LParam
 
  }
  base.WndProc(ref m);
}