开发一个在.NET后台运行的程序?

我在C#中创建了一个小程序,我希望在后台运行它,它只应在按下某个键组合时出现。 我怎样才能做到这一点?

至少有三种方法可以做到这一点:

  • 经典Windows服务应用程序。 CodeProject中的“使用C#创建基本Windows服务 ”文章将对您有所帮助。 在这种情况下,您使用System.ServiceProcess命名空间。 顺便说一句,在这种情况下,您应该阅读MSDN中的“ System.ServiceProcess命名空间 ”一文。 这是一个简短的引用:

    System.ServiceProcess命名空间提供允许您实现,安装和控制Windows服务应用程序的类。 服务是长时间运行的可执行文件,无需用户界面即可运行。

  • 记忆驻留计划。 但这对C#来说几乎是不可能的。 如果需要,可以使用C ++或更好的C来实现此目的。 如果您想自己搜索,只需使用关键字TSR

  • 最后一个是脏的。 只需创建一个无形的C#应用​​程序并尝试 将其从任务管理器中隐藏 。

在我看来,让程序完全不可见是一个坏主意。 然后用户无法与程序集成。 我建议将它放在SysTray中(Windows中的时钟图标)

  trayIcon = new NotifyIcon(); trayIcon.Text = "My application"; trayIcon.Icon = TheIcon // Add menu to tray icon and show it. trayIcon.ContextMenu = trayMenu; trayIcon.Visible = true; Visible = false; // Hide form window. ShowInTaskbar = false; // Remove from taskbar. 

要监视键盘,您可以使用LowLevel Keyboard挂钩( 参见示例 )或附加hootkey( 参见示例 )

创建一个Windows窗体应用程序,并删除Form 1

修改program.cs Application.Run(new Form1());Application.Run();

您可以创建Windows服务应用程序。 它作为后台进程运行。 没有用户界面。 这也可以在计算机启动时自动启动。 您可以在任务管理器中查看其余后台进程,也可以在命令提示符中键入services.msc。

这可能有所帮助。 http://msdn.microsoft.com/en-us/library/9k985bc9%28v=vs.80%29.aspx

一个快速而肮脏的解决方案(我认为Window Service Application模板在Visual Studio Express和Standard中不可用):

启动一个新的Windows窗体应用程序。 在解决方案中添加一个新类,并在其中编写所需的代码。

返回到表单设计器,将WindowState属性设置为Minimized,并将Load事件添加到表单。 在事件处理程序中隐藏表单并调用您的类:

 private void Form1_Load(object sender, EventArgs e) { this.Hide(); MyNewClass mynewclass=new MyNewClass(); } 

应用程序不会出现在任务栏中,当您按Alt + Tab时,您看不到它。 如果你愿意,你可以添加一个系统托盘图标,就像magol写道:

 NotifyIcon trayIcon = new NotifyIcon(); trayIcon.Icon=new Icon(@"C:\iconfilename.ico"); trayIcon.Visible = true; 

如果您真的想要创建一个真正在后台运行的程序,请尝试创建Windows服务。 如果你创建一个新项目,那就在那里