Newsgroup: it.comp.programmare.win32
Titolo: Coda messaggi di Windows

Salve a tutti,
ho una domanda IMPORTANTISSIMA da porre... eccola!!!
Come si sa, Windows gestisce tutti i messaggi delle applicazioni. Dunque, é
possible che certi messaggi verso le applicazioni vengano persi o eliminati
quando il PC é "saturo" (CPU 100%)???
In più, la coda (lista) dei messaggi a inviare ha una lunghezza massima o
no???
Grazie mille!!!
Matteo Ferrini

no???
L'hook WH_JOURNALRECORD dovrebbe dirti i messaggi che non vengono
processati!
Ciao
--
- Carlo -
BSSoftware Tips Mailing-List Support

no???
Credo di si', ma non ne sono sicuro.
Da quello che so, la funzione PostMessage() non assicura che il
messaggio venga inserito nella coda. Aspetto smentite :)
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
-----------------------------------------------------
"There is nothing better for understanding a kangaroo
 than seeing it jump." [D.Grune, C.J.H. Jacobs]

 no???
Direi di no ma non ci metto la mano sul fuoco...
(cmq se c'è è sufficientemente grande da non essere un problema)
--
(¯`·.¸¸.·´¯`·.¸¸.-> Andrea <-.¸¸.·´¯`·.¸¸.·´¯)
AntiSpam: rimuovere il trattino basso dall'indirizzo per rispondere
AntiSpam: remove the underscore from the e-mail address to reply

messaggio venga inserito nella coda. Aspetto smentite :)
No, non è che non assicura che venga inserito nella coda, non aspetta che
questo venga processato, al contrario della SendMessage.


La documentazione parla chiaro, se la coda e' piena, i messaggi possono
venir persi
mi pare ci sia anche una priorita', che fa andare avanti alcuni  erestare
indietro altri

questo venga processato, al contrario della SendMessage.
Fidati di cio' che ti dico ;) 
"A common programming error is to assume that the PostMessage function
always posts a message. This is not true when the message queue is
full. An application should check the return value of the PostMessage
function to determine whether the message has been posted and, if it
has not been, repost it." ["Messages and Message Queues",
Documentazione MS SDK]


 Documentazione MS SDK]
E` giusto.  Ad esempio, in Windows 2000, il limite e` precisamente
documentato: al massimo 10,000 messaggi in ogni data, singola
coda (cioe`, non piu` di 10,000 messaggi pending per ciascun
thread).  Personalmente, mi sembra ragionevole assumere che, se
un thread lascia che piu` di 10,000 messaggi si accumulino nella
sua coda, probabilmente e` piantato/impallato/sballato/bacato e
non li processa piu`, per cui cercare di garantire che prima o
poi un ULTERIORE messaggio (egualmente destinato a venire ignorato
come i 10,000 gia` presenti) venga infilato nella coda mi appare
un modo particolarmente futile di sprecare tempo ed energia.
In versioni piu` antiche, i limiti forse erano meno generosi (non
li ho mai visti precisamente documentati sino a NT5, aka Win2000)
per cui forse l'avviso che citi aveva un senso pratico, ma al
giorno d'oggi mi puzza un po' di "precisineria":-).
Alex

Documentazione MS SDK]
Da quel che so e che ho trovato :
"The PostMessage function places (posts) a message in the message queue
associated with the thread that created the specified window and then
returns without waiting for the thread to process the message." Non accenna
a quella storia del messaggio che non viene postato! Cmq a questo punto
penso che quello che c'è scritto sopra valga anche per la SendMessage...Boh?


penso che quello che c'è scritto sopra valga anche per la SendMessage...Boh?
Penso proprio di si'.


 Penso proprio di si'.
Perche` mai?  SendMessage con le code non c'entra.
Alex

Perche` mai?  SendMessage con le code non c'entra.
Come no? :(
Io sapevo che la differenza sostanziale č questa, la SendMessage spedisce un
messaggio in coda e attende finchč la WindowProc non lo ha processato.
PostMessage invece si disinteressa della WindowProc e della corretta
elaborazione del messaggio, lo lascia in coda e restituisce il controllo
all'applicazione.
Quello che dici tu potrebbe trovare un valido riscontro nell'Help quando
dice "The function calls the window procedure for the specified window and
does not return until the window procedure has processed the message", ma
penso che in fondo anche SendMessage accodi dei messaggi, altrimenti come
potrebbero essere gestiti tutti messaggi che circolano nel sistema mediante
chiamate SendMessage?
Aspetto smentite e illuminazioni!
Bye


 Aspetto smentite e illuminazioni!
Sperimenta e vedrai...
Consiglio il Richter (Mondadori Informatica) a chi e` interessato a
problematiche cosi` di basso livello (e anche + sotto).
Alex

problematiche cosi` di basso livello (e anche + sotto).
Dovrò procurarmelo, non sei il primo che me ne parla bene!
Thanks
