Продукты
 Где купить
 Пользователям
 Для бизнеса
 Мы на связи

   

Программа IRlink

Скачать свежую версию error: property not read


null
null
null

Эмуляция нажатий клавиш в активном окне

При эмуляции нажатий клавиатуры в активном окне важно, чтобы целевое приложение было всё время в фокусе. Иногда фокус с активного окна может пропасть из-за случайного клика по рабочему столу или из-за мигающего на панели задач окошка ICQ. В IRLink.3 встроен механизм, который автоматически возвращает фокус в нужную программу.

Программа IRLink.3 позволяет с пульта ду имитировать нажатие клавиш клавиатуры. Как правило, при эмуляции нажатий задаётся целевое окно программы, в котором надо эмулировать, так как это обеспечивает ответную реакцию программы независимо от того, свёрнута она или развёрнута, активна или нет. К сожалению, бывают такие приложения, в которых не удаётся сделать привязку к определённому окну (например, нет постоянной части заголовка, или заголовок одинаков у нескольких окон, имена классов генерируются динамически и т. д.), поэтому единственный возможный способ управлять такими программами — это использовать имитацию нажатий в активном окне. Это накладывает определённые ограничения на управление программой, она должна быть активной, т. е. иметь фокус.

Тут и могут возникнуть проблемы: когда вы переключитесь на другое приложение, то эмуляция будет происходить уже в нём. Вторая проблема — это неявная кража фокуса из основной программы системными окнами. Например, вы кликнули мышкой по рабочему столу, нажали на кнопку "Пуск", на панели задач замигала ICQ.

Кража фокуса

Чтобы бороться с первой ситуацией, можно перед заданием "Эмуляция нажатия клавиш" (плагин Windows) добавить задание "Активировать приложение" (плагин Windows); для надёжности между ними можно вставить небольшую задержку (напр., 50 мс), чтобы окно успело активироваться (задание "Выждать паузу", плагин Windows). Это позволит сначала активировать программу, и только потом уже производить эмуляцию.

Такие элементы системы, как рабочий стол, панель задач и панель быстрого запуска тоже являются "окнами". Они также могут получать фокус, и можно ими пользоваться с клавиатуры. При этом в контексте управления программами с пульта это не имеет никакого смысла: имитировать нажатие клавиш для рабочего стола или панели задач никогда не нужно, и эта неявная "кража фокуса" у основной программы только сбивает с толку: на клавиатуре вы нажимаете сочетание клавиш, но до нужной программы оно не доходит. Чтобы вернуть управление программе, приходится сначала кликать на неё мышкой.

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

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

16 сентября 2005, IRLink

Главная l Продукты | Где купить | Пользователям | Предложения для бизнеса | Мы на связи | Мешки-сетки для хранения спальников
© 2003–2010 автор идеи Павел