Перехватчик клавиатуры, выполненный по технологии NATIVE

Публикация № 91306

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

Внешняя компонента для 1С 8.2 NATIVE для перехвата нажатий кнопок клавиатуры (включая исходники проекта на VC++ 2010).

Внешняя обработка (в толстом клиенте) предназначенная для тестирования и как пример использования. Собственно сама внешняя компонента содержится в макете обработки, в отдельном макете представлен zip-архив с проектом на Visual C++ 2010.

Реализован механизмы включения и выключения перехвата, настройки генерации события при нажатии или отпускании клавиши, настройки перехвата в при поступлении в очередь приложения или позже, блокировка стандартной обработки нажатия клавиш приложением 1С. Выходные данные представляют из себя строку с форматированным числом, которое содержит в себе виртуальный код клавиши и дополнительную информацию о кнопках Alt, Ctrl, Shift (отдельно левых и правых). После числа может быть передан символ (если он может быть интерпретирован) с учетом языковой раскладки.

 

Скачать файлы

Наименование Файл Версия Размер
Внешняя обработка перехватчик клавиатуры

.epf 79,41Kb
21.03.13
463
.epf 79,41Kb 463 Скачать

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Angeros 22.09.11 09:54 Сейчас в теме
46. babybu 28 26.03.13 08:53 Сейчас в теме
Спасибо. Хорошая обработка. На ее основе удалось сделать глобальный хук. А может кто подскажет, как в функцию ВК, написанную по NativeAPI, передавать массив или может структуру? В HasRetVal определил метод, как функцию, в GetNParams задал количество параметров данного метода - 1. Метод называется "Подключить". Если передаю скалярный параметр - все нормально (Компонента.Подключить(1)), а если пытаюсь передать массив или структуру (Компонента.Подключить(Массив)) - выдает ошибку- неверный аргумент.
106. Неопределено 71 23.08.18 04:44 Сейчас в теме
(0) Что-то не взлетает, выдавая ошибку при открытии:
{ВнешняяОбработка.KeyboardHook.Форма.Форма.Форма(123)}: Тип не определен (AddIn.Hook.KeyboardHook)
КомпонентаKeyBoardHook = Новый("AddIn.Hook.KeyboardHook");

8.3.10.2252, обычное приложение, толстый клиент.
107. Kobra_RU 223 23.08.18 09:34 Сейчас в теме
(106) Только что проверил на платформе 8.3.10.2667. Все нормально. Единственно после выдачи разрешения на открытие внешней обработки и подключения бинарных файлов закрыл и открыл опять обработку.
Код по подключению очень простой
        ИмяФайла		= КаталогВременныхФайлов()+"Hook1c.dll";

	Макет	= ПолучитьМакет("ВнешняяКомпонента");
	Макет.Записать(ИмяФайла);

	ПодключитьВнешнююКомпоненту(ИмяФайла, "Hook",ТипВнешнейКомпоненты.Native);
	КомпонентаKeyBoardHook = Новый("AddIn.Hook.KeyboardHook");
Показать


Так как ошибка "Тип не определен" не происходит подключение внешней компоненты. Т.е. либо включена защита на подключение бинарных файлов, либо что-то с каталогом временных файлов.
108. Kobra_RU 223 23.08.18 09:48 Сейчас в теме
(106)Кстати, пришло в голову... dll-ка написана и откомпилирована на VC++ 2010. Может в системе не установлен пакет Visual C++ 2010 Redistributable? И кстати с разрядностью надо смотреть, платформа 1С у Вас x32 или x64? dll-ка сделана под 32 разрядную платформу.
109. Неопределено 71 23.08.18 10:12 Сейчас в теме
(108) И пакет не установлен, и платформа x64. Уже решил задачу, для которой качал, другим путём.
2. cool.vlad4 45 22.09.11 10:17 Сейчас в теме
Ну ты молоток, тока ехал на работу думал очень надо подобную штуку сделать:-)
3. fishca 1179 22.09.11 10:40 Сейчас в теме
(0) Только вот какой смысл в этой внешней компоненте, если она по технологии Native API и не используется на сервере?
На сервере и перехватывать-то, как правило нечего. Если только злостных каких шпиёнов ... :)
5. cool.vlad4 45 22.09.11 10:43 Сейчас в теме
(3) Как пример, мне например нужен хук, - а свои исходники на дельфи я куда-то дел, давно делал.
(4) в макете выгрузить
manualcheg; themyst; fishca; +3 Ответить
8. Kobra_RU 223 22.09.11 11:36 Сейчас в теме
fishca пишет:
Только вот какой смысл в этой внешней компоненте, если она по технологии Native API и не используется на сервере? На сервере и перехватывать-то, как правило нечего. Если только злостных каких шпиёнов ... :)
(3) fishca,

Вообще-то я хотел написать фронт-кассира на тонком клиенте. Подключение комфортное на тонком клиенте (через зазипованный архив в манифестом) желательно делать по новой технологии внешних компонент, а готовую такую в инете не нашел...
4. fishca 1179 22.09.11 10:42 Сейчас в теме
6. fishca 1179 22.09.11 10:49 Сейчас в теме
(0)
Процедура ПриОткрытии()

	Макет	= ПолучитьМакет("ВнешняяКомпонента");
	Макет.Записать(ИмяФайла);

	ПодключитьВнешнююКомпоненту("C:\Users\Fahreev\Documents\Visual Studio 2010\Projects\KeyboardHook\Debug\KHook1C.dll", "Hook",ТипВнешнейКомпоненты.Native);
	КомпонентаKeyBoardHook = Новый("AddIn.Hook.KeyboardHook");

КонецПроцедуры

Показать


:D
Где же мне искать такой путь на своем компе?
7. Kobra_RU 223 22.09.11 11:32 Сейчас в теме
Как всегда ошибка...
Надо так:
Процедура ПриОткрытии()

	Макет	= ПолучитьМакет("ВнешняяКомпонента");
	Макет.Записать(ИмяФайла);

	ПодключитьВнешнююКомпоненту(ИмяФайла, "Hook",ТипВнешнейКомпоненты.Native);
	КомпонентаKeyBoardHook = Новый("AddIn.Hook.KeyboardHook");

КонецПроцедуры
Показать
9. Kobra_RU 223 22.09.11 11:39 Сейчас в теме
fishca пишет:

(0) где исходники?


Надо открыть обработку в конфигураторе и сохранить макет ПроектZip в файл с расширением Zip. В этом архивнике папка с проектом. Открываем в Visual C++ 2010 как проект или как решение (solution).
10. fillin 201 22.09.11 14:57 Сейчас в теме
Плюс за исходники. Мне тоже ВК надо написать и тоже Native. Очень пригодится.
11. Kobra_RU 223 22.09.11 15:34 Сейчас в теме
fillin пишет:

Плюс за исходники. Мне тоже ВК надо написать и тоже Native. Очень пригодится.

(10) fillin,

Там кое-что наворочено лишнего. Надеюсь, разберешься. Лишнее - это двусвязный список созданных объектов, которые последовательно опрашиваются в процедуре перехватчике KeyboardProc. Для чего? Если разработчик создает в форме несколько объектов из это компоненты (что лишено смысла при перехвате клавиатуры), то в стек клавиатуры не встраивается такое же количество обработчиков. Обработчик всегда один. А он уже опрашивает все объекты.
Если будешь сам писать ВК, то про отладку:
Я писал тестовую обработку в 1С, там я прописывал загрузку ВК dll-ки из папки debug проекта (а не из макета, как сейчас). Для отладки запускаем 1С, подключаемся к процессу 1С из Visual Studio и можем назначать точки останова в dll-ке, а вызовы инициировать из 1С (кнопками и т.п.)
12. genkostya003 23.09.11 00:06 Сейчас в теме
Там кое-что наворочено лишнего. Надеюсь, разберешься. Лишнее - это двусвязный список созданных объектов, которые последовательно опрашиваются в процедуре перехватчике KeyboardProc. Для чего? Если разработчик создает в форме несколько объектов из это компоненты (что лишено смысла при перехвате клавиатуры), то в стек клавиатуры не встраивается такое же количество обработчиков. Обработчик всегда один. А он уже опрашивает все объекты.
Если будешь сам писать ВК, то про отладку:
Я писал тестовую обработку в 1С, там я прописывал загрузку ВК dll-ки из папки debug проекта (а не из макета, как сейчас). Для отладки запускаем 1С, подключаемся к процессу 1С из Visual Studio и можем назначать точки останова в dll-ке, а вызовы инициировать из 1С (кнопками и т.п.)
13. Aleksey.z 46 23.09.11 08:09 Сейчас в теме
А можно реализовать что бы он перехватывал все время, а не только когда окно программы 1С активно, а например когда окно свернуто и активна в этот момент другая программа?
14. Kobra_RU 223 23.09.11 08:55 Сейчас в теме
Aleksey.z пишет:

А можно реализовать что бы он перехватывал все время, а не только когда окно программы 1С активно, а например когда окно свернуто и активна в этот момент другая программа?

13) Aleksey.z,
Да, вроде бы можно.
Для этого надо изменить параметры процедуры подключения перехватчика SetWindowsHookExA(WH_KEYBOARD, (HOOKPROC)KeyboardProc, 0, ThreadId). Она используется в конструкторе класса CAddInNative.

Вместо ThreadId надо указать 0 или NULL, а в предпоследнем параметре (который сейчас 0, надо указать HINSTANCE dll-ки внешней компоненты. Она доступна в функции DllMain (файл dllmain.cpp) Нужно её просто сохранить в какую-нибудь глобальную статическую переменную и потом поставить как параметр в SetWindowsHookExA...
77. user608116_3830123 6 29.12.16 12:24 Сейчас в теме
(14) Напишите, пожалуйста, измененный код. А-то трудно сообразить какие изменения нужно сделать, чтобы захват производился в не программы
78. user608116_3830123 6 03.01.17 00:52 Сейчас в теме
(77) 1) в файле stdafx.h я объявил переменную global_var:
#include <windows.h>
static HMODULE global_var;
2) Затем в файле dllmain.cpp этой переменной назначил HINSTANCE:
global_var = hModule;
switch (ul_reason_for_call)...
3) Затем в функцию SetWindowsHookExA указал параметры:
SetWindowsHookExA(WH_KEYBOARD, (HOOKPROC)KeyboardProc, global_var, NULL);
Но так не работает.. Подскажите, пожалуйста, что я делаю неправильно...
15. itlbv 26.09.11 14:43 Сейчас в теме
Огромное спасибо, обработка крайне помогла! Надо было срочно, свою писать времени не было, а тут очень вовремя на глаза попалась! Автору успехов!
16. pumbaE 634 28.09.11 16:00 Сейчас в теме
Автор, добавь плиз лицензию.
17. Kobra_RU 223 28.09.11 16:41 Сейчас в теме
pumbaE пишет:

Автор, добавь плиз лицензию.

(16) pumbaE,

Лицензии не будет. Все в свободном доступе без всяких ограничений.
18. pumbaE 634 28.09.11 18:45 Сейчас в теме
(17) Ну как так, ну хотя бы BSD? У нас конечно это не распространено, если код есть, то можно использовать как хочешь (все думают). Но хотя бы авторство добавьте в комментарии.
19. timunya 5 05.10.11 16:49 Сейчас в теме
Есть вопрос , а вот если функция у нас возвращает char то так : TV_VT(pvarRetValue) = VTYPE_PSTR; правильно будет ?
20. Kobra_RU 223 06.10.11 17:43 Сейчас в теме
Нет, не правильно. VTYPE_PSTR - это судя по всему вариантное представление указателя на строку ANSI (не UNICODE), а все строки должны оканчиваться нулем. char можно передать в этот тип прогнав его через printf c форматной строкой %с. Что-то типа
sprintf_s(указатель на буфер строки (не менее 2 символов), размер буфера,"%с", Входящая переменная char);
А потом указатель на этот буфер и может быть VTYPE_PSTR...
P.S.
Хотя сейчас прочитал:
"* значение типа VTYPE_PSTR соответствует строковому значению (char*) и находится в pstrVal с указанием длины в strLen;"
Т.е. можно попробовать в качестве pstrVal передать ссылку на переменную типа char, а в strLen положить 1...
Хотя я бы так не делал... char - в общем случае это не обязательно однобайтный символ...
21. zahar33 18.10.11 15:57 Сейчас в теме
Вопрос Исходник можно посмотреть? Для zahar33@mail.ru рейтинга немного не хватает.
22. Kobra_RU 223 18.10.11 20:14 Сейчас в теме
zahar33 пишет:

Вопрос Исходник можно посмотреть? Для zahar33@mail.ru рейтинга немного не хватает.

(21) zahar33, Исходники в обработке в макете зазипованы. Окрыть обработку в конфигураторе, найти макет, сохранить в файл с расширением zip...
23. zahar33 19.10.11 04:14 Сейчас в теме
Спасибо я это понял просто не мог скачать обработку, но о чудо :) после добавления моего предыдущего сообщения мне хватило рейтинга я наконец его скачал,спасибо создателю и написавшему этот исходник и плюс в придачу
24. zahar33 19.10.11 04:15 Сейчас в теме
Спасибо я это понял просто не мог скачать обработку, но о чудо :) после добавления моего предыдущего сообщения мне хватило рейтинга я наконец её скачал,спасибо создателю и написавшему этот исходник и плюс в придачу
25. zahar33 22.10.11 05:15 Сейчас в теме
Ведет себя неадекватно при нажатии на функциональную клавишу пишет: "В поле введены некорректные данные" приходится нажимать на Enter повторно
26. zahar33 22.10.11 05:25 Сейчас в теме
Все ясно только в случае если она назначена в 1С как сочетание клавиш
27. Necytij 18.02.12 23:02 Сейчас в теме
28. dagroma 114 27.04.12 11:39 Сейчас в теме
Присоединяюсь к обществу, спасибо.
29. tormozit 5824 27.04.12 11:57 Сейчас в теме
Как связать ввод с конкретным элементом формы или хотя бы формой?
Сейчас получается перехват только глобальный для окна приложения. Если у меня открыто несколько форм, то в общем случае я не смогу определить активную и соответственно принять решение о корректной обработке нажатия.

В таком виде годится лишь как средство обработки глобальных хоткеев.
30. Kobra_RU 223 27.04.12 13:58 Сейчас в теме
(29) tormozit,

Сообщение поступает в главное окно приложения, где обрабатывается, а затем отражается далее конкретному получателю. Там где-то была галочка (или настройка) про перехват на уровне приложения. Так вот, это как раз и есть первый перехват. Второй поступает в форму где запущен объект только если она в фокусе. Если в фокусе будет другая форма 1С, то и сообщение поступит только одно (при поступлении в приложение)... Все это можно наблюдать в отладчике.
Идея понятна? Она полностью имитирует систему 1С по обработке событий: первая в глобальном модуле приложения, а другая в модуле формы. Если мы сгенерируем внешнее событие, то оно поступит сначала в глобальник, а потом в активную форму и если в активной форме будет перехватчик он сработает только во втором случае (если выключен перехват на уровне приложения).
31. tormozit 5824 27.04.12 15:14 Сейчас в теме
(30) Видимо поможет функция ВводДоступен(), с помощью которой в каждой форме можно будет определить ей оно пришло или не ней. Вот только жаль, что при большом числе открытых форм и интенсивном клавиатурном вводе будет создаваться неоправданная вычислительная нагрузка.
33. Kobra_RU 223 27.04.12 15:44 Сейчас в теме
(31) tormozit,
При чем здесь ВводДоступен(), он конечно будет работать на своем уровне, но к этой проблеме это не имеет никакого отношения. Проверка потока нажатий делается в самой компоненте путем анализа кода вызова callback функции при первом поступлении он один, при следующем другой. Задавите прием сообщений на уровне приложения и первый вызов компонента будет пропускать. Никакой нагрузки все это хозяйство не вызовет.
32. Kobra_RU 223 27.04.12 15:37 Сейчас в теме
Я так понимаю, что какая то форма в 1с должна получать сообщения. Ну так сделайте объект компоненты в этой форме и выключите в ней перехват на уровне приложения и все. Эта форма будет получать сообщения, предназначенные только для неё. Если какая то другая форма должна получать сообщения - там тоже объект сделайте и она тоже будет получать адресованные ей сообщения (а адресуются они ей если она в фокусе при нажатии клавиши). При этом первая форма ничего не получит.Мы можем сделать третью форму и сделать в ней объект и включить перехват как в форме, так и в приложении, тогда она будет получать сообщения как свои так и чужие. Если мы включим блокировку сообщений на уровне приложения, тогда эта третья блокировка будет получать все сообщения, а первые две формы никогда не получат свои сообщения. Так во всяком случае задумывалось. Первоисточники есть. поставьте проект и подправьте под себя, там все очень просто... А вообще я эту вещь писал для построения рабочего места кассира как заменитель кошмарного количества панелей кнопок (подход 1С), в которых все равно некоторые комбинации не отловишь...
34. scorp_23 27.04.12 16:51 Сейчас в теме
Обработка может быть и хороша, но реального применения в работе какого-либо предприятия я не вижу.
35. Kobra_RU 223 27.04.12 21:13 Сейчас в теме
(34) scorp_23,
Сама обработка приведена только для примера и тестирования и не несет какой-либо логики. Основное - это компонента и исходники, которые можно подстроить под себя для решения конкретной задачи.
36. martelix669 04.05.12 17:33 Сейчас в теме
Интересно можно ли написать такую компоненту на C#?
37. vst 28.08.12 18:07 Сейчас в теме
Спасибо за обработку.
Но есть вопрос - как заставить реагировать на нажатия клавиш только активную форму, а не все открытые формы ?

Пробовал в начале процедуры ВнешнееСобытие() делать условие на ВводДоступен(), но он возвращает "ложь" и в том случае, например, когда в форме производится подбор по колонке.
38. Kobra_RU 223 29.08.12 08:39 Сейчас в теме
(37) vst,

На самом деле ВводДоступен() работает, проверил сам. Просто эта функция работает некорректно в отладчике. Вставьте её в обработку внешнего события тестовой обработки и проверьте не в режиме отладка.
Более подробный ответ по функции ВводДоступен() можно найти в интернете. Я, например в google написал "вводдоступен ложь".
kentavr27; vst; +2 Ответить
39. vst 30.08.12 11:34 Сейчас в теме
(38) спасибо, не знал про этот нюанс с отладчиком
40. ksa78 03.10.12 17:39 Сейчас в теме
Помощь надобно !!!!
С помощь этой обработки пытаюсь штрих-коды со скатера (в режиме эмуляции клавы) получить, но чета не все данные получаю, такое ощущение, что какое то прерывание стоит большое. Можно ли как то решить эту проблему ??
41. ksa78 03.10.12 17:50 Сейчас в теме
(40) ksa78, Вопрос решил. У сканера ШК был включен турбо-режим эмуляции !!!!
42. ksa78 03.10.12 17:51 Сейчас в теме
43. ch-15 21.03.13 07:49 Сейчас в теме
Здравствуйте. Нужна помощь. При повторном открытии обработки появляется ошибка "не найден файл внешней компоненты", если перезапустить 1с, то обработка открывается и работает, но 1 раз, при перезапуске вываливается с той же ошибкой. Может у кого была такая проблема?
44. Kobra_RU 223 21.03.13 09:05 Сейчас в теме
Проверил. Ситуация воспроизвелась. В данном случае я думаю, здесь имеет место быть баг платформы 1С. Внешняя компонента подключается процедурой ПодключитьВнешнююКомпоненту(ИмяФайла, "Hook",ТипВнешнейКомпоненты.Native), где четко указано имя файла, и этот файл существует. Однако 1С пытается получить компоненту из файла, который был создан при первом открытии обработки, который был удален при закрытии обработки (в функции ПриЗакрытии). Почему? Честно говоря, не знаю. Если временно заремить строку УдалитьФайлы(ИмяФайла);, то все заработает (правда в tmp будут висеть ненужные файлы).
Решение: 1. Записывать dll-ку в файл с определенным именем и при открытии проверять его существование и создавать заново, если его нет.
2. Попробовать действовать по рекомендациям 1С и устанавливать компоненту процедурой УстановитьВнешнююКомпоненту (в этом случае она записывается совершенно в другое место и не удаляется), для этого dll-ку надо положить в архив zip вместе с манифестом (см. подсказку к процедуре).
45. ch-15 21.03.13 09:19 Сейчас в теме
Спасибо за быстрый ответ!! помог первый вариант. Счастью моему нет предела)
47. gglvov 09.05.13 08:54 Сейчас в теме
Спасибо, очень нужная компонента!
48. gglvov 09.05.13 08:54 Сейчас в теме
Жаль рейтинга не хватает!
49. gglvov 09.05.13 08:55 Сейчас в теме
Раньше использовал AddHook.dll
50. gglvov 09.05.13 08:59 Сейчас в теме
Однако в управляемом приложении она не работает
51. gglvov 09.05.13 09:01 Сейчас в теме
Странно, ведь декларируется поддержка COM компонент в управляемом приложении, но работают не все компоненты.
52. gglvov 09.05.13 09:02 Сейчас в теме
ScanOPOS, например, работает
53. gglvov 09.05.13 09:06 Сейчас в теме
А AddHook.dll никак не хочет. Ни с регистрацией в реестре ни при использовании УстановитьВнешнююКомпоненту
54. gglvov 09.05.13 09:11 Сейчас в теме
Если AddHook.dll запаковать в zip c xml описанием и положить в макет, то УстановитьВнешнююКомпоненту его прекрасно устанавливает на клиенте, но ПодключитьВнешнююКомпоненту ни в какую его не подключает
55. gglvov 09.05.13 09:13 Сейчас в теме
Подскажите пожалуйста, а Ваша компонента в ВЕБ приложении будет работать?
56. gglvov 09.05.13 09:21 Сейчас в теме
Т.е. я хотел спросить имеется ли возможность скомпилировать cab xpi компоненты для браузеров? Простите за тупые вопросы, просто не имея на руках вашей компоненты трудно догадаться.
57. UncleVader 128 19.09.13 20:22 Сейчас в теме
Поддерживаю предыдущего оратора - надо чтобы в управляемом режиме тоже работала
58. kentavr27 90 16.11.13 00:38 Сейчас в теме
(57) UncleVader, дык вроде как и работает... А кто сказал что не работает? Вот, собственно, и пример использования этой компоненты в управляемом приложении для работы сканера штрих кода "в разрыв клавиатуры" с использованием внешнего события.
59. Caliban 70 26.03.14 15:00 Сейчас в теме
Подскажите пожалуйста - никак не могу понять, как мне обратиться к объекту, если я не использую список объектов. Т.е., что мне нужно написать вместо этой строчки pObject = listOfObjects.GetNextObjectByName(pObject, L"KeyboardHook")?
60. Kobra_RU 223 27.03.14 09:41 Сейчас в теме
Не совсем понятно, зачем Вам это? В предоставленном коде просто реализован тестовый режим по созданию множества объектов. Если Вам список не нужен, то код значительно упрощается. Полностью удаляется класс ClistOfObjects и СItem. Собственно сам объект класса внешней компоненты создается в функции GetClassObject
...
*pInterface= new CAddInNative();
...

Сделайте глобальную переменную IComponentBase *p_Object и сохраняйте туда указатель на созданный объект CAddInNative.
В дальнейшем используйте этот указатель вместо listOfObjects.GetNextObjectByName(pObject, L"KeyboardHook")
61. Caliban 70 27.03.14 09:53 Сейчас в теме
(60) спасибо за ответ. Именно так я и догадался сделать. И еще один вопрос тогда вдогонку: а есть ли какой-нибудь способ сделать ОЖИДАНИЕ нажатия клавиши? Т.е., чтобы при вызове из 1С какой-либо функции компоненты она ожидала нажатия и возвращала уже код клавиши. Что-то типа getch().
62. Kobra_RU 223 27.03.14 15:49 Сейчас в теме
Поэкспериментировать с этим можно. И несложно, вроде. В native компонентах 1C есть функции установки и чтения переменных компоненты. Если в функцию чтения переменной вставить код ожидания нажатия клавиши с последующей передачей, то может что-то получиться. Попробуйте...
63. German 873 14.05.14 00:04 Сейчас в теме
А как сделать блокировку клавиши?

блокировка стандартной обработки нажатия клавиш приложением 1С


Я например регистрирую действие по Ctrl+Shift+Enter, как заблокировать Enter в этой комбинации?, а то кнопки по умолчанию нажимаются.

код видится таким:

КомпонентаKeyBoardHook.ЗахватПервым = Истина;
Если ПолученноеЧисло = 10253 Тогда //в обработчике внешнего события
   КомпонентаKeyBoardHook.КлавиатураЗаблокирована=Истина;
КонецЕсли;
//Подождать секунду и 
КомпонентаKeyBoardHook.КлавиатураЗаблокирована = Ложь;
64. Kobra_RU 223 15.05.14 14:42 Сейчас в теме
Так работать скорее всего не будет, так как код клавиши уже поступил в приложение и обработан.
Т.е. клавиатура заблокируется, но уже для следующих нажатий. Текущее пройдет. Кроме того срабатывание внешнего события в 1С вроде бы буферизировано. А это означает, что при быстром нажатии может пройти и большее количество сканкодов.
69. VGHOST 157 25.02.15 17:31 Сейчас в теме
(64)
Здравствуйте.
Аналогичная проблема - кнопки обрабатываются формой до вызова обработчика ВнешнееСобытие(), и моменты отключения и включения клавиатуры с небогатым набором событий элементов диалога не отследить...
Пробовал полностью обслуживать ввод с клавиатуры для единственной таблицы формы, но опять же, с "богатым" 1C-API это невозможно, да и хочется сбросить всю возможную работу на платформу.

Предлагаю добавить компоненте метод Отправть() (Send()), который просто отправляет нажатие в дальнейшую обработку с того места, где он его перехватил, с единственным аргументом, который передается в параметре Данные обработчика ВнешнееСобытие() (какая-то странная смесь сканкодов с символом на конце - без документации разобраться не удалось).
Это позволит фильтровать ввод при КлавиатураЗаблокирована=Истина.

Реализуйте, пожалуйста, данную простую функцию, жутко не хочется прикручивать дополнительные ВК или разворачивать VisualStudio (за последние 20 лет основательно забыл что такое компилятор :).

Заранее Спасибо!

ЗЫ: 1С с некоторых пор позволяет устанавливать/загружать ВК прямо из макета, содержащего zip-файл с бибилиотеками для разных платформ и манифестом (во вложении, пришлось помучаться с его форматом) - можно по случаю скомпилить под x86_64 и выложить.
Прикрепленные файлы:
manifest.xml
73. Yashazz 3267 15.04.16 13:01 Сейчас в теме
При подключении выдаёт: "Возможно, отсутствует компонента для используемого клиентского приложения".
Команда УстановитьВнешнююКомпоненту("ВнешняяОбработка.Тест1.Макет.KeyboardHook") налетает на эту ошибку.
Что делал: скачал обработку, взял из макета "ВнешняяКомпонента" бывшие там двоичные данные, сохранил с именем KeyboardHook.dll, взял рекомендованный в (69) манифест, сунул манифест и dll в zip-архив, а архив сунул в макет этой внешки, под именем KeyboardHook. Запуск под толстый клиент, управляемое приложение, модальность и синхронность разрешены. 1С 8.3.6.2449, 32-х разрядная, файловый вариант БД. Что я делаю не так?
74. Kobra_RU 223 18.04.16 18:15 Сейчас в теме
(73) Yashazz,
т.е манифест такой?
<?xml version="1.0" encoding="UTF-8"?>

-<bundle xmlns="http://v8.1c.ru/8.2/addin/bundle">

<component arch="i386" type="native" path="KeyboardHook.dll" os="Windows"/>

<component arch="x86_64" type="native" path="KeyboardHook64.dll" os="Windows"/>

</bundle>

А откуда у тебя берется KeyboardHook64.dll??? Его же по факту нет... Сотри строчку "<component arch="x86_64" type="native" path="KeyboardHook64.dll" os="Windows"/>" из манифеста, засунь в архив и попробуй ещё раз. А вообще x64 native для 1С в качестве перехвата клавиатуры ИМХО не нужна. Клиентские части 1С 32 битные все...
65. avz_1C 10 07.02.15 17:16 Сейчас в теме
Здравствуйте, уважаемый Автор.

Могли бы Вы помочь мне разобраться с ошибкой, которая появляется при попытке перекомпилировать Вашу ВК из исходников проекта. Мой инструмент VS2015. В VS2010 перекомпиляция не производилась (инструмент не установлен).

1>------ Перестроение всех файлов начато: проект: KHook1C, Конфигурация: Debug Win32 ------
1> stdafx.cpp
1> AddInNative.cpp
1>g:\1с\итс\вк\keyboardhook\vsprjvknative2010\khook1c-vc++\types.h(67): error C2371: int8_t: переопределение; различные базовые типы
1> d:\vs2015\vc\include\stdint.h(17): note: см. объявление "int8_t"
========== Перестроение всех: успешно: 0, с ошибками: 1, пропущено: 0 ==========
66. avz_1C 10 07.02.15 18:11 Сейчас в теме
Уважаемый автор, извините за беспокойство.

Разобрался сам. Перекомпилировал Вашу ВК в VS2013 и VS2015.

Проверил обе новых перекомпилированных версии путём записи в макет Вашей тестовой обработки. Всё работает.

Если Вы разрешите, я выложу здесь ссылку на скачивание всех трёх проектов (VS2010, VS2013, VS2015).

Если так делать нельзя, то могу прислать ссылку Вам, а Вы включите все три проекта в файлы данной статьи.
67. Kobra_RU 223 09.02.15 15:48 Сейчас в теме
(66) avz_1C,
Выкладывайте самостоятельно. Никаких ограничений на переделку и использование (включая публикацию доработанных вариантов) нет...
71. efin 19.08.15 15:30 Сейчас в теме
(66) avz_1C, Подскажите, как это исправляется? Ловлю аналогичную ошибку в другом старом проекте ВК.
68. avz_1C 10 10.02.15 08:54 Сейчас в теме
С разрешения автора выкладываю архивы с проектами данной ВК.
Перекомпилированы в VS2013 и VS2015.
Всё работает так, как положено.
Вставляются в тестовую обработку автора, для проверки, путём замены двоичного макета на скомпилированную из этих проектов dll-ку.
Прикрепленные файлы:
VSprjVKnative2013.zip
VSprjVKnative2015.zip
гвость; ture; +2 Ответить
70. VGHOST 157 26.02.15 12:26 Сейчас в теме
Если ВК будет дорабатываться - неплохо бы флаг СобытиеПриНажатии (корректнее при Опускании, OnKeyDown) дополнить флагом СобытиеПриОтжатии, чтобы была возможность ловить оба одновременно. СобытиеПриНажатииОтжатии (OnKeyPress), которое воспринимает клавиши модификаторы только как дополнительные флаги и не генерируется при их нажатии, тоже бы не помешало - требуется чаще первых двух...

Разобрался таки со структурой возвращаемых данных.
Прошу включить в выложенную обработку код из вложения, выводящий отдельные поля в табло - пригодится при использовании ВК на практике.
Там же код подключения ВК для модуля управляемой формы.
Прикрепленные файлы:
temp.txt
Wladimir_spb; +1 Ответить
72. boldinov 23.10.15 10:43 Сейчас в теме
Подскажите, в чем проблема при загрузки ВК из Макета, не возвращается Кириллица(непечатные символы), если подключать из файла все работает?
75. user592752_kumadil 09.07.16 15:41 Сейчас в теме
Не подскажите, как ее использовать в УФ?
76. ture 565 12.11.16 12:46 Сейчас в теме
Я думал стану хакером, когда освою эту технологию! А оказалось процедура перехвата регается в винде под конкретные события, как делегаты в шаурме. Так, я не понял, почему до меня не доходит F1 и как поднять мою процедуру выше 1ссышной, чтоб это до неё не доходило F1, а не до меня?

И, да, ну вы и накрутили с компонентой... нет я понимаю, что один раз не ..., но все же при таком владение api windows, я ожидал заработать скорее комплекс неполноценностей.
79. user608116_3830123 6 19.01.17 10:20 Сейчас в теме
Подскажите еще вопрос: Как отказаться от нажатия клавиши Caps Lock?
80. Sasha_61rus 25.04.17 09:47 Сейчас в теме
Добрый день.
После обновления платформы до версии 8.3.10.2168 обнаружилась следующая особенность: компонента корректно работает только если присвоить свойству "ЗахватПервым" ("FirstInterception") значение "Ложь" (а именно не выполняется (точнее, выполняется только если быстро нажать клавиш пять) условие "nCode == Action", где "int Action = (pm->m_FirstInterception ? HC_NOREMOVE : HC_ACTION)").
Разобравшись в исходниках, получилось скомпилировать под Win. x64 (перенёс процедуру "GetClassNames" из примера с диска ИТС - без этого ВК не подключалась в 64-х разрядной версии платформы).
К посту прикреплены:
- полученный архив с компонентами ("KHook1C_x32.dll" и "KHook1C_x64.dll") и манифестом для их подключения к 1С (zip-архив создавался средствами 1С) (файл "KHook1C.zip");
- полученный проект для студии 2017 (файл "KHook1C_VS2017.7z");
- выгрузка тестовой базы, на которой проверялась работоспособность компоненты (файл "База для тестирования.dt").
Прикрепленные файлы:
KHook1C.zip
KHook1C_VS2017.7z
База для тестирования.dt
romanstor; begemot; user715860; zakiap; lunjio; ВладАн; d.menyailov@ngslab.ru; BiTwaR; leshiy26; +9 Ответить
81. Oegir 08.11.17 15:51 Сейчас в теме
Привет.
Использую сканер Штрих-Кодов в режиме эмуляции клавиатуры совместно с этой компонентой. В Windows 10 вылезла странная проблема: в 1С поступают различные данные при перехвате событий клавиатуры и сканера.
Например, при нажатии клавиши f на клавиатуре в обработчик внешнего события поступают данные 00070f. Я закодировал в штрих-код Code-128 единственную букву F, при ее сканировании в данных оказывается 16400 независимо от раскладки клавиатуры.
При этом нажатие клавиши - и ее сканирование из Code-128 дают одинаковый результат 00189-, цифры также сканируются корректно. Ткните куда и что смотреть в исходниках dll-ки или может настройками сканера можно вырулить.
ЗЫ: В C++ не силен, только Страуструпа лет 10-15 назад читал.
82. Kobra_RU 223 09.11.17 09:01 Сейчас в теме
Windows 10 не использую, т.к. с ней до сих пор возникают разные проблемы (по оборудованию, в основном), поэтому воспроизвести проблему не смогу. Разобраться в проблеме можно только если иметь навыки отладки приложений в VС++. Если такие навыки есть далее все очень просто. Точка останова в процедуре перехвата LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam, LPARAM lParam) и пошаговая отладка, все как в 1С. Проблема, я так понял в эмуляции одновременного нажатия клавиш shift + f (а скорее всего любой клавиши).
Перехватывается у вас код 16400. В шестнадцатиричном виде это 0x4010, состав возвращаемого кода можно посмотреть в файле Addinnative.cpp строки начиная с 395. Итак, Возвращается нажатие правого Shift и виртуального кода 0x10. Расшифровку виртуального кода можно посмотреть по таблице в MSDN, откуда видно, что это VK_SHIFT. Т.е. сканер у вас выдает нажатие shift, по идее после этого должен идти код нажатия клавиши f, однако его нет.
Советую особо проанализировать строки:

bool KeyPressed = !((DWORD)lParam & 0x40000000);

if ((pm->m_EventOnKeyPressed && KeyPressed) || (!pm->m_EventOnKeyPressed && !KeyPressed))

На самом деле бит 30 - это предыдущее состояние клавиши, т.е KeyPressed это не клавиша нажата, а если точно, клавиша была отжата до операции перехвата. Для обычной клавиатуры так и есть, однако драйвер сканера может посылать несколько нажатий клавиши не отпуская её. Может быть имеет смысл попробовать заменить на строку:

bool KeyPressed = !((DWORD)lParam & 0x80000000); бит 31 - это именно текущий переход состояния клавиши =0 если клавиша нажата, = 1 если клавиша отпущена. Через операцию отрицания получаем правильное состояние KeyPressed.

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

Что бы не заморачиваться, в Вашем случае советую попробовать обычную scanopos.dll (драйвер сканера штрих кода от 1С) последних версий. Там есть ввод со сканера штрихкода в режиме эмуляции клавиатуры.
83. Flok 1 09.01.18 08:57 Сейчас в теме
Отличная компонента , все работает - спасибо !
84. WellMaster 99 07.03.18 14:27 Сейчас в теме
Доброго дня.
Как подключить компоненту в Управляемых формах?
85. Wladimir_spb 12.03.18 18:22 Сейчас в теме
(84) В сообщении (70) приведен рабочий код. Достаточно просто скопировать его в модуль формы и привязать обработчики.
87. Wladimir_spb 12.03.18 19:52 Сейчас в теме
(84)
&НаКлиенте
// Пример подключения прямо из макета обработки с управляемыми формами на платформе 8.3.5.1383.
// Обработку при этом регистрировать в менеджере внешних обработок не нужно, сохранять файл на диске - тоже.
//
// Подключает ВК KeyboardHook.
// НачатьУстановкуВнешнейКомпоненты() помещает файл компоненты и его описание из манифеста в локальное хранилище на клиенте,
// откуда потом его забирает ПодключитьВнешнююКомпоненту().
// Непонятно, зачем такие сложности, если все равно каждый раз читается содержимое макета, но с 1С не поспоришь...
//
// Макет KeyboardHook должен содержать zip-архив с библиотеками для разных платформ и манифестом, описывающим содержимое.
// Примеры манифеста можно найти в сети по строке "http://v8.1c.ru/8.2/addin/bundle".
//
Процедура ПерехватКлавиатурыПодключить(Знач Оповещение=Ложь) Экспорт
	Если ПодключитьВнешнююКомпоненту("ВнешняяОбработка.KeyboardHook.Макет.KeyboardHook", "KeyboardHook", ТипВнешнейКомпоненты.Native) Тогда
		ПерехватКлавиатуры = Новый("AddIn.KeyboardHook.KeyboardHook");
		ПерехватКлавиатуры.ЗахватРазрешен = Истина; // генерировать внешние события
		ПерехватКлавиатуры.СобытиеПриНажатии = Истина; // при отпускании иногда клавиши-модификаторы уже отжаты
		ПерехватКлавиатуры.ЗахватПервым = Истина; // не работает - все равно событие успевает отрабатываться в форме
		
	ИначеЕсли НЕ Оповещение Тогда // процесс установки не инициирован ранее, начинаем новый
		ПерехватКлавиатуры = Неопределено;
		Оповещение = Новый ОписаниеОповещения("ПерехватКлавиатурыПодключить", ЭтотОбъект, Истина);
		НачатьУстановкуВнешнейКомпоненты(Оповещение, "ВнешняяОбработка.KeyboardHook.Макет.KeyboardHook");
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ПерехватКлавиатурыПодключить();
КонецПроцедуры
Показать


В макет KeyboardHook нужно загрузить KHook1C.zip из поста (80)
88. WellMaster 99 13.03.18 10:27 Сейчас в теме
(87) Не работает этот метод.
Пробовал и так и так.

Есть готовый рабочий пример работы компоненты на управляемых формах?
90. Wladimir_spb 13.03.18 15:27 Сейчас в теме
(88)Если автор не возражает, то могу выложить
92. WellMaster 99 13.03.18 15:50 Сейчас в теме
(90) Можно прикрепить к сообщению, как это делают выше.
93. Wladimir_spb 13.03.18 16:00 Сейчас в теме
(92)Можно, только выше все сначала спрашивают автора разработки
И я думаю, что это правильно. Если Эмиль разрешит здесь выложить, то без проблем.
94. WellMaster 99 13.03.18 16:32 Сейчас в теме
(93) В принципе, я уже разобрался как подключить. Правда использовал пример конфигурации из (80).
Оттуда же и сохранил себе макет в общие макеты, т.к. макет из обработки из статьи не заработал.
86. Wladimir_spb 12.03.18 19:44 Сейчас в теме
Что значит "Перехват при поступлении в очередь приложения" и "Перехват при передаче сообщения внутри приложения"?

У меня при установке флага ЗахватПервым = Истина, большая часть нажатий не перехватывается вообще. А в режиме ЗахватПервым = Ложь ловит все нажатия.
89. Kobra_RU 223 13.03.18 12:03 Сейчас в теме
Внешняя компонента уже довольно старая :). Тем не менее еще при разработке проводилось тестирование в тонком клиенте еще на платформе 8.2. Все тонкости можно посмотреть в исходниках проекта. Конкретно про ЗахватПервым.
При работе с клавиатурой нажатия (отпускания, сканкоды и т.д. и т.п.) поступают в очередь приложения туда же поступают и управляющие флаги. Один из этих флагов nCode.

LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam, LPARAM lParam)

nCode может иметь разные значения, нас интересует 2 - HC_NOREMOVE и HC_ACTION.

HC_NOREMOVE это не убирать из очереди и передать следующему обработчику.
HC_ACTION обработать.

Нажатие поступает в главное окно приложения и если оно не предназначено для него, а предназначено для окна какой либо формы (дочернего окна), то значение флага будет HC_NOREMOVE, а для конечного окна (которое в фокусе ввода) будет опять сработка но с кодом HC_ACTION.

Так вот. Если ЗахватПервым = Истина, то перехват идет при сработках с флагом HC_NOREMOVE, а если ЗахватПервым = Ложь - то с флагом HC_ACTION.

Отсюда и названия "Перехват при поступлении в очередь приложения" и "Перехват при передаче сообщения внутри приложения", конечно это все упрощенно...
91. Wladimir_spb 13.03.18 15:31 Сейчас в теме
(89)Спасибо за подробное пояснение
95. Kobra_RU 223 13.03.18 17:01 Сейчас в теме
Я сейчас не отслеживаю (и не использую) эту компоненту. Поэтому и ранее писал и сейчас сообщаю: Можно использовать, видоизменять, публиковать здесь ссылки (если это не нарушает правил, установленных infostart-ом).
Оставьте свое сообщение

См. также

Внешняя компонента для работы по Web-socket протоколу Промо

Разработка внешних компонент WEB v8 Абонемент ($m)

Кто когда-нибудь сталкивался с обменом данными по Web-Socket (wss) протоколу из 1С, тому известно, что в платформе отсутствуют данные механизмы (не путать с HTTP запросами и WebServices). Предлагается использовать внешнюю компоненту, написанную по технологии NativeAPI, для подключения и обмена с серверами из 1С-Предприятия, работающими по протоколу Web-Socket.

5 стартмани

30.03.2018    23112    32    Ditron    68    

Универсальная обертка для использования NATIVE компонент на платформе 1С 7.7, 8.0 и 8.1

Разработка внешних компонент v8 Абонемент ($m)

Используете 1С 7.7, 8.0 или 8.1 и вас раздражает, что под вашу 1С уже не выпускаются современные компоненты. А хотелось бы?

1 стартмани

07.07.2020    694    1    karpik666    0    

Нано HTTP сервер - внешняя компонента для мобильного приложения 1C, на Android

Разработка внешних компонент Мобильная разработка v8 v8::Mobile 1cv8.cf Абонемент ($m)

Нано HTTP сервер на терминале сбора данных "ATOL Smart.Lite android 7.0". Работает только с GET и POST запросами. Аутентификация BASE64. Не поддерживает HTTPS и не передает файлы. В прикрепленном архиве исходники на компоненту (С++ и java для Android Studio 3.6.2), ЦФ - мобильного приложения и тестовая обработка.

1 стартмани

22.06.2020    868    3    SanyMaga    0    

Получение фото с веб-камеры

Разработка внешних компонент v8 Абонемент ($m)

Получение фото с веб-камеры без ActiveX. Внешняя компонента по технологии Native API.

1 стартмани

25.03.2020    2821    21    berezdetsky    15    

TextRadar - нечеткий поиск в тексте Промо

Разработка внешних компонент Поиск данных v8 1cv8.cf Абонемент ($m)

В отличие от нечеткого сравнения строк, когда обе сравниваемых строки равнозначны, в задаче нечеткого поиска выделяются строка поиска и строка данных, а вычислить необходимо не степень похожести двух строк, а степень присутствия строки поиска в строке данных. Нормированный коэффициент, находящийся между 0 и 1 позволяет отсечь заведомо низкие результаты, организовать поиск по синонимам и т.д. Наглядное отображение результатов в кратком и детальном виде поможет быстро найти интересующий фрагмент.

1 стартмани

19.09.2018    15407    18    TSSV    18    

Пауза без загрузки процессора. Внешняя компонента Native API на C++

Разработка внешних компонент v8 Абонемент ($m)

Внешняя компонента Native API на C++ для Win32 и Win64 позволяет установить паузу на заданное количество секунд без загрузки процессора.

2 стартмани

21.03.2020    1340    3    DNN13    25    

Быстрая печать этикеток (ZPL, EPL, TSPL, EZPL, GEPL, TSPL-EZ)

Разработка внешних компонент v8 v8::УФ 1cv8.cf Абонемент ($m)

Качественная и быстрая печать на внутреннем языке принтеров этикеток.

4 стартмани

02.02.2020    4450    21    Johny_v    5    

Сканирование по TWAIN в 1С (обычные и управляемые формы)

Разработка внешних компонент v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка показывает пример, как можно в 1С проводить сканирование с помощью компоненты TWAIN.

3 стартмани

03.01.2020    3702    17    Denr83    0    

Использование сборок .NET в 1С 7.x b 8.x. Создание внешних Компонент. Промо

Разработка внешних компонент v7.7 v8 1cv8.cf 1cv7.md Абонемент ($m)

Данная разработка создана для использования сборок .Net в 1С через преобразование объектов и классов в COM-объекты, которые можно использовать в 1С. Достигается это путем создания класса, реализующего методы интерфейса IReflect public class AutoWrap: IReflect.

1 стартмани

28.11.2013    79296    231    Serginio    71    

Клиент событий в «бесконечном» HTTP-соединении для 1С: Предприятие 8

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Native Компонента в отдельном потоке обрабатывает пакеты событий, в "бесконечном" http соединении и передаёт данные в очередь внешних событий.

10 стартмани

02.12.2019    2884    1    starovton    5    

Управление окнами и мониторами в 1С

Сервисные утилиты Разработка внешних компонент v8 1cv8.cf 1С:Франчайзи, автоматизация бизнеса Абонемент ($m)

Управление размерами, активностью и положением окон из 1С с возможностью вывода окон на второй монитор и запретом изменения окна.

1 стартмани

28.10.2019    7325    6    Grigoriy251    5    

Маленькая и скромная мобильная внешняя компонента

Разработка внешних компонент v8 Абонемент ($m)

Изваять простенькую мобильную компоненту на 1С для android не так-то просто. Посему назло отдельным супостатам, не желающим делится исходниками, представляю весь свой скромный труд на публичный суд.

1 стартмани

21.10.2019    8000    4    ripreal1    25    

Tool1CD Beta в деле Промо

Разработка внешних компонент v8 Абонемент ($m)

Пс, парень! Не хочешь немного сырых байтов?

1 стартмани

09.05.2018    23488    28    baton_pk    26    

Native внешняя компонента для оповещения по UDP или TCP

Разработка внешних компонент v8 Абонемент ($m)

Native внешняя компонента для оповещения по UDP или TCP, которая реализует возможность в 1С передавать сообщения с сервера на клиента. Исходный код компоненты также представлен.

1 стартмани

06.10.2019    7460    13    vdv2701    26    

Внешняя компонента Sundries: несколько полезных системных функций

Разработка внешних компонент v8 Абонемент ($m)

Звук, пауза, буфер обмена, раскладки клавиатуры и т.д.

3 стартмани

30.08.2019    4414    4    sivin-alexey    10    

Native внешняя компонента для передачи по UDP

Разработка внешних компонент v8 УТ10 Россия Абонемент ($m)

Внешняя компонента Native-API для организации передачи с использованием UDP.

1 стартмани

29.07.2019    3322    4    axae    0    

NativeDraw: Компонента рисования для 1С [V2.6.2] Промо

Разработка внешних компонент Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Рисуйте в формах 1С, также предлагается небольшое количество нерисовальных функций

1 стартмани

13.07.2015    44501    419    ПерваяСистема    147    

Менеджер буфера обмена. Нативная внешняя компонента win 32/64

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Добавляет возможности получения информации из почтовых вложений или файлов с других рабочих столов (RDP) с помощью операций копирования/вставки. Может «прослушивать»: любые изменения буфера обмена; нажатие клавиш соответствующих вставке (paste); нажатие клавиш копирования (copy); drop операции. Это новая реализация аналогичной компоненты https://infostart.ru/public/379695/, но теперь не C#, а С++ нативно для x32 / x64. (см. http://youtu.be/-PaWWFfbYo4)

1 стартмани

26.06.2019    5232    16    Bww    21    

Обработка вывода на печать QR-кода и штрихкодов в различных форматах (одномерные и двумерные)

Разработка внешних компонент Ценники v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Обработка предназначена для вывода на печать QR-кода и штрихкодов в различных форматах без установки дополнительных ActiveX компонент. Тестировалась на чистой базе платформы 1С:Предприятие 8.3 (8.3.14.1630), а так же в конфигурациях Бухгалтерия предприятия КОРП, редакция (3.0.69.35) и на Бухгалтерия предприятия (3.0.70.30)

2 стартмани

22.05.2019    8082    31    MGemini    2    

DLL для подключения к Asterisk (32/64 клиенты)

Разработка внешних компонент Телефония, SIP v8 1cv8.cf Абонемент ($m)

Подключение к Астериску и получение событий "Newchannel","BridgeEnter","Hangup" через ОбработкаВнешнегоСобытия.

1 стартмани

19.03.2019    6450    11    xxxAndricxxx    14    

Компоненты распознавания и печати штрих-кодов Промо

Разработка внешних компонент Сканер штрих-кода v7.7 v8 1cv8.cf 1cv7.md Абонемент ($m)

Комплект программного обеспечения для реализации функций оптического распознавания штрих-кодов различных систем при помощи обычной web-камеры, а также их отображения в печатных формах. Программы могут работать в составе конфигураций, созданных на базе платформ «1С-Предприятие» версий 7.7, 8.2, 8.3. Компонент чтения кодов реализован в виде внешней компоненты 1С с COM-интерфейсом. Компонент отображения создан по стандартной технологии ActiveX для Windows, и может быть встроен в любое приложение, поддерживающее встраивание ActiveX элементов управления, например в документ Word или Excel, или форму VBA. P.S. Добавлена новая версия программы распознавания. Новые функции: обработка видео в реальном режиме (а не по таймеру, как раньше), добавлена возможность распознавания штрих-кодов из графических файлов JPEG, PNG, GIF, BMP, а также передавать для распознавания картинки из 1С, теперь можно получить в 1С захваченное с камеры или файла изображение, как с выделением мест, содержащих коды, так и без, а также отдельные фрагменты изображений, содержащие код. Добавлены новые свойства и методы для программирования. Обновлена документация.

10 стартмани

10.07.2015    66275    83    igorberezhnov    95    

DLL для обмена между 1С (и не только) через UDP порты (32/64 клиенты)

Разработка внешних компонент v8 1cv8.cf Россия Абонемент ($m)

Библиотеки для создания функционала для прослушивания портов из 1С и отправки сообщений на удаленный udp порт.

1 стартмани

28.02.2019    5645    8    xxxAndricxxx    2    

Эмулятор ККМ по стандарту ФФД 1.1

Разработка внешних компонент Кассовые операции ККМ Кассовые операции v8 Розница УТ11 Россия Абонемент ($m)

Эмулятор драйвера ККМ по стандарту ФФД 1.1 предназначен для использования всех возможностей программы, при отсутствии физической кассы. Подойдет как программистам при разработке интерфейса РМК, например, так и пользователям для тестирования возможностей программы.

1 стартмани

30.12.2018    17927    124    Matveymc    21    

WebSocket Клиент / Сервер. Внешний компонент

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Реализация протокола WebSocket. Клиентская часть для взаимодействия с внешними сервисами. Серверная часть для организации собственного сервера, принимающего клиентские соединения в многопоточном режиме. Возможно взаимодействие RabbitMQ Slack Asterisk и другие

1 стартмани

16.11.2018    12626    64    nomadon    51    

Полезные приемы при работе с Excel из 1С (Версия 3.1) Промо

Практика программирования Разработка внешних компонент Загрузка и выгрузка в Excel v8 1cv8.cf Абонемент ($m)

Программисту 1С часто приходится работать с таблицами Excel из 1С. Я постарался собрать небольшой FAQ и набор функций для работы с файлами Excel. Надеюсь, кому-то будет полезна данная статья.

1 стартмани

22.09.2015    180183    430    Zerocl    65    

Внешняя компонента для выполнения регулярных выражений

Разработка внешних компонент v8 Абонемент ($m)

Внешняя Native API компонента для выполнения регулярных выражений на платформе 1С:Предприятие 8. Написана на C++. Используется движок boost::regex (v 1.69, v 1.68 - для Android). Версия синтаксиса Perl Compatible Regular Expressions.

1 стартмани

12.11.2018    10717    28    KAV2    62    

Native компонента для 8.3, реализующая метод sleep()

Разработка внешних компонент v8 Россия Абонемент ($m)

Внешняя Native 64-битная компонента для 1C 8.3, которая реализует метод sleep() - паузу выполнения кода. Пауза для большой устойчивости сделана платформозависимой и требует WinAPI. Ид компоненты - AddIn.AddInNativeSleep.NativeSleep.

1 стартмани

16.10.2018    6478    3    ripreal1    9    

001. Криптография и цифровая подпись RSA-sha256 на платформе 1С

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Внешняя компонента, исходники, обработка для 1С.

5 стартмани

04.09.2018    11973    25    Nikola23    60    

Шаблон внешней компоненты на C# Промо

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Шаблон внешней компоненты для 1С:Предприятие на C#.

5 стартмани

20.06.2012    151600    238    Kuzja_R    99    

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

Разработка внешних компонент v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

04.08.2018    7474    11    dewersia    3    

Класс-обработка “Работа с картами Яндекс”

Разработка внешних компонент WEB v8 Абонемент ($m)

Как показать точку или маршрут на карте Яндекс. Как получить координаты по строке адреса (геокодирование).

1 стартмани

01.08.2018    21586    184    RSConsulting    15    

Распознавание лиц (off-line). Демонстрационная база.

Разработка внешних компонент v8 Абонемент ($m)

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

1 стартмани

17.07.2018    14726    71    nomadon    45    

Снимок экрана для 1С Промо

Универсальные обработки Разработка внешних компонент v8 1cv8.cf Россия Абонемент ($m)

Довольно часто люди сталкиваются с необходимостью сделать снимок экрана. Если вы или ваши сотрудники основную часть времени проводят в 1С и у вас есть необходимость прикреплять графические файлы, то эта компонента для вас.

1 стартмани

08.02.2016    26371    32    linkforget    11    

QR-code полная версия (без шрифта и внешней компоненты для 8.2, 8.3 и любого типа клиента)

Разработка внешних компонент Сканер штрих-кода v8 1cv8.cf Абонемент ($m)

Предназначена для создания QR-code с указанием процента восстановления потерянных данных. Строка кодирования может содержать все печатаемые символы, в том числе и кириллические. Для работы не требуется внешняя компонента или шрифт.

2 стартмани

10.07.2018    10325    15    bobank    6    

Внешняя компонента для ping'а

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Внешняя компонента для выполнения ping'а из 1С:Предприятия 8.

1 стартмани

04.07.2018    9635    5    frkbvfnjh    24    

JVM Native API плагин - для запуска в 1С плагинов написанных на Java

Разработка внешних компонент v8 Абонемент ($m)

Запускаем виртуальную машину Java в 1С. Собрана внешняя компонента которая позволяет запускать виртуальную машину java в среде 1С. Позволяет как передавать параметры в java - так и получать уведомление через externalevent. Предпосылкой создания являлся тот факт, что есть много готового функционала которого не хватает в 1С. Язык сpp - довольно сложен для быстрой разработки, и теперь возможно использовать готовые сборки java классов (так называемые jar-файлы) для использования в 1С.

1 стартмани

20.06.2018    10263    29    minimajack    67    

Native API компонента для использования установленного в системе интерпретатора Python Промо

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Компонента позволяет подключать к платформе 1С python-модули, оформленные в стиле внешней компоненты. Кроме этого, она позволяет запускать небольшие фрагменты python-кода прямо из модулей 1С. На данный момент поддерживаются платформы 8.2 — 8.3 x86 Windows.

1 стартмани

14.05.2013    36992    69    Принт    31    

Вызов методов 1С из внешней компоненты, выполненной по технологии COM на C++

Разработка внешних компонент v8 Абонемент ($m)

Пример работы с объектами и методами 1С из внешней компоненты, разработанной по технологии COM на С++.

1 стартмани

04.06.2018    7655    4    le_    0    

Tool1CD: отрежем донорскую почку

Сервисные утилиты Разработка внешних компонент v8 Розница Абонемент ($m)

Ваша база мертва? Что ж, кое-что в ней ещё теплится.

1 стартмани

15.05.2018    17838    23    baton_pk    13    

Внешняя компонента Native для создания штрих кода (GS1 DataBar Expanded, GS1 DataBar Expanded Stacked и другие)

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

В связи с внедрением ГИС Меркурий потребовалось внешняя компонента, которая создает штрихкод и отдает 1С. ВК создана на основе библиотеки zint www.sourceforge.net/projects/zint.

1 стартмани

27.04.2018    16172    199    artmaks1988    93    

Распознаем штрих-коды QR, EAN-13, Code 128 с помошью 1С и веб камеры Промо

Разработка внешних компонент v8 1cv8.cf Россия Абонемент ($m)

Внешняя компонента, поможет распознать штрих-код, используя обычную веб камеру. Умеет работать с UPC-A, UPC-E, EAN-8, EAN-13, Code 39, Code 128, QR Code, Interleaved 2 of 5, Codabar, RSS-14, Data Matrix, PDF 417, Aztec, MaxiCode.

1 стартмани

31.10.2012    75085    183    shakmaev    84    

Работа с любыми сканерами документов в 1С c помощью внешней компоненты от vintasoft.com

Разработка внешних компонент v8 v8::УФ 1cv8.cf Абонемент ($m)

Универсальная обработка для сканирования изображений на любых сканерах (поточных, планшетных) средствами ActiveX от компании Vintasoft.

1 стартмани

29.03.2018    7694    3    Dach    0    

Печать на сервере 1с. DLL для 1С, способная печатать картинки и pdf файлы в серверном контексте (например, при работе веб-сервиса)

Разработка внешних компонент v8 Россия Абонемент ($m)

Не знаю, пригодится кому или нет, писалось для себя, т.к  возникла необходимость печатать на принтере этикеток sscc напрямую с ТСД  через web - сервис. Как известно, веб сервис в 1С работает только в серверном контексте и, к сожалению, разработчики платформы пока не позаботились о возможности вызывать метод  при таких условиях. 

1 стартмани

13.03.2018    8741    24    evgeny43    8    

Разработка игр на языке 1С с использованием Active-X компоненты (собственная разработка)

Разработка внешних компонент v7.7 v8 Россия Абонемент ($m)

Написанная Active-X компонента встраивается на форму обработки 1С (тестировалось на 1С 8.0, 8.1, 8.2, 8.3 не управляемые формы, 1С 7.7.). Компонента предназначена для моделирования игрового поля (вывод, движение спрайтов - фреймов, обработка коллизий, управление спрайтами-фреймами и т.д.) при разработки логики игры на встроенном языке 1С. Приложен пример обработки в которой реализована игра "Бита".

5 стартмани

04.01.2018    13431    2    protexprotex    34    

Удаленное управление через Skype Промо

Разработка внешних компонент Администрирование данных 1С v8 1cv8.cf Абонемент ($m)

Удаленное управление 1С через Skype. Со стороны клиента для работы нужен только Skype. Со стороны сервера любой компьютер с 1С.

1 стартмани

09.02.2014    41710    13    moolex    29    

Active-X компонента для получения видео-данных с Web-камеры, IP-камеры для 1С 8.3, 1С 8.2, 1С 8.1, для рисования на форме

Разработка внешних компонент v8 1cv8.cf Россия Абонемент ($m)

Active-X компонента встраивается непосредственно на форму 1С (тестировалось на 1С 8.3, 1С 8.2, 1С 8.1 - неуправляемые формы), реализованы методы подключения к Web-камеры (интерфейс VFW), к IP-камере по http-запросам, отображение на форме 1С потокового видео, снятие скрина и сохранение в файл на диск. Приложена обработка реализующая подключение и работы с ocx - компонентой. Тестировалось на win 7

4 стартмани

13.12.2017    12445    25    protexprotex    48    

ЭЦП по гостам Украины в 1С - Внешняя компонента BilboSign.dll

Разработка внешних компонент Защита и шифрование v8 1cv8.cf Украина Абонемент ($m)

Причиной данной разработки послужило отсутствие на данный момент криптопровайдера ЭЦП, который может работать по гостам Украины и использоваться в 1С. Для этого разработана внешняя компонента по технологии NativeAPI.

1 стартмани

11.12.2017    10911    15    Zahary    5    

Внешняя компонента симуляции нажатий клавиатуры и мыши (в т.ч. сворачивание/разворачивание динамических списков)

Разработка внешних компонент v8 Абонемент ($m)

Данная ВК позволяет использовать в ОС Windows начиная с 2000 функцию WinApi - SendInput(). А прилагающаяся обертка на 1С под нее позволяет делать это комфортно и просто. Внешняя компонента была написана, прежде всего, для сворачивания/разворачивания группировок в динамических списках.

1 стартмани

18.10.2017    12342    10    🅵🅾️🆇    26    

Внешняя компонента - Запись и воспроизведение .wav файлов. Обработка-иллюстратор. Промо

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Обработка иллюстрирует использование внешней компоненты MMLibrary для записи и воспроизведения звуковых wav файлов. Компонента разработана по технологии Native.

1 стартмани

01.03.2014    17421    20    vozhd    7    

Отправка сообщений

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Внешняя компонента и сервер отправки сообщений клиентам с сервера / от других клиентов.

1 стартмани

16.10.2017    10206    9    eugenevk    5