Photoshop 23.5之后的版本支持运行.psjs格式的脚本文件,通过adobe模块,选择执行js脚本文件,然后填写psjs脚本文件的路径,可以运行成功。
不知道是否可以增加一个操作类型“执行psjs脚本”,这样就不用额外写一个脚本文件在外面了。
不太清楚有没有开放接口,等研究下看看。 直接把psjs代码放入之前执行js的地方报错么?
直接放入代码执行js会报错,被识别成jsx代码了。
查了一下AI,目前是这样的情况,可能未来需要写一个插件通信才行?
直接回答:
没有提供专门针对 C# 的全新 COM/API 接口(例如没有 DoUXPScript 这样的新方法)。
Photoshop 的外部自动化接口(COM/ActiveX)在 23.5+ 版本中依然沿用旧版的 Photoshop.Application 和 DoJavaScript。Adobe 目前的开发重心是 UXP 插件内部的生态(如插件与宿主的通信),而不是扩展外部的 COM 接口。
Photoshop.Application
DoJavaScript
但是,利用 23.5 版本引入的 .psjs 文件关联特性,你现在有 2 种新的方式 让 C# 运行 UXP 代码,而不仅仅是依靠旧的“桥接”方法。
.psjs
这是目前在 C# 自动化项目中最稳妥的方式。虽然接口没变,但 app.doScript 的底层逻辑更新了。
app.doScript
C# 代码示例:
Photoshop 23.5+ 注册了 .psjs 的文件关联。如果你的 C# 程序不需要等待返回值(即“发射后不管”),可以直接通过 Process.Start 唤起 Photoshop 执行脚本。
Process.Start
如果你需要 C# 和 UXP 进行复杂的双向数据交换(COM 接口很难做到这点,因为它无法直接获取 UXP 的异步返回值),Adobe 官方推荐的做法是:
编写一个 UXP 插件(而不只是脚本),在 Photoshop 启动时在后台运行。
插件内开启一个 WebSocket Server (ws://localhost:xxxx)。
C# 客户端 连接这个 WebSocket 发送指令。
这种方式绕过了 COM 接口的限制,是目前最现代化、性能最高的跨进程自动化方案。
你可以通过观看以下视频了解 UXP 脚本的基本运行机制,虽然是手动演示,但其原理与 C# 调用的逻辑一致:
该视频由 Adobe 官方发布,简要演示了 Photoshop 23.5 引入的 .psjs 脚本拖拽运行和弹窗功能,验证了新引擎的执行行为。
官方没有开放外部执行代码的接口,现在调试UXP代码只有通过 Adobe UXP Developer Tools 这个方法。所以只要能跑通就很好了(我先用C#模块尝试看看)
查了一下资料,还是只能本地生成psjs文件,运行再删除。😂