没废话,直接上源码,交流请加群:92959435 [92 95 94 三五] 抛砖引玉,欢迎大家批评指点。
哦,对了,使用说明,先看看说明吧。
send:与ahk相同。
send2:与ahk相同。增加{sleep 延时毫秒}和{soundbeep 频率,时长}两种模拟效果
run:与ahk相同
控制窗口:
命令格式:控制窗口/要控制的窗口标题/控制类型/参数1/参数2
如果省略窗口标题,则以当前窗口标题为准
控制类型又分以下几种
1.显示: 操作方式:控制窗口/窗口标题/显示
命令说明:控制指定的窗口[窗口标题]显示
2.隐藏: 操作方式:控制窗口/窗口标题/隐藏
命令说明:控制指定的窗口[窗口标题]隐藏
3.关闭: 操作方式:控制窗口/窗口标题/关闭
命令说明:关闭指定的窗口[窗口标题]
4.透明度: 操作方式:控制窗口/窗口标题/透明度/透明值(0-255)
命令说明:将指定的窗口[窗口标题]设置透明(255为完全透明)
5.透明色: 操作方式:控制窗口/窗口标题/透明色/要让透明的颜色 透明值(0-255)
命令说明:将窗口[窗口标题]指定的颜色设置透明(255为完全透明)。透明后鼠标可穿透窗口操作后面的窗口或文件。
#singleinstance,force #InstallKeybdHook #InstallMouseHook SetWorkingDir,%A_ScriptDir% FileInstall,超级热键使用说明.txt,超级热键使用说明.txt FileInstall,超级热键.ini,超级热键.ini #Include %A_ScriptDir%\Toolbar.ahk Gui main:New, hWndhGui ;要使用图片作为其他控件的背景, 则应该在其他控件之前正常添加图片. 然而, 如果这些控件是可输入型且此图片控件含有g 标签, 那么在其他控件后创建图片控件并在其选项中包含 0x4000000(这是 WS_CLIPSIBLINGS). 使用此技巧还可以把一个图片设为 Tab 控件或 ListView 的的背景 ;Gui Add, Picture, x-8 y-8 w2400 h1920 0x4000000 , C:\Documents and Settings\Administrator\桌面\超级热键备份2017-9-22\21307.jpg Gui Add, Tab3, x0 y33 w600 h445 Choose2, 全局设置|热键设置|子命令集|其它工具|帮助关于 gui,tab,1 Gui Add, Text, x20 y88 w80 h23, 触发长按时间 Gui Add, Text, x20 yp+28 wp hp, 按键有效间隔 Gui Add, Text, x20 yp+28 wp hp, 个人单击时长 Gui Add, Text, x20 yp+28 wp hp, 鼠标划动误差 Gui Add, Text, x20 yp+28 wp hp, 至少移动距离 ;Gui Add, Text, x20 yp+28 wp hp , 斜向微调系数 ;Gui Add, Text, x20 yp+28 wp hp , 窗口匹配模式 Gui Add, Edit, x108 y83 w60 h21 VEdit_触发长按时间 G界面事件处理 Gui Add, Edit, xp yp+28 w60 hp VEdit_按键有效间隔 G界面事件处理 Gui Add, Edit, xp yp+28 w60 hp VEdit_个人单击时长 G界面事件处理 Gui Add, Edit, xp yp+28 w60 hp VEdit_鼠标划动误差 G界面事件处理 Gui Add, Edit, xp yp+28 w60 hp VEdit_至少移动距离 G界面事件处理 ;Gui Add, Edit, xp yp+28 w60 hp VEdit_斜向微调系数 G界面事件处理 ;Gui Add, Edit, xp yp+28 w60 hp VEdit_窗口匹配模式 G界面事件处理 Gui Add, Text, x200 y88 w80 h23 , 两次按键间隔 Gui Add, Text, xp yp+28 wp hp , 按键持续时间 Gui Add, Text, xp yp+28 wp hp , 鼠标点击延时 Gui Add, GroupBox, x5 y66 w460 h162, 左边是人的操作,右边是系统的操作 Gui Add, Edit, x288 y82 w60 h21 VEdit_两次按键间隔 G界面事件处理 Gui Add, Edit, xp yp+30 wp hp VEdit_按键持续时间 G界面事件处理 Gui Add, Edit, xp yp+30 wp hp VEdit_鼠标点击延时 G界面事件处理 Gui Add, Radio, x218 y165 w60 h23 VRadio_Event G界面事件处理, Event Gui Add, Radio, xp yp+30 wp hp Checked1 VRadio_Play G界面事件处理, Play Gui Add, GroupBox, x5 y242 w460 h128, 分组2 gui,tab,2 Gui Add, Text, x20 y88 w60 h23, 热键前缀键 Gui Add, Text, xp yp+30 w60 h23, 热键动作键 Gui Add, Text, xp yp+30 w60 h23, 适用范围选择 Gui Add, ListView, R50 xp yp+36 w320 h268 Vcmdlist AltSubmit Grid -Multi -ReadOnly +Checked +LV0x40 +LV0x400+LV0x800 +LV0x80, 命令|参数1|参数2|参数3|参数4 LV_ModifyCol(1,80) LV_ModifyCol(2,60) LV_ModifyCol(3,60) LV_ModifyCol(4,60) LV_Add("+Checked","窗口控制","窗口标题","显示") LV_Add("+Checked","窗口控制","窗口标题","隐藏") LV_Add("+Checked","窗口控制","窗口标题","透明度","200") ;Gui Add, ComboBox, x104 y88 w88, ComboBox Gui, Add, Hotkey, x104 y88 w88 h23 Limit64 vHKname Gui Add, ComboBox, xp yp+30 wp Choose4, 鼠/键-单击|鼠/键-双击|鼠标-左划|鼠标-右划|鼠标-上划|鼠标-下划|下右-划动|下左-划动|上右-划动|上左-划动|热键-长按 Gui Add, ComboBox, xp yp+30 w168 Choose1 Sort, 请选择热键适用窗口 Gui Add, Button, x208 y88 w60 h23 v增加热键 G界面事件处理, 增加热键 Gui Add, Button, xp yp+30 w60 h23 v删除热键 G界面事件处理, 删除热键 Gui Add, Button, x280 y88 w60 h23 v打开帮助 G界面事件处理, 打开帮助 Gui Add, Button, xp yp+30 w60 h23 v编辑配置 G界面事件处理, 编辑配置 Gui Add, Button, xp yp+30 w60 h23 v保存配置 G界面事件处理, 保存配置 Gui Add, ListBox, x360 y88 w222 h368 Vhotkeylist, 己定义热键列表 gui,tab,3 ;子命令集 Gui Add, Button, xp yp+30 w60 h23, 等待扩展 gui,tab,4 ;其它工具 Gui Add, Button, xp yp+30 w60 h23, 等待扩展 gui,tab,5 ;帮助关于 Gui Add, Button, xp yp+30 w60 h23, 等待扩展 ;创建状态栏 Gui Add, StatusBar, x0 y359 w481 h23, Status Bar ;创建菜单 Menu, FileMenu, Add, &Open `tCtrl+O, 菜单事件处理 ; 关于 Ctrl+O 请参阅后面的备注. Menu, FileMenu, Add, E&xit, 菜单事件处理 Menu, HelpMenu, Add, &About, 菜单事件处理 Menu, MyMenuBar, Add, 文件(&File), :FileMenu ; 附加上面的两个子菜单. Menu, MyMenuBar, Add, 帮助(&Help), :HelpMenu Gui, Menu, MyMenuBar ;托盘图标设置 menu,tray,add menu,tray,add,隐藏窗口,托盘事件处理 menu,tray,add,热键切换---Win+ESC,托盘事件处理 menu,tray,add,帮助关于,托盘事件处理 menu,tray,add,退出脚本---ESC,托盘事件处理 FileRead,说明,超级热键使用说明.txt ;MsgBox,0,使用说明,%说明% ;★★★★★★★★★★★★★★★★★★★★★★工具栏---工具栏---工具栏---工具栏★★★★★★★★★★★★★★★★★★★★★★ Gui,main:Show, w800 h500, 超级热键 ;创建工具栏---需要先显示句柄为hgui的窗口,然后才能添加,不然不显示 。 GuiAddToolBar(hGui) ;工具栏添加按钮 GuiAddToolbar(hWnd) { ;IL_Add(ImageList, "gjl.ico") ;指定文件名为非图标文件时, 最后两个参数为透明色;最后一个参数非0时为缩放。为零时裁剪至合适 ImageList := IL_Create(8) IL_Add(ImageList, "shell32.dll", 22) IL_Add(ImageList, "shell32.dll", 28) IL_Add(ImageList, "shell32.dll", 42) IL_Add(ImageList, "shell32.dll", 48) IL_Add(ImageList, "shell32.dll", 105) IL_Add(ImageList, "shell32.dll", 44) IL_Add(ImageList, "shell32.dll", 9) IL_Add(ImageList, "shell32.dll", 24) hToolbar := Toolbar_Add(hWnd, "OnToolbar", "flat list tooltips", ImageList) Buttons = (LTrim 控制面板 关闭电脑 加密 解锁 收藏 C盘 绿树 帮助关于 ) Toolbar_Insert(hToolbar, Buttons) } ;工具栏事件 OnToolbar(hWnd, Event, Text, Pos, Id) { If (Event = "Hot") { Return } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 脚 本 全 局 设 置---------这里是相关参数 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; /*--------这里是相关内置变量的注释 A_MouseDelay A_MouseDelayPlay A_TimeIdle 从系统最后一次接收到键盘, 鼠标或其他输入后所经过的毫秒数. 这可以用来判断用户是否离开. 用户的物理输入和由 任何 程序或脚本生成的模拟输入 (例如 Send 或 MouseMove 命令) 会让此变量重置为零. 由于此变量的值趋向于以 10 的增量增加, 所以不应该判断它是否等于另一个值. 相反, 应该检查此变量是否大于或小于另一个值 A_TimeIdlePhysical 与上面类似, 但在安装了相应的钩子 (键盘 或 鼠标) 后会忽略模拟的键击和/或鼠标点击; 即此变量仅反应物理事件. (这样避免了由于模拟键击和鼠标点击而误以为用户存在.) 如果两种钩子都没有安装, 则此变量等同于 A_TimeIdle. 如果仅安装了一种钩子, 那么仅此类型的物理输入才会对 A_TimeIdlePhysical 起作用 (另一种/未安装钩子的输入, 包括物理的和模拟的, 都会被忽略). ;-------------------------- SetKeyDelay [, Delay, PressDuration, Play] 参数1:指的是两次按键的间隔.模式默认 Delay 为 10,留空此参数来保持当前的 Delay ===========[A_KeyDelay ] 参数2:指按住按键的持续时间 ===========[A_KeyDuration] 参数3:应用于 SendPlay 模式 而不是SendEvent 默认延时总是为 -1/-1 ===========[A_KeyDelayPlay,A_KeyDurationPlay] SetMouseDelay, Delay [, Play]------------------------------设置每次鼠标移动或点击后自动的延时 参数1:毫秒表示的时间, 可以为 表达式. 使用 -1 表示无延时,而 0 表示最小延时(然而如果使用了 Play 参数,则 0 和 -1 都表示无延时).如果未设置, 则对于传统的 SendEvent 模式默认延时为 10 而对于 SendPlay 模式 为 -1. 参数2:单词 Play 应用于 SendPlay 模式 而不是SendEvent 模式. 如果脚本没有使用此参数, 则 SendPlay 模式的延时总是为 -1 #HotkeyInterval Milliseconds: 默认为 2000 与 #MaxHotkeysPerInterval 一起指定热键激活的速率,超过此速率会显示警告对话框. #MaxHotkeysPerInterval:设置的时间里,不触发警告对话框情况下可以按下的热键最大数目,默认为为 70 #HotkeyModifierTimeout Milliseconds间隔长度,单位为毫秒.此值设为 -1 时, 它永远不会超时 (在 Send 后修饰键总是被推回到按下的状态), 设为 0 时则总是超时 (修饰键总是不会被推回到按下的状态).默认为 50 在下列情况中 不需要 使用此指令: •热键通过 SendInput 或 SendPlay 模式发送键击. 这是由于这些模式会延迟用户的物理键击到 Send 完成后. •脚本安装了键盘钩子(您可以通过主窗口中的"View->Key history"菜单项或KeyHistory命令判断您的脚本是否使用了钩子). 这是由于钩子可以记录用户实际按住的修饰键 (ALT/CTRL/WIN/SHIFT), 因而不需要使用超时. */ /*-------设置坐标模式--------命令说明 CoordMode, ToolTip|Pixel|Mouse|Caret|Menu [, Screen|Window|Client]参数 Param1 ToolTip: 作用于 ToolTip. Pixel: 作用于 PixelGetColor, PixelSearch 和 ImageSearch. Mouse: 作用于 MouseGetPos, Click 以及 MouseMove/Click/Drag. Caret: 作用于内置变量 A_CaretX 和 A_CaretY. Menu:作用于为 Menu Show 命令指定坐标的时候. Param2 默认为 Screen. Screen: 坐标相对于桌面 (整个屏幕). Relative: 坐标相对于活动窗口. Window [v1.1.05+]: 与 Relative 效果相同, 但由于含义清晰, 因此建议使用. Client [v1.1.05+]:坐标相对于活动窗口的工作区,其中不包括标题栏,菜单栏(如果它含有标准菜单栏)和边框.Client 坐标模式较少依赖于操作系统版本和主题 {WheelDown}, {WheelUp}, {WheelLeft}, {WheelRight} */ ;------------全局变量设置--------------------- 触发二次按键间隔:=A_KeyDelay IniRead,触发长按时间,超级热键.ini,全局配置,触发长按时间,300 IniRead,按键有效间隔,超级热键.ini,全局配置,按键有效间隔,180 IniRead,个人单击时长,超级热键.ini,全局配置,个人单击时长,60 IniRead,鼠标划动误差,超级热键.ini,全局配置,鼠标划动误差,60 IniRead,至少移动距离,超级热键.ini,全局配置,至少移动距离,150 IniRead,斜向微调系数,超级热键.ini,全局配置,斜向微调系数,0.8 IniRead,窗口匹配模式,超级热键.ini,全局配置,窗口匹配模式,2 ;---------------------------------------------------------- IniRead,两次按键间隔,超级热键.ini,全局配置,两次按键间隔,10 IniRead,按键持续时间,超级热键.ini,全局配置,按键持续时间,10 IniRead,鼠标点击延时,超级热键.ini,全局配置,鼠标点击延时,2 SetTitleMatchMode,%窗口匹配模式% ;设置窗口匹配方式 SetKeyDelay, 10,2,1 ;建议设置为play模式,[两次按键间隔,按键按下时长] SetMouseDelay,5,play ;建议设置为play模式 CoordMode,Mouse,window ;设置鼠标的坐标模式为window模式 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 程 序 开 始 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 程 序 开 始 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 更新界面() 命令选择列表更新() 读取热键列表() SetTimer,提示清空,1000 ;从ini文件读取待注册热键信息 IniRead,热键,超级热键.ini 按键:=[] i:=0 loop,parse,热键,`n { if (A_LoopField!="帮助说明" && A_LoopField!="全局配置"){ i++ 按键[i]:=A_LoopField } } ;循环注册热键 loop,%i% { 键:=按键[A_Index] 范围:=[] ;必须清空,不然上次有限制,再次没限制时会继续上次的限制。因为下面的读取不到不会清空变量。 IniRead,限制组,超级热键.ini,%键%,限制,"" 范围:=StrSplit(限制组,"/") 次数:=(范围.MaxIndex()="" ? 1 : 范围.MaxIndex()) ;没有限制条件时,全局起作用。所以要循环一次 loop, %次数% { if (范围[A_Index]!="") { Hotkey,ifwinActive, % 范围[A_Index] } Hotkey,%键%,超级热键 hotkey,%键% up,超级热键 Hotkey,if } } ;核心函数。热键关联函数。用来判断热键动作。 超级热键(){ global 上次按键时长:=0 ;如果时间较长,很难触发单击任务,由脚本自己控制 当前按键次数:=0 ;用于记录热键点击的次数=======>点击间隔超时将被清零 热键名:=A_ThisHotkey ;热键名保存,防止中途中断内置变量值改变 if (StrLen(热键名)>3 ){ 热键:=substr(热键名,-2)=" up" ? substr(热键名,1,StrLen(热键名)-3) : 热键名 } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 按 键 按 下 ;;;;;;;;;;;;;;;;;;;;;;; 按 键 按 下 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; if (A_ThisHotkey=热键){ 持续按键时间:=0 ;用户记录用户按下热键持续的时间,按键弹起进清空 SetTimer,按键间隔计时,off SetTimer,按键按下计时,%触发二次按键间隔% ;周期为负数, 定时器仅执行一次 按键次数++ MouseGetPos,Md_x,Md_y 按下:=1 ;--------------------------------- loop { if (持续按键时间>=触发长按时间){ ;(继续按键时间<个人单击时长){ ToolTip,触发长按命令`,当前长按时间[%持续按键时间%] SoundBeep,8000,300 调用任务(热键名,"长按") 持续按键时间:=0 ;如果要触发长按后像正常长按样不停发送。请取消此行 按键次数:=0 return } Sleep,0 ;ToolTip,% "当前按键时长" 持续按键时间 ;按键持续期间,但不足以达到长按时间要求时的处理 and } until (按下!=1) ;!GetKeyState("`" 热键 `"","P") ;这里的热键变量如果内容包含符号,就容易出错啦 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 按 键 弹 起 ;;;;;;;;;;;;;;;;;;;;;;; 按 键 弹 起 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; }else if (A_ThisHotkey=热键 " up"){ ;MsgBox,这里是弹起命令区`,执行完毕请继续检查是否执行其它热键任务 按下:=0 ;假 上次按键时长:=持续按键时间 持续按键时间:=0 ;用户记录用户按下热键持续的时间,按键弹起进清空 SetTimer,按键按下计时,off SetTimer,按键间隔计时,-%按键有效间隔% ;前置的负号表示只运行一次 MouseGetPos,Mu_x,Mu_y 斜向操作距离:=至少移动距离*斜向微调系数 ;斜向操作移动距离稍小于正常 X差:=Mu_x-Md_x y差:=Mu_y-Md_y if (上次按键时长>=个人单击时长) && (上次按键时长<触发长按时间) && (abs(X差)>至少移动距离 || abs(y差)>至少移动距离 ){ if (X差<-至少移动距离&& Abs(y差)<鼠标划动误差) { ;鼠标键向左移动,上下偏差不得超过60像素 热键动作:="左划" }else if (X差>至少移动距离 && Abs(y差)<鼠标划动误差) { ;鼠标键向右移动,上下偏差不得超过60像素 热键动作:="右划" }else if (abs(X差)<鼠标划动误差 && y差<-至少移动距离) { ;鼠标键向上移动,左右偏差不得超过60像素 热键动作:="上划" }else if (abs(X差)<鼠标划动误差 && y差>至少移动距离) { ;鼠标键向下移动,左右偏差不得超过60像素 热键动作:="下划" }else if (X差>斜向操作距离 && y差>斜向操作距离){ ;鼠标键向下移动,向右移动一定像素=====斜向操作移动距离稍小于正常 热键动作:="下右" }else if (X差<-斜向操作距离 && y差>斜向操作距离) { ;鼠标键向下移动,向左移动一定像素 热键动作:="下左" }else if (X差>斜向操作距离 && y差<-斜向操作距离) { ;鼠标键向上移动,向右移动一定像素 热键动作:="上右" }else if (X差<-斜向操作距离 && y差<-斜向操作距离) { ;鼠标键向上移动,向左移动一定像素 热键动作:="上左" }else{ SoundBeep,2000,500 热键动作:="鼠标动作不标准`,X轴相差:" abs(Mu_x-Md_x) "`n`tY轴相差:" Abs(Mu_y-Md_y) } ;msgbox,当前行===>%A_linefile%:%A_LineNumber% X差 %X差% y差 %y差% 热键动作 %热键动作% 调用任务(热键名,热键动作) } } ;热键部分结束 ;--------------下面是标签:------按键按下计时:---------------- 按键按下计时: 持续按键时间+=%触发二次按键间隔% return ;--------------下面是标签:-------按键间隔计时--------------- 按键间隔计时: if (abs(mu_x-md_x)<10 and abs(mu_y-md_y)<10){ if (按键次数>0 and 上次按键时长<按键有效间隔) { 调用任务(热键名,按键次数 "击") } } 按键次数:=0 return } ;热键函数结束 ;/*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 调用任务(热键名,动作类型){ ;str:="这是由" 热键名 "触发的[" 动作类型 "]" if (StrLen(热键名)>3 ){ 热键:=substr(热键名,-2)=" up" ? substr(热键名,1,StrLen(热键名)-3) : 热键名 } 动作类型:=(动作类型="1击" ? "单击" : 动作类型) 动作类型:=(动作类型="2击" ? "双击" : 动作类型 ) ;根据当前窗口执行不同组的动作 iniRead,限制,超级热键.ini,%热键%,限制 限制组:=StrSplit(限制,"/") 限制数量:=限制组.MaxIndex() loop,%限制数量% { IfWinActive, % 限制组[A_Index] { 动作类型:=(A_Index=1 ? 动作类型: 动作类型 A_Index) break } } ;分析命令并执行相应动作 IniRead,执行命令,超级热键.ini,%热键%,%动作类型% 命令组:=StrSplit(执行命令,"/") if(命令组[1]=""){ ;ahk帮助文件中strsplit部分说命令组[0]包括了分解的数量.这里并没有储存该值 .导致调试了好久才找到问题 热键名 := StrReplace(热键名, "~") 热键名 := StrReplace(热键名, "$") send,{%热键名%} }else if (命令组[1]="run" or 命令组[1]="运行程序"){ run,% 命令组[2] ,% 命令组[3] }else if(命令组[1]="send" || 命令组[1]="发送按键"){ ;这里的逻辑或是符号直竖。不是?号上面的那个双斜线。 send,% 命令组[2] }else if(命令组[1]="send2" || 命令组[1]="延时发送"|| 命令组[1]="超级发送"){ 延时发送(命令组[2] ) }else if(命令组[1]="控制窗口" || 命令组[1]="窗口控制"|| 命令组[1]="winset"){ 控制窗口(命令组[2],命令组[3],命令组[4]) }else{ ;===如果该值为空,执行默认动作 send,{%热键名%} } ;命令分析结束 } ;函数结束 提示清空: ToolTip return mainGuiClose: ;gui main:hide ExitApp return #Include,超级热键函数.ahk #esc:: Suspend,Toggle return esc:: ExitApp
一、现有功能:
1、可以随意增加热键,单击,双击,多击,长按,鼠标划动都不是问题。
2、可以扩展小工具,增加小工具库。由热键调用。《小工具待增加》
3、可以设置热键使用范围。限定哪些窗口可以使用。
4、可以由设置调用程序,文件夹,网页。一键式打开。
5、send己扩展至可延时,发送声音。命令:send2
6、ESC退出脚本。Win+ESC为脚本热键开关
二、使用说明
建立新热键步骤:
1、打开ini,增加热键名的字段(以[]括起来的部分即为要创建的热键)
ini字段为热键名。不含” up”。因为创建热键时,自动创建包括弹起的热键处理
2、各字段下面的tip初步定为提示。
3、字段下面的限制就是热键限制在指定的窗口才可以使用。以”|”分隔不同的窗口项。每项对应不同的
操作。第一个”|”和第二个”|”之间的为第二组限定窗口。对应的热键操作项后面是2。第三组对应的是
3.所有的像单击3,双击3,左划3等以3为结尾的只有在第三组窗口为当前窗口时才可以使用。
4、如果限制这里是空的没有填写,则默认为所有窗口均可使用。
5、除了单击,双击,可以增加3击,4击,5击……N击为键名的热键。对应点击次数及任务。
6 、增加完毕热键,关闭ini文件。重新启用下脚本。热键就可以使用啦。
三、其它说明
1、目前在xp 5.1.26测试良好。ahk版本1.1.2.6.01
2、目前主要使用ini文件增删快捷键,有兴趣可以帮忙做一个界面出来。主要用来读写ini配置
3、己编译版本使用时因为调用键盘记录。所以请将脚本设为白名单再运行或者关闭安全软件。否则软件不起作用。
4、ESC退出脚本。Win+ESC为脚本热键开关
5、纯属个人好爱制作。欢迎大神指点。如有意见。可联系QQ:752481409反馈
6、如有共同爱好者,可申请共同完善。欢迎合作。点击链接加入群聊[懒人脚本]:https://jq.qq.com/?_wv=1027&k=5ENcmjX
最后,附源码及函数,ini文件下载包
加油
启动不了,缺少了Toolbar.ahk文件
ahk库文件里面有这个啊。如果没有,你去百度找一个
➡ ➡ ➡ 百度好几圈了,怎么冷门的文件根本没有的
检索