![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
belonesox |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 21.4.2006 Где: Moscow Репутация: нет Всего: 1 |
Есть задача некой автоматизации/генерации Windows-событий для оконных программ.
Вот минимальный макет - запускаем Блокнот, и бьем некоторое количество нажатий и отпусканий клавиш. В идеале хотим получить в блокноте "qqqqqqqqqqййййййййййй". Проблема в том, что нужно уметь не только слать правильные коды клавиш, но и задавать для них правильную раскладку (думаю, у всех читающих есть 409 и 419 локали). А с этим проблема - единственный WinAPI-вызов, что можно использовать из кошерных pywin32 модулей - это LoadKeyboardLayout (ActivateKeyboardLayout - нету). Теоретически и его должно хватить - но нет, не получается, какие бы комбинации флагов к нему я не заказывал.
Собственно вопрос - может кто-то сталкивался с аналогичной задачей и успешно ее решил? Может это у меня какая-то проблема в "консерватории"? Заранее благодарен за ответ, с уважением, Стас Фомин (Workaround-ы с дополнительными DLL-ями, включая самописные, или использованием hotkey для раскладок сразу бы не хотелось рассматривать, вдруг есть правильное и красивое решение). |
|||
|
||||
shupg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 21.6.2006 Репутация: 2 Всего: 2 |
LoadKeyboardLayout только добавляет в список возможных расскладок первый параметр. Так как, наверняка, у тебя уже есть в списке русский - ты не видишь изменений.
Может быть воспользоваться CTRL+Shift или типа того? |
|||
|
||||
belonesox |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 21.4.2006 Где: Moscow Репутация: нет Всего: 1 |
Да нет, он должен и активную раскладку менять (с соотв. флагами). Проблема только в том (IMHO), что раскладку он меняет не у Notepada (которому шлют кейкоды), а у питоновского процесса, т.е. эффекта никакого нет. Поменять раскладку кейкодами можно, но некрасиво (ибо идея — по символу выяснить кейкод и раскладку, и перед посылкой каждого кейкода слать хоткеи выбора раскладки — уродлива до невозможности). Для своей задачи — слать символы в окно я понятно, перейду на простой SendMessage/WM_CHAR, но думал, что может просто что-то не так понимаю (ну эта возможность еще сохраняется, да). Просто такая ситуация (если я не ошибся) — это, например, приговор библиотекам SendKey (и pywinauto), которые шлют символы через keybd_event (смесь русского с английским они слать не смогут, пока весь нижний уровень не переписать). |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |