You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JXA通过System Events设置进程窗口bounds报错-10006如何解决

报错原因

你通过System Events获取到的是UI进程代理对象,它暴露的窗口bounds属于UI元素属性,默认仅支持读取,要修改窗口边界必须操作对应应用本身的JXA实例对象,这就是-10006错误的本质原因。

解决方案

你动态匹配到目标进程后,通过进程的pid或者bundle ID动态实例化对应应用的脚本对象,再操作该对象的窗口属性即可,示例代码如下:

// 引入System Events
const systemEvents = Application('System Events');

// 这里替换为你自己的动态匹配进程逻辑,可按窗口标题、进程名、pid等任意条件匹配
const matchedProcess = systemEvents.processes.whose({
  // 示例条件:匹配窗口标题包含"某关键词"的进程,按需修改
  windows: { name: { _contains: "目标窗口关键词" } }
})[0];

// 用匹配到的进程pid精准实例化对应的应用对象,多开同bundle应用的场景也不会出错
const targetApp = Application.byId(matchedProcess.unixId());

// 设置第一个窗口的bounds,格式为[左, 上, 右, 下]
targetApp.windows[0].bounds = [100, 50, 1000, 700];

注意事项

  • 执行脚本的主体(终端、自动化工具等)需要提前在「系统设置→隐私与安全性→辅助功能」中开启权限,否则会触发权限类报错
  • 如果需要匹配多窗口,可遍历targetApp.windows和matchedProcess.windows的id属性做对应,保证操作的是目标窗口

内容的提问来源于stack exchange,提问作者Tyler Liu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:36:03