4

У меня проблема случайного переключения языка ввода. Я пробовал много разных настроек, чтобы не делать этого - изменить горячую клавишу, установить программное обеспечение (Key Switcher, Keyboard Ninja, Punto Switcher)... Но ничего не помогло.

Я привык к определенной горячей клавише (Ctrl+Shift). Любая другая горячая клавиша заставляет меня еще больше страдать. Программное обеспечение, которое я нашел, не имеет функции, позволяющей избежать случайного переключения.

То, что я хочу, - это найти часть программного обеспечения, которая может привязать язык ввода "английский США" к моей "Visual Studio". И любые нажатия Ctrl+Shift внутри VS не должны приводить к переключению языка. Есть идеи?

3 ответа3

1

Если вы идете в
Control Panel / Regional and Language Options / Languages / Details / Key Settings
вы обнаружите, что вы можете определить горячие клавиши для изменения языка.

Вы можете связать это с языком макросов, таким как AutoHotkey, чтобы определить макрос, который изменяет язык / раскладку клавиатуры, а затем запускает Visual Studio. Это, однако, не будет блокировать будущие изменения языка.

Если вы ищете что-то более строгое, насколько я знаю, такой программы не существует. Поскольку VS расширяемый, вы можете запрограммировать себя надстройку, которая ограничит количество языков, разрешенных для VS. Эта небольшая надстройка будет загружаться с VS и устанавливать для предпочитаемых языков только один (английский).

Если вы хотите запустить себя в этом направлении, для начала могут быть полезны следующие ссылки:

Поддержка настроек языка для конкретного приложения
Учебник. Создание надстроек Visual Studio
Создание надстроек Visual Studio

0

Следующее работает в Visual Studio .NET 2003 на 32-битной WinXP. YMMV.

  • Файл -> Новый проект
  • выберите тип проекта: другие проекты \ расширяемые проекты
  • выберите шаблон: надстройка Visual Studio .NET. Нажмите ОК.
  • нажмите Далее, выберите Создать надстройку с использованием Visual C++ / ATL, нажмите Далее.
  • выберите все возможные хосты приложения, нажмите Next.
  • (опционально) введите имя и описание, нажмите Далее.
  • выберите Параметры. Не проверяйте «да, создайте пункт меню Инструменты». Нажмите кнопку "Далее.
  • не выбирайте создавать окно About. Нажмите кнопку "Далее.
  • нажмите Готово.
  • перейти на вкладку с исходным файлом Connect.cpp
  • вверху, после #include s добавить строку

    HHOOK myhook;
    
  • к методу CConnect::OnConnection добавьте строку

    myhook=SetWindowsHookEx(WH_GETMESSAGE, &myGetMsgProc, _AtlModule.GetResourceInstance(), GetCurrentThreadId());
    
  • к методу CConnect::OnDisconnection добавьте строку

    UnhookWindowsHookEx(myhook);
    
  • выше OnConnection() добавить функцию

    LRESULT CALLBACK myGetMsgProc(int code, WPARAM wParam, LPARAM lParam)
    {
        MSG *msg = (MSG*)lParam;
        if (code>=0 && msg->message==WM_INPUTLANGCHANGEREQUEST)
            msg->message = WM_NULL;
        return CallNextHookEx(myhook, code, wParam, lParam);
    }
    
  • построить решение.
  • выберите меню Инструменты -> Диспетчер надстроек ...
  • установите флажок для вашей новой надстройки. Не проверяйте "Запуск" на данный момент, если что-то пошло не так - вы не хотите, чтобы Visual Studio аварийно завершала работу при каждом запуске!
  • нажмите ОК

Теперь невозможно изменить язык или раскладку клавиатуры в Visual Studio. Языковая панель немного запутывается, если вы пытаетесь, но не ломается.

0

Пока ваш язык по умолчанию уже установлен, и вам нужно изменить язык только для одной программы, я бы предложил изменить язык для этой программы (VS), а затем перейти к настройкам языка и изменить горячую клавишу на none, а затем перейти к последовательность клавиш и снимите этот флажок (Региональные и языковые параметры -> вкладка Языки -> подробности -> Настройки клавиш -> Изменить последовательность клавиш). Теперь ярлыки будут отключены, и, поскольку Windows запоминает входные данные для каждого приложения, вход автоматически переключается на VS, но остается испанским для всего остального.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .