2017-02-08 10 views
0

Выйти на конечность здесь. Есть ли способ для Photoshop VBScript вызывать файл JavaScript?VBScript для вызова JavaScript

Или, по крайней мере, передать некоторый пользовательский ввод (переменная или возврат из функции) из одного сценария в другой.

Моей причиной? У меня возникли аналогичные проблемы, заданные в этом question, и рассмотрели интерфейс VBScript для управления сценарием Photoshop. Повторная запись существующего jsx в VBS на самом деле не является вариантом.

Вот что у меня есть. Этот простой VBScript просит пользователя ввести свое имя, которое затем создается как текст во втором скрипте.

VBScript

' Ask User for input 
Dim appRef 
Set appRef = CreateObject("Photoshop.Application") 

Dim askName : askName = InputBox("Enter name: ") 

JavaScript

// create a document to work with 
var docRef = app.documents.add(200, 100, 72, "Hello"); 

// Create a new art layer containing text 
var artLayerRef = docRef.artLayers.add(); 
artLayerRef.kind = LayerKind.TEXT; 

// Set the contents of the text layer. 
var textItemRef = artLayerRef.textItem 
textItemRef.contents = "Hello " + askName 

Что мне нужно соединить два вверх?

ответ

2

У меня нет опыта написания сценариев с помощью Photoshop, некоторые исследования.

Следующий код был протестирован с Adobe Photoshop® CS6.

PsJavaScriptExecutionMode Константы перечисления извлекаются из scriptingsupport.8li (Библиотека объектов Adobe Photoshop CS6) с помощью Microsoft OLE/COM Object Viewer.

VBScript:

'PsJavaScriptExecutionMode Enums 
Const psNeverShowDebugger = 1, psDebuggerOnError = 2, psBeforeRunning = 3 

Dim appRef 
Set appRef = CreateObject("Photoshop.Application") 

Dim askName 
    askName = InputBox("Enter name: ") 

appRef.DoJavaScriptFile "C:\scripts\myPSscript.jsx", Array(askName), psNeverShowDebugger 

JavaScript (myPSscript.jsx):

// create a document to work with 
var docRef = app.documents.add(200, 100, 72, "Hello"); 

// Create a new art layer containing text 
var artLayerRef = docRef.artLayers.add(); 
artLayerRef.kind = LayerKind.TEXT; 

// Set the contents of the text layer. 
var textItemRef = artLayerRef.textItem 
var askName = arguments[0]; // first argument passed from VBScript 
textItemRef.contents = "Hello " + askName; 

Надеется, что это помогает.


Adobe® Creative Suite® 5 Photoshop® Scripting Guide

+0

Это сработало! - до тех пор, пока у вас нет VBscript & PScript, называемого тем же, что и test.vbs & test, jsx –

+0

@GhoulFool Извините, я не мог понять. Тогда в чем вопрос? –

+0

Без вопросов. Это все хорошо :) Код работал. Но в первый раз, когда я попробовал, я назвал оба файла теми же C: \ scripts \ myPSscript.jsx & C: \ scripts \ myPSscript.vbs и что придумал ошибку. Переименовывая VBS в C: \ scripts \ myscript.vbs Это имеет смысл сейчас? –

 Смежные вопросы

  • Нет связанных вопросов^_^