我有一个用C#编写的控制台应用程序,计划使用内置的Windows任务计划程序每15分钟左右运行一次。
每次运行时,黑色控制台框会在执行期间弹出,然后关闭。我没有在控制台上写任何东西。有没有办法在后台运行?
答案 0 :(得分:157)
项目>性状>应用程序选项卡>将输出类型更改为“Windows应用程序”。
没有更多的控制台窗口。
答案 1 :(得分:50)
容易!
似乎很难相信,但它有魅力。当你想要执行没有任何迹象的自定义任务时,我已经将它用于一些安装项目。
永远不要拨打任何表格。完全像在控制台应用程序中一样继续
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.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
。
虽然它有点像魅力。它启动第一个bat(launch.bat),然后以隐身的方式启动你的服务/可执行文件。因此,它是原始发布的快速 blip ,然后消失了。
答案 8 :(得分:0)
这很容易。将任务设置为在不是您的登录帐户的帐户下运行。