.Net Console Application в Системном лотке

Вы можете просто использовать withContext() или coroutineScope() для запуска другой сопрограммы:

withContext(coroutineContext) {
    launch { ... }
}

В то время как вторая переопределяет Job контекста, но повторно использует контекст:

[ 111]
14
задан ΩmegaMan 16 May 2019 в 15:13
поделиться

3 ответа

В консоли нет окна для минимизации. Он запускается в окне командной строки. Вы можете перехватить сообщения окна и скрыть окно при сворачивании. В вашем приложении можно добавить иконку в трее так же, как вы бы это делали в приложении для Windows. Ну, как-то это пахнет ...

Но: я не уверен, почему вы хотите это сделать. Консольное приложение по дизайну отличается от Windows-приложения. Следовательно, может быть, это вариант, чтобы изменить приложение на приложение формы Windows?

8
ответ дан 1 December 2019 в 06:43
поделиться

Вы не можете скрыть консольное приложение, потому что на самом деле у него нет окна, чтобы скрыть, видя, как оно есть работает в консоли (сама консоль - это просто окно консоли, а не приложение, работающее в ней)

0
ответ дан 1 December 2019 в 06:43
поделиться

Да, вы можете сделать это. Создайте приложение Windows Forms и добавьте компонент NotifyIcon .

Затем используйте следующие методы (, найденный в MSDN ) для выделения и отображения консоли

[DllImport("kernel32.dll")]
public static extern Boolean AllocConsole();

[DllImport("kernel32.dll")]
public static extern Boolean FreeConsole();

[DllImport("kernel32.dll")]
public static extern Boolean AttachConsole(Int32 ProcessId);

, когда ваша консоль находится на экране захватите щелчок кнопки свертывания и используйте его, чтобы скрыть окно консоли и обновить значок уведомления. Вы можете найти свое окно, используя следующие методы ( найден в MSDN ):

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

// Find window by Caption only. Note you must pass IntPtr.Zero as the first parameter.
// Also consider whether you're being lazy or not.
[DllImport("user32.dll", EntryPoint="FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);

Обязательно вызывайте FreeConsole, когда будете готовы закрыть приложение.

22
ответ дан 1 December 2019 в 06:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: