有哪位大侠做过的。指点下c# 服务搞定了
c# winform 托盘搞定了.可如何做一个带托盘的服务呢?

解决方案 »

  1.   

    即然是WinService,就不会有界面的,当然了,你可以启动Win服务的时候,在Win服务里,启动一个WinForm的程序,这个程序带托盘就OK了,
      

  2.   

    但是我想通过带托盘的WinForm来和服务来交互怎么办?比如要使用服务的内置方法,修改服务内部的参数?
      

  3.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.ServiceProcess;
    using System.Text;namespace WindowsService1
    {
        public partial class Service1 : ServiceBase
        {
            Form1 F = null;        System.Windows.Forms.Timer T = new System.Windows.Forms.Timer();        public Service1()
            {
                InitializeComponent();        }        protected override void OnStart(string[] args)
            {
                // TODO: 在此处添加代码以启动服务。            (F = new Form1()).Show();
            }        protected override void OnStop()
            {
                // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
            }
        }
    }
    然后添加一个form
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace WindowsService1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();            notifyIcon1.Icon = this.Icon;
                notifyIcon1.Visible = true;
            }
        }
    }服务帐户改为LocalSystem安装完服务后,在控制面板->服务里选你的服务右键属性->登录->本地系统帐户->打勾允许服务和桌面交互
      

  4.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.ServiceProcess;
    using System.Text;namespace WindowsService1
    {
        public partial class Service1 : ServiceBase
        {
            Form1 F = null;        System.Windows.Forms.Timer T = new System.Windows.Forms.Timer();        public Service1()
            {
                InitializeComponent();        }        protected override void OnStart(string[] args)
            {
                // TODO: 在此处添加代码以启动服务。            (F = new Form1()).Show();
            }        protected override void OnStop()
            {
                // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
            }
        }
    }
    然后添加一个form
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace WindowsService1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();            notifyIcon1.Icon = this.Icon;
                notifyIcon1.Visible = true;
            }
        }
    }服务帐户改为LocalSystem安装完服务后,在控制面板->服务里选你的服务右键属性->登录->本地系统帐户->打勾允许服务和桌面交互
      

  5.   

    应该是用notifyIcon1 可以解决你的问题
      

  6.   

    托盘有一个notifyicon的控件可以使用,服务是不可以有交互界面的,如果要控制服务,必须使用服务的控制方法、消息,或者Socket等指令去控制服务 
    http://topic.csdn.net/u/20070508/20/e8a9e73a-f4ee-433d-9628-dde2ceb86e1d.html
      

  7.   

    System.Windows.Forms.Timer T = new System.Windows.Forms.Timer();多余的,不用
    csdn又抽了
      

  8.   

    并没有带托盘的服务这种概念window服务就是服务,他没有界面至于你要求只是一个常规window程序,他去调用并控制服务。也就是说 winow服务还是要单独做,只是有个winform做为管理程序独立运行
      

  9.   

    托盘内的不是服务, 是服务控制程序windows 服务体系下:
    服务程序
    服务配置程序
    服务控制程序你要分清.
      

  10.   

    服务和WinForm不能同时写在一个程序里。
    想交互在服务里实现 启动、暂停、关闭等等方法。
    在Winform里通过Windows服务方法调用接口就好了。
      

  11.   

    更详细的只能做消息或其他方式(例如:sokcet)通讯了。
      

  12.   

    托盘内的不是服务, 是服务控制程序 windows 服务体系下: 
    服务程序 
    服务配置程序 
    服务控制程序 
      

  13.   

    不管理什么服务要做托盘加notifyIcon组件就行了
      

  14.   

    .net 里头 System.ServiceProcess.ServiceController 类就是用来控制, 查询服务的,msdn 里头都例子可以参考的.