VB6で開発しています。
exeは多分4,5本なんですが、画面渡りイメージで画面を表示します。
①その場合、タスク管理のexeを別にした方がいいのでしょうか?
②別にした場合、各タスクが管理タスクにメッセージを通知し、
管理タスクが別タスクを起動したり、表示更新要求する必要があるのですが、
sendmessageを使うのが、最適な方法なのでしょうか?
頻繁にexe間でメッセージのやりとりをすると、
システム的に負荷がかかりすぎるとか、
ウィンドウのシステムに何か影響があるとか・・・ありますか?
教えてください。
宜しくお願いします。
機種依存文字(今回は丸付き数字)は使用しないのがネチケットです。
機種によっては文字化けします。
>タスク管理のexeを別にした方がいいのでしょうか?
設計思想の問題です。後にメンテしやすい、と思うほうを採用してください。
>sendmessageを使うのが、最適な方法なのでしょうか?
ときと場合によりますが、一度の送信データ量が少なく、
かつある程度送信速度が要求される場合、
SendMessageはよく用いられる手段のひとつです。
ただし、送信側はSendMessageするだけですが、
VBの場合、(FormをCreateWindowすれば別ですが)
メッセージループをプログラム内でいじれませんので
受信側は、LoopかTimerでPeekMessageするなり、
サブクラス化するなり、(市販の)サブクラスコントロールを
使うなり、受信の仕組みが必要になります。
プロセス間通信にはほかにもいろいろありますので、
ご自分のニーズにあわせて適宜選択されるのがよろしいかと・・・。
>頻繁にexe間でメッセージのやりとりをすると、
>システム的に負荷がかかりすぎるとか、
>ウィンドウのシステムに何か影響があるとか・・・ありますか?
メッセージの増大がシステム負荷の増大につながるのは
当然のことです。
どの程度負荷がかかるかは、実際にメッセージを
飛ばしてみればいいでしょう。
しかしながら、spy++あたりで確認していただければわかるように、
普段から膨大なメッセージが飛び交っています。
exe間の少々のメッセージのやり取り程度では、
見た目でわかるほど遅くなることはないでしょう。
> プロセス間通信にはほかにもいろいろありますので、
VBの標準機能で実装する場合、DDE や COM で通信するという手もよく使われます。
> ただし、送信側はSendMessageするだけですが、
> VBの場合、(FormをCreateWindowすれば別ですが)
> メッセージループをプログラム内でいじれませんので
WM_SETTEXT を TextBox_Change で受ける……という手もあるようです。
お答えありがとうございます。
管理タスクを別にしたとして、タスク間のメッセージは
起動・終了・表示更新ぐらいです。
負荷は心配いらないようなので
シンプルで、よく使われていて問題が発生しにくい方法はどれでしょうか?
>シンプルで、よく使われていて問題が発生しにくい方法はどれでしょうか?
通産なら、DDEが一番使われているのでは?
VB2時代からある古い技術ですし・・・。
>WM_SETTEXT を TextBox_Change で受ける……という手もあるようです。
なんか、DDEっぽくていいかも。
ありがとうございました。
ツイート | ![]() |