Flasher
|
Posted: Wed Apr 10, 2013 09:02 Post subject: |
|
|
_D_V_S_, как-то так:
Code: | ' Запуск редакторов с переключением языка ввода на нужный
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 |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Wed Apr 10, 2013 10:21; edited 1 time in total |
|