1 (изменено: bolkogaso, 2017-01-25 14:03:36)

Тема: AHK: проблемы со вставкой кириллицы в текущее окно

День добрый.

При отсылке кириллических сообщений заменяются некоторые буквы кириллицы.

Пример - имеется кусок простейшего кода:

SendMessage, 0x50,, 0x4190419,, A
Send, Появление

В результате отработки скрипта я вижу следующее:

ЏоЯвление

Первый символ заменился, "я" стала заглавной.

Как можно избежать деформации?

2 (изменено: slavafedora, 2017-01-24 11:12:56)

Re: AHK: проблемы со вставкой кириллицы в текущее окно

Просто взял как пример, у меня все работает проблем с деформацией нет.

Numpad1::
{
	SendMessage, 0x50,, 0x4190419,, A
	SendInput, Появление Text
	return
}

3

Re: AHK: проблемы со вставкой кириллицы в текущее окно

slavafedora пишет:

Просто взял как пример, у меня все работает проблем с деформацией нет.

И это прекрасно! Но мне бы понять, что сделать, чтобы и у меня деформации не было

Windows 7, AHK 1.24.04. Ничего лишнего на ПК не установлено.

4

Re: AHK: проблемы со вставкой кириллицы в текущее окно

SendPlay попробуйте вместо Send.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: проблемы со вставкой кириллицы в текущее окно

teadrinker пишет:

SendPlay попробуйте вместо Send.

В этом случае вообще перестаёт работать. Скорее всего из-за этого:

SendPlay [v1.0.43+]

Note: SendPlay may have no effect at all if UAC is enabled, even if the script is running as an administrator. For more information, refer to the FAQ.

SendInput отрабатывает также, как Send.

6

Re: AHK: проблемы со вставкой кириллицы в текущее окно

Вероятно, это в какой-то одной программе? Она секретная?

7

Re: AHK: проблемы со вставкой кириллицы в текущее окно

YMP пишет:

Вероятно, это в какой-то одной программе? Она секретная?

Нет, поведение идентично и в ворде и в блокноте и в почтовом клиенте.

8

Re: AHK: проблемы со вставкой кириллицы в текущее окно

stealzy пишет:

YMP, разработка спецслужб, не иначе.
Попробуйте Sleep 200 после смены языка.

Да нет, просто рабочий комп - лицензионная семёрка, ничего лишнего.
Поставил секундный слип на всякий случай после смены языка - результат не изменился.

Такое ощущение, что где-то с кодировкой проблемы, просто куда копать - пока не пойму...

9 (изменено: YMP, 2017-01-24 14:11:44)

Re: AHK: проблемы со вставкой кириллицы в текущее окно

А для какого языка Семёрка? И какой АНК используете? Юникодный или ANSI?

И сам файл скрипта в какой кодировке?

10

Re: AHK: проблемы со вставкой кириллицы в текущее окно

YMP пишет:

А для какого языка Семёрка? И какой АНК используете? Юникодный или ANSI?

Для русского, Юникодный 64 бита.

YMP пишет:

И сам файл скрипта в какой кодировке?

А вот тут спасибо за самую главную подсказку. Сменил кодировку файла скрипта на Windows-1251 - наконец-то заработало! Спасибо

11

Re: AHK: проблемы со вставкой кириллицы в текущее окно

Если АНК юникодный, тогда лучше в UTF-8 сохранять или в UTF-16. Иначе результат перекодирования скрипта в юникод будет зависеть от кодовой таблицы.

12

Re: AHK: проблемы со вставкой кириллицы в текущее окно

YMP пишет:

лучше в UTF-8

Как раз нет.

13

Re: AHK: проблемы со вставкой кириллицы в текущее окно

Краткость — сестра таланта и мать недоразумений.

14

Re: AHK: проблемы со вставкой кириллицы в текущее окно

В данном случае мать указания на недоразумения:

}Появление Text

15

Re: AHK: проблемы со вставкой кириллицы в текущее окно

Ничего не понял.

16

Re: AHK: проблемы со вставкой кириллицы в текущее окно

Код из #2 возвращает это при UTF-8.

17

Re: AHK: проблемы со вставкой кириллицы в текущее окно

Без BOM, видимо, сохраняете, вот АНК и не знает, что это UTF-8.

18

Re: AHK: проблемы со вставкой кириллицы в текущее окно

Честно говоря, AkelPad глючит. Ему говоришь - давай с BOM, а он всё равно без оного сохраняет.
По большому счёту, я часто без него сохраняю и совсем не по этой причине, для меня UTF-8 в таком виде более актуален.

19 (изменено: stealzy, 2017-01-24 20:40:35)

Re: AHK: проблемы со вставкой кириллицы в текущее окно

Вообще, по стандарту UTF-8 идет без всяких BOM, UTF-8 с BOM - выдумка мелгомягких. Интерпретатор autohotkey.exe по-умолчанию использует BOM как признак UTF, а его отсутствие - как признак ANSI.
Код, который перезапускает сам себя как UTF-8, будучи сохранен без BOM:

; Save this script as UTF-8 (without BOM)
MsgBox Неllо ; in ansi encoding it doesn't look the way you expect :-)
ReloadANSIasUTF()

ReloadANSIasUTF() { ; reload script (if it run as ANSI) as UTF with all command line parameters.
	if (StrLen("а") = 2) { ; ANSI
		RegexMatch(DllCall( "GetCommandLineW", "Str" ), "^([^\s""]+|""[^""]+?"")(\s+/[rR])?\s+(?<args>.*)$", _)
		Run "%A_AhkPath%" /r /CP65001 %_args%
	}
} ; You can call this func at start of your script and use UTF-8 without BOM.

Иной путь - в реестре дописать в параметры запуска кодировку, и поправить команду запуска в редакторе.

20 (изменено: Malcev, 2017-01-24 20:40:58)

Re: AHK: проблемы со вставкой кириллицы в текущее окно

stealzy, можно проще:
https://autohotkey.com/docs/Scripts.htm#cp
bolkogaso, а зачем вы язык меняете перед вставкой текста?

21

Re: AHK: проблемы со вставкой кириллицы в текущее окно

stealzy пишет:

Вообще, по стандарту UTF-8 идет без всяких BOM, UTF-8 с BOM - выдумка мелгомягких.

А что значит "идёт"? БОМ используется при сохранении в файл. Вполне разумная мера, на мой взгляд.

22

Re: AHK: проблемы со вставкой кириллицы в текущее окно

Malcev пишет:

bolkogaso, а зачем вы язык меняете перед вставкой текста?

Это кусочек скрипта, в котором, среди прочего, копируется текст, из него выбирается ссылка, потом отдельно вставляется ссылка, отдельно текст. Так вот, изначально при вставке ссылки она получалась некорректной - слеши заменялись на |, и что-то ещё. Вылечил принудительным переключением раскладки на английский, на всякий случай пробежался по скрипту и вставил переключения, в зависимости от того, на каком языке вводится текст.

23

Re: AHK: проблемы со вставкой кириллицы в текущее окно

http://forum.script-coding.com/viewtopic.php?id=1073

24

Re: AHK: проблемы со вставкой кириллицы в текущее окно

Добрый вечер!
Не стал плодить темы. Подскажите пожалуйста по возможности.
Есть код:

ComObjError(False) 
Path = B:\test1\test.xlsx
Xl := ComObjCreate("Excel.Application")
Xl.Workbooks.Open(Path) ;открывает выбраный файл Ексель
Sleep, 1500
Run, %windir%\system32\cmd.exe, min  ; запускаем командную строку
Sleep, 1500
; Заполняем переменные из excel
name:=Xl.Range("A1").Value ;Копируем имя "Иванов ИИ 01.01.2000"
sleep, 1500
Sendinput, %name% ;вставляем переменную name
Xl.Application.Quit()     ; Закрываем Excel
ExitApp
return

Описание скрипта:
Из таблицы Excel копируется ФИО и дата, эти данные вставляются в командную строку.

Проблема:
Вместо "Иванов ИИ 01.01.2000" вставляется "Bdfyjd BB 01/01/2000" (Если в момент запуска командной строки раскладка ENG)
Вместо "Иванов ИИ 01.01.2000" вставляется "Иванов ИИ 01ю01ю2000" (Если в момент запуска командной строки раскладка Рус)
Не проблема запускать скрипт с русской раскладкой, но "ю" вместо точки напрягает..
Если вставлять в блокнот или Word то текст вставляется корректно какая раскладка не стояла бы.
Проблема возникла после смены ОС с Windows 7 на Windows 10.

Немного о системе:
Windows 10 20h2
AHK 1.1.33.11 Unicode 64

Заранее спасибо!

25

Re: AHK: проблемы со вставкой кириллицы в текущее окно

Попробуйте вместо Sendinput, %name%

SendInput, {Text}%name%
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

26

Re: AHK: проблемы со вставкой кириллицы в текущее окно

teadrinker пишет:

Попробуйте вместо Sendinput, %name%

SendInput, {Text}%name%

Ура! Все получилось. Неделю мучился, перебирал кодировки ) Спасибо большое !!!