0. Kobra_RU 223 22.09.11 08:57 Сейчас в теме

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

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

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
96. Wladimir_spb 13.03.18 17:14 Сейчас в теме
Ок
Вот пример обработки для управляемых форм. Если кому еще пригодится
Прикрепленные файлы:
KeyboardHook.epf
97. WellMaster 99 14.03.18 11:40 Сейчас в теме
(96) В моей конфе это не заработало. Я использую вместо ПодключитьВнешнююКомпоненту(...) метод НачатьПодключениеВнешнейКомпоненты(...). И использую компоненту из макета из 80-го сообщения.

Кстати, для тех, кто интересуется, для чего это может быть полезным: я это использую для более выразительного выделения кнопок на управляемой форме. На внешнее событие повесил раскраску активной кнопки. Эта задача обсуждалась в том числе и тут: https://forum.infostart.ru/forum9/topic118724/
Прикрепленные файлы:
98. Wladimir_spb 14.03.18 12:32 Сейчас в теме
(97) Метод НачатьУстановкуВнешнейКомпоненты() нужен для переноса компоненты с сервера на клиент.
Я тестировал в файловом варианте, поэтому мне перенос не понадобился и все подключилось методом ПодключитьВнешнююКомпоненту()
99. WellMaster 99 14.03.18 15:51 Сейчас в теме
(98) Вот с этим я и бился так долго.
100. Wladimir_spb 15.03.18 11:59 Сейчас в теме
(97) В теме про выделение кнопок предложен метод через поиск текущего элемента опросом раз в какой-то период. Этот метод не работает?
101. WellMaster 99 15.03.18 15:13 Сейчас в теме
(100) Этот метод не работает.
102. wash 2 22.03.18 15:55 Сейчас в теме
Подскажите, пожалуйста, вот хочу сделать чтоб при нажатии кнопки ентер на строке выводилось приглашение ввести количество:
Процедура ВнешнееСобытие(Источник, Событие, Данные)

	Если Не ВводДоступен() Тогда
		Возврат;
	КонецЕсли;

	ВиртуальнаяКлавиша	= ПолученноеЧисло % 256;
	
	ВыбраннаяСтрока = ЭлементыФормы.Товары.ТекущиеДанные;
	Если ВиртуальнаяКлавиша = 13 тогда
		//это ентер
		Количество = ВыбраннаяСтрока.Количество;
		Если ВвестиЧисло(Количество, "Введите кол-во", 15, 3) тогда
			ВыбраннаяСтрока.Количество = Количество;
			ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(ВыбраннаяСтрока, ЭтотОбъект);			
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Процедура ПриОткрытии()	
	Макет	= ПолучитьМакет("ВнешняяКомпонента");
	Макет.Записать(ИмяФайла);
	
	ПодключитьВнешнююКомпоненту(ИмяФайла, "KeyboardHook",ТипВнешнейКомпоненты.Native);
	КомпонентаKeyBoardHook = Новый("AddIn.KeyboardHook.KeyboardHook");
	КомпонентаKeyBoardHook.ЗахватРазрешен = Истина;
	КомпонентаKeyBoardHook.СобытиеПриНажатии = истина;
	КомпонентаKeyBoardHook.ЗахватПервым = ложь;
	КомпонентаKeyBoardHook.КлавиатураЗаблокирована = ложь;
КонецПроцедуры // ПриОткрытии()
Показать

При нажатии кнопки ентер на окне "Введите кол-во", хук опять срабатывает и опять выводится окно "Введите кол-во".
Подскажите, как правильно в коде описать?
Формы обычные.
Прикрепленные файлы:
103. Kobra_RU 223 23.03.18 08:59 Сейчас в теме
(102)
Вариант 1: Перед открытием диалога ввода количества инициализировать глобальную переменную формы (например СейчасВВодимКоличество = Истина). При сработке проверяем эту переменную и не обрабатываем сработку если она Истина. После ввода количества сбрасываем переменую в ЛОЖЬ.
Вариант 2: Делаем отдельную форму ввода количества и открываем ее. Так как в этой отдельной форме нет обработки внешнего события, то и прерывания не произойдет.
104. wash 2 23.03.18 12:58 Сейчас в теме
105. privin731 11.06.18 07:48 Сейчас в теме
Спасибо автору! Он выложил свою компоненту в "свободный доступ" на ресурсе который НЕ ПОЗВОЛЯЕТ СВОБОДНО СКАЧИВАТЬ. Уважаемый автор, убедительная просьба выложить результат Вашего труда действительно в НАСТОЯЩИЙ СВОБОДНЫЙ ДОСТУП. Спасибо.
110. user1309444 18.11.19 18:42 Сейчас в теме
Ребята, гуру 1С, подскажите пожалуйста новичку, можно ли работать в данной компоненте с окнами 1С ? Если да, то каким образом?
111. Kobra_RU 223 19.11.19 08:09 Сейчас в теме
С окнами работать не получится.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Разработчик 1С
Санкт-Петербург
зарплата от 140 000 руб.
Полный день

Консультант-аналитик 1С
Санкт-Петербург
зарплата от 90 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Программист 1С
Екатеринбург
зарплата от 80 000 руб. до 130 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 200 000 руб.
Полный день