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.

È stato utile?

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:

  1. di hook e DLL di Joseph Newcomber
  2. di Robert Kuster Tre modi per iniettare il tuo codice in un altro processo

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 ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top