[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/06/26(Mon) 21:56
投稿者名:二ノ宮薫子
Eメール:
URL :
タイトル:
別プロセスのラベルコントロールに文字列を送るには?
VB6で作成している2つのプログラムがあります。これらはそれぞれ別プロセスで同時に稼動するもので
す。
片方のプログラムから、もう一方のプログラムの特定のラベルコントロールに文字列を送りたいので
が、その具体的な方法がわかりません。
SendMessageでWM_SETTEXTを使用すれば良さそうだというところまではわかったのですが、送信先とな
るラベルコントロールのハンドルはどのように取得すれば良いのでしょうか?
(トップレベルのウインドウハンドルを取得することは出来ています。)
また、受信側では「受け取る」という処理を実装する必要はあるのでしょうか?
教えていただけたら幸いです。

投稿時間:2006/06/27(Tue) 01:07
投稿者名:
Eメール:
URL :
タイトル:
Re: 別プロセスのラベルコントロールに文字列を送るには?
> VB6で作成している2つのプログラムがあります。これらはそれぞれ別プロセスで同時に稼動するも


> す。
> 片方のプログラムから、もう一方のプログラムの特定のラベルコントロールに文字列を送りたいの

> が、その具体的な方法がわかりません。
> SendMessageでWM_SETTEXTを使用すれば良さそうだというところまではわかったのですが、送信先
とな
> るラベルコントロールのハンドルはどのように取得すれば良いのでしょうか?
VB6のラベルコントロールは"ライトウェイト"(ウィンドウレス)と呼ばれるコントロールの一
種で、
ウィンドウハンドルを持ちません。
なので、ラベルコントロールに直接ウィンドウメッセージを投げれるかどうかはかなりアヤシイ(できな
いと思う)です。

> (トップレベルのウインドウハンドルを取得することは出来ています。)
> また、受信側では「受け取る」という処理を実装する必要はあるのでしょうか?
> 教えていただけたら幸いです。
ウィンドウメッセージが送れないとなると、WM_APPの範囲のウィンドウメッセージを作り、
それらのメッセージで自力で受け取って実行する処理を書かなくてはならないと思います。
(飽くまでウィンドウメッセージでやろうとするならば)
参考?:
http://yokohama.cool.ne.jp/chokuto/urawaza/message/WM_USER.html

※DDEやほかのプロセス間通信でもできますよね。

投稿時間:2006/06/27(Tue) 10:49
投稿者名:二ノ宮薫子
Eメール:
URL :
タイトル:
Re^2: 別プロセスのラベルコントロールに文字列を送るには?
> > VB6で作成している2つのプログラムがあります。これらはそれぞれ別プロセスで同時に稼動す
るも
> の
> で
> > す。
> > 片方のプログラムから、もう一方のプログラムの特定のラベルコントロールに文字列を送り
たいの
> で
> > が、その具体的な方法がわかりません。
> > SendMessageでWM_SETTEXTを使用すれば良さそうだというところまではわかったのですが、送
信先
> とな
> > るラベルコントロールのハンドルはどのように取得すれば良いのでしょうか?
> VB6のラベルコントロールは"ライトウェイト"(ウィンドウレス)と呼ばれるコントロー
ルの一
> 種で、
> ウィンドウハンドルを持ちません。
> なので、ラベルコントロールに直接ウィンドウメッセージを投げれるかどうかはかなりアヤシイ(
でき

> いと思う)です。
>
> > (トップレベルのウインドウハンドルを取得することは出来ています。)
> > また、受信側では「受け取る」という処理を実装する必要はあるのでしょうか?
> > 教えていただけたら幸いです。
> ウィンドウメッセージが送れないとなると、WM_APPの範囲のウィンドウメッセージを作り、
> それらのメッセージで自力で受け取って実行する処理を書かなくてはならないと思います。
> (飽くまでウィンドウメッセージでやろうとするならば)
> 参考?:
> http://yokohama.cool.ne.jp/chokuto/urawaza/message/WM_USER.html
>
> ※DDEやほかのプロセス間通信でもできますよね。

もさん、早速のご回答ありがとうございます。
DDEは枯れた技術とはいえ、簡単そうですね。今回はとりあえずDDEで実現してみます。
追加の質問で申し訳ないのですが、ほかのプロセス間通信の手段にはどんなものがあるのでしょうか?
私の稚拙な検索能力では、ウインドウメッセージとDDEくらいしか見つけられませんでした(ToT)

投稿時間:2006/06/27(Tue) 19:35
投稿者名:二ノ宮薫子
Eメール:
URL :
タイトル:
Re^2: 別プロセスのラベルコントロールに文字列を送るには?
すびばぜん(号泣)
DDEは簡単そうだと言っておきながらつまづいてます。アホな私に愛の手を・・・。

App1.exe(Form1というフォームにLabel1というラベルを配置)
App2.exe(Form2というフォームにLabel2というラベルを配置)

上記2アプリ間でDDE通信によりLabel1が更新されたら同様の内容でLabel2を更新させたいのですが、

(App1.exe側)
Form_Loadにて、
 Me.LinkTopic = "Comment"
 Me.LinkMode  = vbLinkSource

(App2.exe側)
Form_Clickにて、
  
  Shell("App1.exe")
  Label2.LinkTopic = "App1|Comment"
  Label2.LinkItem  = "Label1"
  Label2.LinkMode  = vbLinkAutomatic

上記のように書いてるのですが、App2.exe側のLinkMode = vbLinkAutomaticのステートメントで
「外部アプリケーション応答なし」のエラーが発生してしまいます。
何か根本的な勘違いをしているとは思うのですが、そろそろ知恵熱も出てきてしまいました。
暖かいご指摘のほどよろしくお願いいたします。

投稿時間:2006/06/28(Wed) 11:21
投稿者名:
Eメール:
URL :
タイトル:
Re^3: 別プロセスのラベルコントロールに文字列を送るには?
> すびばぜん(号泣)
> DDEは簡単そうだと言っておきながらつまづいてます。アホな私に愛の手を・・・。
参考になりそうなサイトがありましたので、載せておきますね:
http://www.ccn.aitai.ne.jp/~ccc/VB/VB6DDE.html

他に、使い勝手のよい(と思っている)プロセス間通信となると、ソケット通信があります。
ただしローカルで実行するのに、わざわざネットワークまで考える必要があるのか?
と言われると、はっきり言ってオーバーロードになってしまいます(orz

投稿時間:2006/06/28(Wed) 17:32
投稿者名:二ノ宮薫子
Eメール:
URL :
タイトル:
Re^4: 別プロセスのラベルコントロールに文字列を送るには?
> > すびばぜん(号泣)
> > DDEは簡単そうだと言っておきながらつまづいてます。アホな私に愛の手を・・・。
> 参考になりそうなサイトがありましたので、載せておきますね:
> http://www.ccn.aitai.ne.jp/~ccc/VB/VB6DDE.html
>
> 他に、使い勝手のよい(と思っている)プロセス間通信となると、ソケット通信があります。
> ただしローカルで実行するのに、わざわざネットワークまで考える必要があるのか?
> と言われると、はっきり言ってオーバーロードになってしまいます(orz

もさん、重ね重ねありがとうございます。
ご紹介のサイトを見る限り、私のコードも問題なさげですね・・・。
何が問題なのかさっぱりですが、じっくり格闘してみます。
本当にありがとうございました^^

投稿時間:2006/06/29(Thu) 06:32
投稿者名:ダンボ
Eメール:
URL :
タイトル:
Re^5: 別プロセスのラベルコントロールに文字列を送るには?
> 上記のように書いてるのですが、App2.exe側のLinkMode = vbLinkAutomaticのステートメントで
> 「外部アプリケーション応答なし」のエラーが発生してしまいます。

App1.exeが先に動いていないとこうなります。