AutoHotKey脚本的循环:While和Loop

news2025/1/14 9:06:17

While

AHK提供三种循环方法,分别是Loop, WhileFor,其中WhileFor在其他语言中都很常见,下面通过while循环,实现一个鼠标框选矩形尺寸的脚本

; 来自官网的案例
CoordMode "Mouse", "Screen"

~LButton::
{
    MouseGetPos &begin_x, &begin_y
    while GetKeyState("LButton")
    {
        MouseGetPos &x, &y
        ToolTip begin_x ", " begin_y "`n" Abs(begin_x-x) " x " Abs(begin_y-y)
        Sleep 10
    }
    ToolTip
}

其中,MouseGetPos可以获得鼠标的位置,并将其赋值给begin_x, begin_y。然后,GetKeyState可获取鼠标或键盘的状态,当LButton即鼠标左键处于按压状态时,执行while循环的语句,首先获取当前的x,y坐标,然后弹出一个ToolTip,用于显示鼠标框选出的矩形尺寸,结果如下

在这里插入图片描述

相比之下,For循环稍显复杂,用于迭代某个列表,考虑到For循环与可迭代类型息息相关,故而放在后面与可迭代对象一起讲解。

Loop

WhileFor相比,最简单的循环方式其实是Loop,在不加参数的情况下,就是一个死循环,如果用Loop改写上面的函数,则内容如下

CoordMode "Mouse", "Screen"

~LButton::
{
    MouseGetPos &begin_x, &begin_y
    Loop
    {
        if not GetKeyState("LButton")
            break
        MouseGetPos &x, &y
        ToolTip begin_x ", " begin_y "`n" Abs(begin_x-x) " x " Abs(begin_y-y)
        Sleep 10
    }
    ToolTip
}

其中,break用于跳出循环,这个关键字不仅适用于Loop循环,也同样适用于其他循环。

带参数的Loop

如果Loop后面跟着不同的参数,则其含义又有不同,根据参数类型,AHK共提供了五种Loop格式,可对文件夹、字符串以及文件进行遍历。

  • 数字 表示执行循环的次数
  • Loop Files 将检索指定的文件夹
  • Loop Parse 将检索字符串片段
  • Loop Read 将按行读取文件内容
  • Loop Reg 检索指定注册表子键的内容,每次一个项目

由于类似Loop 3 这种循环3次的语法相对比较简单,而注册表操作相对来说并不高频,更适合将Loop Reg放在注册表操作中讲解,故而下面主要对Files, Parse, Read这三种Loop循环进行示例说明。

Loop Parse

Loop Parse用于遍历字符串,其参数除了将要被调用的字符串外,还包括另外两个可缺省的参数

  • Delimiters 用于分割字符串的字符串
  • OmitChars 字符串在分割之后,在首尾移除的字符

下面用逗号来分割剪贴板中的内容,并逐段输出

CapsLock::{
    Loop Parse, A_Clipboard, ","{
        MsgBox A_LoopField
    }
}

在点击CapsLock后,效果为

在这里插入图片描述

Loop Files

Loop Files的完整调用参数为Loop Files FilePattern , Mode,其中FilePattern为支持通配符的路径字符串;Mode可缺省,此时只包括文件且不递归子文件夹,此外可以指定D, F, R三种模式,含义如下

  • D 包含文件夹
  • F 包含文件
  • R 递归到子目录,即对文件夹所有子文件进行遍历。

下面遍历所有.ex结尾的文件

CapsLock::{
FileList := ""
Loop Files, "*.ex"
    MsgBox A_LoopFileName
}

其中,A_LoopFileName表示单次循环时的文件名。

Loop Read

Loop Read用于打开文件并按行遍历,其内置变量A_LoopReadLine即表示某次循环时的某一行

CapsLock::{
    Loop read, "test.ahk"{
        MsgBox A_LoopReadLine
    }
}

效果如下

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/679142.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【文献分享】基于感知质量的滚动优化无人机导航

论文题目:Perception-aware Receding Horizon Navigation for MAVs 作者:Zhang, Zichao ; Scaramuzza, Davide 作者机构:苏黎世大学 论文链接:https://files.ifi.uzh.ch/rpg/website/rpg.ifi.uzh.ch/html/docs/ICRA18_Zhang.pd…

【雕爷学编程】Arduino动手做(122)---BH1750光照传感器

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

使用近10年,说说向大家推荐Linux系统的理由

使用linux已经快十年了,一直想推荐身边的使用linux,但是一直没有分享。但是现在我想分享推荐了。下面我们一起聊聊为什么我向大家推荐linux。 为什么现在我想推荐了呢?是因为我自认为相对于同龄人来说,我使用桌面版的时间算是挺长的了&#…

彻底搞懂什么是阿里云服务器vCPU?

阿里云ECS服务器vCPU和CPU是什么意思?CPU和vCPU有什么区别?一台云服务器ECS实例的CPU选项由CPU物理核心数和每核线程数决定,CPU是中央处理器,一个CPU可以包含若干个物理核,通过超线程HT(Hyper-Threading&am…

走向计算机视觉的通用人工智能:从GPT和大型语言模型中汲取的经验教训 (下)...

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID|计算机视觉研究院 学习群|扫码在主页获取加入方式 论文地址:https://arxiv.org/pdf/2306.08641.pdf 计算机视觉研究院专栏 Column of Computer Vision Institute 人工智能…

Matlab预测模型-灰色预测模型

预测模型-灰色预测模型 灰色预测是对既含有已知信息又含有不确定信息的系统进行预测,就是对在一定范围内变化的、与时间有关的灰色过程进行预测。灰色预测对原始数据进行生成处理来寻找系统变动的规律,并生成有较强规律性的数据序列,然后建立…

Linux学习[19]管线命令详解1---cut, grep, sort, wc, uniq

文章目录 1. 何为管线2. 摘取命令:cut, grep2.1 cut2.2 grep 3. 排序命令sort,wc,uniq3.1 sort3.2 uniq3.3 wc 总结 1. 何为管线 管线命令和Linux学习18里面的连续执行指令少许不同。他是只有在前面指令执行正确的时候,才会执行管线命令。 即这个管线命…

基于Vue+Node.js的宠物领养网站的设计与开发-计算机毕设 附源码 83352

基于VueNode.js的宠物领养网站的设计与开发 摘 要 随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。由…

彻底卸载mysql的详细步骤

目录 一、前言 二、操作步骤 (一) 停止mysql的服务 (二)控制面板卸载 (三)清除残留的文件 (四)删除注册表内容 (五)删除MySQL环境变量 一、前言 卸载…

spider-flow新手暴力入门

1.入口 链接跳转: spider-flow 或者本地有git软件直接输入gittt中的链接地址,回车键梭哈即可 2.环境部署,必备jdk8mysql idea打开项目,重点修改如下 mysql用小皮软件(phpstudy)自带的mysql5,navicat软件导入sql文…

SEO一般多久时间才会有效果?

💂 个人网站:【海拥】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 目录 前言什么是SEOSEO的时间…

Sui x KuCoin Labs夏季黑客松第二批入围项目公布

Sui x KuCoin Labs夏季黑客松仍在如火如荼地进行中。自第一批入围项目名单公布后一周,第二批入围项目现已经过审核,入围最终Demo Day。 第二批入围名单 Vimverse Vimverse是一个基于Sui构建的创新生态金融平台,旨在释放去中心化储备货币协…

计算物理专题:主值积分

计算物理专题:主值积分 吴式枢理论 主值积分 设在以及上可积,其中为任意小的正数,当两者独立地趋于零,极限存在。如果,这个极限存在,则称它为瑕积分的主值,记作无界函数的改造则该瑕积分的主值…

使用鲁棒优化的定价策略进行微电网不平衡管理研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

童安格杀猪和金钥匙-UMLChina建模知识竞赛第4赛季第7轮

DDD领域驱动设计批评文集 欢迎加入“软件方法建模师”群 《软件方法》各章合集 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 本轮每题分数较少,需最先答对所有4题,才能获得本轮优胜。 所有题目的回答必须放…

Python 进阶(一):Python连接MySQL数据库和CRUD操作

MySQL数据库的连接和CRUD操作 前言Python连接MySQL的五种方式1. 安装mysql-connector-python2. 连接数据库3. 查询数据4. 插入数据5. 更新数据6. 删除数据 前言 本文基于MySQL8.x版本的学习,python版本基于当前最新的3.x,windows操作系统下mysql的安装流…

对骨架进行去毛刺处理

文章目录 0. 效果1. 基本内容2. 参考 0. 效果 红色:端点 绿色:节点 蓝色线条:毛刺(根据长度定义) 1. 基本内容 本文中的端点和节点的获取是依据论文《一种有效的骨架毛刺去除算法》中的内容提取的。 端点&#…

Chromium多进程架构,你知道多少?

一、前言 国内外主流的浏览器,大多采用的是谷歌的Chromium 浏览器内核,Chromium是一个多进程多线程架构的Web引擎,很多应用和底层开发者希望了解Chromium中的进程和线程的种类和用途,以便能利用相关信息提升应用的性能。为此&…

C++【一棵红黑树封装 set 和 map】

✨个人主页: 北 海 🎉所属专栏: C修行之路 🎃操作环境: Visual Studio 2019 版本 16.11.17 文章目录 🌇前言🏙️正文1、红黑树的完善1.1、修改默认成员函数1.1.1、默认构造1.1.2、析构 ---> …

nodejs 跳蚤市场网站-计算机毕设 附源码83381

nodejs 跳蚤市场网站 目 录 摘要 1 绪论 1.1选题背景与意义 1.2国内外发展情况 1.3node.js主要功能 1.4node.js功能模块 1.5论文结构与章节安排 2跳蚤市场网站系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.3.2数据修改流程 2.3.3数据删除流程 …