Is there a way to hook for a particular windows message without subclassing the window.
There is WH_GETMESSAGE but that seems create performance issues.
Any other solutions apart from these which doesn’t deteriorate performance?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
AFAIK there’s no better solution than what you mentioned. And, of course, subclassing the window is better than hooking all the messages of the thread.
Let’s think which path the message passes up until it’s handled by the window:
PostMessage/SendMessageor implicitly by the OS.GetMessageor similar), and then callsDispatchMessage.CallWindowProc(or similar).CallWindowProcidentifies the window procedore associated with the window (viaGetClassLong/GetWindowLong)Subclassing – means replacing the window procedure for the target window. This seems to be the best variant.
Installing hook with
WH_GETMESSAGEflag will monitor all the messages posted to the message queue. This is bad because of the following:DispatchMessage).So that subclassing seems much better.
One more solution – in case your specific message is posted (rather than sent) you may override the message loop, and for every retrieved message you may do some pre/post-processing