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 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
_D_V_S_



Joined: 31 Jan 2009
Posts: 33

Post (Separately) Posted: Thu Apr 04, 2013 23:20    Post subject: VBS раскладка клавиатуры Reply with quote

Доброе время суток!

Подскажите, как реализовать в VBS переключение языковой раскладки?

То есть у меня рабочий VBS с выбором запуска двух программ. Для одной нужно писать по-английски, для другой - по-русски. Надо вставить код переключения раскладки языка (или как это правильно называется - ХЗ...)

Думал как корректно это организовать.

1) считываем с реестра необходимые ветки. -> сохраняем их.
2) заносим в реестр такую конструкцию:
- смена раскладки по Контрол+Шифт
- назначение русской раскладки на сочетание клавиш 1
- назначение английской раскладки на сочетание клавиш 2
3) WshShell.SendKeys и выполнение необходимых действий скрипта
4) удаление из реестра внесённых изменений и занесение в реестр сохранённых веток

Вот без ребута винды, "на лету", смена сочетаний клавиш и остальное с реестром - будет работать?

Помогите плиз со скриптом - я в VBS совсем начинающий!
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Fri Apr 05, 2013 16:49    Post subject: Reply with quote

_D_V_S_
С подключение сторонних компонент и API сделать, конечно, реально.
Можно также попробовать подключить js через htmlfile или ScriptControl.
Простые игры с реестром ничего не дадут.
Но лучше отказаться от метода и использовать копипаст либо сторонние утилиты типа nircmd/TCFS2.
_________________
Автору сборки 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: Sat Apr 06, 2013 07:48    Post subject: Reply with quote

Flasher wrote:
_D_V_S_
Но лучше отказаться от метода и использовать копипаст либо сторонние утилиты типа nircmd/TCFS2.

К сожалению надо именно без сторонних компонент.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Apr 06, 2013 14:26    Post subject: Reply with quote

_D_V_S_ wrote:
К сожалению надо именно без сторонних компонент.
Копипаст без сторонних. Утилиты - это не компоненты. И надо - почему?
_________________
Автору сборки 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: Sat Apr 06, 2013 15:41    Post subject: Reply with quote

Я так понимаю, что средствами чистого VBS это невозможно?
Про совместное использование VBS и утилит я-бы тут даже тему не стал создавать Smile
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Apr 06, 2013 16:03    Post subject: Reply with quote

Смотря что понимать под "чистым". Я не пойму, зачем вообще набивать посимвольно? Это же долго.
Это нужно для работы на любом Windows/любой машине или достаточно только на своей?
_________________
Автору сборки 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: Sun Apr 07, 2013 11:27    Post subject: Reply with quote

На любой, делаю не только для себя.

А метод, описанный мной в титульном сообщении, работать не будет? Почему если в двух словах?
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sun Apr 07, 2013 14:36    Post subject: Reply with quote

Я так ответ на свой первый вопрос не увидел.

Внесение в реестр, может, и будет работать, но я не уверен, что ветки создаются в кусте HKCU\Control Panel\Input Method\Hot Keys\ в одной и той же последовательности при присвоении порядкового номера 000010х.
Будет зависеть от наличия существующих веток, кол-ва языков раскладки и последовательности присвоения. Не факт, что срабатывать хоткей будет с первого раза, поскольку информация о клавишах может считываться из ОЗУ или файла подкачки. Надо тестировать.
Кстати, смена раскладки по Ctrl+Shift ничего не даст, это лишнее.

Но я бы делал через DynamicWrapper без регистрации..
Да нет, я вообще бы SendKeys для буквенных клавиш не использовал..
_________________
Автору сборки 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: Mon Apr 08, 2013 01:51    Post subject: Reply with quote

Flasher wrote:
Я так ответ на свой первый вопрос не увидел.
использовал..

На какой? "Почему надо без сторонних утилит"?

Ну так не только для себя-ж хочется сделать Smile
Один скрипт VBS с открытым кодом - это одно.
А скрипт + экзешник это совсем другое...

Да, может я не совсем понятно описал то, что мне надо.

Нужно-то просто включение нужной раскладки языка при выборе пункта мессадж-бокса.
То есть выбрал пункт первый и включается английский язык, выбрал пункт второй - включается русский язык.
И тут встаёт проверка на текущую раскладку.

Вот и ломаю голову сижу, как это сделать...
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Apr 08, 2013 02:02    Post subject: Reply with quote

_D_V_S_ wrote:
На какой?
>
Flasher wrote:
зачем вообще набивать посимвольно?

_D_V_S_ wrote:
А скрипт + экзешник это совсем другое...
Другое - это какое? Smile
_D_V_S_ wrote:
То есть выбрал пункт первый и включается английский язык, выбрал пункт второй - включается русский язык.
И что? Каждый раз дёргать реестр, чтобы что-то набивать в нужном поле? ОВНС.

_D_V_S_ wrote:
И тут встаёт проверка на текущую раскладку.
Зачем проверка? Описывалась принудительная смена.

_D_V_S_ wrote:
Вот и ломаю голову сижу, как это сделать
Стандартными методами никак. Нестандартными, например, так:
Code:
With CreateObject("DynamicWrapper")
  .Register "USER32", "ActivateKeyboardLayout", "i=ll", "f=s", "r=l"
  .Register "USER32", "LoadKeyboardLayout", "i=sl", "f=s", "r=l"
  .ActivateKeyboardLayout .LoadKeyboardLayout("00000419", 0), 0
End With

_________________
Автору сборки 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: Mon Apr 08, 2013 03:55    Post subject: Reply with quote

Flasher wrote:
зачем вообще набивать посимвольно?

Да нет )) Просто переключить раскладку языка...
_D_V_S_ wrote:
А скрипт + экзешник это совсем другое...
Flasher wrote:
Другое - это какое? Smile

А объяснишь людям? )) Они видят в каждом .exe вирусную угрозу и кражу паролей)))
_D_V_S_ wrote:
То есть выбрал пункт первый и включается английский язык, выбрал пункт второй - включается русский язык.
Flasher wrote:
И что? Каждый раз дёргать реестр, чтобы что-то набивать в нужном поле?

Один раз... При выборе пункта мессадж-бокса.

А DynamicWrapper - это dll-ку надо какую регистрить стороннюю?
Неужели стандартным VBS никак нельзя поменять язык ввода? Задача вроде тривиальная...
Back to top
View user's profile Send private message
LonerD



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

Post (Separately) Posted: Mon Apr 08, 2013 05:38    Post subject: Reply with quote

Quote:
Они видят в каждом .exe вирусную угрозу и кражу паролей

При таком уровне паранойи наверняка и выполнение скриптов отключено в системе.

Quote:
Один скрипт VBS с открытым кодом - это одно.
А скрипт + экзешник это совсем другое...

Как вариант - подключить другой скриптовый язык. Скрипт с открытым исходным кодом+исполняемый ехе-шник AutoIt3, на нём это проще организовать.
_________________
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
_D_V_S_



Joined: 31 Jan 2009
Posts: 33

Post (Separately) Posted: Mon Apr 08, 2013 07:32    Post subject: Reply with quote

Нет, все варианты с экзешниками в любом виде не рассматриваются.
Только стандартные виндовозные скрипты.
Я-б тогда тему не создавал тут, а всё сам-бы давно сделал.

А уровень паранойи людей, которые называют ENTER интером - заоблачен. И ничем не прошибаем. Ну не мне вам рассказывать Smile


LonerD wrote:
При таком уровне паранойи наверняка и выполнение скриптов отключено в системе.

Чтобы отключить и включить что-то в системе, нужно обладать несколько другими знаниями - при которых уровень паранойи как-бы снижается в геометрической прогрессии Wink
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Apr 08, 2013 14:25    Post subject: Reply with quote

_D_V_S_ wrote:
Да нет )) Просто переключить раскладку языка.
Понял. В этом случае VBS точно не подойдёт в исходном виде. Тут желателен AHK с отслеживанием контролов. В крайнем случае можно скомпилить, чтобы сторонних exe не было.
_D_V_S_ wrote:
А объяснишь людям? )) Они видят в каждом .exe вирусную угрозу и кражу паролей)
Я то объясню, если потребуется. Но пока что-то логики не улавливаю. В каждом exe видят, а в каждом скрипте не видят. Question
_D_V_S_ wrote:
Один раз... При выборе пункта мессадж-бокса.
МэссейджБокс не имеет полей. Какой смысл в таком окне менять раскладку? О каких пунктах речь?
_D_V_S_ wrote:
А уровень паранойи людей, которые называют ENTER интером - заоблачен.
Хм. Не ваш клиент? Wink
_________________
Автору сборки 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: Mon Apr 08, 2013 17:13    Post subject: Reply with quote

Flasher wrote:

_D_V_S_ wrote:
А объяснишь людям? )) Они видят в каждом .exe вирусную угрозу и кражу паролей)
Я то объясню, если потребуется. Но пока что-то логики не улавливаю. В каждом exe видят, а в каждом скрипте не видят. Question
_D_V_S_ wrote:
Один раз... При выборе пункта мессадж-бокса.
МэссейджБокс не имеет полей. Какой смысл в таком окне менять раскладку? О каких пунктах речь?
_D_V_S_ wrote:
А уровень паранойи людей, которые называют ENTER интером - заоблачен.
Хм. Не ваш клиент? Wink


1) Скрипт с непонятными для них кракозябрами в большинстве не вызывает такого отторжения, нежели исполняемый файл - который в их представлении напичкан червями, вирусами и другими бэк-доорами с кей-логгерами Smile Хоть они слов-то таких и в страшном сне не слышали ))))

2) Мессадж бокс имеет кнопки: Да Нет и Отмена.
Да - включается русский язык и запускается программа1, в которой в текстовые поля юзер набивает текст на русском языке
Нет - включается общепринятый буржуйский язык и запускается программа2, в которой в текстовые поля юзер набивает текст на аглицкой мове
Отмена - выполняются некоторые действия, к сабжу не имеющие отношения.


3) Гляну тред попозже Smile
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 1, 2, 3, 4, 5  Next
Page 1 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