Voici mon prototype:PostMessage incapable de passer une chaîne C#
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern bool PostMessage(int hhwnd, uint msg, IntPtr wparam, IntPtr lparam);
Et voici comment je l'utilise:
PostMessage(HWND_BROADCAST, msg, Marshal.StringToHGlobalAuto("bob"), IntPtr.Zero);
Dans un autre thread que je peux intercepter ce message, mais quand j'essaye d'obtenir bob en utilisant:
string str = Marshal.PtrToStringAuto(m.WParam); // where m = the Message object
Je ne comprends pas bob dans str. Je pense que cela doit être dû au fait que j'ai référencé la chaîne "bob" sur la pile d'un thread et que cette référence n'a absolument aucun sens dans la pile d'un thread différent. Mais si c'est le cas, ces pointeurs wparam et lparam ne sont-ils vraiment utilisés que pour les messages passés dans le même thread?
Modifier * Correction: Par fil, je veux dire Process. C'est un problème de passage d'une chaîne entre les processus, pas de threads.
Qu'est-ce que vous essayez d'accomplir, et pourquoi vous essayez d'accomplir de cette façon? –