Я получаю мошенническую карету, возвращающую 9 символов в мой sendtext, но только на некоторых устройствах.
Эта программа считывает ввод, предположительно, со сканера штрих-кода, и, если необходимо, ест этот текст, модифицируети отправляет измененный текст обратно в фокусированное окно, используя sendkeys.Он отлично работает на моем ПК.Он отлично работает на моем рабочем компьютере.Он будет использоваться на планшетах Dell Latitude 7212, но там не работает.Только на этих планшетах я получаю каретку, возвращающую 9 символов в текст.
Проверено, что входной текст, который использует оператор sendkeys, идентичен на всех машинах.Входные данные для sendkeys одинаковы на всех машинах.
Отслеживается вывод консоли на возврат каретки.Консольный вывод одинаков для всех устройств.Между символами нет возврата каретки.
Удален возврат каретки с входа sendkeys для устранения неполадок, так как к выходу добавлен дополнительный возврат.Это не повлияло на мошеннический возврат каретки в планшетах.
Проверено, что код работает на версии .NET Framework, используемой на планшетах.Оно делает.Используемые планшеты отображаются с использованием того же изображения, что и наши ноутбуки, которые работают без каких-либо проблем.
case 3:
if ((Keys)vkCode == Keys.Enter)
{
Globals.barcodeLength++;
// set the barcode stage back to 0
Globals.activeStage = 0;
// set the barcode type back to 0
Globals.barcodeType = 0;
Globals.sendKeysActive = true;
// format data for applicable program
if (Globals.barcodeFormatStandard != "ProgramX")
{
switch (Globals.barcodeFormatStandard)
{
case "ProgramY":
SendKeys.Send(FormatForProgramY(Globals.barcodeDataString));
break;
case "ProgramZ":
SendKeys.Send(FormatForProgramZ(Globals.barcodeDataString));
break;
}
}
break;
}
Как только мы перейдем к процедуре sendkeys, sendKeysActiveЕсли для логического параметра установлено значение true, программа пропускает отправленный текст без дальнейшей обработки:
if (Globals.sendKeysActive)
{
if (Globals.barcodeLength == Globals.charactersTransmitted)
{
Globals.barcodeLength = 0;
Globals.charactersTransmitted = 0;
Globals.sendKeysActive = false;
Globals.barcodeDataString = "";
}
При выполнении этой последовательности программа возвращается к обработке текста по умолчанию, при которой текст просто передается.вместе с активным окном (не поглощается, когда я собираю штрих-код)
return CallNextHookEx(_hookID, nCode, wParam, lParam);
Вот несколько примеров ввода: '] C1123456789'
Входные данные для sendkeys следующие: '#123456789 '
Выходные данные Sendkeys совпадают с входными данными для всех, кроме планшетов.
На планшете я получаю' # ', после которого следуют символы 1-8, затем в новой строкеЯ получаю символ «9».Более длинные записи не создают последующих разрывов строк.На планшетах первые 9 символов вводятся в одну строку, а все последующие символы остаются во второй строке.
В отображаемом в данный момент окне консоли я не могу обнаружить этот возврат каретки.Вместо этого я просто вижу вывод, как и ожидал, но вывод в консоли не совпадает с выводом окна.