2012-03-07 3 views
10

Je vais devoir implémenter un WM_COPYDATA IPC entre 2 applications. J'ai des échantillons sur Internet, mais tous envoient seulement des chaînes de moins de 255 caractères.WM_COPYDATA SendMessage - Peut-il envoyer de grandes chaînes?

Je veux envoyer une grande chaîne (plus de 1k) à un autre processus en utilisant WM_COPYDATA. C'est possible? Quelles sont les limites? Dois-je envoyer un flux au lieu d'une chaîne ou d'un enregistrement?

Les deux applications ont été développées par moi en utilisant Delphi 2010.

+0

Pourquoi ai-je obtenu -1? –

+3

Je ne sais pas. Je vous ai donné +1 pour l'équilibrer. Il y a parfois des votes aléatoires sur SO, particulièrement ici dans [tag: delphi]. La même chose est arrivée à [une question à moi] (http://stackoverflow.com/questions/9572887/3d-library-recommendations-for-interactive-spatial-data-visualisation) il y a quelques jours. –

Répondre

8

Il n'y a aucune limite. Vous pouvez envoyer des données aussi grandes que vous le souhaitez, sous réserve des contraintes de mémoire disponibles, en utilisant WM_COPYDATA.

+0

Donc, fondamentalement, 2 concerts ou plus sur win32? :-) –

+0

@Warren Difficile de trouver autant d'espace d'adressage contigu dans un processus de 32 bits. –

+2

Si vous avez vraiment besoin d'envoyer 2 Go de données, il vaut mieux simplement utiliser un fichier temporaire et passer le nom de fichier, ou utiliser les interfaces 'IDataObject' et' IStream' de COM à la place. –

Questions connexes