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

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

问题描述:

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

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

+0

不是从控制台应用程序本身,我想你应该问超级用户如何在调度程序中配置此。 – 2010-04-21 20:25:37

轻松!

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

  • 将项目创建为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

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

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

脏东西在那里,但(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为原始发射,然后消失了。

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

只有当计划以与当前登录的用户相同的用户身份运行时才会显示。使用可观的长密码在计算机上创建另一个用户,将其设置为管理员(仅在需要时)并安排任务以该用户身份运行。

这很简单。将任务设置为在不是您的登录帐户的帐户下运行。

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

没有更多的控制台窗口。

+6

我遇到了同样的问题,这个答案帮助我远远超过了接受的问题。 – user17753 2012-07-11 17:34:24

+0

同意 - 这是一个很好的答案 - 真的很简单,完美的作品 – 2012-09-07 15:15:44

+2

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

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

在您的项目下: 转到属性>应用程序 选择“Windows应用程序”作为输出类型。

这会影响最小,并且可以让Windows任务计划程序运行相同的任务。