Try duplicating the window class and window name that receives the messages - then P3XRCtl may send the messages directly to you without the TV app running. In other words, P3XRCtl may just do a simple FindWindow() on a known window name/class.

Another way to avoid a global hook is to inject a dll into the TV app and "subclass" the windows procedure of the target window - so you're only hooking the one instance.

gg