public void MarkError(IVerifyCodeRecognizeResult code)
 {
     if (VerifyCodeRecognizeServiceLoader.VerifyCodeRecognizeEngine != null && AutoVcCode != null)
     {
         VerifyCodeRecognizeServiceLoader.VerifyCodeRecognizeEngine.MarkResult(AutoVcCode, false);
         AutoVcCode = null;
     }
 }
Example #2
0
        protected override async Task OnAutoVcSuccess(int count, IVerifyCodeRecognizeResult code)
        {
            ts.Text  = "第" + count + "次自动识别成功";
            ts.Image = Properties.Resources.tick_16;
            ts.ApplyColorSchema(RowStyleType.Green);

            await base.OnAutoVcSuccess(count, code).ConfigureAwait(true);
        }
        void AutoVc()
        {
            AutoVcCount++;
            if (AutoVcCount > MaxAutoVcCount)
            {
                OnAutoVcGiveUp();
                return;
            }
            OnBeginAutoVc();

            var img = (Image)Image.Clone();

            var task = new Task <IVerifyCodeRecognizeResult>(() => VerifyCodeRecognizeServiceLoader.VerifyCodeRecognizeEngine.GetCode(img));

            task.ContinueWith(_ => AppContext.MainForm.UiInvoke(() =>
            {
                if (IsDisposed)
                {
                    return;
                }

                if (_.IsCompleted && !_.IsFaulted && _.Result != null)
                {
                    AutoVcCode = _.Result;
                    //report
                    OnEndAutoVc();
                }
                else
                {
                    OnAutoVcFailed();

                    if (AutoReloadIfAutoVcFailed)
                    {
                        LoadVerifyCode();
                    }
                }
            }));
            task.Start();
        }
Example #4
0
 /// <summary>
 /// 标记识别结果
 /// </summary>
 /// <param name="result"></param>
 /// <param name="correct"></param>
 public abstract void MarkResult(IVerifyCodeRecognizeResult result, bool correct);
Example #5
0
 /// <summary>
 /// 标记识别结果
 /// </summary>
 /// <param name="result"></param>
 /// <param name="correct"></param>
 public override void MarkResult(IVerifyCodeRecognizeResult result, bool correct)
 {
     //标记结果错误
 }
 public override void MarkError(IVerifyCodeRecognizeResult code)
 {
     verifyCodeBox1.MarkError(code);
 }
        public void RunLoginProcedure(RequireSessionLoginWorker worker)
        {
            using (var wd = new YetAnotherWaitingDialog())
            {
                var vccount = 0;
                IVerifyCodeRecognizeResult vcResult = null;

                wd.WorkCallback      = worker.DoLogin;
                worker.StateChanged += (ss, se) =>
                {
                    wd.SetState(worker.State.ToExecutionState(), worker.Message);
                };
                worker.VerifyCodeError += (x, y) =>
                {
                    if (vcResult != null && VerifyCodeRecognizeServiceLoader.VerifyCodeRecognizeEngine != null)
                    {
                        VerifyCodeRecognizeServiceLoader.VerifyCodeRecognizeEngine.MarkResult(vcResult, false);
                        vcResult = null;
                    }
                };
                worker.RequireEnterVerifyCode += (ss, ee) =>
                {
                    wd.Invoke(() =>
                    {
                        if (vccount > 5 && ProgramConfiguration.Instance.AutoEnterLoginVcCode)
                        {
                            MessageDialog.Information("亲,验证码自动识别失败超过限制,自动识别已经关闭,请手动输入验证码。");
                        }
                        //var vcform = new UI.Dialogs.RequireVcCode
                        //{
                        //	Session = ee.Session,
                        //	EnableAutoVc = vccount < 6 && ProgramConfiguration.Instance.AutoEnterLoginVcCode,
                        //	AutoVcCount = vccount
                        //};
                        //if (vcform.ShowDialog(OwnerForm) == DialogResult.OK)
                        //{
                        //	vcResult = vcform.VcResult;
                        //	vccount = vcform.AutoVcCount;
                        //	ee.VerifyCode = vcform.Code;

                        //	if (vcResult != null)
                        //	{
                        //		//report
                        //		ApiEvents.OnAutoVc(null, new GeneralEventArgs<AutoVcLog>(new AutoVcLog()
                        //																{
                        //																	Account12306 = worker.UserName,
                        //																	TypeID = 0,
                        //																	TodayUsed = AutoVcBaseLimition.GetVcUsed()
                        //																}));

                        //	}
                        //}
                        var vc = new TouchClickVcSimpleForm(ee.Session)
                        {
                            RandCodeType = RandCodeType.SjRand,
                            EnableAutoVc = vccount < 6 && ProgramConfiguration.Instance.AutoEnterLoginVcCode
                        };
                        if (vc.ShowDialog(OwnerForm) == DialogResult.OK)
                        {
                            ee.VerifyCode = vc.Code;
                            vcResult      = vc.AutoVcResult;

                            if (vcResult != null)
                            {
                                vccount++;
                            }
                        }
                    });
                    vccount++;
                };

                wd.ShowDialog(OwnerForm);

                if (EnableFallback && worker.Session == null && (string.IsNullOrEmpty(worker.Message) || worker.Message.IndexOf("密码输入错误") != -1))
                {
                    //返回
                    using (var logindlg = new Login()
                    {
                        PreSelectUser = worker.UserName
                    })
                    {
                        logindlg.ShowDialog(OwnerForm);
                    }
                }
                else if (worker.State == OpearationState.Blocked && !worker.Message.IsNullOrEmpty())
                {
                    MessageDialog.Error(OwnerForm, "尝试登录的时候遇到了问题:\n\n" + worker.Message);
                }
                else if (wd.Exception != null)
                {
                    MessageDialog.Error(OwnerForm, "尝试登录的时候遇到了问题:\n\n" + wd.Exception.ToString());
                }
                if (worker.Session != null && worker.LoginConflict)
                {
                    MessageDialog.Information(OwnerForm, "此次登录检测到会话冲突,如果您此时还在其它的软件或浏览器上登录此账号,它们将会被12306无情地注销掉。\n\n世界就是这样的残酷,多坑点身份证注册几个账号吧……");
                }
            }
        }
Example #8
0
 protected virtual async Task OnAutoVcSuccess(int count, IVerifyCodeRecognizeResult code)
 {
     await TryBeginSubmitOrderAsync().ConfigureAwait(true);
 }
 public virtual void MarkError(IVerifyCodeRecognizeResult code)
 {
 }