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

时间:2012-06-14 05:17:32

标签: c# .net

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

6 个答案:

答案 0 :(得分:20)

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

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

      

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

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

  • 最后一个是脏的。只需从任务管理器创建一个无形的C#应用​​程序tryhide

答案 1 :(得分:11)

在我看来,让程序完全不可见是一个坏主意。然后用户无法与程序集成。 我建议将它放在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挂钩(see example)或附加hootkey(See example

答案 2 :(得分:6)

创建一个Windows窗体应用程序,然后删除Form1

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

答案 3 :(得分:3)

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

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

答案 4 :(得分:2)

快速而肮脏的解决方案(我认为Window Service应用程序模板在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;

答案 5 :(得分:0)

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