2012-03-07 8 views
10

Dovrò implementare un IPC WM_COPYDATA tra 2 applicazioni. Mi sembrano esempi su internet, ma tutti loro inviano solo stringhe con meno di 255 caratteri.WM_COPYDATA SendMessage - Può inviare grandi stringhe?

Desidero inviare una stringa grande (più di 1k) a un altro processo utilizzando WM_COPYDATA. È possibile? Quali sono i limiti? Devo inviare uno stream anziché una stringa o un record?

Entrambe le applicazioni sono state sviluppate da me utilizzando Delphi 2010.

+0

Perché ho ricevuto -1? –

+3

Non lo so. Ti ho dato +1 per bilanciarlo. Ci sono a volte elettori a caso su SO, specialmente qui in [tag: delphi]. La stessa cosa è successa a [una mia domanda] (http://stackoverflow.com/questions/9572887/3d-library-recommendations-for-interactive-spatial-data-visualisation) un paio di giorni fa. –

risposta

8

Non ci sono limitazioni. È possibile inviare dati di dimensioni sufficienti, in base ai limiti di memoria disponibili, utilizzando WM_COPYDATA.

+0

Quindi fondamentalmente 2 concerti o giù di lì su win32? :-) –

+0

@Warren Difficile trovare lo spazio di indirizzamento contiguo in un processo a 32 bit. –

+2

Se hai davvero bisogno di inviare 2 GB di dati, è meglio usare solo un file temporaneo e passare il nome del file, oppure utilizzare le interfacce COM 'IDataObject' e' IStream'. –

Problemi correlati