politech napisał(a):dokładnie zależy mi na komunikacji z programem, z który nie był pisany przeze mnie
polymorphism napisał(a):A dlaczego komunikaty to najmniej skuteczna metoda? Są jak najbardziej ok. Powiedziałbym, że komunikacja via pliki jest średnia.
polymorphism napisał(a):Już lepiej zastosować pamięć współdzieloną.
Co prawda, artykuł jest o tym, czym zastapic mutexy, ale schemat jest podobny.
char * wysylany = "Fajny string";
COPYDATASTRUCT ds;
ds.dwData = 0;
ds.cbData = strlen(wysylany)+1;
ds.lpData = wysylany;
SendMessage(hwnd, WM_COPYDATA, 0, (LPARAM)&ds);
void __fastcall TForm1::WndProc(TMessage &Msg)
{
switch(Msg.Msg)
{
case WM_COPYDATA:
PCOPYDATASTRUCT arg = (PCOPYDATASTRUCT)Msg.LParam;
ShowMessage((char*)arg->lpData);
break;
}
TForm::WndProc(Msg);
}
W tym przypadku najlepsze byłoby OLE (...)
Dlatego, że ta metoda wysyła konkretne komunikaty zdefiniowane w API systemu Windows
(...) a co w przypadku gdy chcę wysłać konkretne dane?!
Ten temat jest mi raczej obcy i chętnie zobaczyłbym jakiś działający przykład, coś prostego.
Cyfrowy Baron napisał(a):(...) to aplikacja musi mieć zaimplementowaną obsługę komunikatów w ten sposób przesyłanych.
polymorphism napisał(a):Głównie chodziło mi o pokazanie, że jest to jeden z prostszych sposobów komunikacji między procesowej (IPC). Wcale nie gorszy...
Cyfrowy Baron napisał(a):Podałem jednak sposób na komunikację programu poprzez linię komend. Jest to metoda prosta i skuteczna, ale działa tylko z aplikacjami, które zostały do tego celu zaprogramowane.
polymorphism napisał(a):To oczywiste, tak samo jak to, że aplikacja musi mieć zaimplementowaną komunikację poprzez pliki czy linię komend, żeby mogła te "komunikaty" poprawnie obsłużyć.
Twoje słowa: (...)
przeciwko moim: (...)
Powrót do Ogólne problemy z programowaniem
Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 10 gości