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);
}