tabcal.параметры командной строки exe

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

исполняемый файл tabcal.exe и он находится в:

C:WindowsSystem32

Я ищу способ оболочки этого exe себя из моего приложения киоска:

  1. Сброс данных калибровки
  2. выполнить экран режима калибровки

exe поддерживает некоторые параметры, но они не задокументированы. Как только переключатель, который я нашел, был это:

tabcal lincal novalidate XGridPts={coords} YGridPts={coords}

Я хотел бы знать, может ли кто-нибудь помочь мне найти командные переключатели для сброса данных калибровки, которые будут работать так же, как переход на панель управления и переход к настройкам планшетного ПК, затем нажмите "Сброс"..."

26
задан ScottN
01.03.2023 2:49 Количество просмотров материала 2515
Распечатать страницу

4 ответа

короткий ответ:

tabcal.exe ClearCal DisplayID=\.\DISPLAY1

ответ

вы не найдете официального списка параметров командной строки для tabcal.exe везде, но я надеюсь, что это кому-то полезно. Эту информацию вам предоставляет Контролировать Процесс (моя полезная утилита для понимания того, что процесс должен был делать с помощью аргументов командной строки, а также что он делает с другими процессами, файловой системой и реестром) и либеральное использование Погуглить.

вот то, что я думаю, что я понял:

ClearCal

              сброс данных калибровки для данного устройства

              требует DisplayID

LinCal

              выполняется калибровка

              (если ClearCal не указано, функция по умолчанию LinCal)

              требуется DisplayID если у вас есть более одного устройства с пером и / или сенсорных возможностей

              может потребоваться DeviceKind если вы имеете и цифрователи ручки и касания на одиночном дисплее

DisplayID=\.\DISPLAY1

              One-based индекс дисплея связанный с экраном касания

              (Если у вас есть два дисплея, это 1 или 2; значение совпадает идентификационный номер мульти-дисплея в пульте управления дисплея)

Quiet

              подавляет окна сообщений

              Например, если вы делаете LinCal, ваши изменения будут сохранены, а не быть предложено, если вы хотите сохранить

              Например, если у вас есть ошибка с аргументами командной строки, вы не получите сообщение, указывающее это

DeviceKind={touch,pen}

              казалось бы, необязательный аргумент ClearCal и LinCal указать тип дигитайзер

              (Я подозреваю, что это может потребоваться, если у вас есть оба на одном дисплее, но мой дигитайзер поддерживает только прикосновение.)

{validate,novalidate}

              необязательный аргумент LinCal чтобы предотвратить или принять регистрацию калибровочных знаков, которые находятся далеко от перекрестия

              Если не указано, используется значение по умолчанию validate

XGridPts=

YGridPts=

              необязательные аргументы (если используются оба обязательно)LinCal, чтобы указать координаты X и Y перекрестия для калибровки.

              Значения a список, разделенный запятыми, без пробелов в координатах пикселей, отсчитываемых от нуля

              (например, для 1920×1080, значения дисплея X 0-1919 и y 0-1079 приняты; некоторые примеры ниже)

              Если не указано, калибровочные точки по умолчанию равны четырем, если не указано иное (значения извлекаются из HKLM:\SYSTEM\CurrentControlSet\Control\TabletPC\LinearityData)

Export

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

              Выходной файл находится в директории из которой tabcal был вызван, названный " caldatan.тхт', где n это с нуля автоинкрементные номером

              Содержимое файла-это имя дигитайзера, разрыв строки и та же шестнадцатеричная строка, записанная в значение реестра в HKLM:\SYSTEM\CurrentControlSet\Control\TabletPC\LinearityData

              (Я не нашел соответствующей функции импорта.)

другие вещи, которые я узнал

есть три подраздела реестра, которые содержат данные калибровки:

  • HKLM:\SYSTEM\CurrentControlSet\Control\TabletPC\LinearityData
  • HKLM:\SYSTEM\CurrentControlSet\Control\TabletPC\UserLinearityData
  • HKLM:\SYSTEM\CurrentControlSet\Enum\HID\VID_xxxx&&PID_xxxx&Colxx\(non-deterministic)\Device Parameters

первые два могут содержать двоичное значение имени vid_xxxxpid_xxxx&colxx, содержащий данные калибровки для этого конкретного устройства, а также значения XGridPts и YGridPts, если вы откалиброваны с более чем 4 точек касания.

на Enum\HID подраздел, имеющий те же значения VID/PID/Col, что и LinearityData значение будет иметь значение с именем LinearityData С теми же данными, что и выше.

если вы удалите все эти значения реестра, вам придется сбросить данные калибровки, но изменение не вступит в силу, пока эти данные не будут считаны обратно в систему, либо при последующей загрузке или когда wisptis.exe пользовательский процесс перезапускается. (Упорядоченный перезапуск планшетного ПК Служба ввода не делает этого, даже если она останавливает и перезапускает wisptis.exe процессы. Иди разберись.)

гораздо более простой способ сделать это-выполнить следующую команду (которая требует повышения прав), которая немедленно удаляет эти ключи и производит изменение:

tabcal.exe ClearCal DeviceKind=touch DisplayID=\.\DISPLAY1

это точная команда, которая выполняется, когда пользователь выбирает пункт "Сброс..."из Панели управления настройками планшетного ПК на моей тестовой системе. Если у вас есть устройство перьевого ввода или другая конфигурация дисплея, ваша команда может немного отличаться. (Если включен контроль учетных записей, перед разрешением действия сброса можно открыть область сведений, чтобы просмотреть полную командную строку для выполнения. В качестве альтернативы вы можете вытащить эту информацию из Контролировать Процесс.)

как вы уже определили, вы можете повторно откалибровать сенсорный экран, используя производную одной из следующих команд в зависимости от размера вашего дисплея и ваших конкретных требований:

# Default touch calibration (4 points unless someone's previously specified XGridPts/YGridPts)
tabcal.exe lincal novalidate devicekind=touch
tabcal.exe lincal novalidate devicekind=pen

# Example 25-point touch calibration for 1920×1080 display
tabcal.exe lincal novalidate devicekind=touch XGridPts=10,485,960,1435,1910 YGridPts=10,275,540,805,1070

# Example 121-point pen calibration (from a Microsoft Surface forum)
tabcal.exe lincal novalidate devicekind=pen XGridPts=10,60,110,360,660,960,1260,1560,1810,1860,1910 YGridPts=10,60,110,200,330,490,650,810,970,1020,1070
3
отвечен Dan 2023-03-02 10:37

Я побежал tabcal через strings. В списке ниже могут быть возможные переключатели. Я не знаю, что они делают.

LinCal
ShowCursor
Quiet
NoValidate
SaveFiles
Export
UserLinCal
ClearCal
NoDesktop
XInterval=
YInterval=
XGridPts=
YGridPts=
DeviceName=
DevicePath=
DisplayID=
DeviceKind=
UserSid=
UserSid=%s %s
RunAs
TabCalSingleInstance
1
отвечен ChrisM 2023-03-02 12:54

огромное спасибо всем за работу в этой теме! Я смог использовать эту информацию для решения проблемы инверсии оси y с новым сенсорным экраном. Я создал пользовательский тест калибровки, используя следующий код:

tabcal lincal novalidate DeviceKind=touch DisplayID=\.\DISPLAY1 XGridPts=99,1265 YGridPts=99,667

это успешно перевернуло мои точки оси y и позволило мне нормально использовать новый сенсорный экран. Это было использовано на дисплее 1366 на 768, поэтому редактируйте в соответствии с вашим размером дисплея.

1
отвечен user3092842 2023-03-02 15:11

дополнительная информация:

на Windows 10, вместо перезагрузки wisptis.exe, ты должен убить DWM.exe (он автоматически перезапускается) для новых значений из реестра вступили в силу (если вы не используете TabCal.исполняемый.)

также следует отметить, если вы измените данные калибровки в реестре вручную, вы должны излучать SendMessageTimeout сообщение Windows(HWND_BROADCAST, WM_SETTINGCHANGE, нуль, "TabletPCDigitizerMappingChanged") как TabCal не уведомить клиента, что значения калибровки изменились.

1
отвечен user938673 2023-03-02 17:28

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх