Клуб Punto Switcher

Проверка на программно сгенерированные нажатия

22 января 2013, 10:46

Можно ли Пунто запускать так, чтобы программа обрабатывала только реальные нажатия клавиш и пропускала эмулированные?

Или пока не было нужды в реализации проверки на LLKHF_INJECTED и поэтому нету?

9 комментариев

Опишите, пожалуйста, кейс в котором это может пригодиться массовому пользователю.

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

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

Извините, но это очень специфическая, частная проблема. Ищите способ её решать в собственном продукте.

Да, понимаю. Очень досадно..

Для меня эта частная проблема - реально проблема, а для вас - четыре строчки кода

if ((settings.noinject) && (((PKBDLLHOOKSTRUCT) lParam)->flags & LLKHF_INJECTED) == LLKHF_INJECTED)
        {
            return CallNextHookEx(hHkKbd, nCode, wParam, lParam);
        }

 

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

Единственный вариант решения, который мне доступен - сочинить собственный переключать, с блекджеком и шлюхами. Чего бы мне очень и очень не хотелось бы делать.

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

А может есть надежда, что если еще раз попросить, то прислушаетесь?

Мы никогда не будем влезать в работающий код, потому что кто-то неизвестный под невнятным никнеймом, что-то захотел сделать и при этом пока еще ничего не сделал. Развлекается с прототипом, но он только не работает, а виноват почему-то Punto Switcher :)

Ага, значит можно надеятся на взаимопонимание, но только когда допилю до приличного состояния.

Спасибо)

Менеджеры паролей не подойдут? Это массовые программы и они имитируют нажатие клавиш.

Я по этой причине не использую автопереключение вообще.

Опишите, пожалуйста, конкретный случай. Какой именно менеджер паролей? Какой браузер? Как Punto Switcher препятствует работе менеджеров паролей? 

Лень было ситуацию воспроизводить, т.к. решение для себя нашел давно и привык (во-первых, автоматически я уже годы не корректирую ввод, только по клавише Break; во-вторых я давно не пользуюсь примемом написать русское слово в анлийской раскладке).

 

  1. Браузер Firefox 19.0.2 (такое было и раньше, дело не в версии).
  2. Открываю сайт с формой авторизации. Специально проверил, пароль вводится в специальное поле для пароля (<input size="40" name="password" type="password">).
  3. Менеджер паролей уже старый, и это факт - My password manager. Не обновляется он много лет.
  4. Пользуюсь комбинацией клавиш для имитации набора логина и пароля. Это от менеджера паролей. Он реально имитирует нажатие кнопок для ввода символов, табы для перехода между полями. Вот именно это его и подводит, видимо. Думаю, дело не в возрасте моего менеджера паролей, а в имитации нажатия клавиш.

 

Но удивительно что Punto не учитывает, что ввод идет в поле для пароля. В таком поле ничего не надо корректировать.