begin process at 2012 02 11 09:58:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Mémoire

 > 

String à travers IntPtr


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

String à travers IntPtr

mercredi 11 avril 2007 à 15:44:33 | String à travers IntPtr

LUDINSKI

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

mercredi 11 avril 2007 à 16:43:52 | Re : String à travers IntPtr

zebobo5

Membre Club
Salut,
Tu as essayé avec : Marshal.StringToHGlobalUni ?


ZeBobo5
N'oubliez pas de cloturer votre post.
mercredi 11 avril 2007 à 17:51:35 | Re : String à travers IntPtr

LUDINSKI

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 !

Merci quand même ;)
jeudi 12 avril 2007 à 02:57:39 | Re : String à travers IntPtr

Lutinore

Administrateur CodeS-SourceS
Salut, tu es sûr que c'est ton message ? et pourquoi PreProcessMessage et non WndProc ?
jeudi 12 avril 2007 à 11:05:25 | Re : String à travers IntPtr

LUDINSKI

Réponse acceptée !
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 !

Bref, problème résolu... Merci quand même



Cette discussion est classée dans : string, envoyer, travers, chaîne, intptr


Répondre à ce message

Sujets en rapport avec ce message

Envoyer un tableau string via les sockets [ par moihenry ] Bonjour, j'ai un tableau du genre : string[] tab = new string[] { "test","test0","test1" }; Comment je dois faire pour l'envoyer par les sockets, pa split string sur plus d'un caractère [ par Souliabdo ] Bonjour,   <p class="MsoNormal" st problème d'accès à un volume distant [ par katwes ] Bonjour,J'essaie de manipuler des fichiers sur un volume distant.Ce dossier est sur un volume NFSMais cela ne fonctionne pas à cause d'un problème de Comment récupérer le nom d'une propriété dans un attribut [ par April_Seb4 ] Bonjour tout le mondeJe m'explique, j'ai crée un attribut LocalizedNameAttribute qui permet de traduire les propriétés d'un controle</fon Utilisation du HashSet [ par olibara ] BonjourJe vais essayer de me familiariser avec le HashSet mais je ne sais pas encore vraiment comment aborder le truc et si finalement il ne vaut pas Piece jointe avec Mailto: [ par olibara ] Bonjour,Je suis tombé par hazard sur la syntaxe bien pratique du mailto, par contre aucune explication trouvable sur les différents parametres possibl Le format de la chaîne d'entrée incorrect [ par hotsizzle ] Bonjour, voilà je développe une application sous visual studio 2008 en c# avec accès à une db SqlServer. J'utilise les objets datagridview, datatable DataRow pas mise à jour [ par rossinante ] Bonjour,Newbie en C#, je n'arrive pas à faire les modifications dans mon DataRow !Quelqu'un a t-il la réponse ?Ci-dessous mon code !=============== Cannot implicitly convert type 'string' to 'System.DateTime' [ par hicham_899 ] salut j'ai utlisé un procedure stocké par deux paramétre (string and date) dans un procédure pour imprimer un etat avec le code suivent :totaljourneeT


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,324 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales