Nascondere la finestra della Console in C#

Di recente ho realizzato un’applicazione per controllare (e limitare) il tempo che mio fratello impiega giornalmente al computer (cattivo!). Avendo la necessità di nascondere qualunque finestra mi sono ingegnato nel trovare una soluzione. Vi mostrerò pertanto la mia personale soluzione per farlo considerando sia un progetto di tipo Console Application che 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 utilizzata l’API FindWindow, utilizzando come chiave il titolo stesso della finestra. Questo metodo è un po’ brutto per trovare l’handle (senza considerare il fatto di avere omonimie). Infatti nella mia soluzione ho utilizzato una proprietà del .NET:

System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
Adesso vi voglio mostrare una semplice applicazione che usa questa proprietà. Per crearla, 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#

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

*