2012-03-07 22 views
10

Tôi sẽ phải triển khai WM_COPYDATA IPC giữa 2 ứng dụng. Tôi có vẻ như mẫu trên internet, nhưng tất cả chúng chỉ gửi các chuỗi có ít hơn 255 ký tự.WM_COPYDATA SendMessage - Nó có thể gửi các chuỗi lớn không?

Tôi muốn gửi một chuỗi lớn (hơn 1k) đến một quy trình khác bằng cách sử dụng WM_COPYDATA. Có thể không? Những hạn chế là gì? Tôi có nên gửi luồng thay vì chuỗi hoặc bản ghi không?

Cả hai ứng dụng được phát triển bởi tôi bằng Delphi 2010.

+0

Tại sao tôi nhận được -1? –

+3

Tôi không biết. Tôi đã cho bạn +1 để cân bằng nó. Đôi khi có những người bỏ phiếu ngẫu nhiên trên SO, đặc biệt là ở đây trong [tag: delphi]. Điều tương tự cũng xảy ra với [một câu hỏi của tôi] (http://stackoverflow.com/questions/9572887/3d-library-recommendations-for-interactive-spatial-data-visualisation) một vài ngày trước. –

Trả lời

8

Không có giới hạn. Bạn có thể gửi dữ liệu lớn tùy thích, tùy thuộc vào các hạn chế về bộ nhớ có sẵn, sử dụng WM_COPYDATA.

+0

Vì vậy, về cơ bản 2 hợp đồng biểu diễn hoặc như vậy trên win32? :-) –

+0

@Warren Khó tìm thấy nhiều không gian địa chỉ liền kề trong quy trình 32 bit. –

+2

Nếu bạn thực sự cần gửi 2GB dữ liệu, bạn nên sử dụng tệp tạm thời và chuyển tên tệp hoặc sử dụng giao diện 'IDataObject' và' IStream' của COM thay thế. –

Các vấn đề liên quan