開発環境 VB6
A.exeとB.exeがあり、どちらもVB6で作成しています。
A.exeは画像ファイルから画像を読み込みピクチャーボックスに表示しています。
A.exeで表示している画像をB.exeの方へ送りたいのですが、どのようにすれば良いのか
方法が思いつきません。
A.exeでは読み込んだ画像を加工するので、ファイルに保存してB.exeに送るといった
方法はとりたくないのですが何か良い案がありますでしょうか?
よろしくお願いします。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200502/05020081.txt
この方法がありまが、私なら間違いなく一度ファイルに落として受け渡します。
ファイルを読み込ませるタイミングは、AからBにSendMessageします。
LinkPokeメソッドとか。
> A.exeで表示している画像をB.exeの方へ送りたいのですが
しまった、今回の場合は LinkSend の方が適切ですかね。
とりあえずサンプル。
<送信側: Project1>
1. 新規プロジェクトで、Form1 に Picture1 と Command1 を張ります。
2. フォームのCaptionに "送信側" と書いておきます。
3. Picture1 は AutoRedraw = True にしておきます。
4. フォームの LinkMode プロパティを 1(ソース) に変更します。
5. Command1ボタンのClickイベントに、以下のように記述します。
Picture1.Cls
Picture1.Print Timer
Picture1.Line (0, 0)-(1000, 1000)
Picture1.LinkSend '←送信命令
6. これを、Project1.exe として保存します。
<受信側: Project2>
1. 新規プロジェクト(Project2)にて、Form1 に Picture1 だけを張ります。
2. フォームのCaptionに "受信側" と書いておきます。
3. Picture1 の AutoRedraw は、Falseのままで OK です。
4. Picture1 の LinkTopic に、"Project1|Form1" と記述します。
5. Picture1 の LinkItem に、"Picture1" と記述します。
6. フォームの Loadイベントに、以下のように記述します。
Picture1.LinkMode = 1
7. これを、Project2.exe として保存します。
まず、送信側(Project1)を起動してから、
受信側(Project2)を起動してください。
その後、送信側のボタンをクリックすると、それにあわせて
受信側の画像が連動して変化すると思います。
LinkMode指定時に、相手側が起動していない場合にはエラーになるので、
必要に応じて、エラー処理やタイムアウト時間の調整などを行ってください。
ねろ様、魔界の仮面弁士様、回答ありがとうございます。
今回はファイルの受け渡しで行いたくないため、魔界の仮面弁士様の方法でやりたいと思います。
そこで御提示の方法で実験してみたのですが、Lineメソッド等はLinkSendでうまく送信できるのですが
LoadPictureでPictureboxにPictureをセットした時は自動的にB.exeの絵も変更されてしまいます。
B.exeに表示されている絵はA.exeからのアクションで変わるようにしたいのですが
どのようにすればいいのでしょうか?
そんなに難しい事でも無い様な。(^^;
自動リンク(受信側Picture1.LinkMode = vbLinkAutomatic) での運用なら、
送信側に、PictureBoxを2枚用意しておき、一方が既存の表示用、他方を
DDEデータソースとしておき、送信が必要なタイミングで、
Set DDE送信用Picture2.Picture = 送信元画面表示Picture1.Image
とするだけで良いと思いますけど。
裏画面を2枚用意できない理由があるならば、画像通信用とは別に
テキスト通信用のLabelを用意しておき、
1. "送信開始"をDDEメッセージを送信側から受信側にLinkSendする。
2. 受信側では、Changeイベントでメッセージ通知を受け取り、
そのタイミングで、"受信側"が"送信側"に画像を要求する。
という考え方もあるかな。
なるほど、2つのPictureBoxを使えばうまくいきそうです。
頭が固いというか応用ができないというか、用意したPictureBox
だけでなんとかしようと思っていたため問題を難しく考えすぎて
いたみたいです。
まだ組み込んでいませんが、希望の動作ができそうなので解決とします。
ありがとうございました。
ボタンを押し忘れました。
ツイート | ![]() |