在我的应用程序中,我使用了众所周知的代码:
int WinThreadProcId = GetWindowThreadProcessId(GetForegroundWindow(), out _ProcessId);
IntPtr KeybLayout = GetKeyboardLayout(WinThreadProcId);
if (KeybLayout.ToString() == "68748313")
{ //russian };
if (KeybLayout.ToString() == "67699721")
{ //english };
95%的应用程序都可以正常使用。但它不能在以下条件下检测布局: 启动Application1(例如Outlook.exe),然后单击http-link,打开Application2(IE)。在此Application2中,布局始终被检测为英语。
此代码在IE和Outlook独立启动时正常工作。