Witam,
Piszę właśnie komunikację między dwoma aplikacjami opierającą się na przesyłaniu komunikatów WM_COPYDATA. We wszystkich przykładach jakie znalazłem prezentowana jest komunikacja jednostronna - pierwszy program wysyła, drugi odbiera. Chcę analogicznie zrobić komunikację dwustronną ale trapi mnie jedna rzecz. Mianowicie kiedy pierwsza aplikacja wysyła wiadomość przez SendMessage (co powoduje czekanie na obsłużenie tego komunikatu) druga aplikacja otrzymuje ten komunikat i natychmiast wysyła odpowiedź również wołając SendMessage (i również czeka na obsłużenie tego komunikatu). Teoretycznie powinno dojść do zakleszczenia, przecież oba programy czekają na zakończenie obsługi swojego komunikatu. Jednak w moich testach żadnego zakleszczenia nie ma. Nawet jak pierwszy program w pętli wysyła 100 komunikatów to drugi bez problemu na każdy odpowiada i jest on obsłużony przez przez pierwszy program mimo że jest on cały czas w pętli. Jak to możliwe? Co się tam dzieje za tą kurtyną? Jakoś burzy to moją koncepcję o obsłudze kolejki komunikatów. Mogę dla pewności użyć PostMessage ale alokuję jakiś obszar w pamięci i wtedy odbiorca jest zobowiązany do jego zwolnienia.
Pozdrawiam