delphi 如何模拟Alt+Shift更改Windows中的语言(II部分)?

2o7dmzc5  于 2023-02-15  发布在  Windows
关注(0)|答案(3)|浏览(134)

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

m3eecexj

m3eecexj1#

首先您必须使用“Windows”,然后您可以使用此方法:ActivateKeyboardLayout(英语布局句柄,KLF_ACTIVATE)您可以将“英语布局句柄”更改为您想要的任何语言

ibps3vxo

ibps3vxo2#

您的问题可能与this question类似。
否则,以下代码将执行此操作:

keybd_event(VK_MENU, 0, 0, 0);
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0 );
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
mrphzbgm

mrphzbgm3#

在控制台应用程序上使用

HWND handle = GetForegroundWindow();
PostMessage(handle, WM_INPUTLANGCHANGEREQUEST,
            0, (LPARAM)HKL_NEXT);

相关问题