锚点-窗体定位

当我们按下“录制热键”(默认为Ctrl+Alt+J)以后,模拟精灵等待您在有效窗体上按任意键或点击鼠标。
当检测到第一个有效的鼠标或按键指令以后,模拟精灵会记录目标窗体的一些定位参数,例如标题、类名等等。
回放的时候,通过这些记录的窗体信息“自动定位”到同样的窗体,保证所有的鼠标按键指令发送到正确的窗体。

在按下“停止热键”(默认为Ctrl+Alt+L)完成一个模拟区块以后。
打开“模拟区块-->锚点-->目标窗体”可以看到录制的窗体参数。
您可以对这些参数进行修改。

通常,我们需要修改“目标窗体-标题包含”这个参数,因为很多程序的标题都有可能是动态修改的。
那么可以在“目标窗体-标题包含”里指定标题中绝对会包含的字符串即可。

“目标窗体”有可能会有两个子节点。

  1. 指向控件
    在录制并创建锚点时,模拟精灵会检测当前鼠标指向的控件。如果发现一个有效的控件,将会添加这个定位节点。

  2. 目标控件
    录制并创建锚点时,模拟精灵会检测当前拥有焦点的控件。如果发现一个有效的控件,将会添加这个定位节点。
    目标控件通常是一个“按钮”或者一个“文本框”。

注意:如果在录制过程中出现新的窗体(例如一个对话框),一定要再次按下“录制热键”(默认为Ctrl+Alt+J)创建新的“模拟区块”,
并在新的对话框上执行鼠标键盘动作以创建新的锚点。为这个新的窗体增加自动定位功能

您也可以点击“设置-->录制选项”,点选“当目标窗体改变时自动创建新的锚点”。



常见问题:为什么回放的时候提示找不到目标窗体?

在回放提示锚点中的哪个节点检测失败你就修改哪个节点,
例如有些窗体的标题是会变的,例如QQ好友聊天的窗口标题“与829056聊天”,这里面的829056是会变的,把“标题包含”改成“聊天”就可以了。

也可以删除锚点中检测失败的节点。
例如:“目标控件”这个节点在大多数不需要自动发送文本的模拟区块中是多余的,检测失败可以删除。
目标窗体、目标控件、指向控件这些节点都可以删除

锚点的相关参数都可以通过修改为空从而在“自动定位”时忽略此参数,例如程序名字、标题包含、类名、输入法这些都可以清空。
清空相应的参数指示模拟精灵在查找窗体时忽略这些条件.

通常在游戏里,我们大多并不需要"锚点-->目标窗体"这个节点.
因为在游戏里大多时候始终只有一个主窗体,为了稳定运行,可以删除"锚点-->目标窗体"

在「fap模拟程序」中,在每个「模拟区块」后面的「脚本区块」,可以用下面的函数获取前面执行过的「模拟区块」相关句柄。

m = ape:getModule("模拟区块名字");
hwnd = m:getWindow(); --读取「目标窗体」句柄
hwnd = m:getCtrl(); --读取「目标控件」句柄
hwnd = m:getCtrlX(); --读取「指向控件」句柄