桌面创建一个.jsx脚本文件 PS - 脚本 - 浏览 ,执行脚本,可新建一个动作录制流程。


javascript
#target photoshop
function exportToTempAndCopyToClipboard() {
if (documents.length === 0) {
alert("没有打开的文档!");
return;
}
var doc = activeDocument;
// ============================================================
// 1. 核心改变:保存到系统 Temp 目录,并使用固定文件名
// ============================================================
var tempFolder = Folder.temp;
// 固定的文件名!每次执行都会自动覆盖,电脑里永远只有这一张缓存图,零污染
var fileName = "ps_to_windows_clipboard_backend.png";
var outputFile = new File(tempFolder + "/" + fileName);
var pngOptions = new ExportOptionsSaveForWeb();
pngOptions.format = SaveDocumentType.PNG;
pngOptions.PNG8 = false;
pngOptions.transparency = true;
try {
doc.exportDocument(outputFile, ExportType.SAVEFORWEB, pngOptions);
} catch (e) {
alert("生成临时图片失败: " + e);
return;
}
// ============================================================
// 2. 动态生成 .ps1 脚本(让 Windows 全局接管数据)
// ============================================================
var imgPathForPowerShell = outputFile.fsName.replace(/\\/g, "/");
var ps1File = new File(Folder.temp + "/ps_copy_bridge.ps1");
ps1File.open("w");
ps1File.encoding = "UTF-8";
ps1File.writeln("Add-Type -AssemblyName System.Windows.Forms");
ps1File.writeln("Add-Type -AssemblyName System.Drawing");
// 读取临时文件并强制驻留系统全局剪贴板
ps1File.writeln("$img = [System.Drawing.Image]::FromFile('" + imgPathForPowerShell + "')");
ps1File.writeln("[System.Windows.Forms.Clipboard]::SetDataObject($img, $true)");
// 给系统留出 500ms 的强行写入缓存时间
ps1File.writeln("Start-Sleep -Milliseconds 500");
ps1File.close();
// ============================================================
// 3. 执行内核指令(保持图片存在以供剪贴板调用,仅删除 ps1 脚本)
// ============================================================
var shellCommand = 'powershell.exe -WindowStyle Hidden -STA -NoProfile -ExecutionPolicy Bypass -File "' + ps1File.fsName + '"';
try {
// 阻塞执行,等待 PowerShell 写入完毕
app.system(shellCommand);
// 仅清理临时的 ps1 引导代码文件
if (ps1File.exists) {
ps1File.remove();
}
// 完美的成功提示
alert("成功:图片已写入 Windows 剪贴板!");
} catch (e) {
alert("调用 Windows 底层指令失败: " + e);
}
}
exportToTempAndCopyToClipboard();
实现思路:
先让PS存储一个png图像,获取图像路径(每次执行自动覆盖上张png图像,避免污染)
调用Windows的粘贴板API,传入图像路径
PS版本:2021
按 Win + V 快捷键查看粘贴板内容:
