1 (изменено: dv20200228, 2020-02-29 20:26:03)

Тема: AHK: Переключения языка ввода в Windows с помощью скрипта

Приведите пример написания скрипта, активирующего какой-либо установленный язык ввода; т.е. скрипт, содержащий команду запуска сочетания клавиш, которая задана для данного языка в настройках языковой панели.
Система: Windows 7, x64.

P.S. На компьютере установлено несколько языков ввода. Изначальной задачей было активировать какой-либо установленный язык ввода при двойном клике по ярлыку; второй язык - по второму ярлыку; третий - по третьему, и т. д.
Разумеется, нужный язык ввода запускается с помощью сочетания клавиш, которая задана для данного языка в настройках языковой панели, например Ctrl+1.
Но нужен более краткий способ: запустить язык ввода с ярлыка, который ссылается на скрипт, содержащий команду запуска сочетания клавиш Ctrl+1.

Дмитрий

2

Re: AHK: Переключения языка ввода в Windows с помощью скрипта

Найти на рабочем столе нужный ярлычок, сделать по нему двойной щелчок ЛКМ - получается быстрее, чем нажать на клавиатуре Ctrl+1?

3 (изменено: dv20200228, 2020-02-28 20:59:20)

Re: AHK: Переключения языка ввода в Windows с помощью скрипта

ypppu, да, быстрее, если ярлык расположен на панели быстрого запуска (доп. установленная программа), и нагляднее, если в качестве значка для ярлыка установлен соответствующий языку ввода флаг. Заморочно, конечно, но удобно:)))
Подскажите скрипт, плиз...

Post's attachments

01.jpg 50.17 kb, 2 downloads since 2020-02-28 

You don't have the permssions to download the attachments of this post.
Дмитрий

4

Re: AHK: Переключения языка ввода в Windows с помощью скрипта

Первый скрипт:

Send, ^1

Второй скрипт:

Send, ^2

И так далее.

5

Re: AHK: Переключения языка ввода в Windows с помощью скрипта

ypppu, увы, синтаксическая ошибка, код: 800A03EA, ошибка компиляции Microsoft VBScript. Создавал в блокноте, с сохранением "...vbs". Где-то ошибся?

Дмитрий

6

Re: AHK: Переключения языка ввода в Windows с помощью скрипта

Какое vbs? Вы создали тему в разделе AutoHotkey.

7

Re: AHK: Переключения языка ввода в Windows с помощью скрипта

ypppu, спасибо, разобрался. Работает!

Дмитрий

8 (изменено: dv20200228, 2020-02-29 20:33:34)

Re: AHK: Переключения языка ввода в Windows с помощью скрипта

Порядок действий. Например, язык ввода: английский.

Назначить сочетание клавиш для данного языка ввода в настройках языковой панели: Пуск > Панель управления > Язык и региональные стандарты > Языки и клавиатура > Изменить клавиатуру > Переключение клавиатуры > Сочетания клавиш для языков ввода: выбрать Английский > Сменить сочетание клавиш > Использовать сочетание клавиш: Ctrl+1.

Создать файл .txt (документ).
Открыть файл > Ввести: Send, ^1 > Сохранить файл путем "Сохранить как", дать название файлу, в кавычках, с расширением .ahk: "en.ahk".

Запустить файл Ahk2Exe.exe (программа; находится в папке программы AutoHotkey) > Источник: указать местоположение файла en.ahk (скрипт); Назначение: указать местоположение будущего файла, дать название файлу: en > Конвертировать.
Переместить файл en.exe (исполнитель скрипта) в папку, на которую в будущем будет ссылаться файл .lnk из панели быстрого запуска.

Создать файл .lnk (ярлык) для файла en.exe > Дать название файлу: en > Свойства > Сменить значок: выбрать файл .ico (значок; расположен в доп. установленных файлах .ico), отображающий флаг, соответствующий языку ввода > Применить.
Переместить файл на панель быстрого запуска (доп. установленная программа).
Запустить файл en c панели быстрого запуска. Активируется язык ввода: английский.

Дмитрий

9 (изменено: EV, 2020-05-11 06:54:46)

Re: AHK: Переключения языка ввода в Windows с помощью скрипта

Locale_En := 0x4090409  ; Английский (американский).
  Locale_Ru := 0x4190419  ; Русский.

10

Re: AHK: Переключения языка ввода в Windows с помощью скрипта

PostMessage, 0x50, 0, 0x4190419,, A ru
PostMessage, 0x50, 0, 0x4090409,, A en

11

Re: AHK: Переключения языка ввода в Windows с помощью скрипта

PostMessage, 0x50, 0, 0x4190419,, A ru

Что за название окна странное?

12 (изменено: EV, 2020-05-11 16:38:39)

Re: AHK: Переключения языка ввода в Windows с помощью скрипта

PostMessage, 0x50, 0, 0x4190419,, A ;ru
PostMessage, 0x50, 0, 0x4090409,, A ;en

13 (изменено: EV, 2020-05-11 18:20:11)

Re: AHK: Переключения языка ввода в Windows с помощью скрипта

Или переключать по кнопке:

LOCALE_EN := 0x4090409
LOCALE_RU := 0x4190419
F3::
	if WinActive("ahk_class ConsoleWindowClass") {
		PostMessage, 0x50, 0x02, 0,, A
	}
	else {
		SetFormat, Integer, H
		WinGet, WinID,, A
		ThreadID := DllCall("GetWindowThreadProcessId", "UInt", WinID, "UInt", 0)
		InputLocaleID := DllCall("GetKeyboardLayout", "UInt", ThreadID, "UInt")
		PostMessage, 0x50, 0, % ((InputLocaleID == LOCALE_EN) ? LOCALE_RU : LOCALE_EN),, A
		SetFormat, Integer, D
	}
	return

14 (изменено: teadrinker, 2020-05-11 20:57:36)

Re: AHK: Переключения языка ввода в Windows с помощью скрипта

EV, у вас какой-то совсем устаревший вариант. WinID — это не UInt, это Ptr. И зачем там SetFormat? Желательно разобраться в скрипте перед тем, как постить.

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

15 (изменено: EV, 2020-05-11 21:46:43)

Re: AHK: Переключения языка ввода в Windows с помощью скрипта

Работает? И ладно. Код не устаревшего варианта?

16

Re: AHK: Переключения языка ввода в Windows с помощью скрипта

Нет, не всегда работает. Попробуйте на таком окне:

Gui, Show, w300 h300
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg