如何在后台运行.NET控制台应用程序
我有一个用C#编写的控制台应用程序,计划每15分钟左右使用内置的Windows任务计划程序运行。如何在后台运行.NET控制台应用程序
每次运行时,黑色控制台弹出执行期间,然后关闭。我没有写任何东西给控制台。有没有办法让这个运行在后台?
轻松!
这似乎很难相信,但它作为一种魅力。当你想执行没有任何迹象的自定义任务时,我已经使用了这个设置项目。
- 将项目创建为Windows应用程序项目(这是最难的部分)。
-
切勿拨打任何形式的电话。只是恰好继续在控制台应用程序
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
如何将应用程序实现到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