Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[VB] Comunicazione tra applicazioni con messaggi di windows

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[VB] Comunicazione tra applicazioni con messaggi di windows

Messaggioda DilanDog » mar giu 20, 2006 10:29 am

Qualcuno sa se è tecnicamente possibile eseguire comunicazioni tra due applicazioni differenti sfruttando i messaggi di windows? Ovvero l'applicazione A comunica all'applicazione B un dato o un'operazione da eseguire inviando nella coda dei messaggi di windows un proprio messaggio personalizzato....è fattibile? O meglio, so che è fattibile, ma lo è anche da VB6 ? Se si qualcuno ha qualche esempio sottomano?
Avatar utente
DilanDog
Senior Member
Senior Member
 
Messaggi: 208
Iscritto il: ven apr 15, 2005 9:13 am
Località: Milano

Messaggioda Robby78 » mar giu 20, 2006 10:36 am

si, è fattibile usando le code private MSMQ. Vedo se ho qualche esempio
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda Robby78 » mar giu 20, 2006 10:43 am

Dichiarazioni:
Codice: Seleziona tutto
Public gmqTX_Queue              As MSMQQueue
Dim qInfo                       As New MSMQQueueInfo


Creazione oggetto coda in trasmissione (se usi MQ_RECEIVE_ACCESS la coda è di ricezione)
Codice: Seleziona tutto
    Set qInfo = New MSMQQueueInfo
    qInfo.FormatName = "DIRECT=TCP:" & INDIRIZZO IP & "\Private$\" & NOME CODA PRIVATA
    Set gmqTX_Queue = qInfo.Open(MQ_SEND_ACCESS, MQ_DENY_NONE)
    If CBool(Err) Then
        qInfo.Create
        Set gmqTX_Queue = qInfo.Open(MQ_SEND_ACCESS, MQ_DENY_NONE)
endif


chiusura:
Codice: Seleziona tutto
gmqTX_Queue.close


ricezione:
Codice: Seleziona tutto
    Dim oMsg                        As MSMQMessage


        Set oMsg = New MSMQMessage
        Set oMsg = mqQueue.Receive(MQ_NO_TRANSACTION, , , 10)
        If oMsg Is Nothing Then
...
        End If


Trasmissione:
Codice: Seleziona tutto
Dim oMsg                        As New MSMQMessage
Dim abMessage(10)                 As Byte

    oMsg.Body = abMessage
    oMsg.Delivery = 0
    oMsg.Send gmqTX_Queue

Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna


Messaggioda Silver Black » mar giu 20, 2006 10:52 am

Dovrebbe essere possibile con la semplice API SendMessage.
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Messaggioda Robby78 » mar giu 20, 2006 10:55 am

Silver Black ha scritto:Dovrebbe essere possibile con la semplice API SendMessage.

si, anche se credevo intendesse le code microsoft:
DilanDog ha scritto:inviando nella coda dei messaggi di windows un proprio messaggio personalizzato
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda DilanDog » mar giu 20, 2006 1:45 pm

Grazie a tutti e due [8D]
Effettivamente quello che serve a me nell'immediato è sicuramente l'API SendMessage, ma siccome ho avuto qualche problemino di crash del PC facendo le prove chiedevo lumi e magari qualche esempio in proposito...però è interessante anche l'esempio riportato da Robbie, anche perché, correggimi se sbaglio, mi sembra che in quel modo si possano anche inviare messaggi ad applicazioni residenti su PC differenti, visto che prevede un indirizzo IP, giusto? Il che sarebbe non fantastico, di più [applauso]
Avatar utente
DilanDog
Senior Member
Senior Member
 
Messaggi: 208
Iscritto il: ven apr 15, 2005 9:13 am
Località: Milano

Messaggioda Robby78 » mar giu 20, 2006 2:00 pm

DilanDog ha scritto:mi sembra che in quel modo si possano anche inviare messaggi ad applicazioni residenti su PC differenti, visto che prevede un indirizzo IP, giusto? Il che sarebbe non fantastico, di più [applauso]


esatto! in quel modo conviene usare la coda di trasmissione in locale, e quella di ricezione in remoto.
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda DilanDog » mar giu 20, 2006 2:14 pm

Robby78 ha scritto:
DilanDog ha scritto:mi sembra che in quel modo si possano anche inviare messaggi ad applicazioni residenti su PC differenti, visto che prevede un indirizzo IP, giusto? Il che sarebbe non fantastico, di più [applauso]


esatto! in quel modo conviene usare la coda di trasmissione in locale, e quella di ricezione in remoto.


...e per caso sai anche se il messaggio resta in coda finchè l'applicazione di destinazione non lo ha letto? Ad esempio, l'applicazione A iniva un messaggio all'applicazione B ed in quel momento l'applicazione B è impegnata in qualche operazione per una decina di secondi che congela l'applicativo. Finita la funzione il messaggio è ancora "lì che aspetta" o è andato perso?
Avatar utente
DilanDog
Senior Member
Senior Member
 
Messaggi: 208
Iscritto il: ven apr 15, 2005 9:13 am
Località: Milano

Messaggioda Robby78 » mar giu 20, 2006 2:19 pm

DilanDog ha scritto: Finita la funzione il messaggio è ancora "lì che aspetta" o è andato perso?

il messaggio è li che aspetta.... anzi stai attento che se accumuli troppi messaggi rischi di piantare il pc... devi fare una gestione per la cancellazione dei messaggi doppi o vecchi.
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron
Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising