我有一個用C#編寫的控制檯應用程序,計劃每15分鐘左右使用內置的Windows任務計劃程序運行。如何在後臺運行.NET控制檯應用程序
每次運行時,黑色控制檯彈出執行期間,然後關閉。我沒有寫任何東西給控制檯。有沒有辦法讓這個運行在後臺?
我有一個用C#編寫的控制檯應用程序,計劃每15分鐘左右使用內置的Windows任務計劃程序運行。如何在後臺運行.NET控制檯應用程序
每次運行時,黑色控制檯彈出執行期間,然後關閉。我沒有寫任何東西給控制檯。有沒有辦法讓這個運行在後臺?
輕鬆!
這似乎很難相信,但它作爲一種魅力。當你想執行沒有任何跡象的自定義任務時,我已經使用了這個設置項目。
切勿撥打任何形式的電話。只是恰好繼續在控制檯應用程序
class Program
{
static void Main(string[] args)
{
// Just don't call Application.Run(new frmMain(args));
// ... your code
}
}
這是因爲Windows應用程序項目比控制檯沒有真正的不同,除了因爲第一種形式和參考的。 這是完全隱藏的執行。嘗試一下!
我似乎無法讓代碼看起來像一個代碼 - 斯里 – 2010-04-21 20:46:03
如果它沒有寫任何東西給控制檯,你可以使它成爲一項服務。 http://msdn.microsoft.com/en-us/library/9k985bc9%28VS.80%29.aspx
如何將應用程序實現到Windows服務中?您可以將間隔設置爲15分鐘並在timer_tick中運行該操作。
髒東西在那裏,但(from here):
這一過程需要3個文件。
launch.bat
,invis.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爲原始發射,然後消失了。
您可以使用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);
我準備發佈這個! 隱藏窗口: public const int SW_HIDE = 0; 要恢復: public const int SW_RESTORE = 9; – JohnForDummies 2010-04-21 20:55:28
只有當計劃以與當前登錄的用戶相同的用戶身份運行時纔會顯示。使用可觀的長密碼在計算機上創建另一個用戶,將其設置爲管理員(僅在需要時)並安排任務以該用戶身份運行。
這很簡單。將任務設置爲在不是您的登錄帳戶的帳戶下運行。
項目>屬性>應用程序選項卡>將輸出類型更改爲「Windows應用程序」。
沒有更多的控制檯窗口。
我遇到了同樣的問題,這個答案幫助我遠遠超過了接受的問題。 – user17753 2012-07-11 17:34:24
同意 - 這是一個很好的答案 - 真的很簡單,完美的作品 – 2012-09-07 15:15:44
令人難以置信的技巧,謝謝:) – 2013-05-29 08:46:11
如果您已經創建了Windows控制檯應用程序,則只需將應用程序的輸出類型更改爲Windows應用程序即可。
在您的項目下: 轉到屬性>應用程序 選擇「Windows應用程序」作爲輸出類型。
這會影響最小,並且可以讓Windows任務計劃程序運行相同的任務。
不是從控制檯應用程序本身,我想你應該問超級用戶如何在調度程序中配置此。 – 2010-04-21 20:25:37