• ベストアンサー

VB2005 1つのファイルに2つのプログラムからアクセス

今、検査機からのデータを他の場所で見るプログラムを作成しています。 検査機のデータをPC(パソコン)Aに書き込む(書き込みは15秒に1回) このデータをPC Bで読み込む。(PCは複数台で特に限定はなし) プログラムを作成して実行すると PC Bが読み込みを行っている時PC Aのプログラムが書き込みに行くと 他のプロセスで使用しているため実行できません のエラーが出ます。 そこで、他のプログラムが使用しているかどうかを調べる方法はないでしょうか。 よろしくご教授ください。

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

  • ベストアンサー
回答No.1

いちばん簡単なのは >他のプロセスで使用しているため実行できません のエラーが出ます を利用することです。 Aのプログラムが書き込みに行くところにTry~Catch等のエラートラップを入れて、 エラーが発生したら(特定のエラーだけ検知することも可能)、例えば数秒待って もう一度書き込みに行くとか(ここの処理についてはとりあえず言及しません)、 それなりの処理をしてやればいいです。 そもそもPCが違うので、相手側のプログラムが動いているかどうかすら、 自力で何らかの仕組みを作らないと管理できないと思いますよ。たぶん。 (共有可能なDBとかに動作状況を逐一書き込むとか) 書き込み中かどうか等も、管理しようとして出来なくは ないと思いますが、 正直、労力の無駄のような気もします。

samo3177
質問者

お礼

早速の回答ありがとうございます。

samo3177
質問者

補足

現在は、Try エラーでプログラムが止まるのを回避しています。 たとえば fileinfo のような簡単な関数でファイルが使用中かどうかがわかればと思ったのですが無いようですね。

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

そのまんまじゃないですか? 「他のPCが使用しているからエラーになる。」          ↓ 「エラーになるなら他のPCが使用している。」 先ず、エラーハンドリングで拾って、それからリトライする等の処置を 考えればよいのでは?

samo3177
質問者

お礼

早速の回答ありがとうございます。

samo3177
質問者

補足

エラーを検知しているので、VBでは何か関数があると思ったのですがなさそうですね。

関連するQ&A

  • VB.NetのプログラムでVB6.0のプログラム2

    お世話になります。 VB.Netで作成されたプログラムAがあります。 VB6.0で作成されたプログラムBがあります。 プログラムBはイベント待ち状態になっており、特定のイベント(ボタンクリックイベント等)で特定のプロシジャーを実行するようになっております。 プログラムAからプログラムBの特定のイベントを発生させる、もしくはプログラムBの特定のプロシジャーを実行させる方法を探しております。 前回同じような質問をさせていただきましたが、こちら側からWindowsイベントとVB6.0のイベントの指定の説明が抜けておりましたので、改めて質問をさせていただきます。 何卒よろしくお願い申し上げます。

  • VB.NetのプログラムでVB6.0のプログラムを

    お世話になります。 VB.Net で作成したプログラムAがあります。 VB6.0で作成したプログラムBがあります。 プログラムBはずっとイベント待ちの状態になっております。 AのプログラムからBのプログラムにイベントを発生させたいのですが、BのプログラムにActiveXコントロールを貼り付けるとか、何かしらの方法はあるでしょうか? 比較的簡単な方法でそのような事が出来る例などご紹介いただけますようよろしくお願い致します。

  • VB6.0 exeファイルを作成すると動かなくなってしまいます。。。

    VB6.0で、RS232CのRTS、CTSを使用して、ONOFFスイッチを作成しました。 ONでデータ送信するプログラムを作成したのですが、VB開発環境上で 実行すると正常に作動するのですが、EXEファイルを作成して実行すると、232CのONOFFスイッチのところがうまく動かなくなってしまいます。 他のところはEXEファイルでも正常に動きます。 使用PCは同じPC上です。 何か解消法はありますでしょうか。 アドバイスをよろしくお願いいたします。

  • vb2005で作成したプログラムはどこに?

    vb2005で作成したプログラムはどこに? vb2005で作ったプログラムをビルド後に、 他のPCにsetup(インストール)したとします。 その場合、実行ファイル(.exe?)はどこにあるのでしょうか  また、コマンドプロンプトで実行ファイルを起動することは可能でしょうか

  • VBプログラムの終了

    VB6.0で作成した実行ファイル(exe)を終了させても タスクマネージャのプロセスに残ってしまい、 もう一度プログラムを起動することができません。 (プログラムで二重起動防止の処理をしています) このプログラムをVBのラインタイムが入っていない マシンで動かしているのですが、 やはりそれが問題なのでしょうか? それとも別に何か原因があるのでしょうか?

  • 大量のファイルを作成するプログラムで

    とても初歩的な質問なのですが、 ある変数Aに1~100のデータを、 ある変数Bに1~100のデータを入れて、 AとBの組み合わせの数だけ、文書を作成します。 たとえば A1B1.dat というファイルには ヘッダ Aに1を入れたデータ Bに1を入れたデータ フッタ という構成になっています。 これを100×100の都合10000ファイル作成しないといけないのですが、 どんなプログラム言語が適しているでしょうか? プログラム言語でなくとも、適しているツールなどがあればお教えください。

  • VB6 SP6 で入力し、エクセルデータべース

    初めまして。現在、以下のシステムを作成中です。 A機 , B機 , C 機 3台のPCがあります。 A機でVBで作成したフォームから、エクセルのオブジェクトを開き、入力内容を書き込みます。 B機でも同様にデータを入力内容を書き込みます。 C機ではエクセルを開き、データを閲覧できるようにしたいのです。 ただし、問題があり、多重アクセスしたいためにC機がエクセルシートを閲覧している際に、A機やB機がデータを書き込もうとするとエラーが恐らく出ると思います。 また、A機とB機のデータ書き込みのタイミングが同時になった場合もエラーが発生する気がします。 この方法で希望をかなえるのは不可能でしょうか? (VBAは分からないため、VB6.0からエクセルにデータを書き込んでいます。)

  • プログラムの構成について

    構成上どれがいいんでしょうか? 1.複数のプロセスで同時に実行できるようにしたプログラムは再帰的である。 2.逐次再使用可能なプログラムは、再入可能でもある。 3.再入可能プログラムはを実現するためには、プログラムを手続き部分とデータ部分に分割して、データ部分をプロセスごとにもつ必要がある。 4.再帰的処理のためには実行途中の状態をFIFO方式で記録し、制御する必要がある。

  • VBプログラムについて

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

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

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

専門家に質問してみよう