OS:Windows Server 2003
開発環境:VisualStudio2005 TeamEdition
実行環境:Photoshop CS
Photoshop用プラグインの開発方法に関して記します。
対象とするのは、Windows版のみです。
基本的に、Windows版プラグインはDLLとして実装され、PluginMain()関数がmain()代わりになります。
まずは、以下サイトの通りPhotoshopSDKを入手します。
http://support.adobe.co.jp/faq/qadoc/spitz.nsf/a2eb70004ad8915849256d49000a66c5/32c86c46bc3557bb49256e5c0006483a?OpenDocument
現在は、Adobeへの申請(英語)を行わないと入手できないようです。
以下参考にしたサイト
http://hp.vector.co.jp/authors/VA025246/psplugin/main.html
http://www.nminoru.jp/~nminoru/programming/acrobat/
開発環境に関して、
http://support.adobe.co.jp/faq/faq/qadoc.sv?4965+001
によると、PhotoshopCS2SDKの開発環境は「Visual Studio .NET 2003(7.1以降)」
との事ですが、諸事情により今回は「Visual Studio 2005」を使用します。
※というか、実際に使ってるのはPhotoshopCSSDKですが^^;
それでは、以下が実際の作業工程となります。
(設定が間違っていたり必要ない可能性もありますので、ご了承下さい。
ディレクトリ設定は適宜環境に適した設定を行います。)
新しいプロジェクトの作成→VisualC++→MFC→MFC DLL
DLLの種類:MFC をスタティックにリンクした通常のDLL
追加の機能:全てチェックをはずす
【各種プロパティ設定】
追加のインクルードディレクトリ:
..\..\Adobe Photoshop CS SDK\PhotoshopAPI\Photoshop,..\..\Adobe Photoshop CS SDK\PhotoshopAPI\PICA_SP,..\..\Adobe Photoshop CS SDK\PhotoshopAPI\General,..\..\Adobe Photoshop CS SDK\samplecode\Common\Includes
出力ファイル:
C:\Program Files\Adobe\Adobe Photoshop CS\プラグイン\TestPlugin.8bf
プリプロセッサ定義:
(更新)ISOLATION_AWARE_ENABLED;USING_MFC;WIN32;_DEBUG;_WINDOWS;_USRDLL
↑
(元)WIN32;_WINDOWS;_DEBUG;_USRDLL
TestPlugin.def内の以下を修正。
(元) LIBRARY "プロジェクト名"
(更新)LIBRARY "TestPlugin.8bf"
追加したリソースファイル(.r)のプロパティで、
コマンドラインに以下を記入。
cl /ICommon\Resources /ICommon\Includes /IPhotoshopAPI\Photoshop /IPhotoshopAPI\PICA_SP /EP /DWIN32=1 /Tc"$(InputPath)" > "$(IntDir)\$(InputName).rr"
resources\cnvtpipl.exe "$(IntDir)\$(InputName).rr" "$(IntDir)\$(InputName).pipl"
del "$(IntDir)\$(InputName).rr"
以下ディレクトリは、プロジェクトファイルと同一の場所にコピーしておきます。
Common
PhotoshopAPI
resources
(↑楽なのでコピーしているだけで、別にしなくてもいいです)
出力ファイル:
$(IntDir)\$(InputName).pipl
/**********************************/
デバッグを実行しようとすると以下の設定を求められます。
実行可能ファイル名:
C:\Program Files\Adobe\Adobe Photoshop CS\Photoshop.exe
こちらは、Photoshop本体のexeを指定します。
デバッグの引数に予め画像のパスを設定しておけば、勝手に試験用画像を開いてくれるので楽です。
【ちょっとはまった問題】
”必要なアプリケーションライブラリでエラーが検出されたため、続行できません。アプリケーションを再インストールしてください。”
というダイアログが出て、アプリが終了してしまう。。。orz
その後Photoshop単体で起動すると普通に立ち上がるので、デバッグ時だけの問題と思われる。。。
確認してみると、Photoshop CSと.NET2003でも発生する。
別のPCでPhotoshop7.0と.NET2003で動かしたら発生しない。
CSの問題なのかな?
デバッガのタイプがデフォルトでは”自動”になっていて、この設定だとネイティブで動作する。
これを、マネージに変更するとエラーは出ない。
デバッガの機能とPhotoshopの相性の問題ぽいけど、これでちゃんとデバッグできるんかね。。。
#と思ってたら、やっぱりデバッグはできないみたいね。。。
試しにデバッグ中断してみると、
”実行を中断できません。このプロセスは、デバッグするように選択したコードの種類を現在実行していません。”
というふうにエラーが表示されますね。。。
そりゃそうか、Photoshopはネイティブで動いてるわけで。。。
試しにCS2(体験版)で試してみたところ、エラーが出る前に立ち上がらない。。。
うーん、これはどうしたものかねぇ。
仕方ないので、いったん保留にして、デバッグは7.0を使用する事にします。
さてさて、とりあえずデバッグ問題は置いといて、当然(?)のごとく新規で作成したプラグインは認識されません^^;
環境が認識されていないような感じです。。。
そこで、リソースファイルのインクルードに以下のファイルを追加します。
#include "TestPlugin.pipl"
おー、Photoshop上で追加したプラグインを認識しました!
ちょっとした感動ですね。
>>>次回に続く(予定)

