Консольное приложение .Net, которое не вызывает консоль - PullRequest
22 голосов
/ 01 июня 2009

У меня есть консольное приложение, которое я использую для запуска запланированных заданий через планировщик Windows. Все общение с приложением происходит из электронной почты, регистрации событий, журналов базы данных. Можно ли как-то запретить всплывающее окно консоли?

Ответы [ 6 ]

45 голосов
/ 01 июня 2009

Конечно. Создайте его как приложение winforms и никогда не показывайте свою форму.

Только будьте осторожны, потому что тогда это больше не консольное приложение, и есть некоторые среды, в которых вы не сможете его использовать.

10 голосов
/ 01 июня 2009

Заимствовано из MSDN ( текст ссылки ):

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 голосов
/ 05 октября 2012

Просто настройте запланированную задачу как «Запускать, вошел ли пользователь в систему или нет».

2 голосов
/ 01 июня 2009

Запланируйте запуск задачи от имени другого пользователя, отличного от вашей учетной записи, и у вас не появится всплывающее окно. , .

2 голосов
/ 01 июня 2009

Это взлом, но следующий пост в блоге описывает, как вы можете скрыть окно консоли:

http://expsharing.blogspot.com/2008/03/hideshow-console-window-in-net-black.html

1 голос
/ 01 июня 2009

Почему вы не делаете приложение службой Windows?

...