• ベストアンサー

プログラム間のデータ引き渡し

VBで作成した複数のプログラムを次々に渡り、その間発生した計算値を 使用したいのですが… 一つのプログラムで発生したデータは、テキストファイルとして保存され 次のプログラムに処理を移してそのデータを使用する、といった操作をしたいのです Shell関数やCommand関数を使用すればできるのでしょうか? アドバイスお願いします

  • chiim
  • お礼率100% (10/10)

質問者が選んだベストアンサー

  • ベストアンサー
  • KojiS
  • ベストアンサー率46% (145/312)
回答No.1

その複数あるプログラムを次々に呼び出すプログラムを作成するとわかりやすくなると思います。 Aの処理が終わればBを呼び出して、Bが終わればCを呼び出すようなプログラムです。それぞれのプログラムは保存したテキストファイルを読むだけですが、プログラム引数にファイル名を指定すると若干汎用的になりますね。 終了タイミングの検出は Win32APIを使わないとわかりづらくなるでしょう。CreateProcess や GetExitCodeProcess等を調べると良いでしょう。Win32APIは使用を誤るとシステムが落ちてしまう場合があるので注意しましょう。  Win32APIのヘルプを持っていない場合や VBの機能だけで実行したい場合は、ファイル処理のタイミングが難しいかもしれません。Aでファイルを書き込みAを終了する前にBを呼び出して、Bも同様、という形を取るしかないでしょう。その場合はOSやシステムによっては若干の相性が出るかもしれません。

chiim
質問者

お礼

アドバイスありがとうございます まずはプログラムを呼び出し渡っていくという操作から やってみます API関数は使用したことがないので、MSDNで検索しながら 勉強してみたいと思います

その他の回答 (1)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

どもども 田吾作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ビューワで探してくださいね。 でわでわ

chiim
質問者

お礼

アドバイスありがとうございます 具体例が書かれていたので、大変参考になりました ↓にも書いたとおり、API関数を使用したことがないため そこからの学習となります 複数のプログラムを渡るものは初めてなので、解らないことだらけです でも、そういう方法はきちんと理解しておかなくてはダメですね 頑張ってみます

関連するQ&A

  • VB.NETでプログラム間通信を簡単に行いたい

    VB.NETからShellで呼び出すプログラム(.EXE .VB .DLL etc)の中のテキストボックスやラベル等に対して値を渡したいのですがどうすれば簡単に 出来るでしょうか?VB6で言うDDE通信ですが・・ 宜しくお願いします。

  • shell関数について

    毎度、お世話になっています。 現在、C言語で書いた複数のプログラムをBATファイルで処理するように記述しています。VBでその制御を行っているのですが、VBの処理手順として子フォーム(textあり)にデータを書きこんで、ボタンを押すとshellでbatファイルを起動し、バッチファイルの結果として、あるディレクトリにresult.txtが作成され、VBで他の子フォームに読みとらせようとしているのですが、shellだと、実行の終了を待たずに次にいってしまうので、そのバッチファイルの実行処理が終わらず、result.txtの内容を読み込むことができません。 待つようにするにはどうすればよいのでしょうか? ちなみにVBは一週間前にはじめて、自分でも調べてなんとか作ろうとしたのですが、時間がないため、ここに質問させていただきました。なるべく簡単なアルゴリズムで、よろしくお願いします。 VBのプロセス    テキストにデータを書き込む      ↓     ボタン   →        テキストの内容を*.txtとして保存                        ↓                      バッチファイル起動    ↓(ここで右の実行を待たない     ↓     ので読み込むことができない)   C言語で書かれたプログラム実行                        ↓ result.txtを    ←        結果としてresult.txtが出来上がる 読み込んで表示     

  • Visual Basic 6.0のShell関数

    Visual Basic 6.0のShell関数 Shell関数についてですが、Shellでexeの呼び出しまでは出来たのですが、これから先の操作(Command1をクリックなど)の指定は出来るのでしょうか? VB6の初心者でして分からない点が多く、質問も分かりづらいかもしれませんが、回答をよろしくお願いします。

  • VBプログラムについて

    テキストデータを取り込み、そのデータをもとに 表を作成し、Excelシートに出力するという VBプログラムをOS Windows2000、VB6.0(SP5)、Excel2000の環境で作成しました。 このプログラム(exe)をOS Windows95、Excel2000上で 動作するのでしょうか? また、動作させる場合にはどういった注意点が必要でしょうか? ちなみにそのプログラムではADO 2.6も使用しています。 どうぞよろしくお願いします。

  • プログラムでのWeb操作について

    この度はお世話になります。 今までVB6でIEを操作するプログラムを複数作成し、使用をしておりました。しかしIEでは表示ができなくなったサイトが多くなり、新たにプログラムを組もうと模索をしております。 VBAやpythoneからChromeを操作できるようですが、いずれもsendkeyを使用する形のようで、安定性に欠けると考えております。 下記の要望を満たす形でプログラムを組めるものはございますでしょうか? 1、プラウザはIE以外を使用。 2、1台のパソコンで複数のプログラムを起動できる(それぞれのプログラムが、異なったサイトを延々と巡回して、数値などを入力していきます)。

  • ソースのない実行プログラムについて

    ある実行プログラム(VBで作成、exe形式、ソースなし)があります。 プログラム(.exe)を起動することで画面上に入力画面が表示されます。 いくつかの必要項目を入力し、計算ボタンを押下し計算を流すことで.xlsに結果を出力することができます。 1ジョブの計算時間に数時間かかるのと件数が多いため、仕事帰りに複数のパソコンで処理し、1台のパソコンで複数件処理できないか?その方法を検討しています。   入力画面に必要項目を自動入力でき、1つのパソコンで複数件処理できる方法はないでしょうか?

  • vb6.0でプログラム間のイベント受送信処理

    初めまして、VB6.0プログラミング初心者です。 CreateEvent、SetEventを利用して、プログラム間でのイベント受送信処理をしようとしています。 また、受ける側でTimer関数を利用してイベントを監視し、イベントを受け取った際にMSG表示するようにもしたいのです。 いろいろ調べて、ActiveDLLを使用してみたりしたのですが、うまくいきませんし、 API関数の定数やどうやってプログラム間でイベントを受送信するのかがわかりませんでした。 ご教授よろしくお願いいたします。

  • JRの運賃計算(プログラム)

    JRの運賃計算プログラムを作成(VBで)しています。 今は駅数などが少ないので北海道版を作成中なのですが… とりあえず、 ・各線区(函館本線など)に線区コードを付け区別する ・各駅に駅コードを付ける として運賃計算をさせようとしているのですが、経路をどう処理したらいいかと悩んでいます。 例えば、出発駅「釧路」 到着駅「札幌」 としたときには、 1、釧網本線→石北本線→函館本線 2、根室本線→石勝線→千歳線→函館本線 と複数の経路が発生します。 これをプログラム上で考えられる経路を自動で処理(表示)し、ユーザに経路を提示したい(選択させたい)のですがどのような方法がありますか?? よろしくお願いします。

  • vb プログラムの起動と例外処理

    はじめまして プログラムの実行と例外処理に関して質問させていただきます。 現在,visual basic2005でプログラム(A)からvbで作成した別のプログラム(B)に引数を指定してから起動し,別のプログラム(B)が例外処理に関する方法を調べています。 プログラム(B)起動時に例外処理を用い,以下のようなエラーメッセージを表示させるにはどういった処理を構成すればよいでしょうか。 パス名が設定されていない場合,”ファイルのパス名が見つかりませんでした” 引数が指定されていない場合,”引数が指定されておりません” 原因が特定できないエラーが発生した場合,”原因不明のエラーが発生しました” プログラムの実行にはShellメソッドとSystem.Diagnostics.ProcessクラスのStartメソッドがあるという事がわかりましたが,上記2つのメソッドが自分の意図したい操作に適しているかまでは理解におよんでおりません。 まだプログラミングを始めたばかりという事もあり,右も左もわかりませんが,ご教授お願い致します。

  • 【VB2005】プログラム実行時に引数を渡したい

    VB2005で作成したプログラムがありまして、 Shell("C:\XXX.Exe -Prg=1")というのを使って プログラムをShellで開きます。 そこで、"-Prg=1"という引数を、受け取る側のアプリケーションを 作りたいのですが、どういう方法で値を取得できるか教えてください。 よろしくお願いします。