土豆男孩 2021-11-15 16:02 采纳率: 33.3%
浏览 22
已结题

WPF如何在全局热键下实现按键按下松开的触发效果

我使用RegisterHotKey的方法,实现了全局热键的功能,具体借鉴方法为:https://blog.csdn.net/weixin_44879611/article/details/103275347

        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool RegisterHotKey(IntPtr hWnd, int id, HotkeyModifiers fsModifiers, uint vk);

        [DllImport("user32.dll")]
        static extern bool UnregisterHotKey(IntPtr hWnd, int id);

现在有个需求,就是需要按键松开时,恢复到之前的状态。


HotKeys.Regist(Application.Current.MainWindow, HotkeyModifiers.MOD_ALT, Key.D1, () =>
            {
                ServiceLocator.Current.GetInstance<MainMaskModel>().RunService.LetMaskUnvisible();
            });

我的操作逻辑时,当键盘上按下并保持按下ALT+1状态时,遮罩层隐藏(执行LetMaskUnvisible函数),当松开两者中任何一个按键时,遮罩层又会出现。
这个该用RegisterHotKey方法怎么解决呢,还是用其他方法更方便一些?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 11月23日
    • 创建了问题 11月15日

    悬赏问题

    • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
    • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
    • ¥16 mybatis的代理对象无法通过@Autowired装填
    • ¥15 可见光定位matlab仿真
    • ¥15 arduino 四自由度机械臂
    • ¥15 wordpress 产品图片 GIF 没法显示
    • ¥15 求三国群英传pl国战时间的修改方法
    • ¥15 matlab代码代写,需写出详细代码,代价私
    • ¥15 ROS系统搭建请教(跨境电商用途)
    • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。