2010-04-21 234 views
41

我有一個用C#編寫的控制檯應用程序,計劃每15分鐘左右使用內置的Windows任務計劃程序運行。如何在後臺運行.NET控制檯應用程序

每次運行時,黑色控制檯彈出執行期間,然後關閉。我沒有寫任何東西給控制檯。有沒有辦法讓這個運行在後臺?

+0

不是從控制檯應用程序本身,我想你應該問超級用戶如何在調度程序中配置此。 – 2010-04-21 20:25:37

回答

46

輕鬆!

這似乎很難相信,但它作爲一種魅力。當你想執行沒有任何跡象的自定義任務時,我已經使用了這個設置項目。

  • 將項目創建爲Windows應用程序項目(這是最難的部分)。
  • 切勿撥打任何形式的電話。只是恰好繼續在控制檯應用程序

    class Program 
    { 
        static void Main(string[] args) 
        { 
         // Just don't call Application.Run(new frmMain(args)); 
    
         // ... your code 
        } 
    } 
    

這是因爲Windows應用程序項目比控制檯沒有真正的不同,除了因爲第一種形式和參考的。 這是完全隱藏的執行。嘗試一下!

+0

我似乎無法讓代碼看起來像一個代碼 - 斯里 – 2010-04-21 20:46:03

9

如何將應用程序實現到Windows服務中?您可以將間隔設置爲15分鐘並在timer_tick中運行該操作。

1

髒東西在那裏,但(from here):

這一過程需要3個文件。 launch.batinvis.vbs和(您的 程序)。在launch.bat(這個文件默默運行你的程序 ),放入 wscript.exe "C:\yourpath\invis.vbs" "your file.bat"。在invis.vbs, 放於

CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False

最後,在你的文件,launch.bat,把任何你想 ...

echo off erase c:\junk.txt。那麼你完成了 。只需打開launch.bat

它雖然工作像一個魅力。它會啓動第一個蝙蝠(launch.bat),從而啓動您的服務/可執行文件。所以,這是一個快速blip爲原始發射,然後消失了。

9

您可以使用Windows API來最小化控制檯盒。否則,您可以將其設爲Windows EXE文件,但實際上並未加載表單並致電System.Windows.Forms.Application.Run()

代碼,以儘量減少控制檯:

[DllImport("user32.dll")] 
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); 

public const int SW_SHOWMINIMIZED = 2; 

IntPtr winHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle; 
ShowWindow(winHandle, SW_SHOWMINIMIZED); 
+1

我準備發佈這個! 隱藏窗口: public const int SW_HIDE = 0; 要恢復: public const int SW_RESTORE = 9; – JohnForDummies 2010-04-21 20:55:28

2

只有當計劃以與當前登錄的用戶相同的用戶身份運行時纔會顯示。使用可觀的長密碼在計算機上創建另一個用戶,將其設置爲管理員(僅在需要時)並安排任務以該用戶身份運行。

0

這很簡單。將任務設置爲在不是您的登錄帳戶的帳戶下運行。

133

項目>屬性>應用程序選項卡>將輸出類型更改爲「Windows應用程序」。

沒有更多的控制檯窗口。

+6

我遇到了同樣的問題,這個答案幫助我遠遠超過了接受的問題。 – user17753 2012-07-11 17:34:24

+0

同意 - 這是一個很好的答案 - 真的很簡單,完美的作品 – 2012-09-07 15:15:44

+2

令人難以置信的技巧,謝謝:) – 2013-05-29 08:46:11

5

如果您已經創建了Windows控制檯應用程序,則只需將應用程序的輸出類型更改爲Windows應用程序即可。

在您的項目下: 轉到屬性>應用程序 選擇「Windows應用程序」作爲輸出類型。

這會影響最小,並且可以讓Windows任務計劃程序運行相同的任務。

相關問題