aardio 文档

aardio 范例: 操作计算器

import winex;
import mouse;
import process; 
import System.Windows.Automation;

if(!_WIN10_LATER) error("此范例支持 Win10 以上版本的计算器")

//启动计算器
process.execute("calc.exe")

//等待计算器窗口激活
var hwnd = winex.waitActive("计算器",,"ApplicationFrameWindow")

//访问 .NET 类的静态成员
Automation = System.Windows.Automation;
AutomationElement = Automation.AutomationElement;

//查找计算器窗口
var calcWindow = AutomationElement.FromHandle(hwnd);

//等待创建按钮控件
var numButton1 = win.wait( function(){

    //查找数字 1 按钮
    return Automation.Find(calcWindow,{
        AutomationId = "num1Button" 
    })
})

//查找其他按钮(不需要再调用 win.wait 等待)
var numButton2 = Automation.Find(calcWindow,{
    AutomationId = "num2Button" 
})

//数字 3
var numButton3 = Automation.Find(calcWindow,{
    AutomationId = "num3Button" 
})

//加运算按钮
var addButton = Automation.Find(calcWindow,{
    AutomationId = "plusButton" 
})

//等于按钮
var equalButton = Automation.Find(calcWindow,{
    AutomationId = "equalButton" 
})

//点击数字按钮 1
var invokePattern = numButton1.GetCurrentPattern(Automation.InvokePattern.Pattern);
invokePattern.Invoke();

//点击 + 按钮 
var invokePattern = addButton.GetCurrentPattern(Automation.InvokePattern.Pattern);
invokePattern.Invoke();

//点击数字按钮 2
var invokePattern = numButton2.GetCurrentPattern(Automation.InvokePattern.Pattern);
invokePattern.Invoke();

//用鼠标点击等号按钮,mouse 库函数直接支持以 .NET 控件作为参数
mouse.click(equalButton);

//也可以用参数 1,2 指定控件内部的相对 x,y 坐标 
mouse.click(2,3,equalButton);

//显示结果的节点
var resultText = Automation.Find(calcWindow,{
    AutomationId = "CalculatorResults" 
}) 

//获取结果
var text = resultText.Current.Name;
var num = string.match(text,"[\d\,]+");
num = string.replace(num,",","");

//输出结果
print(resultText.Current.Name)




Markdown 格式