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?
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?
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
/SendMessage
or implicitly by the OS.GetMessage
or similar), and then calls DispatchMessage
.CallWindowProc
(or similar).CallWindowProc
identifies the window procedore associated with the window (via GetClassLong
/GetWindowLong
)Subclassing - means replacing the window procedure for the target window. This seems to be the best variant.
Installing hook with WH_GETMESSAGE
flag 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