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

本文关键字:程序 运行 后台 NET 开发 | 更新日期: 2023-09-27 18:37:20

我用C#制作了一个小程序,我想在后台运行,它应该只在按下某个组合键时才会出现。我该怎么做?

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

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

  • 经典的视窗服务应用程序。CodeProject 中的"在 C# 中创建基本 Windows 服务"一文将为您提供帮助。在这种情况下,您可以使用System.ServiceProcess命名空间。顺便说一句,在这种情况下,您应该阅读MSDN的"System.ServiceProcess Namespace"文章。以下是其中的简短引用:

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

  • 内存驻留程序。但这在 C# 中几乎是不可能的。如果需要,请使用C++或更好的 C 来实现此目的。如果您想自己搜索,只需使用关键字 TSR .

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

在我看来,允许程序完全不可见是一个坏主意。因为用户无法与程序交互。我建议将其放在SysTray(Windows中时钟旁边的图标)中

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

要监视键盘,您可以使用低级键盘挂钩(请参阅示例)或附加hootkey(请参阅示例)

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

修改程序.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 属性设置为"最小化",并向窗体添加一个 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 服务。如果您创建新项目时,它就在那里