アプリケーション間で画像を転送するには?

解決


とんでん3等兵  2005-02-19 05:24:33  No: 119794

開発環境 VB6

A.exeとB.exeがあり、どちらもVB6で作成しています。
A.exeは画像ファイルから画像を読み込みピクチャーボックスに表示しています。
A.exeで表示している画像をB.exeの方へ送りたいのですが、どのようにすれば良いのか
方法が思いつきません。
A.exeでは読み込んだ画像を加工するので、ファイルに保存してB.exeに送るといった
方法はとりたくないのですが何か良い案がありますでしょうか?

よろしくお願いします。


ねろ  2005-02-19 06:05:51  No: 119795

http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200502/05020081.txt
この方法がありまが、私なら間違いなく一度ファイルに落として受け渡します。
ファイルを読み込ませるタイミングは、AからBにSendMessageします。


魔界の仮面弁士  2005-02-19 08:02:30  No: 119796

LinkPokeメソッドとか。


魔界の仮面弁士  2005-02-19 10:16:00  No: 119797

> 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指定時に、相手側が起動していない場合にはエラーになるので、
必要に応じて、エラー処理やタイムアウト時間の調整などを行ってください。


とんでん3等兵  2005-02-21 01:30:09  No: 119798

ねろ様、魔界の仮面弁士様、回答ありがとうございます。
今回はファイルの受け渡しで行いたくないため、魔界の仮面弁士様の方法でやりたいと思います。
そこで御提示の方法で実験してみたのですが、Lineメソッド等はLinkSendでうまく送信できるのですが
LoadPictureでPictureboxにPictureをセットした時は自動的にB.exeの絵も変更されてしまいます。
B.exeに表示されている絵はA.exeからのアクションで変わるようにしたいのですが
どのようにすればいいのでしょうか?


魔界の仮面弁士  2005-02-21 18:29:28  No: 119799

そんなに難しい事でも無い様な。(^^;

自動リンク(受信側Picture1.LinkMode = vbLinkAutomatic) での運用なら、
送信側に、PictureBoxを2枚用意しておき、一方が既存の表示用、他方を
DDEデータソースとしておき、送信が必要なタイミングで、

    Set DDE送信用Picture2.Picture = 送信元画面表示Picture1.Image

とするだけで良いと思いますけど。

裏画面を2枚用意できない理由があるならば、画像通信用とは別に
テキスト通信用のLabelを用意しておき、
 
 1. "送信開始"をDDEメッセージを送信側から受信側にLinkSendする。
 2. 受信側では、Changeイベントでメッセージ通知を受け取り、
    そのタイミングで、"受信側"が"送信側"に画像を要求する。

という考え方もあるかな。


とんでん3等兵  2005-02-21 21:01:20  No: 119800

なるほど、2つのPictureBoxを使えばうまくいきそうです。
頭が固いというか応用ができないというか、用意したPictureBox
だけでなんとかしようと思っていたため問題を難しく考えすぎて
いたみたいです。

まだ組み込んでいませんが、希望の動作ができそうなので解決とします。
ありがとうございました。


とんでん3等兵  2005-02-21 21:02:08  No: 119801

ボタンを押し忘れました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加