2009-06-01 23 views
22

Ho un'applicazione console che sto utilizzando per eseguire processi pianificati tramite l'utilità di pianificazione di Windows. Tutte le comunicazioni da/verso l'applicazione sono in e-mail, registrazione degli eventi, registri di database. C'è un modo per eliminare la finestra della console?. Applicazione console non in grado di visualizzare una console

risposta

44

Sicuro. Costruiscila come un'app Winforms e non mostrare mai il tuo modulo.

Basta fare attenzione, perché non è più un'app per console e ci sono alcuni ambienti in cui non è possibile utilizzarlo.

+0

In qualsiasi modo posso farlo all'interno del progetto esistente, quindi non devo migrare roba? – Jeff

+16

Fare clic con il tasto destro del mouse sul progetto, andare su Proprietà e, nel modulo che si apre, cambiarlo da un'app Console ad un'app WinForms, chiudere e ricompilare. –

+0

Grazie Chris, ha funzionato alla grande! – Jeff

1

Perché non si rende l'applicazione un servizio di Windows?

+4

Lavori non pianificati! = Servizio Windows. A meno che non stia utilizzando l'e-mail per avviare l'elaborazione, nel qual caso un servizio è un'opzione migliore. –

+2

Sì, sono già stato in quella strada. Io uso per creare lavori programmati usando l'infrastruttura di servizio, ma alla fine mi sono reso conto che farlo in questo modo comporta un sacco di codice non necessario e aggiornamenti difficili. In breve, ricrea un'infrastruttura che l'utilità di pianificazione ha fornito gratuitamente! – Jeff

+1

Va bene, ma non vedo ragioni per sviare la domanda di Badaro. –

9

Borrowed da MSDN (link text):

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 
     } 
2

Schedule l'esecuzione dell'attività come utente diverso dal tuo account e non si aprirà una finestra. . .

2

Configurare semplicemente l'operazione pianificata come "Esegui se l'utente è connesso o meno".

Problemi correlati