• ベストアンサー

アプリケーションのエラーを検出して他のプログラムを実行する方法

基本的な方法として, (1)プログラムの起動時にエラーレベルを検出 (2)エラーの時には,他のプログラムを起動 という処理をbatファイルで記載しようと考えています。 (Windows2000上での処理です。) ここで,分からない点が, (1)アプリケーションのエラーレベルをどうやって   調べるのか? (2)エラーのときは,ダイアログが立ち上がり,   DOSプロンプトが非アクティブになるので,   DOSプロンプト以外のウィンドウ,ダイアログ   を閉じたい。 という2点です。 よろしくお願いします。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4844/10253)
回答No.3

エラーになってもプログラムが終了しないのでは、バッチでは無理ですね。 VBS+WSHを使って、ループしながら、プログラムの終了とエラー時のダイアログのタイトルを監視するんでしょうか。WshShell.AppActivate("ABC") は、ABC というタイトルのウィンドウがあれば真を、無ければ偽を返します。ウィンドウがあればそれがアクティブになりますから、WshShell.SendKeys でダイアログを閉じるキーを送れば良いでしょう。 set WshShell = WScript.CreateObject("WScript.Shell") Do  if not WshShell.AppActivate("プログラムのウィンドウタイトル") then exit do  if WshShell.AppActivate("エラーのウィンドウのタイトル") then   WshShell.SendKeys "ウィンドウを閉じるキー"   エラーのときの処理   exit do  end if  Wscript.Sleep 1000 Loop

dai0222
質問者

お礼

3名もの方にご回答いただき,ありがとうございました。 とりあえず,バッチファイルでは難しいということは分かりました。 WSHは今まで使用したことが無かったのですが,便利ですね。教えていただいた情報を元に,望むプログラムが作成できました。 ありがとうございました。

その他の回答 (2)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

(1)エラーレベルはERRORLEVEL環境変数にセットされる。 例: dir *.bat if "%ERRORLEVEL%" == "1" goto :ERRSUB echo このフォルダにはバッチファイルがあります goto :EXITSUB :ERRSUB echo このフォルダにバッチファイルはありません :EXITSUB (2)いやぁ・・・・それは無理だ。勝手によそ様のプログラムを停止できるなんて、そりゃウィルスでしょ。他のプログラムというのが全て自作のものであれば、DDEなどのプロセス間通信を使って停止させる事はできるかも知れないけど。まぁ方法はあるにはあるのだが・・・・結構複雑なプログラムを組まないといけないよ。

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

・まずもってバッチじゃ無理。最低WSHぐらいのスクリプトである必要があります。 ・エラーレベルの意味が不明。 もしあるにしてもそれはアプリ側の問題。例えばログに書き出すような仕組みがあるのならログを見れば何のエラーか分かるかもしれない。アプリ側にそのような用意がされていないなら分かりようがありません。 ・起動させようとしたアプリが起動していないというぐらいまでは例えばプロセスを直接見たりして分かるかもしれない。

関連するQ&A

  • java アプリケーション実行時のDOSプロンプトの消し方について

    作成したjava アプリケーションを、DOSプロンプトや バッチファイルから実行すると、DOSプロンプトのウインドウが残ってしまいます。アプリケーション(プログラム)の起動と同時に消去まはた非表示にしたいのですがどうしたらよいでしょうか。よろしくお願いします。

    • ベストアンサー
    • Java
  • アプリケーションの実行プログラムって?

    dell inspiron1100 で XP HEを使っています。 昨日からの現象ですが スタート-プログラム からアプリケーションを開こうとすると 全てのアプリケーションにおいて 【指定されたファイルに対してこの操作を行うプログラムが関連付けられていません。〔フォルダオプション〕コントロールパネルでプログラムを関連付けてください】 と、でます。 フォルダが変わったかな?と思って スタート-プログラムの中にある アプリケーションのプロパティーを見たのですが リンク先はあっています。 どうやらexeを実行するのにエラーが起きているようです。 たとえば エクセルの入っていないパソコンでエクセルファイルを 開くとこういう現象がおきますよね? その場合エクセルをインストールする。またはファイルのプロパティから関連付けられますが、アプリケーションを実行するための 関連付けとなると見当もつきません・・・・・。 プログラムの再関連付けの場合どういたらいいでしょうか? ご教授願えると助かります。 補足としまして スタート-プログラムから アプリケーションを開こうとしてもエラーがでますが 以前作ったファイルからアプリケーションを開いた場合 プログラムは実行されます。 例 スタート-プログラム-エクセル起動 ×エラー(リンク先にEXCEL.EXEあり) エクセルファイル 無題1.xlsをクリック→エクセル起動 無題1表示 ちょっと説明下手ですみませんが よろしくお願いいたします

  • アプリケーションのダウンロード時のエラーメッセージについて

    Windows Meです。 アプリケーションをサイトからDLして開いてインストール しようとしたところ、「This program cannot be in DOS mode.」と表示され動きません。 MS-DOSプロンプトのタグで「MS-DOSプログラムで Windowsを検出しない」にチェックは入っておりません。 考えられる原因と改善方を教えてください。 よろしくお願いします。

  • EXEファイルを 2つ続けて実行する方法を教えてください

    XP上で2つの プログラムを 1回のクリックで実行する方法を教えて下さい 昔のDOSでしたらBATファイルでよかったのですが WINDOWSからだとコマンドプロンプトの画面が残ってしまいます。 宜しくお願い致します。

  • DOSプロンプトでコマンドが動作しない

    batファイルを作るためにとりあえずwindows端末のDOSプロンプト を立ち上げ、コマンドをたたいてみようとしています 端末はwindows7なのですが、DOSプロンプトに対して openコマンドをたたいたら 'open'は内部コマンドまたは外部コマンド、操作可能なプログラム またはバッチファイルとして認識されていません とのメッセージがでます Webで調べるとパスが通ってない?とのことのようですが このopenコマンドがwindows7のどこにあるか あるいはそれがわかった時、どこにどのように記載したらいいか 等、記載のサイトとか方法について教えていただけないでしようか よろしくお願いします。

  • ActivePerlでプログラムを実行するとMS-DOSプロンプトが強制終了する。

    Perlを勉強し始めた者です。 Perlの構築方法等が書かれた本を元にPerlの動く環境を作って早速やって みているのですが、Perlプログラムを実行させるとMS-DOSプロンプトが エラーを発し、DOSウィンドウが強制的に終了させられてしまいます。 その後は再起動をかけないと、同様のエラーが出てDOSウィンドウが 開きません。 これはPerlというよりWindows側の問題のような気もするのですが、何か 解決策がありましたらぜひお願いします。このままですと、Perlでの プログラミングなど到底できません。 以下に私の環境を記します。 OS:Windows Me Perl:ActivePerl ver5.6.1 build 633 httpd:AN HTTPD Browser:Internet Explorer 6.0 エラー内容: (このエラーは別のウィンドウが出てそこに表示されます) 「------------------------------------------------------------- このプログラムで無効な処理が発生したため、強制終了されます。 すべてのプログラムを終了してから、コンピュータを再起動してください。 プログラムで頻繁にエラーが発生する場合は、「スタート」ボタンを クリックして、「ヘルプ」をクリックし、「トラブルシューティング」 の「MS-DOSプログラムに関する問題」を参照して下さい。         [OK]    [詳細(D)] プログラムが無効な操作を実行しようとしました。 エラーが起きたアドレス:06AB:20A6 サービスへの割り込み:なし  -------------------------------------------------------------」 ウィンドウズが起動して初めてPerlプログラムを実行する時はうまく 結果を返します。が、何回か実行させると突然、上のようなエラー メッセージが出てきて強制的にDOSウィンドウが閉じられます。 どなたかこのエラーの回避方法をご存じの方、おられましたらぜひぜひ お教え下さい。宜しくお願いします。

  • アプリケーションエラー

    "NTnCtrl.exe-アプリケーションエラー" 「"0x010013ba"の命令が"0x010013ba"のメモリを参照しました。 メモリが"read"になることができませんでした。 アプリケーションを終了するには[OK]をクリックしてください。プログラムをデバッグするには[キャンセル]を クリックしてください」 と表示されます。 特別これをしたら・・と言う時ではなく 気がついたら出ている状態で、OKを押した所で 常駐ソフトも起動させてるソフトも終了する事はありません。 色々ネットで調べてみましたが、同じエラーの物がなく困っています。 解る方がいらっしゃいましたらよろしくお願いしますm(_ _)m ウイルス&スパイ駆除はしましたが 何も検出されませんでした。 価格COMも除いてたので、一応先ほど自動修復ツールをしてみましたが 感染していなかったようです。 よろしくお願いしますm(_ _)m

  • アプリケーションエラー

    新しいパソコン「NECラヴィノートスタンダード」に買い替えたばかりです。 最近になり、突然一部のアプリケーションソフト「フリーソフトを含む」が起動できません。 アプリケーションソフトを起動させると、○○○○.exe。アプリケーションエラー。アプリケーションを正しく起動できませんでした。0xc00000e5。OKをクリックしてアプリケーションを閉じてください。というエラーメッセージが表示されて起動できません。 詳しい対処法がございましたら、よろしくお願いいたします。 使用OSはwindows10homeです。 ※OKWAVEより補足:「NEC 121ware :ソフトウェア」についての質問です

  • アプリケーションエラーで・・・

    アプリケーションエラー  エラーが発生したため、WinMgmt.exeを終了します。プログラムをもう一度開始する必要があります。 と、何度も出ます。 再起動させても出ます。 どうすればいいか教えてください。 よろしくお願いします。

  • アプリケーションエラー

    フリーゲームの”起動戦士ウィンダムXP”をダウンロードし、起動してみたところエラーが発生し、アプリケーションを起動させることができませんでした。コンポーネント、msvcr71.dllが見つからず起動ができないとのメッセージ。 解決方法を探したところ、MSVCR71.dllをsystem32フォルダに入れれば正常に起動するということでしたのでそれを試したところ、確かに先ほどに出たエラーメッセージは出なくなりましたが、代わりに ウィンダムXP.exe - アプリケーションエラー アプリケーションを正しく初期化できませんでした(0xc00000ba)。[OK]をクリックしてアプリケーションを終了してください。 というエラーメッセージウィンドウが現れます。 他のアプリケーション等には影響は今のところ見られませんし、”MSVCR71.dll”を当該フォルダから外に出しますとまた元の通りのエラーメッセージが現れます。 試しに同フォルダを直接ウィンダムのフォルダに入れましたが、同じアプリケーションエラー(後者の方)が現れました。 msbcr71.dllを探すときに他の方のQ&Aを参考にしましたが私のPCに見られるような症状の報告は見られませんでした。 msbcr71.dllフォルダが明らかに原因なのですが何故これが誤作動を起こすのかは分かりません。 ウィルススキャンもしましたが検出はゼロでした。 どのようにすればアプリケーションを起動できるのか、もしくはどのようにすればエラーメッセージを回避できるのかを教えて頂きたいです。