AutoHotKey-study
目录
- 使用编辑器
- 脚本注意
- 函数解释
- 信息调试方法
- 键盘获取方法
- 脚本练习
最近发现常用键盘的上下左右箭头去操作输入输出问题感觉很不是滋味,不像Linux那样,有vim的使用,就想着有没有什么方法更快捷,更方便的去使用电脑键盘,稍微搜索了一番,发现了这个强大的脚本工具 autohotkey
ahk帮助文档
使用编辑器
adventure
:
是autoahk编辑器的升级
快捷键
:
注释:ctrl + q
复制一行:ctrl + ⬇
#SingleInstance
:
确定脚本已在运行时是否允许再次运行.
~
添加这个符号后,激发热键时, 不会屏蔽(被操作系统隐藏) 热键中按键原有的功能。
SetTitleMatchMode
:定义wintitle的的模式
1: 默认行为. 窗口标题必须以指定的 WinTitle 开头才能匹配.
2: 窗口标题的任意位置包含 WinTitle 才能匹配.
3: 窗口标题必须和 WinTitle 完全一致才能匹配.
脚本注意
-
跳过对话框, 自动替换旧实例.
#SingleInstance force #NoEnv ;启用环境变量
-
热字串:使用空白时还会出现
O,(omit)表示忽略终止符,即不需要使用空白终止符;
R,原样输出;
C,区分大小写;
b0,不会删除原字符:*b0:<font>::
</font>{left 8}{Space}color{space}={space}`“`”{Right}
#<font color = ""></font>
-
Send
:- 只有一行代码时,v1和v2都可以简写
- 在v2使用{}包含多行代码,在v1版本只需用return返回即可
- 在v2中的send需用双引号包裹,为字符串,在v1中不需要双引号包裹
当使用热键输出文本时,会遇到如下情况
v1:按下a
键忽略a
的输出
v2:按下a
键在a
后循环输出
按下b
时,出现对应的内容
综上:使用a:: { send "baceh" } $b:: send "bcbbd"
$
可以将字符串原内容输出
-
禁用按键
>#:: return ;禁用 → win键 hotkey, a, 标签 hotkey, a, off return 标签:msgbox, a return
-
autohotkey有宏录制功能
-
脚本流程中,多次创建同一个热键,热键功能指向最后一次代码运行的指向标签,最终执行为3
hotkey, a, 标签1 hotkey, a, 标签2 hotkey, a, 标签3 return 标签1:msgbox, 1 return 标签2:msgbox, 2 return 标签3:msgbox, 3 return
-
热键嵌套
; 按下a/b/c任意一个键,输出l a:: | a:: b:: | b:: c::send, l | c:: ; %A_ThisHotkey% 保存了本次按下的热键| send l| return
-
添加钩子,防止热键冲突
; 加钩子前 直接输出lll 1::send, a a::msgbox, lll; 加钩子后 不会发生冲突 1::send, a $a::msgbox, lll
函数解释
-
Click [ Options ]
Options
:Coords, WhichButton, ClickCount, DownOrUp 和/或 Relative. 如果省略所有项目, 在鼠标光标的当前位置执行单次左键点击.Coords
:如果省略, 则使用鼠标的当前位置. 否则, 请指定在点击前, 鼠标光标要移动到的 X 和 Y 坐标. 例如, Click “100 200” 在特定位置点击鼠标左键. 坐标相对于活动窗口的客户端区域, 除非曾使用 CoordMode 更改了这个设置. 如果省略, 则使用光标的当前位置.CoordMode "ToolTip", "Screen"
WhichButton
:默认为 Left. 可指定 Left, Right, Middle(或只是这些名称的首字母); X1(第四个按钮) 或 X2(第五个按钮). 例如, Click “Right”Relative
:相对当前鼠标位置 -
inf := InputBox([Prompt, Title, Options, Default])
:输入对话框Prompt
:提示文本
Title
:标题
Options
:类型,eg:Password
inf.value(获取对象输入的文本)
inf.result(获取对象输入框的返回值),输入框是如何关闭的: OK, Cancel 或 Timeout. -
KeyWait, KeyName [, Options]
:等待按键的状态
Options
:
为空,表示无限期等待;
D: 等待按键被按下
T: 超时(例如 T3). 超时前等待的秒数, 超时后设置 ErrorLevel 为 1. -
Run, Target [, WorkingDir, Options, OutputVarPID]
RunWait, Target [, WorkingDir, Options, OutputVarPID]
Options
:
省略, 命令正常运行 Target, 并且当 Target 不能启动时显示警告对话框.
Max: 最大化运行
Min: 最小化运行
Hide: 隐藏运行(不能和上面任意一个选项组合使用) -
Winset(对指定的窗口进行各种设置)
内容太长,其帮助文档传送 -
SetKeyDelay
:设置每次Send系列的延迟
信息调试方法
- msgbox
- listvars
- outputdebug
键盘获取方法
-
双击/open脚本
-
view – key history and script info
SC
:键盘的Scan Code
VK
:键盘的Virtual Key -
使用PrintScreen键盘输出内容12345
SC137::Send 12345 VK2c::Send 12345
脚本练习
-
click命令
#SingleInstance Force CoordMode "Mouse","Screen"f1:: { Click 1919,716,0 Click 1879,20 Sleep 3000 Click 1622,161 Sleep 1000 Click 1616,78 }
-
send,合并单元格
#SingleInstance Force CoordMode "Mouse","Screen"; 拆分单元格 f1:: {send "{alt}"send "h"Sleep "200"send "m"Sleep "200"send "u" }
-
允许用户输入电话号码.
IB := InputBox("Please enter a phone number.", "Phone Number", "w640 h480") if IB.Result = "Cancel"MsgBox "You entered '" IB.Value "' but then cancelled." elseMsgBox "You entered '" IB.Value "'."
-
鼠标在最上面改变音量
#SingleInstance Force CoordMode "Mouse","Screen";MouseGetPos &x, &y ;w:: ;{ ;获取坐标位置 ;MouseGetPos &xpos, &ypos ;MsgBox "The cursor is at X" xpos " Y" ypos ;}~WheelUp::{MouseGetPos &x, &yif (y==0){Send "{Volume_Up}"} } ~WheelDown::{MouseGetPos &x, &yif (y==0){Send "{Volume_Down}"} }
-
关闭视窗
#SingleInstance Force ;CoordMode "Mouse","Screen";使用ctrl alt f4关闭所有相同视窗 ^!f4::; 视窗存进 sClassWinGetClass, sClass, A; 关闭相同的类视窗while WinExist("ahk_class " . sClass) {WinClose} return;使用鼠标左键和esc关闭当前窗口 ~LButton & Escape::WinGetActiveTitle ,titleWinclose %title% return#n:: run notepad
-
音量控制
!NumpadAdd:: Send {Volume_Up} ;//Alt + numpad plus !NumpadSub:: Send {Volume_Down} ;//Alt + numpad minus !Numpad0::Send {Volume_Mute} ;//Alt + numpad 0
-
语音报告今日时间
!F2::date = %A_YYYY%年%A_MM%月%A_DD%日Speak("今天日期是 " . date)time = %A_Hour%点 %A_Min%分 %A_Sec%秒Speak("现在时间是 " . time)returnSpeak(say) {spovice:=ComObjCreate("sapi.spvoice")spovice.Speak(say) }
-
获取当前鼠标颜色
!a::MouseGetPos, MouseX, MouseYPixelGetColor, color, %MouseX%, %MouseY%, RGB Clipboard := "#" . SubStr(color, 3) ;color = 0x...... MsgBox, Current color is `n %Clipboard%return
-
按下鼠标中轮回到上层目录,在推特切下一个推文
~MButton::WinGetClass,sClass,A;//MsgBox class=%sClass%;//FM=7-zip window, TFcFormMain=FreeCommanderif (sClass="TFcFormMain" || sClass="FM" || sClass="MultiCommander MainWnd") {Send, {BS}} else if (sClass="CabinetWClass") {Send, !{up} ; 回向上一层目录} else if (sClass="MozillaWindowClass" || sClass="Chrome_WidgetWin_1") {WinGetTitle, sTitle, A;//MsgBox title=%sTitle%if (InStr(sTitle, "Gmail") > 0) {Send {j}} else if (InStr(sTitle, "Twitter") > 0) {Send {j} ; 下一个推特}} return
-
连续按2次Esc关闭当前视窗
~Esc:: Keywait, Escape, , t0.5 ; KeyWait读取键盘输入,如果0.5秒内不是按Escape则结束 if errorlevel = 1return elseKeywait, Escape, d, t0.1if errorlevel = 0 ; 0.5秒内按了Escape,则再读第二个按键,若为Escape则关闭视窗{WinGetActiveTitle, TitleWinClose, %Title%return}return ;若第二个按键不为Escape则结束
-
批量删除视窗
#SingleInstance Force SetTitleMatchMode 2 ; 设置wintitle的匹配模式#n::run notepadReturn^!f4::WinGetTitle sTitle, A; MsgBox %sTitle%; InputBox, OutputVar [, Title, Prompt, HIDE, Width, Height, X, Y, Font, Timeout, Default]InputBox sTitle, 视窗标题, 输入视窗标题名, , 300, 150, , , , , %sTitle%if (sTitle = "nb") {sTitle := "记事本" ;; 或 sTitle = 记事本} else if (sTitle = "ie") {sTitle := "Internet Explorer"}while WinExist(sTitle)WinCloseReturn
-
clipboard剪切功能
^+g::current_clipboard = %Clipboard% ;把当前剪切板内容存储起来,剪切内容为文本send ^c ; 复制字符串存入剪切板Clipwait,1 ; 等待剪切板包含数据Run http://www.google.com/search?h1=zh&q=%Clipboard%Clipboard = %current_clipboard% ; 将剪切板内容恢复
-
截图工具的使用
!4::run,"%A_WinDir%\system32\Snippingtool.exe"sleep ,500WinActive, "Snipping Tool"send ,!msend ,r ; 矩形截图;send f ; 任意截图return
#Persistent RunWait, %ComSpec% /c dir C:\ >>C:\DirTest.txt, , Min ; 程序运行结束后才向下运行 ComSpec,为cmd Run, C:\DirTest.txt Run, properties C:\DirTest.txt
-
对当前窗口的操作
https://autohotkey.top/zh-cn/docs/commands/WinSet.htm#Examples -
设计开关
- 按下一个按键启动,在按一次停止
; 单击a,连续点鼠标左键,再次单击,取消点击a::settimer, 循环a功能标签, % (开关变量 := !开关变量) ? 1 : "off" 循环a功能标签:send, {Lbutton} return
F1:: if (onoff := !onoff)MsgBox, 布尔值为%onoff%`n第一次开elseMsgBox, 布尔值为%onoff%`n第二次关 Return
- 分离式开关设计
F1::F1onoff := !F1onoff, F2onoff=0SetTimer F2循环, OffSetTimer F1循环, % F1onoff=0 ? "Off" : 50ToolTip return F2::F2onoff := !F2onoff, F1onoff=0SetTimer F1循环, OffSetTimer F2循环, % F2onoff=0 ? "Off" : 50ToolTip return F1循环:ToolTip F1循环%F1onoff% return F2循环:ToolTip F2循环%F2onoff% return
- 按下一个按键启动,在按一次停止
-
设计markdown文档快速标题
^1:: ^2:: ^3:: ^5:: ^6::numHashes := Substr(A_Thishotkey, 2) ; "^1" -> "1"Markdown_title(numHashes)returnMarkdown_title(numHashes){Clipboard := ""sendInput {home}sendInput {SHIFT}+{End}sleep 200Clipwait ,1 ; 等待剪切板包含数据text := Clipboardtext := RegExReolace(text, "^#{1,6}\s(.*)", "$1")SendInput {del}SendInput {home}{# numHashes}{End} }
-
常用热键整理
https://www.autoahk.com/archives/36311#H2-12 -
微知识点整理
https://www.autoahk.com/archives/9195
参考:
基础到精通
文档
相关文章:
AutoHotKey-study
目录 使用编辑器脚本注意函数解释信息调试方法键盘获取方法脚本练习 最近发现常用键盘的上下左右箭头去操作输入输出问题感觉很不是滋味,不像Linux那样,有vim的使用,就想着有没有什么方法更快捷,更方便的去使用电脑键盘࿰…...
Go to do list
go 语言中怎么实现分布式系统? 在Go语言中实现分布式系统需要考虑以下几个方面: 通信协议:在分布式系统中,各个节点需要通过网络进行通信。Go语言提供了丰富的网络编程库,如net/http、net/rpc等,可以方便…...
JWT 认证机制
1. Session 认证的局限性 Session 认证机制需要配合 Cookie 才能实现。由于 Cookie 默认不支持跨域访问,所以,当涉及到前端跨域请求后端按口的时候,需要做很多额外的配置,才能实现跨域 Session 认证。 注意: 1…...
内核启动时间信息打印
文章目录 一 串口打印1 借助串口助手2 dmesg自带时间3 内核显示时间信息4 借助initcall_debug二 图形花显示1 bootgraph工具使用2 Bootchart工具使用3 Grabserial工具使用一 串口打印 1 借助串口助手 2 dmesg自带时间 root@xboard:~# dmesg [ 0.000000] Booting Linux on …...
Web端专业级H264/H265 直播流播放器实现-JessibucaPro播放器
概况 这个主要是参加“深圳 liveVideoStack” 的ppt的文字版的分享。 深圳 liveVideoStack 讲师介绍 关于Jessibuca 官网地址:jessibuca.comDemo: DemoDoc:DocGithub地址:Github 关于JessibucaPro 地址:JessibucaProDemo: …...
macOS sandbox 文件夹授权
macOS sandbox 文件夹授权 macOS如果想上苹果市场发布的话,那么必须要遵守苹果的沙盒协议,这样应用的存储默认都是沙盒路径,隔离了用户的文件系统,那么这个时候我需要访问 /User/xxx/Library/Developer/ 这种文件夹的时候,直接访问是会被拒绝的,那既然这样就肯定要授权了…...
CentOS 7安装Java 8
前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 要在CentOS 7上安装Java 8,请按照以下步骤操作: 打开终端并以root身份登录。 更新系统软件包: …...
施密特正交
描述 给出一个向量组原始基,通过施密特正交化、单位化,构造出标准正交基。 输入 本题有多组测试数据。每组测试数据在第一行给出两个正整数t,n,表示有t个n维向量。随后t行每行给出n个实数表示一个向量。 输出 每行输出一个向量…...
视频号小店怎么起量?实操详解!
我是电商珠珠 视频号小店于22年由视频号团队发展起来,跟抖音小店一样,都是电商平台。 目前对于视频号小店来说,正是风口期,就像19年的抖音小店一样,月入5w是没一点问题的。 去年的视频号小店还没有掀起多大的波浪&a…...
如何将unity项目托管到github(快速便捷)
如何将unity项目托管到github(快速便捷) 文章目录 如何将unity项目托管到github(快速便捷)前置准备Gitgithubgit-lfs 具体操作1.配置.gitignore文件2.配置.gitattributes3.使用git 前置准备 Git github git-lfs 这些内容省略&…...
ClickHouse(16)ClickHouse日志引擎Log详细解析
日志引擎系列 这些引擎是为了需要写入许多小数据量(少于一百万行)的表的场景而开发的。 这系列的引擎有: StripeLogLogTinyLog 共同属性 引擎: 数据存储在磁盘上。 写入时将数据追加在文件末尾。 不支持突变操作,也就是更新…...
opencv项目开发实战--填补字母的空白
目录 完成/填写字母 OpenCV C++ 完成opencv表中缺失的行 如何使用 OpenCV 获取图像中所有文本的位置? 完成/填写字母 OpenCV C++ 解决方案一: 您似乎已经对图像进行了...
Wnmp本地搭建结合内网穿透实现远程访问本地Wnmp服务
文章目录 前言1.Wnmp下载安装2.Wnmp设置3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂&a…...
C++ 红黑树的封装
一.map/set的封装 在实现了红黑树的部分功能后,我们可以便可以将红黑树作为底层结构来封装map 和 set ,但是问题也随之而来。我们都知道map是k-v的数据模型,而set是k的数据模型,我们难道要去使用两棵红黑树来封装吗?显…...
MongoDB快速入门及其SpringBoot实战
MongoDB快速入门及其SpringBoot实战 MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库。由 C 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个开源、高性能、无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展&am…...
Python网络爬虫练习
爬取历年中国大学排名(前20名),并随机选取一所高校画图展示其历年总分变化,并计算平均分,在图上展示该平均分直线: 代码如下: import matplotlib.pyplot as plt import pandas as pd import requests import randomdef main(yea…...
《opencv实用探索·九》中值滤波简单理解
1、引言 均值滤波、方框滤波、高斯滤波,都是线性滤波方式。由于线性滤波的结果是所有像素值的线性组合,因此含有噪声的像素也会被考虑进去,噪声不会被消除,而是以更柔和的方式存在。这时使用非线性滤波效果可能会更好。中值滤波是…...
PC行内编辑
点击编辑,行内编辑输入框出现,给列表的每条数据定义编辑标记,最后一定记得 v-model双向绑定,使数据回显。 步骤: 1、给行数据定义编辑标记 2、点击行编辑标记(isedit) 3、插槽根据标记渲染表单 …...
鸿蒙开发:Stage模型开发-应用/组件级配置以及UIAbility组件初步使用【鸿蒙专栏-20】
文章目录 Stage模型开发概述基本概念UIAbility组件和ExtensionAbility组件WindowStageContextAbilityStage开发流程应用组件开发了解进程模型了解线程模型应用配置文件应用版本声明配置Module支持的设备类型配置Module权限配置进阶应用配置...
Django回顾【五】
目录 一、多表操作 【1】基于对象的跨表查 【2】基于双下滑线的连表查 【3】related_name 二、聚合查询与分组查询 【1】聚合查询 【2】分组查询 三、F与Q查询 【1】F查询 【2】Q查询 四、其他字段和字段参数 【1】其他字段 【2】ORM字段参数 【3】ForeignKey 属…...
Python容器——字典
Key——Value 键值对...
基于Java SSM框架实现实现四六级英语报名系统项目【项目源码+论文说明】
基于java的SSM框架实现四六级英语报名系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个高校四六级报名管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作…...
翻硬币(第四届蓝桥杯省赛C++B组)(java版)
//翻硬币,每次都会改变两个硬币的状态 //因此我们可以从前往后枚举,s1[i] 与 s2[i] 状态不同就改变它的状态 //同时s1[i 1] 与 s2[i 1] 的状态会因此改变 // 所以继续往下枚举s1[i 1] 与 s2[i 1] //因为题目有说必须有解,因此枚举到 n - 1位的时候,两个字符串的…...
原生GPT本地及云端部署方式保姆级教程
前提条件 部署必须要有一个超过1年的Github账号 本地服务部署 运行效果 部署方法 下载安装包 暂时无法在飞书文档外展示此内容 GitHub授权登录: https://dash.pandoranext.com/ 登录后是这个样子: 复制下面红框里面这个License Id 编辑Config.js…...
Docker容器(一)概述
一、虚拟化概述 1.1引⼊虚拟化技术的必要性 服务器只有5%的时间是在⼯作的;在其它时间服务器都处于“休眠”状态. 虚拟化前 每台主机⼀个操作系统; 软硬件紧密结合; 在同⼀个主机上运⾏多个应⽤程序通常会遭遇冲突; 系统的资源利⽤率低; 硬件成本⾼昂⽽且不够灵活…...
Facebook引流怎么做?写个脚本就好!
在当今的数字化时代,流量对于任何一个网站或应用程序来说都至关重要,Facebook,作为全球最大的社交网络平台,无疑是一个获取流量的绝佳场所,但是,如何有效地从Facebook引流呢?写个脚本就好了! 在本文中&am…...
自动化集成有哪些典型应用场景?
为什么要做自动化场景集成? 主要分为以下几点: 提高效率/减少错误:减少人工操作、人为错误、人力成本,提高生产效率、生产质量和稳定性。 提高可靠性:提高系统的可靠性和稳定性,减少系统故障和停机时间。…...
探讨几种在CentOS 7上实现文件上传的方法
最近服务器过期了,把之前服务器的数据库都备份了下来,现在准备迁移各种服务,这就涉及到文件传输。之前用得多的都是xshell里的xtp来传,校园网禁用了ssh协议,还有一大堆乱七八糟的协议,我一般用的代理方法或…...
AWS EC2使用 instance profile 访问S3
AWS EC2 instance可以使用instance profile 配置访问S3的权限。 然后就可以直接在EC2上执行 python代码或者AWS CLI去访问S3了。 唯一需要注意的地方是,申明region。 示例代码: aws s3 ls xxxx-s3-bucket --region xxx-region import boto3 client …...
python中函数式编程
文章目录 map()函数filter()函数reduce()函数 map()函数 当使用map()函数时,可以使用lambda表达式来定义一个简单的转换函数。 以下是一个使用map()函数和lambda表达式的简单示例: numbers [1, 2, 3, 4, 5] squared_numbers map(lambda x: x**2, nu…...
郑州小程序/厦门百度整站优化服务
国外的源访问很慢,可以用国内的源进行下载,这里以清华的源为例,命令如下: pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple 要安装的库的名称例如我要安装PyQt5,那么命令就是: pip3 install -…...
茂名网站建设方案外包/米拓建站
经纬度计算距离和方位角方位角(azimuthangle):从某点的指北方向线起,依顺时针方向到目标方向线之间的水平夹角,叫方位角。(一)方位角的种类由于每点都有真北、磁北和坐标纵线北三种不同的指北方向线,因此,从某点到某一…...
php网站做多久/游戏推广合作
ANSA、META的二次开发均基于Python开发。本文基于ANSA的帮助文档《Introduction to Python》进行一定的扩展,希望能帮助大家快速掌握这门语言。首先来介绍下这门语言里的主要数据类型,包括:整型、浮点型、复数、布尔类型、字符串、列表、元祖…...
织梦dedecms网站更换域名后文章图片路径批量修改/软件制作
利用springmvc接收前台ajax传过来的数据完成注册功能。为了方便把,前台js的model和后台的user写成一致的功能。代码如下前端:var User function() {var id null;var name null;var password null;var sex null;var telephone null;var role null;…...
wordpress rocket/百度平台我的订单
盒子模型 把页面上的每一个元素当成一个盒子 由内容,内边距,边框,外边距组成 盒子模型举例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><…...
锐速做网站/郑州专业seo推荐
《JAVA 2核心技术 卷Ⅰ:基础知识》第七章:图形程序设计,读书笔记第二部分(7.6-7.8)。 主要内容包括:颜色、为文本设定特殊字体、图像。 一.颜色 Graphics2D类的setPaint方法可以为图形环境上的所…...