Windows在KeyDown事件触发前吞下WIN+方向键组合

本文关键字:WIN+ 方向 组合 KeyDown 事件 Windows | 更新日期: 2023-09-27 17:59:25

尽管ResizeMode设置为CanMinimize,但我有一个窗口必须尽可能正常地运行到Windows 7标准。

我承认这条路线的意义很差,但这是我所知道的在无铬/无边界父窗口中托管非WPF内容(WinFormsHost等)的唯一方法之一(因为AllowsTransparency(传统方式)通常会与它冲突(导致它根本无法渲染))。

考虑到这一点,我为窗口编写了自己的调整大小和手势代码(捕捉到一边,拖动到顶部时最大化,等等),所有这些都非常有效。

我也会很容易地获得用户从WinKey+Direction获得的预期行为(左键和右键将窗口捕捉到左键或右键,而向上键将其最大化,向下键将其恢复到正常大小),然而,系统似乎在到达应用程序之前就将这个特定的组合吞下了。当按下方向OR窗口键时,事件会被适当地触发,但组合不会触发它。

因此,我的问题是:在一个相对普通的WPF应用程序中,是否有可能在不将键盘挂钩插入系统的情况下对这种组合做出反应?

谢谢你抽出时间。

Windows在KeyDown事件触发前吞下WIN+方向键组合

根据Gustavo Cavalcanti对类似问题的回答找到了解决方案。应用程序现在正在捕捉各个按键事件,我能够确定键盘状态,并在按下箭头键时采取相应行动(通过检查LWin/RWin和keyboard.IsKeyDown的箭头)。

目前,这是一个不错的解决方案,但它与Windows的正常功能不太匹配,因为窗口应该在用户按下箭头键的瞬间移动/停靠,而不是在释放箭头键时。

尽管如此,总比什么都没有好,而且开箱即用,只需最少的额外代码,没有其他依赖项/库。高级解决方案仍然是受欢迎的,我不会把这个答案标记为解决方案,因为这个问题还没有得到全面解决。