Newsgroup: it.comp.lang.delphi
Titolo: Far comunicare 2 programmi.

Salve devo far comunicare 2 programmi.
Se entrambi sono in memoria si devono rilevare e scambiare dati.
I 2 programmi appartengono a package differenti quindi potrebbero non
essere entrambi installati.
Quale e' il metodo + pulito x farli comunicare.
Grazie e ciao
Kirys
--------------------------------------------------
Brayan Fix Kirys Solfory
Remove DELTHIS from the address to replay
Kirys Tech 2000: 
http://www.kt2k.com

 Kirys
le tecniche di interprocesso sono molteplici, però tu dovresti valurare
quale utilizzare in base ai dati che devi scambiare.
Ad esempio, puoi utilizzare i messaggi, oppure il famoso e poco usato DDE
ecc ecc....
Metodo più pulito ? Boh......le tecniche sono quelle, non è che puoi
inventartele da un giorno all'altro. Oddio, volendo potresti inventarti
anche qualcosa, ma meglio affidarsi a ciò che c'è altrimenti dopo tanto
lavoro c'è pure il rischio che esce fuori qualcosa di non molto pulito.
Ok, ti saluto.
P.S. Mi dispiace....niente codice. Prima scegli, poi si vedrà, inoltre ho un
sonno a quest'ora....
Antonio Tarolla

 Kirys Tech 2000: 
http://www.kt2k.com
Andrea

Ma secondo me puň essere un'ottima soluzione.
ROTFL ! 
E' incredibile come la gente riesca a complicare le cose.
COM puo' essere una valida alternativa al DDE, ma secondo me, se lo
scambio di dati e' semplice, basta un semplice WM_COPYDATA.
--
Andrea Laforgia - walkietalkie(at)
libero.it
#exclude <windows.h>

 scambio di dati e' semplice, basta un semplice WM_COPYDATA.
già, il WM_COPYDATA è veramente la soluzione più rapida ed altrettanto
semplice. Visto che queste tecniche di interprocesso vengono usate
pochissimo ( basta vedere i messaggi in questo newsgroup ) mi pare ovvio non
complicarsi la vita con cose strane che fanno perdere un sacco di tempo e
basta !!
Ciao ciao.....
Antonio Tarolla

 #exclude <windows.h>
Andrea

esigenze possono variare pesantemente nel giro di poco tempo.
E WM_COPYDATA continuera' ad essere la soluzione migliore, se gli
applicativi sono entrambi in memoria (l'OP e' stato abbastanza chiaro
in proposito).


 #exclude <windows.h>
Andrea

Si, ma il WM_COPYDATA resterà sempre una soluzione meno flessibile.
????
ROTFL...


espresso un'idea basandosi sull'interpretazione del post.
Su su non bisticciate :)
allora se un programma rileva l'altro installato gi deve poter dare
dei comandi (facilissimo con i mex custom) e passare dei dati.
Il problema e che il tipo di dato (e la sua dimensione) varia a
seconda dell'operazione e dei suoi risultati.
Usare com puo' essere buono ma credo che appesantirebbe eccessivamente
entrambi I software (il secondo e' veramente piccolo e vorrei
mantenerlo tale :D)) nonche' il lavoro necessario, per ora opterei x
il wm_copydata.
Grazie mille ad entrambi
Ciao


 il wm_copydata.
Se i dati sono molti, puoi utilizzare cmq i Memory Mapped File, senza
scomodare interfacce COM. Troverai che sono un metodo semplice e molto
veloce per trasferire grosse quantitą di dati. Di esempi sulla rete ce ne
sono a bizzeffe. Se lavori sotto NT/2000 puoi utilizzare anche le Named
Pipe, ovvero speciali file che servono proprio al tuo scopo.
Salutoni, Il Biondo

 Kirys
Io per le mie applicazioni ora uso solo socket TCP/IP, questo permette ad un
programma di risiedere anche su un altro pc e di inviare comandi e dati in
qualsiasi punto della rete.
Ho reso impostabili indirizzo e porta, poi il protocollo lo creo io in base
all'applicazione.
Questa soluzione però implica di avere il protocollo di rete installato.
Ciao, Roberto.

 Kirys
si potrebbero usare delle named pipe. E' una tecnica fatta apposta, anche se
non e' propriamente semplicissima (neanche tanto difficile). C'e' un
tutorial sulle pipe direttamente nell'help di delphi.
ciao !

si potrebbero usare delle named pipe.
Il server per le named pipe deve girare sotto Windows NT o 2K.