tags:

views:

28

answers:

1

I am writing an application whose users will use ZoomText and a tablet PC. ZoomText is screen magnification software. However ZoomText has a bug that prevents tablet tracking from working correctly, meaning finger and pen interaction with the screen is incorrect. When you zoom in on a rectangle in the screen and tap on something, you are actually tapping on the absolute coordinates, as if ZoomText was not running.

I am trying to write a program that will correct this behavior. ZoomText has a COM API which allows me to know the zoom amount and location. This means that if I were able to get between ZoomText and the operating system, I could intercept the pen/touch input, translate the coordinates taking into account ZoomText's zoom and location, and then pass the input back to the operating system.

Where should I begin? I don't even know where to start looking for how to implement this.

+1  A: 

I think the way to go about this is a low level mouse hook. Use SetWindowsHookEx with a hook type of WH_MOUSE_LL.

John Knoeller
This is a great clue, and I will start investigating immediately. However the first question that comes to mind is, how do I make sure I am one level lower in the chain than ZoomText?
superjoe30
You don't. You will either be lower or you won't. Or it will depend on who runs first. But there is no "I'm more important than everyone else" mode.
John Knoeller
This solution doesn't work. Low level mouse hooks aren't low enough to SET the mouse cursor before the rest of the OS responds to the coordinates. Especially when dealing with tablet input.
superjoe30
@superjoe30: The only way to get lower is to write a driver.
John Knoeller