禁止某些应用程序切换语言

禁止某些应用程序切换语言

我遇到了意外切换输入语言的问题。为了避免这种情况,我尝试了很多不同的设置 - 更改热键,安装一些软件(Key Switcher、Keyboard Ninja、Punto Switcher)... 但都无济于事。

我习惯使用某个热键(Ctrl+Shift)。任何其他热键都会让我更加痛苦。我发现的软件没有避免意外切换的功能。

我想要的是找到一个可以将“美国英语”输入语言粘贴到我的“Visual Studio”的软件。并且 VS 中的任何 Ctrl+Shift 按下都应该不是导致语言切换。有什么想法吗?

答案1

如果你去的话,
Control Panel / Regional and Language Options / Languages / Details / Key Settings
你会发现你可以定义用于语言更改的热键。

您可以将其与宏语言结合起来,例如自动热键,定义一个宏来更改语言/键盘布局,然后启动 Visual Studio。但这不会阻止将来的语言更改。

如果您正在寻找比这更严格的程序,据我所知,没有这样的程序存在。由于 VS 是可扩展的,您可以自己编写一个插件来限制 VS 允许的语言数量。这个小插件将随 VS 一起加载,并将首选语言设置为仅一种(英语)。

如果您希望朝这个方向迈进,以下链接可能会有所帮助:

支持特定于应用程序的语言设置
教程:创建 Visual Studio 插件
创建 Visual Studio 加载项

答案2

只要您的默认语言已设置,并且您只需要更改一个程序的语言,我建议更改该程序 (VS) 的语言,然后进入语言选项并将热键更改为无,然后转到键序列并取消选中该框(区域和语言选项 -> 语言选项卡 -> 详细信息 -> 键设置 -> 更改键序列)。现在快捷方式将关闭,并且由于 Windows 会记住每个应用程序的输入,因此输入将自动切换为 VS,但其他所有内容仍为西班牙语。

答案3

以下内容适用于 WinXP 32 位上的 Visual Studio .NET 2003。YMMV。

  • 文件->新项目
  • 选择项目类型:其他项目\可扩展性项目
  • 选择模板:Visual Studio .NET Add-in。单击“确定”。
  • 单击下一步,选择使用 Visual C++/ATL 创建加载项,单击下一步。
  • 选择所有可能的应用程序主机,单击下一步。
  • (可选)输入名称和描述,单击下一步。
  • 选择选项。不要勾选“是,创建工具菜单项”。点击下一步。
  • 不要选择创建“关于”框。单击“下一步”。
  • 单击“完成”。
  • 切换到源文件选项卡Connect.cpp
  • 在顶部,在#includes 之后添加行

    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 中更改语言或键盘布局。如果您尝试更改,语言栏会有点混乱,但不会中断。

相关内容