• ベストアンサー
  • 困ってます

【VC#】Windowsアプリケーションからコンソール画面への文字列出力

Visual Studio 2005でのC#プログラミングについて教えてください。 Windowsアプリケーションからコンソール(コマンドプロンプト)に文字列を出力するにはどのようなコーディングを行えば良いのでしょうか? 通常、プロジェクトの新規作成の段階で「コンソール アプリケーション」を選択した場合はConsoleクラスのWriteメソッドやWriteLineメソッドを使用すればそのままコンソールの出力されると思います。 しかし、現在は「Windowsアプリケーション」を選択して開発を行っており、その状態からでは上記メソッドを使用しても視覚的には何も起きません。 コンソールに対して文字列を出力しようとしている理由は、現在ログをテキストボックスに表示させているのですが、そのログの量が非常に多く、扱う文字列のが多くなり処理が重くなってしまっているからです。 (textbox.Text = "新たに発生したログ" + textbox.Text; といった形で処理させています。) もし、コンソールに対する文字列出力が困難、または不可能であれば上記のような処理を実現するために適切な方法についてもご教示頂ければ幸いです。 どうぞよろしくお願い致します。

共感・応援の気持ちを伝えよう!

  • 回答数5
  • 閲覧数3335
  • ありがとう数7

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

  • ベストアンサー
  • 回答No.5
  • ape5
  • ベストアンサー率57% (85/148)

裏技ではありますが、簡単にコンソールを起動する方法があります。 プロジェクトのプロパティで「出力の種類」をコンソールアプリケーションに設定すれば、フォームと一緒にコンソールも起動します。 そうすれば、Console.WriteLine()でコンソールに出力できます。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

無事出力させることが出来ました。 ひとまずこの方法で進めます。 ありがとうございました。

その他の回答 (4)

  • 回答No.4
  • isle
  • ベストアンサー率51% (77/150)

System.Diagnostics.Debugとか。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

MSDNライブラリで調べながら試してみたのですが、うまく使うことが出来ませんでした・・・・ TextWriterTraceListener a = new TextWriterTraceListener.System.Console.Out); Debug.Listeners.Add(a); Debug.WriteLine("test"); Debug.Flush(); としているのですが間違っていますでしょうか?

  • 回答No.3

★アドバイス ・C# から直接 Win32 API は呼べません。  呼ぶためには C# から呼べるインターフェイスを作って下さい。  そうすれば回答者 No.2 さんの回答にあるようにすれば出来ると思います。 ・C# でコンソール・ウインドウの作成、破棄など出来ませんか?  できるようになっていれば Win32 API は使わずにそのメソッド関数を使います。  私の知っている C# の本やサイトでは見つけることが出来ませんでした。 ・以上。参考に。→私もファイルに出力すべきだと思う。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 コンソール・ウインドウの作成、破棄をキーワードに調べてみたのですが、私のほうでもやはり見つけることが出来ませんでした。 アドバイス通りファイル出力に切り替えようと思います・・・

  • 回答No.2

C#からWin32APIが使えるのかどうか知らないのですが、 もし使えるのであれば、 CreateFileでコンソールを作成して、WriteFileで文字列を書き込むのが一般的だと思います。

共感・感謝の気持ちを伝えよう!

  • 回答No.1

おそらく、ファイルにログを出力するのが簡単で、スピードもさほど低下しないんじゃないでしょうか。 どうしても画面に表示させなければならないのでしたら、DataGridView か何か、表形式タイプのコントロールに出力するとかでしょうか。(ログの量にもよると思いますが。)

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 ログは画面に表示させる方向で考えております。 これまでは表示させる対象はテキストボックスを中心に考えていましたが、他のコントロールの使用も検討してみたいと思います。

関連するQ&A

  • VB Windowsアプリ TextBoxについて

    Visual BasicでWindowsフォームアプリケーションを作っています。 下記のようなフォームがあり, ・1つのフォームにTextBoxとButtonが1つずつある ・TextBoxのTextは空 ・ButtonのTextは"abc" 下記のような動作をさせたいです。 ・Buttonをクリックすると,TextBoxにabcが追加で入力される ただし,AppendTextメソッドを使って文字列の末尾に入力するのではなく, ・入力カーソルが文字列の途中にあれば,そこにabcが入力される ・一部の文字列が選択されていれば,その文字をabcに置き換える のような,直接キーボードからabcを入力するときと同じような動作をしてほしいのです。 分かりにくいかもしれませんが,どのようにすれば実現できるか教えてください。

  • unicode文字列(日本語)のファイル出力方法

    お世話になっております。 現在、VC++でプログラミングを行っておりますが、 日本語の文字列のファイル出力ができずに困っております。 参考にしたのは以下のサイトです。 http://sunafukin.jp/dannatti/software/vc/control/secure/fprintf_s.html 作成したプロジェクトファイルは以下の設定です。 ・Visual C++のプロジェクト「Win32」 ・「Win32コンソールプロジェクト」 ・アプリケーションの設定はWindowsアプリケーション ・文字セットにUnicodeを選択 文字セットにUnicodeを利用しなければ、日本語の文字列も正常に出力されるのですが、Unicodeを利用すると日本語が全て「?」と表記されてしまいます。 この「?」が出てしまう問題の解決方法をご存じの方がいらっしゃいましたら、ご教授宜しくお願い致します。

  • Windowsにおけるアプリケーションの標準出力

    コマンドラインアプリケーションではなくGUIを使ったアプリケーションでも、場合によっては内部で標準出力に出力する処理を書いていたりするとは思うのですが、これは普通にアプリケーションを使用しているだけでは見れません。 こういったアプリケーションの標準出力をWindowsにおいて見る方法はありますでしょうか?

  • windows powershellのコンソール上で表示されなくなった

    windows powershellのコンソール上で表示されなくなった上部のデータ(文字)を参照する方法はないでしょうか。 powershellであるscriptを実行しました。その結果としてコンソール上に表示された情報(文字)が予想以上に多く、 上部の方がコンソールの表示範囲を超えてしまった為参照できなくなってしまいました。 ※cmd.exeでも同じ状況になっていると思います。 状況の説明が難しいのですが、 コンソールウィンドウのスクロールバーを一番上までもっていっても今回のscriptの実行結果として表示された情報の初めの行までは表示出来ない状態です。 予めコンソールの出力をテキストファイルなどにリダイレクトするようにして実行すれば良かったのですが。。 powershellに標準出力されたデータはどこかにログなど残っているのでしょうか? windows、powershellに詳しい方、ご教授お願い致します。

  • 文字列の出力で

    はじめまして、vb.netの初心者です。 テキストファイルの作成で下記のようにした場合 FileOpen(1, FileName, OpenMode.Output) Writeline(1,"AAAA")   FileClose(1) "AAAA"と文字列が出力されるところを の""を外して AAAA と出力指定のですが何か良い方法はないでしょうか? よろしくお願い致します。m(_ _)m

  • QRコードの画像ファイルを読んで文字列を出力するソフト

    文字列を入力して、その文字列を表すQRコードを bmpファイルとして出力するソフトはたくさんあります。 この逆を行うWindowsパソコンソフトは無いでしょうか? つまりQRコードの画像ファイルを指定したら、 それが表す文字列を出力するソフトです。

  • 文字列を次々に表示するアプリケーション

    文字列を次々に表示するアプリケーション Javaで文字列を次々に表示するアプリケーションを作りたいんですが、どうすればいいですか? 例えば、 実行ボタンを押すと文字列abを表示 その1秒後に文字列abが消えて文字列cdを表示 さらにその1秒後に文字列cdが消えて文字列efを表示 のような感じです。 それと、文字の表示速度を変える機能もできればほしいです。 どなたか、教えていただければ助かります。

    • ベストアンサー
    • Java
  • 文字列を複数の段落に分割して出力

    次のようなことを実現したいのですが、どのようなアルゴリズムになりますか? ------ 文字列が複数ある。各文字列は改行コード(\n)で区切られた複数行の文字列からなる。 string[STR_NUM]; // STR_NUM: 文字列数 これらの文字列をN段落に分けて出力したい。 ただし文字列の途中行で段落を変えない。 各段落の行数は最適値を求める。つまり、各段落に最も均等になるように振り分ける。 N=2でSTR_NUM=4の場合は次のような感じで出力する。 文字列1文字列1      文字列3文字列3文字列3 文字列1文字列1文字列1  文字列3文字列3 文字列1文字列1      文字列3文字列3文字列3 文字列1          文字列3 文字列2          文字列3文字列3文字列3 文字列2文字列2文字列2  文字列4文字列4               文字列4文字列4               文字列4文字列4文字列4               文字列4 全体で15行あるので、均等に割ると1段落は8行となり、詰めて出力すると文字列3の2行目で改段落されることになります。そうならないように文字列3は2段落目の頭から出力します。 求めたいのは、Nとstring[0]~string[MAX_STR-1]が与えられたときの「1段落あたりの最大行数」と「各段落に出力する文字列」です。 各段落に出力する文字列は結合した状態で、かつ最大行数に合わせるように末尾に改行コードを必要数追加するものとします。 1段落あたりの行数の制限はありません。与えられた文字列によって最適な行数を求めます。

  • VB2010 TextBoxの文字列に正しく入力されないのは何故ですか

    VB2010 TextBoxの文字列に正しく入力されないのは何故ですか? string型の変数に文字列を入れ、TextBox.Textに代入すると文字列の後ろが切れてしまう。 Dim st As String st="s01114DG000555<0?e09" TextBox.Text = st この場合、TextBox.Textには"s01114DG000555<0"となり、後ろの4文字が切れてしまっている。 ちなみに、 TextBox.Text = "s01114DG000555<0?e09" とすると、正常に全文字数が入る。 半角文字列の塊なのに、どうしてこのようなことが起きるのでしょうか? また、これの対応策は何ですか? 以上、よろしくお願いします。

  • Console.writeLineで文字化け

    Console.writeLineで全角文字列が1000戸ぐらい続くStringを出力する場合は文字化けしませんが、半角が1字でも混じると文字化けします。たとえば以下のようなコードです。 line = "アああああああああ【中略】あああああああああああああ" Console.WriteLine(line) 出力結果のところどころに「ああ・あああ」となっている場所があります。なんとなかならないでしょうか? Visual Studio 2003 / 2008 Visual Basic Windows XP