如何在后台运行.NET控制台应用程序

我有用C#编写的控制台应用程序,计划每15分钟左右使用内置的Windows任务计划程序运行。

每次运行时,黑色控制台popup执行期间,然后closures。 我没有写任何东西到控制台。 有没有办法让这个在后台运行?

简单!

这似乎很难相信,但它作为一种魅力。 我已经使用这个设置项目,当你想要执行自定义任务没有迹象。

  • 创build项目作为一个Windows应用程序项目(这是困难的部分)。
  • 切勿拨打任何forms的电话。 只要保持在您的控制台应用程序就像一样

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

这是因为Windows应用程序项目与控制台没有什么不同,除了第一种forms和引用。 这是完全隐藏的执行。 尝试一下!

项目>属性>应用程序选项卡>将输出types更改为“Windows应用程序”。

没有更多控制台窗口。

如何将应用程序实施到Windows服务? 您可以将间隔设置为15分钟,并在timer_tick中运行该操作。

您可以使用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); 

如果您已经创build了Windows控制台应用程序,则只需将应用程序的输出types更改为Windows应用程序即可。

在你的项目下:进入属性>应用程序select“Windows应用程序”作为输出types。

这将是最小的影响,您可以保持您的Windows任务计划程序运行相同的任务。

如果它没有写任何东西给控制台,你可以把它变成一项服务。 http://msdn.microsoft.com/en-us/library/9k985bc9%28VS.80%29.aspx

只有计划以当前login的用户身份运行时才会显示。使用一个可笑的长密码在计算机上创build另一个用户,将其设置为pipe理员(仅在需要时),并计划任务运行用户。

肮脏的东西在那里,但( 从这里 ):

该过程需要3个文件。 launch.batinvis.vbs和(你的程序)。 在launch.bat(这个文件默默运行你的程序),把wscript.exe "C:\yourpath\invis.vbs" "your file.bat" 。 在invis.vbs ,input

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

最后在你的文件中, launch.bat ,放任何你想要的

echo off erase c:\junk.txt 。 那么你完成了。 只要打开launch.bat

它虽然工作像一个魅力。 它启动第一个bat(launch.bat),然后启动您的服务/可执行文件隐身。 所以,这是原始发射的一个快速消失,然后消失了。

这很容易。 将任务设置为在不是您的login帐户的帐户下运行。