[C#] Modifier une zone de mémoire partagée
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...:aie:
Quelqu'un a une idée ?
un petit bout du code coté C# :
La structure :
Code:
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:
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);
} |