全局热键管理工具

image

在我的项目中需要一个热键管理工具,于是搜索CodePlex,在上面找了一个工具:SystemHotKeys,这个工具有以下热键管理功能:

  1. 1 注册全局热键
  2. 2 热键命名,可以使用名称将热键与命令关键
  3. 3 "双击"方式的快捷键 ,比如接连按下两次Ctrl+C

 

但是这个工具还不能满足我的需求,于是在它的基础上进行了修改,修改内容如下:

1 增加复合热键的支持,如Ctrl+E,Ctrl+L或Ctrl+E,L
2 去掉"双击"快捷键
3 增加快捷键状态提示事件,如果"按下Ctrl+E,等待按下第二个键"
4 增加快捷键转储,恢复功能,在应用程窗口变为非活动窗口时可以转储注册的快捷,在窗口恢复为活动窗口时恢复注册的快捷键。(详见示例)
5 新的示例程序

项目环境要求:vs2010 .Net4.0

源码如下,希望能对您有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过添加自定义功能来帮助制造云的用户。 Cumulus Consulting LLC很荣幸地为Plex Manufacturing Cloud的用户提供基于自定义的插件,以解决Plex社区内的个人和特定需求。该插件使Cumulus Developers可以增强Plex Manufacturing Cloud中的现有屏幕,并提供超出客户习惯的标准Vision Plex屏幕的其他功能。我们当前的版本包括以下功能:常规:•Plex内置的Cumulus App Store•用户定义的设置和热键○与Google帐户同步设置的选项○通过Microsoft组策略进行企业配置•测试环境沙箱导航:•到生产的快速链接和测试环境•选项卡式浏览○没有弹出窗口登录○在“新选项卡”中打开/在“新窗口中打开”会产生新会话○在选项卡中启动新会话•重新启用右键单击上下文菜单•菜单搜索VisionPlex屏幕和报告全局热键功能:•启动新的会话•在屏幕上下雪•刷新页面“到处导出”:•从Plex中的任何网格(工作中为Excel和.xml)下载到.txt或.csv•选项:○排除,重命名,并重新排列列○用户定义的字段定界符和行尾○包含/排除标题行○使用填充和对齐方式使列固定宽度○转义字段(用引号引起来)通用上载:•高度可配置的系统allo机翼,用于客户资助的添加,更新或删除上载的开发记帐:•墨西哥客户的SAT 24集成控制面板•扫描零件条形码以切换工作中心设置•在看板机架和发货屏幕上显示零件图像•记录生产“冷却时间” -防止快速记录•热键功能:○记录生产○增加生产量○减少生产量•主控单元助手,以辅助控制面板上的主控单元○当主控单元装满时发出警告○防止混合主控单元○重新填充主控单元字段记录生产○打印选定的主单位,而不是最后使用的单位•改进的“包装到箱”功能•重新打印“最后一个容器”按钮的计划•增强了看板管理器和设置工作中心的要求•带有计时器的可视仪表板,用于满足工作中心源的要求装运•拆分的三维卡车控制应用程序计划的发行版本•与UPS集成以验证地址,比较费率和提交和跟踪装运•主单元构建验证和计划SQL开发环境:•防止意外关闭窗口•执行突出显示SQL•取消当前正在运行SQL•热键功能:○执行查询○保存存储过程○取消当前查询•查询输出面板○花式状态栏○行号○总行数○当前执行计时器•可折叠的导航窗格 支持语言:English (United States)
在 C# 窗体中实现全局热键可以使用 Windows API 函数来实现。以下是一个示例代码: ```csharp using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Windows.Forms; public partial class MainForm : Form { // 定义全局热键的 ID,可以为任意值,只要不重复即可 private const int HOTKEY_ID = 9000; // 定义 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); // 定义热键的组合键和热键对应的键码 private const uint MOD_ALT = 0x0001; private const uint VK_F1 = 0x70; public MainForm() { InitializeComponent(); // 注册全局热键 RegisterHotKey(this.Handle, HOTKEY_ID, MOD_ALT, VK_F1); } protected override void WndProc(ref Message m) { base.WndProc(ref m); // 如果收到全局热键的消息 if (m.Msg == 0x0312 && m.WParam.ToInt32() == HOTKEY_ID) { Debug.WriteLine("Hotkey pressed"); } } protected override void OnFormClosing(FormClosingEventArgs e) { base.OnFormClosing(e); // 注销全局热键 UnregisterHotKey(this.Handle, HOTKEY_ID); } } ``` 在上面的示例中,我们定义了一个 `MainForm` 窗体,并在构造函数中注册了一个全局热键热键的组合键为 Alt + F1,热键的 ID 为 9000。当用户按下热键时,我们会在控制台输出一条消息。 在窗体的 `WndProc` 方法中,我们判断收到的消息是否是全局热键的消息,如果是,就执行相应的操作。在窗体关闭时,我们需要注销全局热键,以释放资源。 需要注意的是,全局热键需要在 Windows 消息循环中进行注册和注销,因此必须在窗体中实现 `WndProc` 方法,并在其中处理相应的消息。同时,全局热键的组合键和热键对应的键码可以根据需求进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值