Y!Widgetでは3通りの外部プログラム起動方法があります。
runCommand() を使う#
リファレンスマニュアル(P275)のWindows/OS X 間の相違として述べられていますが、runCommandはOS/X 用に作られており、Windowsでは擬似的にY!Widget に組み込まれたいくつかの命令しか使えません。zshもどきが内部に実装されているようです。C:\Program Files\Yahoo!J\Yahoo! Widget Engine\UnixUtils\usr\local\wbinというディレクトリにコマンドの実体が入っているようです。
マニュアルにないコマンドもあるような気がしますが・・・ここにコンソールアプリを仕込んでしまえばいいのでしょうか?
COMを使う#
COMに対応したアプリケーションでは、COMオートメーションという方法でアプリケーションをWidgetからコントロールすることができます。近代的な開発環境で作成したソフトはCOMに対応しているものが多く、代表的なものでは
- Microsoft Word,Excel,PowerPoint,Outlook
- MediaPlayer,WindowsMessenger
- Adobe Acrobat, CreativeSuite全般
簡単に思いつく範囲の応用では、
- ウィジェットの起動、終了時間から勤務表を生成してExcelに出力
- 超小型LiveMessengerウィジェット(iTunesについてはこの手のやつが星の数ほど出ています)
Microsoft OutlookについてはMy Outlook Today
という強力なウィジェットがすでに存在します。
メッセンジャーがあるならSkypeについても期待してしまう人が多いかと思いますが、これについてはSkype4COMというアドインをユーザー環境にインストールする必要があるとかで、社内システムなどには便利ですが、Widgetのようにばら撒く形態のソフトには少し敷居が高いかもしれません。
Mozilla FirefoxなどについてはXPCOM
とかいうものがあるらしいです。
逆にCOMに対応していないので気をつけなければいけないソフトは
- Microsoft OutlookExpress
サンプルコード#
マニュアルの受け売りですが
<menuItem title='COMテスト(MSN)'>
<onSelect>
messenger = COM.createObject( "Messenger.UIAutomation" );
contacts = messenger.MyContacts;
num = contacts.Count;
for(i=0;i<num;i++){
contact = contacts.Item( i );
print( " " + contact.FriendlyName + " " + contact.Status );
}
COM.disconnectObject(messenger);
</onSelect>
</menuItem>
こういうコードを組むと、メニューを選択するたびにデバッグウインドウにメッセンジャーのお友達リストが一覧表示されます。
自分でもCOMコンポーネントを作りたい#
現在Visual C#でSyslogリスナーを作成するというのに挑戦しています。これで、Yamahaのルーターと組み合わせて、電話の着信の瞬間に発信者番号から顧客名を検索するという仕掛けで、以前にデスクトップ付箋ZMemo用アプリ「ZKayo」でやった機能のCOM版です。
しかし難しいので略
filesystem.Open 命令を使う#
実はもっと簡単な手があることがわかりました。filesystem.open( "MonOff.exe" );という手を使っているWidget を見ました。
アプリに引数を渡せないので、引数を要するアプリの起動には、引数まで書き込んだバッチファイルなどを用意して(もしくは生成して)実行させる必要があるようです。
その場合にWindowsでは問題があります。Widgetにテキストファイルを出力させると、UTF-8/LF形式のテキストが出来てしまうので、これをANSI(日本ではSJIS)に変換させなければいけません。
文字コードってどうなってるの4.0を参照してください。
Add new attachment
Only authorized users are allowed to upload new attachments.
«
This page (revision-1) was last changed on 28-Nov-2007 23:43 by UnknownAuthor