【AHK】打造炒股利器系列——用数组和循环来简化语音报时器

news2024/11/17 6:19:28

上一篇文章,【AHK】打造炒股利器系列——语音报时器 作为AHK入门,讲解了 注释、赋值、if语句、逻辑运算符、定时器等基本知识。本篇将引入ArrayLoop语句来简化化这个语音报时器,让代码更优雅,代码越简单越不容易出错误,老话说秃头上的虱子明摆着嘛。

先放上简化后的代码,然后再针对初级AHK使用者展开讲解Array、Loop、MsgBox等指令。

#Persistent
#SingleInstance force
/** 
*【AHK】打造炒股利器系列——用数组和循环来简化语音报时器
* 作者:liuyukuan
* 版权声明:未经授权,不得转载 
* 最新版发布在:https://blog.csdn.net/liuyukuan/
*/
; 定义两个数组: 一个是存放时间的数组times;另一个是存放对应消息的数组messages。
times := ["09:00:00", "09:15:00", "09:25:00", "09:30:00", "11:30:00", "13:00:00", "14:45:00", "15:00:00"]
messages := ["早盘下载数据", "开始集合竞价", "距开盘还有五分钟", "上午开盘", "中午收盘", "下午开盘", "距收盘还有十五分钟", "全天收盘"]

; 创建 一个 字转语音(TTS )COM 对象
Aladdin := ComObjCreate("sapi.spvoice")

; 设定定时器 每 0.5秒 运行一次
SetTimer, 定时器, 500
return

定时器:
    FormatTime, 当前时间,, HH:mm:ss
    
    ; 用Loop循环来遍历 times 数组
    Loop, % times.Length()
    {
        if (当前时间 = times[A_Index])
        {
            Aladdin.Speak(messages[A_Index])
            break
        }
    }
return

简单数组 Array的基本用法

创建数组

有两种方法可以用:

数组:= ["one", "two", "three"]
数组:= Array(Item1, Item2, ..., ItemN)

读取数组

想取出数组arr的第i项元素,直接把序号i放到数组名称后面的方括号里即可。

数组arr的第3项的值 := arr[3]
循环遍历数组

可以通过LoopFor 循环实现. 例如:

array := ["one", "two", "three"]

; Length返回数组项目的数量:
Loop % array.Length()
    MsgBox % array[A_Index]

; 枚举数组内容:
For index, value in array
    MsgBox % "Item " index " is '" value "'"

普通循环Loop的基本用法

重复执行一系列命令: 可以指定表示重复次数的数字或直到遇到 break.

Loop [, Count]

参数

Count
执行循环体(重复) 的次数. 如果省略, Loop 会无期限继续, 直到遇到 break 或 return.

如果 Count 是一个变量引用例如 %ItemCount%, 每当此变量为空或包含小于 1 的数字时, 循环会被完全跳过.

备注

内置变量 A_Index 包含当前循环重复的次数. 首次执行循环体时其值为 1. 第二次时其值为 2; 依此类推. 如果一个内层循环包含在一个外层循环中, 那么内层循环具有优先权. A_Index 在所有类型的循环中都有效, 包括文件循环和注册表循环; 但是在循环外部时 A_Index 值为 0.

示例1: 创建一个有 3 次迭代的循环.

;循环3次,内置变量A_Index 将依次为 1, 2, 接着 3
Loop, 3
{
    MsgBox, 迭代次数是 %A_Index%.  
    Sleep, 100
}

小扩展:MsgBox

MsgBox语句可以创建一个小对话框窗口,用于输出提示信息,方便用户与程序交互。小窗口中可以含有一个或多个按钮(例如 “是” 和 “否”) 。
消息框通常看起来像这样:
在这里插入图片描述

创建消息框的语法是:

MsgBox, Text
或者
MsgBox [, Options, Title, Text, Timeout]

参数说明

Text(文本)

如果省略所有的参数, 消息框会显示 “Press OK to continue.” 文本. 否则, 此参数表示消息框中显示的文本, 用来引导用户如何操作或提示信息.

可以使用转义序列来显示特殊字符. 例如, `n 表示换行符, 它结束当前行并开始一个新行. 因此使用 text1`n`ntext2 会在 text1 和 text2 之间添加一个空行.

如果 Text 较长, 可以通过延续片段的方法将其分解成较短的几行, 这样可以增加可读性和可维护性.

Options(选项)

表示消息框的类型和可能的按钮组合. 如果为空或省略, 则默认为 0. 注意哈:可以累加的,比如:两个按钮为0x1,感叹号图标0x30,置顶模式0x1000,那么只需设置0x1031.

MsgBox 0x1031,提示,Hello World!

在这里插入图片描述

若要指定在消息框中显示的按钮, 请添加以下值 之一:

功能十进制值十六进制值
确定(即仅显示一个 “确定” 按钮)00x0
确定/取消10x1
终止/重试/忽略20x2
是/否/取消30x3
是/否40x4
重试/取消50x5
取消/重试/继续60x6

除了按钮外,还可以设置图标的
要在消息框中显示一个图标, 请添加以下值 之一:

功能十进制值十六进制值
错误图标(停止/错误)160x10
问号图标320x20
惊叹号图标480x30
星号图标(信息)640x40

如需要对话框置顶,不被其他窗口遮挡,须指定对话框的模式 0x1000 :

功能十进制值十六进制值
系统模式(总是在顶部)40960x1000
任务模式81920x2000
置顶(WS_EX_TOPMOST 样式) (和系统模式类似, 但省略了标题栏图标)2621440x40000
Title(标题)

消息框窗口的标题. 如果省略或为空, 那么它默认为脚本的名称(不含路径).

Timeout(超时)

(可选) 以秒为单位的超时时间

总结

本文以简化上一篇【AHK】打造炒股利器系列——语音报时器](https://blog.csdn.net/liuyukuan/article/details/142388396)中的代码为例,讲解了Array、 Loop 、MsgBox等AHK指令。

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

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

相关文章

JavaWeb——Vue组件库Element(2/6):常见组件:Table表格、Pagination分页(介绍,属性,事件)

目录 常见组件-表格 介绍 属性 常见组件-分页 介绍 属性 事件 了解完了 Element 的快速入门程序之后,接下来要了解 Element 当中所提供的一些常见组件。对于 Element 当中常见组件的学习非常简单,基本上就是 CtrlC 复制、CtrlV 粘贴的过程。学习…

在 CentOS 8 服务器上运行 Selenium 代码

1.安装依赖包 sudo dnf update -y sudo dnf install -y wget unzip2. 安装 Google Chrome wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm sudo dnf localinstall google-chrome-stable_current_x86_64.rpm -y3. 安装 ChromeDriver 3.1首…

【深度学习】05-Rnn循环神经网络-01- 自然语言处理概述/词嵌入层/循环网络/文本生成案例精讲

循环神经网络(RNN)主要用于自然语言处理的。 循环神经网络(RNN)、卷积神经网络(CNN)和全连接神经网络(FCN)是三种常见的神经网络类型,各自擅长处理不同类型的数据。下面…

转做大模型开发,能不能挽救职业生涯?

大模型算是当之无愧最火的一个方向了,算是新时代的风口。有小伙伴觉得,既然是新领域、新方向,那么,人才需求肯定比较大,相应的人才缺乏,竞争也会更少,那转行去做大模型是不是一个更好的选择呢&a…

Leetcode 2320. 统计放置房子的方式数

原题链接:. - 力扣(LeetCode) 一条街道上共有 n * 2 个 地块 ,街道的两侧各有 n 个地块。每一边的地块都按从 1 到 n 编号。每个地块上都可以放置一所房子。 现要求街道同一侧不能存在两所房子相邻的情况,请你计算并…

高并发内存池(五):ThreadCache、CentralCache和PageCache的内存回收机制 及 释放内存过程的调试

目录 ThreadCache的内存回收机制 补充内容1 补充内容2 补充内容3 新增关键函数ListTooLong CentralCache的内存回收机制 补充内容1 新增关键函数MapObjectToSpan 新增关键函数ReleaseListToSpans PageCache的内存回收机制 补充内容1 补充内容2 新增关键函数Releas…

初试React前端框架

文章目录 一、React概述二、React核心特性1、组件化设计2、虚拟DOM3、生态系统 三、实例操作1、准备工作2、创建项目结构3、启动项目4、编写React组件5、添加React样式6、运行项目,查看效果 四、实战小结 一、React概述 大家好,今天我们将一起探索React…

c语言 memmove模拟和momcpy模拟的比较

1.memcpy&#xff08;两者引用的头文件均是<stdlib.h>) 这个函数适用于开辟了两个空间的字符串数组&#xff0c;无法进行自身与自身的拷贝。eg: char* my_memcpy(void* s1, void* s2,int count) {char* start s1;while (count--) {*(char*)s1 *(char*)s2;(char*)s1 …

windows10使用bat脚本安装前后端环境之nginx注册服务

首先需要搞清楚nginx本地是怎么安装配置的、然后在根据如下步骤编写bat脚本&#xff1a; 思路 1.下载nginx-1.26 zip压缩包安装包 2.调整conf配置 3.借助winsw将nginx应用注册为服务&#xff0c;winsw下载地址 然后重命名nginx_service.exe 4.配置nginx-service.xml 5.注册wi…

【运维资料】系统运维管理方案(Doc原件2024)

1 编制目的 2 系统运行维护 2.1 系统运维内容 2.2 日常运行维护方案 2.2.1 日常巡检 2.2.2 状态监控 2.2.3 系统优化 2.2.4 软件系统问题处理及升级 2.2.5 系统数据库管理维护 2.2.6 灾难恢复 2.3 应急运行维护方案 2.3.1 启动应急流程 2.3.2 成立应急小组 2.3.3 应急处理过程 …

【数据结构】栈和队列(有完整的模拟实现代码!)

1、栈 1.1 栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。…

爬取元气手机壁纸简单案例(仅用于教学,禁止任何非法获利)

爬虫常用的库 爬虫&#xff08;Web Scraping&#xff09;是一种从网页上提取数据的技术。在 Python 中&#xff0c;有许多库可以帮助实现这一目标。以下是一些常用的爬虫库&#xff0c;以及对 BeautifulSoup 的详细介绍。 常用爬虫库 1.Requests ​ a.功能&#xff1a;用于发…

利用 Llama-3.1-Nemotron-51B 推进精度-效率前沿的发展

今天&#xff0c;英伟达™&#xff08;NVIDIA&#xff09;发布了一款独特的语言模型&#xff0c;该模型具有无与伦比的准确性和效率性能。Llama 3.1-Nemotron-51B 源自 Meta 的 Llama-3.1-70B&#xff0c;它采用了一种新颖的神经架构搜索&#xff08;NAS&#xff09;方法&#…

MySQL的安装(环境为CentOS云服务器)

卸载内置环境 我们初期使用root账号&#xff0c;后期再切换成普通账号 使用 ps axj | grep mysql 查看系统中是否有MySQL相关的进程 使用 systemctl stop mysqld 关停进程 使用 rpm -qa | grep mysql 查看MySQL相关的安装包 使用 rpm -qa | grep mysql | xargs yum -y remo…

试用Debian12.7和Ubuntu24.4小札

Debian GNU/Linux 12 (bookworm)和Ubuntu 24.04.1 LTS是现阶段&#xff08;2024年9月26日&#xff09;两个发行版的最新版本。Ubuntu Server版本默认就不带桌面&#xff08;ubuntu-24.04-live-server-amd64.iso&#xff09;&#xff0c;这个默认就是最小化安装&#xff08;安装…

长芯微LPQ76930锂电池组保护芯片完全P2P替代BQ76930

LPQ76930系列芯片可作为 3-15 节串联电池组监控和保护解决方案的一部分。通过 TWI 通信&#xff0c;MCU 可以使用 LPQ76930 来执行电池管理功能1&#xff0c;例如监测&#xff08;电池电压、电池 组电流、电池组温度&#xff09;、保护&#xff08;控制充电/放电 FET&#xff0…

java中的强软弱虚

在java中对象的引用有强、软、弱、虚四种&#xff0c;这些引用级别的区别主要体现在对象的生命周期、回收时机的不同。 文章目录 准备工作1. 设置内存2. 内存检测 强引用软引用弱引用虚引用 准备工作 1. 设置内存 为方便调试&#xff0c;将内存设置为16MB 依次点击菜单栏的R…

springboot基于学习行为的学生选课成绩分析系统设计与实现

目录 功能介绍使用说明系统实现截图开发核心技术介绍&#xff1a;开发步骤编译运行核心代码部分展示开发环境需求分析详细视频演示源码获取 功能介绍 学生 课程学习行为数据录入: 学生填写每门课程的学习时长、学习态度、课后作业质量等。 课程学习行为数据修改: 学生可修改已…

基于SpringBoot+Vue的大学生公考服务平台

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

php 平滑重启 kill -SIGUSR2 <PID> pgrep命令查看进程号

有时候我们使用nginx 大家都知道平滑重启命令: /web/nginx/sbin/nginx -s reload 但大家对php-fpm 重启 可能就是简单暴力的kill 直接搞起了 下面介绍一个sh 文件名保存为start_php.sh 来对php-fpm 进行平滑重启 #!/bin/bash# 检查 PHP-FPM 是否运行 if ! pgrep php-…