Программный вызов сенсорной клавиатуры

04.08.18

Разработка - Разработка внешних компонент

Программный вызов сенсорной клавиатуры в ОС Windows, для сенсорных мониторов, которые не определяются системой как hid-совместимый сенсорный экран. Тестировалось на платформе 8.3.9.2033, конфигурация Розница 1.0.16.8.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Программный вызов сенсорной клавиатуры. :
.zip 21,91Kb
53
53 Скачать (1 SM) Купить за 1 850 руб.

Проблема

Проблема, которая заставила меня написать данную статью, возникла при внедрении функционала в розничные магазины, который предполагает ввод некоторых данных. Исходные данные, сенсорный POS-Теринал, ОС Windows 10, Розница 1.0(Не имеет значения). Сенсор на POS-Терминалах не поддерживает мультитач и работает как обычная мышка. Попытки перевести систему в режим планшета и использовать сенсорную клавиатуру стандартными методами не увенчались успехом, клавиатура не появляется при активации поля ввода, плюс для не мультитач экранов режим планшета, это редкостное извращение. Информации по альтернативным способам работы с сенсорной клавиатурой найдено не было, поэтому пришлось изобретать велосипед.

Решение

И так, в обычном режиме сенсорная клавиатура не доступна и есть возможность использовать лишь экранную клавиатуру, которая в свою очередь менее удобна и так же не подразумевает свое появление при активации поля и закрыв ее придется что-то придумывать, чтобы она опять появилась (на самом деле не что-то, а можно просто выполнить команду osk.exe, экранная клавиатура появиться на экране).

Для того чтобы сенсорная клавиатура запустилась в обычном режиме нужно лишь запустить фоновый процесс:

C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe

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

#include <initguid.h>
#include <Objbase.h>
#pragma hdrstop

// 4ce576fa-83dc-4F88-951c-9d0782b4e376
DEFINE_GUID(CLSID_UIHostNoLaunch,
    0x4CE576FA, 0x83DC, 0x4f88, 0x95, 0x1C, 0x9D, 0x07, 0x82, 0xB4, 0xE3, 0x76);

// 37c994e7_432b_4834_a2f7_dce1f13b834b
DEFINE_GUID(IID_ITipInvocation,
    0x37c994e7, 0x432b, 0x4834, 0xa2, 0xf7, 0xdc, 0xe1, 0xf1, 0x3b, 0x83, 0x4b);

struct ITipInvocation : IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Toggle(HWND wnd) = 0;
};

int WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    HRESULT hr;
    hr = CoInitialize(0);

    ITipInvocation* tip;
    hr = CoCreateInstance(CLSID_UIHostNoLaunch, 0, CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER, IID_ITipInvocation, (void**)&tip);
    tip->Toggle(GetDesktopWindow());
    tip->Release();
    return 0;
}

Ссылка на оригинал обсуждения

Дальше обернул этот код в библиотеку и при появление окна, где требуется ввести данные открываю клавиатуру, а при его закрытие соответственно закрываю.

УправлениеКлавиатурой = Новый COMОбъект("TouchKeyboardDLL.ShKb");
УправлениеКлавиатурой.ShowKeyboard();

Итоги

Кому это может быть полезно, сейчас в связи с законом ФЗ-54, на кассовых местах может потребоваться ввод адреса электронной почты, я специально опускаю ввод телефона, так как с цифровой клавиатурой особых проблем нет, это решение можно добавить во внешние обработки для работы с кассовыми аппаратами, так же такой способ ввода может упростить жизнь, если требуется заполнять какие-то данные по клиенту на кассовом месте.

Скажу честно, мы не ввели данный функционал в эксплуатацию и не факт, что введем, у нас не запущен процесс explorer на моноблоках, что не позволяет задействовать сенсорную клавиатуру. Будем думать, что нам важнее. Исходники компоненты, выкладывать не буду, так как они делались для теста и не несут, какой-то нужной информации, кому очень захочется пишите в ЛС вышлю без вопросов. В архиве готовая библиотека и тестовая обработка, основные моменты описаны в статье. Надеюсь кому-то это пригодится.

 

Клавиатура сенсор POS-терминал розница

См. также

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Программист Пользователь Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Медиадисплей покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Экран можно использовать в качестве графического меню-борда в кафе и видеовывески. В качестве устройства отображения можно использовать Android-планшеты, смарт-телевизоры с Android, мониторы или проекторы под управлением Windows или Linux-компьютера. Linux-версия успешно запускается на одноплатных компьютерах Raspberri Pi и Orange Pi. Настраивается ЛЮБОЙ ДИЗАЙН экрана при помощи встроенного графического редактора! Решение можно масштабировать от одного экрана до тысяч экранов с централизованным управлением.

18000 руб.

30.05.2017    54136    9    69    

46

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Платные (руб)

Внешняя компонента для конвертации PDF файлов в картинки без использования дополнительных программ. Работает на сервере и в тонком клиенте.

2400 руб.

25.06.2024    1177    3    4    

3

Разработка внешних компонент Телефония, SIP Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    47407    124    66    

67

Разработка внешних компонент Программист Платформа 1С v8.3 Платформа 1C v8.2 Платные (руб)

Внешняя компонента, позволяющая посылать команды и получать ответы по GraphQL протоколу из 1С.Может быть использована при интеграции. В 1С работает на стороне "клиента".

4600 руб.

27.06.2023    3662    3    0    

5

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    77574    72    257    

191

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

3000 руб.

12.05.2020    28784    138    100    

91

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    36794    114    127    

114

Разработка внешних компонент Системный администратор Программист Стажер Бесплатно (free)

Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

14.01.2025    2279    bayselonarrend    14    

48
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. markers 278 06.08.18 06:18 Сейчас в теме
Отличная идея, но чем был обусловлен выбор COM объекта, а не реализация NativeAPI библиотеки? Конечно и установку COM объекта можно автоматизировать, но всё-таки в отношении NativeAPI ничего особенного делать не надо, закинул ZIP архив с библиотекой в макет и устанавливай на клиентах спокойно.
2. dewersia 401 06.08.18 07:52 Сейчас в теме
Выбор COM был обусловлен более быстрой реализацией библиотеки, меньше мороки со сборкой, как я написал не факт ,что мы это запустим, поэтому делал это как тестовый вариант, если будем запускать в работу то скорее всего оберну в NativeAPI. Первый вариант был вообще консольное приложение, но там возникла проблема потери фокуса ).
DrAku1a; markers; +2 Ответить
4. pushkarev 26.01.21 17:07 Сейчас в теме
(2) Добрый день. Хочу попробовать осуществить сенсорный ввод на 1с. Поделитесь пожалуйста Исходниками компонентами
3. qazaas 19.07.19 10:42 Сейчас в теме
{ВнешняяОбработка.ТестКлавиатуры.Форма.Форма.Форма(32)}: Ошибка при вызове метода контекста (ShowKeyboard)
	УправлениеКлавиатурой.ShowKeyboard();	
по причине:
Неизвестная ошибка


Может быть компоненту неправильно установил? Подскажите, как правильно тогда.
tigr_0930; +1 Ответить
5. user1360539 01.04.21 23:54 Сейчас в теме
Добрый день. Вышлите пожалуйста "архивчик". Заранее благодарен.
6. theelectric 17 27.07.21 09:49 Сейчас в теме
Огонь! Спасибо большое!
7. Air777 25.08.21 13:12 Сейчас в теме
Пожалуйста выложите исходник или пришлите в личку. Нужна версия для 64бит
Оставьте свое сообщение