ffmpegインストールでハマる Flashでシリアル通信~大苦戦
4月 09

こんな超ニッチな記事が役にたつ人いるのだろうか・・・。まぁ、防備録として。

Flashでシリアル制御アプリを作成中なのだが、Flashにはシリアル通信の機構がないため、別途プロクシアプリを起動しておくなど工夫が必要なことは、以前のエントリーで記載ずみ。

あらかじめそのあたりがわかっていて使うのならよいが、単にユーザーとして使うことを考えた場合、プロクシアプリが起動してるかどうか、や、事前に起動しておく、、などという手間を増やすのはアプリとして正しくない。

そこで、最初はFlashのfscommandを用いて、外部プログラム(具体的にはserproxy.exe)を自ら起動して、通信しようとしたのだが、どうもこのfscommandというのが、使い勝手が悪く、ろくに使えない。

また、serproxy.exeは、起動するとdos窓っぽいのが開きっぱなしになるし、格好悪い。できれば、最小化した状態で開きたい。

serproxyのショートカットを作って、そのプロパティを修正することで、ショートカットから開いた時は最小化、ということは可能だが、ショートカットにすると、こんどはfscommandから開けない。

いろいろ調べた結果、Flash(swf)をhta(HTML Application)に包んで、他アプリの制御などはVBScriptのShell機能を使うしかない、ということになった。(面倒すぎる)

VBScriptはまともに触ったことないし、HTAとなるとまたその作法もあったりして、一つのアプリを作るのにどんだけ言語を触ればいいのだ、とニワカにグッタリしているのだけれど、まずは完成させなければ。

※HTAというのは、Windows限定だけれど、簡単にアプリケーションを作成できる割と知られてないけど便利な仕組みです。基本はHTMLファイルです。拡張子がhtmlやhtmじゃなく、htaにするだけで、ダブルクリックで開けるアプリになります。希に市販アプリのインストーラーがhta形式で作られていることがあります。

1) まず、適当なエディタでhogehoge.htaというファイルを作成。

2) HTAの外観を設定する
参考 : Flash Desktop Applications - FLASH+HTA+WSHで作るWindowsデスクトップツール
head部分に、HTA:APPLICATIONというタグで、外観を指定可能。タイトルバーを付けないと、閉じることが出来なくなるので要注意。

3) SCRIPTを記述する

Visual Basic:
  1. <script LANGUAGE="VBScript">
  2. Sub Window_onLoad
  3.  
  4. window.resizeTo 640,480
  5.  
  6. Set objShell = CreateObject("Wscript.Shell")
  7. objShell.Run ".\serproxy\serproxy.exe .\serproxy\serproxy.cfg",7
  8.  
  9. End Sub
  10. </script>

window.resizeToというのは、その名の通り、ウィンドウをリサイズします。
次に、shellのインスタンス(objShell)を作り、Runにて、外部プログラムを起動。引数も渡せる。

で、キモが2番目のパラメータの7です。

Microsoftのメソッドによると、

0: ウィンドウを非表示にし、別のウィンドウをアクティブにします。
1:ウィンドウをアクティブにして表示します。ウィンドウが最小化または最大化されている場合は、元のサイズと位置に戻ります。アプリケーションでウィンドウを最初に表示するときには、このフラグを指定してください。
2:ウィンドウをアクティブにし、最小化ウィンドウとして表示します。
3:ウィンドウをアクティブにし、最大化ウィンドウとして表示します。
4:ウィンドウを最新のサイズと位置で表示します。アクティブなウィンドウは切り替わりません。
5:ウィンドウをアクティブにし、現在のサイズと位置で表示します。
6:指定したウィンドウを最小化し、Z オーダー上で次に上位となるウィンドウをアクティブにします。
7:ウィンドウを最小化ウィンドウとして表示します。アクティブなウィンドウは切り替わりません。
8:ウィンドウを現在の状態で表示します。アクティブなウィンドウは切り替わりません。
9:ウィンドウをアクティブにして表示します。ウィンドウが最小化または最大化されている場合は、元のサイズと位置に戻ります。アプリケーションで最小化ウィンドウを復元するときには、このフラグを指定してください。
10:アプリケーションを起動したプログラムの状態に基づいて、表示状態を設定します。

です。こうすることで、htaから外部プログラムを最小化した状態で起動できます。

・・・しかし、VBScriptってのは、記述方法というか、シンタックスが気持ちわるいな~独特ですな。

関連リンク:
Hey, Scripting Guy! ‐ HTML アプリケーション (HTA)
Flash Desktop Applications - FLASH+HTA+WSHで作るWindowsデスクトップツール

Popularity: 22% [?]

written by ANN

add to hatena hatena.comment (2) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 2

Leave a Reply