Страница 69 из 130

Добавлено: Вт апр 02, 2013 20:15
MVV
Ага, очередной цветочек KEYEVENTF_UNICODE...
Похоже, никакие клавиатурные комбинации (да и просто одиночные клавиши - например, на голую букву A назначить какую-нибудь команду) не работают.

А со скан-кодами остаётся проблема отправки символов в иной раскладке... А то отправляешь hello, а при русской раскладке получаешь руддщ.

С вашими этими скриптами таких проблем нет? Надо будет ещё проверить в дотнете.

Добавлено: Вт апр 02, 2013 21:11
sa
MVV писал(а):никакие клавиатурные комбинации
Так вроде %%ф (т.е. Alt+ф) работает?
MVV писал(а):А то отправляешь hello, а при русской раскладке получаешь руддщ.
В VBS-скриптах также.

Добавлено: Вт апр 02, 2013 21:33
MVV
Так вроде %%ф (т.е. Alt+ф) работает?
Похоже, быстрый поиск обрабатывается иначе. А если назначить именно комбинацию с Alt, уже не работает.
В VBS-скриптах также.
А, ну если это нормально, то можно так оставить. Думаю ещё добавить модификатор для отправки чисто юникод-символов, чтобы слать текст независимо от раскладки клавиатуры. Тильду какую-нибудь:

Код: Выделить всё

send(`^M~(hello world)`)

Добавлено: Вт апр 02, 2013 22:15
sa
модификатор для отправки чисто юникод-символов
Ну, тогда и что-то наподобие `~ (%%фи%%s%%и)` хотелось бы сохранить.

Добавлено: Ср апр 03, 2013 00:52
MVV
Ну без модификатора будет отправлять через скан-коды, если найдет их, остальное - юникодом. А с модификатором (~ перед символом или перед скобками, точно как и %, ^ и +) - чисто юникодом.

Ага, похоже, дотнетовский SendKeys тоже посылает всё исключительно через скан-коды, если выбрана другая раскладка, текст набирается в ней, а не в исходной. В таком случае, думаю, модификатор точно будет полезен.

Бета 364.
Добавлен модификатор ~ для прямой отправки текста в юникоде (без потери раскладки). Указывается, как и остальные модификаторы, перед символом или скобкой, например:

Код: Выделить всё

test_send_1=send(`~(Hello !"#${%}&'{(}-. Вася)`)
Код клавиши с ~ может быть отправлен через {~}, а чисто символ ~ - через ~{~}.

Добавлено: Ср апр 03, 2013 11:21
sa
MVV писал(а):Бета 364.
Вчерашняя версия (360) в CAB-е...

Добавлено: Ср апр 03, 2013 14:39
MVV
Точно, блин. Исправил ссылку.

Сложно отлаживать функции отправки нажатий клавиш, во время отладки фокус всё время перехватывает среда разработки, и она же ловит клавиши.
Как раз из-за левого мусора в исходнике релизная версия и не собралась, а я в спешке не заметил этого.

Добавлено: Ср апр 03, 2013 15:32
sa
У меня всё нормально работает - ни одного нового цветочка пока не вылезло.
А с тильдой - просто песня!

Пробел может быть не стоит передавать после тильды как юникод? В таком виде он не срабатывает как переключатель в диалогах. Без тильды срабатывает как надо, разумеется.
Как бы кавычку передать? Может так {"}? Нашёл выход +', только он работает при английской раскладке.

Добавлено: Ср апр 03, 2013 16:26
MVV
Да оно-то несложно, но ведь другие клавиши тоже могут использоваться для схожих целей. И ты же не будешь смешивать пробелы-переключатели и символы юникода - пробелы надо вводить, когда фокус на чекбоксах, а символы - в поля ввода. Думаю, логично было бы каждый ввод в поле ввода обрамлять тильдой, а между ними наоборот тильд не делать, чтобы подчеркнуть, что это уже не ввод текста. Тем более, между ними еще будут табуляторы.

Бета 366.
Пробел не посылается через тильду.

Добавлено: Ср апр 03, 2013 16:45
sa
Я зачастую всю строку нажатий обрамляю скобками и предваряю их тильдой. С табами, Enter и ESC, а теперь и пробелом внутри скобок всё работает.

Добавлено: Ср апр 03, 2013 16:53
MVV
Табуляция и эскейп (и остальные символы со строковыми идентификаторами) всегда отправляются через скан-код.

Добавлено: Ср апр 03, 2013 16:58
sa
Главное, что тильда никак не мешает этому.

Добавлено: Ср апр 03, 2013 17:31
MVV
Я бы всё равно рекомендовал разделять мух с котлетами:

Код: Выделить всё

test_hello_1=send(`^m~(Hello, мир){tab}~( Это я)%н~(Hello){tab}~(Привет)`)

Добавлено: Ср апр 03, 2013 17:45
sa

Код: Выделить всё

Я бы всё равно рекомендовал разделять мух с котлетами
Я так и делал. Пока не заметил, что мухи не на все котлеты садятся. :)

Добавлено: Ср апр 03, 2013 17:54
MVV
Я имею в виду, что тильды необходимы только в полях ввода (ещё, быть может, при переходе к элементу по Alt+букве), между ними и на других элементах управления их быть не должно. Перешли к полю ввода - тильда и текст, закрыли тильду, переходим к следующему полю, и т.д.