C++适用于所有输入法的解决方案(切换输入法)

文章目录

  • 1、方法 1:模拟按键切换到英文模式
  • 2、🚀 方法 2:直接切换到美式键盘(适用于所有输入法)
  • 3、🚀 方法 3:遍历所有输入法,选择第一个英文输入法
  • 4、🔥 结论
  • 5、🚀推荐

1、方法 1:模拟按键切换到英文模式

🚀 方法 1:模拟按键切换到英文模式
对于 搜狗拼音、百度输入法、QQ输入法,通常可以使用快捷键 Shift 或 Ctrl+Space 切换到英文模式。
你可以模拟按键来强制切换到英文模式。

🔹 代码:模拟 Shift 键强制输入法进入英文模式:

#include <Windows.h>
#include <iostream>void simulateShiftKey() {// 获取前台窗口的句柄HWND hwnd = GetForegroundWindow();if (!hwnd) return;// 模拟按下 Shift 键(切换到英文模式)keybd_event(VK_SHIFT, 0, 0, 0);   // 按下 ShiftSleep(50); // 短暂延迟keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0); // 释放 Shift
}int main() {simulateShiftKey();return 0;
}

✅ 优点

  • 适用于所有输入法(包括搜狗、百度、QQ输入法)。
  • 不需要修改注册表或 Windows 设置。
  • 运行后,前台窗口的输入法立即切换到英文模式。

❌ 缺点

  • 依赖输入法的快捷键设置,如果用户修改了快捷键,可能失效。

2、🚀 方法 2:直接切换到美式键盘(适用于所有输入法)

你可以直接强制切换到美式键盘(即 US Keyboard),这样无论用户使用的是搜狗拼音、百度输入法、微软拼音还是其他输入法,都会直接切换到纯英文键盘。

🔹 代码:强制切换到美式键盘:

#include <Windows.h>
#include <iostream>void switchToEnglishKeyboard() {HWND hwnd = GetForegroundWindow();HKL englishHKL = LoadKeyboardLayout(L"00000409", KLF_ACTIVATE); // 00000409 = 美式英文键盘if (englishHKL) {PostMessage(hwnd, WM_INPUTLANGCHANGEREQUEST, 0, (LPARAM)englishHKL);std::cout << "Switched to US Keyboard (English)." << std::endl;} else {std::cout << "Failed to load English keyboard layout." << std::endl;}
}int main() {switchToEnglishKeyboard();return 0;
}

✅ 优点

  • 适用于所有输入法,因为它会直接切换到美式键盘。
  • 不会影响中文输入法,只是暂时切换,用户可以随时切回来。

❌ 缺点

  • 如果用户没有安装美式键盘(00000409),这个方法会失败。
  • 直接切换键盘布局,可能会影响某些用户习惯。

3、🚀 方法 3:遍历所有输入法,选择第一个英文输入法

如果你想要遍历所有已安装的输入法,找到可用的英文输入法(不管是微软的,还是用户自己装的),可以用下面的代码:

🔹 代码:自动找到英文输入法:

#include <Windows.h>
#include <iostream>void switchToAnyEnglishInputMethod() {HWND hwnd = GetForegroundWindow();const int maxLayouts = 64;HKL keyboardLayouts[maxLayouts] = {0};int numLayouts = GetKeyboardLayoutList(maxLayouts, keyboardLayouts);HKL targetHKL = NULL;for (int i = 0; i < numLayouts; i++) {LANGID langID = LOWORD(keyboardLayouts[i]);// 查找英文输入法(美式 0x0409、英国 0x0809、澳大利亚 0x0C09)if (langID == 0x0409 || langID == 0x0809 || langID == 0x0C09) {targetHKL = keyboardLayouts[i];break;}}if (targetHKL) {PostMessage(hwnd, WM_INPUTLANGCHANGEREQUEST, 0, (LPARAM)targetHKL);std::cout << "Switched to an available English input method." << std::endl;} else {std::cout << "No English input method found." << std::endl;}
}int main() {switchToAnyEnglishInputMethod();return 0;
}

✅ 优点

  • 自动选择一个已安装的英文输入法(不管是美式、英式还是其他变种)。
  • 适用于所有输入法,不会强制切换到微软输入法。

❌ 缺点

  • 依赖 Windows 识别的 HKL,如果输入法没有正确注册,它可能不会找到英文输入法。

4、🔥 结论

方法	适用范围	适用输入法	备注
方法 1 模拟 Shift 键	只影响当前窗口	搜狗、百度、QQ、微软	快捷键必须正确
方法 2 直接切换到美式键盘	适用于所有窗口	所有输入法	需要 00000409 安装
方法 3 遍历输入法找英文	适用于所有窗口	所有输入法	仅在 HKL 注册正确时有效

5、🚀推荐

✅ 如果你只想在当前窗口切换到英文模式(不改输入法) → 用 方法 1(模拟 Shift)
✅ 如果你想直接换到美式键盘(不会用中文) → 用 方法 2(切换到 00000409)
✅ 如果你想找到一个合适的英文输入法 → 用 方法 3(遍历 HKL 找英文)

你可以先试试 方法 1,如果不行,再试 方法 2 或 方法 3!🚀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/69498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI大语言模型

一、AIGC和生成式AI的概念 1-1、AIGC Al Generated Content&#xff1a;AI生成内容 1-2、生成式AI&#xff1a;generative ai AIGC是生成式 AI 技术在内容创作领域的具体应用成果。 目前有许多知名的生成式 AI&#xff1a; 文本生成领域 OpenAI GPT 系列百度文心一言阿里通…

使用Qt+opencv实现游戏辅助点击工具-以阴阳师为例

注&#xff1a;本文章技术交流使用&#xff0c;不侵犯任何著作权。 一. 阴阳师辅助软件需要实现哪些功能? 1.首先&#xff0c;对于肝绘卷拿角色而言&#xff0c;需要打困难28副本和结界突破循环刷绘卷碎片。这一功能让你每月免费悠闲地拿到最新角色&#xff0c;即使你是较新…

Visual Studio Code中文出现黄色框子的解决办法

Visual Studio Code中文出现黄色框子的解决办法 一、vsCode中文出现黄色框子-如图二、解决办法 一、vsCode中文出现黄色框子-如图 二、解决办法 点击 “文件”点击 “首选项”点击 “设置” 搜索框直接搜索unicode选择“文本编辑器”&#xff0c;往下滑动&#xff0c;找到“Un…

Hive之[Hive]详细安装步骤

hive 是依赖hadoop中的hdfs作为存储&#xff0c;依赖mysql管理元数据 master节点 集群环境 master 192.168.204.130 slave1 192.168.204.131 slave2 192.168.204.132组件下载地址 https://archive.apache.org/dist/hive/hive-1.2.2/ 或 链接: https://pan.baidu.com/s/1…

《艾尔登法环》运行时弹窗“由于找不到vcruntime140.dll,无法继续执行代码”要怎么解决?

宝子们&#xff0c;是不是在玩《艾尔登法环》的时候&#xff0c;突然弹出一个提示&#xff1a;“由于找不到vcruntime140.dll&#xff0c;无法继续执行代码”&#xff1f;这可真是让人着急上火&#xff01;别慌&#xff0c;今天就给大家唠唠这个文件为啥会丢&#xff0c;还有怎…

LabVIEW商业软件开发

在商业软件开发和仪器自动测试领域&#xff0c;LabVIEW以其图形化编程方式、高效的数据采集能力和强大的硬件集成优势&#xff0c;成为众多工程项目的核心开发工具。然而&#xff0c;商业软件的开发远不止编写代码和实现功能那么简单&#xff0c;尤其是在仪器自动测试领域&…

第40天:Web开发-JS应用VueJS框架Vite构建启动打包渲染XSS源码泄露代码审计

#知识点 1、安全开发-VueJS-搭建启动&打包安全 2、安全开发-VueJS-源码泄漏&代码审计 一、Vue搭建创建项目启动项目 1、Vue 框架搭建->基于nodejs搭建&#xff0c;安装nodejs即可 参考&#xff1a;https://cn.vuejs.org/ 已安装18.3或更高版本的Node.js 2、Vue 创建…

PL/SQL块结构

目录 一、声明部分&#xff08;declare&#xff09; 二、执行部分&#xff08;begin end&#xff09; 三、异常处理部分 &#xff08;Exception end&#xff09; 四、代码示例 PL/SQL&#xff08;Procedural Language/Structured Query Language&#xff09;是Oracle数据库…

6、使用one-api管理统一管理大模型,并开始使用本地大模型

文章目录 本节内容介绍集中接入&#xff1a;将大模型统一管理起来当使用了大模型代理大模型代理示例 开源模型&#xff1a;如何使用Hugging Face上的模型modelscope使用 pipeline 调用模型用底层实现调用模型流式输出 如何在项目中使用开源模型使用 LangChain使用集中接入开始使…

Winform开发框架(蝇量级) MiniFramework V2.1

C/S框架网与2022年发布的一款蝇量级开发框架&#xff0c;适用于开发Windows桌面软件、数据管理应用系统、软件工具等轻量级软件&#xff0c;如&#xff1a;PLC上位机软件、数据采集与分析软件、或企业管理软件&#xff0c;进销存等。适合个人开发者快速搭建软件项目。 适用开发…

2.10学习总结

Dijkstra算法求取最短路径 注&#xff1a;迪杰斯特拉算法并不能直接生成最短路径&#xff0c;但是算法将最短路径信息保存在dist数组和path数组中。 #include <stdio.h> #include <stdlib.h> #define VertexMax 20 //最大顶点数为20 #define MaxInt 32767 //表示…

【漫话机器学习系列】087.常见的神经网络最优化算法(Common Optimizers Of Neural Nets)

常见的神经网络优化算法 1. 引言 在深度学习中&#xff0c;优化算法&#xff08;Optimizers&#xff09;用于更新神经网络的权重&#xff0c;以最小化损失函数&#xff08;Loss Function&#xff09;。一个高效的优化算法可以加速训练过程&#xff0c;并提高模型的性能和稳定…

深度学习 视频推荐

以下为你呈现一个基于深度学习实现视频推荐的简化代码示例。这里我们使用的是协同过滤思想结合神经网络的方式,借助 TensorFlow 和 Keras 库来构建模型。在这个示例中,假设已有用户对视频的评分数据,目标是预测用户对未评分视频的评分,进而为用户推荐可能感兴趣的视频。 1…

蓝桥杯算法日记|贪心、双指针

3412 545 2928 2128 贪心学习总结&#xff1a; 1、一般经常用到sort&#xff08;a&#xff0c;an&#xff09;&#xff1b;【a[n]】排序&#xff0c;可以给整数排&#xff0c;也可以给字符串按照字典序排序 2、每次选最优 双指针 有序数组、字符串、二分查找、数字之和、反转字…

傅里叶公式推导(一)

文章目录 三角函数系正交证明图观法数学证明法计算当 n不等于m当 n等于m&#xff08;重点&#xff09; 其它同理 首先要了解的一点基础知识&#xff1a; 三角函数系 { sin ⁡ 0 , cos ⁡ 0 , sin ⁡ x , cos ⁡ x , sin ⁡ 2 x , cos ⁡ 2 x , … , sin ⁡ n x , cos ⁡ n x ,…

数据结构-find()-判断字符串s1中是否包含字符串s2

find()库函数 #include <iostream> using namespace std;bool check(string s1,string s2){int n s1.size();int m s2.size();if(n0||m0 || n<m){return false;}if(s1.find(s2) ! string::npos){return true;}else{return false;} }int main () {string a "…

1. 构建grafana(版本V11.5.1)

一、grafana官网 https://grafana.com/ 二、grafana下载位置 进入官网后点击downloads&#xff08;根据自己的需求下载&#xff09; 三、grafana安装&#xff08;点击下载后其实官网都写了怎么安装&#xff09; 注&#xff1a;我用的Centos&#xff0c;就简略的写下我的操作步…

macOS 上部署 RAGFlow

在 macOS 上从源码部署 RAGFlow-0.14.1&#xff1a;详细指南 一、引言 RAGFlow 作为一款强大的工具&#xff0c;在人工智能领域应用广泛。本文将详细介绍如何在 macOS 系统上从源码部署 RAGFlow 0.14.1 版本&#xff0c;无论是开发人员进行项目实践&#xff0c;还是技术爱好者…

stm32小白成长为高手的学习步骤和方法

我们假定大家已经对STM32的书籍或者文档有一定的理解。如不理解&#xff0c;请立即阅读STM32的文档&#xff0c;以获取最基本的知识点。STM32单片机自学教程 这篇博文也是一篇不错的入门教程&#xff0c;初学者可以看看&#xff0c;讲的真心不错。 英文好的同学&#xf…

计算机网络面经

文章目录 基础HTTPHTTP报文结构 (注意)RPC和http的区别TCPTCP报文结构(注意)IP基础 HTTP HTTP报文结构 (注意) 请求行:请求方法get/post,url,http版本 请求头:用户标识,请求体长度,类型,cookie 请求体:内容 状态行:状态码,状态消息、(http版本) 响应头:内…