2012-05-10 17 views
5

Sto tentando di eseguire il debug di un problema con l'installazione di Windows. I dettagli non sono particolarmente importanti, ma sto cercando la risposta alla seguente domanda:Come faccio a sapere chi ha chiamato SendMessage?

explorer.exe riceve un messaggio WM_SETTINGCHANGE. In WinDbg, posso rompere al WndProc appropriato. Come faccio a sapere chi ha inviato il messaggio? Cioè: esiste un modo per risalire al processo che ha chiamato SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, ...)?

risposta

1

I messaggi di Windows sono anonimi. La vostra applicazione chiamando non ha alcun modo per determinare dove vengono meno che il messaggio definisce un modo per identificare il mittente (che sarebbe facilmente falsificato)

+0

Il processo chiamante si blocca fino alla consegna del messaggio. Deve quindi esserci un meccanismo RPC in gioco. So che c'è un modo per trovare il chiamante in una chiamata COM cross-process. Mi chiedo se c'è un modo per fare lo stesso per i messaggi di Windows. –

+1

... e non sto chiedendo se la mia app possa capirlo. Sto chiedendo se WinDbg può capirlo. –

Problemi correlati