' Запуск редакторов с переключением языка ввода на нужный
Set Dict = CreateObject("Scripting.Dictionary")
Dim WSH : Set WSH = CreateObject("WScript.Shell")
' Читаем значение ключа смены языка ввода:
Language = WSH.RegRead("HKCU\Keyboard Layout\Toggle\Hotkey")
' Проходимся по списку языков ввода, запоминая значения в коллекции:
On Error Resume Next
For i = 1 to 10
Key = WSH.RegRead("HKCU\Keyboard Layout\Preload\" & i)
If Err.Number > 0 Then Exit For
Dict.Add Key, i
Next : On Error GoTo 0
' Устанавливаем, под какими номерами идут требуемые языки:
ENG = Dict.Item("00000409") : RUS = Dict.Item("00000419")
' Устанавливаем вызываемую впоследствии комбинацию клавиш:
Select Case Language
Case 1 HK = "%+" : Case 2 HK = "^+" : Case 4 HK = "`"
End Select
' Настраиваем кнопки диалога сообщения:
Msg = MsgBox("Нажмите Да для перехода в блокнот," & vbnewLine & _
"Нет - для перехода в WordPad" & vbnewLine & "Отмена - для других действий", 4099)
If Msg = 6 Then
Run "notepad", RUS, HK
ElseIf Msg = 7 Then Run "%WinDir%\write.exe", ENG, HK
ElseIf Msg = 2 Then WScript.Echo "Другие действия!"
End If
' Выгружаем скрипт:
Set Dict = Nothing : Set WSH = Nothing : WScript.Quit
' Процедура вызова программ
Sub Run(Program, Lang, HKey)
' Вычисляем требуемое кол-во нажатий хоткея переключения раскладки:
If Lang = 1 Then Count = 0 Else Count = Lang - 1
' Запускаем редактор и активируем его окно:
Set ApExec = WSH.Exec(Program) : PID = ApExec.ProcessID
Do : A = WSH.AppActivate(PID) : Loop Until A : WScript.Sleep 40
' Нажимаем хоткей смены языка нужное число раз:
If Count Then : For n = 1 To Count : WSH.SendKeys HKey : Next : End If
End Sub |