Pagina 1 di 1

[VB] Comunicazione tra applicazioni con messaggi di windows

MessaggioInviato: mar giu 20, 2006 10:29 am
da DilanDog
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?

MessaggioInviato: mar giu 20, 2006 10:36 am
da Robby78
si, è fattibile usando le code private MSMQ. Vedo se ho qualche esempio

MessaggioInviato: mar giu 20, 2006 10:43 am
da Robby78
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


MessaggioInviato: mar giu 20, 2006 10:52 am
da Silver Black
Dovrebbe essere possibile con la semplice API SendMessage.

MessaggioInviato: mar giu 20, 2006 10:55 am
da Robby78
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

MessaggioInviato: mar giu 20, 2006 1:45 pm
da DilanDog
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]

MessaggioInviato: mar giu 20, 2006 2:00 pm
da Robby78
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.

MessaggioInviato: mar giu 20, 2006 2:14 pm
da DilanDog
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?

MessaggioInviato: mar giu 20, 2006 2:19 pm
da Robby78
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.