エディタTweetこんにちは、中川です。最近、暇を見つけては、ちょこちょこFlash(ActionScript)をいじっています。普段は、FlashDevelop(beta5がでましたね^^)を使って書いているのですが、ちょっとしたスクリプトを書いてみるときには、いちいちFlashDevelopを起動しなくて、サクラエディタを使うほうが楽だったりします。サクラエディタで書いた場合、コンパイルするためにcmdを起動してコンパイルという作業が非常に面倒くさいわけです。rascutを使ってやる方法は確かに便利ですが、先日書いたようにサクラエディターの私としてはなんとかサクラエディタだけでやってみたいものです。そこで、サクラエディタから一発で、Flashをコンパイルできる方法を考えてみました。(flexSDK2やfcshについては【Flexはじめました。アシアルブログ】を見てみてください。)まず、サクラエディタでは、マクロをJScriptやVBScriptでかけますので、これを利用します。mxmlcだけを使った簡単なものは、以下のようになります。filename」を引数で渡しているだけです。)これをマクロに登録すれば、とりあえずコンパイルはできるのですが、生のmxmlcでは遅くてやってられません。fcshを使ってコンパイルする方法を検討してみたいと思います。最終的には、課題がいろいろと残りましたが、なんとか動いています。マクロからのfcshを使ったコンパイルの流れとしては、fcshシェルが起動されているか確認。ない場合cmd.exeを起動しfcshを起動。fcshシェル内でmxmlcコマンドプロンプトのプロセスIDを記憶。fcshでは、2回目以降のコンパイルは最初に起動したシェルにコマンドを渡したいので、最初のcmdのプロセスIDが必要です。cmdのプロセスIDがとれませんでした。Execを使ってcmdを起動しても、一瞬で窓が閉じてしまいます。メモ帳を起動する]】を参考にプロセスIDを取れるように起動するには以下のようにしました。}cmd.exeの起動は、VBScriptでやっています。JScriptでもできるかもしれませんが、分りませんでした。そこでJScript内で、VBを使うために、「ScriptControl」を使用します。ScriptControlの使用】を参照。)これで、起動したcmdのプロセスIDが取得できました。WshShell.AppActivate(pid);で、アクティブにして、コマンドを送ればOKです。「WshShell.SendKeys(str);」では、日本語(パスの「デスクトップ」など)が送れません。方法をいろいろ調べてみたのですが、単独のファイルでは、無理かもしれません・・・。日本語を入力する】できる方法もあるようです。)とりあえず、今回はパスに日本語が含まれないということ前提でいきましょう。これで、運がよければ動くのですが、コマンドプロンプト起動後のコマンド実行がアクティブにする前に実行されてしまう場合があります。「cscript.exe」がホストの場合にしか使えないみたいです。そこで、今回はしょうがなく、whileでAppActivateの戻り値を監視するという危険な感じになっています。(別に考えたのでは、for文をブン回しておくとか。{//こんな危険な・・・。}これで、遅延(起動アクティブ後の実行)もOKとなりました。最後にPIDの保持ですが、マクロではさすがに値の保持は無理っぽいので、ファイルに書き出す方法をとっています。「filename.pid」にpidを保存し、2回目以降のマクロ実行では、「filename.pid」からpidを取得しています。この方法だと、「filename.pid」ファイルが最終的にはゴミとして残ってしまうので、あまりいい方法とは言えませんね。こんな感じで、fcshを使ったコンパイルのマクロは動作しました。これで、サクラエディタからも、flashの作成がちょっとは簡単になったような気がします。(FlexSDK2)環境でしか行っておりません。VBやJScriptはほとんど触ったことないので、変なことしている可能性が多々あります。FLEXのディレクトリを設定してね。{//こんな危険な・・・。byスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。