如果有人问过我很抱歉,但我找不到答案。我可能没有找到合适的条款。
我有一个需要在后台运行的控制台程序。用户需要控制台在运行时保持打开状态,但需要它在启动时不会成为活动窗口。他们希望继续他们目前正在进行的工作,而不是每次启动时都要尽量减少控制台。
此控制台应用程序多次运行,每次都有一个新的控制台窗口。如何在当前正在运行的任务/窗口后面“隐藏”控制台?
答案 0 :(得分:6)
您可以使用以下代码以编程方式最小化/恢复控制台窗口:
using System;
using System.IO;
namespace ConsoleApplication1
{
class Class1
{
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
private const int SW_MINIMIZE = 6;
private const int SW_MAXIMIZE = 3;
private const int SW_RESTORE = 9;
[STAThread]
static void Main(string[] args)
{
IntPtr winHandle =
System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
ShowWindow(winHandle, SW_MINIMIZE);
System.Threading.Thread.Sleep(2000);
ShowWindow(winHandle, SW_RESTORE);
}
}
}
如果您正在使用Process.Start启动控制台应用程序,请更好地使用它:
System.Diagnostics.ProcessStartInfo process= new
System.Diagnostics.ProcessStartInfo(@"MyApplication.exe");
process.WindowStyle=System.Diagnostics.ProcessWindowStyle.Minimized;
process.UseShellExecute=false; // Optional
System.Diagnostics.Process.Start(process);
答案 1 :(得分:1)
我不知道阻止控制台窗口显示的方法。控制台应用程序中的最佳方法是在应用程序加载后立即隐藏窗口。视觉效果是快速打开控制台窗口,然后消失。也许不是最佳的。
更好的方法可能是使用Winexe而不是控制台应用程序。在Windows应用程序内部(可能是winforms应用程序),永远不要实例化第一个表单。因此,什么都没有显示出来
这可以防止用户互动,但是根据您的描述,听起来就像您想要的那样。
但我不确定你是否可以控制“控制台应用程序”。