Ho un programma che deve essere seduto in background e quando un utente si connette a una sessione RDP farà un po 'di installazione dell'ambiente quindi avvia un programma. Quando il programma è chiuso, eseguirà alcune operazioni di manutenzione e disconterà la sessione.Come rendere un programma non visualizzato in Alt-Tab o sulla barra delle applicazioni
L'attuale modo in cui lo sto facendo è che il server terminal avvia questa applicazione. Questo è costruito come applicazione Windows Form tenere la finestra console da rivelare:
public static void Main()
{
//(Snip...) Do some setup work
Process proc = new Process();
//(Snip...) Setup the process
proc.Start();
proc.WaitForExit();
//(Snip...) Do some housecleaning
NativeMethods.ExitWindowsEx(0, 0);
}
Mi piace molto questo perché non v'è alcuna voce nella barra delle applicazioni e non c'è niente che mostra in alt-tab. Comunque per fare questo ho rinunciato all'accesso a funzioni come void WndProc(ref Message m)
Quindi ora non riesco ad ascoltare i messaggi di Windows (come WTS_REMOTE_DISCONNECT
o WTS_SESSION_LOGOFF
) e non ho un handle da usare per bool WTSRegisterSessionNotification(IntPtr hWnd, int dwFlags);
Vorrei che il mio codice fosse più robusto così da farà la pulizia della casa se l'utente si disconnette o si disconnette dalla sessione prima che chiuda il programma.
Qualche raccomandazione su come posso avere la mia torta e mangiarla anche io?
Provato, si presenta in Alt-Tab. Questa è la mia soluzione di backup, ma mi piacerebbe molto quella che non appare nel menu alt-tab. –
Se si dispone di questo set come applicazione Windows, non dovrebbe essere visualizzato in Alt-Tab. –
Ho aggiunto una riga che farà funzionare (e manterrai la finestra fuori dalla lista Alt-Tab). – MusiGenesis