1

Тема: Переключение раскладки клавиатура на английскую по умолчанию 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

2 (изменено: Flasher, 2015-09-03 19:20:24)

Re: Переключение раскладки клавиатура на английскую по умолчанию VBS

Такие вещи нужно на AHK и т.п. делать, работать с контролами. Ну, а тут, если не вникать в суть действий в антивируснике, в первый скрипт вставляем

Run "%ProgramFiles%\McAfee\VirusScan Enterprise\mcconsol.exe", ENG, HK
WScript.Sleep 500
' Type Stop McAfee
With CreateObject("WScript.Shell")
  .SendKeys "%(D){DOWN 2}{ENTER}"
  WScript.Sleep 1000
  .SendKeys "(password){ENTER}"
  WScript.Sleep 500
  .SendKeys "{DOWN}{F4}{DOWN 2}{F4}{UP 3}{F4}"
End With

вместо

' Настраиваем кнопки диалога сообщения: 
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

3

Re: Переключение раскладки клавиатура на английскую по умолчанию VBS

тогда вопрос, а на AHK если сделаю, он будет работать без установленного AHK?, мне этот скрипт запускать на парке машин, около 50шт

4

Re: Переключение раскладки клавиатура на английскую по умолчанию VBS

shade45
1) Проассоциировать с интерпретатором, который, например, на сервере выложен и к нему открыт доступ.
2) Добавить ярлык с путём к интерпретатору и путём к скрипту.
3) Скомпилировать скрипт в exe.

ЗЫ: Советую не пренебрегать правилами русского языка на подфоруме AHK, чревато баном.