我在C#中创建了一个小程序,我想在后台运行,它只应在按下某个键组合时出现。我怎么能这样做?
答案 0 :(得分:20)
至少有三种方法可以做到这一点:
经典 Windows服务应用程序。来自CodeProject的“Creating a Basic Windows Service in C#”文章将对您有所帮助。在这种情况下,您使用System.ServiceProcess
命名空间。顺便说一句,在这种情况下,您应该阅读MSDN中的“System.ServiceProcess Namespace”文章。这是一个简短的引用:
System.ServiceProcess命名空间提供允许您实现,安装和控制Windows服务应用程序的类。服务是长时间运行的可执行文件,无需用户界面即可运行。
记忆力计划。但这对C#来说几乎是不可能的。如果需要,可以使用C ++或更好的C来实现此目的。如果您想自己搜索,只需使用关键字TSR
。
答案 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服务。 如果你在创建一个新项目时那就在那里