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

时间:2010-04-21 20:24:28

标签: c# console-application

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

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

9 个答案:

答案 0 :(得分:157)

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

没有更多的控制台窗口。

答案 1 :(得分:50)

容易!

似乎很难相信,但它有魅力。当你想要执行没有任何迹象的自定义任务时,我已经将它用于一些安装项目。

  • 将项目创建为Windows应用程序项目(这是一个难点)。
  • 永远不要拨打任何表格。完全像在控制台应用程序中一样继续

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

这是因为Windows应用程序项目与控制台没有什么不同,只是因为第一个表单和引用。 这是完全隐藏的执行。试试吧!

答案 2 :(得分:9)

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

答案 3 :(得分: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);

答案 4 :(得分:5)

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

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

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

答案 5 :(得分:3)

如果它没有向控制台写任何内容,您可以将其作为服务。 http://msdn.microsoft.com/en-us/library/9k985bc9%28VS.80%29.aspx

答案 6 :(得分:2)

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

答案 7 :(得分: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

虽然它有点像魅力。它启动第一个bat(launch.bat),然后以隐身的方式启动你的服务/可执行文件。因此,它是原始发布的快速 blip ,然后消失了。

答案 8 :(得分:0)

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