我有一个第三方的应用程序(我称之为GreedyApp为了简洁),其持有的鼠标和键盘输入的人质时,它的窗口获得焦点,即它隐藏了标准的鼠标光标和与它自己的替换它光标,并将光标限制在其窗口中。输入到其他窗口的唯一方法是从GreedyApp远离ALT + TAB。停止应用程序盗取输入
我需要允许用户免费使用系统的所有组件(交付的系统将是纯触摸屏),因此一旦GreedyApp获得焦点,系统的其余部分就会变得不可用。
到目前为止,我已经为GreedyApp劫持了user32.dll,挂钩了SetCursor
,ShowCursor
和ClipCursor
,并将其禁用。结果是GreedyApp不再隐藏光标,并且光标在用户移动它的任何地方都可以随意漫游,但是...
我留下的问题是,无论屏幕上的哪个位置光标被按下,或按下键盘上的哪些键(除ALT + TAB),输入仍然是直接进入GreedyApp,和其他Windows没有收到任何输入。
我不知道GreedyApp是如何实现这一点,因此我还不知道哪个API调用挂钩来阻止它。我虽然可能已经使用钩子本身,但我已经挂钩并禁用SetWindowsHookEx
,但问题仍然存在。
所以我的问题是这样的:
或者:
A)是否有一个(相对直接的)的方式来找出API调用的应用程序在运行时在做什么?
或
B)什么方法是GreedyApp可能被使用以从接收输入停止其他窗口?
的SetFocus()控制,很可能。 –
也可能是SetCapture()。 –
我也考虑过SetCapture(),但那不会捕获用于其他进程的鼠标输入。因此,也许GreedyApp使用[AttachThreadInput](http://msdn.microsoft.com/en-us/library/windows/desktop/ms681956.aspx)代替,以引导输入处理到其自己的消息队列。 – IInspectable