Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   jsx Скрипт для Фотошопа (https://javascript.ru/forum/events/56809-jsx-skript-dlya-fotoshopa.html)

AndrewSt 05.07.2015 11:32

jsx Скрипт для Фотошопа
 
Здравствуйте, Господа специалисты!
Прошу помощи в решении след. задачи!
Необходимо запустить эксель через командную строку после выполнения экшена в фотошопе. Данную задачу реализую с помощью скрипта в фотошопе - .jsx. Скрипт испоняется, на запуске командной строки дает ошибку

#target photoshop

// ================== выполняем свой экшен
var idPly = charIDToTypeID( "Ply " );
var desc4 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref2 = new ActionReference();
var idActn = charIDToTypeID( "Actn" );
ref2.putName( idActn, "Logo" ); // имя экшена
var idASet = charIDToTypeID( "ASet" );
ref2.putName( idASet, "MyNew" ); // имя набора для экшена
desc4.putReference( idnull, ref2 );
executeAction( idPly, desc4, DialogModes.NO );

// =после выполнения экшкнена необходимо запустить макрос в экселе через командную строку
// в запуске командной строки возникли сложности не фурычит

var Excel = new ActiveXObject("Excel.Application");
Excel.Run ("'d:\Macros\Macros.xlam'!Foto"); // путь к макросу

kostyanet 06.07.2015 06:23

А это точно что фш-ский интерпретатор допускает такоэ? Проверьте что в переменной Excel сперва.

И еще, тут типа веб-инкарнация жабы, вам лучше на этот форум пойти ps-scripts.com

PS Сдох, оказывается, тот форум, ну надо же, хороший был.

kostyanet 06.07.2015 06:35

Сделайте наоборот. В макросе екзеля заведите объект ФШ и через нормальный интерфейс запуска экшна - запускайте экшн.

Скриптинг ФШ понимает и VBA, что позволяет интегрировать в макросы команды полученные из ScriptListener'a - ну все эти чудесные стеко-забивалки как у вас в цитате.

Нашел пример в старинных проектах:

Код:

Public Sub psFillLayerByType(fillType As psFillBkgFrgColors)
Dim objApp As New Photoshop.Application
Dim desc11 As New Photoshop.ActionDescriptor
Call desc11.PutEnumerated(objApp.CharIDToTypeID("Usng"), _
                            objApp.CharIDToTypeID("FlCn"), fillType)
Call objApp.ExecuteAction(objApp.CharIDToTypeID("Fl  "), desc11, 3)
End Sub



Часовой пояс GMT +3, время: 02:07.