- 締切済み
VBからDOS画面に表示されている文字を読み取りたい
どなたかご存知の方教えてください。 あるプログラムがDOS画面で処理され正常に処理されたら「正常に処理されました。何かKEYを押してください」とDOSの画面で止まってしまいます。これに対応して予め起動したプログラムからこのDOS画面に向けて改行KEYなどを送って先に進めることは出来る様になったのです。 ですが、エラー時の対応が出来ず困っています。 そのDOSで処理するプログラムはエラーの時、ログの出力などは無いようで、ただ画面に「エラーが発生しました。xxxxが原因です。何かKEYを押すと終了します」と表示して停止します。 このDOS画面に表示されたメッセージを読み取って処理を継続するかどうかを判断したいのですが、どの様にすればよいのでしょうか? そのプログラムはメーカ作成のもので、こちらから変更依頼しても受け入れられるようなものではありません。 WindowsXpSP2でVB(ver6.0)による開発です。 WIN32のAPI使用でも結構です。 よろしくお願いいたします。
- toyokazu
- お礼率36% (8/22)
- Visual Basic
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nda23
- ベストアンサー率54% (777/1415)
Shellを使う方法と、WindowsAPIを使う方法があります。前者の方が簡単ですが、Dos窓が開くことが欠点です。 Shellを使う方法は以下の通りです。 Declare Sub Sleep Lib "KERNEL32" (ByVal m As Long) Dim WSH, EXE, StdIn, StdOut, StdErr, Txt Set WSH = CreateObject("WScript.Shell") Set EXE = WSH.Exec("C:\~\xxx.exe") '★プログラムの実行 Set StdIn = EXE.StdIn Set StdOut = EXE.StdOut Set StdErr = EXE.StdErr StdIn.Write vbCr '★あらかじめ「何か」をキーインしておく Do While EXE.Status = 0 Sleep 100 '★100ミリ秒間待機 Loop '★プロセス終了コードを判断する場合 If EXE.ExitCode = 0 Then '★標準出力を読み出す場合 Do Until StdOut.AtEndOfStream '◎EOFまでのループ Txt = StdOut.ReadLine() 大抵の場合はプロセス終了コードを参照すれば良いと思います。 WindowsAPIを使う場合はもっと細かい制御が可能ですが、大変難しい処理なので、とりあえずは上記方法を試してみてください。
- equinox2
- ベストアンサー率48% (321/660)
Dos画面で動くプログラムの表示をファイルにリダイレクトして、そのファイルを読む方法ではダメですか? こんな感じのバッチで、メーカー作成のプログラムにキー入力を渡せればうまくいくと思いますが・・ echo A | プログラム名.exe > Result.txt #pauseで待つバッチで試したらうまくいきました・・
お礼
返事が遅くなりました。回答ありがとうございます。 残念ながら、この方式では、途中で何かの入力を求められると対応する方法が無く VBで開発するのを諦めてCでプロセス起動してから、STDIN,STDOUTをコントロールすることにしました。ありがとうございました。
関連するQ&A
- Aプログラムの画面表示情報をVBより参照したいのですが....
最近VB2005をはじめた超初心者です。 Aと言うプログラムの画面表示上に通常0の数字が入っている項目があります、この項目が0→1になったときVB側で情報をつかみVB側で作成した処理をさせたいと思っています。 教えてgoo、ネット等で調べましたが同類の回答が見つかりませんどうぞよろしくお願いします。 現在わかったこと。 1.画面上の表示データを調べるにはウィンドウエックスプローラを使うらしい。 2.WIN32APIに対してGETを発行するらしい。 できましたら手順とサンプルを回答していただければ大変助かります。
- ベストアンサー
- Visual Basic
- DOS窓が閉じてしまう。
こんばんは。Cpad for Borland C++Compilerを使っています。 入力後コンパイルされ(正常に) そしてDOS窓が開きますがそのまま 一瞬表示され(簡単な文字列を表示させるプログラムです)そしてそのまま窓が閉じてしまいます。 これを一時停止させて表示させる手法は何かないのでしょうか? OSはWINDOWSXPSP2 です。
- ベストアンサー
- C・C++・C#
- DOSのエラー
WINDOWS2000でjavaをやっています。DOSの画面で、プログラムを実行すると"[I@5224ee"というエラーが表示されるのですが、何のエラーか知っている方は教えてください。 ちなみに、その表示は出てもちゃんとプログラムは動きます。
- ベストアンサー
- Windows NT・2000
- DOS窓の非表示について
常駐で動くC++のプログラムがいくつかあり、 それらの初回起動はBATファイルで『start aaaa.exe』のように 起動をかけています。 C++のプログラムはDOS窓が表示されるようになっていて プログラムが動くたびにパソコンの画面上で複数のDOS窓が チカチカッとなってしまい、とてもわずらわしく、 出来ればDOS窓を非表示にしたいのですが、何か方法はありませんでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- Vista の dos窓で漢字表示
vista の DOS窓でDBXLのプログラムを動かすのですが XP では正常に表示されていたメニューが vista では文字化けして読めません DOS窓でプログラム中のメニューの漢字を表示するにはどうすればよいですか
- 締切済み
- その他(業務ソフトウェア)
- キーの入力をVBで受けたいんです。
VBで簡単な業務支援をしたいと思っています。 VBのアプリケーションがアクティブになっていなくても(起動はしてる)、あるキーの入力を感知して、VBがアクティブになりイベントが動くような処理はできないでしょうか? できればVBでやりたいのですが、Windowsの機能やAPIを使ってでもかまいませんので方法がありましたら教えてください。
- 締切済み
- Visual Basic
- エラー表示を一画面ずつに・・・。
Java初心者です。お願いします。 ちょっと長いプログラムをコンパイルしたら、多数のエラーのせいで、Dosプロンプトの画面がダーーッと上に上がっていってしまって、初めのほうのエラーのチェックができません。 一画面ずつ表示する方法はないのでしょうか? よろしくお願いします。
- ベストアンサー
- Java
- バッチファイル実行時に起動するDOS画面を非表示に。
質問させて下さい。 あるバッチファイルを実行するとDOS画面が表示されますが、このDOS画面を表示させずに処理を行わせることは可能なのでしょうか。 思わしきところでCLSかな?と考えて検証してみましたが画面自体は表示されたままです。 ご存知の方、宜しくお願いします。
- 締切済み
- その他(プログラミング・開発)
- 【DOSコマンド】バックグラウンドでの実行
お世話になります。 Windows環境にて、DOSのコマンドから、とあるプログラムを起動したいと考えております。 例えば、『c:\hidemaru.exe (改行) exit;』 という感じで。しかし、このままではプログラムを実行中はDOS画面が起動したままになってしまいます。 そこでプログラムは起動し、DOS画面は閉じる、といった書き方をご存知の方はいらっしゃいますでしょうか? よろしくお願いいたします。
- ベストアンサー
- Windows系OS
お礼
返事が遅くなりました。回答ありがとうございます。 こんな方法があったのですね。少し時間が経ってしまいましたので、 VBで開発するのを諦めてCのプログラムでプロセス起動してから、STDIN,STDOUTをコントロールすることにしました。ありがとうございました。