DAS 脚本窗口、对象与执行上下文
区分命名目标与当前焦点,理解属性读写的边界。
先取得对象,再检查、读取
Advanced Script · 只读与显示。 先打开命名 Montage,并确认已有报价。
$feWindow = GetWindowObj("feMontage");
$feBid = $feWindow.BID;
MsgBox($feBid);
$feWindow 指向窗口对象,$feBid 存的是执行到这一行时读取的数值。这个数值不是会自动刷新的订阅。
目标也是程序的一部分
裸命令通常在当前焦点窗口执行;命名对象让目标窗口明确下来。但窗口当前股票、账户、行情是否可用,仍然需要检查。给 Montage 命名不会把它的内容固定住。
| 层次 | 例子 | 需要确认 |
|---|---|---|
| 窗口身份 | GetWindowObj("feMontage") |
已配置的唯一名称 |
| 对象检查 | $feWindow.ShowObject() |
当前 build 暴露的字段 |
| 属性读取 | $feWindow.BID |
报价含义与新鲜度 |
| 属性写入 | Montage 的 Price、Share |
界面输入发生变化 |
| 外部动作 | 提交或撤单 | 单独核对订单确认 |
动手练习:一次只改一个依赖
分别把焦点放在两个不同窗口,读取同一个命名 Montage。再改变该 Montage 的股票后重读,每次同时记录目标窗口和股票。关闭或重命名窗口应作为独立检查测试;在围绕它编写执行脚本之前,先确认失败行为。
显式目标不会自动改变后续语句的目标
$feWindow = GetWindowObj("feMontage") 只给变量赋了一个对象。它没有建立“从此所有裸命令都发往这个窗口”的作用域。每一条对象方法看接收对象,每一条裸命令看它的执行上下文;不要把两种规则混合。
对象引用也不是不可变快照。把对象赋给另一个变量,官方并没有因此承诺深拷贝。要保留某个观察时刻的数字,应读取具体字段并保存在自定义记录中,同时记录股票、账户和观察时间。后续 自定义对象 会明确记录的结构与生命周期。
缺失目标怎样排查
按顺序检查:窗口是否存在、名字是否完全对应、是否重复命名、是否恢复了另一套桌面、对象字段是否属于这种窗口、数据是否已加载。先手动恢复依赖,再做最小读取。没有文档契约时,不要写“找不到就返回空字符串”的兜底。
练习解答
把焦点切到另一个 Montage 后,显式读取 $feWindow.BID 和裸 Price= 不必指向同一处。检查的是每一条语句的目标,而不只是脚本第一行。把“脚本里出现过正确账户”当成所有后续动作都受它约束,是上下文错误。