在ENG US和ENG INT之间切换时,GetKeyboardLayout()不会更改

时间:2019-09-19 03:38:35

标签: c++ winapi

这是针对在Windows 10上运行的应用程序。我加载了两个键盘布局,df <- data.frame(url = c("https://iaspub.epa.gov/enviro/fii_query_dtl.disp_program_facility?pgm_sys_id_in=VA0086738&pgm_sys_acrnm_in=NPDES", "https://iaspub.epa.gov/enviro/fii_query_dtl.disp_program_facility?pgm_sys_id_in=VAG401896&pgm_sys_acrnm_in=NPDES"), stringsAsFactors = FALSE) ENG US

我正在使用ENG INT,但是无论使用哪种布局,我都会得到相同的结果。

如何检测两个键盘布局中的哪个正在使用?

如果我打来电话,这也许是我的错

GetKeyboardLayout(0)

然后我每次都会得到正确的结果。现在我很困惑,因为我对Windows 10的键盘布局具有全局印象。

1 个答案:

答案 0 :(得分:0)

Languages, Locales, and Keyboard Layouts

  

应用程序通常使用语言环境来设置输入语言   并处理输出。为键盘设置语言环境   例如,影响键盘生成的字符值。   设置显示器或打印机的语言环境会影响字形   显示或打印。应用程序通过以下方式设置键盘的语言环境   加载和使用键盘布局。他们设置显示的语言环境   或通过选择支持指定区域设置的字体的打印机。

     

通常不希望应用程序操纵输入语言   直。而是由用户设置语言和布局组合,   然后在它们之间切换。

调用ActivateKeyboardLayout函数以激活该语言的用户默认布局。

调用GetKeyboardLayout函数以获取布局。

都是基于线程或基于进程的。

我想您可能想获得的是系统默认输入语言的输入语言环境标识符,该语言是全局的。

SystemParametersInfo(SPI_GETDEFAULTINPUTLANG, 0, &hkl, 0);