2007年06月18日

Photoshop Plugin開発日記(Windows向け)

【開発環境】
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上で追加したプラグインを認識しました!
ちょっとした感動ですね。

>>>次回に続く(予定)
posted by はやむー at 15:24| Comment(0) | TrackBack(0) | Macなお話-実践編 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。