windows 服务与系统托盘之间的交互

有的时候我们需要自己写服务,而且需要给绑定一个 托盘!用来更加方便的 控制我们的程序!例如 QQ 那种!

下面我来讲一下他们之间是怎么关联的!

   有怎么几步!

  1,自己写一个服务,(上一篇博客中有详细的介绍,可以去参考!)

  2,桌面交互的配置

           在serviceInstaller1_Committed事件中添加如下代码:

            ConnectionOptions coOptions = new ConnectionOptions();
            coOptions.Impersonation = ImpersonationLevel.Impersonate;
            ManagementScope mgmtScope = new System.Management.ManagementScope(@"root\CIMV2", coOptions);

            mgmtScope.Connect();
            ManagementObject wmiService;
            wmiService = new ManagementObject("Win32_Service.Name='" + serviceInstaller1.ServiceName + "'");

            ManagementBaseObject InParam = wmiService.GetMethodParameters("Change");

            InParam["DesktopInteract"] = true;

            ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", InParam, null);
          此段代码即是将此Service设置为“允许与桌面交互”,有了此选项之后,服务启动时GUI程序的界面将会出现。

   3,与托盘程序的关联,这是一个单独的方法!因为托盘程序 一般都是一个单独的程序!所以哦我们在服务只能去调用托盘程序!在服务启动的时候启动托盘程序!

        protected void Formstart()
        {
            string serviceControl = @"E:\学习项目\windows服务控制\WinServicesControl\WinServicesControl\bin\Debug\WinServicesControl.exe";// 托盘程序.exe的路径
            bool ico = false; 
            Process[] processOnComputer=Process.GetProcesses();   // 调出所有的进程,查找是否有我们需要的 托盘程序的进程!
            foreach(Process p in processOnComputer) 
            {
                if (p.ProcessName == "WinServicesControl")      // 遍历所有的进程
                {                                
                    ico = true;                                                                // 如果有,就可以直接执行 托盘程序里的方法了!
                }
               
            } 
            if   (!ico)                               //如果没有托盘程序的进程!我们就需要新建一个进程,去启动托盘程序!
            {
                string control = serviceControl;               
                Process p = new Process(); 
                ProcessStartInfo startInfo = new ProcessStartInfo(control);
                p.StartInfo = startInfo;
                p.Start();                                   
            } 
        
        }

    4,安装自己的写好的服务!(上一篇博客中有详细的介绍,可以去参考)

    5,找到自己写的服务,属性,设置!如下图!

 

       

 

这样在启动我们的服务的时候,我们写好的托盘程序就会执行了!也就是说能够看到我们的 托盘图标了!

 

在下一篇文章中,我会介绍一个 那个单独的托盘程序!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值