【发布时间】:2018-06-30 19:21:43
【问题描述】:
我写了一个键盘切换器,效果很好,但是如果当前应用程序打开了模态窗口,它就会失败。在键盘开关上,我执行以下操作
hwnd = GetForegroundWindow();
PostMessage(hwnd, WM_INPUTLANGCHANGEREQUEST, IntPtr.Zero, handle);
在哪里
[DllImport("User32.dll", EntryPoint = "PostMessage")]
private static extern int PostMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
但语言没有改变。
我将如何做到这一点?
添加 get root owner 改善了情况,但没有完全帮助。
添加对GetDesktopWindow 的呼叫没有帮助:
hwnd = GetDesktopWindow();
InputLangChangeRequest(hwnd, language);
hwnd = GetRootOwner();
InputLangChangeRequest(hwnd, language);
【问题讨论】:
标签: c# winapi modal-dialog postmessage