2012-03-07 12 views
10

2 uygulama arasında WM_COPYDATA IPC'yi uygulamak zorundayım. İnternette örnekler görüyorum, ancak hepsinin sadece 255 karakterden az olan dizeleri yolluyorum.WM_COPYDATA SendMessage - Büyük dizeleri gönderebilir mi?

WM_COPYDATA'u kullanarak büyük bir dizeyi (1k'dan fazla) başka bir işleme göndermek istiyorum. Mümkün mü? Sınırlamalar nelerdir? Bir dize veya kayıt yerine bir akış göndereyim mi?

Her iki uygulama hiçbir sınırlama yoktur

+0

Neden -1 alıyorum? –

+3

Bilmiyorum. Dengelemek için sana +1 verdim. Bazen, özellikle de [tag: delphi] 'de rastgele seçilmiş seçmenler var. Aynı şey birkaç gün önce [bir soruyu] (http://stackoverflow.com/questions/9572887/3d-library-recommendations-for-interactive-spatial-data-visualisation) oldu. –

cevap

8

Delphi 2010. kullanılarak tarafımdan geliştirilmiştir. WM_COPYDATA'u kullanarak mevcut bellek kısıtlamalarına tabi olarak istediğiniz kadar büyük veri gönderebilirsiniz.

+0

Yani temelde win32 2 konser vb? :-) –

+0

@Warren 32 bitlik bir süreçte bu kadar bitişik adres alanını bulmak zor. –

+2

Gerçekten 2GB veri göndermeniz gerekiyorsa, geçici bir dosya kullanarak ve dosya adını aktarmadan daha iyi ya da bunun yerine COM'un 'IDataObject' ve' IStream' arayüzlerini kullanın. –