1. ホーム
  2. c#

[解決済み] フォームアプリケーションでコンソール出力/ウィンドウを表示するにはどうすればよいですか?

2022-04-27 15:20:47

質問

早速ですが、非常に基本的な例を挙げてみましょう。

using System;
using System.Windows.Forms;

class test
{ 
    static void Main()
    { 
        Console.WriteLine("test");
        MessageBox.Show("test");
    }
}

これをデフォルトのオプションでコンパイルすると(コマンドラインでcscを使用)、予想通り、コンソールアプリケーションにコンパイルされます。また System.Windows.Forms メッセージボックスも表示されます。

ここで、オプション /target:winexe を選択するのと同じだと思います。 Windows Application をプロジェクトオプションから選択すると、予想通りメッセージボックスが表示されるだけで、コンソール出力は表示されません。

(実際、コマンドラインから起動した瞬間、アプリケーションが完了する前に次のコマンドを発行することができます)。

そこで質問ですが、コンソール アプリケーションから "windows"/forms を出力できることは知っていますが、Windows アプリケーションからコンソールを表示する方法はあるのでしょうか?

どのように解決するのですか?

このようにすればうまくいくはずです。

using System.Runtime.InteropServices;

private void Form1_Load(object sender, EventArgs e)
{
    AllocConsole();
}

[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool AllocConsole();