Newsgroup: it.comp.lang.visual-basic
Titolo: far comunicare 2 applicazioni (fatte da me)

Ciao a tutti
Vorrei chiedervi il modo + semplice e veloce per far comunicare 2
applicazioni che ho sviluppato.... per farvi capire meglio vi faccio
un'esempio stupido.
<----- Esempio ----->
Ho un'applicazione di nome Pippo e un'altra di nome Pluto.
Come faccio a fare in modo che Pluto invii a Pippo un testo?
    questo testo verra interpretato e scritto nella proprietą Caption del
form Pippo.
<-----fine esempio ---->
Ringrazio tutti
Ale(xand[19])
N.B.
Potrei usare la messaggistica di windows usando l'API SendMessage ecc ma č
molto laboriosa, oppure far diventare l'applicazione Pippo un server (con
winsock) e passargli tramite la porta i comandi che deve eseguire, ma anche
questa soluzione mi sembra abbastanza skifosa :-)

 un'esempio stupido.
dde (però non molto consigliato )
activex
filemapping
cosa preferisci ?
un mio modesto parere è di creare un piccolo activex dove metterai i tuoi
dati in un modulo pubblico...
puoi elaborarli creare eventi con estrema facilità...
ciao

 puoi elaborarli creare eventi con estrema facilitą...
Puoi postare qualche righetta di codice?!
Grazie.
Ciao.
Paolo.

 Puoi postare qualche righetta di codice?!
1)ti crei il tuo bel activex aggiungi un modulo pubblico e poi la classica
classe
  le variabile immesse nel modulo publico saranno visibili a "tutti" i tuoi
prorgammi che creeranno un'istanza dell'activex
nella classe aggiungerai una funzione per controllare i dati nel modulo
(saranno condivisi come gia detto)
function datiguarda() as string
 datiguarda=stringa_residente_nel_modulo_dichiarata_pubblica
end function
modulo
public stringa_residente_nel_modulo_dichiarata_pubblica as string
non l'ho provato ma credo sia tutto funzionante
se c'è qualcosa che non va chiedi
ps: puoi anche aggiungere evento che comunica l'aggiunta dei dati  ma magari
leggi la guida :)
ciao :)

 (poco ortodosso??)
[SNIP]
Poco ortodosso e molto poco sicuro...la clipdoard e' una per tutto il S.O.
e, se vogliamo, e' un'area di "proprieta'" dell'utente, non dei programmi.
Prova ad installare sul tuo PC due o tre programmi, magari creati da gente
diversa, che usano lo stesso trucchetto, e prova a immaginare il potenziali
casini a cui vai incontro...
Un esempio veramente elementare per utilizzare COM (nella fattispecie EXE
ActiveX per l'appunto) per scambiare una stringa da un programma all'altro
e' quello di creare una classe,impostarla come MultiUse, aggiungere una
singola property di tipo stringa e includerla in tutti i progetti in cui hai
bisogno di comunicare; questi ultimi devono passare da Exe standard a EXE
ActiveX, ma il tutto si riduce a cambiare l'opzione nelle proprieta' del
progetto.
Con questo sistema, che ripeto e' molto terra-terra, con un CreateObject e
una singola istruzione di assegnazione ottieni grosso modo la stessa cosa
che ottenevi con la Clipboard, ma senza le interferenze dette sopra... dopo
di che, molto probabilmente ti renderai conto che puoi creare un ambiente
molto piu' strutturato che non ti costringa ad interpretare tutti i
"comandi" contenuti nella stringa suddetta e comincierai a utilizzare la
classe sul serio.
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

Ringrazio cortesemente tutti coloro che han letto il mio post e mi han
risposto
Grazie: Pailocco,Luca Dormio e PaoloP
tnx x il suggerimento! ;P
By Ale(xand[19])

Scusa Luca, ma se io cambio la mia applicazione (client) da EXE-Standard a
EXE-ActiveX non posso usare il form...come mai? dove posso trovare maggiori
informazioni al riugardo? (COM)
Ti ringrazio
Ale(xand[19])


 informazioni al riugardo? (COM)
[SNIP]
Intendi dire che non puoi usare una form come oggetto di avvio?
hai ragione, ho dimenticato di dire che in questo caso devi definire in un
modulo la Sub Main di avvio del programma.
Puo' essere anche una cosa estremamente semplice come
Sub Main
FormPrincipale.Show
End Sub
ma visto che il programma si affaccia nel magico mondo delle classi e delle
istanze di oggetto :-) , e' meglio non rischiare e partire gia' da subito
con:
Sub Main
Dim FMain As FormPrincipale
Set FMain = New FormPrincipale
FMain.Show
End Sub
Ricordati anche, sempre nella finestra delle proprieta', scheda
"Componente", di impostare la modalita' di avvio come "Autonoma"


 Giusto?
Mi sa che mi sono spiegato male... la mia idea iniziale, per cominciare a
capire il meccanismo, era assai piu' banale, ovvero
Definisci la classe e la includi *a livello di sorgente* nei due progetti,
che compili come Exe ActiveX.
A questo punto, quando A deve dire qualcosa a B:
Dim x As Object
x = CreateObject("B.Classe")
x.Dimmelo = "Ciao"
e quando B deve dire qualcosa ad A
Dim x As Object
x = CreateObject("A.Classe")
x.Dimmelo = "Ciao a te"
usare una DLL come layer intermedio e' gia' un passo in piu', per il momento
mi concentrerei nel prendere dimestichezza con meccanismi piu' semplici a
due livelli tipo A<->B oppure un modulo server e n moduli client.


eheh è + chiaro di prima, ... ma avendo dei dubbi(e nn mi pare il caso di
farti 2000 domande)...nn sai dove posso trovare delle guide online?
Ti ringrazio veramente molto per le informazioni
Ale(xand[19])



[SNIP]
Guide generiche non saprei, ma certamente su MSDN online (e offline) trovi
tutto sotto (cito da un altro messaggio):
"Programming with Objects"
per l'utilizzo generale di classi e oggetti
"Programming with Components"
per l'accesso agli elementi suddetti forniti da applicazioni e librerie
esterne
e quindi
"Creating ActiveX Components"
per creare i propri componenti
ovviamente mi riferisco a tre capitoli della guida di VB6


 filemapping
aggiungerei
sockets
named pipe
mailslots
a parte i socket (abbastanza facili da utilizzare con VB) per il resto devi
fare un massiccio uso di API, spesso con accorgimenti differenti se si
tratta di Win9x o Win2K-NT
ciao