これを使用して、(最終的に) コンソール ウィンドウを非表示にしました。
private static class NativeMethods
{
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
public static void SetConsoleWindowVisibility(Boolean argShow)
{
IntPtr hWnd = NativeMethods.FindWindow(null, Console.Title);
if (hWnd != IntPtr.Zero)
{
if (!argShow)
//Hide the window
ShowWindow(hWnd, 0); // 0 = SW_HIDE
else
//Show window again
ShowWindow(hWnd, 1); //1 = SW_SHOWNORMAL
}
}
}
すべてが少し複雑に見えますが、基本的にはウィンドウへのハンドルを取得し、それを使用して ShowWindow を呼び出します。コンソール アプリなので、コマンド ライン引数を渡して、ウィンドウを非表示にしないようにします。デバッグなどに使用します。
これを program.cs に入れ、コマンド ライン引数をデコードしてから、NativeMethods.SetConsoleWindowVisiblity を呼び出します。
可視性と showintaskbar を設定するだけでは機能しない理由がわかりませんでした。しかし、彼らは間違いなくそうしませんでした