2009-06-01 18 views
22

Mam aplikację konsolową, której używam do uruchamiania zaplanowanych zadań za pomocą programu planującego okna. Cała komunikacja do/z aplikacji odbywa się za pomocą poczty elektronicznej, rejestrowania zdarzeń, dzienników bazy danych. Czy jest jakiś sposób, aby wyłączyć okno konsoli?Aplikacja konsoli .Net, która nie wyświetla konsoli.

Odpowiedz

44

Pewnie. Zbuduj go jako aplikację WinForm i nigdy nie pokazuj swojego formularza.

Po prostu bądź ostrożny, ponieważ nie jest to już tak naprawdę aplikacja konsolowa i istnieją pewne środowiska, w których nie będziesz mógł jej użyć.

+0

W jaki sposób mogę to zrobić w istniejącym projekcie, więc nie muszę migrować? – Jeff

+16

Kliknij projekt prawym przyciskiem myszy, przejdź do Właściwości, aw wyskakującym formularzu zmień go z aplikacji Konsola na aplikację WinForm, zamknij i przekompiluj. –

+0

Dzięki Chris, to zadziałało świetnie! – Jeff

1

Dlaczego nie chcesz, aby aplikacja była usługą Windows?

+4

Brak zaplanowanych zadań! = Usługa Windows. Chyba, że ​​używa wiadomości e-mail do rozpoczęcia przetwarzania, w takim przypadku usługa jest lepszą opcją. –

+2

Tak, wcześniej szliśmy tą drogą. Używam do tworzenia zaplanowanych zadań za pomocą infrastruktury usług, ale w końcu realizacja w ten sposób powoduje wiele niepotrzebnego kodu i trudnych aktualizacji. W skrócie, odtwarza infrastrukturę, którą harmonogram zadań zapewnił za darmo! – Jeff

+1

W porządku, ale nie widzę powodów, by zgodzić się z pytaniem Badaro. –

9

zapożyczonych z 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

zaplanować zadanie do uruchomienia jako inny użytkownik niż twoje konto i nie pojawi się okno. . .

2

Po prostu skonfiguruj Zaplanowane zadanie jako "Uruchom, czy użytkownik jest zalogowany, czy nie".

Powiązane problemy