# aardio 范例: FlaUI 自动化 - 操作微信



```aardio
//FlaUI 自动化 - 操作微信
import FlaUI.UIA3;
 
//可使用『aardio 工具 » 探测器 » FlaUI 探测器』自动生成下面的代码。
//教程 https://mp.weixin.qq.com/s/uEJSete63SQgJYEHw2PacQ

/*
查找窗口
参数@1: 可指定EXE文件名、EXE路径、进程ID。
参数@2: 窗口类名，支持模式匹配语法。
参数@3: 窗口标题，支持模式匹配语法。
*/
var window = FlaUI.FindWindow("WeChat.exe","WeChatMainWndForPC","微信");

//上面的参数都是可选参数，以下写法都是可以的
//var window = FlaUI.FindWindow("WeChat.exe")
//var window = FlaUI.FindWindow( , ,"微信");
//var window = FlaUI.FindWindow( ,"WeChatMainWndForPC")
 
if(window){ 
	//前置窗口
	window.Focus();
	
	/*
	了解最简单的几个 XPath 语法规则：
	XPath 用斜杠分开节点，单斜杠 / 表示选择当前节点的子节点。
	两个斜杠 // 表示选择当前节点下面任意深度的后代节点（不要求位置是直接子节点）。
	如果路径开始于单个斜杠 / ，则表示从根节点开始查找。
	
	例如 "/Window/Edit" 表示找根节点的子节点 Window 的子节点 Edit。
	这里的 Window, Edit 指的是节点类型（ControlType）。
	
	下面用 XPath 查找输入框：
	*/
	var input  = window.FindFirstByXPath(`//Edit[@Name="文件传输助手"]`);
	/*
	上面的[@Name="文件传输助手"]用于指定节点的 Name 属性，
	属性置于方括号内并以 @ 字符作为名称前缀。
	可查询的属性有：AutomationId， Name，ClassName，HelpText 。
	可以用探测工具 FlaUInspect 查看这些属性。
	*/
	
	//上面的写法等价于下面的写法
    /*
	var input = window.FindFirstDescendant( 
		FlaUI.By( Name = "文件传输助手"; ControlType="Edit")
	)
    */

	//点击输入框
	mouse.click(input);
	
	//发送文本内容
	key.sendString("测试内容");
	
	//查找按钮
	var sendButton = window.FindFirstByXPath("//Button[@Name='发送(S)']"); 
	
	//转换为 button 控件
	var sentButton = FlaUI.AsButton(sendButton)
	
	//点击按钮
	sentButton.Invoke()
}
```

