【WinForm】自己写一个截图软件1 --注册全局热键

写在前面:软件创意是模仿,部分代码参考了网上的内容。
【感谢】https://blog.csdn.net/cuoban/article/details/50750609
【感谢】Setuna

注册全局快捷键

 /// <summary>
    /// 自定义热键
    /// </summary>
    public class AppHotKey
    {
        [DllImport("kernel32.Dll")]
        public static extern uint GetLastError();

        //如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError
        [DllImport("User32.Dll", SetLastError = true)]
        public static extern bool RegisterHotKey (
            IntPtr hWnd,    //窗口句柄
            int id, //热键id         
            KeyModifiers keyModifiers, //定义是否使用Alt/Ctrl/Shift/WindowsKey
            Keys key    //热键内容
            );

        [DllImport("User32.Dll",SetLastError = true)]
        public static extern bool UnregisterHotKey(
            IntPtr hWnd,    //窗口句柄
            int id      //热键id
            );

        public static void RegKey(IntPtr hWnd, int id, KeyModifiers keyModifiers, Keys key)
        {
            try
            {
                if (!RegisterHotKey(hWnd, id, keyModifiers, key))
                {
                    MessageBox.Show(string.Format("热键 {0}+{1} {2}!", keyModifiers, key,
                        Marshal.GetLastWin32Error() == 1409 ? "被占用" : "注册失败"));
                }
            }
            catch{ }
        }

        public static void UnRegKey(IntPtr hWnd,int id)
        {
            UnregisterHotKey(hWnd, id);
        }
    }

    [Flags]
    public enum KeyModifiers
    {
        None = 0,
        Alt = 1,
        Ctrl = 2,
        Shift = 4,
        WindowsKey = 8
    }



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值