• 2024-10-25[AHK2 工具] 处理器管理
    开始这是最核心的部分,用于注册、管理和调用处理器。它的前提是所有的处理器都继承于一个接口,且实现其中的方法;管理器便明确的知道如何检查处理器的合法性、及如何调用处理器。关于这个接口,在handle模块下介绍。实现以下代码实现了一个注册中心和调用中心。#Include../ha
  • 2024-10-25[AHK2 工具] 内置处理器
    开始内置处理器通常使用的是未开放的接口,如直接调用处理器管理器的方法;这些在用户处理器中是不会使用的,但可以由脚本提供。目前有五个内置处理器:Echo常用来查看关键字的值和测试。Exit退出程序Hist管理历史模块使用的本地文件Meow获取当前注册的处理器及调用处理器的Ec
  • 2024-09-12[AHK2] 将绝对路径导入转化为相对路径导入
    问题起源在使用AHK写稍大些的项目时,就会拆分文件,将脚本存放到不同的位置;同时,也会引用别人的工具类等。这些情况下就会使用#Include导入脚本;可能是绝对路径,也可能是相对路径。在绝对路径的情况下,想要将项目分享给他人就会带来许多麻烦。因为需要解决绝对路径导入问题。我曾经
  • 2024-08-11[AHK2] 截图工具之配置文件
    开始紧接着的是配置文件,先前使用的是CustomFs.ahk的前身,实在简陋。现在我们已经实现的完善的配置文件语法,那么使用它吧!先看看之前的配置文件吧:#**除末尾外不要有空行**groupPath:A_ScriptDir\groupgroup:-default-history-test-temphisPath:A_ScriptDir\group\history
  • 2024-08-11[AHK2] 截图工具之历史管理
    开始这是新版MeowPaste工程的第一篇博客,我将履行重写MeowPaste的承诺,使它更好用,代码更优雅。MeowPaste是ahk编写的截图工具,目标是轻量且优雅这次我们来重写历史图片管理,先前的版本太偏执,十分混乱。需要的功能如下:热键贴出历史图片,按时间顺序贴出贴出的图如果关闭了,将放到
  • 2024-08-05[AHK2] 配置文件新语法——函数
    开始今天,我在使用自定义的配置文件语法时又发现了不足,那就是需要一种插值语法,可以减少很多重复。比如,我有很多个字段都是http网址:vm:http://192.168.6.100:8080rm:http://192.168.6.101:9000能不能不打这么多?答案是可以的,所以我设计了新语法————函数。它类似ahk的
  • 2024-07-23[AHK2] 配置文件2
    开始先前,我们设计了一种简单的配置文件语法,可以方便的在记事本中编辑,然后进行读取;但是,功能停留在了读取上。事实上,我们还需要修改和写入功能,所以,今天我们来实现它。实现功能首先明确目标:实现修改功能实现写入功能要实现这两个目标,显然需要一个额外的变量来记录读取的文档
  • 2024-07-05[AHK2] 取色工具
    开始如上次所说,我抽时间完成了ahk的gdip版取色工具,如下:具体代码在下节。代码#RequiresAutoHotkeyv2.0#Includeg:\AHK\git-ahk-lib\lib\gdip\GdipStarter.ahk#Includeg:\AHK\git-ahk-lib\Extend.ahk#Includeg:\AHK\git-ahk-lib\util\Cursor.ahkCoordMode'Mouse'C
  • 2024-06-20[AHK2] 借助vlc设置桌面动态背景
    概述网上可以找到许多设置桌面动态背景的c++代码,我们将它用ahk实现即可。我已经使用了很长一段时间,体验十分不错,所以推荐给大家。完整脚本请看最后一节。发送消息SendMsgToProgman(){DllCall('SendMessageTimeout','ptr',WinGetID('ahk_classProgman'),'
  • 2024-05-18[AHK2] 配置文件
    开始通常在AHK中使用配置文件是通过内置的INI函数,也可以使用json或yaml,已有外部ahk脚本可以操作它们。但这些文件在ahk场景实际使用上都不怎么方便。于是我计划设计一种简洁的配置文件语法,可以在轻量级场景下替代这些常用的文件。其中最重要的一点是简单,以至于可以轻松的在记
  • 2024-03-25[AHK2] 菜单,用于便捷的获取文件的路径
    开始在使用文件管理器中,我们经常要用到的一个需求就是获取一个文件的全路径,那么需要右键,安全,滑动复制。太麻烦了!如果可以用ahk便利的获取到路径就好了!所以有了下面的脚本:中键显示菜单。代码#IncludeG:\AHK\gitee_ahk2\common\Tip.ahk#IncludeG:\AHK\gitee_ahk2\common\Th
  • 2024-03-25[AHK2 ui] 轻松设置主题
    开始在写ui工具的时候,常常会设置控件的背景或字体颜色;通常的做法是在options参数中使用backgroundRedcblack而如果想使用变量就会出现麻烦的字符串拼接,像这样:this.AddText('background'bgc'c'fc)在控件很多的时候便会像这样(我曾经写的ui):为了解决这种复杂性,有了下面的
  • 2024-03-25[AHK2] 不用结束符的热字串
    开始通常,我们使用热字串是这样的:::;btw::bytheway需要使用结束符(;''.等)来触发。但在官方文档中,找到一种方法可以不使用结束符,基于InputHook的方式。原始的例子就不展示了,我们直接入正题--封装后的代码。代码/***@example*;registeractionsbyconstructor
  • 2024-01-22[AHK2] wt调用命令
    最近在研究mc服务器,一般启动时使用bat文件就可以,但是我想在终端中运行而不是在cmd中。查了wt和pwsh的文档写出了下面的脚本。作用仅仅是在wt中运行java这条命令。脚本包括一些变量,其中:reuse表示是否打开一个新的wt实例。headC表示在调用jar前运行的powershell命令。javaC中
  • 2023-12-29[AHK2] 为toolwindow窗口添加阴影效果
    如下示例g:=Gui('-Caption+Border');或包含+ToolWindowg.SetFont('s13','consolas')g.AddText('c4c071d',data)g.BackColor:='f6eeda'g.Show('x100y50')WinSetTransColor('white
  • 2023-10-23[AHK2] 截图工具
    这是由ahk2编写的工具,用于屏幕截图,它具有以下核心功能:- 截图并粘贴- 缩放贴图- 保存截图至剪贴板和文件- 分组管理其他功能包括:- 读取位图并显示- 历史截图管理更多功能包括:- 完全自由的自定义- 简单的功能扩展 脚本共1500多行,便不在此处粘贴,感兴趣的可以去
  • 2023-10-22[AHK2] 合并使用#include的脚本
    这个脚本用于将一个脚本中的#include语句包含的脚本添加到这条#include语句的位置。同时,它有其他功能,如:去除空行、注释(仅单行)、替换内置变量。因为脚本原理是读取单行并处理,所以只能处理单行注释,要做更多复杂功能就需要使用其他方法了,比如索引表……但脚本主要目的就是合并分部
  • 2023-10-22[AHK2] 向对象原型添加属性和方法
    ahk和js十分相似,其中一点就是可以向本地对象添加自定义方法和属性。下面的脚本向ahk的字符串,数组添加了许多方法,添加之后在使用上就和js更加相似了。;Thisscriptisusedtoextendthemethodsoftheahknativeobjectprototype#RequiresAutoHotkeyv2.0#SingleInstan
  • 2023-08-23[AHK2] 使用#Include-二
    开始上一次,我们提到了如何使用#Include,以及使用时应注意的问题,现在我们就来解决这个问题。如何保证资源路径始终是正确的?思路我们仿造nodeJs的Path.resolve(),实现一个ahk的resolve()。但要注意的一点是:使用静态变量Workdir代替__dirname因为我们没有这样一个__dirname变
  • 2023-08-23[AHK2] 屏幕放大镜
    介绍此脚本源自远古的ahk1,里面甚至使用了IfLess这种语法。但不管怎么说,它是个十分好的脚本,代码精简,效率也好。所以我将它升级到了ahk2版,并对部分内容做提炼,疏通了整个脚本的脉络(老语法实在混乱)。它的作用就是可以放大鼠标下的屏幕,以gui的形式展示出来。效果如下:此外,还有以下
  • 2023-08-23[AHK2] 让终止符决定热字串
    介绍这是一种在使用同一热字串的情况下生成不同结果的技巧。例子下面是一个例子,用于生成三种样式的CommonJs导入语句。它在我写nodeJs时可以省下些许麻烦。根据终止符的不同,会生成三种导入语句:空格->使用默认名app,导入模块自行输入。分号->变量名和模块名相同,输入
  • 2023-08-23[AHK2] 更改脚本初始代码
    ahk初始提供的模版代码将在创建ahk2脚本时自动添加,如果需要更改的话,只要修改ahk安装目录/UX/Templates/Minimalforv2.ahk文件内容即可。它的初始内容只有#RequiresAutoHotkeyv2.0。我添加了些许片段:ifA_LineFile==A_ScriptFullPath{}在花括号内的代码只在以当前文
  • 2023-08-23[AHK2-UI] 实现自己的Show()方法
    为什么这其实是一种两阶段XX的设计模式,比如两阶段终止:调用终止方法时并不立即终止,而是设置终止信号,由别人自身决定终止的操作。同样,实现Show()方法算是一种两阶段启动:外部调用Show()方法时,由自身决定show前做什么,show后又做什么,以及如何show。例子这是一个Show()方法:staticS
  • 2023-08-23[AHK2-UI] 使用#Include
    #Include是什么一句话介绍:可以将一个脚本的代码插入到Include语句的位置。作用使用#Include可以实现分模块开发,对于代码组织有十分重要的作用。通常使用小型脚本(只有些热键和热字串)不需要使用;但当脚本不仅仅是这些,还要写ui界面或更繁杂的功能时,我们最好将ui和数据处理的逻辑分