• 締切済み

コンソールの出力をパイプでダイレクトに受け取りたい(VB)

標記の件、お聞きします。 他のクライアント(VBアプリ等)からの利用が想定されていないコンソールアプリには、実行結果がコンソール(DOSプロンプト)にしか出力できないものが多いと思います。 このようなプログラムをVBで利用する場合、出力を一度ファイルにリダイレクトしてから、そのファイルをVBで読み込む方法が一般的だと思いますが、ファイルを介することなく、パイプ等を使用して出力を直接VBで受け取ることは可能でしょうか? 私が調べた限りでは方法を見つけられなかったのですが、ご存知の方教えてください。 そもそも、C++、COM(ActiveX)の知識、スキルがあれば、VBから使いやすいインターフェイスを作ることはいくらでも可能な訳で、パイプにこだわる必要はなさそうですが・・・。 仕事でも学校の課題(笑)でもないので、暇なときに気が向いたらコメントを頂けると幸いです。  

noname#4564
noname#4564

みんなの回答

  • momoturbo
  • ベストアンサー率55% (49/88)
回答No.1

windowsの標準コンソールアプリ(ping、ipconfigなど)はAPIを 使用するとなんとかなると思いますが、 フリーとかシェアのアプリのこととなると・・・? こんなことしか思い浮かびませんでした。

noname#4564
質問者

お礼

コメントありがとうございます。 ここのログを探した結果、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=204620 ↑から辿って↓に行き着きました。 http://www1.harenet.ne.jp/cgi-bin/cgiwrap/unaap/lib/libsmp.cgi?lang=&function=CreatePipe ざっと目を通してみたのですが、API使いまくりなのはまあ仕方がないとしてマルチスレッドを使っているらしく、VBでまともに動くか怪しい感じがします。(^-^; 幸い、このような機能を使う予定は今のところないのですが、仕事上で必要性が生じた場合は、別の手段を検討した方がよいような気がします。 速度が要求される場面でなければファイルへのリダイレクトでじゅうぶんだし、そもそも性能要求が厳しい案件だったらVBなんか使わないし・・・。

関連するQ&A

  • コンソール出力をテキストに出力する方法(コンソール出力は残しつつ)

    【質問】  Perl内部で実行される実行ファイル(.exe)のコンソール出力(STDOUT,STDERR)をテキストファイルに出力したい。(Perlのコンソール出力も含む。) ※コンソール出力は残しつつ。 (コマンドプロンプトの)パイプとリダイレクトを使用して上手くいくかと思ったのですが、標準出力と標準エラーとでは標準エラーが先に出力されてしまい、本来出力される順番で出力されない。(標準出力はバッファにたまるため??) 何かいい方法はありませんでしょうか? 【環境】  Windows2000  Active Perl 5.8.8

    • ベストアンサー
    • Perl
  • VBでコンソールアプリの出力を取得したいのですが

    ネット上で入手したコマンドプロンプト上で使うアプリをGUIで操作できるようにしたく出力を取得したいのですが出来ません。 ネットで出力の取得方法を調べて下記のようにしているのですがどうやっても取得できません・・・ (ipconfig や dir 等は問題なく取得できたのですが・・・) VBは2008です Dim p As New Process() p.StartInfo.FileName = "cmd.exe" ' 実行するファイル p.StartInfo.Arguments = "aaa.exe" ' 目的のアプリ p.StartInfo.CreateNoWindow = True ' コンソールを開かない p.StartInfo.UseShellExecute = False ' シェル機能を使用しない p.StartInfo.RedirectStandardOutput = True ' 標準出力をリダイレクト p.Start() ' アプリの実行開始 Dim output As String = p.StandardOutput.ReadToEnd() ' 標準出力の読み取り output = output.Replace(vbCr + vbCrLf, vbLf) ' 改行コードの修正 TextBox1.Text = output ' [出力]ウィンドウに出力 試しに自分で文字を表示するだけのコンソールアプリを作成して試したのですがそれは取得できました。 目的のアプリが特殊なのでしょうか? ソースがあったので見てみたのですがC言語だった為詳しくわからなかったのですが、出力は「Console.WriteLine」ではなく「fputs」を使用して出力していました・・・これが原因なのでしょうか? どうにかして、出力を取得する方法はないものでしょうか? よろしくお願いします。

  • NTでのプロセス出力

    こんにちは。 WindowsNT4.0で、タスクマネージャのプロセス (稼動しているプロセス)を、 テキストにリダイレクト出力したいのですが、 dosプロンプト等を使って何か良い方法はありますでしょうか? よろしくお願いいたします。

  • Visual StudioでDOS窓以外に出力する方法は?

    Visual Studio 2008 を使って、プログラミングの勉強をしてます。 まだコンソールアプリだけで、フォームアプリの勉強には入って いません。 ですので、出力は Console.WriteLine を使ってますけど、これで プログラムを実行すると、DOS窓に出力されます。結果を見るだけなら それでもいいんですけど、DOS窓からはクリップボードにコピーが 出来ないので、たとえば出力結果をこの掲示板に載せて質問したい 時とかは、自分でそれを見ながら打ち込まなければなりません。 DOS窓を開いて exe ファイルを叩いて実行すれば、ファイルに リダイレクト出来るのは分るんですけど、ディレクトリを移動する だけでも面倒ですし、プロジェクトごとにディレクトリが変わるので PATH を切っておく方法も使えません。Visual Studio から実行した 出力結果を、ファイルに出す方法ってありますでしょうか? 今はプロジェクトを作る時に「空のプロジェクト」を選んで、 「コードファイル」を追加してソースコードを打ち込んでます。

  • コンソールアプリケーションについて

    VB.netでコンソールアプリケーションを作成しています。 処理結果をコマンドプロンプトに出力しているのですが、出力するコマンドプロンプト画面をカスタマイズしたいと考えています。  具体的には、背景画面の色を変えたり、出力文字サイズを変えたり、画面サイズを変えたいと思っています。 詳しい方、おしえてください。

  • DOSプロンプト 特殊文字の出力

    はじめまして DOSプロンプトでバッチを組もうとしているのですが、 リダイレクトの>の文字をリダイレクトで別ファイルに出力したいのですがうまくいきません。 通常文字として認識するにはどうすればよいのでしょうか? ご教授願います。 イメージ echo test>test>> output.txt ↓ output.txtに出力したい文字 test>test

  • コンソールアプリケーションのコマンドプロンプト画面を非表示

    回答をして頂いてる方、お疲れ様です。 そして、よろしくお願いします。 現在、vb.netのコンソールアプリケーションを作成しています。 出来上がったexeファイルを実行すると、コマンドプロンプト画面(DOS画面)が実行中表示されますが、その画面を非表示にする方法はありますか? 知っている方がいましたら、教えてください。 よろしくお願いします。

  • コンソールアプリ内でDosコマンドを使用したい

    kirishima8と申します。 よろしくお願いします。 開発環境 WindowsVista business 32bit Visual Studio 2005 VC++ Win32アプリでコンソールアプリで、Dosのコマンドラインを利用したいのです。 新たにbatファイル等を作成・実行するのではなく、ずっと同一のコンソールウィンドウを利用し、かつ、Dosコマンドをプログラム側から利用できたらと考えています。 コマンドプロンプトのような機能を、自分で作ったアプリに実装させたいというのが最終的な目標となります。 MSDNで調べてみたところ、WriteConsoleInput()や関連APIが見つかりました。 しかしながら、パラメータの説明が何を指すのかという点が、現時点で私には解り辛いです。 何らかの情報をお持ちの方、ご教授ください。 未熟者ですので、上記では内容が伝わらないかもしれません。 何か不明な点がございましたら、お尋ねになってください。 よろしくお願いします。

  • Windowsから直接起動するアプリにリダイレクトを設定するには?

    Windowsから直接起動するアプリにリダイレクトを設定するには? 「ファイル名を指定して実行」から直接アプリを起動し、それにリダイレクトを設定したいのですが、指定したファイルに出力されずに困っています。 例.「ファイル名を指定して実行」→「ipconfig > c:\hoge.txt」を入力= コンソールに出力 コマンドプロンプト上から「ipconfig > c:\hoge.txt」を実行するとhoge.txtに出力されるので、もしかしたらリダイレクト機能はWindowsではなく、コマンドプロンプトが持ってる?と疑っています。 だとしたら、Windowsから直接アプリを起動する場合、リダイレクトは設定できないことになりますが、この認識であっているでしょうか? 環境:Windows XP

  • コマンドプロンプトでDOSプログラムの文字が表示されない

    XPのコマンドプロンプトで、MS-DOS用プログラムを実行すると、文字が表示されないことがあります。(空行が何行か出てきます) 例えばこのソフトです:http://www.vector.co.jp/soft/dos/util/se004775.html このソフトを実行して文字が表示されなくてもタイムスタンプは変わっていますし、出力をリダイレクトするとファイルに文字が出力されているので、プログラム自体は動作しています。 なお、Win32コンソールアプリの表示は正常です。 これが仕様なのでしょうか。それとも、何か表示する方法があるのでしょうか。

専門家に質問してみよう