如何防止C#控制台应用程序将优先级作为活动窗口?
如果有人问这个问题,我很抱歉,但我找不到答案。我可能找不到合适的术语 我有一个控制台程序,需要在后台运行。用户需要控制台在运行时保持打开状态,但需要它在启动时不成为活动窗口。他们希望继续目前正在进行的工作,而不必每次启动时都最小化控制台如何防止C#控制台应用程序将优先级作为活动窗口?,c#,console,C#,Console,如果有人问这个问题,我很抱歉,但我找不到答案。我可能找不到合适的术语 我有一个控制台程序,需要在后台运行。用户需要控制台在运行时保持打开状态,但需要它在启动时不成为活动窗口。他们希望继续目前正在进行的工作,而不必每次启动时都最小化控制台 此控制台应用程序运行多次,每次都有一个新的控制台窗口。如何将控制台“隐藏”到当前正在运行的任务/窗口后面?您可以使用以下代码以编程方式最小化/恢复控制台窗口: using System; using System.IO; namespace ConsoleAp
此控制台应用程序运行多次,每次都有一个新的控制台窗口。如何将控制台“隐藏”到当前正在运行的任务/窗口后面?您可以使用以下代码以编程方式最小化/恢复控制台窗口:
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);
我不知道有什么方法可以阻止控制台窗口显示。在控制台应用程序中,最好的方法是在应用程序加载后立即隐藏窗口。视觉效果是快速打开控制台窗口,然后消失。也许不是最优的 更好的方法可能是使用Winexe,而不是控制台应用程序。在Windows应用程序(可能是winforms应用程序)中,永远不要实例化第一个表单。因此,任何东西都不会显示出来 这会阻止用户交互,但从您的描述来看,这似乎是您想要的
但我不确定您是否可以控制“控制台应用程序”。为什么您需要控制台窗口可见?是否完全没有GUI更好?就让它在后台运行?这很容易做到。这正是我所需要的。我会在应用程序启动后立即隐藏窗口,并允许用户继续执行当前任务。谢谢