Windowsストア版Photoshop ElementsとLIGHTROOMの連携が出来た

スポンサーリンク

先日、下記の記事

Windowsストア版 Photoshop Elements 15 で問題発生!
先日、ストアアプリ版のAdobe Photoshop Elements 15を買ってみたと言う話をしましたが、早速、問題発生。とは言っても画像編集ソフトとしてのPSE15がどうこうと言う事ではなくて、デスクトップアプリ版ではなくてストアアプ...

で、Windowsストア版のPhotoshop Elements 15がLIGHTROOMと連携出来ないと言う事を書いたんだけど。実はあれからなんとか出来ないか、色々やってみた。結論から先に言うと、一応、LIGHTROOMとWindowsストア版Photoshop Elements 15の連携は出来るようになりました。

Adobe Photoshop Elements 15

Windowsストア版 Adobe Photoshop Elements 15

どうやったかと言うと、C#でちょっとしたミドルウェア的なものを作って、そいつに仲介をさせるようにしました。LIGHTROOMは外部編集追加外部エディターの登録に、実行ファイルのフルパスファイル名を求める(拡張子にも制限がある)ので、C#で作ったデスクトップアプリ(.exe)なら普通にLIGHTROOMに登録出来ます。

次に、LIGHTROOMは予想通り、編集対象の画像ファイルのパスを、追加外部エディターコマンドライン引数として渡して来るんだけど、一番の問題はそれをストア版Photoshop Elements 15にコマンドライン引数として渡せない(受け取らない?)と言う事。

ストアアプリ的には、どうやらコマンドライン引数が無いのが基本のようで、一応、オプション的に受け渡しをするメカニズムはあるらしいんだけど、受け取る側のPhotoshop Elements側にも、それなりの作り込みが必要なようで、その事を考えるとコマンドライン渡しは、ちょっと現実的ではないかなと・・・。

で考えた苦肉の策は、起動したPhotoshop Elements 15にミドルウエア側からキーコードを送り込んで、GUIを遠隔操作し、結果的に画像ファイルを読み込ませると言う方法。

つまり、LIGHTROOMは

1.ミドルウエアへコマンドライン引数として画像ファイルパスを渡す。

そして追加外部エディターとしてLIGHTROOMにキックされたミドルウエアは

1.Photoshop Elements 15のプロセスが起動してなければPhotoshop Elements 15のショートカット(例のAppUserModelIdが入っている奴ね)をキックして起動。
2.LIGHTROOMから受け取ったコマンドライン引数をクリップボードにコピー
3.Photoshop Elements 15のプロセスの存在を確認。
4.Photoshop Elements 15の初期化終了を待つ。
5.Photoshop Elements 15が過去に起動済みで、かつウィンドウが最小化されていたら、元の状態に戻す。
6.今回Photoshop Elements 15を新規に起動した場合は、確実にキー入力を受け取らせる為、キーコード送信の前に少し待つ。
7.キー入力を受け取るようにPhotoshop Elements 15のウィンドウをアクティブにする。
Photoshop Elements 15へ[ctrl]+[o] [ctrl]+[v] [enter]の、3つのキーコードを送る。

キーコードの内訳は

1.[ctrl]+[o]⇒ [ファイル]-[開く]のショートカット
ファイルオープンのダイヤログが開きファイル名欄にフォーカスが移る

2.[ctrl]+[v] ⇒クリップボードの内容を貼り付け
画像ファイル名がファイル名欄にペーストされる。

3.[enter]⇒[Enter]キーを押す。
ファイル指定ダイアログのデフォルトボタンである[開く]ボタンが押される。

とこのような具合に自動で操作が完了する。文字で書くと長いけどプログラムでやると一瞬の出来事で、キー入力などは目にも見えない速さで終わります。

まぁ、本来的にはキー操作によるエミュレートは、アプリ起動時のタイミングなどがシビアで不確実要素が入りやすく、余りスマートな方法とは言えないので、使いたくなかったんだけど、Photoshop Elements 側に手を入れられない現状からすると致し方ないと・・・。

最初、アプリ起動時のタイミング的な問題で不確実な事があったんだけど、アプリの初期化完了待ちやウェイトの調整などを工夫して、一応安定したかなと・・・。取りあえず、これで用は果たせるので、結果オーライと言う事でめでたしめでたし。

そうそう、今回ミドルウエアを作るのにVisual Studio 2017を使ってみたんだけど、随分良くなってるね。私は初代バージョンから使ってるけど、インテリセンスとデバッガはやっぱり便利だね。

今回作ったミドルウエア要る?同じような状況で、必要ならアップしてもいいけど。では、またね。

PS.
あとで気づいた事なんだけど、ストア版Photoshop ElementsへのショートカットはSendto(送る)フォルダに入れても表示されないから、そんな時もこのミドルウエアを使えば、画像を右クリックで「送る」にストア版Photoshop Elementsを表示させる事が出来て、実際、動作もしたので、結構使い回しが効きそうです。

コメント

タイトルとURLをコピーしました