ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

AutoHotkey 实现同个热键在各境界下执行对应功能的思路

2021-10-23 21:02:35  阅读:220  来源: 互联网

标签:控件 界面 AutoHotkey 程序 热键 同个 class 定义


天下武功,唯快不破。除了全自动,最快的就是一键完成。

AutoHotkey 对热键的控制非常强大。可以通过窗口的以下信息综合起来作为条件判断

  • class(用得最多)
  • 标题(一般作为 class 条件的补充)
  • 程序名(主要用来分类)
  • 控件信息(当前激活控件,当前鼠标所在控件,控件状态,控件值)

正因为有如此强大的判断条件,就可以轻松设计一个(或多个)通用热键(我用 F4)来针对各种界面的默认功能实现一键完成。

首先根据程序名分类

为大部分【主流程序】建个单独的ahk文件(比如微信用 WeChat.ahk)

并用#HotIf WinActive("ahk_exe WeChat.exe")来定义动态热键条件

这样后续定义的热键只会在微信生效(其他应用的热键也用此法定义)

以下用 微信 举例

  • 在程序里,可能需要根据不同的子窗口做相应的事
    • 微信的主界面 class = WeChatMainWndForPC
    • 转发界面 class = SelectContactWnd 转发
    • 设置界面 class = SettingWnd
    • 查看聊天记录界面 class = FileManagerWnd
    • 另存为界面 class = #32770(大部分的保存对话框都是这个类名,由于有通用性,放到后面通用功能内)
  • 如果不匹配,则调用下方定义的【通用函数

非主流程序

其他通用功能,就不需要单独建文件了,直接由自定义的【通用函数】(如hyf_autoF4())判断执行

步骤
  • 程序名(由于程序名可能会带 x64 或【空格】等内容,所以需要做下处理)
    exeName := StrReplace(RegExReplace(WinGetProcessName("A"), "i)_?(x?(64))?(\.\w+)?$"), " ", "_")

    定义各【程序名】的 map 列表,如果包含 exeName 则执行相应的函数(以下都是用此思想判断)

  • class(获取方法cls := WinGetClass("A"))
    上面提及的通用#32770保存对话框,我的主需求就是一键保存到桌面,就是在这里定义功能
  • 标题(获取方法tt := WinGetTitle("A")) 其他原理同上
  • 控件等其他方式
  • 确实没定义功能,则模拟发送F4热键原生功能send("{F4}")

标签:控件,界面,AutoHotkey,程序,热键,同个,class,定义
来源: https://www.cnblogs.com/hyaray/p/15449479.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有