このイベントは、Magic xpaが外部プログラムからイベントとデータを受け取り、処理することを可能にすることによって、同じコンピュータ上で動作しているMagic xpaと外部プログラムの間を簡単に統合させることができます。
リッチクライアント
このイベントは、[ブラウザステータステキスト変更]イベントの代わりに利用できます。[ブラウザステータステキスト変更]イベントは、Internet Explorer7でデフォルトでブロックされるためです。
このイベントは、以下の構文を使用してブラウザコントロール内のHTMLページのスクリプトによって発行することができます。
window.external.MGExternalEvent(パラメータ) |
リッチクライアントタスクでは、1つの(Unicode)BLOBパラメータのみ渡すことができます。
モバイル仕様
iOSでは、以下の構文を使用することで[ブラウザ]コントロールから発行することができます。
window.location.href=’MGExternalEvent:’+msg |
モバイルOSの外部アプリケーションからこのイベントを発行する場合は、以下のようなコードを組み込んでください。
iOS
-(void)invokeExternalEvent:(NSString *)str { if ( _coreViewController ) { if ( [_coreViewController respondsToSelector:@selector(addExternalEventWithString:)] ) [_coreViewController performSelector:@selector(addExternalEventWithString:) withObject:str]; } } |
Android
public void invokeExternalEvent(String str) { try { Events.OnBrowserExternalEvent(null, str); } catch (Exception e) { e.printStackTrace(); } } |
例
以下の例のようにすることで、VBスクリプトスクリプトから3つのパラメータ(年数、月数、日数)を渡してMGExternalEventを呼び出すことができます。[イベント]ロジックユニットは、これら3つのパラメータを受け取り、項目を更新し、画面を再表示させることで対応できます。
注意: |
リッチクライアントでは、1つのパラメータしか渡せません。従って、これらの値を結合して1つの文字列にして渡す必要があります。 |
Windows APIの使用
Magic xpaで外部イベントを発行させる場合、WM_COPYDATAメッセージタイプを持つSendMessageのWidowsAPIコマンドを使用します。このメッセージは、COPYDATASTRUCT構造のポインタが含まれています。Magic xpaは、これらのパラメータをイベントキューに置き、ハンドラによるイベントの受け取りによってパラメータも受け取ります。
COPYDATASTRUCTの書式 この構造体には以下の3つのメンバが含まれています。
dwData …… 送られたパラメータの数
lpData …… パラメータを含むバッファのポインタ
cbData …… lpData内のデータ長
パラメータ cbDataメンバ内に配置されたパラメータは、バッファ内にNULLで終了する文字列です。Magic xpaは、パラメータを以下の4つのデータ型として受け取ることができます。
-A …… 文字列
-N …… 整数値
-F …… 浮動小数点数値
-L …… 論理値
例:
次の4つのパラメータを送る場合を想定します。店舗名、17、True、643.23。作成されるバッファは、以下のようになります。
-AXXX^-N17^-LT^-F643.23 ^:NULL文字を表します。 |
ロジックユニットの定義
外部イベントを処理する場合、[外部イベント]という内部イベントを指定した[イベント]ロジックユニットを作成する必要があります。このロジクユニット内で、渡されるパラメータを受け取るためのパラメータ項目を定義することができます。
実行可能なデモファイルやCPPファイル
Magic xpaをインストールすると、外部イベントの呼出しを行うことのできる実行可能ファイルとしてMsg2mgic.exeが提供されます。詳細については、MSG2MGICユーティリティを参照してください。
外部イベントは、デフォルトでキーボードが割り当てられていません。