LUDINSKI
Messages postés441Date d'inscriptionmardi 2 décembre 2003StatutMembreDernière intervention22 mai 2012
-
11 avril 2007 à 15:44
LUDINSKI
Messages postés441Date d'inscriptionmardi 2 décembre 2003StatutMembreDernière intervention22 mai 2012
-
12 avril 2007 à 11:05
Bonjour à tous,
J'utilise PostMessage pour envoyer un message WM_USER à mon application
Tout ça fonctionne très bien, mais je souhaite passer une chaîne de caractères par ce message
( via LParam )
J'ai donc essayé de passer par Marshal.StringToHGlobalAuto( monString );
pour récupérer un pointeur sur ma chaîne
et Marshal.PtrToStringAuto( msg.LParam ); pour le récupérer
Mais je récupère une chaîne vide...
Quelqu'un aurait-il une proposition pour envoyer cette maudite chaîne ?
Merci
LUDINSKI
Messages postés441Date d'inscriptionmardi 2 décembre 2003StatutMembreDernière intervention22 mai 20128 12 avril 2007 à 11:05
Salut Lutinore ( tu n'dors jamais? ) ^^,
En effet, je n'ai pas utilisé PreProcessMessage() mais je n'voulais pas entrer dans les détails...
Le message, je l'intercepte grâce à l'interface IMessageFilter, donc par la méthode PreFiltreMessage()... Et cela fonctionne
Mais je vais quand même utiliser ta méthode, je n'la connaissais pas !
Pour mon problême, je l'ai résolu grâce aux Atomes globaux :
- Je crée un atome globale grâce à GlobalAddAtom( monString ); et je passe l'identifiant de l'atome dans le message windows
- A la réception du message je récupère l'atom grâce à son identifiant :
GlobalGetAtomName( msg.LParam.ToInt32(), ... ); - Puis je supprime l'atome de la table globale GlobalDeleteAtom();
Je pense que je n'avais pas le droit de lire à l'adresse mémoire allouée par l'application émettrice... Par contre ça ne me générai pas d'erreur !
LUDINSKI
Messages postés441Date d'inscriptionmardi 2 décembre 2003StatutMembreDernière intervention22 mai 20128 11 avril 2007 à 17:51
Salut zebobo5,
Oui, et même Marshal.StringToHGlobalAnsi...
Mais il semblerai que ça soit un problème de sécurité :
Quand je récupère ma chaîne directement après
Marshal.StringToHGlobalAuto( monString );
Je la récupère bien...
Mais quand j'essaye de la récupérer après la réception du message windows (donc dans PreProcessMessage) la chaîne est vide !