22

Windowsスケジューラを介してスケジュールされたジョブを実行するために使用しているコンソールアプリケーションがあります。アプリケーションとの間のすべての通信は、電子メール、イベントログ、データベースログで行われます。コンソールウィンドウが表示されないようにする方法はありますか?

4

6 に答える 6

45

もちろん。WinFormsアプリとしてビルドし、フォームを表示しないでください。

ただ注意してください。それはもはや実際にはコンソールアプリではなく、使用できない環境もあるからです。

于 2009-06-01T13:51:18.253 に答える
10

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
         }
于 2009-06-01T13:58:17.960 に答える
2

これはハックですが、次のブログ投稿では、コンソールウィンドウを非表示にする方法について説明しています。

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

于 2009-06-01T13:55:45.343 に答える
2

アカウントとは別のユーザーとして実行するようにタスクをスケジュールすると、ウィンドウがポップアップ表示されなくなります。。。

于 2009-06-01T14:06:01.907 に答える
2

スケジュールされたタスクを「ユーザーがログオンしているかどうかに関係なく実行する」として構成するだけです。

于 2012-10-04T20:09:15.570 に答える
1

アプリケーションをWindowsサービスにしてみませんか?

于 2009-06-01T13:52:28.127 に答える