Delphi 如何模拟Alt+;切换以更改Windows中的语言(第二部分)?

Delphi 如何模拟Alt+;切换以更改Windows中的语言(第二部分)?,delphi,keyboard-shortcuts,delphi-2009,keyboard-layout,Delphi,Keyboard Shortcuts,Delphi 2009,Keyboard Layout,这个问题(动态切换语言)用解决了,但当我在表单上动态创建一个组件(例如TEdit)时,它仍然存在。当该组件进入焦点时,语言将更改为默认值。在创建组件后,我再次尝试使用ActivateKeyboardLayout,但它不起作用。有什么想法吗?你的问题可能类似于 否则,此代码将执行以下操作: keybd_事件(VK_菜单,0,0,0); keybd_事件(VK_移位,0,0,0); keybd_事件(VK_菜单,0,KEYEVENTF_KEYUP,0); keybd_事件(VK_SHIFT,0,KE

这个问题(动态切换语言)用解决了,但当我在表单上动态创建一个组件(例如TEdit)时,它仍然存在。当该组件进入焦点时,语言将更改为默认值。在创建组件后,我再次尝试使用ActivateKeyboardLayout,但它不起作用。有什么想法吗?

你的问题可能类似于

否则,此代码将执行以下操作:

keybd_事件(VK_菜单,0,0,0);
keybd_事件(VK_移位,0,0,0);
keybd_事件(VK_菜单,0,KEYEVENTF_KEYUP,0);
keybd_事件(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
首先必须使用“Windows”,然后才能使用此方法: ActivateKeyboardLayout(英语布局外把手,KLF_激活)
您可以更改任何语言的“EnglishLayoutHandle”

是否使用KLF_SETFORPROCESS?@TOndrej:我是这样使用的:LoadKeyboardLayout(someId,KLF_ACTIVATE)无法复制,我动态创建的编辑保留更改的布局。你能发布一个有问题的样本吗?@Sertac Akyuz:我在表单上有一个dbgrid。动态创建编辑时,我将父对象设置为dbgrid。LoadKeyboardLayout的初始调用是onActivate。我认为您的问题与已知问题有关。参见质量控制报告#79485:。请参阅embarcadero论坛上的解决方法。此代码将切换到下一种输入语言(并且只有在默认快捷方式未更改的情况下)。如果您有两种以上的输入语言,则不会有任何帮助