コード例 #1
0
        private void GetServiceStatus()
        {
            if (service != null)
            {
                service.Refresh();
            }
            var ss = ServiceControl.GetServiceStatus(service);

            if (ss != serviceStatus)
            {
                serviceStatus = ss;
                DDnsSharpTray.SetStatus(serviceStatus);
                string serviceStr;
                switch (serviceStatus)
                {
                case ServiceStatus.Running:
                    serviceStr = "服务正在运行.";
                    break;

                case ServiceStatus.Stopped:
                    serviceStr = "服务已停止.";
                    break;

                case ServiceStatus.NotExist:
                    serviceStr = "服务尚未安装.";
                    break;

                default:
                    serviceStr = "服务状态未知.";
                    break;
                }
                DDnsSharpTray.Current.Text = "DDnsSharp: " + serviceStr + "\r\n双击打开或隐藏界面.";
            }
        }
コード例 #2
0
 private void GetServiceStatus()
 {
     if (service != null)
     {
         service.Refresh();
     }
     ServiceStatus = ServiceControl.GetServiceStatus(service);
 }
コード例 #3
0
        private GCInterfaceCollection GetInterfaceList(DObjectCollection dlist, bool withStatus)
        {
            GCInterfaceCollection ilist = new GCInterfaceCollection();

            foreach (InterfaceRec r in dlist)
            {
                GCInterface i = new GCInterface(r);
                ilist.Add(i);

                if (withStatus)
                {
                    i.Status = ServiceControl.GetServiceStatus(i.InterfaceName);
                }
            }
            return(ilist);
        }
コード例 #4
0
        private void InstallService()
        {
            var dialogResult = MessageBox.Show("尚未安装DDNS服务,该服务将会在开机的时候自动运行,并且每30秒自动更新您的最新IP您的指定记录.在安装之前请确保您正在使用管理员权限运行本程序.是否继续?", "", MessageBoxButton.YesNo);

            if (dialogResult == MessageBoxResult.Yes)
            {
                var path = Path.Combine(Directory.GetCurrentDirectory(), "installService.bat");
                if (File.Exists(path))
                {
                    ShellExecute(IntPtr.Zero, "Open", path, String.Empty, Directory.GetCurrentDirectory(), 0);
                    var task = new Task(() =>
                    {
                        System.Threading.Thread.Sleep(5000);
                        try
                        {
                            if (service != null)
                            {
                                service.Dispose();
                            }
                            service       = ServiceControl.GetService();
                            ServiceStatus = ServiceControl.GetServiceStatus(service);
                            MessageBox.Show("如果左下角的服务状态在1分钟之后还是处于非绿灯状态,请确保您正在使用管理员权限运行本程序,并且程序目录内的文件完整,最后查看程序目录下的DDNSPod.Service.InstallLog和sevice.log日志文件,并向社区求助.");
                            if (service != null)
                            {
                                try
                                {
                                    service.Start();
                                }
                                catch (Exception e)
                                {
                                    MessageBox.Show(e.Message);
                                }
                            }
                        }
                        catch (Win32Exception ex)
                        {
                            logger.ErrorException(ex.Message, ex);
                        }
                    });
                    task.Start();
                }
                else
                {
                    MessageBox.Show("服务安装脚本丢失,请确保您的DDNSPod的程序目录完整!");
                }
            }
        }
コード例 #5
0
        private void UninstallService()
        {
            var dialogResult = MessageBox.Show("您确定这么做吗?", "", MessageBoxButton.YesNo);

            if (dialogResult == MessageBoxResult.Yes)
            {
                var path = Path.Combine(Directory.GetCurrentDirectory(), "uninstallService.bat");
                if (File.Exists(path))
                {
                    if (service != null)
                    {
                        try
                        {
                            if (service.CanStop)
                            {
                                service.Stop();
                            }
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show(e.Message);
                        }
                        ShellExecute(IntPtr.Zero, "Open", path, String.Empty, Directory.GetCurrentDirectory(), 0);
                        var task = new Task(() =>
                        {
                            System.Threading.Thread.Sleep(5000);
                            if (service != null)
                            {
                                service.Dispose();
                                service = ServiceControl.GetService();
                            }
                            ServiceStatus = ServiceControl.GetServiceStatus(service);
                            MessageBox.Show("如果左下角的服务状态在1分钟之后还是处于非红色叉叉状态,请确保您正在使用管理员权限运行本程序,并且程序目录内的文件完整,最后查看程序目录下的DDNSPod.Service.InstallLog和sevice.log日志文件,并向社区求助.");
                        });
                        task.Start();
                    }
                }
                else
                {
                    MessageBox.Show("服务安装脚本丢失,请确保您的DDNSPod的程序目录完整!");
                }
            }
        }
コード例 #6
0
        public void StopInterface()
        {
            base.SetStatus("Stopping interface.");

            GCInterface gcInterface = _interfaceView.GetSelectedInterface();

            if (gcInterface == null)
            {
                return;
            }

            if (_interfaceManager.StopInterface(gcInterface))
            {
                Program.Log.Write("{Interface} stop interface (" + gcInterface.ToString() + ") succeed");

                _interfaceView.RefreshView();
                _interfaceView.SelectInterface(gcInterface);
            }
            else
            {
                Program.Log.Write(LogType.Warning, "{Interface} stop interface (" + gcInterface.ToString() + ") failed");
                Program.Log.Write(LogType.Error, GCError.LastErrorInfor);
                Program.Log.Write(GCError.LastError);

                //Stop some NT service may meets error (System.ComponentModel.Win32Exception: The service cannot accept control messages at this time),
                //especaily after these NT services are started together at the same time by bat files. 2007/07/17

                AdapterStatus status = ServiceControl.GetServiceStatus(gcInterface.InterfaceName);
                if (status != AdapterStatus.Stopped)
                {
                    MessageBox.Show(frmMain, "Stop interface failed.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    _interfaceView.RefreshView();
                    _interfaceView.SelectInterface(gcInterface);
                }
            }

            base.ClearStatus();
        }