当前位置: 首页 > news >正文

C# winfrom 修改系统快捷键 提高效率 把难按的快捷 换成容易按的快捷键 减轻工作难度

提高效率 把难按的快捷 换成容易按的快捷键 减轻工作难度 

修改系统快捷键 

把复制 换成 F1

粘贴  F2 

系统的win Shift +S 截图 换成 F4   其他的截图软软件 收费 一般大公司不让用

保存F5

F1+1 取消 关闭快捷键

      // 导入 Windows API 函数
[DllImport("user32.dll")]
private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);
[DllImport("user32.dll")]
private static extern bool UnregisterHotKey(IntPtr hWnd, int id);
[DllImport("user32.dll")]
private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);

// 定义快捷键的标识符
private const int HOTKEY_F1_ID = 0; // 新增 F1 的标识符
private const int HOTKEY_F5_ID = 1; // 修改为 F5 的标识符
private const int HOTKEY_F2_ID = 2;
private const int HOTKEY_F3_ID = 3;
private const int HOTKEY_F4_ID = 4;

// 定义 F1、F2、F3 和 F4 键的虚拟键码
private const uint VK_F1 = 0x70; // 新增 F1 的虚拟键码
 private const uint VK_1 = 0x31; // 1 键的虚拟键码
private const uint VK_F5 = 0x74; // 修改为 F5 的虚拟键码
private const uint VK_F2 = 0x71;
private const uint VK_F3 = 0x72;
private const uint VK_F4 = 0x73;

// 定义虚拟键码
private const byte VK_LWIN = 0x5B; // 左 Win 键的虚拟键码
private const byte VK_SHIFT = 0x10; // Shift 键的虚拟键码
private const byte VK_S = 0x53; // S 键的虚拟键码
private const byte VK_CONTROL = 0x11; // Ctrl 键的虚拟键码
private const byte VK_C = 0x43; // C 键的虚拟键码
private const byte VK_V = 0x56; // V 键的虚拟键码

// 定义按键标志
private const uint KEYEVENTF_KEYDOWN = 0x0000;
private const uint KEYEVENTF_KEYUP = 0x0002;

// 定义一个标志来跟踪快捷键的状态
private bool hotkeysEnabled = true;

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    // 注册全局快捷键 F1
    RegisterHotKey(this.Handle, HOTKEY_F1_ID, 0,VK_F1 | VK_F1);
    // 注册其他全局快捷键
    RegisterHotkeys();
}

protected override void OnClosed(EventArgs e)
{
    base.OnClosed(e);
    // 注销全局快捷键 F1
    UnregisterHotKey(this.Handle, HOTKEY_F1_ID);
    // 注销其他全局快捷键
    UnregisterHotkeys();
}

private void RegisterHotkeys()
{
    if (hotkeysEnabled)
    {
        RegisterHotKey(this.Handle, HOTKEY_F5_ID, 0, VK_F5);
        RegisterHotKey(this.Handle, HOTKEY_F2_ID, 0, VK_F2);
        RegisterHotKey(this.Handle, HOTKEY_F3_ID, 0, VK_F3);
        RegisterHotKey(this.Handle, HOTKEY_F4_ID, 0, VK_F4);
    }
}

private void UnregisterHotkeys()
{
    UnregisterHotKey(this.Handle, HOTKEY_F5_ID);
    UnregisterHotKey(this.Handle, HOTKEY_F2_ID);
    UnregisterHotKey(this.Handle, HOTKEY_F3_ID);
    UnregisterHotKey(this.Handle, HOTKEY_F4_ID);
}

protected override void WndProc(ref Message m)
{
    const int WM_HOTKEY = 0x0312;
    if (m.Msg == WM_HOTKEY)
    {
        switch (m.WParam.ToInt32())
        {
            case HOTKEY_F1_ID:
                // 切换快捷键的状态
                hotkeysEnabled = !hotkeysEnabled;
                if (hotkeysEnabled)
                {
                    RegisterHotkeys();
                }
                else
                {
                    UnregisterHotkeys();
                }
                break;
            case HOTKEY_F5_ID:
                // 模拟按下 Ctrl + S 组合键,实现保存功能
                keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYDOWN, 0);
                keybd_event(VK_S, 0, KEYEVENTF_KEYDOWN, 0);
                keybd_event(VK_S, 0, KEYEVENTF_KEYUP, 0);
                keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
                break;
            case HOTKEY_F2_ID:
                // 模拟按下 Ctrl + C 组合键,实现复制功能
                keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYDOWN, 0);
                keybd_event(VK_C, 0, KEYEVENTF_KEYDOWN, 0);
                keybd_event(VK_C, 0, KEYEVENTF_KEYUP, 0);
                keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
                break;
            case HOTKEY_F3_ID:
                // 模拟按下 Ctrl + V 组合键,实现粘贴功能
                keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYDOWN, 0);
                keybd_event(VK_V, 0, KEYEVENTF_KEYDOWN, 0);
                keybd_event(VK_V, 0, KEYEVENTF_KEYUP, 0);
                keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
                break;
            case HOTKEY_F4_ID:
                // 模拟按下 Win + Shift 后按 S 组合键,实现截图功能
                keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYDOWN, 0);
                keybd_event(VK_LWIN, 0, KEYEVENTF_KEYDOWN, 0);
                Thread.Sleep(50);
                keybd_event(VK_S, 0, KEYEVENTF_KEYDOWN, 0);
                keybd_event(VK_S, 0, KEYEVENTF_KEYUP, 0);
                keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
                keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
                break;
        }
    }
    base.WndProc(ref m);
}  

相关文章:

  • 【初探数据结构】时间复杂度和空间复杂度
  • 3. Spring Cloud LoadBalancer 入门与使用
  • 快速上手 Unstructured:安装、Docker部署及PDF文档解析示例
  • vue3响应式数据原理
  • 面向机器人操作的协同、泛化和高效的双-系统
  • GoFly框架中集成Bolt 和badfer两个Go语言嵌入式键值数据库
  • uniapp在app下使用mqtt协议!!!支持vue3
  • DeepSeek技术:数字化时代的商业规则重塑者
  • 19、《Springboot+MongoDB整合:玩转文档型数据库》
  • llama.cpp 一键运行本地大模型 - Windows
  • esp工程报错:something went wrong when trying to build the project esp-idf 一种解决办法
  • [AI相关]问问DeepSeek如何基于Python,moviePy实现视频字幕功能
  • 【量化策略】动量反转策略
  • Docker:Docker从入门到精通(一)- Docker简介
  • 如何实现修改jvm中类的属性开源项目
  • react使用react-quill 富文本插件、加入handlers富文本不显示解决办法
  • vLLM专题(十一)-工具调用(Tool Calling)
  • 详解传输层协议TCP/UDP
  • 力扣hot100——岛屿数量 岛屿问题经典dfs总结
  • 安全面试5
  • 昔日千亿房企祥生集团约2.03亿元债权被拍卖,起拍价8000万元
  • 德州国资欲退出三东筑工,后者大股东系当地房企东海集团
  • 江苏省委组织部副部长高颜已任南京市委常委、组织部部长
  • 最高人民法院、中国证监会联合发布《关于严格公正执法司法 服务保障资本市场高质量发展的指导意见》
  • 党建评:对违规宴饮等问题要坚决露头就打
  • 昆明警方重拳打击经济领域违法犯罪:去年抓获905名嫌犯