Di recente ho fatto un’applicazione per controllare quanto tempo mio fratello tiene acceso il computer. Ma per farlo, ho avuto bisogno di nascondere qualunque finestra. Per questo motivo vi mostrerò la mia personale soluzione per farlo considerando un progetto di tipo Console Application ed uno di tipo Windows Form Application.
Console Application
Abbiamo prima di tutto bisogno dell’handle della finestra della console, e poi abbiamo bisogno di nasconderla utilizzando l’API ShowWindow. Per cercare questo handle, solitamente viene fatta una ricerca di una finestra con un titolo particolare utilizzando l’API FindWindow. Ma questo è un modo un po’ brutto per trovare l’handle. Infatti nella mia soluzione ho utilizzato una proprietà del .NET:
System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;Adesso vi voglio mostrare un semplice programma che usa questa proprietà. Crea una nuova Console Application e chiamala MyHideConsole. Adesso, per fare un test, puoi provare ad incollare il seguente codice nel file Program.cs:
using System;
using System.Runtime.InteropServices;
using System.Diagnostics;
namespace MyHideConsole{
class Program{
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
static void Main(string[] args){
IntPtr h = Process.GetCurrentProcess().MainWindowHandle;
ShowWindow(h, 0);
while (true){
System.Threading.Thread.Sleep(1);
//Do what you want
}
}
}
}
Windows Forms Application
Questa volta le cose sono più semplici. Per fare un’applicazione che non mostra nessuna finestra, dovrai giusto non mostrare nessuna finestra! Questo può essere fatto dalla funzione main rimuovendo la seguente linea:
Application.Run(new MyForm());
Un commento su “Nascondere la finestra della Console in C#”
Peferct shot! Thanks for your post!