はまったのでメモ:
環境
その1:ExportOptionsSaveForWeb の MatteColorの設定の仕方
NG: var val = new Photoshop.ExportOptionsSaveForWeb(); if( val.MatteColor == null) { val.MatteColor = new Photoshop.RGBColor(); }; val.MatteColor.Red = 16; val.MatteColor.Green = 128; val.MatteColor.Blue = 255;
↓ 実行時エラー:
System.Runtime.InteropServices.COMException (0x80040500): プロパティは初期化されませんでした at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Object[] aArgs, Boolean[] aArgsIsByRef, Int32[] aArgsWrapperTypes, Type[] aArgsTypes, Type retType) at Photoshop.ExportOptionsSaveForWebClass.get_MatteColor()
null ではないが、RGBでもない未定の状態(CMYKかもしれない)で、RGBを指定してしまっているのでエラーになっている・・・のか?
OK: var val = new Photoshop.ExportOptionsSaveForWeb() { MatteColor = new Photoshop.RGBColor() // ★ { Red = 16, Green = 128, Blue = 255, }, };
その2:DoJavaScriptFile の引数
スクリプトファイルを実行する関数
第2引数で、ファイルにパラメーターを渡せる
DoJavaScriptFile 1. JavaScriptCode (String) 2. [, Arguments] (Array) 3. [, ExecutionMode] (PsJavaScriptExecutionMode)
string の配列だとだめ???
NG(?): string[] sArray = new[] { "a", "b" }; ps.App.DoJavaScriptFile(JsPath, sArray, Photoshop.PsJavaScriptExecutionMode.psDebuggerOnError);
Adobe フォーラムで検索
ここを参考に:
object の配列にしたらできた
OK: string[] sArray = new[] { "a", "b" }; var cArray = sArray.Cast<object>().ToArray(); ps.App.DoJavaScriptFile(JsPath, cArray, Photoshop.PsJavaScriptExecutionMode.psDebuggerOnError);
おわり