Тема: Переключение раскладки клавиатура на английскую по умолчанию VBS
Привет всем, есть вот такой скрипт, он переключает клавиатуру на нужную раскладку и запускает приложение для выполнения SendKeys. Работает на блокноте. И есть скрипт для антивирусника, он тоже работает, но только если английская раскладка задана по умолчанию. Как бы их объединить?
' Запуск редакторов с переключением языка ввода на нужный
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
Скрипт для антивируса
' Open mcconsol
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
Run """"&"%ProgramFiles%\McAfee\VirusScan Enterprise\mcconsol.exe"&"""", 1
' Give time to load НУЖНО ПЕРЕКЛЮЧИТь на англ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
WScript.Sleep 1000
'WshShell.Run """"&"%ProgramFiles%\McAfee\VirusScan Enterprise\mcconsol.exe"&"""",1
WScript.Sleep 500
' Type Stop McAfee
WshShell.SendKeys "%(D)"
WshShell.SendKeys "{DOWN 2}"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 500
WScript.Sleep 500
WshShell.SendKeys "(password)"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 500
WshShell.SendKeys "{DOWN}"
WshShell.SendKeys "{F4}"
WshShell.SendKeys "{DOWN 2}"
WshShell.SendKeys "{F4}"
WshShell.SendKeys "{UP 3}"
WshShell.SendKeys "{F4}"
WScript.Sleep 500