2017-02-08 46 views
0

在這裏出現在肢體上。有沒有一種方法可以讓Photoshop VBScript調用JavaScript文件?調用JavaScript的VBScript

或者至少將一些用戶輸入(函數的變量或返回值)從一個腳本傳遞到另一個腳本。

我的理由是?我在question中遇到了類似的問題,並考慮使用VBScript UI來驅動一個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的腳本經驗,做了一些研究。

以下代碼已經過AdobePhotoshop®CS6測試。

PsJavaScriptExecutionMode enum常量是通過使用Microsoft OLE/COM Object Viewer從scriptingsupport.8li(Adobe Photoshop CS6 Object Library)中提取的。

的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調用相同的ie test.vbs&test,jsx –

+0

@GhoulFool抱歉,我無法理解。那麼問題是什麼? –

+0

沒問題。這一切都很好:)代碼工作。但我第一次嘗試將兩個文件命名爲相同的C:\ scripts \ myPSscript.jsx&C:\ scripts \ myPSscript.vbs,並且出現錯誤。通過將VBS重命名爲C:\ scripts \ myscript.vbs現在有意義嗎? –