0

ローカルPCに約15の異なるコンソールアプリがあり、それらはスケジュールされたタスクとして異なる期間で実行されています。

私はこのコンピューターを個人的な使用法(YouTubeでのサーフィンや映画鑑賞など)として使用しているため、画面上でジャンプしていますが、常に手動で最小化する必要があります。

私の目標は、それらが最初に表示され(すでに実行されている)、数秒後に自動的にフォーカスを失うことです。

Windowsのコンソールアプリで可能ですか?

4

1 に答える 1

3

コンソールウィンドウを最小化したい場合は、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();
}
于 2012-11-17T23:13:33.543 に答える