Autohotkey_L的单例类实现

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
    }
}
 

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)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简介   AutoHotkey 是一款免费的、Windows平台下开放源代码的热键脚本语言。 编辑本段 功能   通过发送键盘或鼠标的键击动作命令来实现几乎所有操作的自动化。您可以自己编写 宏 或者使用宏录制器来生成;   为键盘,游戏操纵杆和鼠标创建 热键。 事实上任何的按键、按钮或组合键都可以被设置为热键;   当键入您自定义的缩写时可以 扩展缩写。如, 键入“btw”就可以自动扩展为“by the way”;   创建自定义的数据输入表格、用户界面、菜等。详情请看 图形界面 部分;   映射 键盘、游戏操纵杆和鼠标上的按键或按钮;   运行现有的AutoIt v2脚本并用 新功能 来增强它们;   将脚本文件编译 成EXE可执行文件,使得程序在没有安装AutoHotkey的机器上得以运行;   借助 相关工具 以实现更强大的功能。   更多关于热键的说明   AutoHotkey 可令键盘、游戏操纵杆和鼠标的所有潜能都发挥出来。如,除了典型的Control、Alt和Shift键之外,你还可以定义Win键(徽标键)和Capslock键作为调节键。 而实际上你还可以设置任意的键盘按键或鼠标按键作为调节键。详细内容请看 高级热键 部分。   其他功能   调节音量、设置静音,以及其他 关于声卡的设置;   令指定窗口变为 透明,顶层窗口,或改变 外形;   用 游戏操纵杆 或 键盘 代替鼠标;   监控 您的系统。如,当您不希望见到的窗口出现时自动关闭它们;   获取并改变 剪贴板的内容, 包括从资源管理器中复制的文件的名称;   关闭或屏蔽 Windows自有的快捷键,如Win+E和Win+R;   取替Alt-Tab (通过按键、鼠标滚轮或按钮)从而减轻RSI(肢体重复性劳损 );   使用您喜欢的图标、工具提示(ToolTip)、菜项目和子菜来自定义 托盘图标菜 ;   显示 对话框、工具提示(Tooltips)、气球提示 以及 弹出菜,与用户交互;   执行脚本动作来 响应 系统关闭或注销;   检测系统 空闲时间。如, 在系统空闲的时候执行高CPU负荷的任务;   通过检测 图像 和 象素色彩来自动执行游戏中的动作;   读取、写入 以及 解释 文本文件比起其他语言更容易;   针对一组与 通配符 匹配的文件进行操作;   可对 注册表 和 INI文件 进行操作。   在 Windows 95/98/Me 下的一些限制:   一些 高级功能 -- 如鼠标热键和 热字串 -- 在Win9x 平台将失效。   你只要有想像力,它可以完成更多工作。
AutoHotkey_L 1.0.90.00 中文帮助0116版说明 AutoHotkey_L 是由 Lexikos 维护的一个 AutoHotkey 定制版本. 此中文帮助基于 AutoHotkey_L 1.0.90.00 的英文帮助, 在原 Basic 中文帮助 (准中文版) 基础上翻译及更新了 49 个文件, 翻译和更新详情参见中文论坛. 关于此帮助的意见和看法, 请至中文论坛进行反馈, 我将对其中的错误积极进行修正. 使用提示: 中文帮助总是滞后于英文帮助, 所以最新的帮助请以英文帮助为准. 学习使用 AutoHotkey 时帮助是不错的参考手册, 希望大家用好. 把英文帮助放在与此帮助相同目录并改名为 AutoHotkey_L.chm, 这样方便在使用时进行中英文对照. 帮助的初步翻译终于出来了, 希望大家在看到帮助后能觉得之前漫长的等待是值得的. 翻译/校对等其实是个体力活, 在这个过程中, 作者的热情和大家的期盼给我一些鼓舞(翻译中不时发现的一些细节也让我像看到彩蛋一样惊喜), 而且让我感到开心的是, 收获也不少, 更重要的是能给大家带来一些方便. 对于新版本的跟进, 目前大致决定是可能需要主版本号较大更新时才跟进, 所以最新的帮助请参阅英文帮助, 希望大家谅解. 尽管在翻译中我努力做到认真谨慎, 但这个帮助还是存在一些已发现问题和未知问题, 而需要完善. 补充一句, 尽管帮助不完美, 但我们的每次更新都向完美靠近一步. 已知的问题: 1. 许多示代码中多行代码被合并在一行中 2. 某些标签中含有下划线的内容翻译不太流畅 3. 部分关于对象的地方翻译的比较糟糕 问题较多, 就当预览版或体验版吧, 这些问题正在逐步修正和完善中. 由于目前作者持续进行小幅度更新, 所以对于新版本的跟进可能会在这些问题基本修正之后进行.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值