PS【PhotoShop】实现拷贝到Windows粘贴板上

桌面创建一个.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 快捷键查看粘贴板内容:

相关推荐
qq_369224333 天前
Windows全系通用!ntdll.dll文件丢失、报错、闪退问题的完整排查与修复教程
windows·dll·dll修复·dll丢失·dll错误
阿米亚波3 天前
【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统 + 离线软件源
linux·windows·经验分享·笔记·架构·arm
caimouse3 天前
Reactos 第 10 章 网络操作 — 10.3.1 NIC驱动
网络·windows
初圣魔门首席弟子3 天前
Node.js 详细介绍(知识库版)
windows·qt·node.js·知识库
CHENG-JustDoIt3 天前
AI工具 | 爆火开源项目Odysseus AI 工作台:从项目介绍、部署情况及其使用等多方位分析指南(含详细步骤)
大数据·人工智能·windows·python·ai·开源·github
kingbal3 天前
Windows:flutter环境搭建
windows·flutter
未若君雅裁3 天前
Python 数据容器详解,list、tuple、str、set、dict 到底怎么选
windows·python·list
CodeKwang3 天前
Windows 环境 OCCT 8.0 编译构建及与 Qt6 项目集成
windows·qt·opencascade
我是伪码农3 天前
小兔鲜1-25
linux·服务器·windows
vx-Biye_Design3 天前
springboot安阳地区研学旅游服务小程序-计算机毕业设计源码12785
java·vue.js·windows·spring boot·tomcat·maven·mybatis