Możesz napisać co chcesz przesyłać między tymi aplikacjami?
I ogólnie winapi jest tak do d**y, że lepiej już ręcznie pamięć modyfikować.
Możesz napisać co chcesz przesyłać między tymi aplikacjami?
I ogólnie winapi jest tak do d**y, że lepiej już ręcznie pamięć modyfikować.
litrmleka napisał(a):
Może to jeszcze jakaś wskazówka.
Wysłałem pytanie do producenta o ten kod:TCHAR* lpszString = (TCHAR*)"DIMX=....,LOWRES=0,HINTBOX=0,"; COPYDATASTRUCT cds; cds.dwData = ID_COPYDATA_PHOTODONE; cds.cbData = sizeof(TCHAR) * (_tcslen(lpszString) + 1); cds.lpData = (TCHAR*) lpszString;
To jest odpowiedź:
here's how my code is different :
cds.lpData = szString.GetBuffer() ;
and after you called ::SendMessage, you need to call
szString.ReleaseBuffer() ;
About other data, that's the same code.
Gość po prostu używa CString-a z MFC i jakoś musi wyłuskać z niego pamięć, by przekazać do niskopoziomowego interfejsu WM_COPYDATA. Nic to nie wnosi.
Testowałeś moje funkcje? Pamiętaj, że hWnd przekazywany do serwera musi być uchwytem okna, które ma tą procedurę okienkową nasłuchującą WM_DATACOPY, inaczej nie dostaniesz odpowiedzi.
Dla testu zmieniłem tylko (*THCAR) na _T i działa. W NC pokazuje się zdjęcie, także mam komunikację.
Jeszcze tylko pytanie odnośnie komunikacji pomiędzy tym moim forwarderem w C++ a moim serwerem w C#. Dalej brnąć w WM_COPYDATA, czy jest jakieś lepsze rozwiązanie?
litrmleka napisał(a):
Jeszcze tylko pytanie odnośnie komunikacji pomiędzy tym moim forwarderem w C++ a moim serwerem w C#. Dalej brnąć w WM_COPYDATA, czy jest jakieś lepsze rozwiązanie?
Zerknę na windowsowe ipc i dam znać. Będzie chyba prościej niż robić to sieciowo po loopbacku. No i w net funkcje tez powinny być normalne do tych mechanizmów. To WM_COPYDATA raczej zostaw, bo to było pomyślane dla aplikacji WINAPI. Byś znowu musiał się bawić w uzgadnianie tych uchwytów okienek.
Pamiętaj też, że na razie coś Ci wyszło, a do produkcyjnego kodu serwera pośredniczącego jeszcze parę kroków. Natomiast nic nie napisałeś czy odpowiedź zwrotną dostałeś.