
Microsoft Visual Studio Community 2022 (64 ビット) - Current Version 17.5.5のC#で
Windows Form アプリケーション(.Net Framework4.8)を作成して
そこで次のようにしてbutton1を押してコンソールに文字を出力したかったのですが、
コンソールは出るのですが文字が出力されないです。
これはなぜなのでしょうか?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CallConsoleWindow
{
public partial class Form1 : Form
{
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
private static extern bool AllocConsole();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
AllocConsole();
Console.WriteLine("test");
Console.ReadLine();
}
}
}
No.6ベストアンサー
- 回答日時:
あと考えられるとすると、コンソールのエンコーディングは、ShiftJISなので、WriteLen()がUnicode出力になっていると、NULLを検出するので、ストリングがないという判断かもしれません
日本語で、テストという文字列と、boolで、true
Console.WriteLine(”テスト”);
Console.WriteLine(true);
で書き込めるがテストしていただけますか?
これで、出力されるとなると、VSのビルドオプションの設定の変更の影響のようにも思えます
ご返信ありがとうございます。
それを試してみたのですが、やはり表示されませんでした。
ただそれからいろいろ試してみたのですが、
「出力の種類」を「コンソールアプリケーション」にしたら表示されました。
ちなみにその状態で一応MessageBox.Show()も使用してみたのですが
これも表示されました。
https://s.kota2.net/1683878055.jpg
https://s.kota2.net/1683878031.jpg
普段は「出力の種類」は「Windows アプリケーション」になっているですが、
この設定のまま使っても良いのでしょうか?
No.8
- 回答日時:
色々と確認作業、また、スクショなど撮って頂きありがとうございました
質問者さんの環境には、Insiderにも入っていないようですし、あとは、自分の環境が、Windows Proや、WSL2ぐらいで、こちらが特殊な環境かもしれません
今、一度、コンソールが起動に書き込みができるアプリ(設定がWindowsアプリケーションの場合)をタスクマネージャーで確認したところ
子プロセスとして、C:\Windows\System32\conhost.exeがコンソールアプリとして、起動していました
System32下に存在するので、セキュリティの変更などは出来ませんでしたが、このファイルを実行する場合に、質問者さんの環境と、自分の環境で、何かしらの違いが発生してるのだと思います
出力の種類を「コンソールアプリケーション」にした場合、タスクマネージャーで確認しましたが、自分の環境では、別のプロセスとして、WindowsConsole.exeが立ち上がってるので、問題があるかどうかは、分かりかねますが1行ごとに出力を確認したいという、目的が達成できるのであれば、良いと思います
ご返信ありがとうございます。
こちらでもタスクマネージャーで見たところ
C:\Windows\System32\conhost.exeが
ユーザー名で4つ
SYSTEMで2つ
ありました。
https://s.kota2.net/1683901881.png
Visual Studioで他のプログラムは実行していないのですが、
なんでこんなに多くあるのかが謎です(汗)
まあとりあえず目的は達成できそうなのでこれで良しとします。
回答にご尽力いただきありがとうございました。
No.7
- 回答日時:
色々弄ってみましたが、consoleに変更しなければいけないような部分は、見当たりませんでした
そうなると、環境の違いが関係しそうな部分は
自分:WSL2を入れてる
質問者さん:Insdier Previewではないですか?
WSL2を入れてますが、新しく作ったユーザーではWSL2はdisable状態で、新規に作ったWinFormアプリで問題なく、コンソールに表示されました
で、気になったのが、質問者さんの環境って、Windows Insider Programに参加されてますよね?
もし、そうだとすると、それしか考えられないんですよね
Insiderを停止して、元に戻して試すか、他にIndsider に参加してないPCがあれば、新規にWindowsFormのアプリを作ったときに、問題がないかでしょうか?
ご返信ありがとうございます。
「Windows Insider Program」ってこのことでしょうか?
https://s.kota2.net/1683894841.jpg
「使用を開始する」とあるので、まだ参加してないと思うのですが
どうなんでしょうか?
No.6でも書きましたが、一応「出力の種類」をコンソールアプリケーションに変更したら
できましたので、Windowsフォームアプリで使用する際、これで問題がないようでしたら
この設定で使っていきたいと思っています。
ただデフォルトの設定ではないので気持ち悪い感じはしますが(汗)
No.5
- 回答日時:
確認ありがとうございます。
ReadLine()はEnterキーが入力されるまで、入力を待つので何かキーを入力すると、表示されます。
Admin権限は、PCのアカウントの設定で管理者かどうかというものですが、管理者でないユーザーアカウントを作成し、新規にプロジェクトを作成し、作ってみましたが、問題なく出来るので、質問者さんの環境が壊れてる可能性か、他のケースが考えられます
その一つとして、色々な設定を見ても問題ないので、Formアプリが起動している際のコンソール出力が、どこかにリダイレクトされているような設定になってるように思えます
つまり、VSで作成したプログラムをほかのプログラムで起動して実行して、確認してる等は、ないでしょうか?
https://learn.microsoft.com/ja-jp/dotnet/api/sys …
そうでなければ、一度、Visual Studio 2022のリペアを試してみてはいかがでしょうか?
https://learn.microsoft.com/ja-jp/visualstudio/i …
リペアをしたのちに、新規作成をしたソリューションを再度、リビルドをしていただき、ビルド出力にエラーがないことを確認していただき、
========== すべて再構築: 1 正常終了、0 失敗、0 スキップ ==========
とWriteLine()が、表示されていることを確認していただけますでしょうか?
これで、解決できない場合には、申し訳ないですが、お手上げですね。VSを再インストールしても、問題が起きるように思えます。
ご返信ありがとうございます。
Admin権限の件ですが、たぶんAdmin権限になっているようです。
https://s.kota2.net/1683858345.jpg
>VSで作成したプログラムをほかのプログラムで起動して実行して、確認してる等は、ないでしょうか?
これって要は
new Process().Start();を使って呼び出して試しているということですよね?
いや添付画像で分かる通りNo.2のよっしーラボさんが提示されたコードをそのまま実行しているだけです。
ただもしこの件が解決しないようならnew Process().Start();で呼び出してなんとか使用できないか考えています。
Visual Studio 2022のリペアをして、ソリューションを新規作成して
リビルドして実行してみたのですが、やはり表示されませんでした。
https://s.kota2.net/1683858358.png
Console.WriteLineではなくて、Console.Beep();を追加してみたら
ちゃんと音が鳴っていたので、どうやらWriteLineだけが機能してないみたいなんですよね・・・
https://s.kota2.net/1683859026.jpg
Console.Title = "タイトルの変更";でタイトルの変更もできています。
https://s.kota2.net/1683859451.jpg
ちなみにConsole.CursorLeftでカーソルの移動をしようとしたのですが、これはエラーが出ます。
https://s.kota2.net/1683859610.jpg
うーん、、なにが原因なんだろう・・・
No.4
- 回答日時:
確認ありがとうございます
・念のため、コンソールのバックグラウンドと、フォアグランドカラーの設定をして、かつ、WriteLine()したあとに、ReadLine()で止めても、表示は出ないでしょうか?
・あとは、新規でフォームアプリを作って、自分が提示した方法で、同じようにボタンだけのコントロールを新規作成し、同じ問題が起きるか?起きないか?の確認ぐらいでしょうか
・もし、それでも表示されないのであれば、あとは、今まで動作していた、コンソールへの書き込みプログラムが正常に動作しているか?ですね
・念のため、PCの再起動をかけるのもありです
・また、AllocConsole()の戻り値が0以外になっているかどうか、確認する。
・その他として、プログラムを実行中コンソールが出てる状態で、左上のアイコンを右クリックすると、プロパティが選択できるので、そこから、フォント種を変更してみる
・あとは、もし、admin権限のないユーザーでログインして、作業をしているのであれば、admin権限のあるユーザーで、ログインし実行しても同じかどうかでしょうか?
自分の環境には、WSL2を入れていますが、あまりインパクトはないと思いますが、念のため
正直、他には思いつかないですね
ご返信ありがとうございます。
・>WriteLine()したあとに、ReadLine()で止めても、
これを試してみて発見があったのですが、
Console.ReadLine();を追加して実行します。
そしてbuttonを押すとそのままではWindowsフォームがアクティブですが
コンソールウインドウをクリックしてアクティブにして
キーを入力するとそのキーの文字が表示されます。
これはConsole.ReadLine();ない場合だと、
コンソールウインドウをアクティブにしてキーを入力しても
何も表示されないというか反応がなかったので、違いが出ました。
ここから何か分かることはあるでしょうか?
https://s.kota2.net/1683769557.jpg
・No.2のよっしーラボさんの提示された通りに実行してみましたが
やはり文字は表示されませんでした。
https://s.kota2.net/1683769262.jpg
https://s.kota2.net/1683769275.jpg
・今でもコンソールアプリケーションプロジェクトから作成したプログラムで
Console.WriteLineをすれば文字が表示されたので問題ないと思います。
・PCの再起動でも駄目でした。以前から試していたのですが一度も書き込めたことがないです。
・AllocConsole()の戻り値はTrueでした。
・コンソールのプロパティです
https://s.kota2.net/1683770004.jpg
https://s.kota2.net/1683770027.jpg
https://s.kota2.net/1683770039.jpg
https://s.kota2.net/1683770052.jpg
https://s.kota2.net/1683770063.jpg
・admin権限とかはよく分からないで、とりあえず調べておきます。
No.3
- 回答日時:
分かったかも・・・
Textカラーがコンソールのバックグラウンドと同じ色になってませんか?
Console.ForegroundColor = ConsoleColor.Black;
Console.BackgroundColor = ConsoleColor.White;
など、設定してみてはいかがでしょうか?
https://learn.microsoft.com/ja-jp/dotnet/api/sys …
https://learn.microsoft.com/ja-jp/dotnet/api/sys …
ご返信ありがとうございます。
それを追加してみたのですが、
public Form1()
{
InitializeComponent();
AllocConsole();
Console.ForegroundColor = ConsoleColor.Black;
Console.BackgroundColor = ConsoleColor.White;
Console.WriteLine("test");
}
変わらなかったです。。
一応、ConsoleColor.YellowやConsoleColor.Greenなども設定してみたのですが駄目でした。
まあでもやはりプログラムの処理が来ているか調べるのに
WriteLineが最も分かりやすいメソッドですよね。
コンソールウインドウが表示されてマウスカーソルが点滅しているの時の
点灯しているシーンの画像です。
https://s.kota2.net/1683710740.jpg
No.2
- 回答日時:
出来ていますね。
Windows11 Pro 22H2 22621.1635
VS Cummunity 2022(64bit) Version17.5.5
C#ツール 4.5.2-3.23171.7
.NET Framwork Version 4.8.09032
手順:
1)新規プロジェクトで、「C# Windowsフォームアプリ」→「Windows フォームアプリ」を選択し作成
2)Form.csに、「表示」→「ツールボックス」から「Button」を追加
3)ボタンのサイズを少しおきくし、ボタンを右クリック
4)「プロパティ」→「イベント」を選択し、下記コードの、「Button1_cClick」を「Click」イベントのリストボックスから選択
5)実行
結果:
フォームが立ち上がるとコンソールも立ち上がり、ボタンを押す毎に、コンソールに"test"が表示
補足:
・AllocConsole()をButton1_Clickに移動しても同じ。
・ReadLine()は文字入力待ちになるのでこのサンプルでは、入れてませんが、入れるとEnterキーを押すと、再度、Buttonがアクティブになり、押せるようになります。
Program.cs
=============================
using System;
using System.Windows.Forms;
namespace WinFormsApp1
{
public partial class Form1 : Form
{
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
private static extern bool AllocConsole();
public Form1()
{
InitializeComponent();
AllocConsole();
}
private void Button1_Click(object sender, EventArgs e)
{
Console.WriteLine("test");
}
}
}
=============================

ご返信ありがとうございます。
そうですか、やはりできてないのは環境がまずいんでしょうか・・・
ちなみに
public Form1()
{
InitializeComponent();
AllocConsole();
Console.WriteLine("test");
}
フォームロード時にWriteLineをもってきも、コンソールウインドウは表示されるのですが
やはり文字はでてきません。
一応、関係してるかもしれない画像を添付しました。
よろしければ参照して下さい。
https://s.kota2.net/1683706867.jpg
https://s.kota2.net/1683706875.jpg
https://s.kota2.net/1683706927.jpg
https://s.kota2.net/1683706935.jpg
エディション Windows 11 Home
バージョン 22H2
OS ビルド 22621.1702
エクスペリエンス Windows Feature Experience Pack 1000.22641.1000.0
Microsoft Visual Studio Community 2022
Version 17.5.5
VisualStudio.17.Release/17.5.5+33627.172
Microsoft .NET Framework
Version 4.8.09032
インストールされているバージョン:Community
Visual C++ 2022 00482-90000-00000-AA913
Microsoft Visual C++ 2022
C# ツール 4.5.2-3.23171.7+d17f741546fad2786cbd6394d08619544e53a36d
No.1
- 回答日時:
これで、コンソールが出て、Test文字列が出ないのは、変ですね。
AllocConsole()をForm1()内に移動してませんか?
もし、そうだとしたら、button1_Clickが、ボタンのイベントと関連付けられてない可能性が高いですけど。
ご回答ありがとうございます。
button1_Clickのイベントはちゃんと発生していて
試しにMessageBox.Show("test");で表示されました。
https://ux.getuploader.com/dialogues_txt/downloa …
このサイトを参考にしました。
https://www.wareko.jp/blog/output-text-string-to …
ちなみによっしーラボさんの環境では表示されるのでしょうか?
また他に気になる箇所はありますでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# PC画面を録画するプログラムでdllの読み込みエラー 1 2023/04/22 08:31
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# 「using Windows」でエラーが出る 3 2022/12/23 19:53
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- 英語 『G19 Gen5 MOS - Modular Optic System for Gen5』 の 『 1 2023/03/05 13:37
- 英語 下記の英文の日本語訳をお願いします。 1 2023/03/02 10:01
- 英語 下記の英文を日本語に訳して、その意味を教えてください。 1 2023/03/09 14:13
- 英語 From the data mentioned that extracted from the cu 1 2023/01/25 19:55
- 英語 Modular Optic System (MOS)とは、一体どの様な物の事なのかを教えてください。 1 2023/03/03 09:52
- ボランティア ウクライナ人からどういうこと? 6 2022/03/28 07:37
このQ&Aを見た人はこんなQ&Aも見ています
-
Console.WriteLine で表示されない
Visual Basic(VBA)
-
C#でGUI・CUIの判断する仕方を教えて下さい
C言語・C++・C#
-
windowsフォームアプリケーションでprintfの使用
C言語・C++・C#
-
-
4
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
5
ラジオボタンの初期指定
Visual Basic(VBA)
-
6
DataGridViewの、選択されている行を取り出したい
Visual Basic(VBA)
-
7
regsvr32で登録された一覧を知りたい
UNIX・Linux
-
8
コンソールアプリケーションのコマンドプロンプト画面を非表示
Visual Basic(VBA)
-
9
CFileDialogの最初のディレクトリ設定
C言語・C++・C#
-
10
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
11
ManagementClassが見つからない。
C言語・C++・C#
-
12
DLL参照時に指定されたモジュールが見つかりません。(HRESULT からの例外 0x8007007E) が発生してしまう。
C言語・C++・C#
-
13
C#「オブジェクト参照が必要です」(初心者)
その他(プログラミング・Web制作)
-
14
ダイアログ内コントロールの位置取得について
C言語・C++・C#
-
15
.NETアプリを作ったときの .manifest ファイルって必要なの
C言語・C++・C#
-
16
DataGridViewでyyyy/MM/dd
Visual Basic(VBA)
-
17
C# ReadOnlyのTextBoxで
C言語・C++・C#
-
18
C# シリアル通信でデータ受信時の欠損について
C言語・C++・C#
-
19
C# 超初心者です。 this.Refresh();という文を使いたいです
C言語・C++・C#
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
MMDでavi出力が出来ない
-
データベースの内容をCSVへ出力。
-
cout と cerrの違い
-
Access 抽出結果をExcelへ出力
-
テキストファイルから特定の文...
-
スマホの画面をそのままスクリ...
-
ActiveReportsでPDFを出力した...
-
【VC#】Windowsアプリケーショ...
-
海外の110Vの電気製品を日本で...
-
マクロを教えてください。
-
Accessの値をExcelに縦横入替出...
-
[C++] 微分のプログラミングが...
-
C++の’ \\n’と ’endl’ の違いに...
-
プログラムについての質問です...
-
Windows Formアプリからコンソ...
-
VBAでテキスト出力時のスペース...
-
[VB.NET] テキスト出力で困って...
-
VSC++でDLL出力でのデバックビルド
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
MMDでavi出力が出来ない
-
コンセントの電力は入力と出力...
-
Windows Formアプリからコンソ...
-
Accessのテーブルからcsv出力す...
-
プログラムについての質問です...
-
VBAのExecメソッドで画面を非表...
-
cout と cerrの違い
-
アクセスでエクセルに出力する...
-
COBOLのMOVEで桁数が異なる場合
-
C# 標準出力のencodingをutf8に...
-
CRC16計算について
-
4種類(A4縦、A4横、A3縦、A3横)のヘ...
-
TV出力ポートをOFFにすれば良い...
-
C#でアクセス権限の取得方法が...
-
【UWSC】WEBページ中の特定文字...
-
KEYENCEのシーケンスプログラム...
-
【ExcelVBA】最終行の取得で困...
-
ListViewの複数選択について
おすすめ情報