相关疑难解决方法(0)

WPF用什么来捕获鼠标和键盘输入?

我全局(系统范围)使用SetWindowsHookEx和过滤某些鼠标点击WH_MOUSE_LL.问题是它不适用于WPF应用程序(所有WPF应用程序都检测鼠标点击,无论我是否指示系统忽略这些点击).我已经在这里问了一个类似的问题,但我假设WPF使用DirectInput而不是标准的Windows消息来检测输入.但是呢?

我已经能够找到一个能够使用鼠标点击进入WPF应用程序SendMessage的代码.如果这是可能的,那么我认为它意味着WPF不DirectInput用于鼠标输入.但是,为什么不能阻止WPF应用程序检测鼠标点击SetWindowsHookEx

虽然这个问题主要是关于鼠标输入,但我也想知道它对于键盘输入是如何工作的.

我已经快速创建了以下解决方案来重现奇怪的WPF行为.它由3个项目组成:

  • HookTester
    StartUp项目,自动启动其他2个项目,所以你应该主要关注这一个.启动时安装鼠标挂钩,并在关闭表单时卸载挂钩.

  • WinFormsTest
    包含一个带有默认上下文菜单的TextBox,您可以在其中测试鼠标右键.当HookTester运行时,您不能使用鼠标右键调用上下文菜单.

  • WpfTest也
    包含一个TextBox,带有自定义上下文菜单(虽然我也可以使用默认菜单),所以这又是测试鼠标右键的地方.只要HookTester正在运行,您就无法调用上下文菜单(使用鼠标右键),但出于某种原因,菜单仍将显示(Why ???).

警告:当您运行解决方案时,HookTester项目将启动并立即安装挂钩以拒绝任何右键鼠标点击(系统范围内).只需关闭HookTester表单即可轻松卸载挂钩.谨慎测试.

下载SO5036143.ZIP: 镜子1,镜子2

.net wpf hook input mouse-hook

16
推荐指数
1
解决办法
4086
查看次数

标签 统计

.net ×1

hook ×1

input ×1

mouse-hook ×1

wpf ×1