Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

VBS раскладка клавиатуры
Goto page Previous  1, 2, 3, 4, 5  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Программное обеспечение printer-friendly view
View previous topic :: View next topic  
Author Message
Flasher



Joined: 06 Nov 2009
Posts: 11758
Location: Москва

Post (Separately) Posted: Tue Apr 09, 2013 19:04    Post subject: Reply with quote

_D_V_S_
Мы уже это обсудили. Всё утыкается в три и более языка ввода.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4449
Location: Ростов-Дон

Post (Separately) Posted: Tue Apr 09, 2013 19:18    Post subject: Reply with quote

_D_V_S_,
Я же говорил, так нельзя. Но можно посмотреть в реестре, какая комбинация выбрана, и послать её. Здесь есть проблема, о которой написал Flasher - если языков ввода более 1.

Flasher,
Кстати, проблема решаема. В упомянутом мной ключе реестра указан порядок переключения раскладок (значение с именем 1 - раскладка по умолчанию, с именем 2 - следующая за ней, и т.д.). Можно найти номер нужной из них и послать комбинацию для переключения нужное число раз.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11758
Location: Москва

Post (Separately) Posted: Tue Apr 09, 2013 19:32    Post subject: Reply with quote

MVV
Да, так можно, только немоментальная скорость будет.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11758
Location: Москва

Post (Separately) Posted: Wed Apr 10, 2013 09:02    Post subject: Reply with quote

_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
Back to top
View user's profile Send private message
_D_V_S_



Joined: 31 Jan 2009
Posts: 33

Post (Separately) Posted: Wed Apr 10, 2013 09:23    Post subject: Reply with quote

Flasher wrote:
_D_V_S_, как-то так:

Спасибо!

Запустил попробовать.

программа1 = блокнот
программа2 = вордпад
Так?

На обоих русский язык....

А мне надо, чтобы на программа1 был русский, а на программа2 - английский. Автоматом выставлялся...
В этом и смысл VBS - одна программа требует ввода текста на русском языке, вторая - на английском.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11758
Location: Москва

Post (Separately) Posted: Wed Apr 10, 2013 09:45    Post subject: Reply with quote

_D_V_S_
Пардон, не тот символ поставил. Сейчас как надо.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
_D_V_S_



Joined: 31 Jan 2009
Posts: 33

Post (Separately) Posted: Wed Apr 10, 2013 10:51    Post subject: Reply with quote

Flasher wrote:
_D_V_S_
Пардон, не тот символ поставил. Сейчас как надо.

К сожалению - в обоих случаях опять русский.

Мало того, процессы wscript.exe остаются висеть после закрытия блокнота и вордпада и почему-то очень сильно подтормаживают систему. Пришлось убивать их руками.

Я как делаю:
1) Запускаю Ваш VBS и выбираю ДА. Открывается блокнот. Печатаю. Русская раскладка. Альт+F4 на блокноте.
2) Запускаю Ваш VBS и выбираю НЕТ. Открывается вордпад. Печатаю. Русская раскладка. Альт+F4 на вордпаде.

И после нескольких таких запусков - система дико тормозит - потому что процессы wscript.exe не завершаются и мало того - начинаются дикие тормоза из-за них. Пока их руками не убьёшь...
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11758
Location: Москва

Post (Separately) Posted: Wed Apr 10, 2013 15:43    Post subject: Reply with quote

_D_V_S_
Причины точной пока понять не могу. На XP всё работает как надо. На 7-ке процесс wscript действительно висит, но переключение происходит на нужный язык ввода. Проблема в 4 строке снизу. Вечером посмотрю.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
_D_V_S_



Joined: 31 Jan 2009
Posts: 33

Post (Separately) Posted: Wed Apr 10, 2013 16:02    Post subject: Reply with quote

Flasher wrote:
_D_V_S_
переключение происходит на нужный язык ввода.

У меня не происходит почему-то...
Панто-Свитчер может быть камнем преткновения?
Пробовал и без него (закрывал его) - всё одно только русский включается...
Да, у меня на Контрол+Шифт переключение языка. Может в этом дело?

ЗЫ Win7x64
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11758
Location: Москва

Post (Separately) Posted: Wed Apr 10, 2013 16:32    Post subject: Reply with quote

_D_V_S_ wrote:
Панто-Свитчер может быть камнем преткновения?
Он может сыграть роль только при наборе текста, первые символы всё равно должны соответствовать требованиям.
_D_V_S_ wrote:
Может в этом дело?
Так всё предусмотрено. И кол-во языков и клавиши. Я для чего комментарии-то в скрипте написал? К тому же я тестировал с установкой всех возможных комбинаций.

У кого ещё x64, протестируйте, пож-та!
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1011
Location: Донецк

Post (Separately) Posted: Wed Apr 10, 2013 18:56    Post subject: Reply with quote

Quote:
У кого ещё x64, протестируйте, пож-та!

Работает, но не переключение на определённый язык, а просто циклическое переключение раскладок при вызове блокнота.
У меня Win8x64, раскладки En-Ru-Uk.
При запуске блокнота - раскладка переключается на следующую, при запуске WordPadа - остаётся текущей. Например, если раскладка выставленная русская, то после запуска блокнота переключается на украинскую, после запуска ворда - так и остаётся русской.
После запуска WordPadа - wscript висит в памяти и действительно нехило нагружает процессор фактически на 100%
_________________
Total Commander DreamLair - мечтать всегда, мыслить тотально, быть командиром жизни
Win10 x64 HE SL Eng | TC DreamLair v2018 eternal pre-α (9.0a x32+x64) | AkelPad Lair v2018α (4.9.9 x86) | Slimjet Lair v2018α
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4449
Location: Ростов-Дон

Post (Separately) Posted: Wed Apr 10, 2013 19:33    Post subject: Reply with quote

LonerD,
Я писал выше, что способ применим вплоть до Win7 включительно, т.к. в Win8 новое приложение имеет не язык ввода по умолчанию, а язык ввода, выбранный в родительском приложении.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11758
Location: Москва

Post (Separately) Posted: Wed Apr 10, 2013 20:15    Post subject: Reply with quote

LonerD wrote:
После запуска WordPadа - wscript висит в памяти и действительно нехило нагружает процессор фактически на 100%
Ясно. Значит, в нём дело. Собственно, запрос конкретно на него не был, так что не так страшно. Пишите путь к нужному редактору.

MVV wrote:
а язык ввода, выбранный в родительском приложении
А где он там выбирается?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4449
Location: Ростов-Дон

Post (Separately) Posted: Wed Apr 10, 2013 21:38    Post subject: Reply with quote

Flasher,
Ну, например, язык ввода по умолчанию у тебя английский, ты запустил тотал и переключился в нём на русский. Теперь у программ, запускаемых из тотала (командная строка, например), начальный язык ввода будет русский.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11758
Location: Москва

Post (Separately) Posted: Wed Apr 10, 2013 23:36    Post subject: Reply with quote

MVV
Понял, тут только ActivateKeyboardLayout..

_D_V_S_, LonerD
Кстати, если поменять "%WinDir%\write.exe" на
"%PROGRAMFILES%\Windows NT\Accessories\wordpad.exe", то WScript висеть не будет.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Программное обеспечение All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5  Next
Page 3 of 5

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group