私のWPFアプリケーションでは、コンソールウィンドウをデバッグ/メッセージウィンドウとして使用しています。ユーザーが望むようにウィンドウを表示および非表示にするオプションが設定されており、すべてがうまく機能します。唯一の問題は、ユーザーがコンソールウィンドウを閉じると、プログラム全体が終了することです。ユーザーがXをクリックしたときに、アプリケーションを終了するのではなく、コンソールを非表示にするように、これをオーバーライドするにはどうすればよいですか?
これは私がこれまでに持っているものです:
const int SW_HIDE = 0;
const int SW_SHOW = 5;
public static bool ConsoleVisible { get; private set; }
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
public static void HideConsole()
{
var handle = GetConsoleWindow();
ShowWindow(handle, SW_HIDE);
ConsoleVisible = false;
}
public static void ShowConsole()
{
var handle = GetConsoleWindow();
ShowWindow(handle, SW_SHOW);
ConsoleVisible = true;
}
**これを利用したい人のためにあなたは必要です:using System.Runtime.InteropServices;
このコードはこの回答から派生しました:https ://stackoverflow.com/a/3571628/649382
** 編集 **
もう少し見回すと、これは不可能のようです。私はここで答えを見ました:https ://stackoverflow.com/a/12015131/649382コードがC ++にあるように見え、それがC#であることがわからないことを除いて、終了ボタンの削除についても受け入れられます。別。
**編集2**
私はC#への変換を理解することができ、それを以下の答えとして書きました。