//钩子事件处理 private void ListenerScanerEvent(ScanerHook.ScanerCodes codes) { //设置能效编号 if (Auto_MenuItem.IsChecked) { picturesPage.SetNumber(codes.Result); AutoPrint(codes.Result); } }
//钩子事件处理 private void ListenerScanerEvent(ScanerHook.ScanerCodes codes) { //设置能效编号 if (Auto_MenuItem.IsChecked == true) { //将钩子捕获到的结果集展示在界面框里,但扫描时已经扫过一次在了,会导致显示两次信息。 //0112,将自动打印的标签码输入框改成readonly就不会出现上面说的这个问题了。 PNumber = codes.Result; AutoPrint(codes.Result); } }
private void ShowInfo(ScanerHook.ScanerCodes scanerCodes) { textBox1.Text = scanerCodes.CurrentChar; textBox2.Text = scanerCodes.KeyDownCount.ToString(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < scanerCodes.KeyboardState.Length; i++) { sb.Append(scanerCodes.KeyboardState[i].ToString("X2")); } textBox3.Text = sb.ToString(); textBox3.Text = System.Text.Encoding.ASCII.GetString(scanerCodes.KeyboardState); textBox4.Text = scanerCodes.isShift.ToString(); textBox5.Text = scanerCodes.CurrentKey.ToString(); //textBox6.Text = scanerCodes.IsValid ? barCode.BarCode : "";//是否为扫描枪输入,如果为true则是 否则为键盘输入 textBox7.Text = scanerCodes.Result; }
private void Listener_ScanerEvent(ScanerHook.ScanerCodes codes) { string[] content = codes.Result.ToString().Split(','); try { DateTime dateTime; if (!DateTime.TryParseExact(content[5], "yyyy/M/ddHH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) { DateTime.TryParseExact(content[5], "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime); } InputInvoice invoice = new InputInvoice() { InvoiceCode = content[2], InvoiceNumber = content[3], Date = dateTime, RecDate = DateTime.Now, Verification = content[6], AcctId = Information.AccountantId, PersonId = Properties.Settings.Default.PersonId, VerificationCode = (content.Length == 8)?content[7] : null }; decimal amount = 0; //invoice.AcctId = Information.AccountantId; //invoice.PersonId = Properties.Settings.Default.PersonId; using (var db = new DataModel()) { invoice.PersonName = db.Persons.Where(p => p.PersonId == invoice.PersonId).FirstOrDefault().PersonName; } if (decimal.TryParse(content[4], out amount)) { invoice.Amount = amount; } if (Invoices.Any(i => i.InvoiceNumber == invoice.InvoiceNumber && i.InvoiceCode == invoice.InvoiceCode)) { string time = DateTime.Now.ToString("HH:mm:ss"); ScanMessage = time + " 该发票已扫描,等待入库!"; //MessageBox.Show("该发票已经扫描等待入库", "信息", MessageBoxButton.OK, MessageBoxImage.Information); } else { using (var db = new DataModel()) { if (db.Invoices.Any(a => a.InvoiceNumber == invoice.InvoiceNumber && a.InvoiceCode == invoice.InvoiceCode)) { string time = DateTime.Now.ToString("HH:mm:ss"); ScanMessage = time + " 该发票已经报销过!"; //MessageBox.Show("该发票已经报销过", "警告", MessageBoxButton.OK, MessageBoxImage.Warning); } else { string time = DateTime.Now.ToString("HH:mm:ss"); ScanMessage = time + " 发票扫描成功!"; Message = $"发票代码: {invoice.InvoiceCode} 发票号码: {invoice.InvoiceNumber} 税前金额: {invoice.Amount} " + $"发票日期: {invoice.Date.ToString("yyyy年MM月dd日")}"; invoice.AcctName = db.Accountants.Where(o => o.AccountantId == Information.AccountantId).FirstOrDefault().Person.PersonName; invoice.VerifyState = "未校验"; Invoices.Add(invoice); InputCount = Invoices.Count; BtnEnableJudgement(); } } } } catch (Exception e) { ScanMessage = "非正常发票数据"; } }
private void ScanerHook_BarCodeEvent(ScanerHook.ScanerCodes scanerCodes) { ShowInfo(scanerCodes); }