なでしこに「COPYDATA送信」という命令があるので解説してみます。
【名前】COPYDATA送信 (COPYDATAそうしん)
【引数】AにSを|Aへ
【説明】ウィンドウハンドルAにSというメッセージでCOPYDATAを送信する
簡単にいうと「COPYDATA送信」は別のウィンドウに文字列を送ることができるらしいです。
送られたほうのウィンドウではイベント「母艦のCOPYDATA受けた時は~」が発生します。
受け取ったメッセージは「母艦のCD文字列」に入ります。
似た命令で「COPYDATA詳細送信」がありますが送る情報が増えただけでほぼ同じ。
通常の用途では別ウィンドウにメッセージを送るところですが、
ひとまず実験で自分のウィンドウにCOPYDATA送信してみます。
//受信した時のイベントを書く
母艦のCOPYDATA受けた時は~
母艦のCD文字列を表示
//メッセージを送信
5回
母艦ハンドルに「あいうえお」をCOPYDATA送信
結果:「あいうえお」が5回表示される
上記を別々のプログラムに書くことで他のウィンドウにメッセージを送ることができます。
実用的なシチュエーションは?
たとえばHTTPダウンロード中も処理が止まらないプログラムを作ってみます。
処理順はこんな感じ。
・ダウンロードするプログラムを生成して保存する
(HTTPダウンロード後に母艦にCOPYDATA送信する)
・母艦から生成したプログラムを起動しつつ、変数「結果」が変化するまでループ
・ダウンロードするプログラムが母艦にCOPYDATA送信
・母艦のCOPYDATA受けた時は~のイベントが発生したら変数「結果」を書き換え。
・変数「結果」をみてループから抜ける
//ダウンロードが終わったら母艦にCOPYDATA送信するプログラムを生成する
//ダウンロード後に母艦にCOPYDATA送信する
URLは「http://以下略」
DL先は「{母艦パス}ファイル名.txt」
ハンドルは母艦ハンドル
スクリプトは「
エラー監視
『{URL}』を『{DL先}』へHTTPダウンロード
{ハンドル}へ『DL完了』をCOPYDATA送信
エラーならば
{ハンドル}へ『DL失敗』をCOPYDATA送信
おわり
」
スクリプトを「temp.nako」へ保存
結果は空
//受信時のイベントで「結果」を変更
母艦のCOPYDATA受けた時は~
結果は母艦のCD文字列 //メッセージは「母艦のCD文字列」に入る
//ダウンロードの実行(ダウンロード中も処理が止まらない)
「temp.nako」を起動 //→上記のスクリプトを別プロセスで実行
1でループ
0.1秒待つ //ここでダウンロード中...のアニメとかを動かす
もし結果が空でなければ、抜ける //結果が「DL完了」か「DL失敗」になったら抜ける
結果を表示
よいサンプルを作る発想が足りない!