阻止 alt+shift 事件或禁用在编程方式中更改语言
Block alt+shift event or disable changing language in programming way
我需要使用 C++ 阻止 alt+shift 键事件,或者某种阻止更改语言的方法。
提前谢谢。
不同的方式去做。我会在启动时捕获当前的语言设置,而不是将其更改为所需的语言设置。
在 alt+shift 的偶数下,我会再次将其设置回所需的类型。
使用网络框架应该很容易做到。
以下是一篇关于操作语言的简短文章:如何以编程方式更改输入语言
msdna 上的主类:输入语言文档
要真正防止alt+shift进入Windows系统,你必须使用钩子。
这是一篇关于在窗口处理击键之前阻止击键的文章。
只是一个想法。您可以捕获WM_KEYDOWN
消息并调用激活键盘布局以切换语言。
使用C++,您可以安装像此处建议的那样的键盘挂钩程序,并过滤(吞下/不传播(您要禁止的键。
我对MSDN的理解是,你可以假装处理WM_INPUTLANGCHANGEREQUEST
然后什么都不做,这样Windows就不会做任何进一步的事情,语言也不会真正改变。 但一些用户说这不再有效了。http://msdn.microsoft.com/en-us/library/ms632630(VS.85(.aspx
也许你可以实现ITfInputProcessorProfileActivationSink::OnActivated
,当你被调用时,你可以通过调用ITfInputProcessorProfiles::ActivateLanguageProfile
来变回以前的语言。 在应用程序开始时,您将调用 ITfInputProcessorProfiles::GetActiveLanguageProfile
。
也许你可以实现ITfLanguageProfileNotifySink::OnLanguageChange
,设置*pfAccept
FALSE
并返回S_OK
.http://msdn.microsoft.com/en-us/library/windows/desktop/ms628770(v=vs.85(.aspx
以上都有问题。 如果用户有意更改客户端上的语言(例如,通过单击客户端的任务栏而不是按 Alt+Shift(,则上述方法无论如何都会阻止其更改。
我想知道RegisterHotKey
是否会让您为自己的窗口注册 Alt+Shift,即使系统已经定义了它。
您尝试实现的是键盘钩子。C/C++ 源代码的详细说明可以在这里找到:http://www.codeproject.com/Articles/67091/Mouse-and-KeyBoard-Hooking-utility-with-VC
还可以在此处找到其他有用的示例:
http://www.codeproject.com/Articles/1264/KeyBoard-Hookshttp://www.codeproject.com/Articles/9513/Disable-keyboard-and-show-images-for-the-children
希望这有帮助。
亲切问候
博
- 在C++中编程,将 3 个数字发送到一个函数,然后计算这 3 个数字的平均函数
- 逗号运算符在对齐方式中
- 我可以在C 中编程一个启动操作员吗?
- 识别指针处理方式中的错误
- 我可以在仅支持2.1的卡中编程OpenGL4
- 如何在C 中编程帧
- 我如何在C 中编程确定MTU
- 在C 中编程基于字符串的事件管理器
- 如何在OSX上的C 中编程旋转光标
- 在FriendlyARM板mini2440中编程GPIO的最佳方式是什么
- 如果我在 Windows 中编程我的深度数据包检测程序,我会错过什么主要的事情
- 如何在C++中编程到接口/抽象类
- 在win7中编程垂直回扫
- 在 Windows 的 C++ 中编程数据包阻止程序(基本防火墙)
- 在C++中编程扑克手计算器
- 阻止 alt+shift 事件或禁用在编程方式中更改语言
- 如何使用 SFML.NET 在 C# 中编程
- 我可以使用Visual Studio 2010在C++中编程Mindstorm NXT2吗
- 如何在Qt中编程更新UI ?
- 如何在OpenCV中编程地在YAML中编写注释