Applicazione console .NET che non porta una console
-
06-09-2019 - |
Domanda
Ho un'applicazione console che sto usando per eseguire i lavori pianificati attraverso le finestre di pianificazione. Tutte le comunicazioni da / per l'applicazione è in e-mail, la registrazione degli eventi, registri del database. C'è un modo per eliminare la finestra di console da venire?
Soluzione
Certo. Costruirlo come un app WinForms e mai mostrare il proprio modulo.
Basta essere attenti, perché allora non è davvero una console app più, e ci sono alcuni ambienti in cui non sarà in grado di utilizzarlo.
Altri suggerimenti
Borrowed da MSDN ( testo del link ):
using System.Runtime.InteropServices;
...
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName,string lpWindowName);
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
...
//Sometimes System.Windows.Forms.Application.ExecutablePath works for the caption depending on the system you are running under.
IntPtr hWnd = FindWindow(null, "Your console windows caption"); //put your console window caption here
if(hWnd != IntPtr.Zero)
{
//Hide the window
ShowWindow(hWnd, 0); // 0 = SW_HIDE
}
if(hWnd != IntPtr.Zero)
{
//Show window again
ShowWindow(hWnd, 1); //1 = SW_SHOWNORMA
}
E 'un hack, ma il seguente post sul blog descrive come è possibile nascondere la finestra della console:
http: //expsharing.blogspot .com / 2008/03 / NascondiMostra-console-window-in-net-black.html
Pianificare l'operazione per l'esecuzione come un utente diverso da quello del conto e non sarà possibile ottenere una finestra popping up. . .
È sufficiente configurare l'operazione pianificata come "Run se l'utente è connesso o meno".
Perché non rendere l'applicazione di un servizio di Windows?