Come posso intercettare i messaggi inviati a una finestra?
Domanda
Voglio intercettare i messaggi che vengono inviati a una finestra in un processo diverso. Qual è il modo migliore per farlo? Non riesco a visualizzare i messaggi quando utilizzo l'hook WH_GETMESSAGE e non sono sicuro di poter eseguire la sottoclasse tra i processi? Qualsiasi aiuto sarebbe molto apprezzato.
Soluzione
Devi inserire il tuo codice nel processo che possiede le finestre da cui desideri intercettare i messaggi. Fortunatamente, SetWindowsHookEx()
lo rende abbastanza semplice, anche se potresti avere un all'inizio un po 'di problemi se fino ad ora l'hai usato solo per l'aggancio in-process.
Posso consigliare due eccellenti articoli sull'argomento:
Altri suggerimenti
Se il messaggio viene inviato anziché pubblicato WH_GETMESSAGE
non lo vedrà. Hai bisogno di WH_CALLWNDPROC
. Se stai lavorando su più processi, avrai bisogno di un hook a livello di sistema in una DLL. Non dici come hai invocato SetWindowsHookEx, quindi non so se l'aggancio è fallito perché non era globale o perché il messaggio che stavi cercando era inviato .
Se non hai mai lavorato con hook a livello di sistema prima, ho un esempio di hook a livello di sistema sul mio sito web qui . Questo è un gancio per tastiera, ma il principio è lo stesso.
Fermami se sto parlando involontariamente quaggiù - la tua domanda era così breve che non posso inferire il tuo livello di competenza. Ma scherzare con gli hook non implica qualche esperienza ...