Интересный метод СостояниеКлавиатуры, объекта Сервис, FormEx - привел меня к вопросу:
Существует ли стандарт/порядок расположения диодов(индикаторов) клавиш CapsLock, NumLock и ScrollLock на клавиатурах и стационарных и переносных ПК?
В общем на домашнем ноутбуке 2 индикатора (в порядке "мигания" NumLock, CapsLock), а на стационарной клавиатуре все три (в порядке "мигания" NumLock, CapsLock, ScrollLock).
Заставим их "мигать" нам из 1С, текст процедуры:
В итоге, диоды в порядке очереди, должны подмигивать Нам в порядке очереди: CapsLock, NumLock и ScrollLock.
Существует ли стандарт/порядок расположения диодов(индикаторов) клавиш CapsLock, NumLock и ScrollLock на клавиатурах и стационарных и переносных ПК?
В общем на домашнем ноутбуке 2 индикатора (в порядке "мигания" NumLock, CapsLock), а на стационарной клавиатуре все три (в порядке "мигания" NumLock, CapsLock, ScrollLock).
Заставим их "мигать" нам из 1С, текст процедуры:
Если ЗагрузитьВнешнююКомпоненту("FormEx.dll") = 0 Тогда
Сообщить("Не удалось загрузить внешнюю компоненту FormEx.dll");
Возврат;
КонецЕсли;
ОбСервис = СоздатьОбъект("Сервис");
//Попробуем помигать NumLock-ом, CapsLock-ом и ScrollLock-ом
ОбСервис.СостояниеКлавиатуры("NumLock",0);
ОбСервис.СостояниеКлавиатуры("CapsLock",0);
ОбСервис.СостояниеКлавиатуры("ScrollLock",0);
Для икс = 1 По 12 Цикл
Для игрик = 1 По 10000 Цикл
Состояние(игрик);
КонецЦикла;
сосНам = ОбСервис.СостояниеКлавиатуры("NumLock",);
сосКапс = ОбСервис.СостояниеКлавиатуры("CapsLock",);
Если (сосНам = 0) И (сосКапс = 0) Тогда
ОбСервис.СостояниеКлавиатуры("NumLock",1);
ОбСервис.СостояниеКлавиатуры("CapsLock",0);
ОбСервис.СостояниеКлавиатуры("ScrollLock",0);
ИначеЕсли (сосНам = 1) И (сосКапс = 0) Тогда
ОбСервис.СостояниеКлавиатуры("NumLock",0);
ОбСервис.СостояниеКлавиатуры("CapsLock",1);
ОбСервис.СостояниеКлавиатуры("ScrollLock",0);
Иначе
ОбСервис.СостояниеКлавиатуры("NumLock",0);
ОбСервис.СостояниеКлавиатуры("CapsLock",0);
ОбСервис.СостояниеКлавиатуры("ScrollLock",1);
КонецЕсли;
КонецЦикла;
Сообщить("Не удалось загрузить внешнюю компоненту FormEx.dll");
Возврат;
КонецЕсли;
ОбСервис = СоздатьОбъект("Сервис");
//Попробуем помигать NumLock-ом, CapsLock-ом и ScrollLock-ом
ОбСервис.СостояниеКлавиатуры("NumLock",0);
ОбСервис.СостояниеКлавиатуры("CapsLock",0);
ОбСервис.СостояниеКлавиатуры("ScrollLock",0);
Для икс = 1 По 12 Цикл
Для игрик = 1 По 10000 Цикл
Состояние(игрик);
КонецЦикла;
сосНам = ОбСервис.СостояниеКлавиатуры("NumLock",);
сосКапс = ОбСервис.СостояниеКлавиатуры("CapsLock",);
Если (сосНам = 0) И (сосКапс = 0) Тогда
ОбСервис.СостояниеКлавиатуры("NumLock",1);
ОбСервис.СостояниеКлавиатуры("CapsLock",0);
ОбСервис.СостояниеКлавиатуры("ScrollLock",0);
ИначеЕсли (сосНам = 1) И (сосКапс = 0) Тогда
ОбСервис.СостояниеКлавиатуры("NumLock",0);
ОбСервис.СостояниеКлавиатуры("CapsLock",1);
ОбСервис.СостояниеКлавиатуры("ScrollLock",0);
Иначе
ОбСервис.СостояниеКлавиатуры("NumLock",0);
ОбСервис.СостояниеКлавиатуры("CapsLock",0);
ОбСервис.СостояниеКлавиатуры("ScrollLock",1);
КонецЕсли;
КонецЦикла;
В итоге, диоды в порядке очереди, должны подмигивать Нам в порядке очереди: CapsLock, NumLock и ScrollLock.
Неплохо, но цикл я бы оптимизировал. Например, так:
ОтветитьУдалитьДля икс = 1 По 12 Цикл
Для игрик = 1 По 10000 Цикл
Состояние(игрик);
КонецЦикла;
ОбСервис.СостояниеКлавиатуры("NumLock",?(икс%3=0,1,0));
ОбСервис.СостояниеКлавиатуры("CapsLock",?((икс+1)%3=0,1,0));
ОбСервис.СостояниеКлавиатуры("ScrollLock",?((икс+2)%3=0,1,0));
КонецЦикла;
Хотя, в зависимости от того, что там тебе в состояниях возвращается...
ОтветитьУдалитьМожет быть их и нужно читать...