【问题标题】:C# console application lose focusC# 控制台应用程序失去焦点
【发布时间】:2012-11-06 07:20:42
【问题描述】:

我的本​​地 PC 上有大约 15 个不同的控制台应用程序,它们以不同的时间段作为计划任务运行。

由于我将此计算机用作个人用途(例如在 YouTube 上冲浪或看电影) 它们在我的屏幕上跳跃,但我必须始终手动将它们最小化。

我的目标是,我希望它们首先出现(已经在这样做)并在几秒钟后自动失去焦点。

是否可以在 Windows 上使用控制台应用程序?

【问题讨论】:

标签: c# windows scheduled-tasks console-application


【解决方案1】:

如果要最小化控制台窗口,可以使用WinApi

const Int32 SW_MINIMIZE = 6;

[DllImport("Kernel32.dll", CallingConvention = CallingConvention.StdCall, SetLastError = true)]
private static extern IntPtr GetConsoleWindow();

[DllImport("User32.dll", CallingConvention = CallingConvention.StdCall, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool ShowWindow([In] IntPtr hWnd, [In] Int32 nCmdShow);

private static void MinimizeConsoleWindow()
{
    IntPtr hWndConsole = GetConsoleWindow();
    ShowWindow(hWndConsole, SW_MINIMIZE);
}

用法:

static void Main(string[] args)
{
    Console.WriteLine("Starting foo...");
    Thread.Sleep(1000); // hold console for a second on the screen
    MinimizeConsoleWindow();
    Console.ReadKey();
}

【讨论】:

  • 这就是我想要的。谢谢!
猜你喜欢
  • 2020-10-02
  • 2011-08-05
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多