ローカルPCに約15の異なるコンソールアプリがあり、それらはスケジュールされたタスクとして異なる期間で実行されています。
私はこのコンピューターを個人的な使用法(YouTubeでのサーフィンや映画鑑賞など)として使用しているため、画面上でジャンプしていますが、常に手動で最小化する必要があります。
私の目標は、それらが最初に表示され(すでに実行されている)、数秒後に自動的にフォーカスを失うことです。
Windowsのコンソールアプリで可能ですか?
ローカルPCに約15の異なるコンソールアプリがあり、それらはスケジュールされたタスクとして異なる期間で実行されています。
私はこのコンピューターを個人的な使用法(YouTubeでのサーフィンや映画鑑賞など)として使用しているため、画面上でジャンプしていますが、常に手動で最小化する必要があります。
私の目標は、それらが最初に表示され(すでに実行されている)、数秒後に自動的にフォーカスを失うことです。
Windowsのコンソールアプリで可能ですか?
コンソールウィンドウを最小化したい場合は、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();
}