1 (изменено: terra-4, 2016-06-26 15:42:12)

Тема: AHK: Чтение текста. [Решено]

Здравствуйте, есть идея.. чтобы при нажатии одной кнопки, выделенный текст воспроизводился вслух.

~XButton1:: ;Запуск
PostMessage, WM_INPUTLANGCHANGEREQUEST := 0x50,, 0x419,, A ;переключаем раскладку в активном окне на русскую
SendInput, % "^{sc02E}" ;CTRL+С копировать
DllCall(UInt, 0xd094a, Int, SW_SHOWNOACTIVATE := 4) ;Развернуть Алёну
SendInput, % "^{vk41}" ;CTRL+A выделить всё
SendInput, % "^{vk56}" ;CTRL+V вставить
SendInput, % "{F2}" ;F2 запуск чтения
SendInput, % "#{vk44}" ;Свернуть Алёну
Return

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

+ открыть спойлер

2 (изменено: yalanne, 2016-06-22 23:03:39)

Re: AHK: Чтение текста. [Решено]

Есть вот такой модуль:

Voice := ComObjCreate("SAPI.SpVoice")
Voice.Speak("Этот текст генерируется компьютерным голосом.")
sleep 100
Voice.Speak("На русcком языке этот модуль может говорить только на windows 10.")

Если у вас не win 10 то можно в принципе сделать костыль который будет переделывать текст в транслит.

3

Re: AHK: Чтение текста. [Решено]

yalanne, Спасибо, буду знать о этой возможности, у меня установлена windows 8.1.

4 (изменено: yalanne, 2016-06-23 07:27:12)

Re: AHK: Чтение текста. [Решено]

terra-4
Хм а на восьмерке по русски говорит?
На win 7 точно нет.

5 (изменено: Malcev, 2016-06-23 00:16:13)

Re: AHK: Чтение текста. [Решено]

Так будет на русском:
1. Скачиваем и устанавливаем версию x86 или x64 Microsoft Speech Platform - Runtime (2.5 Mb)
http://www.microsoft.com/en-us/download … x?id=27225
2. Скачиваем и устанавливаем русский голосовой движок Elena (файл MSSpeech_TTS_ru-RU_Elena.msi - 6 Mb).
http://www.microsoft.com/en-us/download … x?id=27224

Voice := ComObjCreate("SPEECH.SpVoice")
Voice.Speak("На русcком языке этот модуль может говорить и на windows 7.")

6 (изменено: terra-4, 2016-06-23 08:38:12)

Re: AHK: Чтение текста. [Решено]

yalanne, знаю что на 8.1 экранный диктор говорит по русски.. но это не то по сравнению с голосовым движком Алена и выделенным текстом для чтения.
Похоже я понимаю почему не работает слепленный мной скрипт.. Вот скажите как перейти в свернутую программу? знаю только ID 0xd094a и заголовок программы Infovox Desktop SpeechPad — Untitled.

Malcev, Спасибо за ссылки, только я не знаю как тот модуль использовать.

7

Re: AHK: Чтение текста. [Решено]

Для Win8 должен работать вариант от yalanne, думаю.
Нет восьмерки, чтоб проверить.

8

Re: AHK: Чтение текста. [Решено]

Спасибо, всем кто обратил внимание, похоже что то слепил рабочие как нужно.. но если кто то знает как сделать лучше, не откажусь от лучшего варианта / примера.

XButton1:: ;Запуск Боковая кнопка мыши 1
PostMessage, WM_INPUTLANGCHANGEREQUEST := 0x50,, 0x419,, A ;переключаем раскладку в активном окне на русскую
SendInput, % "^{sc02E}" ;CTRL+С копировать
Sleep 300 ;Пауза 0.3 сек.
IfWinExist, Infovox Desktop ;поиск окна Infovox Desktop SpeechPad — Untitled
	WinActivate ; активация окна
SendInput, % "^{vk41}" ;CTRL+A выделить всё
SendInput, % "^{vk56}" ;CTRL+V вставить
SendInput, % "{F2}" ;F2 запуск чтения
Sleep 300 ;Пауза 0.3 сек.
IfWinExist, Infovox Desktop ;поиск окна Infovox Desktop SpeechPad — Untitled
	WinMinimize ;Свернуть
Return

9 (изменено: Malcev, 2016-06-23 18:05:06)

Re: AHK: Чтение текста. [Решено]

А зачем менять раскладку на русский?
Чтобы попробовать не максимизировать/минимизировать окна почитайте про эти команды:
ControlGetText
ControlSetText
ControlSend

10 (изменено: terra-4, 2016-07-01 17:13:06)

Re: AHK: Чтение текста. [Решено]

Malcev, переключение на Ru, вероятно нужно только мне, проблема в том что когда копирую русский текст при En раскладки получаются вопросительные знаки.. вот нашел как обойти вставил переключение перед копированием .

Спасибо за подсказку, оптимизации скрипта, только нужно держать программу открытой в  фоне, если будет свернута то скрипт не работает.

XButton1:: ;Запуск Боковая кнопка мыши 1
PostMessage, WM_INPUTLANGCHANGEREQUEST := 0x50,, 0x419,, A ;переключение раскладки клавиатуры на русскую
SendInput, % "^{sc02E}" ;CTRL+С копировать
   Sleep 400 ;Пауза 0.4 сек. по наблюдениям увеличивает стабильность
  ControlSend, , ^{vk41}, Infovox Desktop SpeechPad ;CTRL+A выделить всё
   ControlSend, , ^{vk56}, Infovox Desktop SpeechPad ;CTRL+V вставить
	ControlSend, , {F2}, Infovox Desktop SpeechPad ;F2 запуск чтения
Return
~!vk5A:: ;Alt+Z
ControlSend, , {F3}, Infovox Desktop SpeechPad ;F3 Отключить чтение
Return 

Malcev, Спасибо за помощь!, добавил ваш скрипт в свою коллекцию.
Помимо того что он работает в свернутом состоянии, так он ещё создает очередь чтения, что очень полезно.
Теперь он выглядит так.

XButton1:: ;Запуск Боковая кнопка мыши 1
SendInput, % "^{sc02E}" ;CTRL+С копировать
  Sleep 400 ;Пауза 0.4 сек.
   ControlSetText, Edit1, % ClipBoard, Infovox Desktop SpeechPad
   ControlClick, Button4, Infovox Desktop SpeechPad ; старт ;чтения F2
Return
~!vk5A:: ;Alt+Z
ControlClick, Button6, Infovox Desktop SpeechPad ; стоп ;F3 Отключить чтение
Return 

11 (изменено: Malcev, 2016-06-26 17:00:53)

Re: AHK: Чтение текста. [Решено]

У меня так работает в любом виде и при любрй расскладке:

f5::
ClipBoard =
SendInput, ^{vk43}   ; Ctrl + C
ClipWait, 2
if ErrorLevel
{
   MsgBox, Буфер обмена пуст!
   Return
}
ControlSetText, Edit1, % ClipBoard, Infovox Desktop SpeechPad
ControlClick, Button4, Infovox Desktop SpeechPad ; старт
return

f6::
ControlClick, Button6, Infovox Desktop SpeechPad ; стоп
return

12 (изменено: Malcev, 2016-06-26 17:07:22)

Re: AHK: Чтение текста. [Решено]

Malcev, переключение на Ru, вероятно нужно только мне, проблема в том что когда копирую русский текст при En раскладки получаются вопросительные знаки

Вот тут есть решение от YMP, правда нужно перевести на современный автохотки, чтобы не обрезала текст.
http://forum.script-coding.com/viewtopic.php?id=1073

13

Re: AHK: Чтение текста. [Решено]

Да, что-то я забыл модернизировать эти функции. Сейчас добавил вариант для современного АНК.