很抱歉如果这个问题已经被提出过,但我找不到答案。我可能没有用正确的术语搜索。
我有一个控制台程序需要在后台运行。用户需要控制台保持打开状态,但需要它在启动时不成为活动窗口。他们希望能够继续当前正在进行的工作,而不必每次启动时都将控制台最小化。
这个控制台应用程序会多次运行,每次都会新建一个控制台窗口。如何让控制台“隐藏”在当前运行的任务/窗口后面?
很抱歉如果这个问题已经被提出过,但我找不到答案。我可能没有用正确的术语搜索。
我有一个控制台程序需要在后台运行。用户需要控制台保持打开状态,但需要它在启动时不成为活动窗口。他们希望能够继续当前正在进行的工作,而不必每次启动时都将控制台最小化。
这个控制台应用程序会多次运行,每次都会新建一个控制台窗口。如何让控制台“隐藏”在当前运行的任务/窗口后面?
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);
}
}
}
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);
我不知道有什么方法可以防止控制台窗口显示。在控制台应用程序中,最好的方法是在应用程序加载后立即隐藏窗口。视觉效果是控制台窗口快速打开,然后消失。也许不是最优的。
一个更好的方法可能是使用Winexe而不是控制台应用程序。在Windows应用程序(可能是winforms应用程序)内部,永远不要实例化第一个表单。因此,什么也不会显示。
这可以防止用户交互,但从您的描述来看,这似乎是您想要的。
但我不确定您是否对“控制台应用程序”具有控制权。