Pergunta

Estou ciente de que alguns tipos de mensagens são enviadas diretamente para procedimentos de janela, enquanto outros são destacados para fila de mensagens de um segmento, mas eu não encontrei nenhuma maneira de determinar se uma mensagem será enviada ou postada.

MSDN é meio-útil; explicou o que está acontecendo mas os exemplos que ele dá são presumivelmente não exaustiva.

Existe uma lista definitiva de Sent vs. postou mensagens, ou uma maneira de decidir que tipo de mensagem é?

Foi útil?

Solução

e algumas mensagens não são nem publicado nem enviada. Tal é o caso de WM_PAINT, WM_TIMER e alguns outros. Eles são simplesmente retornado pela GetMessage quando a fila de mensagens postadas estão vazias.

Eu não sei o que as aplicações que você está tentando gancho, mas se você tem que fazer essas perguntas, então eu / sou um pouco assustado. Nada é mais frustrante para um desenvolvedor para passar o tempo sobre acidentes relatados pelo usuário apenas para descobrir que a causa é de algum outro aplicativo que está injetando código mal-comportados. Tread cuidadosamente!

Além disso, Spy ++ (ferramenta que acompanha o Visual Studio) irá mostrar-lhe quais as mensagens são postadas / enviados / recevied para qualquer aplicativo do Windows Live.

Outras dicas

Use InSendMessage ou InSendMessageEx para determinar se você está processando uma mensagem que foi enviada por um chamada para a função SendMessage.

As páginas MSDN documentando cada mensagem deve ser considerado a fonte autorizada para isso:

A mensagem WM_LBUTTONDOWN é postou quando .. .

A mensagem WM_SETFOCUS é enviado para uma janela depois ...

etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top