- ベストアンサー
プログラム間のデータ引き渡し
VBで作成した複数のプログラムを次々に渡り、その間発生した計算値を 使用したいのですが… 一つのプログラムで発生したデータは、テキストファイルとして保存され 次のプログラムに処理を移してそのデータを使用する、といった操作をしたいのです Shell関数やCommand関数を使用すればできるのでしょうか? アドバイスお願いします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その複数あるプログラムを次々に呼び出すプログラムを作成するとわかりやすくなると思います。 Aの処理が終わればBを呼び出して、Bが終わればCを呼び出すようなプログラムです。それぞれのプログラムは保存したテキストファイルを読むだけですが、プログラム引数にファイル名を指定すると若干汎用的になりますね。 終了タイミングの検出は Win32APIを使わないとわかりづらくなるでしょう。CreateProcess や GetExitCodeProcess等を調べると良いでしょう。Win32APIは使用を誤るとシステムが落ちてしまう場合があるので注意しましょう。 Win32APIのヘルプを持っていない場合や VBの機能だけで実行したい場合は、ファイル処理のタイミングが難しいかもしれません。Aでファイルを書き込みAを終了する前にBを呼び出して、Bも同様、という形を取るしかないでしょう。その場合はOSやシステムによっては若干の相性が出るかもしれません。
その他の回答 (1)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
どもども 田吾作7です。 アプリ間の通信ですね。MSDNでATOMというのを検索してください。 複数のデータをアプリ間で受け渡すことが出来ます。 (ADDATOM,FINDATOMなどなど・・・) それがいやならWINSOCKを使うという手もあります。 コントロールを一切使用したくないのであれば、たとえば アプリAとアプリBにおいて 1.アプリBにコマンドボタンを一つ用意する 2.そのコマンドボタンに「受け渡し用ボタン」というキャプションにしておく。 処理の流れとしては 3.アプリAで計算を行う 4.アプリBを起動する 5.アプリBのハンドルを得る wkWnd = FindWindow(アプリBのキャプション) 6.アプリBのコマンドボタンのハンドルを得る 'ボタンを探す BtnHwnd = FindWindowEx( _ wkWnd , 0&, vbNullString, "受け渡し用ボタン"& vbNullChar) 7.アプリBのコマンドボタンのキャプションを変更しちゃう call SetWindowText(BtnHwnd , "計算で得た値" & vbNullChar) 8.アプリBのボタンをボタンダウンとボタンアップをするようにする Call SendMessage(BtnHwnd , WM_LBUTTONDOWN, 0, 0) Call SendMessage(BtnHwnd , WM_LBUTTONUP, 0, 0) 8の処理を行うことにより、アプリBは値を渡されたことを認識できるので、アプリBのコマンドボタンのボタンアップ・もしくはダウンのイベント時に、値を受け取った時の処理のコードを書いたらいいと思いますよ。 途中に記してあるAPI関数や定数は、APIビューワで探してくださいね。 でわでわ
お礼
アドバイスありがとうございます 具体例が書かれていたので、大変参考になりました ↓にも書いたとおり、API関数を使用したことがないため そこからの学習となります 複数のプログラムを渡るものは初めてなので、解らないことだらけです でも、そういう方法はきちんと理解しておかなくてはダメですね 頑張ってみます
お礼
アドバイスありがとうございます まずはプログラムを呼び出し渡っていくという操作から やってみます API関数は使用したことがないので、MSDNで検索しながら 勉強してみたいと思います