可以对比以下v2原版示例和v1调用的差别,此v1函数可以轻松的兼容并直接调用v2的函数库

【V2】UIAutomation类库-简化版

 

v1直接调用v2版UIA函数代码片段+调用方法:

#Requires AutoHotkey v1.1.33+
#SingleInstance Force
#Include <v2Lib>  ; 修改至:https://www.autohotkey.com/boards/viewtopic.php?f=6&t=98917
SetBatchLines -1
SetWorkingDir %A_ScriptDir%

; 以下新建两个V2临时进程,一个用来给F1热键调用反馈,另一个读UIA信息
V2调用变量1 := v2Lib("test函数(a){`nMsgBox a`n}")  ; 支持自动读取已安装的V2解释器安装路径
V2 := v2Lib(A_ScriptDir "\Lib\UIAutomation类库.ahk2", "C:\Program Files\AutoHotkey\v2\AutoHotkey64.exe")  ; 也可以参2指定V2解释器路径

; 调用V2的UIA类库:https://www.ahk66.com/833
ele := V2["UIA"].ElementFromHandle(WinExist("A")) ; 获取窗口元素【V1调用写法】
; ele := V2["UIA"].ElementFromPoint(100 | 200 << 32) ; 获取屏幕坐标 100, 200 的元素
; ele := V2["UIA"].GetFocusedElement() ; 获取当前具有键盘焦点的元素

; UIA基本属性的获取:
; ele := UIA.ElementFromHandle(WinExist("A"))   ; 原版V2写法参考
MsgBox % "窗口标题名:" ele.Name
MsgBox % "窗口Class名:" ele.ClassName
pos := ele.BoundingRectangle
MsgBox % "left:" pos.left "`ntop:" pos.top "`nright:" pos.right "`nbottom:" pos.bottom
Return


F1::V2调用变量1.test函数.Call((onoff := !onoff) ? "调用V2传参测试1111" : "调用V2传参测试2222")

F3::V2.MsgBox.Call("让V2解释器进程MsgBox弹窗")

; 在目标库中调用一个名为 "Function"的函数。
; V2.Function.Call(params)
; V2.Function.Call

; 获取V2的一个全局变量
; value := V2["VarName"]
; value := V2.VarName

; 对V2的一个全局变量赋值
; V2["VarName"] := value
; V2.VarName := value

; 创建一个类的实例
; value := V2["ClassName"].Call(params)
; value := V2.ClassName.NestedClass.Call(params)

; ; 设置__项目道具 set __Item prop `a := [[1]]`
; V2.SetItem(V2.a[1], 22222, 1) ; a[1][1] := 22222

; ; 获得__项目道具 get __Item prop
; V2.GetItem(V2.a[1], 1)	; 22222

 

dbgba优化版+v2.UIA示例打包下载:

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。