博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[基础] AHK函数对象系列-绑定函数对象v2
阅读量:6702 次
发布时间:2019-06-25

本文共 1605 字,大约阅读时间需要 5 分钟。

AB002-[基础] AHK函数对象系列-绑定函数对象

一开始的时候主要是围绕着实现HotKey调用函数时传参来说的,群里的小伙伴觉得这个不过瘾,想让我举出更多的例子。今天编程的时候正好用上了,那我就在后面写一个案例分析。

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

绑定函数对象介绍

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

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

除了函数对象带来的便利,它的主要作用就是可以给参数固定具体的数值。

这两点结合就可以实现为在"在HotKey命令中给带有参数的函数注册热键"。

绑定函数对象的生成

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

实例1:用HotKey给带有参数的函数注册热键

^l:: ;#按下Ctrl+L触发程序;#把一个Bind对象放入变量中;## 首先我们使用"Func()函数"返回一个"Func函数对象",之后我们调用此对象内的"Bind()方法"返回一个"Bind函数对象"P0:=Func("TestFunc").Bind("传参成功");#通过hotkey注册,实现传参Hotkey,^p ,%P0%;# 用于测试的函数TestFunc(Param:="没有传参"){MsgBox,% Paramreturn}return

实例2:函数的动态调用实现传参

程序设计目的: 按下某快捷键,调用" ExActivateAndOpen "函数,搜索标题中带有"- 笔记.itmz"窗口,如果存在则激活,如果不存在则调用"JumpAndSearch"函数,跳转到Everthing,并且填入内容(input提示输入,自动加入符合Everthing语法的前缀),以搜索带有"- 笔记.itmz"的文件。 BindFunctionObject在这个案例中的作用: 如果没有"绑定函数对象",那么只是用普通的"动态函数调用",不能传递参数,所以需要重新额外搞一个特殊"函数",而不能直接用"JumpAndSearch",降低了程序模块化程度/可读性/开发效率。

由于知乎的代码块无法自动换行,造成阅读的不便,贴上代码图片。(Lib太长了,放在后面的文字中)

但是最好的阅读方式是复制完整代码,放到您常用的编辑器中阅读。

实例2:代码图片

clipboard.png

AHK中的三种复用

AHK中最简陋的复用是"标签",由于不能传递参数,所以对不同的数据进行处理时,非常蹩脚;其次是"函数",在原来"标签"的基础上实现了"传参"和"返回值";然后是"对象",对象把"数据域/方法"封装在了一起。关于各种对象的应用是从11.20.00之后才开始完善的,到现在好像还在继续。

通过三者的递进关系,可以看出AHK变得越来越"面向对象",通过不断的改进,相信AHK在编写相对大型的项目时,会更加得心应手。

更多文章

我是Java/AHK持续学习者,欢迎您来和我探讨Java/AHK问题 ^_^

更多文章:

问题解答:

版权声明:

该文章版权系“心如止水”所有,欢迎分享、转发,但如需转载,请联系QQ:2531574300,得到许可并标明出处和原链接后方可转载。未经授权,禁止转载。

文章版本:

v2_11月20日 新增 实战案例-AB002-1

AHK版本:1.1.30.00

clipboard.png

你可能感兴趣的文章
hdu - 3415 Max Sum of Max-K-sub-sequence
查看>>
JadClipse eclipse反编译插件
查看>>
struts2中文件上传
查看>>
男性早孕-从软件与程序的区别说起
查看>>
Windows 恢复环境(Windows RE模式)
查看>>
基于Annotation的输入校验
查看>>
Kinect for windows开发准备
查看>>
SQL Server 2012 官方培训课程体系
查看>>
为什么恍然大悟与知识管理的几个感触:人艰不拆
查看>>
Microsoft Azure Site Recovery (1) 安装服务器代理
查看>>
Vmware view 5.0 POC环境搭建参考v1.0
查看>>
程序员娶妻子的经典准则
查看>>
【点评】运维工程师的职责和前景 【第一次编辑】
查看>>
smarty配置以及变量调节器详解
查看>>
rman备份恢复命令之switch
查看>>
技术合作 索尼腾龙联手申请镜头专利
查看>>
关于 MySQL 8.0 新特性“隐藏索引”的一点思考
查看>>
使用Spring Data Redis操作Redis(二)
查看>>
Cisco c3560三层交换机配置
查看>>
SystemCenter2012SP1实践(33)离线申请证书与远程桌面证书
查看>>