[基础] 在HotKey命令中给带有参数的函数注册热键 – AHK函数对象初窥①

HotKey估计是最常用的几个AHK命令了,主要功能是在运行过程中操作热键(关闭/开启等),比起静态的注册热键要灵活很多。但是,通过HotKey给"带有参数的函数"注册热键好像并不是那么显而易见,直接使用函数名会导致无法传递参数,其实这个需求可以用"绑定对象函数(BindFunctionObject)"来实现。

绑定函数对象介绍

"绑定函数对象(BindFunctionObject)"是"函数对象"(FunctionObject)的一种。

作为函数对象,它有以下特性,①可以使用%FunctionObject%(ParaMeters)的方法调用,②可以在很多原本只支持Label的地方使用(比如Menu/hotkey/GUI事件)

除了函数对象带来的便利,它的主要作用就是可以给参数固定具体的数值。
这两点结合就可以实现为在"在HotKey命令中给带有参数的函数注册热键"。

绑定函数对象的生成

对于可以获得引用的函数来说,直接用Func对象中的bind()方法即可。

实例

^l:: ;#按下Ctrl+L触发程序

	;#把一个Bind对象放入变量中
	;## 首先我们使用"Func()函数"返回一个"Func函数对象",之后我们调用此对象内的"Bind()方法"返回一个"Bind函数对象"
	P0:=Func("TestFunc").Bind("传参成功")

	;#通过hotkey注册,实现传参
	Hotkey,^p ,%P0%

	;# 用于测试的函数
	TestFunc(Param:="没有传参")
	{
		MsgBox,% Param
		return
	}
return

AHK中的三种复用

AHK中最简陋的复用是"标签",由于不能传递参数,所以对不同的数据进行处理时,非常蹩脚;其次是"函数",在原来"标签"的基础上实现了"传参"和"返回值";然后是"对象",对象把"数据域/方法"封装在了一起。关于各种对象的应用是从11.20.00之后才开始完善的,到现在好像还在继续。
通过三者的递进关系,可以看出AHK变得越来越"面向对象",通过不断的改进,相信AHK在编写相对大型的项目时,会更加得心应手。

本文来之心如止水

人已赞赏
AHKV1

[基础] 在AHK中实现函数重载

2018-11-7 21:27:41

AHKV1学习

AutoHotkey新手入门

2018-11-8 22:14:42

2 条回复 A文章作者 M管理员
  1. 河许人

    有精力的话我会给配一小段视频!陌辞寒的文章我也会陆续被转过来,到时候给你们一个合集!

  2. 河许人

    知乎专栏也做的不错! :mrgreen:

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索