Rogue возвращаются, отображая 9 символов в sendtext - PullRequest
0 голосов
/ 20 июня 2019

Я получаю мошенническую карету, возвращающую 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 символов вводятся в одну строку, а все последующие символы остаются во второй строке.

В отображаемом в данный момент окне консоли я не могу обнаружить этот возврат каретки.Вместо этого я просто вижу вывод, как и ожидал, но вывод в консоли не совпадает с выводом окна.

...