我用它来隐藏控制台窗口,(最终)。
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 不起作用。但他们绝对没有