Autohotkey_L的单例类实现
今天尝试了一下单例模式的AHK写法,貌似成功了.
如果成功了,意味着可以使用MVC like的框架形式构筑大型程序.
具体代码如下:
%A_ScriptDir%\gIncludes\Cls_MyBase.ahk
;~ 这是一个单例类
class Cls_MyBase
{
;~ 单例注册属性
static _myInstance := 0
;~ 实例化次数计数
static _instanceCount := 0
;~ 测试属性
_myVar := 0
;~ 新的实例化,参数必须为此单例的全局变量
__New()
{
trace("step1`: new元函数实例化",2)
if IsObject( this._myInstance )
{
trace("已经实例化的单例类`,请使用getInstance方法获取Cls_MyBase实例",2)
return this._myInstance
}
}
getInstance()
{
trace("step2`: getInstance方法获取实例",2)
;~ 单例注册属性
;~ static _myInstance
if ( IsObject( this._myInstance ) = 0 )
{
this._instanceCount++
this._myInstance := new Cls_MyBase()
}
return this._myInstance
}
getMyVar()
{
trace("step3`: 内置方法获取属性",2)
this._myVar++
return this._myVar
}
}
class Cls_MyBase
{
;~ 单例注册属性
static _myInstance := 0
;~ 实例化次数计数
static _instanceCount := 0
;~ 测试属性
_myVar := 0
;~ 新的实例化,参数必须为此单例的全局变量
__New()
{
trace("step1`: new元函数实例化",2)
if IsObject( this._myInstance )
{
trace("已经实例化的单例类`,请使用getInstance方法获取Cls_MyBase实例",2)
return this._myInstance
}
}
getInstance()
{
trace("step2`: getInstance方法获取实例",2)
;~ 单例注册属性
;~ static _myInstance
if ( IsObject( this._myInstance ) = 0 )
{
this._instanceCount++
this._myInstance := new Cls_MyBase()
}
return this._myInstance
}
getMyVar()
{
trace("step3`: 内置方法获取属性",2)
this._myVar++
return this._myVar
}
}
testSingleton.ahk
;~ 测试单例模式
;~ Test Singleton mode
;~ Author: Fonny [ fjxhkj@gmail.com ]
;~ AutoHotkey Version 1.1.13.1
;~ http://www.autohotkey.com/
#Warn
#NoEnv
;~ #Persistent
#SingleInstance force
#HotkeyInterval 1000 ;默认2000毫秒,重复热键的间隔时间
#MaxHotkeysPerInterval 100 ;在#HotkeyInterval允许的情况下,最多可以触发的热键数量
#Include, %A_ScriptDir%
#WinActivateForce
SetWorkingDir %A_ScriptDir%
Process, Priority, , High
;~ SetBatchLines, -1
SetDefaultMouseSpeed, 0
;~ SetMouseDelay, 0 ;鼠标点击后的延迟,影响后续的输入稳定性.系统默认10-15
;~ SetKeyDelay, 0
;~ 匹配开头字符
;~ SetTitleMatchMode, 1
;~ 匹配任意位置
SetTitleMatchMode, 2
;~ 坐标系统使用包含windows样式边框的
CoordMode, Window
;~ SendMode Input
;~ ======================================S=T=A=R=T====
;~ Includes
;~ ==================================================================
#Include %A_ScriptDir%
#Include gIncludes\Cls_MyBase.ahk
;~ ======================================
;~ End Includes
;~ ======================================E=N=D=======================
#x::
Reload
return
#c::
testFunc()
trace("第二次运行`n将不会使用New元函数实例化了", 2)
testFunc()
return
testFunc()
{
objA := Cls_MyBase.getInstance()
trace("内置属性objA`.var is `: " . objA.getMyVar() . "`n实例化次数 `:" . objA._instanceCount, 2)
}
;~ Test Singleton mode
;~ Author: Fonny [ fjxhkj@gmail.com ]
;~ AutoHotkey Version 1.1.13.1
;~ http://www.autohotkey.com/
#Warn
#NoEnv
;~ #Persistent
#SingleInstance force
#HotkeyInterval 1000 ;默认2000毫秒,重复热键的间隔时间
#MaxHotkeysPerInterval 100 ;在#HotkeyInterval允许的情况下,最多可以触发的热键数量
#Include, %A_ScriptDir%
#WinActivateForce
SetWorkingDir %A_ScriptDir%
Process, Priority, , High
;~ SetBatchLines, -1
SetDefaultMouseSpeed, 0
;~ SetMouseDelay, 0 ;鼠标点击后的延迟,影响后续的输入稳定性.系统默认10-15
;~ SetKeyDelay, 0
;~ 匹配开头字符
;~ SetTitleMatchMode, 1
;~ 匹配任意位置
SetTitleMatchMode, 2
;~ 坐标系统使用包含windows样式边框的
CoordMode, Window
;~ SendMode Input
;~ ======================================S=T=A=R=T====
;~ Includes
;~ ==================================================================
#Include %A_ScriptDir%
#Include gIncludes\Cls_MyBase.ahk
;~ ======================================
;~ End Includes
;~ ======================================E=N=D=======================
#x::
Reload
return
#c::
testFunc()
trace("第二次运行`n将不会使用New元函数实例化了", 2)
testFunc()
return
testFunc()
{
objA := Cls_MyBase.getInstance()
trace("内置属性objA`.var is `: " . objA.getMyVar() . "`n实例化次数 `:" . objA._instanceCount, 2)
}
相关推荐
AutoHotkey_L 1.0.90.00 中文帮助0116版说明 AutoHotkey_L 是由 Lexikos 维护的一个 AutoHotkey 定制版本. 此中文帮助基于 AutoHotkey_L 1.0.90.00 的英文帮助, 在原 Basic 中文帮助 (准中文版) 基础上翻译及更新...
AutoHotkey 是一个强大的自动化脚本语言,主要用于创建快捷键(Hotkeys)和自动化的任务。它允许用户通过编写简单的脚本来实现对计算机操作的高度自定义,提升工作效率和便利性。这个1.1.30.03版本的手册中文版提供...
AutoHotkey_1.1.33.10_setup.exe
**AutoHotkey_L:自动化脚本工具的深度解析** AutoHotkey_L,简称为AHK_L,是一款功能强大的自动化脚本语言,专为提高效率、简化日常计算机操作而设计。这款开源工具允许用户通过编写简单的脚本来实现各种复杂的...
描述提到"读取excel文件内容,自动模拟录入到任意录入界面",这意味着这个项目主要关注的是两个关键点:一是如何使用AutoHotkey与Excel进行交互,二是如何模拟键盘输入来实现自动化录入。 首先,让我们深入了解一下...
AutoHotkey 是一种免费的、开源的 Windows 脚本语言,它允许用户轻松地为各种任务创建小到复杂的脚本,例如:表单填充、自动单击、宏等。 定义鼠标和键盘的热键、重新映射键或按钮以及类似自动更正的替换。 创建...
在线版 https://wyagd001.github.io/zh-cn/docs/AutoHotkey.htm 包含V1和V2版本 来源于https://github.com/wyagd001/wyagd001.github.io 使用时注意文档是否是最新版本,
此外,更新的库文件(如压缩包中的"Lib")可能包含更多的预定义函数和类,扩展了AutoHotkey的功能范围。 安装包内的"AutoHotkey.exe"是程序的主执行文件,双击即可运行。一旦启动,用户就可以开始编写和运行AutoHot...
AutoHotkey_L_Instal
AutoHotkey_L_CN.chm lua脚本API文档
AutoHotkey_Lw 是一个基于AutoHotkey脚本语言的轻量级版本,它主要用于自动化任务、快捷键定制以及用户界面的改进。AutoHotkey 是一个开源的工具,深受程序员、系统管理员和普通用户喜爱,因为它能极大地提高工作...
ahk安装包,给懒得去官网下载的人,下载后直接安装就行。
《ResananceV2_hotkey_AutoHotkey_:自动战斗热键的AutoHotkey实现》 在IT领域,自动化工具的应用广泛而深入,尤其是在游戏领域。ResananceV2_hotkey_AutoHotkey_是一个专门针对自动战斗功能设计的热键系统,它巧妙...
AutoHotkey_1.1.26.01_setup 最新版本
AutoHotkey的核心功能是快捷键自定义和宏录制,通过编写简单的脚本,用户可以创建自己的热键和热字符串,实现各种自动化的操作。例如,你可以设置一个快捷键,一键打开常用的软件,或者录制一段鼠标和键盘的操作,...
AutoHotkey的热键功能是其核心卖点,用户可以通过简单的脚本定义个性化的键盘和鼠标组合键,实现诸如一键复制、粘贴、打开程序等操作,甚至可以模拟复杂的连续按键序列,这对于游戏玩家和需要大量重复操作的用户来说...
AutoHotkey是一款强大的自动化工具,它允许用户通过脚本实现对键盘、鼠标操作的自定义。在标题"拦截驱动程序的AutoHotkey包装器_C#_AutoHotkey_下载.zip"中,我们可以推断出这是一个关于使用C#语言创建的AutoHotkey...
【描述】"schcls_Change_AutoHotkey_源码" 指的是这个压缩包内包含了用 AutoHotkey 编写的源代码,可能是用于改变或扩展 AutoHotkey 的某些特定功能,比如修改或增强系统类(System Class)的行为。在 AutoHotkey 中...
标题中的“Tab+字母实现小键盘”是指一种利用AutoHotkey脚本技术,将标准键盘上的某些字母键组合成虚拟的小键盘功能。这对于那些没有实体小键盘或者在使用笔记本电脑等设备时,需要快速输入数字的用户来说非常方便。...