gpt4 book ai didi

c++ - 使用 Objective-C 获取 Photoshop 的 Action 列表

转载 作者:搜寻专家 更新时间:2023-10-31 01:21:35 25 4
gpt4 key购买 nike

我正在使用 C++ 和 Obj-C 为 OSX 编写一个与 Photoshop 交互的应用程序。

我一直在使用 NSAppleScript 和动态构建的 AppleScripts 来驱动 Photoshop(是的,这有点可怕......)我希望能够以不同的方式驱动 Photoshop,所以如果有人知道更好的方法,我愿意接受!不幸的是,我无法使用 ScriptingBridge,因为我无法将我的用户绑定(bind)到 Leopard。

大问题就在前一天晚上出现,当时我从 Photoshop 查询 Action 列表以显示给我的用户。显然,Photoshop 的脚本集成不会向 AppleScript 公开 Action 列表 API。这是我无法使用 ScriptingBridge 的第二个原因。

有谁知道我可以在我的 Obj-C/C++ 程序中访问 Photoshop 的 Action 列表的方法吗?奖励问题:有人知道我可以与 Photoshop 交互的更好方法吗?!

最佳答案

不确定如何使用 AppleScript 执行此操作,但您可以使用 AppleScript 调用此 JavaScript 以返回给定操作列表中的名称。我改编自“Image Processor.jsx”。

function GetActionList(folderName)
{
var setCounter = 1;
var actions = '';
var actionName;

gClassActionSet = charIDToTypeID( 'ASet' );
gClassAction = charIDToTypeID( 'Actn' );
gKeyName = charIDToTypeID( 'Nm ' );
gKeyNumberOfChildren = charIDToTypeID( 'NmbC' );

while ( true )
{
var ref = new ActionReference();
ref.putIndex( gClassActionSet, setCounter );
var desc = undefined;
try { desc = executeActionGet( ref ); }
catch( e ) { break; }
actionName = desc.getString( gKeyName );

var numberChildren = 0;
if ( desc.hasKey( gKeyNumberOfChildren ) )
numberChildren = desc.getInteger( gKeyNumberOfChildren );
if ( numberChildren )
{
if(actionName == folderName)
{
for ( var i = 1; i <= numberChildren; i++ )
{
var ref = new ActionReference();
ref.putIndex( gClassAction, i );
ref.putIndex( gClassActionSet, setCounter );
var desc = undefined;
desc = executeActionGet( ref );
if( desc.hasKey( gKeyName ) )
{
if(actions.length > 0)
actions = actions + ',' + desc.getString( gKeyName );
else
actions = desc.getString( gKeyName );
}
}
break;
}
}
setCounter++;
}
return actions;
}

关于c++ - 使用 Objective-C 获取 Photoshop 的 Action 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3672984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com