【问题标题】:How do I run code generated by the Photoshop ScriptListener plugin?如何运行 Photoshop ScriptListener 插件生成的代码?
【发布时间】:2019-04-01 16:56:53
【问题描述】:

我在运行 ScriptListener 插件记录的代码时遇到问题。我已将命令从日志复制到 Extendscript Toolkit CC,但无论何时我运行它们(无论是否是函数)它们都会在 executeAction 代码行中失败并说“此功能可能在此版本中不可用的 Photoshop"

这是我要运行的代码:

function pasteAsPath() {
    var idinvokeCommand = stringIDToTypeID( "invokeCommand" );
    var desc32 = new ActionDescriptor();
    var idcommandID = stringIDToTypeID( "commandID" );
    desc32.putInteger( idcommandID, 105 );
    var idkcanDispatchWhileModal = stringIDToTypeID( "kcanDispatchWhileModal" );
    desc32.putBoolean( idkcanDispatchWhileModal, true );
    executeAction( idinvokeCommand, desc32, DialogModes.NO );

    // =======================================================
    var idmodalStateChanged = stringIDToTypeID( "modalStateChanged" );
    var desc33 = new ActionDescriptor();
    var idLvl = charIDToTypeID( "Lvl " );
    desc33.putInteger( idLvl, 1 );
    var idStte = charIDToTypeID( "Stte" );
    var idStte = charIDToTypeID( "Stte" );
    var identer = stringIDToTypeID( "enter" );
    desc33.putEnumerated( idStte, idStte, identer );
    var idkcanDispatchWhileModal = stringIDToTypeID( "kcanDispatchWhileModal" );
    desc33.putBoolean( idkcanDispatchWhileModal, true );
    var idTtl = charIDToTypeID( "Ttl " );
    desc33.putString( idTtl, """Paste""" );
    executeAction( idmodalStateChanged, desc33, DialogModes.NO );

    // =======================================================
    var idmodalStateChanged = stringIDToTypeID( "modalStateChanged" );
    var desc34 = new ActionDescriptor();
    var idLvl = charIDToTypeID( "Lvl " );
    desc34.putInteger( idLvl, 0 );
    var idStte = charIDToTypeID( "Stte" );
    var idStte = charIDToTypeID( "Stte" );
    var idexit = stringIDToTypeID( "exit" );
    desc34.putEnumerated( idStte, idStte, idexit );
    var idkcanDispatchWhileModal = stringIDToTypeID( "kcanDispatchWhileModal" );
    desc34.putBoolean( idkcanDispatchWhileModal, true );
    var idTtl = charIDToTypeID( "Ttl " );
    desc34.putString( idTtl, """Paste""" );
    executeAction( idmodalStateChanged, desc34, DialogModes.NO );

    // =======================================================
    var idpast = charIDToTypeID( "past" );
    var desc35 = new ActionDescriptor();
    var idAs = charIDToTypeID( "As  " );
    var idPath = charIDToTypeID( "Path" );
    desc35.putClass( idAs, idPath );
    executeAction( idpast, desc35, DialogModes.NO );
}

在 Extendscript Toolkit CC 中,我的目标是 Photoshop,并且在脚本文件的顶部也有 #target photoshop,但它总是在 executeAction 处失败。未记录的命令可以正常工作,只有当我运行记录的命令时才会出错。

有人知道为什么会这样吗?我一直在查看文档、SO 和博客,但找不到完成此任务的方向,因此我们将不胜感激。

【问题讨论】:

    标签: javascript adobe photoshop extendscript photoshop-script


    【解决方案1】:

    尝试删除所有 invokeCommandmodalStateChanged 块。从脚本启动时,它们不会做任何事情:我认为它们只是在 CC2015 之后才开始出现。基本上那些只是表明有一个模式窗口出现然后被关闭。

    【讨论】:

    • 删除您建议的代码效果很好,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-08-18
    • 2014-02-15
    • 2022-10-02
    • 2014-09-03
    • 2020-07-23
    • 1970-01-01
    • 2012-03-23
    相关资源
    最近更新 更多