技术问询:如何用AppleScript获取Visual Studio Pro窗口的位置与大小
获取Visual Studio Code窗口位置与大小的AppleScript解决方案
我来帮你搞定这个问题!你遇到的两个报错其实都是有明确原因的:
- 直接调用
Visual Studio Code的bounds属性失败,是因为VS Code本身的AppleScript接口并没有暴露窗口位置、大小这类属性,所以系统根本拿不到这个值。 - 用
System Events时报找不到进程,大概率是因为你运行AppleScript的工具(比如系统自带的「脚本编辑器」)还没获得「辅助功能」权限,另外也可以确认下进程名称(VS Code的进程名通常是Visual Studio Code,少数版本可能显示为Code)。
正确的实现方法
首先第一步,先给你的脚本工具开权限:
打开「系统偏好设置」→「安全性与隐私」→「隐私」标签,找到左侧的「辅助功能」,然后把你用来运行AppleScript的工具(比如「脚本编辑器」)添加进去并勾选。如果之前运行脚本时弹出过权限请求,直接允许也可以。
然后用下面的代码就能正常获取窗口信息了:
tell application "System Events" tell process "Visual Studio Code" -- 取窗口的坐标位置(x, y) set winPosition to position of window 1 -- 取窗口的宽高尺寸 set winSize to size of window 1 -- 转换成和bounds一致的格式:{x, y, x+宽度, y+高度} set winBounds to {item 1 of winPosition, item 2 of winPosition, item 1 of winPosition + item 1 of winSize, item 2 of winPosition + item 2 of winSize} -- 弹窗显示结果,你也可以改成自己需要的处理逻辑 display dialog "窗口位置: " & winPosition & return & "窗口大小: " & winSize & return & "Bounds格式: " & winBounds end tell end tell
额外的容错处理
如果担心VS Code没打开窗口导致报错,可以加个判断:
tell application "System Events" set vsCodeProcess to process "Visual Studio Code" if exists window 1 of vsCodeProcess then set winPosition to position of window 1 of vsCodeProcess set winSize to size of window 1 of vsCodeProcess set winBounds to {item 1 of winPosition, item 2 of winPosition, item 1 of winPosition + item 1 of winSize, item 2 of winPosition + item 2 of winSize} display dialog "窗口位置: " & winPosition & return & "窗口大小: " & winSize & return & "Bounds格式: " & winBounds else display dialog "Visual Studio Code目前没有打开的窗口哦" end if end tell
要是还是提示找不到进程,试试把process "Visual Studio Code"改成process "Code",部分版本的VS Code进程名会是这个。
内容的提问来源于stack exchange,提问作者Nrc
相关产品推荐
相关产品推荐

