Example #1
0
        void RemoteDeskCheckTimerCallback(object state)
        {
            if (Interlocked.CompareExchange(ref _remoteDeskpCheckTimerCallbackState, 1, 1) == 1)
            {
                return;
            }

            try
            {
                bool started = AnyDesk.IsClientOpened();
                if (_remoteDeskConnectState.TimerState == TimerState.CheckRemoteDeskConnectOpen)
                {
                    if (started)
                    {
                        Invoke(() =>
                        {
                            tsslRemoteConnectInfo.Text =
                                string.Format("远程控制 [{0}] 中...",
                                              _remoteDeskConnectState.ConnectModel.UserAccount);
                            tsslConnectStartTimeLabel.Visible = true;
                            tsslConnectStartTime.Text         = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
                            tsslConnectStartTime.Visible      = true;
                        });

                        _remoteDeskConnectState.TimerState = TimerState.CheckRemoteDeskConnectClose;
                    }

                    return;
                }

                if (_remoteDeskConnectState.TimerState == TimerState.CheckRemoteDeskConnectClose)
                {
                    if (!started)
                    {
                        _remoteDeskCheckTimer.Change(Timeout.Infinite, 2000);
                        Invoke(() =>
                        {
                            StartOrderRecord();
                        });
                    }

                    return;
                }
            }
            catch (Exception ex)
            {
                Error("RemoteDeskCheckTimerCallback Error.", ex);
            }
            finally
            {
                Interlocked.Exchange(ref _remoteDeskpCheckTimerCallbackState, 0);
            }
        }
Example #2
0
 protected override void OnLoad(EventArgs e)
 {
     base.OnLoad(e);
     Task.Factory.StartNew(() =>
     {
         if (!AnyDesk.Start(_anyDeskIstallPath, _anyDeskSourceFile))
         {
             Invoke(() =>
             {
                 MessageBoxEx.Show(this, "远程连接服务初始化失败!",
                                   "挂机端程序初始化", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 _systemExit = true;
                 Application.Exit();
             });
         }
     }).Wait();
 }
Example #3
0
        internal static void Uinit()
        {
            try
            {
                _applicationData.UserExit = true;
                Resolve <IOfflineCheckManager>().Stop();
                _tcpClient.Close();
                NinjectCommon.Stop();
                if (_applicationData.IsClient)
                {
                    AnyDesk.CloseServer();
                }
                else
                {
                    AnyDesk.CloseClient();
                }

                AnyDesk.Stop();
            }
            catch (Exception)
            {
            }
        }
Example #4
0
        void Init()
        {
            _checkRemoteDeskTimer = new System.Threading.Timer(
                CheckRemoteDeskpTimerCallback, null, Timeout.Infinite, 2000);

            sbtnConfirmReceipt.Click += sbtnConfirmReceiptClick;

            sbtnHangUpOpt.Click += (sender, e) =>
            {
                if (_hangUp)
                {
                    _checkRemoteDeskTimer.Change(Timeout.Infinite, 2000);
                    AnyDesk.Stop();
                    _hangUp = false;
                    _remoteDeskState.Connected  = false;
                    _remoteDeskState.RemoteInfo = null;
                    tsslRemoteConnectInfo.Text  = "暂停挂机";

                    tsslConnectStartTimeLabel.Visible = false;
                    tsslConnectStartTime.Text         = string.Empty;
                    tsslConnectStartTime.Visible      = false;

                    tsslConnectEndTimeLabel.Visible = false;
                    tsslConnectEndTime.Text         = string.Empty;
                    tsslConnectEndTime.Visible      = false;

                    sbtnHangUpOpt.Text = "开始挂机";
                }
                else
                {
                    _hangUp = true;
                    tsslRemoteConnectInfo.Text = "等待连接...";
                    sbtnHangUpOpt.Text         = "停止挂机";
                }
            };

            _remoteOperationBll.OnRequestRemoteInfo = query =>
            {
                if (!_hangUp || _remoteDeskState.Connected)
                {
                    _remoteOperationBll.ResponseRequetRemoteInfo(
                        query.UserId, RemoteOperationState.ToClientBusy, null);
                    return;
                }

                _remoteDeskState.Connected = true;

                Invoke(() =>
                {
                    tsslRemoteConnectInfo.Text =
                        string.Format("[{0}] 请求连接...", query.UserAccount);
                });

                var state = RemoteOperationState.Failed;

                string remoteId       = string.Empty;
                string remotePassword = string.Empty;
                try
                {
                    if (AnyDesk.Start(_anyDeskIstallPath, _anyDeskSourceFile))
                    {
                        remoteId       = AnyDesk.GetId();
                        remotePassword = _remoteDeskState.RemoteDeskPassword;
                        AnyDesk.SetPassword(remotePassword);
                        state = RemoteOperationState.Successed;
                    }
                    else
                    {
                        state = RemoteOperationState.ToClientRemoteDesktopServiceError;
                    }
                }
                catch (Exception ex)
                {
                    state = RemoteOperationState.ToClientRemoteDesktopServiceError;
                    Error("RequestRemoteInfo - Start AnyDesk Service Failed!", ex);
                }

                if (state != RemoteOperationState.Successed)
                {
                    _remoteOperationBll.ResponseRequetRemoteInfo(
                        query.UserId, state, null);
                    _remoteDeskState.Connected = false;
                    Invoke(() =>
                    {
                        tsslRemoteConnectInfo.Text =
                            string.Format("等待连接...", query.UserAccount);
                    });
                }
                else
                {
                    Invoke(() =>
                    {
                        tsslRemoteConnectInfo.Text =
                            string.Format("等待 [{0}] 连接...", query.UserAccount);
                    });

                    _remoteDeskState.RemoteInfo = query;
                    _remoteDeskState.CheckRemoteDeskStateStartTime = DateTime.Now;
                    _remoteDeskState.TimerState = TimerState.CheckRemoteDeskState;
                    Interlocked.Exchange(ref _remoteDeskpCheckTimerCallbackState, 0);
                    _checkRemoteDeskTimer.Change(1000, 2000);

                    _remoteOperationBll.ResponseRequetRemoteInfo(
                        query.UserId, state, new RemoteClientInfo
                    {
                        RemoteId       = remoteId,
                        RemotePassword = remotePassword
                    });
                }
            };
        }
Example #5
0
        void CheckRemoteDeskpTimerCallback(object state)
        {
            if (Interlocked.Exchange(ref _remoteDeskpCheckTimerCallbackState, 1) == 1)
            {
                return;
            }

            try
            {
                bool started = AnyDesk.IsServerOpened();
                if (_remoteDeskState.TimerState == TimerState.CheckRemoteDeskState)
                {
                    if (started)
                    {
                        _remoteDeskState.RemoteDeskConnectStartTime = DateTime.Now;
                        _remoteDeskState.TimerState = TimerState.CheckRemoteDeskConnectTime;

                        Invoke(() =>
                        {
                            tsslRemoteConnectInfo.Text = string.Format(
                                "[{0}] 远程控制中...", _remoteDeskState.RemoteInfo.UserAccount);

                            tsslConnectStartTimeLabel.Visible = true;
                            tsslConnectStartTime.Text         = _remoteDeskState
                                                                .RemoteDeskConnectStartTime.ToString("yyyy-MM-dd HH:mm:ss");
                            tsslConnectStartTime.Visible = true;

                            tsslConnectEndTimeLabel.Visible = true;
                            tsslConnectEndTime.Text         = _remoteDeskState
                                                              .RemoteDeskConnectEndTime.ToString("yyyy-MM-dd HH:mm:ss");
                            tsslConnectEndTime.Visible = true;
                            ShowSubAccountInfo(true);
                        });

                        return;
                    }

                    if (_remoteDeskState.CheckRemoteDeskStateStartTime.AddMilliseconds(
                            _remoteDeskState.MaxCheckRemoteDeskStateTime) <= DateTime.Now)
                    {
                        _checkRemoteDeskTimer.Change(Timeout.Infinite, 2000);
                        Invoke(() =>
                        {
                            try
                            {
                                AnyDesk.CloseServer();
                                AnyDesk.Stop();
                            }
                            catch (Exception ex)
                            {
                                Error("CheckRemoteDeskpTimerCallback -- AnyDesk Stop!", ex);
                            }
                            tsslRemoteConnectInfo.Text        = "等待连接...";
                            tsslConnectStartTimeLabel.Visible = false;
                            tsslConnectStartTime.Text         = string.Empty;
                            tsslConnectStartTime.Visible      = false;

                            tsslConnectEndTimeLabel.Visible = false;
                            tsslConnectEndTime.Text         = string.Empty;
                            tsslConnectEndTime.Visible      = false;
                        });

                        _remoteDeskState.Connected          = false;
                        _remoteDeskState.RemoteInfo         = null;
                        _remoteDeskState.ConfirmReceiptInfo = null;
                        _remoteDeskState.ChangeRemoteDeskPassword();
                    }

                    return;
                }

                if (_remoteDeskState.TimerState == TimerState.CheckRemoteDeskConnectTime)
                {
                    if (started)
                    {
                        var endTime = _remoteDeskState.RemoteDeskConnectEndTime;
                        if (endTime <= DateTime.Now)
                        {
                            _checkRemoteDeskTimer.Change(Timeout.Infinite, 2000);

                            _remoteDeskState.ChangeRemoteDeskPassword();
                            Invoke(() =>
                            {
                                try
                                {
                                    int closeCount = 0;
                                    while (AnyDesk.IsServerOpened() && closeCount++ < 10)
                                    {
                                        AnyDesk.CloseServer();
                                        Thread.Sleep(1000);
                                    }
                                    AnyDesk.SetPassword(_remoteDeskState.RemoteDeskPassword);
                                }
                                catch (Exception ex)
                                {
                                    Error("CheckRemoteDeskpTimerCallback -- AnyDesk CloseServer And SetPassword!", ex);
                                }

                                tsslRemoteConnectInfo.Text        = "等待连接...";
                                tsslConnectStartTimeLabel.Visible = false;
                                tsslConnectStartTime.Text         = string.Empty;
                                tsslConnectStartTime.Visible      = false;

                                tsslConnectEndTimeLabel.Visible = false;
                                tsslConnectEndTime.Text         = string.Empty;
                                tsslConnectEndTime.Visible      = false;
                                ShowSubAccountInfo(false);
                            });

                            _remoteDeskState.Connected          = false;
                            _remoteDeskState.RemoteInfo         = null;
                            _remoteDeskState.ConfirmReceiptInfo = null;

                            return;
                        }

                        TimeSpan timeSpan = endTime - DateTime.Now;
                        if (timeSpan.TotalMilliseconds <= 1000 * 60 * 5)
                        {
                            Invoke(() =>
                            {
                                _notifyIcon.ShowBalloonTip(5000, "挂机端远程连接",
                                                           string.Format("远程连接还有约 {0}分{1}秒 即将断开,请尽快操作!",
                                                                         timeSpan.Minutes, timeSpan.Seconds), ToolTipIcon.Warning);
                            });
                        }
                    }
                    else
                    {
                        _checkRemoteDeskTimer.Change(Timeout.Infinite, 2000);
                        _remoteDeskState.ChangeRemoteDeskPassword();
                        _remoteDeskState.Connected          = false;
                        _remoteDeskState.RemoteInfo         = null;
                        _remoteDeskState.ConfirmReceiptInfo = null;
                        Invoke(() =>
                        {
                            try
                            {
                                AnyDesk.SetPassword(_remoteDeskState.RemoteDeskPassword);
                            }
                            catch (Exception ex)
                            {
                                Error("CheckRemoteDeskpTimerCallback -- AnyDesk SetPassword!", ex);
                            }

                            tsslRemoteConnectInfo.Text        = "等待连接...";
                            tsslConnectStartTimeLabel.Visible = false;
                            tsslConnectStartTime.Text         = string.Empty;
                            tsslConnectStartTime.Visible      = false;

                            tsslConnectEndTimeLabel.Visible = false;
                            tsslConnectEndTime.Text         = string.Empty;
                            tsslConnectEndTime.Visible      = false;
                            ShowSubAccountInfo(false);
                        });
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                Error("CheckRemoteDeskpTimerCallback!", ex);
            }
            finally
            {
                Interlocked.Exchange(ref _remoteDeskpCheckTimerCallbackState, 0);
            }
        }
        void SdgvOrderRecordListCellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 9)
            {
                var parent = FindForm() as ViewOptMain;
                if (parent == null)
                {
                    return;
                }

                var row   = SdgvOrderRecordList.Rows[e.RowIndex];
                var value = row.Cells[9].FormattedValue.ToString();
                if (string.Equals(value, "连接"))
                {
                    if (parent.RemoteDeskConnectState.Connected)
                    {
                        MessageBoxEx.Show(this,
                                          "已经连接挂机端操作,不能同时进行多个连接操作!",
                                          "连接挂机端",
                                          MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }

                    if ((bool)row.Cells[7].Value)
                    {
                        parent.RemoteDeskConnectState.Connected = true;
                        var orcderRecord = row.DataBoundItem as OrderRecordDetails;
                        parent.OnRemoteOperationRequest(new UserSubAccountPageListVM
                        {
                            UserId        = orcderRecord.ClientUserId,
                            Id            = orcderRecord.ClientUserSubAccountId,
                            UserAccount   = orcderRecord.ClientUserAccount,
                            TaoBaoAccount = orcderRecord.ClientUserSubAccount
                        }, ConnectOptFrom.OrderRecorList);
                    }
                    else
                    {
                        MessageBoxEx.Show(this,
                                          "该挂机端不在线,不能连接!\r\n\r\n可尝试刷新挂机端信息后,再进行操作。",
                                          "连接挂机端",
                                          MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }
                }
                else if (string.Equals(value, "已完结"))
                {
                    MessageBoxEx.Show(this,
                                      "该刷单操作已完结,不能再进行操作。",
                                      "连接挂机端",
                                      MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    if (AnyDesk.IsClientOpened())
                    {
                        AnyDesk.CloseClient();
                    }

                    parent.StartOrderRecord();
                }
            }
        }
Example #7
0
        void Init()
        {
            SetToMax();

            _orderRecordControl      = new OrderRecordListControl(_shopBll, _orderStateBll);
            _orderRecordControl.Dock = DockStyle.Fill;
            tpShippingList.Controls.Add(_orderRecordControl);

            skinTabControl.SelectedIndexChanged += (sender, e) =>
            {
                if (skinTabControl.SelectedIndex == 1 &&
                    !_remoteDeskConnectState.Connected)
                {
                    LoadOrderRecordPageList(1,
                                            _orderRecordControl.PaginationOrderRecordList.PageSize);
                }
            };

            _remoteDeskConnectState = new RemoteDeskConnectState();
            _remoteDeskCheckTimer   = new System.Threading.Timer(
                RemoteDeskCheckTimerCallback, null, Timeout.Infinite, 2000);

            sdgvSubAccountList.AutoGenerateColumns = false;
            sdgvSubAccountList.CellFormatting     += (sender, e) =>
            {
                switch (e.ColumnIndex)
                {
                case 1:
                    string acc = e.Value as string;
                    if (!string.IsNullOrEmpty(acc))
                    {
                        int result;
                        int markCount = Math.DivRem(acc.Length, 2, out result);
                        if (result != 0)
                        {
                            markCount++;
                        }

                        var accArray = acc.ToCharArray();
                        for (int i = 1; i <= markCount; i += 1)
                        {
                            accArray[acc.Length - i] = '*';
                        }

                        e.Value = new string(accArray);
                    }
                    break;

                case 2:
                    byte?index = (byte?)e.Value;
                    if (index.HasValue)
                    {
                        e.Value = ConstData.TaoBaoLevels[index.Value - 1].Name;
                    }
                    break;

                case 3:
                    bool?sex = (bool?)e.Value;
                    if (sex.HasValue)
                    {
                        e.Value = sex.Value ? "男" : "女";
                    }
                    break;

                case 5:
                    var data = sdgvSubAccountList.DataSource as IList <UserSubAccountPageListVM>;
                    if (data != null && data.Count > e.RowIndex)
                    {
                        var vm = data[e.RowIndex];
                        e.Value = string.Format("{0} - {1} - {2}", vm.Province, vm.City, vm.District);
                    }
                    break;

                case 8:
                    if ((bool)e.Value)
                    {
                        e.Value = "在线";
                        e.CellStyle.BackColor          = Color.Green;
                        e.CellStyle.SelectionBackColor = Color.Green;
                    }
                    else
                    {
                        e.Value = "离线";
                        e.CellStyle.BackColor          = Color.Red;
                        e.CellStyle.SelectionBackColor = Color.Red;
                    }
                    break;

                case 9:
                    if (e.Value == null)
                    {
                        e.Value = "未连接";
                    }

                    if (e.Value.ToString().Equals("正在连接"))
                    {
                        e.CellStyle.BackColor          = Color.Yellow;
                        e.CellStyle.SelectionBackColor = Color.Yellow;
                        e.CellStyle.ForeColor          = Color.Red;
                        e.CellStyle.SelectionForeColor = Color.Red;
                    }
                    break;

                case 10:
                    if (e.Value == null)
                    {
                        e.Value = "连接";
                    }
                    break;

                case 11:
                    int?dayCount = e.Value as int?;
                    if (dayCount.HasValue && dayCount.Value >= 3)
                    {
                        e.CellStyle.BackColor =
                            e.CellStyle.SelectionBackColor = Color.Red;
                    }
                    break;

                case 13:
                    var orderTypeDetailsList = e.Value as IList <OrderTypeDetails>;
                    if (orderTypeDetailsList != null && orderTypeDetailsList.Count > 0)
                    {
                        StringBuilder orderTypeSb = new StringBuilder();
                        foreach (var orderTypeDetails in orderTypeDetailsList)
                        {
                            orderTypeSb.AppendFormat("{0}({1}) ",
                                                     orderTypeDetails.Name, orderTypeDetails.Count);
                        }
                        e.Value = orderTypeSb.ToString();
                    }
                    else
                    {
                        e.Value = string.Empty;
                    }
                    break;
                }
            };

            sdgvSubAccountList.CellContentClick += (sender, e) =>
            {
                if (e.RowIndex == -1)
                {
                    return;
                }

                if (e.ColumnIndex == 10)
                {
                    var row   = sdgvSubAccountList.Rows[e.RowIndex];
                    var value = row.Cells[e.ColumnIndex].FormattedValue.ToString();
                    if (string.Equals(value, "连接"))
                    {
                        if (_remoteDeskConnectState.Connected)
                        {
                            MessageBoxEx.Show(this,
                                              "已经连接挂机端操作,不能同时进行多个连接操作!",
                                              "连接挂机端",
                                              MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return;
                        }

                        //开始连接前,关闭所有连接窗口。
                        while (AnyDesk.IsClientOpened())
                        {
                            AnyDesk.CloseClient();
                        }

                        if ((bool)row.Cells[8].Value)
                        {
                            _remoteDeskConnectState.Connected = true;
                            var view = _viewFactory.GetView <ViewReadyConnectClient>();
                            view.Model = row.DataBoundItem as UserSubAccountPageListVM;
                            if (view.ShowDialog(this) != DialogResult.OK)
                            {
                                _remoteDeskConnectState.Connected = false;
                            }
                        }
                        else
                        {
                            MessageBoxEx.Show(this,
                                              "该挂机端不在线,不能连接!\r\n\r\n可尝试刷新挂机端信息后,再进行操作。",
                                              "连接挂机端",
                                              MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return;
                        }
                    }
                    else
                    {
                        while (AnyDesk.IsClientOpened())
                        {
                            AnyDesk.CloseClient();
                        }
                        StartOrderRecord();
                    }
                }
            };

            scbProvince.SelectedIndexChanged += (sender, e) =>
            {
                if (scbProvince.SelectedIndex != -1)
                {
                    var value = scbProvince.SelectedItem as Province;
                    if (value.ProvinceID != -1)
                    {
                        scbCity.DisplayMember = "CityName";
                        scbCity.DataSource    = _areaBll.GetCityList(value.ProvinceID);
                    }
                    else
                    {
                        scbCity.DataSource     = null;
                        scbDistrict.DataSource = null;
                    }
                }
                else
                {
                    scbCity.DataSource     = null;
                    scbDistrict.DataSource = null;
                }
            };

            scbCity.SelectedIndexChanged += (sender, e) =>
            {
                if (scbCity.SelectedIndex != -1)
                {
                    var value = scbCity.SelectedItem as City;
                    if (value.CityID != -1)
                    {
                        scbDistrict.DisplayMember = "DistrictName";
                        scbDistrict.DataSource    = _areaBll.GetDistrictList(value.CityID);
                    }
                    else
                    {
                        scbDistrict.DataSource = null;
                    }
                }
                else
                {
                    scbDistrict.DataSource = null;
                }
            };

            tsmiSubAccManage.Click += (sender, e) =>
            {
                var view = _viewFactory.GetView <ViewSubAccountManage>();
                view.ShowDialog(this);
            };

            tsmiShopManage.Click += (sender, e) =>
            {
                var view = _viewFactory.GetView <ViewShopManage>();
                view.ShowDialog(this);
            };

            tsmiAccountInfo.Click += (sender, e) =>
            {
                var view = _viewFactory.GetView <ViewUserInfo>();
                view.ShowDialog(this);
            };

            tsmiChangePwd.Click += (sender, e) =>
            {
                var view = _viewFactory.GetView <ViewChangePassword>();
                view.ShowDialog(this);
            };

            tsmiAbout.Click += (sender, e) =>
            {
                var view = _viewFactory.GetView <ViewAbout>();
                view.ShowDialog(this);
            };

            paginationSubAccount.Reload += (sender, e) =>
            {
                LoadSubAccountPageList(
                    paginationSubAccount.PageIndex, paginationSubAccount.PageSize);
            };

            sbtnSearch.Click += (sender, e) =>
            {
                LoadSubAccountPageList(
                    1, paginationSubAccount.PageSize);
            };
        }
Example #8
0
        internal void OnRemoteOperationRequest(
            UserSubAccountPageListVM model,
            ConnectOptFrom connectOptFrom = ConnectOptFrom.ClientList)
        {
            _remoteDeskConnectState.ConnectOptFrom = connectOptFrom;

            DataGridViewRow selectedRow;

            if (connectOptFrom == ConnectOptFrom.ClientList)
            {
                selectedRow = sdgvSubAccountList.SelectedRows[0];
                selectedRow.Cells[9].Value  = "正在连接";
                selectedRow.Cells[10].Value = "断开连接";
            }
            else
            {
                selectedRow = _orderRecordControl.SdgvOrderRecordList.SelectedRows[0];
                selectedRow.Cells[8].Value = "正在连接";
                selectedRow.Cells[9].Value = "断开连接";
            }

            _remoteDeskConnectState.SelectedRow  = selectedRow;
            _remoteDeskConnectState.ConnectModel = model;

            tsslRemoteConnectInfo.Text =
                string.Format("请求连接 [{0}] ...", model.UserAccount);

            _remoteOperationBll.RequestConnectToClient(
                model.UserId, model.Id, model.TaoBaoAccount, response =>
            {
                string info = string.Empty;
                switch (response.State)
                {
                case RemoteOperationState.CannotConnectServer:
                    info = "服务器连接失败,未能获取挂机端远程连接信息";
                    break;

                case RemoteOperationState.Failed:
                    info = "服务器异常,获取挂机端远程连接信息失败!";
                    break;

                case RemoteOperationState.NotAuditShop:
                    info = "没有通过审核的店铺,不允许刷单!";
                    break;

                case RemoteOperationState.ClientOffline:
                    info = "挂机端没有登录,不允许刷单!";
                    break;

                case RemoteOperationState.Goldless:
                    info = "金币不足,不允许刷单!";
                    break;

                case RemoteOperationState.ToClientOffline:
                    info = "该挂机端已离线!";
                    break;

                case RemoteOperationState.ToClientBusy:
                    info = "该挂机端已有其他会员连接!";
                    break;

                case RemoteOperationState.ToClientRemoteDesktopServiceError:
                    info = "该挂机端远程桌面服务出现错误!";
                    break;

                case RemoteOperationState.InvalidOpt:
                    info = "非法操作!与服务器连接断开,请稍后重试!";
                    break;
                }

                Invoke(() =>
                {
                    if (response.State != RemoteOperationState.Successed)
                    {
                        MessageBoxEx.Show(this, info, "获取挂机端远程连接信息",
                                          MessageBoxButtons.OK, MessageBoxIcon.Information);

                        if (connectOptFrom == ConnectOptFrom.ClientList)
                        {
                            selectedRow.Cells[9].Value  = null;
                            selectedRow.Cells[10].Value = null;
                        }
                        else
                        {
                            selectedRow.Cells[8].Value = null;
                            selectedRow.Cells[9].Value = null;
                        }

                        _remoteDeskConnectState.Connected      = false;
                        _remoteDeskConnectState.ConnectModel   = null;
                        _remoteDeskConnectState.ConnectOptFrom = ConnectOptFrom.ClientList;
                        tsslRemoteConnectInfo.Text             = "未连接";
                        return;
                    }

                    var sourceFile = Path.Combine(Application.StartupPath, @"remotedesk\anydesk\anydesk.exe");
                    if (!File.Exists(sourceFile))
                    {
                        MessageBoxEx.Show(this, info, "远程桌面软件丢失,不能进行远程连接!",
                                          MessageBoxButtons.OK, MessageBoxIcon.Information);
                        if (connectOptFrom == ConnectOptFrom.ClientList)
                        {
                            selectedRow.Cells[9].Value  = null;
                            selectedRow.Cells[10].Value = null;
                        }
                        else
                        {
                            selectedRow.Cells[8].Value = null;
                            selectedRow.Cells[9].Value = null;
                        }

                        _remoteDeskConnectState.Connected      = false;
                        _remoteDeskConnectState.ConnectModel   = null;
                        _remoteDeskConnectState.ConnectOptFrom = ConnectOptFrom.ClientList;
                        tsslRemoteConnectInfo.Text             = "未连接";
                        return;
                    }

                    Interlocked.Exchange(ref _remoteDeskpCheckTimerCallbackState, 0);
                    _remoteDeskConnectState.IsShowOrderRecordView = false;
                    _remoteDeskConnectState.TimerState            = TimerState.CheckRemoteDeskConnectOpen;
                    _remoteDeskCheckTimer.Change(2000, 2000);
                    tsslRemoteConnectInfo.Text =
                        string.Format("开始连接 [{0}] ...", model.UserAccount);
                    AnyDesk.Connect(sourceFile, response.Data.RemoteId, response.Data.RemotePassword);
                });
            });
        }